diff --git a/.github/actions/migration/action.yaml b/.github/actions/migration/action.yaml index a5c4c7a56f..22c5d45864 100644 --- a/.github/actions/migration/action.yaml +++ b/.github/actions/migration/action.yaml @@ -13,5 +13,5 @@ runs: invoke export-records -f data.json python3 ./src/backend/InvenTree/manage.py flush --noinput invoke migrate - invoke import-records -f data.json - invoke import-records -f data.json + invoke import-records -c -f data.json + invoke import-records -c -f data.json diff --git a/.github/actions/setup/action.yaml b/.github/actions/setup/action.yaml index 41e5db55a9..c10b09d0fa 100644 --- a/.github/actions/setup/action.yaml +++ b/.github/actions/setup/action.yaml @@ -44,6 +44,11 @@ runs: with: python-version: ${{ env.python_version }} cache: pip + cache-dependency-path: | + src/backend/requirements.txt + src/backend/requirements-dev.txt + contrib/container/requirements.txt + contrib/dev_reqs/requirements.txt - name: Install Base Python Dependencies if: ${{ inputs.python == 'true' }} shell: bash diff --git a/.github/workflows/check_translations.yaml b/.github/workflows/check_translations.yaml index 8ace00f569..3377460f6e 100644 --- a/.github/workflows/check_translations.yaml +++ b/.github/workflows/check_translations.yaml @@ -30,7 +30,7 @@ jobs: steps: - name: Checkout Code - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7 - name: Environment Setup uses: ./.github/actions/setup with: diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index df945dc432..25034a1413 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -39,7 +39,7 @@ jobs: docker: ${{ steps.filter.outputs.docker }} steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7 - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # pin@v3.0.2 id: filter with: @@ -66,7 +66,7 @@ jobs: steps: - name: Check out repo - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7 - name: Set Up Python ${{ env.python_version }} uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # pin@v5.1.0 with: @@ -115,9 +115,10 @@ jobs: - name: Run Unit Tests run: | echo "GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }}" >> contrib/container/docker.dev.env - docker compose --project-directory . -f contrib/container/dev-docker-compose.yml run inventree-dev-server invoke test --disable-pty - docker compose --project-directory . -f contrib/container/dev-docker-compose.yml run inventree-dev-server invoke test --migrations --disable-pty - docker compose --project-directory . -f contrib/container/dev-docker-compose.yml down + docker compose --project-directory . -f contrib/container/dev-docker-compose.yml run --rm inventree-dev-server invoke test --disable-pty + - name: Run Migration Tests + run: | + docker compose --project-directory . -f contrib/container/dev-docker-compose.yml run --rm inventree-dev-server invoke test --migrations - name: Clean up test folder run: | rm -rf InvenTree/_testfolder @@ -140,14 +141,14 @@ jobs: fi - name: Login to Dockerhub if: github.event_name != 'pull_request' && steps.docker_login.outputs.skip_dockerhub_login != 'true' - uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # pin@v3.1.0 + uses: docker/login-action@0d4c9c5ea7693da7b068278f7b52bda2a190a446 # pin@v3.2.0 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Log into registry ghcr.io if: github.event_name != 'pull_request' - uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # pin@v3.1.0 + uses: docker/login-action@0d4c9c5ea7693da7b068278f7b52bda2a190a446 # pin@v3.2.0 with: registry: ghcr.io username: ${{ github.actor }} @@ -165,7 +166,7 @@ jobs: - name: Push Docker Images id: push-docker if: github.event_name != 'pull_request' - uses: docker/build-push-action@2cdde995de11925a030ce8070c3d77a52ffcf1c0 # pin@v5.3.0 + uses: docker/build-push-action@31159d49c0d4756269a0940a750801a1ea5d7003 # pin@v6.1.0 with: context: . file: ./contrib/container/Dockerfile diff --git a/.github/workflows/qc_checks.yaml b/.github/workflows/qc_checks.yaml index e1ed0a7a0a..43e0943bea 100644 --- a/.github/workflows/qc_checks.yaml +++ b/.github/workflows/qc_checks.yaml @@ -13,8 +13,6 @@ env: node_version: 18 # The OS version must be set per job server_start_sleep: 60 - requests_version: 2.31.0 - pyyaml_version: 6.0.1 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} INVENTREE_DB_ENGINE: sqlite3 @@ -40,7 +38,7 @@ jobs: force: ${{ steps.force.outputs.force }} steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7 - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # pin@v3.0.2 id: filter with: @@ -72,7 +70,7 @@ jobs: needs: ["pre-commit"] steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7 - name: Environment Setup uses: ./.github/actions/setup with: @@ -94,7 +92,7 @@ jobs: if: needs.paths-filter.outputs.server == 'true' || needs.paths-filter.outputs.frontend == 'true' || needs.paths-filter.outputs.force == 'true' steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7 - name: Set up Python ${{ env.python_version }} uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # pin@v5.1.0 with: @@ -115,7 +113,7 @@ jobs: steps: - name: Checkout Code - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7 - name: Set up Python ${{ env.python_version }} uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # pin@v5.1.0 with: @@ -151,7 +149,7 @@ jobs: version: ${{ steps.version.outputs.version }} steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7 - name: Environment Setup uses: ./.github/actions/setup with: @@ -201,7 +199,7 @@ jobs: version: ${{ needs.schema.outputs.version }} steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 with: repository: inventree/schema token: ${{ secrets.SCHEMA_PAT }} @@ -238,7 +236,7 @@ jobs: INVENTREE_SITE_URL: http://127.0.0.1:12345 steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7 - name: Environment Setup uses: ./.github/actions/setup with: @@ -279,7 +277,7 @@ jobs: python_version: ${{ matrix.python_version }} steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7 - name: Environment Setup uses: ./.github/actions/setup with: @@ -295,7 +293,7 @@ jobs: - name: Coverage Tests run: invoke test --coverage - name: Upload coverage reports to Codecov - uses: codecov/codecov-action@125fc84a9a348dbcf27191600683ec096ec9021c # pin@v4.4.1 + uses: codecov/codecov-action@e28ff129e5465c2c0dcc6f003fc735cb6ae0c673 # pin@v4.5.0 if: always() with: token: ${{ secrets.CODECOV_TOKEN }} @@ -333,7 +331,7 @@ jobs: - 6379:6379 steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7 - name: Environment Setup uses: ./.github/actions/setup with: @@ -377,7 +375,7 @@ jobs: - 3306:3306 steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7 - name: Environment Setup uses: ./.github/actions/setup with: @@ -416,7 +414,7 @@ jobs: - 5432:5432 steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7 - name: Environment Setup uses: ./.github/actions/setup with: @@ -427,7 +425,7 @@ jobs: - name: Run Tests run: invoke test --migrations --report --coverage - name: Upload coverage reports to Codecov - uses: codecov/codecov-action@125fc84a9a348dbcf27191600683ec096ec9021c # pin@v4.4.1 + uses: codecov/codecov-action@e28ff129e5465c2c0dcc6f003fc735cb6ae0c673 # pin@v4.5.0 if: always() with: token: ${{ secrets.CODECOV_TOKEN }} @@ -447,7 +445,7 @@ jobs: INVENTREE_PLUGINS_ENABLED: false steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7 name: Checkout Code - name: Environment Setup uses: ./.github/actions/setup @@ -504,7 +502,7 @@ jobs: VITE_COVERAGE: true steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7 - name: Environment Setup uses: ./.github/actions/setup with: @@ -532,7 +530,7 @@ jobs: if: always() run: cd src/frontend && npx nyc report --report-dir ./coverage --temp-dir .nyc_output --reporter=lcov --exclude-after-remap false - name: Upload coverage reports to Codecov - uses: codecov/codecov-action@125fc84a9a348dbcf27191600683ec096ec9021c # pin@v4.4.1 + uses: codecov/codecov-action@e28ff129e5465c2c0dcc6f003fc735cb6ae0c673 # pin@v4.5.0 if: always() with: token: ${{ secrets.CODECOV_TOKEN }} @@ -545,7 +543,7 @@ jobs: timeout-minutes: 60 steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7 - name: Environment Setup uses: ./.github/actions/setup with: diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index f93c99a1ec..adebc32240 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -15,7 +15,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - name: Checkout Code - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7 - name: Version Check run: | pip install --require-hashes -r contrib/dev_reqs/requirements.txt @@ -34,7 +34,7 @@ jobs: contents: write pull-requests: write steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7 - name: Environment Setup uses: ./.github/actions/setup with: @@ -46,7 +46,7 @@ jobs: - name: Zip frontend run: | cd src/backend/InvenTree/web/static/web - zip -r ../frontend-build.zip * + zip -r ../frontend-build.zip * .vite - uses: svenstaro/upload-release-action@04733e069f2d7f7f0b4aebc4fbdbce8613b03ccd # pin@2.9.0 with: repo_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/scorecard.yaml b/.github/workflows/scorecard.yaml index 1fcff72b3d..916a3b1bbe 100644 --- a/.github/workflows/scorecard.yaml +++ b/.github/workflows/scorecard.yaml @@ -32,7 +32,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 with: persist-credentials: false @@ -67,6 +67,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@9fdb3e49720b44c48891d036bb502feb25684276 # v3.25.6 + uses: github/codeql-action/upload-sarif@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10 with: sarif_file: results.sarif diff --git a/.github/workflows/translations.yaml b/.github/workflows/translations.yaml index fc2968e479..6ffddb4d02 100644 --- a/.github/workflows/translations.yaml +++ b/.github/workflows/translations.yaml @@ -30,7 +30,7 @@ jobs: steps: - name: Checkout Code - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # pin@v4.1.6 + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7 - name: Environment Setup uses: ./.github/actions/setup with: diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 6c99a6f6d5..37e2769a9c 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -31,23 +31,23 @@ repos: hooks: - id: pip-compile name: pip-compile requirements-dev.in - args: [src/backend/requirements-dev.in, -o, src/backend/requirements-dev.txt, --python-version=3.9, --no-strip-extras, --generate-hashes] + args: [src/backend/requirements-dev.in, -o, src/backend/requirements-dev.txt] files: src/backend/requirements-dev\.(in|txt)$ - id: pip-compile name: pip-compile requirements.txt - args: [src/backend/requirements.in, -o, src/backend/requirements.txt,--python-version=3.9, --no-strip-extras,--generate-hashes] + args: [src/backend/requirements.in, -o, src/backend/requirements.txt] files: src/backend/requirements\.(in|txt)$ - id: pip-compile name: pip-compile requirements.txt - args: [contrib/dev_reqs/requirements.in, -o, contrib/dev_reqs/requirements.txt,--python-version=3.9, --no-strip-extras, --generate-hashes] + args: [contrib/dev_reqs/requirements.in, -o, contrib/dev_reqs/requirements.txt] files: contrib/dev_reqs/requirements\.(in|txt)$ - id: pip-compile name: pip-compile requirements.txt - args: [docs/requirements.in, -o, docs/requirements.txt,--python-version=3.9, --no-strip-extras, --generate-hashes] + args: [docs/requirements.in, -o, docs/requirements.txt] files: docs/requirements\.(in|txt)$ - id: pip-compile name: pip-compile requirements.txt - args: [contrib/container/requirements.in, -o, contrib/container/requirements.txt,--python-version=3.11, --no-strip-extras, --generate-hashes] + args: [contrib/container/requirements.in, -o, contrib/container/requirements.txt, --python-version=3.11, --no-strip-extras, --generate-hashes] files: contrib/container/requirements\.(in|txt)$ - repo: https://github.com/Riverside-Healthcare/djLint rev: v1.34.1 @@ -63,6 +63,8 @@ repos: docs/docs/javascripts/.*| docs/docs/webfonts/.* | src/frontend/src/locales/.* | + pyproject.toml | + src/frontend/vite.config.ts | )$ - repo: https://github.com/pre-commit/mirrors-prettier rev: "v4.0.0-alpha.8" @@ -73,7 +75,7 @@ repos: - "prettier@^2.4.1" - "@trivago/prettier-plugin-sort-imports" - repo: https://github.com/pre-commit/mirrors-eslint - rev: "v9.1.0" + rev: "v9.4.0" hooks: - id: eslint additional_dependencies: @@ -85,7 +87,7 @@ repos: - "@typescript-eslint/parser" files: ^src/frontend/.*\.(js|jsx|ts|tsx)$ - repo: https://github.com/gitleaks/gitleaks - rev: v8.18.2 + rev: v8.18.3 hooks: - id: gitleaks #- repo: https://github.com/jumanjihouse/pre-commit-hooks diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 50022d571e..7c62407f07 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -39,7 +39,7 @@ InvenTree/ │ │ ├─ tsconfig.json # Settings for frontend compilation ├─ .pkgr.yml # Build definition for Debian/Ubuntu packages ├─ .pre-commit-config.yaml # Code formatter/linter configuration -├─ CONTRIBUTING.md # Contirbution guidelines and overview +├─ CONTRIBUTING.md # Contribution guidelines and overview ├─ Procfile # Process definition for Debian/Ubuntu packages ├─ README.md # General project information and overview ├─ runtime.txt # Python runtime settings for Debian/Ubuntu packages build diff --git a/codecov.yml b/codecov.yml index 2edad7bb46..79d066e93b 100644 --- a/codecov.yml +++ b/codecov.yml @@ -3,6 +3,7 @@ coverage: project: default: target: 82% + patch: off github_checks: annotations: true diff --git a/contrib/dev_reqs/requirements.txt b/contrib/dev_reqs/requirements.txt index c4099a325e..f578fd1882 100644 --- a/contrib/dev_reqs/requirements.txt +++ b/contrib/dev_reqs/requirements.txt @@ -1,5 +1,5 @@ # This file was autogenerated by uv via the following command: -# uv pip compile contrib/dev_reqs/requirements.in -o contrib/dev_reqs/requirements.txt --python-version=3.9 --no-strip-extras --generate-hashes +# uv pip compile contrib/dev_reqs/requirements.in -o contrib/dev_reqs/requirements.txt certifi==2024.2.2 \ --hash=sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f \ --hash=sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1 @@ -218,9 +218,9 @@ ruamel-yaml-clib==0.2.8 \ --hash=sha256:f481f16baec5290e45aebdc2a5168ebc6d35189ae6fea7a58787613a25f6e875 \ --hash=sha256:fff3573c2db359f091e1589c3d7c5fc2f86f5bdb6f24252c2d8e539d4e45f412 # via ruamel-yaml -urllib3==2.2.1 \ - --hash=sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d \ - --hash=sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19 +urllib3==2.2.2 \ + --hash=sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472 \ + --hash=sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168 # via requests xmltodict==0.13.0 \ --hash=sha256:341595a488e3e01a85a9d8911d8912fd922ede5fecc4dce437eb4b6c8d037e56 \ diff --git a/contrib/packager.io/functions.sh b/contrib/packager.io/functions.sh index bb236be77d..9149754a66 100755 --- a/contrib/packager.io/functions.sh +++ b/contrib/packager.io/functions.sh @@ -2,6 +2,8 @@ # # packager.io postinstall script functions # +Color_Off='\033[0m' +On_Red='\033[41m' function detect_docker() { if [ -n "$(grep docker dict: """Set the requested currency codes and get rates.""" - from common.models import InvenTreeSetting from plugin import registry base_currency = kwargs.get('base_currency', currency_code_default()) symbols = kwargs.get('symbols', currency_codes()) # Find the selected exchange rate plugin - slug = InvenTreeSetting.get_setting('CURRENCY_UPDATE_PLUGIN', '', create=False) + slug = get_global_setting('CURRENCY_UPDATE_PLUGIN', create=False) if slug: plugin = registry.get_plugin(slug) diff --git a/src/backend/InvenTree/InvenTree/fields.py b/src/backend/InvenTree/InvenTree/fields.py index 9dd0d81fb0..01efe65ae1 100644 --- a/src/backend/InvenTree/InvenTree/fields.py +++ b/src/backend/InvenTree/InvenTree/fields.py @@ -14,6 +14,7 @@ from rest_framework.fields import URLField as RestURLField from rest_framework.fields import empty import InvenTree.helpers +from common.settings import get_global_setting from .validators import AllowedURLValidator, allowable_url_schemes @@ -32,11 +33,7 @@ class InvenTreeRestURLField(RestURLField): def run_validation(self, data=empty): """Override default validation behaviour for this field type.""" - import common.models - - strict_urls = common.models.InvenTreeSetting.get_setting( - 'INVENTREE_STRICT_URLS', True, cache=False - ) + strict_urls = get_global_setting('INVENTREE_STRICT_URLS', cache=False) if not strict_urls and data is not empty and '://' not in data: # Validate as if there were a schema provided diff --git a/src/backend/InvenTree/InvenTree/forms.py b/src/backend/InvenTree/InvenTree/forms.py index 3358804a9a..ff4babe3bf 100644 --- a/src/backend/InvenTree/InvenTree/forms.py +++ b/src/backend/InvenTree/InvenTree/forms.py @@ -24,7 +24,7 @@ from rest_framework import serializers import InvenTree.helpers_model import InvenTree.sso -from common.models import InvenTreeSetting +from common.settings import get_global_setting from InvenTree.exceptions import log_error logger = logging.getLogger('inventree') @@ -172,12 +172,12 @@ class CustomSignupForm(SignupForm): def __init__(self, *args, **kwargs): """Check settings to influence which fields are needed.""" - kwargs['email_required'] = InvenTreeSetting.get_setting('LOGIN_MAIL_REQUIRED') + kwargs['email_required'] = get_global_setting('LOGIN_MAIL_REQUIRED') super().__init__(*args, **kwargs) # check for two mail fields - if InvenTreeSetting.get_setting('LOGIN_SIGNUP_MAIL_TWICE'): + if get_global_setting('LOGIN_SIGNUP_MAIL_TWICE'): self.fields['email2'] = forms.EmailField( label=_('Email (again)'), widget=forms.TextInput( @@ -189,7 +189,7 @@ class CustomSignupForm(SignupForm): ) # check for two password fields - if not InvenTreeSetting.get_setting('LOGIN_SIGNUP_PWD_TWICE'): + if not get_global_setting('LOGIN_SIGNUP_PWD_TWICE'): self.fields.pop('password2') # reorder fields @@ -202,7 +202,7 @@ class CustomSignupForm(SignupForm): cleaned_data = super().clean() # check for two mail fields - if InvenTreeSetting.get_setting('LOGIN_SIGNUP_MAIL_TWICE'): + if get_global_setting('LOGIN_SIGNUP_MAIL_TWICE'): email = cleaned_data.get('email') email2 = cleaned_data.get('email2') if (email and email2) and email != email2: @@ -213,10 +213,7 @@ class CustomSignupForm(SignupForm): def registration_enabled(): """Determine whether user registration is enabled.""" - if ( - InvenTreeSetting.get_setting('LOGIN_ENABLE_REG') - or InvenTree.sso.registration_enabled() - ): + if get_global_setting('LOGIN_ENABLE_REG') or InvenTree.sso.registration_enabled(): if settings.EMAIL_HOST: return True else: @@ -240,9 +237,7 @@ class RegistratonMixin: def clean_email(self, email): """Check if the mail is valid to the pattern in LOGIN_SIGNUP_MAIL_RESTRICTION (if enabled in settings).""" - mail_restriction = InvenTreeSetting.get_setting( - 'LOGIN_SIGNUP_MAIL_RESTRICTION', None - ) + mail_restriction = get_global_setting('LOGIN_SIGNUP_MAIL_RESTRICTION', None) if not mail_restriction: return super().clean_email(email) @@ -273,7 +268,7 @@ class RegistratonMixin: user = super().save_user(request, user, form) # Check if a default group is set in settings - start_group = InvenTreeSetting.get_setting('SIGNUP_GROUP') + start_group = get_global_setting('SIGNUP_GROUP') if start_group: try: group = Group.objects.get(id=start_group) @@ -333,7 +328,7 @@ class CustomSocialAccountAdapter( def is_auto_signup_allowed(self, request, sociallogin): """Check if auto signup is enabled in settings.""" - if InvenTreeSetting.get_setting('LOGIN_SIGNUP_SSO_AUTO', True): + if get_global_setting('LOGIN_SIGNUP_SSO_AUTO', True): return super().is_auto_signup_allowed(request, sociallogin) return False @@ -385,7 +380,7 @@ class CustomRegisterSerializer(RegisterSerializer): def __init__(self, instance=None, data=..., **kwargs): """Check settings to influence which fields are needed.""" - kwargs['email_required'] = InvenTreeSetting.get_setting('LOGIN_MAIL_REQUIRED') + kwargs['email_required'] = get_global_setting('LOGIN_MAIL_REQUIRED') super().__init__(instance, data, **kwargs) def save(self, request): diff --git a/src/backend/InvenTree/InvenTree/helpers_model.py b/src/backend/InvenTree/InvenTree/helpers_model.py index 4296b4f0dc..3fb73c852d 100644 --- a/src/backend/InvenTree/InvenTree/helpers_model.py +++ b/src/backend/InvenTree/InvenTree/helpers_model.py @@ -15,7 +15,6 @@ from djmoney.contrib.exchange.models import convert_money from djmoney.money import Money from PIL import Image -import common.models import InvenTree import InvenTree.helpers_model import InvenTree.version @@ -24,16 +23,12 @@ from common.notifications import ( NotificationBody, trigger_notification, ) +from common.settings import get_global_setting from InvenTree.format import format_money logger = logging.getLogger('inventree') -def getSetting(key, backup_value=None): - """Shortcut for reading a setting value from the database.""" - return common.models.InvenTreeSetting.get_setting(key, backup_value=backup_value) - - def get_base_url(request=None): """Return the base URL for the InvenTree server. @@ -44,6 +39,8 @@ def get_base_url(request=None): 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 """ + import common.models + # Check if a request is provided if request: return request.build_absolute_uri('/') @@ -62,9 +59,7 @@ def get_base_url(request=None): # Check if a global InvenTree setting is provided try: - if site_url := common.models.InvenTreeSetting.get_setting( - 'INVENTREE_BASE_URL', create=False - ): + if site_url := get_global_setting('INVENTREE_BASE_URL', create=False): return site_url except (ProgrammingError, OperationalError): pass @@ -112,25 +107,20 @@ def download_image_from_url(remote_url, timeout=2.5): ValueError: Server responded with invalid 'Content-Length' value TypeError: Response is not a valid image """ + import common.models + # Check that the provided URL at least looks valid validator = URLValidator() validator(remote_url) # Calculate maximum allowable image size (in bytes) max_size = ( - int( - common.models.InvenTreeSetting.get_setting( - 'INVENTREE_DOWNLOAD_IMAGE_MAX_SIZE' - ) - ) - * 1024 - * 1024 + int(get_global_setting('INVENTREE_DOWNLOAD_IMAGE_MAX_SIZE')) * 1024 * 1024 ) # Add user specified user-agent to request (if specified) - user_agent = common.models.InvenTreeSetting.get_setting( - 'INVENTREE_DOWNLOAD_FROM_URL_USER_AGENT' - ) + user_agent = get_global_setting('INVENTREE_DOWNLOAD_FROM_URL_USER_AGENT') + if user_agent: headers = {'User-Agent': user_agent} else: @@ -216,6 +206,8 @@ def render_currency( max_decimal_places: The maximum number of decimal places to render to. If unspecified, uses the PRICING_DECIMAL_PLACES setting. include_symbol: If True, include the currency symbol in the output """ + import common.models + if money in [None, '']: return '-' @@ -231,19 +223,13 @@ def render_currency( pass if decimal_places is None: - decimal_places = common.models.InvenTreeSetting.get_setting( - 'PRICING_DECIMAL_PLACES', 6 - ) + decimal_places = get_global_setting('PRICING_DECIMAL_PLACES', 6) if min_decimal_places is None: - min_decimal_places = common.models.InvenTreeSetting.get_setting( - 'PRICING_DECIMAL_PLACES_MIN', 0 - ) + min_decimal_places = get_global_setting('PRICING_DECIMAL_PLACES_MIN', 0) if max_decimal_places is None: - max_decimal_places = common.models.InvenTreeSetting.get_setting( - 'PRICING_DECIMAL_PLACES', 6 - ) + max_decimal_places = get_global_setting('PRICING_DECIMAL_PLACES', 6) value = Decimal(str(money.amount)).normalize() value = str(value) diff --git a/src/backend/InvenTree/InvenTree/locales.py b/src/backend/InvenTree/InvenTree/locales.py index 6234970ec4..900ffa6343 100644 --- a/src/backend/InvenTree/InvenTree/locales.py +++ b/src/backend/InvenTree/InvenTree/locales.py @@ -38,6 +38,7 @@ LOCALES = [ ('pl', _('Polish')), ('pt', _('Portuguese')), ('pt-br', _('Portuguese (Brazilian)')), + ('ro', _('Romanian')), ('ru', _('Russian')), ('sk', _('Slovak')), ('sl', _('Slovenian')), diff --git a/src/backend/InvenTree/InvenTree/management/commands/collectplugins.py b/src/backend/InvenTree/InvenTree/management/commands/collectplugins.py new file mode 100644 index 0000000000..77b00f73b5 --- /dev/null +++ b/src/backend/InvenTree/InvenTree/management/commands/collectplugins.py @@ -0,0 +1,13 @@ +"""Management command to collect plugin static files.""" + +from django.core.management import BaseCommand + + +class Command(BaseCommand): + """Collect static files for all installed plugins.""" + + def handle(self, *args, **kwargs): + """Run the management command.""" + from plugin.staticfiles import collect_plugins_static_files + + collect_plugins_static_files() diff --git a/src/backend/InvenTree/InvenTree/metadata.py b/src/backend/InvenTree/InvenTree/metadata.py index 19404f46b2..d01303a0e9 100644 --- a/src/backend/InvenTree/InvenTree/metadata.py +++ b/src/backend/InvenTree/InvenTree/metadata.py @@ -115,9 +115,14 @@ class InvenTreeMetadata(SimpleMetadata): return metadata - def override_value(self, field_name, field_value, model_value): + def override_value(self, field_name: str, field_key: str, field_value, model_value): """Override a value on the serializer with a matching value for the model. + Often, the serializer field will point to an underlying model field, + which contains extra information (which is translated already). + + Rather than duplicating this information in the serializer, we can extract it from the model. + This is used to override the serializer values with model values, if (and *only* if) the model value should take precedence. @@ -125,6 +130,12 @@ class InvenTreeMetadata(SimpleMetadata): - field_value is None - model_value is callable, and field_value is not (this indicates that the model value is translated) - model_value is not a string, and field_value is a string (this indicates that the model value is translated) + + Arguments: + - field_name: The name of the field + - field_key: The property key to override + - field_value: The value of the field (if available) + - model_value: The equivalent value of the model (if available) """ if model_value and not field_value: return model_value @@ -132,10 +143,15 @@ class InvenTreeMetadata(SimpleMetadata): if field_value and not model_value: return field_value + # Callable values will be evaluated later if callable(model_value) and not callable(field_value): return model_value - if type(model_value) is not str and type(field_value) is str: + if callable(field_value) and not callable(model_value): + return field_value + + # Prioritize translated text over raw string values + if type(field_value) is str and type(model_value) is not str: return model_value return field_value @@ -197,10 +213,12 @@ class InvenTreeMetadata(SimpleMetadata): serializer_info[name]['default'] = model_default_values[name] for field_key, model_key in extra_attributes.items(): - field_value = serializer_info[name].get(field_key, None) + field_value = getattr(serializer.fields[name], field_key, None) model_value = getattr(field, model_key, None) - if value := self.override_value(name, field_value, model_value): + if value := self.override_value( + name, field_key, field_value, model_value + ): serializer_info[name][field_key] = value # Iterate through relations @@ -220,10 +238,12 @@ class InvenTreeMetadata(SimpleMetadata): ) for field_key, model_key in extra_attributes.items(): - field_value = serializer_info[name].get(field_key, None) + field_value = getattr(serializer.fields[name], field_key, None) model_value = getattr(relation.model_field, model_key, None) - if value := self.override_value(name, field_value, model_value): + if value := self.override_value( + name, field_key, field_value, model_value + ): serializer_info[name][field_key] = value if name in model_default_values: diff --git a/src/backend/InvenTree/InvenTree/middleware.py b/src/backend/InvenTree/InvenTree/middleware.py index d5463af22e..5790c8c9b9 100644 --- a/src/backend/InvenTree/InvenTree/middleware.py +++ b/src/backend/InvenTree/InvenTree/middleware.py @@ -12,6 +12,7 @@ from django.urls import Resolver404, include, path, resolve, reverse_lazy from allauth_2fa.middleware import AllauthTwoFactorMiddleware, BaseRequire2FAMiddleware from error_report.middleware import ExceptionProcessor +from common.settings import get_global_setting from InvenTree.urls import frontendpatterns from users.models import ApiToken @@ -153,11 +154,9 @@ class Check2FAMiddleware(BaseRequire2FAMiddleware): def require_2fa(self, request): """Use setting to check if MFA should be enforced for frontend page.""" - from common.models import InvenTreeSetting - try: if url_matcher.resolve(request.path[1:]): - return InvenTreeSetting.get_setting('LOGIN_ENFORCE_MFA') + return get_global_setting('LOGIN_ENFORCE_MFA') except Resolver404: pass return False diff --git a/src/backend/InvenTree/InvenTree/models.py b/src/backend/InvenTree/InvenTree/models.py index 0e2b4ca9e9..777850d4c2 100644 --- a/src/backend/InvenTree/InvenTree/models.py +++ b/src/backend/InvenTree/InvenTree/models.py @@ -1,9 +1,7 @@ """Generic models which provide extra functionality over base Django model types.""" import logging -import os from datetime import datetime -from io import BytesIO from django.conf import settings from django.contrib.auth import get_user_model @@ -20,11 +18,11 @@ from error_report.models import Error from mptt.exceptions import InvalidMove from mptt.models import MPTTModel, TreeForeignKey +import common.settings import InvenTree.fields import InvenTree.format import InvenTree.helpers import InvenTree.helpers_model -from InvenTree.sanitizer import sanitize_svg logger = logging.getLogger('inventree') @@ -304,10 +302,7 @@ class ReferenceIndexingMixin(models.Model): if cls.REFERENCE_PATTERN_SETTING is None: return '' - # import at function level to prevent cyclic imports - from common.models import InvenTreeSetting - - return InvenTreeSetting.get_setting( + return common.settings.get_global_setting( cls.REFERENCE_PATTERN_SETTING, create=False ).strip() @@ -503,207 +498,71 @@ class InvenTreeMetadataModel(MetadataMixin, InvenTreeModel): 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): +class InvenTreeAttachmentMixin: """Provides an abstracted class for managing file attachments. - An attachment can be either an uploaded file, or an external URL + Links the implementing model to the common.models.Attachment table, + and provides the following methods: - Attributes: - attachment: Upload file - link: External URL - comment: String descriptor for the attachment - user: User associated with file upload - upload_date: Date the file was uploaded + - attachments: Return a queryset containing all attachments for this model """ - class Meta: - """Metaclass options. Abstract ensures no database table is created.""" + def delete(self): + """Handle the deletion of a model instance. - abstract = True - - def getSubdir(self): - """Return the subdirectory under which attachments should be stored. - - Note: Re-implement this for each subclass of InvenTreeAttachment + Before deleting the model instance, delete any associated attachments. """ - return 'attachments' - - def save(self, *args, **kwargs): - """Provide better validation error.""" - # Either 'attachment' or 'link' must be specified! - if not self.attachment and not self.link: - raise ValidationError({ - 'attachment': _('Missing file'), - 'link': _('Missing external link'), - }) - - if self.attachment and self.attachment.name.lower().endswith('.svg'): - self.attachment.file.file = self.clean_svg(self.attachment) - - super().save(*args, **kwargs) - - def clean_svg(self, field): - """Sanitize SVG file before saving.""" - cleaned = sanitize_svg(field.file.read()) - return BytesIO(bytes(cleaned, 'utf8')) - - def __str__(self): - """Human name for attachment.""" - if self.attachment is not None: - return os.path.basename(self.attachment.name) - return str(self.link) - - attachment = models.FileField( - upload_to=rename_attachment, - verbose_name=_('Attachment'), - help_text=_('Select file to attach'), - blank=True, - null=True, - ) - - link = InvenTree.fields.InvenTreeURLField( - blank=True, - null=True, - verbose_name=_('Link'), - help_text=_('Link to external URL'), - ) - - comment = models.CharField( - blank=True, - max_length=100, - verbose_name=_('Comment'), - help_text=_('File comment'), - ) - - user = models.ForeignKey( - User, - on_delete=models.SET_NULL, - blank=True, - null=True, - verbose_name=_('User'), - help_text=_('User'), - ) - - upload_date = models.DateField( - auto_now_add=True, null=True, blank=True, verbose_name=_('upload date') - ) + self.attachments.all().delete() + super().delete() @property - def basename(self): - """Base name/path for attachment.""" - if self.attachment: - return os.path.basename(self.attachment.name) - return None + def attachments(self): + """Return a queryset containing all attachments for this model.""" + return self.attachments_for_model().filter(model_id=self.pk) - @basename.setter - def basename(self, fn): - """Function to rename the attachment file. + @classmethod + def check_attachment_permission(cls, permission, user) -> bool: + """Check if the user has permission to perform the specified action on the attachment. - - Filename cannot be empty - - Filename cannot contain illegal characters - - Filename must specify an extension - - Filename cannot match an existing file + The default implementation runs a permission check against *this* model class, + but this can be overridden in the implementing class if required. + + Arguments: + permission: The permission to check (add / change / view / delete) + user: The user to check against + + Returns: + bool: True if the user has permission, False otherwise """ - fn = fn.strip() + perm = f'{cls._meta.app_label}.{permission}_{cls._meta.model_name}' + return user.has_perm(perm) - if len(fn) == 0: - raise ValidationError(_('Filename must not be empty')) + def attachments_for_model(self): + """Return all attachments for this model class.""" + from common.models import Attachment - attachment_dir = settings.MEDIA_ROOT.joinpath(self.getSubdir()) - old_file = settings.MEDIA_ROOT.joinpath(self.attachment.name) - new_file = settings.MEDIA_ROOT.joinpath(self.getSubdir(), fn).resolve() + model_type = self.__class__.__name__.lower() - # Check that there are no directory tricks going on... - if new_file.parent != attachment_dir: - logger.error( - "Attempted to rename attachment outside valid directory: '%s'", new_file - ) - raise ValidationError(_('Invalid attachment directory')) + return Attachment.objects.filter(model_type=model_type) - # Ignore further checks if the filename is not actually being renamed - if new_file == old_file: - return + def create_attachment(self, attachment=None, link=None, comment='', **kwargs): + """Create an attachment / link for this model.""" + from common.models import Attachment - forbidden = [ - "'", - '"', - '#', - '@', - '!', - '&', - '^', - '<', - '>', - ':', - ';', - '/', - '\\', - '|', - '?', - '*', - '%', - '~', - '`', - ] + kwargs['attachment'] = attachment + kwargs['link'] = link + kwargs['comment'] = comment + kwargs['model_type'] = self.__class__.__name__.lower() + kwargs['model_id'] = self.pk - for c in forbidden: - if c in fn: - raise ValidationError(_(f"Filename contains illegal character '{c}'")) - - if len(fn.split('.')) < 2: - raise ValidationError(_('Filename missing extension')) - - if not old_file.exists(): - logger.error( - "Trying to rename attachment '%s' which does not exist", old_file - ) - return - - if new_file.exists(): - raise ValidationError(_('Attachment with this filename already exists')) - - try: - os.rename(old_file, new_file) - self.attachment.name = os.path.join(self.getSubdir(), fn) - self.save() - except Exception: - raise ValidationError(_('Error renaming file')) - - def fully_qualified_url(self): - """Return a 'fully qualified' URL for this attachment. - - - If the attachment is a link to an external resource, return the link - - If the attachment is an uploaded file, return the fully qualified media URL - """ - if self.link: - return self.link - - if self.attachment: - media_url = InvenTree.helpers.getMediaUrl(self.attachment.url) - return InvenTree.helpers_model.construct_absolute_url(media_url) - - return '' + Attachment.objects.create(**kwargs) 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). - - Each Category can have zero-or-more child Categor(y/ies) + - Each Category can have zero-or-more child Category(y/ies) Attributes: name: brief name @@ -920,7 +779,7 @@ class InvenTreeTree(MetadataMixin, PluginValidationMixin, MPTTModel): on_delete=models.DO_NOTHING, blank=True, null=True, - verbose_name=_('parent'), + verbose_name='parent', related_name='children', ) diff --git a/src/backend/InvenTree/InvenTree/ready.py b/src/backend/InvenTree/InvenTree/ready.py index 41b3058fc8..0ae788282c 100644 --- a/src/backend/InvenTree/InvenTree/ready.py +++ b/src/backend/InvenTree/InvenTree/ready.py @@ -125,7 +125,7 @@ def canAppAccessDatabase( excluded_commands.append('test') if not allow_plugins: - excluded_commands.extend(['collectstatic']) + excluded_commands.extend(['collectstatic', 'collectplugins']) for cmd in excluded_commands: if cmd in sys.argv: diff --git a/src/backend/InvenTree/InvenTree/serializers.py b/src/backend/InvenTree/InvenTree/serializers.py index 1ee69b403a..829216089f 100644 --- a/src/backend/InvenTree/InvenTree/serializers.py +++ b/src/backend/InvenTree/InvenTree/serializers.py @@ -404,6 +404,17 @@ class UserSerializer(InvenTreeModelSerializer): read_only_fields = ['username'] + username = serializers.CharField(label=_('Username'), help_text=_('Username')) + first_name = serializers.CharField( + label=_('First Name'), help_text=_('First name of the user') + ) + last_name = serializers.CharField( + label=_('Last Name'), help_text=_('Last name of the user') + ) + email = serializers.EmailField( + label=_('Email'), help_text=_('Email address of the user') + ) + class ExendedUserSerializer(UserSerializer): """Serializer for a User with a bit more info.""" @@ -424,6 +435,16 @@ class ExendedUserSerializer(UserSerializer): read_only_fields = UserSerializer.Meta.read_only_fields + ['groups'] + is_staff = serializers.BooleanField( + label=_('Staff'), help_text=_('Does this user have staff permissions') + ) + is_superuser = serializers.BooleanField( + label=_('Superuser'), help_text=_('Is this user a superuser') + ) + is_active = serializers.BooleanField( + label=_('Active'), help_text=_('Is this user account active') + ) + def validate(self, attrs): """Expanded validation for changing user role.""" # Check if is_staff or is_superuser is in attrs @@ -509,43 +530,6 @@ class InvenTreeAttachmentSerializerField(serializers.FileField): return os.path.join(str(settings.MEDIA_URL), str(value)) -class InvenTreeAttachmentSerializer(InvenTreeModelSerializer): - """Special case of an InvenTreeModelSerializer, which handles an "attachment" model. - - The only real addition here is that we support "renaming" of the attachment file. - """ - - @staticmethod - def attachment_fields(extra_fields=None): - """Default set of fields for an attachment serializer.""" - fields = [ - 'pk', - 'attachment', - 'filename', - 'link', - 'comment', - 'upload_date', - 'user', - 'user_detail', - ] - - if extra_fields: - fields += extra_fields - - return fields - - user_detail = UserSerializer(source='user', read_only=True, many=False) - - attachment = InvenTreeAttachmentSerializerField(required=False, allow_null=False) - - # The 'filename' field must be present in the serializer - filename = serializers.CharField( - label=_('Filename'), required=False, source='basename', allow_blank=False - ) - - upload_date = serializers.DateField(read_only=True) - - class InvenTreeImageSerializerField(serializers.ImageField): """Custom image serializer. diff --git a/src/backend/InvenTree/InvenTree/settings.py b/src/backend/InvenTree/InvenTree/settings.py index 7aed4489a5..0109730c30 100644 --- a/src/backend/InvenTree/InvenTree/settings.py +++ b/src/backend/InvenTree/InvenTree/settings.py @@ -296,6 +296,7 @@ ADMIN_SHELL_IMPORT_MODELS = False if ( DEBUG and INVENTREE_ADMIN_ENABLED + and not TESTING and get_boolean_setting('INVENTREE_DEBUG_SHELL', 'debug_shell', False) ): # noqa try: @@ -1272,7 +1273,7 @@ PLUGIN_TESTING_SETUP = get_setting( ) # Load plugins from setup hooks in testing? PLUGIN_TESTING_EVENTS = False # Flag if events are tested right now PLUGIN_RETRY = get_setting( - 'INVENTREE_PLUGIN_RETRY', 'PLUGIN_RETRY', 5 + 'INVENTREE_PLUGIN_RETRY', 'PLUGIN_RETRY', 3, typecast=int ) # How often should plugin loading be tried? PLUGIN_FILE_CHECKED = False # Was the plugin file checked? diff --git a/src/backend/InvenTree/InvenTree/social_auth_urls.py b/src/backend/InvenTree/InvenTree/social_auth_urls.py index 79f6bed08b..49d9e461ee 100644 --- a/src/backend/InvenTree/InvenTree/social_auth_urls.py +++ b/src/backend/InvenTree/InvenTree/social_auth_urls.py @@ -15,7 +15,7 @@ from rest_framework.permissions import AllowAny, IsAuthenticated from rest_framework.response import Response import InvenTree.sso -from common.models import InvenTreeSetting +from common.settings import get_global_setting from InvenTree.mixins import CreateAPI, ListAPI, ListCreateAPI from InvenTree.serializers import EmptySerializer, InvenTreeModelSerializer @@ -177,12 +177,10 @@ class SocialProviderListView(ListAPI): data = { 'sso_enabled': InvenTree.sso.login_enabled(), 'sso_registration': InvenTree.sso.registration_enabled(), - 'mfa_required': InvenTreeSetting.get_setting('LOGIN_ENFORCE_MFA'), + 'mfa_required': get_global_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' - ), + 'registration_enabled': get_global_setting('LOGIN_ENABLE_REG'), + 'password_forgotten_enabled': get_global_setting('LOGIN_ENABLE_PWD_FORGOT'), } return Response(data) diff --git a/src/backend/InvenTree/InvenTree/sso.py b/src/backend/InvenTree/InvenTree/sso.py index 0ad165a0b7..b3fb551cf2 100644 --- a/src/backend/InvenTree/InvenTree/sso.py +++ b/src/backend/InvenTree/InvenTree/sso.py @@ -2,7 +2,7 @@ import logging -from common.models import InvenTreeSetting +from common.settings import get_global_setting from InvenTree.helpers import str2bool logger = logging.getLogger('inventree') @@ -64,14 +64,14 @@ def provider_display_name(provider): def login_enabled() -> bool: """Return True if SSO login is enabled.""" - return str2bool(InvenTreeSetting.get_setting('LOGIN_ENABLE_SSO')) + return str2bool(get_global_setting('LOGIN_ENABLE_SSO')) def registration_enabled() -> bool: """Return True if SSO registration is enabled.""" - return str2bool(InvenTreeSetting.get_setting('LOGIN_ENABLE_SSO_REG')) + return str2bool(get_global_setting('LOGIN_ENABLE_SSO_REG')) def auto_registration_enabled() -> bool: """Return True if SSO auto-registration is enabled.""" - return str2bool(InvenTreeSetting.get_setting('LOGIN_SIGNUP_SSO_AUTO')) + return str2bool(get_global_setting('LOGIN_SIGNUP_SSO_AUTO')) diff --git a/src/backend/InvenTree/InvenTree/tasks.py b/src/backend/InvenTree/InvenTree/tasks.py index 9b8366ef82..65115d6862 100644 --- a/src/backend/InvenTree/InvenTree/tasks.py +++ b/src/backend/InvenTree/InvenTree/tasks.py @@ -26,6 +26,7 @@ from maintenance_mode.core import ( set_maintenance_mode, ) +from common.settings import get_global_setting, set_global_setting from InvenTree.config import get_setting from plugin import registry @@ -90,7 +91,6 @@ def check_daily_holdoff(task_name: str, n_days: int = 1) -> bool: Note that this function creates some *hidden* global settings (designated with the _ prefix), which are used to keep a running track of when the particular task was was last run. """ - from common.models import InvenTreeSetting from InvenTree.ready import isInTestMode if n_days <= 0: @@ -107,7 +107,7 @@ def check_daily_holdoff(task_name: str, n_days: int = 1) -> bool: success_key = f'_{task_name}_SUCCESS' # Check for recent success information - last_success = InvenTreeSetting.get_setting(success_key, '', cache=False) + last_success = get_global_setting(success_key, '', cache=False) if last_success: try: @@ -125,7 +125,7 @@ def check_daily_holdoff(task_name: str, n_days: int = 1) -> bool: return False # Check for any information we have about this task - last_attempt = InvenTreeSetting.get_setting(attempt_key, '', cache=False) + last_attempt = get_global_setting(attempt_key, '', cache=False) if last_attempt: try: @@ -152,22 +152,14 @@ def check_daily_holdoff(task_name: str, n_days: int = 1) -> bool: def record_task_attempt(task_name: str): """Record that a multi-day task has been attempted *now*.""" - from common.models import InvenTreeSetting - logger.info("Logging task attempt for '%s'", task_name) - InvenTreeSetting.set_setting( - f'_{task_name}_ATTEMPT', datetime.now().isoformat(), None - ) + set_global_setting(f'_{task_name}_ATTEMPT', datetime.now().isoformat(), None) def record_task_success(task_name: str): """Record that a multi-day task was successful *now*.""" - from common.models import InvenTreeSetting - - InvenTreeSetting.set_setting( - f'_{task_name}_SUCCESS', datetime.now().isoformat(), None - ) + set_global_setting(f'_{task_name}_SUCCESS', datetime.now().isoformat(), None) def offload_task( @@ -380,9 +372,7 @@ def delete_successful_tasks(): try: from django_q.models import Success - from common.models import InvenTreeSetting - - days = InvenTreeSetting.get_setting('INVENTREE_DELETE_TASKS_DAYS', 30) + days = get_global_setting('INVENTREE_DELETE_TASKS_DAYS', 30) threshold = timezone.now() - timedelta(days=days) # Delete successful tasks @@ -404,9 +394,7 @@ def delete_failed_tasks(): try: from django_q.models import Failure - from common.models import InvenTreeSetting - - days = InvenTreeSetting.get_setting('INVENTREE_DELETE_TASKS_DAYS', 30) + days = get_global_setting('INVENTREE_DELETE_TASKS_DAYS', 30) threshold = timezone.now() - timedelta(days=days) # Delete failed tasks @@ -426,9 +414,7 @@ def delete_old_error_logs(): try: from error_report.models import Error - from common.models import InvenTreeSetting - - days = InvenTreeSetting.get_setting('INVENTREE_DELETE_ERRORS_DAYS', 30) + days = get_global_setting('INVENTREE_DELETE_ERRORS_DAYS', 30) threshold = timezone.now() - timedelta(days=days) errors = Error.objects.filter(when__lte=threshold) @@ -448,13 +434,9 @@ def delete_old_error_logs(): def delete_old_notifications(): """Delete old notification logs.""" try: - from common.models import ( - InvenTreeSetting, - NotificationEntry, - NotificationMessage, - ) + from common.models import NotificationEntry, NotificationMessage - days = InvenTreeSetting.get_setting('INVENTREE_DELETE_NOTIFICATIONS_DAYS', 30) + days = get_global_setting('INVENTREE_DELETE_NOTIFICATIONS_DAYS', 30) threshold = timezone.now() - timedelta(days=days) items = NotificationEntry.objects.filter(updated__lte=threshold) @@ -479,7 +461,6 @@ def delete_old_notifications(): def check_for_updates(): """Check if there is an update for InvenTree.""" try: - import common.models from common.notifications import trigger_superuser_notification except AppRegistryNotReady: # pragma: no cover # Apps not yet loaded! @@ -487,9 +468,7 @@ def check_for_updates(): return interval = int( - common.models.InvenTreeSetting.get_setting( - 'INVENTREE_UPDATE_CHECK_INTERVAL', 7, cache=False - ) + get_global_setting('INVENTREE_UPDATE_CHECK_INTERVAL', 7, cache=False) ) # Check if we should check for updates *today* @@ -538,7 +517,7 @@ def check_for_updates(): logger.info("Latest InvenTree version: '%s'", tag) # Save the version to the database - common.models.InvenTreeSetting.set_setting('_INVENTREE_LATEST_VERSION', tag, None) + set_global_setting('_INVENTREE_LATEST_VERSION', tag, None) # Record that this task was successful record_task_success('check_for_updates') @@ -572,7 +551,6 @@ def update_exchange_rates(force: bool = False): from djmoney.contrib.exchange.models import Rate from common.currency import currency_code_default, currency_codes - from common.models import InvenTreeSetting from InvenTree.exchange import InvenTreeExchange except AppRegistryNotReady: # pragma: no cover # Apps not yet loaded! @@ -585,9 +563,7 @@ def update_exchange_rates(force: bool = False): return if not force: - interval = int( - InvenTreeSetting.get_setting('CURRENCY_UPDATE_INTERVAL', 1, cache=False) - ) + interval = int(get_global_setting('CURRENCY_UPDATE_INTERVAL', 1, cache=False)) if not check_daily_holdoff('update_exchange_rates', interval): logger.info('Skipping exchange rate update (interval not reached)') @@ -617,15 +593,11 @@ def update_exchange_rates(force: bool = False): @scheduled_task(ScheduledTask.DAILY) def run_backup(): """Run the backup command.""" - from common.models import InvenTreeSetting - - if not InvenTreeSetting.get_setting('INVENTREE_BACKUP_ENABLE', False, cache=False): + if not get_global_setting('INVENTREE_BACKUP_ENABLE', False, cache=False): # Backups are not enabled - exit early return - interval = int( - InvenTreeSetting.get_setting('INVENTREE_BACKUP_DAYS', 1, cache=False) - ) + interval = int(get_global_setting('INVENTREE_BACKUP_DAYS', 1, cache=False)) # Check if should run this task *today* if not check_daily_holdoff('run_backup', interval): @@ -655,13 +627,12 @@ def check_for_migrations(force: bool = False, reload_registry: bool = True): If the setting auto_update is enabled we will start updating. """ - from common.models import InvenTreeSetting from plugin import registry def set_pending_migrations(n: int): """Helper function to inform the user about pending migrations.""" logger.info('There are %s pending migrations', n) - InvenTreeSetting.set_setting('_PENDING_MIGRATIONS', n, None) + set_global_setting('_PENDING_MIGRATIONS', n, None) logger.info('Checking for pending database migrations') diff --git a/src/backend/InvenTree/InvenTree/templatetags/inventree_extras.py b/src/backend/InvenTree/InvenTree/templatetags/inventree_extras.py index c6408d8f34..00641abc19 100644 --- a/src/backend/InvenTree/InvenTree/templatetags/inventree_extras.py +++ b/src/backend/InvenTree/InvenTree/templatetags/inventree_extras.py @@ -17,6 +17,7 @@ import InvenTree.helpers import InvenTree.helpers_model import plugin.models from common.currency import currency_code_default +from common.settings import get_global_setting from InvenTree import settings, version from plugin import registry from plugin.plugin import InvenTreePlugin @@ -135,7 +136,7 @@ def inventree_in_debug_mode(*args, **kwargs): @register.simple_tag() def inventree_show_about(user, *args, **kwargs): """Return True if the about modal should be shown.""" - if common.models.InvenTreeSetting.get_setting('INVENTREE_RESTRICT_ABOUT'): + if get_global_setting('INVENTREE_RESTRICT_ABOUT'): # Return False if the user is not a superuser, or no user information is provided if not user or not user.is_superuser: return False @@ -373,7 +374,7 @@ def settings_value(key, *args, **kwargs): return common.models.InvenTreeUserSetting.get_setting(key) return common.models.InvenTreeUserSetting.get_setting(key, user=kwargs['user']) - return common.models.InvenTreeSetting.get_setting(key) + return get_global_setting(key) @register.simple_tag() diff --git a/src/backend/InvenTree/InvenTree/test_tasks.py b/src/backend/InvenTree/InvenTree/test_tasks.py index eec5b39a69..2cb1ae6f51 100644 --- a/src/backend/InvenTree/InvenTree/test_tasks.py +++ b/src/backend/InvenTree/InvenTree/test_tasks.py @@ -122,6 +122,7 @@ class InvenTreeTaskTests(TestCase): def test_task_check_for_updates(self): """Test the task check_for_updates.""" # Check that setting should be empty + InvenTreeSetting.set_setting('_INVENTREE_LATEST_VERSION', '') self.assertEqual(InvenTreeSetting.get_setting('_INVENTREE_LATEST_VERSION'), '') # Get new version diff --git a/src/backend/InvenTree/InvenTree/unit_test.py b/src/backend/InvenTree/InvenTree/unit_test.py index aee89660f3..583930f790 100644 --- a/src/backend/InvenTree/InvenTree/unit_test.py +++ b/src/backend/InvenTree/InvenTree/unit_test.py @@ -152,6 +152,17 @@ class UserMixin: """Lougout current user.""" self.client.logout() + @classmethod + def clearRoles(cls): + """Remove all user roles from the registered user.""" + for ruleset in cls.group.rule_sets.all(): + ruleset.can_view = False + ruleset.can_change = False + ruleset.can_delete = False + ruleset.can_add = False + + ruleset.save() + @classmethod def assignRole(cls, role=None, assign_all: bool = False, group=None): """Set the user roles for the registered user. @@ -229,7 +240,7 @@ class ExchangeRateMixin: class InvenTreeTestCase(ExchangeRateMixin, UserMixin, TestCase): - """Testcase with user setup buildin.""" + """Testcase with user setup build in.""" pass @@ -267,7 +278,7 @@ class InvenTreeAPITestCase(ExchangeRateMixin, UserMixin, APITestCase): f'Query count exceeded at {url}: Expected < {value} queries, got {n}' ) # pragma: no cover - if verbose: + if verbose or n >= value: msg = '\r\n%s' % json.dumps( context.captured_queries, indent=4 ) # pragma: no cover @@ -296,7 +307,7 @@ class InvenTreeAPITestCase(ExchangeRateMixin, UserMixin, APITestCase): if hasattr(response, 'content'): print('content:', response.content) - self.assertEqual(expected_code, response.status_code) + self.assertEqual(response.status_code, expected_code) def getActions(self, url): """Return a dict of the 'actions' available at a given endpoint. @@ -314,17 +325,17 @@ class InvenTreeAPITestCase(ExchangeRateMixin, UserMixin, APITestCase): if data is None: data = {} - expected_code = kwargs.pop('expected_code', None) - kwargs['format'] = kwargs.get('format', 'json') - max_queries = kwargs.get('max_query_count', self.MAX_QUERY_COUNT) - max_query_time = kwargs.get('max_query_time', self.MAX_QUERY_TIME) + expected_code = kwargs.pop('expected_code', None) + max_queries = kwargs.pop('max_query_count', self.MAX_QUERY_COUNT) + max_query_time = kwargs.pop('max_query_time', self.MAX_QUERY_TIME) t1 = time.time() with self.assertNumQueriesLessThan(max_queries, url=url): response = method(url, data, **kwargs) + t2 = time.time() dt = t2 - t1 diff --git a/src/backend/InvenTree/InvenTree/validators.py b/src/backend/InvenTree/InvenTree/validators.py index d01d79f633..f2a85bc18f 100644 --- a/src/backend/InvenTree/InvenTree/validators.py +++ b/src/backend/InvenTree/InvenTree/validators.py @@ -13,6 +13,7 @@ from jinja2 import Template from moneyed import CURRENCIES import InvenTree.conversion +from common.settings import get_global_setting def validate_physical_units(unit): @@ -63,14 +64,10 @@ class AllowedURLValidator(validators.URLValidator): def __call__(self, value): """Validate the URL.""" - import common.models - self.schemes = allowable_url_schemes() # Determine if 'strict' URL validation is required (i.e. if the URL must have a schema prefix) - strict_urls = common.models.InvenTreeSetting.get_setting( - 'INVENTREE_STRICT_URLS', True, cache=False - ) + strict_urls = get_global_setting('INVENTREE_STRICT_URLS', cache=False) if not strict_urls: # Allow URLs which do not have a provided schema diff --git a/src/backend/InvenTree/InvenTree/version.py b/src/backend/InvenTree/InvenTree/version.py index eef574e1bd..8752f4e6a7 100644 --- a/src/backend/InvenTree/InvenTree/version.py +++ b/src/backend/InvenTree/InvenTree/version.py @@ -3,6 +3,7 @@ Provides information on the current InvenTree version """ +import logging import os import pathlib import platform @@ -14,18 +15,29 @@ from datetime import timedelta as td import django from django.conf import settings -from dulwich.repo import NotGitRepository, Repo - from .api_version import INVENTREE_API_TEXT, INVENTREE_API_VERSION # InvenTree software version INVENTREE_SW_VERSION = '0.16.0 dev' + +logger = logging.getLogger('inventree') + + # Discover git try: + from dulwich.repo import Repo + main_repo = Repo(pathlib.Path(__file__).parent.parent.parent.parent.parent) main_commit = main_repo[main_repo.head()] -except (NotGitRepository, FileNotFoundError): +except (ImportError, ModuleNotFoundError): + logger.warning( + 'Warning: Dulwich module not found, git information will not be available.' + ) + main_repo = None + main_commit = None +except Exception: + main_repo = None main_commit = None @@ -51,17 +63,18 @@ def checkMinPythonVersion(): def inventreeInstanceName(): """Returns the InstanceName settings for the current database.""" - import common.models + from common.settings import get_global_setting - return common.models.InvenTreeSetting.get_setting('INVENTREE_INSTANCE', '') + return get_global_setting('INVENTREE_INSTANCE') def inventreeInstanceTitle(): """Returns the InstanceTitle for the current database.""" - import common.models + from common.settings import get_global_setting + + if get_global_setting('INVENTREE_INSTANCE_TITLE'): + return get_global_setting('INVENTREE_INSTANCE') - if common.models.InvenTreeSetting.get_setting('INVENTREE_INSTANCE_TITLE', False): - return common.models.InvenTreeSetting.get_setting('INVENTREE_INSTANCE', '') return 'InvenTree' @@ -122,9 +135,9 @@ def isInvenTreeUpToDate(): A background task periodically queries GitHub for latest version, and stores it to the database as "_INVENTREE_LATEST_VERSION" """ - import common.models + from common.settings import get_global_setting - latest = common.models.InvenTreeSetting.get_setting( + latest = get_global_setting( '_INVENTREE_LATEST_VERSION', backup_value=None, create=False ) diff --git a/src/backend/InvenTree/build/api.py b/src/backend/InvenTree/build/api.py index f84bca1273..57c66a4182 100644 --- a/src/backend/InvenTree/build/api.py +++ b/src/backend/InvenTree/build/api.py @@ -11,7 +11,7 @@ from rest_framework.exceptions import ValidationError from django_filters.rest_framework import DjangoFilterBackend from django_filters import rest_framework as rest_filters -from InvenTree.api import AttachmentMixin, APIDownloadMixin, ListCreateDestroyAPIView, MetadataView +from InvenTree.api import APIDownloadMixin, MetadataView from generic.states.api import StatusView from InvenTree.helpers import str2bool, isNull, DownloadFile from build.status_codes import BuildStatus, BuildStatusGroups @@ -20,7 +20,7 @@ from InvenTree.mixins import CreateAPI, RetrieveUpdateDestroyAPI, ListCreateAPI import common.models import build.admin import build.serializers -from build.models import Build, BuildLine, BuildItem, BuildOrderAttachment +from build.models import Build, BuildLine, BuildItem import part.models from users.models import Owner from InvenTree.filters import SEARCH_ORDER_FILTER_ALIAS @@ -380,6 +380,8 @@ class BuildLineList(BuildLineEndpoint, ListCreateAPI): search_fields = [ 'bom_item__sub_part__name', + 'bom_item__sub_part__IPN', + 'bom_item__sub_part__description', 'bom_item__reference', ] @@ -612,32 +614,8 @@ class BuildItemList(ListCreateAPI): ] -class BuildAttachmentList(AttachmentMixin, ListCreateDestroyAPIView): - """API endpoint for listing (and creating) BuildOrderAttachment objects.""" - - queryset = BuildOrderAttachment.objects.all() - serializer_class = build.serializers.BuildAttachmentSerializer - - filterset_fields = [ - 'build', - ] - - -class BuildAttachmentDetail(AttachmentMixin, RetrieveUpdateDestroyAPI): - """Detail endpoint for a BuildOrderAttachment object.""" - - queryset = BuildOrderAttachment.objects.all() - serializer_class = build.serializers.BuildAttachmentSerializer - - build_api_urls = [ - # Attachments - path('attachment/', include([ - path('/', BuildAttachmentDetail.as_view(), name='api-build-attachment-detail'), - path('', BuildAttachmentList.as_view(), name='api-build-attachment-list'), - ])), - # Build lines path('line/', include([ path('/', BuildLineDetail.as_view(), name='api-build-line-detail'), diff --git a/src/backend/InvenTree/build/migrations/0022_buildorderattachment.py b/src/backend/InvenTree/build/migrations/0022_buildorderattachment.py index 0256649027..47ecbf7f98 100644 --- a/src/backend/InvenTree/build/migrations/0022_buildorderattachment.py +++ b/src/backend/InvenTree/build/migrations/0022_buildorderattachment.py @@ -18,7 +18,7 @@ class Migration(migrations.Migration): name='BuildOrderAttachment', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('attachment', models.FileField(help_text='Select file to attach', upload_to=InvenTree.models.rename_attachment)), + ('attachment', models.FileField(help_text='Select file to attach', upload_to='attachments')), ('comment', models.CharField(blank=True, help_text='File comment', max_length=100)), ('upload_date', models.DateField(auto_now_add=True, null=True)), ('build', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='attachments', to='build.Build')), diff --git a/src/backend/InvenTree/build/migrations/0027_auto_20210404_2016.py b/src/backend/InvenTree/build/migrations/0027_auto_20210404_2016.py index f4a2c1afde..6d34eae5b5 100644 --- a/src/backend/InvenTree/build/migrations/0027_auto_20210404_2016.py +++ b/src/backend/InvenTree/build/migrations/0027_auto_20210404_2016.py @@ -65,7 +65,7 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='buildorderattachment', name='attachment', - field=models.FileField(help_text='Select file to attach', upload_to=InvenTree.models.rename_attachment, verbose_name='Attachment'), + field=models.FileField(help_text='Select file to attach', upload_to='attachments', verbose_name='Attachment'), ), migrations.AlterField( model_name='buildorderattachment', diff --git a/src/backend/InvenTree/build/migrations/0033_auto_20211128_0151.py b/src/backend/InvenTree/build/migrations/0033_auto_20211128_0151.py index db8df848ce..5558fe8973 100644 --- a/src/backend/InvenTree/build/migrations/0033_auto_20211128_0151.py +++ b/src/backend/InvenTree/build/migrations/0033_auto_20211128_0151.py @@ -20,6 +20,6 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='buildorderattachment', name='attachment', - field=models.FileField(blank=True, help_text='Select file to attach', null=True, upload_to=InvenTree.models.rename_attachment, verbose_name='Attachment'), + field=models.FileField(blank=True, help_text='Select file to attach', null=True, upload_to='attachments', verbose_name='Attachment'), ), ] diff --git a/src/backend/InvenTree/build/migrations/0051_delete_buildorderattachment.py b/src/backend/InvenTree/build/migrations/0051_delete_buildorderattachment.py new file mode 100644 index 0000000000..d600bd240f --- /dev/null +++ b/src/backend/InvenTree/build/migrations/0051_delete_buildorderattachment.py @@ -0,0 +1,21 @@ +# Generated by Django 4.2.12 on 2024-06-09 09:02 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('build', '0050_auto_20240508_0138'), + ('common', '0026_auto_20240608_1238'), + ('company', '0069_company_active'), + ('order', '0099_alter_salesorder_status'), + ('part', '0123_parttesttemplate_choices'), + ('stock', '0110_alter_stockitemtestresult_finished_datetime_and_more') + ] + + operations = [ + migrations.DeleteModel( + name='BuildOrderAttachment', + ), + ] diff --git a/src/backend/InvenTree/build/models.py b/src/backend/InvenTree/build/models.py index ffbbc0b544..7430eb4a29 100644 --- a/src/backend/InvenTree/build/models.py +++ b/src/backend/InvenTree/build/models.py @@ -36,6 +36,7 @@ import InvenTree.tasks import common.models from common.notifications import trigger_notification, InvenTreeNotificationBodies +from common.settings import get_global_setting from plugin.events import trigger_event import part.models @@ -49,6 +50,7 @@ logger = logging.getLogger('inventree') class Build( report.mixins.InvenTreeReportMixin, + InvenTree.models.InvenTreeAttachmentMixin, InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models.InvenTreeNotesMixin, InvenTree.models.MetadataMixin, @@ -136,7 +138,7 @@ class Build( super().clean() - if common.models.InvenTreeSetting.get_setting('BUILDORDER_REQUIRE_RESPONSIBLE'): + if get_global_setting('BUILDORDER_REQUIRE_RESPONSIBLE'): if not self.responsible: raise ValidationError({ 'responsible': _('Responsible user or group must be specified') @@ -1321,16 +1323,6 @@ def after_save_build(sender, instance: Build, created: bool, **kwargs): instance.update_build_line_items() -class BuildOrderAttachment(InvenTree.models.InvenTreeAttachment): - """Model for storing file attachments against a BuildOrder object.""" - - def getSubdir(self): - """Return the media file subdirectory for storing BuildOrder attachments""" - return os.path.join('bo_files', str(self.build.id)) - - build = models.ForeignKey(Build, on_delete=models.CASCADE, related_name='attachments') - - class BuildLine(report.mixins.InvenTreeReportMixin, InvenTree.models.InvenTreeModel): """A BuildLine object links a BOMItem to a Build. diff --git a/src/backend/InvenTree/build/serializers.py b/src/backend/InvenTree/build/serializers.py index 4be7409fde..fe33f0a729 100644 --- a/src/backend/InvenTree/build/serializers.py +++ b/src/backend/InvenTree/build/serializers.py @@ -13,8 +13,7 @@ from django.db.models.functions import Coalesce from rest_framework import serializers from rest_framework.serializers import ValidationError -from InvenTree.serializers import InvenTreeModelSerializer, InvenTreeAttachmentSerializer -from InvenTree.serializers import UserSerializer +from InvenTree.serializers import InvenTreeModelSerializer, UserSerializer import InvenTree.helpers from InvenTree.serializers import InvenTreeDecimalField, NotesFieldMixin @@ -30,7 +29,7 @@ import part.filters from part.serializers import BomItemSerializer, PartSerializer, PartBriefSerializer from users.serializers import OwnerSerializer -from .models import Build, BuildLine, BuildItem, BuildOrderAttachment +from .models import Build, BuildLine, BuildItem class BuildSerializer(NotesFieldMixin, InvenTreeModelSerializer): @@ -1311,15 +1310,3 @@ class BuildLineSerializer(InvenTreeModelSerializer): ) return queryset - - -class BuildAttachmentSerializer(InvenTreeAttachmentSerializer): - """Serializer for a BuildAttachment.""" - - class Meta: - """Serializer metaclass""" - model = BuildOrderAttachment - - fields = InvenTreeAttachmentSerializer.attachment_fields([ - 'build', - ]) diff --git a/src/backend/InvenTree/build/templates/build/detail.html b/src/backend/InvenTree/build/templates/build/detail.html index 138f0a14d4..7daa1dc218 100644 --- a/src/backend/InvenTree/build/templates/build/detail.html +++ b/src/backend/InvenTree/build/templates/build/detail.html @@ -326,18 +326,7 @@ onPanelLoad('children', function() { }); onPanelLoad('attachments', function() { - - loadAttachmentTable('{% url "api-build-attachment-list" %}', { - filters: { - build: {{ build.pk }}, - }, - fields: { - build: { - value: {{ build.pk }}, - hidden: true, - } - } - }); + loadAttachmentTable('build', {{ build.pk }}); }); onPanelLoad('notes', function() { diff --git a/src/backend/InvenTree/build/test_build.py b/src/backend/InvenTree/build/test_build.py index fd4fe9975f..4f06038888 100644 --- a/src/backend/InvenTree/build/test_build.py +++ b/src/backend/InvenTree/build/test_build.py @@ -12,6 +12,7 @@ from django.db.models import Sum from InvenTree import status_codes as status import common.models +from common.settings import set_global_setting import build.tasks from build.models import Build, BuildItem, BuildLine, generate_next_build_reference from part.models import Part, BomItem, BomItemSubstitute, PartTestTemplate @@ -215,7 +216,7 @@ class BuildTest(BuildTestBase): def test_ref_int(self): """Test the "integer reference" field used for natural sorting""" # Set build reference to new value - common.models.InvenTreeSetting.set_setting('BUILDORDER_REFERENCE_PATTERN', 'BO-{ref}-???', change_user=None) + set_global_setting('BUILDORDER_REFERENCE_PATTERN', 'BO-{ref}-???', change_user=None) refs = { 'BO-123-456': 123, @@ -238,7 +239,7 @@ class BuildTest(BuildTestBase): self.assertEqual(build.reference_int, ref_int) # Set build reference back to default value - common.models.InvenTreeSetting.set_setting('BUILDORDER_REFERENCE_PATTERN', 'BO-{ref:04d}', change_user=None) + set_global_setting('BUILDORDER_REFERENCE_PATTERN', 'BO-{ref:04d}', change_user=None) def test_ref_validation(self): """Test that the reference field validation works as expected""" @@ -271,7 +272,7 @@ class BuildTest(BuildTestBase): ) # Try a new validator pattern - common.models.InvenTreeSetting.set_setting('BUILDORDER_REFERENCE_PATTERN', '{ref}-BO', change_user=None) + set_global_setting('BUILDORDER_REFERENCE_PATTERN', '{ref}-BO', change_user=None) for ref in [ '1234-BO', @@ -285,11 +286,11 @@ class BuildTest(BuildTestBase): ) # Set build reference back to default value - common.models.InvenTreeSetting.set_setting('BUILDORDER_REFERENCE_PATTERN', 'BO-{ref:04d}', change_user=None) + set_global_setting('BUILDORDER_REFERENCE_PATTERN', 'BO-{ref:04d}', change_user=None) def test_next_ref(self): """Test that the next reference is automatically generated""" - common.models.InvenTreeSetting.set_setting('BUILDORDER_REFERENCE_PATTERN', 'XYZ-{ref:06d}', change_user=None) + set_global_setting('BUILDORDER_REFERENCE_PATTERN', 'XYZ-{ref:06d}', change_user=None) build = Build.objects.create( part=self.assembly, @@ -311,7 +312,7 @@ class BuildTest(BuildTestBase): self.assertEqual(build.reference_int, 988) # Set build reference back to default value - common.models.InvenTreeSetting.set_setting('BUILDORDER_REFERENCE_PATTERN', 'BO-{ref:04d}', change_user=None) + set_global_setting('BUILDORDER_REFERENCE_PATTERN', 'BO-{ref:04d}', change_user=None) def test_init(self): """Perform some basic tests before we start the ball rolling""" @@ -647,7 +648,7 @@ class BuildTest(BuildTestBase): """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) + set_global_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) diff --git a/src/backend/InvenTree/build/test_migrations.py b/src/backend/InvenTree/build/test_migrations.py index dba739764a..4a0c720e5d 100644 --- a/src/backend/InvenTree/build/test_migrations.py +++ b/src/backend/InvenTree/build/test_migrations.py @@ -19,7 +19,6 @@ class TestForwardMigrations(MigratorTestCase): name='Widget', description='Buildable Part', active=True, - level=0, lft=0, rght=0, tree_id=0, ) Build = self.old_state.apps.get_model('build', 'build') @@ -61,7 +60,6 @@ class TestReferenceMigration(MigratorTestCase): part = Part.objects.create( name='Part', description='A test part', - level=0, lft=0, rght=0, tree_id=0, ) Build = self.old_state.apps.get_model('build', 'build') diff --git a/src/backend/InvenTree/common/admin.py b/src/backend/InvenTree/common/admin.py index 9dd3a05018..a0719f9ab4 100644 --- a/src/backend/InvenTree/common/admin.py +++ b/src/backend/InvenTree/common/admin.py @@ -5,6 +5,34 @@ from django.contrib import admin from import_export.admin import ImportExportModelAdmin import common.models +import common.validators + + +@admin.register(common.models.Attachment) +class AttachmentAdmin(admin.ModelAdmin): + """Admin interface for Attachment objects.""" + + def formfield_for_dbfield(self, db_field, request, **kwargs): + """Provide custom choices for 'model_type' field.""" + if db_field.name == 'model_type': + db_field.choices = common.validators.attachment_model_options() + + return super().formfield_for_dbfield(db_field, request, **kwargs) + + list_display = ( + 'model_type', + 'model_id', + 'attachment', + 'link', + 'upload_user', + 'upload_date', + ) + + list_filter = ['model_type', 'upload_user'] + + readonly_fields = ['file_size', 'upload_date', 'upload_user'] + + search_fields = ('content_type', 'comment') @admin.register(common.models.ProjectCode) @@ -16,6 +44,7 @@ class ProjectCodeAdmin(ImportExportModelAdmin): search_fields = ('code', 'description') +@admin.register(common.models.InvenTreeSetting) class SettingsAdmin(ImportExportModelAdmin): """Admin settings for InvenTreeSetting.""" @@ -28,6 +57,7 @@ class SettingsAdmin(ImportExportModelAdmin): return [] +@admin.register(common.models.InvenTreeUserSetting) class UserSettingsAdmin(ImportExportModelAdmin): """Admin settings for InvenTreeUserSetting.""" @@ -40,18 +70,21 @@ class UserSettingsAdmin(ImportExportModelAdmin): return [] +@admin.register(common.models.WebhookEndpoint) class WebhookAdmin(ImportExportModelAdmin): """Admin settings for Webhook.""" list_display = ('endpoint_id', 'name', 'active', 'user') +@admin.register(common.models.NotificationEntry) class NotificationEntryAdmin(admin.ModelAdmin): """Admin settings for NotificationEntry.""" list_display = ('key', 'uid', 'updated') +@admin.register(common.models.NotificationMessage) class NotificationMessageAdmin(admin.ModelAdmin): """Admin settings for NotificationMessage.""" @@ -70,16 +103,11 @@ class NotificationMessageAdmin(admin.ModelAdmin): search_fields = ('name', 'category', 'message') +@admin.register(common.models.NewsFeedEntry) class NewsFeedEntryAdmin(admin.ModelAdmin): """Admin settings for NewsFeedEntry.""" list_display = ('title', 'author', 'published', 'summary') -admin.site.register(common.models.InvenTreeSetting, SettingsAdmin) -admin.site.register(common.models.InvenTreeUserSetting, UserSettingsAdmin) -admin.site.register(common.models.WebhookEndpoint, WebhookAdmin) admin.site.register(common.models.WebhookMessage, ImportExportModelAdmin) -admin.site.register(common.models.NotificationEntry, NotificationEntryAdmin) -admin.site.register(common.models.NotificationMessage, NotificationMessageAdmin) -admin.site.register(common.models.NewsFeedEntry, NewsFeedEntryAdmin) diff --git a/src/backend/InvenTree/common/api.py b/src/backend/InvenTree/common/api.py index 3d1cda90f6..9819543a5b 100644 --- a/src/backend/InvenTree/common/api.py +++ b/src/backend/InvenTree/common/api.py @@ -4,24 +4,28 @@ import json from django.conf import settings from django.contrib.contenttypes.models import ContentType +from django.db.models import Q from django.http.response import HttpResponse 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.csrf import csrf_exempt import django_q.models +from django_filters import rest_framework as rest_filters 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 +from rest_framework.exceptions import NotAcceptable, NotFound, PermissionDenied from rest_framework.permissions import IsAdminUser from rest_framework.response import Response from rest_framework.views import APIView import common.models import common.serializers +from common.settings import get_global_setting from generic.states.api import AllStatusViews, StatusView from InvenTree.api import BulkDeleteMixin, MetadataView from InvenTree.config import CONFIG_LOOKUPS @@ -149,7 +153,7 @@ class CurrencyExchangeView(APIView): updated = None response = { - 'base_currency': common.models.InvenTreeSetting.get_setting( + 'base_currency': get_global_setting( 'INVENTREE_DEFAULT_CURRENCY', backup_value='USD' ), 'exchange_rates': {}, @@ -673,6 +677,71 @@ class ContentTypeModelDetail(ContentTypeDetail): raise NotFound() +class AttachmentFilter(rest_filters.FilterSet): + """Filterset for the AttachmentList API endpoint.""" + + class Meta: + """Metaclass options.""" + + model = common.models.Attachment + fields = ['model_type', 'model_id', 'upload_user'] + + is_link = rest_filters.BooleanFilter(label=_('Is Link'), method='filter_is_link') + + def filter_is_link(self, queryset, name, value): + """Filter attachments based on whether they are a link or not.""" + if value: + return queryset.exclude(link=None).exclude(link='') + return queryset.filter(Q(link=None) | Q(link='')).distinct() + + is_file = rest_filters.BooleanFilter(label=_('Is File'), method='filter_is_file') + + def filter_is_file(self, queryset, name, value): + """Filter attachments based on whether they are a file or not.""" + if value: + return queryset.exclude(attachment=None).exclude(attachment='') + return queryset.filter(Q(attachment=None) | Q(attachment='')).distinct() + + +class AttachmentList(ListCreateAPI): + """List API endpoint for Attachment objects.""" + + queryset = common.models.Attachment.objects.all() + serializer_class = common.serializers.AttachmentSerializer + permission_classes = [permissions.IsAuthenticated] + + filter_backends = SEARCH_ORDER_FILTER + filterset_class = AttachmentFilter + + ordering_fields = ['model_id', 'model_type', 'upload_date', 'file_size'] + search_fields = ['comment', 'model_id', 'model_type'] + + def perform_create(self, serializer): + """Save the user information when a file is uploaded.""" + attachment = serializer.save() + attachment.upload_user = self.request.user + attachment.save() + + +class AttachmentDetail(RetrieveUpdateDestroyAPI): + """Detail API endpoint for Attachment objects.""" + + queryset = common.models.Attachment.objects.all() + serializer_class = common.serializers.AttachmentSerializer + permission_classes = [permissions.IsAuthenticated] + + def destroy(self, request, *args, **kwargs): + """Check user permissions before deleting an attachment.""" + attachment = self.get_object() + + if not attachment.check_permission('delete', request.user): + raise PermissionDenied( + _('User does not have permission to delete this attachment') + ) + + return super().destroy(request, *args, **kwargs) + + settings_api_urls = [ # User settings path( @@ -741,6 +810,25 @@ common_api_urls = [ path('', BackgroundTaskOverview.as_view(), name='api-task-overview'), ]), ), + # Attachments + path( + 'attachment/', + include([ + path( + '/', + include([ + path( + 'metadata/', + MetadataView.as_view(), + {'model': common.models.Attachment}, + name='api-attachment-metadata', + ), + path('', AttachmentDetail.as_view(), name='api-attachment-detail'), + ]), + ), + path('', AttachmentList.as_view(), name='api-attachment-list'), + ]), + ), path( 'error-report/', include([ diff --git a/src/backend/InvenTree/common/apps.py b/src/backend/InvenTree/common/apps.py index a62c15d59f..6536499229 100644 --- a/src/backend/InvenTree/common/apps.py +++ b/src/backend/InvenTree/common/apps.py @@ -5,6 +5,7 @@ import logging from django.apps import AppConfig import InvenTree.ready +from common.settings import get_global_setting, set_global_setting logger = logging.getLogger('inventree') @@ -27,16 +28,12 @@ class CommonConfig(AppConfig): def clear_restart_flag(self): """Clear the SERVER_RESTART_REQUIRED setting.""" try: - import common.models - - if common.models.InvenTreeSetting.get_setting( + if get_global_setting( 'SERVER_RESTART_REQUIRED', backup_value=False, create=False, cache=False ): logger.info('Clearing SERVER_RESTART_REQUIRED flag') if not InvenTree.ready.isImportingData(): - common.models.InvenTreeSetting.set_setting( - 'SERVER_RESTART_REQUIRED', False, None - ) + set_global_setting('SERVER_RESTART_REQUIRED', False, None) except Exception: pass diff --git a/src/backend/InvenTree/common/currency.py b/src/backend/InvenTree/common/currency.py index c77549c550..5590505f12 100644 --- a/src/backend/InvenTree/common/currency.py +++ b/src/backend/InvenTree/common/currency.py @@ -17,7 +17,7 @@ logger = logging.getLogger('inventree') def currency_code_default(): """Returns the default currency code (or USD if not specified).""" - from common.models import InvenTreeSetting + from common.settings import get_global_setting try: cached_value = cache.get('currency_code_default', '') @@ -28,9 +28,7 @@ def currency_code_default(): return cached_value try: - code = InvenTreeSetting.get_setting( - 'INVENTREE_DEFAULT_CURRENCY', backup_value='', create=True, cache=True - ) + code = get_global_setting('INVENTREE_DEFAULT_CURRENCY', create=True, cache=True) except Exception: # pragma: no cover # Database may not yet be ready, no need to throw an error here code = '' @@ -59,9 +57,9 @@ def currency_codes_default_list() -> str: def currency_codes() -> list: """Returns the current currency codes.""" - from common.models import InvenTreeSetting + from common.settings import get_global_setting - codes = InvenTreeSetting.get_setting('CURRENCY_CODES', '', create=False).strip() + codes = get_global_setting('CURRENCY_CODES', create=False).strip() if not codes: codes = currency_codes_default_list() @@ -150,6 +148,9 @@ def currency_exchange_plugins() -> list: except Exception: plugs = [] + if len(plugs) == 0: + return None + return [('', _('No plugin'))] + [(plug.slug, plug.human_name) for plug in plugs] diff --git a/src/backend/InvenTree/common/migrations/0025_attachment.py b/src/backend/InvenTree/common/migrations/0025_attachment.py new file mode 100644 index 0000000000..63f9ec69a6 --- /dev/null +++ b/src/backend/InvenTree/common/migrations/0025_attachment.py @@ -0,0 +1,43 @@ +# Generated by Django 4.2.12 on 2024-06-08 12:37 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import taggit.managers + +import common.models +import common.validators +import InvenTree.fields +import InvenTree.models + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('contenttypes', '0002_remove_content_type_name'), + ('common', '0024_notesimage_model_id_notesimage_model_type'), + ] + + operations = [ + migrations.CreateModel( + name='Attachment', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('model_id', models.PositiveIntegerField()), + ('attachment', models.FileField(blank=True, help_text='Select file to attach', null=True, upload_to=common.models.rename_attachment, verbose_name='Attachment')), + ('link', InvenTree.fields.InvenTreeURLField(blank=True, help_text='Link to external URL', null=True, verbose_name='Link')), + ('comment', models.CharField(blank=True, help_text='Attachment comment', max_length=250, verbose_name='Comment')), + ('upload_date', models.DateField(auto_now_add=True, help_text='Date the file was uploaded', null=True, verbose_name='Upload date')), + ('file_size', models.PositiveIntegerField(default=0, help_text='File size in bytes', verbose_name='File size')), + ('model_type', models.CharField(help_text='Target model type for this image', max_length=100, validators=[common.validators.validate_attachment_model_type])), + ('upload_user', models.ForeignKey(blank=True, help_text='User', null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='User')), + ('metadata', models.JSONField(blank=True, help_text='JSON metadata field, for use by external plugins', null=True, verbose_name='Plugin Metadata')), + ('tags', taggit.managers.TaggableManager(blank=True, help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags')) + ], + bases=(InvenTree.models.PluginValidationMixin, models.Model), + options={ + 'verbose_name': 'Attachment', + } + ), + ] diff --git a/src/backend/InvenTree/common/migrations/0026_auto_20240608_1238.py b/src/backend/InvenTree/common/migrations/0026_auto_20240608_1238.py new file mode 100644 index 0000000000..09e12e90dd --- /dev/null +++ b/src/backend/InvenTree/common/migrations/0026_auto_20240608_1238.py @@ -0,0 +1,122 @@ +# Generated by Django 4.2.12 on 2024-06-08 12:38 + +from django.db import migrations +from django.core.files.storage import default_storage + + +def get_legacy_models(): + """Return a set of legacy attachment models.""" + + # Legacy attachment types to convert: + # app_label, table name, target model, model ref + return [ + ('build', 'BuildOrderAttachment', 'build', 'build'), + ('company', 'CompanyAttachment', 'company', 'company'), + ('company', 'ManufacturerPartAttachment', 'manufacturerpart', 'manufacturer_part'), + ('order', 'PurchaseOrderAttachment', 'purchaseorder', 'order'), + ('order', 'SalesOrderAttachment', 'salesorder', 'order'), + ('order', 'ReturnOrderAttachment', 'returnorder', 'order'), + ('part', 'PartAttachment', 'part', 'part'), + ('stock', 'StockItemAttachment', 'stockitem', 'stock_item') + ] + + +def update_attachments(apps, schema_editor): + """Migrate any existing attachment models to the new attachment table.""" + + Attachment = apps.get_model('common', 'attachment') + + N = 0 + + for app, model, target_model, model_ref in get_legacy_models(): + LegacyAttachmentModel = apps.get_model(app, model) + + if LegacyAttachmentModel.objects.count() == 0: + continue + + to_create = [] + + for attachment in LegacyAttachmentModel.objects.all(): + + # Find the size of the file (if exists) + if attachment.attachment and default_storage.exists(attachment.attachment.name): + try: + file_size = default_storage.size(attachment.attachment.name) + except NotImplementedError: + file_size = 0 + else: + file_size = 0 + + to_create.append( + Attachment( + model_type=target_model, + model_id=getattr(attachment, model_ref).pk, + attachment=attachment.attachment, + link=attachment.link, + comment=attachment.comment, + upload_date=attachment.upload_date, + upload_user=attachment.user, + file_size=file_size + ) + ) + + if len(to_create) > 0: + print(f"Migrating {len(to_create)} attachments for the legacy '{model}' model.") + Attachment.objects.bulk_create(to_create) + + N += len(to_create) + + # Check the correct number of Attachment objects has been created + assert(N == Attachment.objects.count()) + + +def reverse_attachments(apps, schema_editor): + """Reverse data migration, and map new Attachment model back to legacy models.""" + + Attachment = apps.get_model('common', 'attachment') + + N = 0 + + for app, model, target_model, model_ref in get_legacy_models(): + LegacyAttachmentModel = apps.get_model(app, model) + + to_create = [] + + for attachment in Attachment.objects.filter(model_type=target_model): + + TargetModel = apps.get_model(app, target_model) + + data = { + 'attachment': attachment.attachment, + 'link': attachment.link, + 'comment': attachment.comment, + 'upload_date': attachment.upload_date, + 'user': attachment.upload_user, + model_ref: TargetModel.objects.get(pk=attachment.model_id) + } + + to_create.append(LegacyAttachmentModel(**data)) + + if len(to_create) > 0: + print(f"Reversing {len(to_create)} attachments for the legacy '{model}' model.") + LegacyAttachmentModel.objects.bulk_create(to_create) + + N += len(to_create) + + # Check the correct number of LegacyAttachmentModel objects has been created + assert(N == Attachment.objects.count()) + +class Migration(migrations.Migration): + + dependencies = [ + ('build', '0050_auto_20240508_0138'), + ('common', '0025_attachment'), + ('company', '0069_company_active'), + ('order', '0099_alter_salesorder_status'), + ('part', '0123_parttesttemplate_choices'), + ('stock', '0110_alter_stockitemtestresult_finished_datetime_and_more') + ] + + operations = [ + migrations.RunPython(update_attachments, reverse_code=reverse_attachments), + ] diff --git a/src/backend/InvenTree/common/models.py b/src/backend/InvenTree/common/models.py index b4edd79cb1..645abd28e6 100644 --- a/src/backend/InvenTree/common/models.py +++ b/src/backend/InvenTree/common/models.py @@ -12,6 +12,7 @@ import os import uuid from datetime import timedelta, timezone from enum import Enum +from io import BytesIO from secrets import compare_digest from typing import Any, Callable, TypedDict, Union @@ -23,6 +24,7 @@ from django.contrib.contenttypes.models import ContentType from django.contrib.humanize.templatetags.humanize import naturaltime from django.core.cache import cache from django.core.exceptions import ValidationError +from django.core.files.storage import default_storage from django.core.validators import MaxValueValidator, MinValueValidator, URLValidator from django.db import models, transaction from django.db.models.signals import post_delete, post_save @@ -35,6 +37,7 @@ from django.utils.translation import gettext_lazy as _ from djmoney.contrib.exchange.exceptions import MissingRate from djmoney.contrib.exchange.models import convert_money from rest_framework.exceptions import PermissionDenied +from taggit.managers import TaggableManager import build.validators import common.currency @@ -48,6 +51,7 @@ import InvenTree.validators import order.validators import report.helpers import users.models +from InvenTree.sanitizer import sanitize_svg from plugin import registry logger = logging.getLogger('inventree') @@ -549,25 +553,25 @@ class BaseInvenTreeSetting(models.Model): """ key = str(key).strip().upper() - filters = { - 'key__iexact': key, - # Optionally filter by other keys - **cls.get_filters(**kwargs), - } - # Unless otherwise specified, attempt to create the setting create = kwargs.pop('create', True) # Specify if cache lookup should be performed do_cache = kwargs.pop('cache', django_settings.GLOBAL_CACHE_ENABLED) - # Prevent saving to the database during data import - if InvenTree.ready.isImportingData(): - create = False - do_cache = False + filters = { + 'key__iexact': key, + # Optionally filter by other keys + **cls.get_filters(**kwargs), + } - # Prevent saving to the database during migrations - if InvenTree.ready.isRunningMigrations(): + # Prevent saving to the database during certain operations + if ( + InvenTree.ready.isImportingData() + or InvenTree.ready.isRunningMigrations() + or InvenTree.ready.isRebuildingData() + or InvenTree.ready.isRunningBackup() + ): create = False do_cache = False @@ -594,33 +598,21 @@ class BaseInvenTreeSetting(models.Model): setting = None # Setting does not exist! (Try to create it) - if not setting: - # Prevent creation of new settings objects when importing data - if ( - InvenTree.ready.isImportingData() - or not InvenTree.ready.canAppAccessDatabase( - allow_test=True, allow_shell=True - ) - ): - create = False + if not setting and create: + # Attempt to create a new settings object + default_value = cls.get_setting_default(key, **kwargs) + setting = cls(key=key, value=default_value, **kwargs) - if create: - # Attempt to create a new settings object - - default_value = cls.get_setting_default(key, **kwargs) - - setting = cls(key=key, value=default_value, **kwargs) - - try: - # Wrap this statement in "atomic", so it can be rolled back if it fails - with transaction.atomic(): - setting.save(**kwargs) - except (IntegrityError, OperationalError, ProgrammingError): - # It might be the case that the database isn't created yet - pass - except ValidationError: - # The setting failed validation - might be due to duplicate keys - pass + try: + # Wrap this statement in "atomic", so it can be rolled back if it fails + with transaction.atomic(): + setting.save(**kwargs) + except (IntegrityError, OperationalError, ProgrammingError): + # It might be the case that the database isn't created yet + pass + except ValidationError: + # The setting failed validation - might be due to duplicate keys + pass if setting and do_cache: # Cache this setting object @@ -694,6 +686,15 @@ class BaseInvenTreeSetting(models.Model): if change_user is not None and not change_user.is_staff: return + # Do not write to the database under certain conditions + if ( + InvenTree.ready.isImportingData() + or InvenTree.ready.isRunningMigrations() + or InvenTree.ready.isRebuildingData() + or InvenTree.ready.isRunningBackup() + ): + return + attempts = int(kwargs.get('attempts', 3)) filters = { @@ -3062,3 +3063,184 @@ def after_custom_unit_updated(sender, instance, **kwargs): from InvenTree.conversion import reload_unit_registry reload_unit_registry() + + +def rename_attachment(instance, filename): + """Callback function to rename an uploaded attachment file. + + Arguments: + - instance: The Attachment instance + - filename: The original filename of the uploaded file + + Returns: + - The new filename for the uploaded file, e.g. 'attachments///' + """ + # Remove any illegal characters from the filename + illegal_chars = '\'"\\`~#|!@#$%^&*()[]{}<>?;:+=,' + + for c in illegal_chars: + filename = filename.replace(c, '') + + filename = os.path.basename(filename) + + # Generate a new filename for the attachment + return os.path.join( + 'attachments', str(instance.model_type), str(instance.model_id), filename + ) + + +class Attachment(InvenTree.models.MetadataMixin, InvenTree.models.InvenTreeModel): + """Class which represents an uploaded file attachment. + + An attachment can be either an uploaded file, or an external URL. + + Attributes: + attachment: The uploaded file + url: An external URL + comment: A comment or description for the attachment + user: The user who uploaded the attachment + upload_date: The date the attachment was uploaded + file_size: The size of the uploaded file + metadata: Arbitrary metadata for the attachment (inherit from MetadataMixin) + tags: Tags for the attachment + """ + + class Meta: + """Metaclass options.""" + + verbose_name = _('Attachment') + + def save(self, *args, **kwargs): + """Custom 'save' method for the Attachment model. + + - Record the file size of the uploaded attachment (if applicable) + - Ensure that the 'content_type' and 'object_id' fields are set + - Run extra validations + """ + # Either 'attachment' or 'link' must be specified! + if not self.attachment and not self.link: + raise ValidationError({ + 'attachment': _('Missing file'), + 'link': _('Missing external link'), + }) + + if self.attachment: + if self.attachment.name.lower().endswith('.svg'): + self.attachment.file.file = self.clean_svg(self.attachment) + else: + self.file_size = 0 + + super().save(*args, **kwargs) + + # Update file size + if self.file_size == 0 and self.attachment: + # Get file size + if default_storage.exists(self.attachment.name): + try: + self.file_size = default_storage.size(self.attachment.name) + except Exception: + pass + + if self.file_size != 0: + super().save() + + def clean_svg(self, field): + """Sanitize SVG file before saving.""" + cleaned = sanitize_svg(field.file.read()) + return BytesIO(bytes(cleaned, 'utf8')) + + def __str__(self): + """Human name for attachment.""" + if self.attachment is not None: + return os.path.basename(self.attachment.name) + return str(self.link) + + model_type = models.CharField( + max_length=100, + validators=[common.validators.validate_attachment_model_type], + help_text=_('Target model type for this image'), + ) + + model_id = models.PositiveIntegerField() + + attachment = models.FileField( + upload_to=rename_attachment, + verbose_name=_('Attachment'), + help_text=_('Select file to attach'), + blank=True, + null=True, + ) + + link = InvenTree.fields.InvenTreeURLField( + blank=True, + null=True, + verbose_name=_('Link'), + help_text=_('Link to external URL'), + ) + + comment = models.CharField( + blank=True, + max_length=250, + verbose_name=_('Comment'), + help_text=_('Attachment comment'), + ) + + upload_user = models.ForeignKey( + User, + on_delete=models.SET_NULL, + blank=True, + null=True, + verbose_name=_('User'), + help_text=_('User'), + ) + + upload_date = models.DateField( + auto_now_add=True, + null=True, + blank=True, + verbose_name=_('Upload date'), + help_text=_('Date the file was uploaded'), + ) + + file_size = models.PositiveIntegerField( + default=0, verbose_name=_('File size'), help_text=_('File size in bytes') + ) + + tags = TaggableManager(blank=True) + + @property + def basename(self): + """Base name/path for attachment.""" + if self.attachment: + return os.path.basename(self.attachment.name) + return None + + def fully_qualified_url(self): + """Return a 'fully qualified' URL for this attachment. + + - If the attachment is a link to an external resource, return the link + - If the attachment is an uploaded file, return the fully qualified media URL + """ + if self.link: + return self.link + + if self.attachment: + import InvenTree.helpers_model + + media_url = InvenTree.helpers.getMediaUrl(self.attachment.url) + return InvenTree.helpers_model.construct_absolute_url(media_url) + + return '' + + def check_permission(self, permission, user): + """Check if the user has the required permission for this attachment.""" + from InvenTree.models import InvenTreeAttachmentMixin + + model_class = common.validators.attachment_model_class_from_label( + self.model_type + ) + + if not issubclass(model_class, InvenTreeAttachmentMixin): + raise ValidationError(_('Invalid model type specified for attachment')) + + return model_class.check_attachment_permission(permission, user) diff --git a/src/backend/InvenTree/common/serializers.py b/src/backend/InvenTree/common/serializers.py index c3539a7a61..0e0c7d1850 100644 --- a/src/backend/InvenTree/common/serializers.py +++ b/src/backend/InvenTree/common/serializers.py @@ -9,13 +9,18 @@ import django_q.models from error_report.models import Error from flags.state import flag_state from rest_framework import serializers +from rest_framework.exceptions import PermissionDenied +from taggit.serializers import TagListSerializerField import common.models as common_models +import common.validators from InvenTree.helpers import get_objectreference from InvenTree.helpers_model import construct_absolute_url from InvenTree.serializers import ( + InvenTreeAttachmentSerializerField, InvenTreeImageSerializerField, InvenTreeModelSerializer, + UserSerializer, ) from plugin import registry as plugin_registry from users.serializers import OwnerSerializer @@ -474,3 +479,85 @@ class FailedTaskSerializer(InvenTreeModelSerializer): pk = serializers.CharField(source='id', read_only=True) result = serializers.CharField() + + +class AttachmentSerializer(InvenTreeModelSerializer): + """Serializer class for the Attachment model.""" + + class Meta: + """Serializer metaclass.""" + + model = common_models.Attachment + fields = [ + 'pk', + 'attachment', + 'filename', + 'link', + 'comment', + 'upload_date', + 'upload_user', + 'user_detail', + 'file_size', + 'model_type', + 'model_id', + 'tags', + ] + + read_only_fields = ['pk', 'file_size', 'upload_date', 'upload_user', 'filename'] + + def __init__(self, *args, **kwargs): + """Override the model_type field to provide dynamic choices.""" + super().__init__(*args, **kwargs) + + if len(self.fields['model_type'].choices) == 0: + self.fields[ + 'model_type' + ].choices = common.validators.attachment_model_options() + + tags = TagListSerializerField(required=False) + + user_detail = UserSerializer(source='upload_user', read_only=True, many=False) + + attachment = InvenTreeAttachmentSerializerField(required=False, allow_null=True) + + # The 'filename' field must be present in the serializer + filename = serializers.CharField( + label=_('Filename'), required=False, source='basename', allow_blank=False + ) + + upload_date = serializers.DateField(read_only=True) + + # Note: The choices are overridden at run-time on class initialization + model_type = serializers.ChoiceField( + label=_('Model Type'), + choices=common.validators.attachment_model_options(), + required=True, + allow_blank=False, + allow_null=False, + ) + + def save(self): + """Override the save method to handle the model_type field.""" + from InvenTree.models import InvenTreeAttachmentMixin + + model_type = self.validated_data.get('model_type', None) + + # Ensure that the user has permission to attach files to the specified model + user = self.context.get('request').user + + target_model_class = common.validators.attachment_model_class_from_label( + model_type + ) + + if not issubclass(target_model_class, InvenTreeAttachmentMixin): + raise PermissionDenied(_('Invalid model type specified for attachment')) + + # Check that the user has the required permissions to attach files to the target model + if not target_model_class.check_attachment_permission('change', user): + raise PermissionDenied( + _( + 'User does not have permission to create or edit attachments for this model' + ) + ) + + return super().save() diff --git a/src/backend/InvenTree/common/settings.py b/src/backend/InvenTree/common/settings.py index 67a96c3510..6788b427e2 100644 --- a/src/backend/InvenTree/common/settings.py +++ b/src/backend/InvenTree/common/settings.py @@ -1,6 +1,47 @@ """User-configurable settings for the common app.""" +def get_global_setting(key, backup_value=None, **kwargs): + """Return the value of a global setting using the provided key.""" + from common.models import InvenTreeSetting + + if backup_value is not None: + kwargs['backup_value'] = backup_value + + return InvenTreeSetting.get_setting(key, **kwargs) + + +def set_global_setting(key, value, change_user=None, create=True, **kwargs): + """Set the value of a global setting using the provided key.""" + from common.models import InvenTreeSetting + + kwargs['change_user'] = change_user + kwargs['create'] = create + + return InvenTreeSetting.set_setting(key, value, **kwargs) + + +def get_user_setting(key, user, backup_value=None, **kwargs): + """Return the value of a user-specific setting using the provided key.""" + from common.models import InvenTreeUserSetting + + kwargs['user'] = user + + if backup_value is not None: + kwargs['backup_value'] = backup_value + + return InvenTreeUserSetting.get_setting(key, **kwargs) + + +def set_user_setting(key, value, user, **kwargs): + """Set the value of a user-specific setting using the provided key.""" + from common.models import InvenTreeUserSetting + + kwargs['user'] = user + + return InvenTreeUserSetting.set_setting(key, value, **kwargs) + + def stock_expiry_enabled(): """Returns True if the stock expiry feature is enabled.""" from common.models import InvenTreeSetting diff --git a/src/backend/InvenTree/common/test_migrations.py b/src/backend/InvenTree/common/test_migrations.py new file mode 100644 index 0000000000..71d9449ed6 --- /dev/null +++ b/src/backend/InvenTree/common/test_migrations.py @@ -0,0 +1,210 @@ +"""Data migration unit tests for the 'common' app.""" + +import io + +from django.core.files.base import ContentFile + +from django_test_migrations.contrib.unittest_case import MigratorTestCase + +from InvenTree import unit_test + + +def get_legacy_models(): + """Return a set of legacy attachment models.""" + # Legacy attachment types to convert: + # app_label, table name, target model, model ref + return [ + ('build', 'BuildOrderAttachment', 'build', 'build'), + ('company', 'CompanyAttachment', 'company', 'company'), + ( + 'company', + 'ManufacturerPartAttachment', + 'manufacturerpart', + 'manufacturer_part', + ), + ('order', 'PurchaseOrderAttachment', 'purchaseorder', 'order'), + ('order', 'SalesOrderAttachment', 'salesorder', 'order'), + ('order', 'ReturnOrderAttachment', 'returnorder', 'order'), + ('part', 'PartAttachment', 'part', 'part'), + ('stock', 'StockItemAttachment', 'stockitem', 'stock_item'), + ] + + +def generate_attachment(): + """Generate a file attachment object for test upload.""" + file_object = io.StringIO('Some dummy data') + file_object.seek(0) + + return ContentFile(file_object.getvalue(), 'test.txt') + + +class TestForwardMigrations(MigratorTestCase): + """Test entire schema migration sequence for the common app.""" + + migrate_from = ('common', '0024_notesimage_model_id_notesimage_model_type') + migrate_to = ('common', unit_test.getNewestMigrationFile('common')) + + def prepare(self): + """Create initial data. + + Legacy attachment model types are: + - BuildOrderAttachment + - CompanyAttachment + - ManufacturerPartAttachment + - PurchaseOrderAttachment + - SalesOrderAttachment + - ReturnOrderAttachment + - PartAttachment + - StockItemAttachment + """ + # Dummy MPPT data + tree = {'tree_id': 0, 'level': 0, 'lft': 0, 'rght': 0} + + # BuildOrderAttachment + Part = self.old_state.apps.get_model('part', 'Part') + Build = self.old_state.apps.get_model('build', 'Build') + + part = Part.objects.create( + name='Test Part', + description='Test Part Description', + active=True, + assembly=True, + purchaseable=True, + **tree, + ) + + build = Build.objects.create(part=part, title='Test Build', quantity=10, **tree) + + PartAttachment = self.old_state.apps.get_model('part', 'PartAttachment') + PartAttachment.objects.create( + part=part, attachment=generate_attachment(), comment='Test file attachment' + ) + PartAttachment.objects.create( + part=part, link='http://example.com', comment='Test link attachment' + ) + self.assertEqual(PartAttachment.objects.count(), 2) + + BuildOrderAttachment = self.old_state.apps.get_model( + 'build', 'BuildOrderAttachment' + ) + BuildOrderAttachment.objects.create( + build=build, link='http://example.com', comment='Test comment' + ) + BuildOrderAttachment.objects.create( + build=build, attachment=generate_attachment(), comment='a test file' + ) + self.assertEqual(BuildOrderAttachment.objects.count(), 2) + + StockItem = self.old_state.apps.get_model('stock', 'StockItem') + StockItemAttachment = self.old_state.apps.get_model( + 'stock', 'StockItemAttachment' + ) + + item = StockItem.objects.create(part=part, quantity=10, **tree) + + StockItemAttachment.objects.create( + stock_item=item, + attachment=generate_attachment(), + comment='Test file attachment', + ) + StockItemAttachment.objects.create( + stock_item=item, link='http://example.com', comment='Test link attachment' + ) + self.assertEqual(StockItemAttachment.objects.count(), 2) + + Company = self.old_state.apps.get_model('company', 'Company') + CompanyAttachment = self.old_state.apps.get_model( + 'company', 'CompanyAttachment' + ) + + company = Company.objects.create( + name='Test Company', + description='Test Company Description', + is_customer=True, + is_manufacturer=True, + is_supplier=True, + ) + + CompanyAttachment.objects.create( + company=company, + attachment=generate_attachment(), + comment='Test file attachment', + ) + CompanyAttachment.objects.create( + company=company, link='http://example.com', comment='Test link attachment' + ) + self.assertEqual(CompanyAttachment.objects.count(), 2) + + PurchaseOrder = self.old_state.apps.get_model('order', 'PurchaseOrder') + PurchaseOrderAttachment = self.old_state.apps.get_model( + 'order', 'PurchaseOrderAttachment' + ) + + po = PurchaseOrder.objects.create( + reference='PO-12345', + supplier=company, + description='Test Purchase Order Description', + ) + + PurchaseOrderAttachment.objects.create( + order=po, attachment=generate_attachment(), comment='Test file attachment' + ) + PurchaseOrderAttachment.objects.create( + order=po, link='http://example.com', comment='Test link attachment' + ) + self.assertEqual(PurchaseOrderAttachment.objects.count(), 2) + + SalesOrder = self.old_state.apps.get_model('order', 'SalesOrder') + SalesOrderAttachment = self.old_state.apps.get_model( + 'order', 'SalesOrderAttachment' + ) + + so = SalesOrder.objects.create( + reference='SO-12345', + customer=company, + description='Test Sales Order Description', + ) + + SalesOrderAttachment.objects.create( + order=so, attachment=generate_attachment(), comment='Test file attachment' + ) + SalesOrderAttachment.objects.create( + order=so, link='http://example.com', comment='Test link attachment' + ) + self.assertEqual(SalesOrderAttachment.objects.count(), 2) + + ReturnOrder = self.old_state.apps.get_model('order', 'ReturnOrder') + ReturnOrderAttachment = self.old_state.apps.get_model( + 'order', 'ReturnOrderAttachment' + ) + + ro = ReturnOrder.objects.create( + reference='RO-12345', + customer=company, + description='Test Return Order Description', + ) + + ReturnOrderAttachment.objects.create( + order=ro, attachment=generate_attachment(), comment='Test file attachment' + ) + ReturnOrderAttachment.objects.create( + order=ro, link='http://example.com', comment='Test link attachment' + ) + self.assertEqual(ReturnOrderAttachment.objects.count(), 2) + + def test_items_exist(self): + """Test to ensure that the attachments are correctly migrated.""" + Attachment = self.new_state.apps.get_model('common', 'Attachment') + + self.assertEqual(Attachment.objects.count(), 14) + + for model in [ + 'build', + 'company', + 'purchaseorder', + 'returnorder', + 'salesorder', + 'part', + 'stockitem', + ]: + self.assertEqual(Attachment.objects.filter(model_type=model).count(), 2) diff --git a/src/backend/InvenTree/common/test_views.py b/src/backend/InvenTree/common/test_views.py deleted file mode 100644 index 0e43770f02..0000000000 --- a/src/backend/InvenTree/common/test_views.py +++ /dev/null @@ -1 +0,0 @@ -"""Unit tests for the views associated with the 'common' app.""" diff --git a/src/backend/InvenTree/common/tests.py b/src/backend/InvenTree/common/tests.py index 7aad13713c..f936fddfb9 100644 --- a/src/backend/InvenTree/common/tests.py +++ b/src/backend/InvenTree/common/tests.py @@ -11,6 +11,8 @@ from django.contrib.auth import get_user_model from django.contrib.contenttypes.models import ContentType from django.core.cache import cache from django.core.exceptions import ValidationError +from django.core.files.base import ContentFile +from django.core.files.storage import default_storage from django.core.files.uploadedfile import SimpleUploadedFile from django.test import Client, TestCase from django.test.utils import override_settings @@ -18,13 +20,16 @@ from django.urls import reverse import PIL +from common.settings import get_global_setting, set_global_setting from InvenTree.helpers import str2bool from InvenTree.unit_test import InvenTreeAPITestCase, InvenTreeTestCase, PluginMixin +from part.models import Part from plugin import registry from plugin.models import NotificationUserSetting from .api import WebhookView from .models import ( + Attachment, ColorTheme, CustomUnit, InvenTreeSetting, @@ -40,6 +45,131 @@ from .models import ( CONTENT_TYPE_JSON = 'application/json' +class AttachmentTest(InvenTreeAPITestCase): + """Unit tests for the 'Attachment' model.""" + + fixtures = ['part', 'category', 'location'] + + def generate_file(self, fn: str): + """Generate an attachment file object.""" + file_object = io.StringIO('Some dummy data') + file_object.seek(0) + + return ContentFile(file_object.getvalue(), fn) + + def test_filename_validation(self): + """Test that the filename validation works as expected. + + The django file-upload mechanism should sanitize filenames correctly. + """ + part = Part.objects.first() + + filenames = { + 'test.txt': 'test.txt', + 'r####at.mp4': 'rat.mp4', + '../../../win32.dll': 'win32.dll', + 'ABC!@#$%^&&&&&&&)-XYZ-(**&&&\\/QqQ.sqlite': 'QqQ.sqlite', + '/var/log/inventree.log': 'inventree.log', + 'c:\\Users\\admin\\passwd.txt': 'cUsersadminpasswd.txt', + '8&&&8.txt': '88.txt', + } + + for fn, expected in filenames.items(): + attachment = Attachment.objects.create( + attachment=self.generate_file(fn), + comment=f'Testing filename: {fn}', + model_type='part', + model_id=part.pk, + ) + + expected_path = f'attachments/part/{part.pk}/{expected}' + self.assertEqual(attachment.attachment.name, expected_path) + self.assertEqual(attachment.file_size, 15) + + self.assertEqual(part.attachments.count(), len(filenames.keys())) + + # Delete any attachments after the test is completed + for attachment in part.attachments.all(): + path = attachment.attachment.name + attachment.delete() + + # Remove uploaded files to prevent them sticking around + if default_storage.exists(path): + default_storage.delete(path) + + self.assertEqual( + Attachment.objects.filter(model_type='part', model_id=part.pk).count(), 0 + ) + + def test_mixin(self): + """Test that the mixin class works as expected.""" + part = Part.objects.first() + + self.assertEqual(part.attachments.count(), 0) + + part.create_attachment( + attachment=self.generate_file('test.txt'), comment='Hello world' + ) + + self.assertEqual(part.attachments.count(), 1) + + attachment = part.attachments.first() + + self.assertEqual(attachment.comment, 'Hello world') + self.assertIn(f'attachments/part/{part.pk}/test', attachment.attachment.name) + + def test_upload_via_api(self): + """Test that we can upload attachments via the API.""" + part = Part.objects.first() + url = reverse('api-attachment-list') + + data = { + 'model_type': 'part', + 'model_id': part.pk, + 'link': 'https://www.google.com', + 'comment': 'Some appropriate comment', + } + + # Start without appropriate permissions + # User must have 'part.change' to upload an attachment against a Part instance + self.logout() + self.user.is_staff = False + self.user.is_superuser = False + self.user.save() + self.clearRoles() + + # Check without login (401) + response = self.post(url, data, expected_code=401) + + self.login() + + response = self.post(url, data, expected_code=403) + + self.assertIn( + 'User does not have permission to create or edit attachments for this model', + str(response.data['detail']), + ) + + # Add the required permission + self.assignRole('part.change') + + # Upload should now work! + response = self.post(url, data, expected_code=201) + + # Try to delete the attachment via API (should fail) + attachment = part.attachments.first() + url = reverse('api-attachment-detail', kwargs={'pk': attachment.pk}) + response = self.delete(url, expected_code=403) + self.assertIn( + 'User does not have permission to delete this attachment', + str(response.data['detail']), + ) + + # Assign 'delete' permission to 'part' model + self.assignRole('part.delete') + response = self.delete(url, expected_code=204) + + class SettingsTest(InvenTreeTestCase): """Tests for the 'settings' model.""" @@ -273,13 +403,19 @@ class SettingsTest(InvenTreeTestCase): print(f"run_settings_check failed for user setting '{key}'") raise exc - @override_settings(SITE_URL=None) + @override_settings(SITE_URL=None, PLUGIN_TESTING=True, PLUGIN_TESTING_SETUP=True) def test_defaults(self): """Populate the settings with default values.""" + N = len(InvenTreeSetting.SETTINGS.keys()) + for key in InvenTreeSetting.SETTINGS.keys(): value = InvenTreeSetting.get_setting_default(key) - InvenTreeSetting.set_setting(key, value, self.user) + try: + InvenTreeSetting.set_setting(key, value, change_user=self.user) + except Exception as exc: + print(f"test_defaults: Failed to set default value for setting '{key}'") + raise exc self.assertEqual(value, InvenTreeSetting.get_setting(key)) @@ -287,11 +423,6 @@ class SettingsTest(InvenTreeTestCase): setting = InvenTreeSetting.get_setting_object(key) if setting.is_bool(): - if setting.default_value in ['', None]: - raise ValueError( - f'Default value for boolean setting {key} not provided' - ) # pragma: no cover - if setting.default_value not in [True, False]: raise ValueError( f'Non-boolean default value specified for {key}' @@ -975,17 +1106,13 @@ class CommonTest(InvenTreeAPITestCase): from plugin import registry # set flag true - common.models.InvenTreeSetting.set_setting( - 'SERVER_RESTART_REQUIRED', True, None - ) + set_global_setting('SERVER_RESTART_REQUIRED', True, None) # reload the app registry.reload_plugins() # now it should be false again - self.assertFalse( - common.models.InvenTreeSetting.get_setting('SERVER_RESTART_REQUIRED') - ) + self.assertFalse(get_global_setting('SERVER_RESTART_REQUIRED')) def test_config_api(self): """Test config URLs.""" diff --git a/src/backend/InvenTree/common/validators.py b/src/backend/InvenTree/common/validators.py index 36c66c7f12..a806e6cc0d 100644 --- a/src/backend/InvenTree/common/validators.py +++ b/src/backend/InvenTree/common/validators.py @@ -5,7 +5,45 @@ import re from django.core.exceptions import ValidationError from django.utils.translation import gettext_lazy as _ -import InvenTree.helpers_model +from common.settings import get_global_setting + + +def attachment_model_types(): + """Return a list of valid attachment model choices.""" + import InvenTree.models + + return list( + InvenTree.helpers_model.getModelsWithMixin( + InvenTree.models.InvenTreeAttachmentMixin + ) + ) + + +def attachment_model_options(): + """Return a list of options for models which support attachments.""" + return [ + (model.__name__.lower(), model._meta.verbose_name) + for model in attachment_model_types() + ] + + +def attachment_model_class_from_label(label: str): + """Return the model class for the given label.""" + if not label: + raise ValidationError(_('No attachment model type provided')) + + for model in attachment_model_types(): + if model.__name__.lower() == label.lower(): + return model + + raise ValidationError(_('Invalid attachment model type') + f": '{label}'") + + +def validate_attachment_model_type(value): + """Ensure that the provided attachment model is valid.""" + model_names = [el[0] for el in attachment_model_options()] + if value not in model_names: + raise ValidationError(f'Model type does not support attachments') def validate_notes_model_type(value): @@ -13,6 +51,7 @@ def validate_notes_model_type(value): The provided value must map to a model which implements the 'InvenTreeNotesMixin'. """ + import InvenTree.helpers_model import InvenTree.models if not value: @@ -31,11 +70,9 @@ def validate_notes_model_type(value): def validate_decimal_places_min(value): """Validator for PRICING_DECIMAL_PLACES_MIN setting.""" - from common.models import InvenTreeSetting - try: value = int(value) - places_max = int(InvenTreeSetting.get_setting('PRICING_DECIMAL_PLACES')) + places_max = int(get_global_setting('PRICING_DECIMAL_PLACES', create=False)) except Exception: return @@ -45,11 +82,9 @@ def validate_decimal_places_min(value): def validate_decimal_places_max(value): """Validator for PRICING_DECIMAL_PLACES_MAX setting.""" - from common.models import InvenTreeSetting - try: value = int(value) - places_min = int(InvenTreeSetting.get_setting('PRICING_DECIMAL_PLACES_MIN')) + places_min = int(get_global_setting('PRICING_DECIMAL_PLACES_MIN', create=False)) except Exception: return diff --git a/src/backend/InvenTree/company/admin.py b/src/backend/InvenTree/company/admin.py index 7caf7f3b16..93ad536b91 100644 --- a/src/backend/InvenTree/company/admin.py +++ b/src/backend/InvenTree/company/admin.py @@ -14,7 +14,6 @@ from .models import ( Company, Contact, ManufacturerPart, - ManufacturerPartAttachment, ManufacturerPartParameter, SupplierPart, SupplierPriceBreak, @@ -120,15 +119,6 @@ class ManufacturerPartAdmin(ImportExportModelAdmin): autocomplete_fields = ('part', 'manufacturer') -@admin.register(ManufacturerPartAttachment) -class ManufacturerPartAttachmentAdmin(ImportExportModelAdmin): - """Admin class for ManufacturerPartAttachment model.""" - - list_display = ('manufacturer_part', 'attachment', 'comment') - - autocomplete_fields = ('manufacturer_part',) - - class ManufacturerPartParameterResource(InvenTreeResource): """Class for managing ManufacturerPartParameter data import/export.""" diff --git a/src/backend/InvenTree/company/api.py b/src/backend/InvenTree/company/api.py index aea8d5dc5e..de5118d805 100644 --- a/src/backend/InvenTree/company/api.py +++ b/src/backend/InvenTree/company/api.py @@ -7,7 +7,7 @@ from django.utils.translation import gettext_lazy as _ from django_filters import rest_framework as rest_filters import part.models -from InvenTree.api import AttachmentMixin, ListCreateDestroyAPIView, MetadataView +from InvenTree.api import ListCreateDestroyAPIView, MetadataView from InvenTree.filters import ( ORDER_FILTER, SEARCH_ORDER_FILTER, @@ -19,20 +19,16 @@ from InvenTree.mixins import ListCreateAPI, RetrieveUpdateDestroyAPI from .models import ( Address, Company, - CompanyAttachment, Contact, ManufacturerPart, - ManufacturerPartAttachment, ManufacturerPartParameter, SupplierPart, SupplierPriceBreak, ) from .serializers import ( AddressSerializer, - CompanyAttachmentSerializer, CompanySerializer, ContactSerializer, - ManufacturerPartAttachmentSerializer, ManufacturerPartParameterSerializer, ManufacturerPartSerializer, SupplierPartSerializer, @@ -88,22 +84,6 @@ class CompanyDetail(RetrieveUpdateDestroyAPI): return queryset -class CompanyAttachmentList(AttachmentMixin, ListCreateDestroyAPIView): - """API endpoint for listing, creating and bulk deleting a CompanyAttachment.""" - - queryset = CompanyAttachment.objects.all() - serializer_class = CompanyAttachmentSerializer - - filterset_fields = ['company'] - - -class CompanyAttachmentDetail(AttachmentMixin, RetrieveUpdateDestroyAPI): - """Detail endpoint for CompanyAttachment model.""" - - queryset = CompanyAttachment.objects.all() - serializer_class = CompanyAttachmentSerializer - - class ContactList(ListCreateDestroyAPIView): """API endpoint for list view of Company model.""" @@ -227,22 +207,6 @@ class ManufacturerPartDetail(RetrieveUpdateDestroyAPI): serializer_class = ManufacturerPartSerializer -class ManufacturerPartAttachmentList(AttachmentMixin, ListCreateDestroyAPIView): - """API endpoint for listing, creating and bulk deleting a ManufacturerPartAttachment (file upload).""" - - queryset = ManufacturerPartAttachment.objects.all() - serializer_class = ManufacturerPartAttachmentSerializer - - filterset_fields = ['manufacturer_part'] - - -class ManufacturerPartAttachmentDetail(AttachmentMixin, RetrieveUpdateDestroyAPI): - """Detail endpooint for ManufacturerPartAttachment model.""" - - queryset = ManufacturerPartAttachment.objects.all() - serializer_class = ManufacturerPartAttachmentSerializer - - class ManufacturerPartParameterFilter(rest_filters.FilterSet): """Custom filterset for the ManufacturerPartParameterList API endpoint.""" @@ -509,22 +473,6 @@ class SupplierPriceBreakDetail(RetrieveUpdateDestroyAPI): manufacturer_part_api_urls = [ - # Base URL for ManufacturerPartAttachment API endpoints - path( - 'attachment/', - include([ - path( - '/', - ManufacturerPartAttachmentDetail.as_view(), - name='api-manufacturer-part-attachment-detail', - ), - path( - '', - ManufacturerPartAttachmentList.as_view(), - name='api-manufacturer-part-attachment-list', - ), - ]), - ), path( 'parameter/', include([ @@ -611,19 +559,6 @@ company_api_urls = [ path('', CompanyDetail.as_view(), name='api-company-detail'), ]), ), - path( - 'attachment/', - include([ - path( - '/', - CompanyAttachmentDetail.as_view(), - name='api-company-attachment-detail', - ), - path( - '', CompanyAttachmentList.as_view(), name='api-company-attachment-list' - ), - ]), - ), path( 'contact/', include([ diff --git a/src/backend/InvenTree/company/migrations/0001_initial.py b/src/backend/InvenTree/company/migrations/0001_initial.py index c2de9ed453..cfc73bea20 100644 --- a/src/backend/InvenTree/company/migrations/0001_initial.py +++ b/src/backend/InvenTree/company/migrations/0001_initial.py @@ -31,6 +31,9 @@ class Migration(migrations.Migration): ('is_customer', models.BooleanField(default=False, help_text='Do you sell items to this company?')), ('is_supplier', models.BooleanField(default=True, help_text='Do you purchase items from this company?')), ], + options={ + 'verbose_name': 'Company', + } ), migrations.CreateModel( name='Contact', @@ -60,6 +63,7 @@ class Migration(migrations.Migration): ], options={ 'db_table': 'part_supplierpart', + 'verbose_name': 'Supplier Part', }, ), migrations.CreateModel( diff --git a/src/backend/InvenTree/company/migrations/0023_auto_20200808_0715.py b/src/backend/InvenTree/company/migrations/0023_auto_20200808_0715.py index 22097e8e2b..d184108c9f 100644 --- a/src/backend/InvenTree/company/migrations/0023_auto_20200808_0715.py +++ b/src/backend/InvenTree/company/migrations/0023_auto_20200808_0715.py @@ -12,6 +12,6 @@ class Migration(migrations.Migration): operations = [ migrations.AlterModelOptions( name='company', - options={'ordering': ['name']}, + options={'ordering': ['name'], 'verbose_name': 'Company'}, ), ] diff --git a/src/backend/InvenTree/company/migrations/0034_manufacturerpart.py b/src/backend/InvenTree/company/migrations/0034_manufacturerpart.py index 2e8a8bf82f..f50919d59f 100644 --- a/src/backend/InvenTree/company/migrations/0034_manufacturerpart.py +++ b/src/backend/InvenTree/company/migrations/0034_manufacturerpart.py @@ -22,6 +22,7 @@ class Migration(migrations.Migration): ], options={ 'unique_together': {('part', 'manufacturer', 'MPN')}, + 'verbose_name': 'Manufacturer Part', }, ), ] diff --git a/src/backend/InvenTree/company/migrations/0041_alter_company_options.py b/src/backend/InvenTree/company/migrations/0041_alter_company_options.py index 40849eed1d..e6b1bed978 100644 --- a/src/backend/InvenTree/company/migrations/0041_alter_company_options.py +++ b/src/backend/InvenTree/company/migrations/0041_alter_company_options.py @@ -12,6 +12,6 @@ class Migration(migrations.Migration): operations = [ migrations.AlterModelOptions( name='company', - options={'ordering': ['name'], 'verbose_name_plural': 'Companies'}, + options={'ordering': ['name'], 'verbose_name': 'Company', 'verbose_name_plural': 'Companies'}, ), ] diff --git a/src/backend/InvenTree/company/migrations/0043_manufacturerpartattachment.py b/src/backend/InvenTree/company/migrations/0043_manufacturerpartattachment.py index fe526992b0..a0152385eb 100644 --- a/src/backend/InvenTree/company/migrations/0043_manufacturerpartattachment.py +++ b/src/backend/InvenTree/company/migrations/0043_manufacturerpartattachment.py @@ -19,7 +19,7 @@ class Migration(migrations.Migration): name='ManufacturerPartAttachment', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('attachment', models.FileField(blank=True, help_text='Select file to attach', null=True, upload_to=InvenTree.models.rename_attachment, verbose_name='Attachment')), + ('attachment', models.FileField(blank=True, help_text='Select file to attach', null=True, upload_to='attachments', verbose_name='Attachment')), ('link', InvenTree.fields.InvenTreeURLField(blank=True, help_text='Link to external URL', null=True, verbose_name='Link')), ('comment', models.CharField(blank=True, help_text='File comment', max_length=100, verbose_name='Comment')), ('upload_date', models.DateField(auto_now_add=True, null=True, verbose_name='upload date')), diff --git a/src/backend/InvenTree/company/migrations/0054_companyattachment.py b/src/backend/InvenTree/company/migrations/0054_companyattachment.py index 44a415fce3..4996976ac1 100644 --- a/src/backend/InvenTree/company/migrations/0054_companyattachment.py +++ b/src/backend/InvenTree/company/migrations/0054_companyattachment.py @@ -19,7 +19,7 @@ class Migration(migrations.Migration): name='CompanyAttachment', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('attachment', models.FileField(blank=True, help_text='Select file to attach', null=True, upload_to=InvenTree.models.rename_attachment, verbose_name='Attachment')), + ('attachment', models.FileField(blank=True, help_text='Select file to attach', null=True, upload_to='attachments', verbose_name='Attachment')), ('link', InvenTree.fields.InvenTreeURLField(blank=True, help_text='Link to external URL', null=True, verbose_name='Link')), ('comment', models.CharField(blank=True, help_text='File comment', max_length=100, verbose_name='Comment')), ('upload_date', models.DateField(auto_now_add=True, null=True, verbose_name='upload date')), diff --git a/src/backend/InvenTree/company/migrations/0070_remove_manufacturerpartattachment_manufacturer_part_and_more.py b/src/backend/InvenTree/company/migrations/0070_remove_manufacturerpartattachment_manufacturer_part_and_more.py new file mode 100644 index 0000000000..d0bec93f7d --- /dev/null +++ b/src/backend/InvenTree/company/migrations/0070_remove_manufacturerpartattachment_manufacturer_part_and_more.py @@ -0,0 +1,24 @@ +# Generated by Django 4.2.12 on 2024-06-09 09:02 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('build', '0050_auto_20240508_0138'), + ('common', '0026_auto_20240608_1238'), + ('company', '0069_company_active'), + ('order', '0099_alter_salesorder_status'), + ('part', '0123_parttesttemplate_choices'), + ('stock', '0110_alter_stockitemtestresult_finished_datetime_and_more') + ] + + operations = [ + migrations.DeleteModel( + name='CompanyAttachment', + ), + migrations.DeleteModel( + name='ManufacturerPartAttachment', + ), + ] diff --git a/src/backend/InvenTree/company/models.py b/src/backend/InvenTree/company/models.py index 30b2dc5789..8683be248e 100644 --- a/src/backend/InvenTree/company/models.py +++ b/src/backend/InvenTree/company/models.py @@ -60,7 +60,9 @@ def rename_company_image(instance, filename): class Company( - InvenTree.models.InvenTreeNotesMixin, InvenTree.models.InvenTreeMetadataModel + InvenTree.models.InvenTreeAttachmentMixin, + InvenTree.models.InvenTreeNotesMixin, + InvenTree.models.InvenTreeMetadataModel, ): """A Company object represents an external company. @@ -95,7 +97,8 @@ class Company( constraints = [ UniqueConstraint(fields=['name', 'email'], name='unique_name_email_pair') ] - verbose_name_plural = 'Companies' + verbose_name = _('Company') + verbose_name_plural = _('Companies') @staticmethod def get_api_url(): @@ -255,26 +258,6 @@ class Company( ).distinct() -class CompanyAttachment(InvenTree.models.InvenTreeAttachment): - """Model for storing file or URL attachments against a Company object.""" - - @staticmethod - def get_api_url(): - """Return the API URL associated with this model.""" - return reverse('api-company-attachment-list') - - def getSubdir(self): - """Return the subdirectory where these attachments are uploaded.""" - return os.path.join('company_files', str(self.company.pk)) - - company = models.ForeignKey( - Company, - on_delete=models.CASCADE, - verbose_name=_('Company'), - related_name='attachments', - ) - - 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. @@ -460,7 +443,9 @@ class Address(InvenTree.models.InvenTreeModel): class ManufacturerPart( - InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models.InvenTreeMetadataModel + InvenTree.models.InvenTreeAttachmentMixin, + 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. @@ -475,6 +460,7 @@ class ManufacturerPart( class Meta: """Metaclass defines extra model options.""" + verbose_name = _('Manufacturer Part') unique_together = ('part', 'manufacturer', 'MPN') @staticmethod @@ -563,26 +549,6 @@ class ManufacturerPart( return s -class ManufacturerPartAttachment(InvenTree.models.InvenTreeAttachment): - """Model for storing file attachments against a ManufacturerPart object.""" - - @staticmethod - def get_api_url(): - """Return the API URL associated with the ManufacturerPartAttachment model.""" - return reverse('api-manufacturer-part-attachment-list') - - def getSubdir(self): - """Return the subdirectory where attachment files for the ManufacturerPart model are located.""" - return os.path.join('manufacturer_part_files', str(self.manufacturer_part.id)) - - manufacturer_part = models.ForeignKey( - ManufacturerPart, - on_delete=models.CASCADE, - verbose_name=_('Manufacturer Part'), - related_name='attachments', - ) - - class ManufacturerPartParameter(InvenTree.models.InvenTreeModel): """A ManufacturerPartParameter represents a key:value parameter for a MnaufacturerPart. @@ -679,6 +645,8 @@ class SupplierPart( unique_together = ('part', 'supplier', 'SKU') + verbose_name = _('Supplier Part') + # This model was moved from the 'Part' app db_table = 'part_supplierpart' diff --git a/src/backend/InvenTree/company/serializers.py b/src/backend/InvenTree/company/serializers.py index c0425c68db..453ff21b42 100644 --- a/src/backend/InvenTree/company/serializers.py +++ b/src/backend/InvenTree/company/serializers.py @@ -11,7 +11,6 @@ from taggit.serializers import TagListSerializerField import part.filters from InvenTree.serializers import ( - InvenTreeAttachmentSerializer, InvenTreeCurrencySerializer, InvenTreeDecimalField, InvenTreeImageSerializerField, @@ -26,10 +25,8 @@ from part.serializers import PartBriefSerializer from .models import ( Address, Company, - CompanyAttachment, Contact, ManufacturerPart, - ManufacturerPartAttachment, ManufacturerPartParameter, SupplierPart, SupplierPriceBreak, @@ -186,17 +183,6 @@ class CompanySerializer(NotesFieldMixin, RemoteImageMixin, InvenTreeModelSeriali return self.instance -class CompanyAttachmentSerializer(InvenTreeAttachmentSerializer): - """Serializer for the CompanyAttachment class.""" - - class Meta: - """Metaclass defines serializer options.""" - - model = CompanyAttachment - - fields = InvenTreeAttachmentSerializer.attachment_fields(['company']) - - class ContactSerializer(InvenTreeModelSerializer): """Serializer class for the Contact model.""" @@ -260,17 +246,6 @@ class ManufacturerPartSerializer(InvenTreeTagModelSerializer): ) -class ManufacturerPartAttachmentSerializer(InvenTreeAttachmentSerializer): - """Serializer for the ManufacturerPartAttachment class.""" - - class Meta: - """Metaclass options.""" - - model = ManufacturerPartAttachment - - fields = InvenTreeAttachmentSerializer.attachment_fields(['manufacturer_part']) - - class ManufacturerPartParameterSerializer(InvenTreeModelSerializer): """Serializer for the ManufacturerPartParameter model.""" diff --git a/src/backend/InvenTree/company/templates/company/detail.html b/src/backend/InvenTree/company/templates/company/detail.html index afc6a813ea..d9fbf521e7 100644 --- a/src/backend/InvenTree/company/templates/company/detail.html +++ b/src/backend/InvenTree/company/templates/company/detail.html @@ -244,17 +244,7 @@ {{ block.super }} onPanelLoad("attachments", function() { - loadAttachmentTable('{% url "api-company-attachment-list" %}', { - filters: { - company: {{ company.pk }}, - }, - fields: { - company: { - value: {{ company.pk }}, - hidden: true - } - } - }); + loadAttachmentTable('company', {{ company.pk }}); }); // Callback function when the 'contacts' panel is loaded diff --git a/src/backend/InvenTree/company/templates/company/manufacturer_part.html b/src/backend/InvenTree/company/templates/company/manufacturer_part.html index 08e6f38568..a4676a9086 100644 --- a/src/backend/InvenTree/company/templates/company/manufacturer_part.html +++ b/src/backend/InvenTree/company/templates/company/manufacturer_part.html @@ -177,17 +177,7 @@ src="{% static 'img/blank_image.png' %}" {{ block.super }} onPanelLoad("attachments", function() { - loadAttachmentTable('{% url "api-manufacturer-part-attachment-list" %}', { - filters: { - manufacturer_part: {{ part.pk }}, - }, - fields: { - manufacturer_part: { - value: {{ part.pk }}, - hidden: true - } - } - }); + loadAttachmentTable('manufacturerpart', {{ part.pk }}); }); $('#parameter-create').click(function() { diff --git a/src/backend/InvenTree/company/test_migrations.py b/src/backend/InvenTree/company/test_migrations.py index bb5b6f27f9..305eaf6031 100644 --- a/src/backend/InvenTree/company/test_migrations.py +++ b/src/backend/InvenTree/company/test_migrations.py @@ -45,14 +45,7 @@ class TestManufacturerField(MigratorTestCase): SupplierPart = self.old_state.apps.get_model('company', 'supplierpart') # Create an initial part - part = Part.objects.create( - name='Screw', - description='A single screw', - level=0, - tree_id=0, - lft=0, - rght=0, - ) + part = Part.objects.create(name='Screw', description='A single screw') # Create a company to act as the supplier supplier = Company.objects.create( diff --git a/src/backend/InvenTree/config_template.yaml b/src/backend/InvenTree/config_template.yaml index d1b13a5e1c..a5b8495187 100644 --- a/src/backend/InvenTree/config_template.yaml +++ b/src/backend/InvenTree/config_template.yaml @@ -26,7 +26,7 @@ database: # Set debug to False to run in production mode, or use the environment variable INVENTREE_DEBUG debug: True -# Set to False to disable the admin interfac, or use the environment variable INVENTREE_ADMIN_ENABLED +# Set to False to disable the admin interface, or use the environment variable INVENTREE_ADMIN_ENABLED #admin_enabled: True # Set the admin URL, or use the environment variable INVENTREE_ADMIN_URL diff --git a/src/backend/InvenTree/locale/bg/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/bg/LC_MESSAGES/django.po index dc1a967554..92dc852bcd 100644 --- a/src/backend/InvenTree/locale/bg/LC_MESSAGES/django.po +++ b/src/backend/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-05-31 07:08+0000\n" -"PO-Revision-Date: 2024-05-27 11:54\n" +"POT-Creation-Date: 2024-06-26 03:18+0000\n" +"PO-Revision-Date: 2024-06-26 06:04\n" "Last-Translator: \n" "Language-Team: Bulgarian\n" "Language: bg_BG\n" @@ -21,7 +21,7 @@ msgstr "" msgid "API endpoint not found" msgstr "Не е намерена крайна точка на API" -#: InvenTree/api.py:536 +#: InvenTree/api.py:520 msgid "User does not have permission to view this model" msgstr "Потребителя няма нужното разрешение, за да вижда този модел" @@ -52,25 +52,25 @@ msgstr "Зададено е недопустимо количество ({exc})" msgid "Error details can be found in the admin panel" msgstr "Подробности за грешката могат да се намерят в администраторския панел" -#: InvenTree/fields.py:139 +#: InvenTree/fields.py:136 msgid "Enter date" msgstr "Въведи дата" -#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 -#: build/serializers.py:531 build/templates/build/sidebar.html:21 -#: company/models.py:849 company/templates/company/sidebar.html:37 -#: order/models.py:1332 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:205 InvenTree/models.py:918 build/serializers.py:452 +#: build/serializers.py:530 build/templates/build/sidebar.html:21 +#: company/models.py:817 company/templates/company/sidebar.html:37 +#: order/models.py:1296 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:3218 part/templates/part/part_sidebar.html:63 +#: part/models.py:3183 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_report.html:172 -#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 -#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 -#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 -#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:230 stock/models.py:2309 stock/models.py:2431 +#: stock/serializers.py:632 stock/serializers.py:790 stock/serializers.py:886 +#: stock/serializers.py:936 stock/serializers.py:1239 stock/serializers.py:1328 +#: stock/serializers.py:1493 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1080 +#: templates/js/translated/part.js:1081 #: templates/js/translated/purchase_order.js:2200 #: templates/js/translated/return_order.js:775 #: templates/js/translated/sales_order.js:1103 @@ -120,15 +120,15 @@ msgstr "Потвърждение на електронната поща" msgid "You must type the same email each time." msgstr "Трябва ла въведете една и съща електронна поща." -#: InvenTree/forms.py:253 InvenTree/forms.py:261 +#: InvenTree/forms.py:248 InvenTree/forms.py:256 msgid "The provided primary email address is not valid." msgstr "Въведената основна електронна поща е невалидна." -#: InvenTree/forms.py:268 +#: InvenTree/forms.py:263 msgid "The provided email domain is not approved." msgstr "Въведеният домейн на електронната поща не е утвърден." -#: InvenTree/forms.py:395 +#: InvenTree/forms.py:390 msgid "Registration is disabled." msgstr "Регистрацията е деактивирана." @@ -171,35 +171,35 @@ msgstr "" msgid "Remove HTML tags from this value" msgstr "Премахнете HTML маркерите от тази стойност" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Connection error" msgstr "Грешка при съединението" -#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 msgid "Server responded with invalid status code" msgstr "Сървърът отговари с невалиден статусен код" -#: InvenTree/helpers_model.py:158 +#: InvenTree/helpers_model.py:148 msgid "Exception occurred" msgstr "Възникна изключение" -#: InvenTree/helpers_model.py:168 +#: InvenTree/helpers_model.py:158 msgid "Server responded with invalid Content-Length value" msgstr "Сървърът отговори с невалидна стойност за дължината на съдържанието (Content-Length)" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:161 msgid "Image size is too large" msgstr "Размерът на изображението е твърде голям" -#: InvenTree/helpers_model.py:183 +#: InvenTree/helpers_model.py:173 msgid "Image download exceeded maximum size" msgstr "Сваляното на изображение превиши максималния размер" -#: InvenTree/helpers_model.py:188 +#: InvenTree/helpers_model.py:178 msgid "Remote server returned empty response" msgstr "Отдалеченият сървър върна празен отговор" -#: InvenTree/helpers_model.py:196 +#: InvenTree/helpers_model.py:186 msgid "Supplied URL is not a valid image file" msgstr "" @@ -296,46 +296,50 @@ msgid "Portuguese (Brazilian)" msgstr "Португалски (Бразилия)" #: InvenTree/locales.py:41 +msgid "Romanian" +msgstr "" + +#: InvenTree/locales.py:42 msgid "Russian" msgstr "Руски" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:43 msgid "Slovak" msgstr "" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:44 msgid "Slovenian" msgstr "Словенски" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:45 msgid "Serbian" msgstr "" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:46 msgid "Swedish" msgstr "Шведски" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:47 msgid "Thai" msgstr "Тайландски" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:48 msgid "Turkish" msgstr "Турски" -#: InvenTree/locales.py:48 +#: InvenTree/locales.py:49 msgid "Ukrainian" msgstr "" -#: InvenTree/locales.py:49 +#: InvenTree/locales.py:50 msgid "Vietnamese" msgstr "Виетнамски" -#: InvenTree/locales.py:50 +#: InvenTree/locales.py:51 msgid "Chinese (Simplified)" msgstr "Китайски (опростен)" -#: InvenTree/locales.py:51 +#: InvenTree/locales.py:52 msgid "Chinese (Traditional)" msgstr "Китайски (традиционен)" @@ -344,153 +348,65 @@ msgstr "Китайски (традиционен)" msgid "[{site_name}] Log in to the app" msgstr "" -#: InvenTree/magic_login.py:38 company/models.py:133 +#: InvenTree/magic_login.py:38 company/models.py:136 #: company/templates/company/company_base.html:138 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:677 msgid "Email" msgstr "" -#: InvenTree/models.py:107 +#: InvenTree/models.py:105 msgid "Error running plugin validation" msgstr "" -#: InvenTree/models.py:176 +#: InvenTree/models.py:174 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:182 +#: InvenTree/models.py:180 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:183 +#: InvenTree/models.py:181 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:413 +#: InvenTree/models.py:408 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:420 +#: InvenTree/models.py:415 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:426 +#: InvenTree/models.py:421 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:437 +#: InvenTree/models.py:432 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:445 +#: InvenTree/models.py:440 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:476 +#: InvenTree/models.py:471 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:550 -msgid "Missing file" -msgstr "" - -#: InvenTree/models.py:551 -msgid "Missing external link" -msgstr "" - -#: InvenTree/models.py:572 stock/models.py:2437 -#: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:326 -msgid "Attachment" -msgstr "" - -#: InvenTree/models.py:573 -msgid "Select file to attach" -msgstr "" - -#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:831 -#: order/models.py:303 order/models.py:1337 order/models.py:1753 -#: part/admin.py:55 part/models.py:962 -#: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_report.html:164 -#: stock/admin.py:225 templates/js/translated/company.js:1319 -#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2455 -#: templates/js/translated/purchase_order.js:2040 -#: templates/js/translated/purchase_order.js:2204 -#: templates/js/translated/return_order.js:779 -#: templates/js/translated/sales_order.js:1092 -#: templates/js/translated/sales_order.js:2023 -msgid "Link" -msgstr "" - -#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 -#: stock/models.py:836 -msgid "Link to external URL" -msgstr "" - -#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:341 -msgid "Comment" -msgstr "" - -#: InvenTree/models.py:589 -msgid "File comment" -msgstr "" - -#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 -#: common/models.py:2518 common/models.py:2742 common/models.py:2743 -#: common/models.py:2988 common/models.py:2989 part/models.py:3228 -#: part/models.py:3315 part/models.py:3408 part/models.py:3436 -#: plugin/models.py:259 plugin/models.py:260 -#: report/templates/report/inventree_test_report.html:105 -#: templates/js/translated/stock.js:3036 users/models.py:111 -msgid "User" -msgstr "Потребител" - -#: InvenTree/models.py:602 -msgid "upload date" -msgstr "" - -#: InvenTree/models.py:624 -msgid "Filename must not be empty" -msgstr "" - -#: InvenTree/models.py:635 -msgid "Invalid attachment directory" -msgstr "" - -#: InvenTree/models.py:665 -#, python-brace-format -msgid "Filename contains illegal character '{c}'" -msgstr "" - -#: InvenTree/models.py:668 -msgid "Filename missing extension" -msgstr "" - -#: InvenTree/models.py:677 -msgid "Attachment with this filename already exists" -msgstr "" - -#: InvenTree/models.py:684 -msgid "Error renaming file" -msgstr "" - -#: InvenTree/models.py:860 +#: InvenTree/models.py:719 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:877 +#: InvenTree/models.py:736 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 -#: common/serializers.py:403 company/models.py:614 machine/models.py:24 -#: part/models.py:898 part/models.py:3659 plugin/models.py:50 -#: report/models.py:149 stock/models.py:72 +#: InvenTree/models.py:766 common/models.py:2623 common/models.py:3036 +#: common/serializers.py:408 company/models.py:580 machine/models.py:24 +#: part/models.py:891 part/models.py:3639 plugin/models.py:51 +#: report/models.py:150 stock/models.py:73 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:83 @@ -501,25 +417,25 @@ msgstr "" #: templates/js/translated/company.js:724 #: templates/js/translated/company.js:913 #: templates/js/translated/company.js:1165 -#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 -#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1187 +#: templates/js/translated/part.js:1475 templates/js/translated/part.js:1611 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "" -#: InvenTree/models.py:913 build/models.py:218 -#: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:523 company/models.py:840 +#: InvenTree/models.py:772 build/models.py:220 +#: build/templates/build/detail.html:24 common/models.py:138 +#: company/models.py:509 company/models.py:808 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 order/models.py:289 -#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 -#: part/models.py:3674 part/templates/part/category.html:82 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:914 +#: part/models.py:3654 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:155 -#: report/models.py:509 report/models.py:535 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 #: report/templates/report/inventree_build_order_report.html:117 -#: stock/admin.py:55 stock/models.py:78 stock/templates/stock/location.html:125 +#: stock/admin.py:54 stock/models.py:79 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 @@ -528,10 +444,10 @@ msgstr "" #: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 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:2354 -#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1239 +#: templates/js/translated/part.js:1484 templates/js/translated/part.js:1622 +#: templates/js/translated/part.js:1959 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2897 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1706 #: templates/js/translated/purchase_order.js:1849 @@ -544,149 +460,141 @@ msgstr "" msgid "Description" msgstr "" -#: InvenTree/models.py:914 stock/models.py:79 +#: InvenTree/models.py:773 stock/models.py:80 msgid "Description (optional)" msgstr "" -#: InvenTree/models.py:923 -msgid "parent" -msgstr "родител" - -#: InvenTree/models.py:929 templates/js/translated/part.js:2793 +#: InvenTree/models.py:788 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "" -#: InvenTree/models.py:1035 +#: InvenTree/models.py:918 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:1064 +#: InvenTree/models.py:947 msgid "Barcode Data" msgstr "" -#: InvenTree/models.py:1065 +#: InvenTree/models.py:948 msgid "Third party barcode data" msgstr "" -#: InvenTree/models.py:1071 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:1072 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:1125 +#: InvenTree/models.py:1008 msgid "Existing barcode found" msgstr "" -#: InvenTree/models.py:1168 +#: InvenTree/models.py:1051 msgid "Server Error" msgstr "" -#: InvenTree/models.py:1169 +#: InvenTree/models.py:1052 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:62 part/models.py:4212 +#: InvenTree/serializers.py:63 part/models.py:4192 msgid "Must be a valid number" msgstr "" -#: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:3036 +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3001 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "" -#: InvenTree/serializers.py:102 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:441 +#: InvenTree/serializers.py:442 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:453 +#: InvenTree/serializers.py:454 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:472 +#: InvenTree/serializers.py:473 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:474 +#: InvenTree/serializers.py:475 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:481 +#: InvenTree/serializers.py:482 msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:542 -msgid "Filename" -msgstr "" - -#: InvenTree/serializers.py:576 +#: InvenTree/serializers.py:540 msgid "Invalid value" msgstr "" -#: InvenTree/serializers.py:596 +#: InvenTree/serializers.py:560 msgid "Data File" msgstr "" -#: InvenTree/serializers.py:597 +#: InvenTree/serializers.py:561 msgid "Select data file for upload" msgstr "" -#: InvenTree/serializers.py:614 +#: InvenTree/serializers.py:578 msgid "Unsupported file type" msgstr "" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:584 msgid "File is too large" msgstr "" -#: InvenTree/serializers.py:641 +#: InvenTree/serializers.py:605 msgid "No columns found in file" msgstr "" -#: InvenTree/serializers.py:644 +#: InvenTree/serializers.py:608 msgid "No data rows found in file" msgstr "" -#: InvenTree/serializers.py:757 +#: InvenTree/serializers.py:721 msgid "No data rows provided" msgstr "" -#: InvenTree/serializers.py:760 +#: InvenTree/serializers.py:724 msgid "No data columns supplied" msgstr "" -#: InvenTree/serializers.py:827 +#: InvenTree/serializers.py:791 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "" -#: InvenTree/serializers.py:836 +#: InvenTree/serializers.py:800 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/serializers.py:859 +#: InvenTree/serializers.py:840 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:860 +#: InvenTree/serializers.py:841 msgid "URL of remote image file" msgstr "" -#: InvenTree/serializers.py:878 +#: InvenTree/serializers.py:859 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/status.py:66 part/serializers.py:1178 +#: InvenTree/status.py:66 part/serializers.py:1174 msgid "Background worker check failed" msgstr "" @@ -698,27 +606,27 @@ msgstr "" msgid "InvenTree system health checks failed" msgstr "" -#: InvenTree/templatetags/inventree_extras.py:183 +#: InvenTree/templatetags/inventree_extras.py:184 msgid "Unknown database" msgstr "" -#: InvenTree/validators.py:31 InvenTree/validators.py:33 +#: InvenTree/validators.py:32 InvenTree/validators.py:34 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:39 +#: InvenTree/validators.py:40 msgid "Not a valid currency code" msgstr "" -#: InvenTree/validators.py:121 InvenTree/validators.py:137 +#: InvenTree/validators.py:118 InvenTree/validators.py:134 msgid "Overage value must not be negative" msgstr "" -#: InvenTree/validators.py:139 +#: InvenTree/validators.py:136 msgid "Overage must not exceed 100%" msgstr "" -#: InvenTree/validators.py:145 +#: InvenTree/validators.py:142 msgid "Invalid value for overage" msgstr "" @@ -750,14 +658,14 @@ msgstr "" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: build/api.py:299 part/models.py:4070 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:300 part/models.py:4084 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4064 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2529 #: templates/js/translated/table_filters.js:186 @@ -778,30 +686,30 @@ msgstr "" msgid "Allocated" msgstr "" -#: build/api.py:311 company/models.py:904 company/serializers.py:383 +#: build/api.py:311 company/models.py:872 company/serializers.py:359 #: 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:2561 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:234 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 -#: templates/js/translated/part.js:699 +#: templates/js/translated/part.js:693 templates/js/translated/part.js:695 +#: templates/js/translated/part.js:700 #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:575 msgid "Available" msgstr "" -#: build/models.py:83 build/templates/build/build_base.html:9 +#: build/models.py:85 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_report.html:105 -#: stock/serializers.py:83 templates/email/build_order_completed.html:16 +#: stock/serializers.py:82 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:2892 msgid "Build Order" msgstr "" -#: build/models.py:84 build/templates/build/build_base.html:13 +#: build/models.py:86 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 @@ -812,25 +720,25 @@ msgstr "" msgid "Build Orders" msgstr "" -#: build/models.py:131 +#: build/models.py:133 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:142 order/models.py:240 +#: build/models.py:144 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "" -#: build/models.py:148 +#: build/models.py:150 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:209 +#: build/models.py:211 msgid "Build Order Reference" msgstr "" -#: build/models.py:210 order/models.py:463 order/models.py:928 -#: order/models.py:1325 order/models.py:2056 part/admin.py:419 -#: part/models.py:4105 part/templates/part/upload_bom.html:54 +#: build/models.py:212 order/models.py:463 order/models.py:926 +#: order/models.py:1289 order/models.py:2020 part/admin.py:411 +#: part/models.py:4085 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_purchase_order_report.html:28 #: report/templates/report/inventree_return_order_report.html:26 @@ -844,27 +752,27 @@ msgstr "" msgid "Reference" msgstr "" -#: build/models.py:221 +#: build/models.py:223 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:229 build/templates/build/build_base.html:183 +#: build/models.py:231 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:230 +#: build/models.py:232 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:235 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 -#: order/models.py:1450 order/models.py:1595 order/models.py:1596 -#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 -#: part/models.py:3191 part/models.py:3335 part/models.py:3358 -#: part/models.py:3379 part/models.py:3401 part/models.py:3511 -#: part/models.py:3807 part/models.py:3963 part/models.py:4056 -#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 +#: build/models.py:237 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1026 order/api.py:805 +#: order/models.py:1414 order/models.py:1559 order/models.py:1560 +#: part/api.py:1494 part/api.py:1788 part/models.py:395 part/models.py:3012 +#: part/models.py:3156 part/models.py:3303 part/models.py:3324 +#: part/models.py:3346 part/models.py:3477 part/models.py:3787 +#: part/models.py:3943 part/models.py:4036 part/models.py:4395 +#: part/serializers.py:1120 part/serializers.py:1726 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -875,8 +783,8 @@ msgstr "" #: report/templates/report/inventree_return_order_report.html:24 #: report/templates/report/inventree_sales_order_report.html:27 #: report/templates/report/inventree_stock_location_report.html:102 -#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 -#: stock/serializers.py:818 templates/InvenTree/search.html:82 +#: stock/serializers.py:109 stock/serializers.py:157 stock/serializers.py:423 +#: stock/serializers.py:820 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 @@ -889,8 +797,8 @@ msgstr "" #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 -#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2323 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:1944 templates/js/translated/part.js:2016 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 #: templates/js/translated/purchase_order.js:751 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1848 @@ -908,107 +816,107 @@ msgstr "" msgid "Part" msgstr "Част" -#: build/models.py:243 +#: build/models.py:245 msgid "Select part to build" msgstr "" -#: build/models.py:248 +#: build/models.py:250 msgid "Sales Order Reference" msgstr "" -#: build/models.py:252 +#: build/models.py:254 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:257 build/serializers.py:1000 +#: build/models.py:259 build/serializers.py:999 #: templates/js/translated/build.js:1731 #: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "" -#: build/models.py:261 +#: build/models.py:263 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:266 +#: build/models.py:268 msgid "Destination Location" msgstr "" -#: build/models.py:270 +#: build/models.py:272 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:274 +#: build/models.py:276 msgid "Build Quantity" msgstr "" -#: build/models.py:277 +#: build/models.py:279 msgid "Number of stock items to build" msgstr "" -#: build/models.py:281 +#: build/models.py:283 msgid "Completed items" msgstr "" -#: build/models.py:283 +#: build/models.py:285 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:287 +#: build/models.py:289 msgid "Build Status" msgstr "" -#: build/models.py:291 +#: build/models.py:293 msgid "Build status code" msgstr "" -#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 -#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 +#: build/models.py:302 build/serializers.py:286 order/serializers.py:580 +#: stock/models.py:838 stock/serializers.py:74 stock/serializers.py:1458 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "" -#: build/models.py:304 build/serializers.py:288 +#: build/models.py:306 build/serializers.py:287 msgid "Batch code for this build output" msgstr "" -#: build/models.py:307 order/models.py:316 order/serializers.py:120 -#: part/models.py:1122 part/templates/part/part_base.html:310 +#: build/models.py:309 order/models.py:316 order/serializers.py:119 +#: part/models.py:1115 part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:338 #: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "" -#: build/models.py:311 +#: build/models.py:313 msgid "Target completion date" msgstr "" -#: build/models.py:312 +#: build/models.py:314 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:315 order/models.py:521 order/models.py:2101 +#: build/models.py:317 order/models.py:521 order/models.py:2065 #: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "" -#: build/models.py:321 +#: build/models.py:323 msgid "completed by" msgstr "" -#: build/models.py:329 templates/js/translated/build.js:2207 +#: build/models.py:331 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "" -#: build/models.py:330 +#: build/models.py:332 msgid "User who issued this build order" msgstr "" -#: build/models.py:338 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:145 +#: build/models.py:340 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:147 #: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:232 part/models.py:1139 +#: order/templates/order/sales_order_base.html:232 part/models.py:1132 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_report.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 @@ -1019,31 +927,36 @@ msgstr "" msgid "Responsible" msgstr "" -#: build/models.py:339 +#: build/models.py:341 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:344 build/templates/build/detail.html:108 +#: build/models.py:346 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:184 -#: part/templates/part/part_base.html:383 stock/models.py:836 +#: part/templates/part/part_base.html:383 stock/models.py:834 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "" -#: build/models.py:349 +#: build/models.py:347 common/models.py:3178 part/models.py:956 +#: stock/models.py:834 +msgid "Link to external URL" +msgstr "" + +#: build/models.py:351 msgid "Build Priority" msgstr "" -#: build/models.py:352 +#: build/models.py:354 msgid "Priority of this build order" msgstr "" -#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: build/models.py:361 common/models.py:131 order/admin.py:18 #: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 #: templates/js/translated/build.js:2144 #: templates/js/translated/purchase_order.js:1710 @@ -1054,65 +967,65 @@ msgstr "" msgid "Project Code" msgstr "" -#: build/models.py:360 +#: build/models.py:362 msgid "Project code for this build order" msgstr "" -#: build/models.py:593 build/models.py:658 +#: build/models.py:595 build/models.py:660 msgid "Failed to offload task to complete build allocations" msgstr "" -#: build/models.py:615 +#: build/models.py:617 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:621 +#: build/models.py:623 msgid "A build order has been completed" msgstr "" -#: build/models.py:847 build/models.py:932 +#: build/models.py:849 build/models.py:934 msgid "No build output specified" msgstr "" -#: build/models.py:850 +#: build/models.py:852 msgid "Build output is already completed" msgstr "" -#: build/models.py:853 +#: build/models.py:855 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 -#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 -#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 -#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 +#: build/models.py:938 build/serializers.py:219 build/serializers.py:268 +#: build/serializers.py:866 order/models.py:559 order/serializers.py:432 +#: order/serializers.py:575 part/serializers.py:1484 part/serializers.py:1884 +#: stock/models.py:677 stock/models.py:1495 stock/serializers.py:603 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:941 build/serializers.py:225 +#: build/models.py:943 build/serializers.py:224 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1001 build/serializers.py:548 +#: build/models.py:1003 build/serializers.py:547 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1352 +#: build/models.py:1344 msgid "Build Order Line Item" msgstr "" -#: build/models.py:1377 +#: build/models.py:1369 msgid "Build object" msgstr "" -#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 -#: build/serializers.py:254 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2539 -#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 -#: part/forms.py:48 part/models.py:3205 part/models.py:4078 +#: build/models.py:1383 build/models.py:1639 build/serializers.py:206 +#: build/serializers.py:253 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2509 +#: order/models.py:1272 order/models.py:1931 order/serializers.py:1327 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3170 part/models.py:4058 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1121,8 +1034,8 @@ msgstr "" #: report/templates/report/inventree_sales_order_report.html:29 #: report/templates/report/inventree_stock_location_report.html:104 #: report/templates/report/inventree_test_report.html:90 -#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 -#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:125 stock/serializers.py:165 stock/serializers.py:594 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1133,8 +1046,8 @@ msgstr "" #: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 #: templates/js/translated/model_renderers.js:236 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:962 +#: templates/js/translated/part.js:1812 templates/js/translated/part.js:3342 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1154,38 +1067,38 @@ msgstr "" msgid "Quantity" msgstr "" -#: build/models.py:1392 +#: build/models.py:1384 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1472 +#: build/models.py:1464 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1481 +#: build/models.py:1473 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1491 order/models.py:1918 +#: build/models.py:1483 order/models.py:1882 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1497 order/models.py:1921 +#: build/models.py:1489 order/models.py:1885 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1503 +#: build/models.py:1495 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1562 +#: build/models.py:1554 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 -#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 -#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: build/models.py:1626 build/serializers.py:846 order/serializers.py:1171 +#: order/serializers.py:1192 stock/models.py:358 stock/serializers.py:91 +#: stock/serializers.py:697 stock/serializers.py:1177 stock/serializers.py:1289 #: stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 @@ -1201,70 +1114,70 @@ msgstr "" msgid "Stock Item" msgstr "" -#: build/models.py:1635 +#: build/models.py:1627 msgid "Source stock item" msgstr "" -#: build/models.py:1648 +#: build/models.py:1640 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1656 +#: build/models.py:1648 msgid "Install into" msgstr "" -#: build/models.py:1657 +#: build/models.py:1649 msgid "Destination stock item" msgstr "" -#: build/serializers.py:157 build/serializers.py:876 +#: build/serializers.py:156 build/serializers.py:875 #: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "" -#: build/serializers.py:169 +#: build/serializers.py:168 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:173 +#: build/serializers.py:172 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:177 +#: build/serializers.py:176 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:188 +#: build/serializers.py:187 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:208 build/serializers.py:255 +#: build/serializers.py:207 build/serializers.py:254 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:276 +#: build/serializers.py:275 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:279 +#: build/serializers.py:278 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:294 order/serializers.py:589 order/serializers.py:1343 -#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:293 order/serializers.py:588 order/serializers.py:1331 +#: stock/serializers.py:614 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:295 +#: build/serializers.py:294 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 -#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 -#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 -#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 -#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 +#: build/serializers.py:299 build/serializers.py:440 build/serializers.py:512 +#: order/serializers.py:564 order/serializers.py:672 order/serializers.py:1656 +#: part/serializers.py:1140 stock/serializers.py:100 stock/serializers.py:625 +#: stock/serializers.py:785 stock/serializers.py:881 stock/serializers.py:1321 +#: stock/serializers.py:1577 stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:1001 #: templates/js/translated/build.js:2372 @@ -1280,54 +1193,54 @@ msgstr "" msgid "Location" msgstr "" -#: build/serializers.py:301 +#: build/serializers.py:300 msgid "Stock location for build output" msgstr "" -#: build/serializers.py:315 +#: build/serializers.py:314 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:316 +#: build/serializers.py:315 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:331 +#: build/serializers.py:330 msgid "Serial numbers must be provided for trackable parts" msgstr "" -#: build/serializers.py:356 stock/api.py:1031 +#: build/serializers.py:355 stock/api.py:1041 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:403 build/serializers.py:465 build/serializers.py:554 +#: build/serializers.py:402 build/serializers.py:464 build/serializers.py:553 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:442 +#: build/serializers.py:441 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:448 +#: build/serializers.py:447 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:449 +#: build/serializers.py:448 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:454 +#: build/serializers.py:453 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:514 +#: build/serializers.py:513 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:520 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:952 -#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 -#: stock/serializers.py:930 stock/serializers.py:1469 +#: build/serializers.py:519 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2044 order/serializers.py:596 stock/admin.py:164 +#: stock/serializers.py:932 stock/serializers.py:1465 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 @@ -1339,188 +1252,188 @@ msgstr "" msgid "Status" msgstr "" -#: build/serializers.py:526 +#: build/serializers.py:525 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:527 +#: build/serializers.py:526 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:611 msgid "Consume Allocated Stock" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:612 msgid "Consume any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:619 +#: build/serializers.py:618 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:620 +#: build/serializers.py:619 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:646 msgid "Not permitted" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:647 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:648 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:679 +#: build/serializers.py:678 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:681 +#: build/serializers.py:680 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:691 +#: build/serializers.py:690 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:696 +#: build/serializers.py:695 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:697 +#: build/serializers.py:696 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:707 templates/js/translated/build.js:315 +#: build/serializers.py:706 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:712 order/serializers.py:301 order/serializers.py:1246 +#: build/serializers.py:711 order/serializers.py:300 order/serializers.py:1234 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:713 +#: build/serializers.py:712 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:723 templates/js/translated/build.js:319 +#: build/serializers.py:722 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:732 templates/js/translated/build.js:303 +#: build/serializers.py:731 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:770 +#: build/serializers.py:769 msgid "Build Line" msgstr "" -#: build/serializers.py:780 +#: build/serializers.py:779 msgid "Build output" msgstr "" -#: build/serializers.py:788 +#: build/serializers.py:787 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:824 +#: build/serializers.py:823 msgid "Build Line Item" msgstr "" -#: build/serializers.py:838 +#: build/serializers.py:837 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:853 stock/serializers.py:1194 +#: build/serializers.py:852 stock/serializers.py:1190 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:901 order/serializers.py:1237 +#: build/serializers.py:900 order/serializers.py:1225 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:907 +#: build/serializers.py:906 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:914 +#: build/serializers.py:913 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:938 order/serializers.py:1489 +#: build/serializers.py:937 order/serializers.py:1477 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:1001 +#: build/serializers.py:1000 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:1009 +#: build/serializers.py:1008 msgid "Exclude Location" msgstr "" -#: build/serializers.py:1010 +#: build/serializers.py:1009 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:1015 +#: build/serializers.py:1014 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:1016 +#: build/serializers.py:1015 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:1021 +#: build/serializers.py:1020 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:1022 +#: build/serializers.py:1021 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:1027 +#: build/serializers.py:1026 msgid "Optional Items" msgstr "" -#: build/serializers.py:1028 +#: build/serializers.py:1027 msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1050 +#: build/serializers.py:1049 msgid "Failed to start auto-allocation task" msgstr "" -#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 -#: stock/api.py:794 +#: build/serializers.py:1139 part/models.py:3953 part/models.py:4387 +#: stock/api.py:804 msgid "BOM Item" msgstr "" -#: build/serializers.py:1149 templates/js/translated/index.js:130 +#: build/serializers.py:1148 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:832 part/serializers.py:1506 +#: build/serializers.py:1153 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:828 part/serializers.py:1502 #: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 -#: templates/js/translated/build.js:2613 templates/js/translated/part.js:709 -#: templates/js/translated/part.js:2148 +#: templates/js/translated/build.js:2613 templates/js/translated/part.js:710 +#: templates/js/translated/part.js:2149 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1159 part/serializers.py:1508 +#: build/serializers.py:1158 part/serializers.py:1504 #: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 +#: build/serializers.py:1163 part/bom.py:172 part/serializers.py:1527 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1929 msgid "Available Stock" @@ -1544,7 +1457,7 @@ msgstr "" #: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 #: order/status_codes.py:44 order/status_codes.py:69 #: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:165 report/models.py:443 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 msgid "Complete" msgstr "" @@ -1674,11 +1587,11 @@ msgstr "" #: build/templates/build/build_base.html:160 #: build/templates/build/detail.html:138 order/models.py:309 -#: order/models.py:1343 order/templates/order/order_base.html:186 +#: order/models.py:1307 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:196 #: report/templates/report/inventree_build_order_report.html:125 -#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1831 #: templates/js/translated/purchase_order.js:1739 #: templates/js/translated/purchase_order.js:2147 #: templates/js/translated/return_order.js:346 @@ -1711,8 +1624,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 -#: order/models.py:1587 order/models.py:1701 order/models.py:1855 +#: build/templates/build/detail.html:101 order/api.py:1463 order/models.py:845 +#: order/models.py:1551 order/models.py:1665 order/models.py:1819 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_report.html:135 @@ -1762,7 +1675,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1479 +#: build/templates/build/detail.html:49 order/models.py:1443 #: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "" @@ -1775,7 +1688,7 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:163 +#: build/templates/build/detail.html:80 stock/admin.py:162 #: stock/templates/stock/item_base.html:162 #: templates/js/translated/build.js:1380 #: templates/js/translated/model_renderers.js:241 @@ -1894,11 +1807,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:436 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -1914,6 +1827,34 @@ msgstr "" msgid "Incomplete Outputs" msgstr "" +#: common/api.py:689 +msgid "Is Link" +msgstr "" + +#: common/api.py:697 +msgid "Is File" +msgstr "" + +#: common/api.py:739 +msgid "User does not have permission to delete this attachment" +msgstr "" + +#: common/currency.py:130 +msgid "Invalid currency code" +msgstr "" + +#: common/currency.py:132 +msgid "Duplicate currency code" +msgstr "" + +#: common/currency.py:137 +msgid "No valid currency codes provided" +msgstr "" + +#: common/currency.py:154 +msgid "No plugin" +msgstr "" + #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1952,1507 +1893,1512 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:71 +#: common/models.py:73 msgid "Updated" msgstr "" -#: common/models.py:72 +#: common/models.py:74 msgid "Timestamp of last update" msgstr "" -#: common/models.py:105 +#: common/models.py:107 msgid "Site URL is locked by configuration" msgstr "" -#: common/models.py:130 +#: common/models.py:132 msgid "Unique project code" msgstr "" -#: common/models.py:137 +#: common/models.py:139 msgid "Project description" msgstr "" -#: common/models.py:146 +#: common/models.py:148 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:766 +#: common/models.py:765 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:770 +#: common/models.py:769 msgid "Settings value" msgstr "" -#: common/models.py:822 +#: common/models.py:821 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:838 +#: common/models.py:837 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:846 +#: common/models.py:845 msgid "Value must be an integer value" msgstr "" -#: common/models.py:883 +#: common/models.py:882 msgid "Key string must be unique" msgstr "" -#: common/models.py:1115 +#: common/models.py:1114 msgid "No group" msgstr "" -#: common/models.py:1158 -msgid "An empty domain is not allowed." -msgstr "" - -#: common/models.py:1160 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "" - -#: common/models.py:1172 -msgid "No plugin" -msgstr "" - -#: common/models.py:1260 +#: common/models.py:1213 msgid "Restart required" msgstr "" -#: common/models.py:1262 +#: common/models.py:1215 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1269 +#: common/models.py:1222 msgid "Pending migrations" msgstr "" -#: common/models.py:1270 +#: common/models.py:1223 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1275 +#: common/models.py:1228 msgid "Server Instance Name" msgstr "" -#: common/models.py:1277 +#: common/models.py:1230 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1281 +#: common/models.py:1234 msgid "Use instance name" msgstr "" -#: common/models.py:1282 +#: common/models.py:1235 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1287 +#: common/models.py:1240 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1288 +#: common/models.py:1241 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1293 company/models.py:108 company/models.py:109 +#: common/models.py:1246 company/models.py:111 company/models.py:112 msgid "Company name" msgstr "" -#: common/models.py:1294 +#: common/models.py:1247 msgid "Internal company name" msgstr "" -#: common/models.py:1298 +#: common/models.py:1251 msgid "Base URL" msgstr "" -#: common/models.py:1299 +#: common/models.py:1252 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1305 +#: common/models.py:1258 msgid "Default Currency" msgstr "" -#: common/models.py:1306 +#: common/models.py:1259 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1312 +#: common/models.py:1265 +msgid "Supported Currencies" +msgstr "" + +#: common/models.py:1266 +msgid "List of supported currency codes" +msgstr "" + +#: common/models.py:1272 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1314 +#: common/models.py:1274 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1317 common/models.py:1373 common/models.py:1386 -#: common/models.py:1394 common/models.py:1403 common/models.py:1412 -#: common/models.py:1620 common/models.py:1642 common/models.py:1757 -#: common/models.py:2076 +#: common/models.py:1277 common/models.py:1333 common/models.py:1346 +#: common/models.py:1354 common/models.py:1363 common/models.py:1372 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:2046 msgid "days" msgstr "" -#: common/models.py:1321 +#: common/models.py:1281 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1322 +#: common/models.py:1282 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1327 +#: common/models.py:1287 msgid "Download from URL" msgstr "" -#: common/models.py:1329 +#: common/models.py:1289 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1335 +#: common/models.py:1295 msgid "Download Size Limit" msgstr "" -#: common/models.py:1336 +#: common/models.py:1296 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1342 +#: common/models.py:1302 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1344 +#: common/models.py:1304 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:1349 +#: common/models.py:1309 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1350 +#: common/models.py:1310 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1355 +#: common/models.py:1315 msgid "Require confirm" msgstr "" -#: common/models.py:1356 +#: common/models.py:1316 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1361 +#: common/models.py:1321 msgid "Tree Depth" msgstr "" -#: common/models.py:1363 +#: common/models.py:1323 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1369 +#: common/models.py:1329 msgid "Update Check Interval" msgstr "" -#: common/models.py:1370 +#: common/models.py:1330 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1376 +#: common/models.py:1336 msgid "Automatic Backup" msgstr "" -#: common/models.py:1377 +#: common/models.py:1337 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1382 +#: common/models.py:1342 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1383 +#: common/models.py:1343 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1389 +#: common/models.py:1349 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1391 +#: common/models.py:1351 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1398 +#: common/models.py:1358 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1400 +#: common/models.py:1360 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1407 +#: common/models.py:1367 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1409 +#: common/models.py:1369 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1416 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1376 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1417 +#: common/models.py:1377 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1422 +#: common/models.py:1382 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1423 +#: common/models.py:1383 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1429 +#: common/models.py:1389 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1430 +#: common/models.py:1390 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1435 +#: common/models.py:1395 msgid "Part Revisions" msgstr "" -#: common/models.py:1436 +#: common/models.py:1396 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1441 +#: common/models.py:1401 msgid "Allow Deletion from Assembly" msgstr "" -#: common/models.py:1442 +#: common/models.py:1402 msgid "Allow deletion of parts which are used in an assembly" msgstr "" -#: common/models.py:1447 +#: common/models.py:1407 msgid "IPN Regex" msgstr "" -#: common/models.py:1448 +#: common/models.py:1408 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1451 +#: common/models.py:1411 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1452 +#: common/models.py:1412 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1457 +#: common/models.py:1417 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1458 +#: common/models.py:1418 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1463 +#: common/models.py:1423 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1464 +#: common/models.py:1424 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1469 +#: common/models.py:1429 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1470 +#: common/models.py:1430 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1475 +#: common/models.py:1435 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1476 +#: common/models.py:1436 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1481 +#: common/models.py:1441 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1482 +#: common/models.py:1442 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1487 part/admin.py:108 part/models.py:3815 -#: report/models.py:293 report/models.py:360 report/serializers.py:90 -#: report/serializers.py:131 stock/serializers.py:228 +#: common/models.py:1447 part/admin.py:108 part/models.py:3795 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:227 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1488 +#: common/models.py:1448 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 +#: common/models.py:1453 part/admin.py:91 part/admin.py:425 part/models.py:1052 #: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" msgstr "" -#: common/models.py:1494 +#: common/models.py:1454 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1499 part/admin.py:95 part/models.py:1065 +#: common/models.py:1459 part/admin.py:95 part/models.py:1058 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1500 +#: common/models.py:1460 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1505 part/admin.py:100 part/models.py:1077 +#: common/models.py:1465 part/admin.py:100 part/models.py:1070 msgid "Purchaseable" msgstr "" -#: common/models.py:1506 +#: common/models.py:1466 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1511 part/admin.py:104 part/models.py:1083 +#: common/models.py:1471 part/admin.py:104 part/models.py:1076 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1512 +#: common/models.py:1472 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1517 part/admin.py:113 part/models.py:1071 +#: common/models.py:1477 part/admin.py:113 part/models.py:1064 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" msgstr "" -#: common/models.py:1518 +#: common/models.py:1478 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1523 part/admin.py:117 part/models.py:1093 +#: common/models.py:1483 part/admin.py:117 part/models.py:1086 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" msgstr "" -#: common/models.py:1524 +#: common/models.py:1484 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1529 +#: common/models.py:1489 msgid "Show Import in Views" msgstr "" -#: common/models.py:1530 +#: common/models.py:1490 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1535 +#: common/models.py:1495 msgid "Show related parts" msgstr "" -#: common/models.py:1536 +#: common/models.py:1496 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1541 +#: common/models.py:1501 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1542 +#: common/models.py:1502 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1547 templates/js/translated/part.js:107 +#: common/models.py:1507 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1549 +#: common/models.py:1509 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1555 +#: common/models.py:1515 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1556 +#: common/models.py:1516 msgid "Format to display the part name" msgstr "" -#: common/models.py:1562 +#: common/models.py:1522 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1563 +#: common/models.py:1523 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1567 +#: common/models.py:1527 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1569 +#: common/models.py:1529 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1575 +#: common/models.py:1535 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1577 +#: common/models.py:1537 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1583 +#: common/models.py:1548 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1585 +#: common/models.py:1550 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1591 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1593 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1599 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1601 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1607 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1609 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1615 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1617 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1630 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1632 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1638 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1640 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1647 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1648 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1653 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1655 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1661 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1662 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1667 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1669 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1675 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1676 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1681 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1682 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1687 +#: common/models.py:1657 msgid "Log Report Errors" msgstr "" -#: common/models.py:1688 +#: common/models.py:1658 msgid "Log errors which occur when generating reports" msgstr "" -#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:301 +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:302 msgid "Page Size" msgstr "" -#: common/models.py:1694 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1699 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1700 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1705 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1707 +#: common/models.py:1677 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1713 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1714 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1719 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1720 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1725 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1727 +#: common/models.py:1697 msgid "Determines default behavior when a stock item is depleted" msgstr "" -#: common/models.py:1733 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1735 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1740 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1741 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1746 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1747 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1752 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1754 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1761 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1762 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1767 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1768 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1773 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1774 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1778 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1779 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1784 +#: common/models.py:1754 msgid "Check BOM when installing items" msgstr "" -#: common/models.py:1786 +#: common/models.py:1756 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "" -#: common/models.py:1792 +#: common/models.py:1762 msgid "Allow Out of Stock Transfer" msgstr "" -#: common/models.py:1794 +#: common/models.py:1764 msgid "Allow stock items which are not in stock to be transferred between stock locations" msgstr "" -#: common/models.py:1800 +#: common/models.py:1770 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1802 +#: common/models.py:1772 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1808 common/models.py:1836 common/models.py:1858 -#: common/models.py:1894 +#: common/models.py:1778 common/models.py:1806 common/models.py:1828 +#: common/models.py:1864 msgid "Require Responsible Owner" msgstr "" -#: common/models.py:1809 common/models.py:1837 common/models.py:1859 -#: common/models.py:1895 +#: common/models.py:1779 common/models.py:1807 common/models.py:1829 +#: common/models.py:1865 msgid "A responsible owner must be assigned to each order" msgstr "" -#: common/models.py:1814 +#: common/models.py:1784 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1816 +#: common/models.py:1786 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:1822 +#: common/models.py:1792 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1823 +#: common/models.py:1793 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1828 +#: common/models.py:1798 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1830 +#: common/models.py:1800 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1842 +#: common/models.py:1812 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1844 +#: common/models.py:1814 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1850 +#: common/models.py:1820 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1852 +#: common/models.py:1822 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1864 +#: common/models.py:1834 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1865 +#: common/models.py:1835 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1870 +#: common/models.py:1840 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1872 +#: common/models.py:1842 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1878 +#: common/models.py:1848 msgid "Mark Shipped Orders as Complete" msgstr "" -#: common/models.py:1880 +#: common/models.py:1850 msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" msgstr "" -#: common/models.py:1886 +#: common/models.py:1856 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1888 +#: common/models.py:1858 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1900 +#: common/models.py:1870 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1902 +#: common/models.py:1872 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1908 +#: common/models.py:1878 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1910 +#: common/models.py:1880 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1917 +#: common/models.py:1887 msgid "Enable password forgot" msgstr "" -#: common/models.py:1918 +#: common/models.py:1888 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1923 +#: common/models.py:1893 msgid "Enable registration" msgstr "" -#: common/models.py:1924 +#: common/models.py:1894 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1929 +#: common/models.py:1899 msgid "Enable SSO" msgstr "" -#: common/models.py:1930 +#: common/models.py:1900 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1935 +#: common/models.py:1905 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1937 +#: common/models.py:1907 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1943 +#: common/models.py:1913 msgid "Email required" msgstr "" -#: common/models.py:1944 +#: common/models.py:1914 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1949 +#: common/models.py:1919 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1951 +#: common/models.py:1921 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1957 +#: common/models.py:1927 msgid "Mail twice" msgstr "" -#: common/models.py:1958 +#: common/models.py:1928 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1963 +#: common/models.py:1933 msgid "Password twice" msgstr "" -#: common/models.py:1964 +#: common/models.py:1934 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1969 +#: common/models.py:1939 msgid "Allowed domains" msgstr "" -#: common/models.py:1971 +#: common/models.py:1941 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1977 +#: common/models.py:1947 msgid "Group on signup" msgstr "" -#: common/models.py:1978 +#: common/models.py:1948 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1983 +#: common/models.py:1953 msgid "Enforce MFA" msgstr "" -#: common/models.py:1984 +#: common/models.py:1954 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1989 +#: common/models.py:1959 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1991 +#: common/models.py:1961 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1999 +#: common/models.py:1969 msgid "Check for plugin updates" msgstr "" -#: common/models.py:2000 +#: common/models.py:1970 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:2006 +#: common/models.py:1976 msgid "Enable URL integration" msgstr "" -#: common/models.py:2007 +#: common/models.py:1977 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:2013 +#: common/models.py:1983 msgid "Enable navigation integration" msgstr "" -#: common/models.py:2014 +#: common/models.py:1984 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:2020 +#: common/models.py:1990 msgid "Enable app integration" msgstr "" -#: common/models.py:2021 +#: common/models.py:1991 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:2027 +#: common/models.py:1997 msgid "Enable schedule integration" msgstr "" -#: common/models.py:2028 +#: common/models.py:1998 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:2034 +#: common/models.py:2004 msgid "Enable event integration" msgstr "" -#: common/models.py:2035 +#: common/models.py:2005 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:2041 +#: common/models.py:2011 msgid "Enable project codes" msgstr "" -#: common/models.py:2042 +#: common/models.py:2012 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:2047 +#: common/models.py:2017 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:2049 +#: common/models.py:2019 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:2055 +#: common/models.py:2025 msgid "Exclude External Locations" msgstr "" -#: common/models.py:2057 +#: common/models.py:2027 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:2063 +#: common/models.py:2033 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:2065 +#: common/models.py:2035 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:2071 +#: common/models.py:2041 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:2073 +#: common/models.py:2043 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:2080 +#: common/models.py:2050 msgid "Display Users full names" msgstr "" -#: common/models.py:2081 +#: common/models.py:2051 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:2086 +#: common/models.py:2056 msgid "Enable Test Station Data" msgstr "" -#: common/models.py:2087 +#: common/models.py:2057 msgid "Enable test station data collection for test results" msgstr "" -#: common/models.py:2099 common/models.py:2509 +#: common/models.py:2069 common/models.py:2479 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2142 +#: common/models.py:2112 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2144 +#: common/models.py:2114 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2150 +#: common/models.py:2120 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2151 +#: common/models.py:2121 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2156 +#: common/models.py:2126 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2157 +#: common/models.py:2127 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2162 +#: common/models.py:2132 msgid "Show latest parts" msgstr "" -#: common/models.py:2163 +#: common/models.py:2133 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2168 +#: common/models.py:2138 msgid "Show invalid BOMs" msgstr "" -#: common/models.py:2169 +#: common/models.py:2139 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2174 +#: common/models.py:2144 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2175 +#: common/models.py:2145 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2180 +#: common/models.py:2150 msgid "Show low stock" msgstr "" -#: common/models.py:2181 +#: common/models.py:2151 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2186 +#: common/models.py:2156 msgid "Show depleted stock" msgstr "" -#: common/models.py:2187 +#: common/models.py:2157 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2192 +#: common/models.py:2162 msgid "Show needed stock" msgstr "" -#: common/models.py:2193 +#: common/models.py:2163 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2198 +#: common/models.py:2168 msgid "Show expired stock" msgstr "" -#: common/models.py:2199 +#: common/models.py:2169 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2204 +#: common/models.py:2174 msgid "Show stale stock" msgstr "" -#: common/models.py:2205 +#: common/models.py:2175 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2210 +#: common/models.py:2180 msgid "Show pending builds" msgstr "" -#: common/models.py:2211 +#: common/models.py:2181 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2216 +#: common/models.py:2186 msgid "Show overdue builds" msgstr "" -#: common/models.py:2217 +#: common/models.py:2187 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2222 +#: common/models.py:2192 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2223 +#: common/models.py:2193 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2228 +#: common/models.py:2198 msgid "Show overdue POs" msgstr "" -#: common/models.py:2229 +#: common/models.py:2199 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2234 +#: common/models.py:2204 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2235 +#: common/models.py:2205 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2240 +#: common/models.py:2210 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2241 +#: common/models.py:2211 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2246 +#: common/models.py:2216 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2247 +#: common/models.py:2217 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2252 +#: common/models.py:2222 msgid "Show News" msgstr "" -#: common/models.py:2253 +#: common/models.py:2223 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2258 +#: common/models.py:2228 msgid "Inline label display" msgstr "" -#: common/models.py:2260 +#: common/models.py:2230 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2266 +#: common/models.py:2236 msgid "Default label printer" msgstr "" -#: common/models.py:2268 +#: common/models.py:2238 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2274 +#: common/models.py:2244 msgid "Inline report display" msgstr "" -#: common/models.py:2276 +#: common/models.py:2246 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2282 +#: common/models.py:2252 msgid "Search Parts" msgstr "" -#: common/models.py:2283 +#: common/models.py:2253 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2288 +#: common/models.py:2258 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2289 +#: common/models.py:2259 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2294 +#: common/models.py:2264 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2295 +#: common/models.py:2265 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2300 +#: common/models.py:2270 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2301 +#: common/models.py:2271 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2306 +#: common/models.py:2276 msgid "Search Categories" msgstr "" -#: common/models.py:2307 +#: common/models.py:2277 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2312 +#: common/models.py:2282 msgid "Search Stock" msgstr "" -#: common/models.py:2313 +#: common/models.py:2283 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2318 +#: common/models.py:2288 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2320 +#: common/models.py:2290 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2326 +#: common/models.py:2296 msgid "Search Locations" msgstr "" -#: common/models.py:2327 +#: common/models.py:2297 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2332 +#: common/models.py:2302 msgid "Search Companies" msgstr "" -#: common/models.py:2333 +#: common/models.py:2303 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2338 +#: common/models.py:2308 msgid "Search Build Orders" msgstr "" -#: common/models.py:2339 +#: common/models.py:2309 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2344 +#: common/models.py:2314 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2345 +#: common/models.py:2315 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2350 +#: common/models.py:2320 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2352 +#: common/models.py:2322 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2358 +#: common/models.py:2328 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2359 +#: common/models.py:2329 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2364 +#: common/models.py:2334 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2366 +#: common/models.py:2336 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2372 +#: common/models.py:2342 msgid "Search Return Orders" msgstr "" -#: common/models.py:2373 +#: common/models.py:2343 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2378 +#: common/models.py:2348 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2380 +#: common/models.py:2350 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2386 +#: common/models.py:2356 msgid "Search Preview Results" msgstr "" -#: common/models.py:2388 +#: common/models.py:2358 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2394 +#: common/models.py:2364 msgid "Regex Search" msgstr "" -#: common/models.py:2395 +#: common/models.py:2365 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2400 +#: common/models.py:2370 msgid "Whole Word Search" msgstr "" -#: common/models.py:2401 +#: common/models.py:2371 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2406 +#: common/models.py:2376 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2407 +#: common/models.py:2377 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2412 +#: common/models.py:2382 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2413 +#: common/models.py:2383 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2418 +#: common/models.py:2388 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2419 +#: common/models.py:2389 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2424 +#: common/models.py:2394 msgid "Date Format" msgstr "" -#: common/models.py:2425 +#: common/models.py:2395 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2438 part/templates/part/detail.html:41 +#: common/models.py:2408 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2439 +#: common/models.py:2409 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2444 part/templates/part/detail.html:62 +#: common/models.py:2414 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2446 +#: common/models.py:2416 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2452 +#: common/models.py:2422 msgid "Table String Length" msgstr "" -#: common/models.py:2454 +#: common/models.py:2424 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2460 +#: common/models.py:2430 msgid "Default part label template" msgstr "" -#: common/models.py:2461 +#: common/models.py:2431 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2466 +#: common/models.py:2436 msgid "Default stock item template" msgstr "" -#: common/models.py:2468 +#: common/models.py:2438 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2474 +#: common/models.py:2444 msgid "Default stock location label template" msgstr "" -#: common/models.py:2476 +#: common/models.py:2446 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2482 +#: common/models.py:2452 msgid "Default build line label template" msgstr "" -#: common/models.py:2484 +#: common/models.py:2454 msgid "The build line label template to be automatically selected" msgstr "" -#: common/models.py:2490 +#: common/models.py:2460 msgid "Receive error reports" msgstr "" -#: common/models.py:2491 +#: common/models.py:2461 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2496 +#: common/models.py:2466 msgid "Last used printing machines" msgstr "" -#: common/models.py:2497 +#: common/models.py:2467 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2540 +#: common/models.py:2487 common/models.py:2488 common/models.py:2636 +#: common/models.py:2637 common/models.py:2882 common/models.py:2883 +#: common/models.py:3193 common/models.py:3194 part/models.py:3193 +#: part/models.py:3280 part/models.py:3353 part/models.py:3381 +#: plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "Потребител" + +#: common/models.py:2510 msgid "Price break quantity" msgstr "" -#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1382 order/models.py:2301 -#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 +#: common/models.py:2517 company/serializers.py:472 order/admin.py:42 +#: order/models.py:1346 order/models.py:2265 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1886 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:740 msgid "Price" msgstr "" -#: common/models.py:2548 +#: common/models.py:2518 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2719 common/models.py:2904 +#: common/models.py:2613 common/models.py:2798 msgid "Endpoint" msgstr "" -#: common/models.py:2720 +#: common/models.py:2614 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2730 +#: common/models.py:2624 msgid "Name for this webhook" msgstr "" -#: common/models.py:2734 company/models.py:160 company/models.py:814 -#: machine/models.py:39 part/admin.py:88 part/models.py:1088 -#: plugin/models.py:65 templates/js/translated/company.js:523 +#: common/models.py:2628 company/models.py:163 company/models.py:782 +#: machine/models.py:39 part/admin.py:88 part/models.py:1081 +#: plugin/models.py:66 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3462,101 +3408,118 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2734 +#: common/models.py:2628 msgid "Is this webhook active" msgstr "" -#: common/models.py:2750 users/models.py:159 +#: common/models.py:2644 users/models.py:159 msgid "Token" msgstr "" -#: common/models.py:2751 +#: common/models.py:2645 msgid "Token for access" msgstr "" -#: common/models.py:2759 +#: common/models.py:2653 msgid "Secret" msgstr "" -#: common/models.py:2760 +#: common/models.py:2654 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2868 +#: common/models.py:2762 msgid "Message ID" msgstr "" -#: common/models.py:2869 +#: common/models.py:2763 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2877 +#: common/models.py:2771 msgid "Host" msgstr "" -#: common/models.py:2878 +#: common/models.py:2772 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2886 +#: common/models.py:2780 msgid "Header" msgstr "" -#: common/models.py:2887 +#: common/models.py:2781 msgid "Header of this message" msgstr "" -#: common/models.py:2894 +#: common/models.py:2788 msgid "Body" msgstr "" -#: common/models.py:2895 +#: common/models.py:2789 msgid "Body of this message" msgstr "" -#: common/models.py:2905 +#: common/models.py:2799 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2910 +#: common/models.py:2804 msgid "Worked on" msgstr "" -#: common/models.py:2911 +#: common/models.py:2805 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:3037 +#: common/models.py:2931 msgid "Id" msgstr "" -#: common/models.py:3039 templates/js/translated/company.js:965 +#: common/models.py:2933 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:3043 templates/js/translated/news.js:60 +#: common/models.py:2935 common/models.py:3177 company/models.py:149 +#: company/models.py:440 company/models.py:500 company/models.py:799 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +#: part/admin.py:55 part/models.py:955 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "" + +#: common/models.py:2937 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:3045 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2939 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:3047 templates/js/translated/news.js:52 +#: common/models.py:2941 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Read" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Was this news item read?" msgstr "" -#: common/models.py:3067 company/models.py:156 part/models.py:972 +#: common/models.py:2961 company/models.py:159 part/models.py:965 #: 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.html:35 @@ -3566,34 +3529,89 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:3067 +#: common/models.py:2961 msgid "Image file" msgstr "" -#: common/models.py:3109 +#: common/models.py:2973 common/models.py:3161 +msgid "Target model type for this image" +msgstr "" + +#: common/models.py:2977 +msgid "Target model ID for this image" +msgstr "" + +#: common/models.py:3018 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3128 +#: common/models.py:3037 msgid "Unit name" msgstr "" -#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3044 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3136 +#: common/models.py:3045 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3052 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3144 +#: common/models.py:3053 msgid "Unit definition" msgstr "" +#: common/models.py:3111 common/models.py:3168 stock/models.py:2426 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "" + +#: common/models.py:3123 +msgid "Missing file" +msgstr "" + +#: common/models.py:3124 +msgid "Missing external link" +msgstr "" + +#: common/models.py:3169 +msgid "Select file to attach" +msgstr "" + +#: common/models.py:3184 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "" + +#: common/models.py:3185 +msgid "Attachment comment" +msgstr "" + +#: common/models.py:3201 +msgid "Upload date" +msgstr "" + +#: common/models.py:3202 +msgid "Date the file was uploaded" +msgstr "" + +#: common/models.py:3206 +msgid "File size" +msgstr "" + +#: common/models.py:3206 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3244 common/serializers.py:553 +msgid "Invalid model type specified for attachment" +msgstr "" + #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" @@ -3628,66 +3646,103 @@ msgstr "" msgid "Error raised by plugin" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:371 msgid "Is Running" msgstr "" -#: common/serializers.py:372 +#: common/serializers.py:377 msgid "Pending Tasks" msgstr "" -#: common/serializers.py:378 +#: common/serializers.py:383 msgid "Scheduled Tasks" msgstr "" -#: common/serializers.py:384 +#: common/serializers.py:389 msgid "Failed Tasks" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Task ID" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Unique task ID" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock time" msgstr "" -#: common/serializers.py:403 +#: common/serializers.py:408 msgid "Task name" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function name" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Arguments" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Task arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Keyword Arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Task keyword arguments" msgstr "" +#: common/serializers.py:525 +msgid "Filename" +msgstr "" + +#: common/serializers.py:532 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: common/serializers.py:559 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "" + +#: common/validators.py:33 +msgid "No attachment model type provided" +msgstr "" + +#: common/validators.py:39 +msgid "Invalid attachment model type" +msgstr "" + +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "" + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +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 @@ -3726,210 +3781,222 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/api.py:164 +#: company/api.py:144 msgid "Part is Active" msgstr "" -#: company/api.py:168 +#: company/api.py:148 msgid "Manufacturer is Active" msgstr "" -#: company/api.py:317 +#: company/api.py:281 msgid "Supplier Part is Active" msgstr "" -#: company/api.py:321 +#: company/api.py:285 msgid "Internal Part is Active" msgstr "" -#: company/api.py:325 +#: company/api.py:289 msgid "Supplier is Active" msgstr "" -#: company/models.py:114 +#: company/models.py:100 company/models.py:365 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:822 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "" + +#: company/models.py:117 msgid "Company description" msgstr "" -#: company/models.py:115 +#: company/models.py:118 msgid "Description of the company" msgstr "" -#: company/models.py:120 company/templates/company/company_base.html:106 +#: company/models.py:123 company/templates/company/company_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:532 msgid "Website" msgstr "" -#: company/models.py:120 +#: company/models.py:123 msgid "Company website URL" msgstr "" -#: company/models.py:125 +#: company/models.py:128 msgid "Phone number" msgstr "" -#: company/models.py:127 +#: company/models.py:130 msgid "Contact phone number" msgstr "" -#: company/models.py:134 +#: company/models.py:137 msgid "Contact email address" msgstr "" -#: company/models.py:139 company/templates/company/company_base.html:145 +#: company/models.py:142 company/templates/company/company_base.html:145 #: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "" -#: company/models.py:141 +#: company/models.py:144 msgid "Point of contact" msgstr "" -#: company/models.py:147 +#: company/models.py:150 msgid "Link to external company information" msgstr "" -#: company/models.py:160 +#: company/models.py:163 msgid "Is this company active?" msgstr "" -#: company/models.py:165 +#: company/models.py:168 msgid "is customer" msgstr "" -#: company/models.py:166 +#: company/models.py:169 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:171 +#: company/models.py:174 msgid "is supplier" msgstr "" -#: company/models.py:172 +#: company/models.py:175 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:177 +#: company/models.py:180 msgid "is manufacturer" msgstr "" -#: company/models.py:178 +#: company/models.py:181 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:186 +#: company/models.py:189 msgid "Default currency used for this company" msgstr "" -#: company/models.py:273 company/models.py:382 -#: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:812 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 -msgid "Company" -msgstr "" - -#: company/models.py:383 +#: company/models.py:366 msgid "Select company" msgstr "" -#: company/models.py:388 +#: company/models.py:371 msgid "Address title" msgstr "" -#: company/models.py:389 +#: company/models.py:372 msgid "Title describing the address entry" msgstr "" -#: company/models.py:395 +#: company/models.py:378 msgid "Primary address" msgstr "" -#: company/models.py:396 +#: company/models.py:379 msgid "Set as primary address" msgstr "" -#: company/models.py:401 templates/js/translated/company.js:914 +#: company/models.py:384 templates/js/translated/company.js:914 #: templates/js/translated/company.js:971 msgid "Line 1" msgstr "" -#: company/models.py:402 +#: company/models.py:385 msgid "Address line 1" msgstr "" -#: company/models.py:408 templates/js/translated/company.js:915 +#: company/models.py:391 templates/js/translated/company.js:915 #: templates/js/translated/company.js:977 msgid "Line 2" msgstr "" -#: company/models.py:409 +#: company/models.py:392 msgid "Address line 2" msgstr "" -#: company/models.py:415 company/models.py:416 +#: company/models.py:398 company/models.py:399 #: templates/js/translated/company.js:983 msgid "Postal code" msgstr "" -#: company/models.py:422 +#: company/models.py:405 msgid "City/Region" msgstr "" -#: company/models.py:423 +#: company/models.py:406 msgid "Postal code city/region" msgstr "" -#: company/models.py:429 +#: company/models.py:412 msgid "State/Province" msgstr "" -#: company/models.py:430 +#: company/models.py:413 msgid "State or province" msgstr "" -#: company/models.py:436 templates/js/translated/company.js:1001 +#: company/models.py:419 templates/js/translated/company.js:1001 msgid "Country" msgstr "" -#: company/models.py:437 +#: company/models.py:420 msgid "Address country" msgstr "" -#: company/models.py:443 +#: company/models.py:426 msgid "Courier shipping notes" msgstr "" -#: company/models.py:444 +#: company/models.py:427 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:450 +#: company/models.py:433 msgid "Internal shipping notes" msgstr "" -#: company/models.py:451 +#: company/models.py:434 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:458 +#: company/models.py:441 msgid "Link to address information (external)" msgstr "" -#: company/models.py:489 company/models.py:792 stock/models.py:768 -#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 +#: company/models.py:463 company/models.py:574 company/models.py:792 +#: 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:475 company/models.py:760 stock/models.py:766 +#: stock/serializers.py:422 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:491 company/models.py:794 +#: company/models.py:477 company/models.py:762 msgid "Select part" msgstr "" -#: company/models.py:500 company/templates/company/company_base.html:82 +#: company/models.py:486 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:530 +#: company/templates/company/supplier_part.html:145 part/serializers.py:525 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -3939,152 +4006,154 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:501 +#: company/models.py:487 msgid "Select manufacturer" msgstr "" -#: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:540 +#: company/models.py:493 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:535 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 -#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1801 #: templates/js/translated/purchase_order.js:1851 #: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "" -#: company/models.py:508 +#: company/models.py:494 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:515 +#: company/models.py:501 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:524 +#: company/models.py:510 msgid "Manufacturer part description" msgstr "" -#: company/models.py:581 company/models.py:608 company/models.py:824 -#: 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:615 +#: company/models.py:581 msgid "Parameter name" msgstr "" -#: company/models.py:621 report/templates/report/inventree_test_report.html:104 -#: stock/models.py:2429 templates/js/translated/company.js:1166 -#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 +#: company/models.py:587 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2418 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1493 #: templates/js/translated/stock.js:1522 msgid "Value" msgstr "" -#: company/models.py:622 +#: company/models.py:588 msgid "Parameter value" msgstr "" -#: company/models.py:629 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1052 part/models.py:3666 +#: company/models.py:595 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1045 part/models.py:3646 #: part/templates/part/part_base.html:284 -#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1512 +#: templates/js/translated/part.js:1616 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:630 +#: company/models.py:596 msgid "Parameter units" msgstr "" -#: company/models.py:732 +#: company/models.py:648 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:777 stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "" + +#: company/models.py:700 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:739 +#: company/models.py:707 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:753 +#: company/models.py:721 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/models.py:770 company/templates/company/company_base.html:87 #: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:514 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:509 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:511 -#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1769 #: templates/js/translated/pricing.js:498 #: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "" -#: company/models.py:803 +#: company/models.py:771 msgid "Select supplier" msgstr "" -#: company/models.py:809 part/serializers.py:525 +#: company/models.py:777 part/serializers.py:520 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:815 +#: company/models.py:783 msgid "Is this supplier part active?" msgstr "" -#: company/models.py:825 +#: company/models.py:793 msgid "Select manufacturer part" msgstr "" -#: company/models.py:832 +#: company/models.py:800 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:841 +#: company/models.py:809 msgid "Supplier part description" msgstr "" -#: company/models.py:848 company/templates/company/supplier_part.html:187 -#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 +#: company/models.py:816 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4093 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_purchase_order_report.html:32 #: report/templates/report/inventree_return_order_report.html:27 #: report/templates/report/inventree_sales_order_report.html:32 #: report/templates/report/inventree_stock_location_report.html:105 -#: stock/serializers.py:708 +#: stock/serializers.py:710 msgid "Note" msgstr "" -#: company/models.py:857 part/models.py:2010 +#: company/models.py:825 part/models.py:2003 msgid "base cost" msgstr "" -#: company/models.py:858 part/models.py:2011 +#: company/models.py:826 part/models.py:2004 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:865 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 +#: company/models.py:833 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:797 stock/serializers.py:1475 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 #: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "" -#: company/models.py:866 +#: company/models.py:834 msgid "Part packaging" msgstr "" -#: company/models.py:871 templates/js/translated/company.js:1651 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: company/models.py:839 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:311 #: templates/js/translated/purchase_order.js:841 #: templates/js/translated/purchase_order.js:1103 @@ -4093,35 +4162,35 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:873 +#: company/models.py:841 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:892 part/models.py:2017 +#: company/models.py:860 part/models.py:2010 msgid "multiple" msgstr "" -#: company/models.py:893 +#: company/models.py:861 msgid "Order multiple" msgstr "" -#: company/models.py:905 +#: company/models.py:873 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:911 +#: company/models.py:879 msgid "Availability Updated" msgstr "" -#: company/models.py:912 +#: company/models.py:880 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:163 +#: company/serializers.py:161 msgid "Default currency used for this supplier" msgstr "" -#: company/serializers.py:381 part/admin.py:126 +#: company/serializers.py:357 part/admin.py:126 #: part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1689 #: templates/js/translated/table_filters.js:355 @@ -4133,7 +4202,7 @@ msgstr "" #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 #: templates/js/translated/model_renderers.js:312 -#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +#: templates/js/translated/part.js:815 templates/js/translated/part.js:1219 msgid "Inactive" msgstr "" @@ -4172,7 +4241,7 @@ msgstr "" #: report/templates/report/inventree_purchase_order_report.html:40 #: report/templates/report/inventree_sales_order_report.html:40 #: report/templates/report/inventree_test_report.html:84 -#: report/templates/report/inventree_test_report.html:163 +#: report/templates/report/inventree_test_report.html:162 msgid "Part image" msgstr "" @@ -4191,10 +4260,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:92 order/models.py:940 -#: order/models.py:2068 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:148 stock/models.py:821 -#: stock/models.py:822 stock/serializers.py:1229 +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2032 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:819 +#: stock/models.py:820 stock/serializers.py:1225 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 @@ -4405,7 +4474,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:836 +#: part/admin.py:122 part/serializers.py:832 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4425,8 +4494,8 @@ msgstr "" msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:206 -#: templates/js/translated/part.js:1422 +#: company/templates/company/manufacturer_part.html:196 +#: templates/js/translated/part.js:1423 msgid "Add Parameter" msgstr "" @@ -4454,15 +4523,6 @@ msgstr "" msgid "Addresses" msgstr "" -#: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:452 -#: stock/models.py:779 stock/templates/stock/item_base.html:233 -#: templates/js/translated/company.js:1600 -#: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2280 -msgid "Supplier Part" -msgstr "" - #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1526 msgid "Supplier part actions" @@ -4505,8 +4565,8 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:524 -#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: part/bom.py:311 part/serializers.py:519 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1787 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1850 #: templates/js/translated/purchase_order.js:2028 @@ -4518,12 +4578,12 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:207 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" @@ -4555,15 +4615,15 @@ msgid "Update Part Availability" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:835 part/stocktake.py:223 +#: part/serializers.py:831 part/stocktake.py:224 #: part/templates/part/category.html:183 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:916 stock/serializers.py:1080 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:918 stock/serializers.py:1091 #: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:191 #: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1061 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:206 msgid "Stock Items" @@ -4590,10 +4650,6 @@ msgstr "" 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 "" @@ -4614,7 +4670,7 @@ msgstr "" msgid "Connected" msgstr "" -#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: machine/machine_types/label_printer.py:235 order/api.py:1467 #: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "" @@ -4703,7 +4759,7 @@ msgstr "" msgid "Config type" msgstr "" -#: order/admin.py:30 order/models.py:89 +#: order/admin.py:30 order/models.py:90 #: report/templates/report/inventree_purchase_order_report.html:31 #: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 @@ -4712,30 +4768,30 @@ msgstr "" msgid "Total Price" msgstr "" -#: order/api.py:161 order/serializers.py:91 +#: order/api.py:157 order/serializers.py:90 #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "" -#: order/api.py:165 templates/js/translated/table_filters.js:194 +#: order/api.py:161 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "" -#: order/api.py:240 +#: order/api.py:236 msgid "No matching purchase order found" msgstr "" -#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 -#: order/models.py:1586 order/models.py:1700 order/models.py:1854 -#: order/models.py:2267 order/models.py:2318 +#: order/api.py:435 order/api.py:801 order/models.py:1395 order/models.py:1504 +#: order/models.py:1550 order/models.py:1664 order/models.py:1818 +#: order/models.py:2231 order/models.py:2282 #: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "" -#: order/api.py:441 order/api.py:838 +#: order/api.py:439 order/api.py:822 msgid "Order Complete" msgstr "" @@ -4743,13 +4799,13 @@ msgstr "" msgid "Order Pending" msgstr "" -#: order/api.py:1509 order/models.py:380 order/models.py:1432 -#: order/models.py:1541 order/templates/order/order_base.html:9 +#: order/api.py:1461 order/models.py:380 order/models.py:1396 +#: order/models.py:1505 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_purchase_order_report.html:14 -#: stock/serializers.py:119 stock/templates/stock/item_base.html:176 +#: stock/serializers.py:118 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/part.js:1746 templates/js/translated/pricing.js:804 #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1673 @@ -4757,8 +4813,8 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1513 order/models.py:2017 order/models.py:2268 -#: order/models.py:2319 order/templates/order/return_order_base.html:9 +#: order/api.py:1465 order/models.py:1981 order/models.py:2232 +#: order/models.py:2283 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report.html:13 #: templates/js/translated/return_order.js:280 @@ -4766,15 +4822,15 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/models.py:90 +#: order/models.py:91 msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:71 +#: order/models.py:96 order/serializers.py:70 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:72 +#: order/models.py:99 order/serializers.py:71 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -4790,7 +4846,7 @@ msgstr "" msgid "Select project code for this order" msgstr "" -#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 msgid "Link to external page" msgstr "" @@ -4814,11 +4870,11 @@ msgstr "" msgid "Company address for this order" msgstr "" -#: order/models.py:464 order/models.py:929 +#: order/models.py:464 order/models.py:927 msgid "Order reference" msgstr "" -#: order/models.py:472 order/models.py:953 +#: order/models.py:472 order/models.py:951 msgid "Purchase order status" msgstr "" @@ -4839,15 +4895,15 @@ msgstr "" msgid "received by" msgstr "" -#: order/models.py:514 order/models.py:2094 +#: order/models.py:514 order/models.py:2058 msgid "Issue Date" msgstr "" -#: order/models.py:515 order/models.py:2095 +#: order/models.py:515 order/models.py:2059 msgid "Date order was issued" msgstr "" -#: order/models.py:522 order/models.py:2102 +#: order/models.py:522 order/models.py:2066 msgid "Date order was completed" msgstr "" @@ -4859,94 +4915,94 @@ msgstr "" msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:941 +#: order/models.py:939 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:964 order/models.py:2087 +#: order/models.py:962 order/models.py:2051 msgid "Customer Reference " msgstr "" -#: order/models.py:965 order/models.py:2088 +#: order/models.py:963 order/models.py:2052 msgid "Customer order reference code" msgstr "" -#: order/models.py:969 order/models.py:1707 +#: order/models.py:967 order/models.py:1671 #: templates/js/translated/sales_order.js:879 #: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "" -#: order/models.py:978 +#: order/models.py:976 msgid "shipped by" msgstr "" -#: order/models.py:1027 +#: order/models.py:1025 msgid "Order is already complete" msgstr "" -#: order/models.py:1030 +#: order/models.py:1028 msgid "Order is already cancelled" msgstr "" -#: order/models.py:1034 +#: order/models.py:1032 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:1038 +#: order/models.py:1036 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:1043 +#: order/models.py:1041 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1309 +#: order/models.py:1273 msgid "Item quantity" msgstr "" -#: order/models.py:1326 +#: order/models.py:1290 msgid "Line item reference" msgstr "" -#: order/models.py:1333 +#: order/models.py:1297 msgid "Line item notes" msgstr "" -#: order/models.py:1345 +#: order/models.py:1309 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1366 +#: order/models.py:1330 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1372 +#: order/models.py:1336 msgid "Context" msgstr "" -#: order/models.py:1373 +#: order/models.py:1337 msgid "Additional context for this line" msgstr "" -#: order/models.py:1383 +#: order/models.py:1347 msgid "Unit price" msgstr "" -#: order/models.py:1416 +#: order/models.py:1380 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1423 +#: order/models.py:1387 msgid "deleted" msgstr "" -#: order/models.py:1451 +#: order/models.py:1415 msgid "Supplier part" msgstr "" -#: order/models.py:1458 order/templates/order/order_base.html:196 -#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: order/models.py:1422 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1870 templates/js/translated/part.js:1902 #: templates/js/translated/purchase_order.js:1306 #: templates/js/translated/purchase_order.js:2169 #: templates/js/translated/return_order.js:763 @@ -4955,196 +5011,196 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1459 +#: order/models.py:1423 msgid "Number of items received" msgstr "" -#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 +#: order/models.py:1431 stock/models.py:938 stock/serializers.py:556 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "" -#: order/models.py:1468 +#: order/models.py:1432 msgid "Unit purchase price" msgstr "" -#: order/models.py:1483 +#: order/models.py:1447 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1574 +#: order/models.py:1538 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1579 +#: order/models.py:1543 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1605 part/templates/part/part_pricing.html:107 +#: order/models.py:1569 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:1606 +#: order/models.py:1570 msgid "Unit sale price" msgstr "" -#: order/models.py:1615 order/status_codes.py:43 +#: order/models.py:1579 order/status_codes.py:43 #: templates/js/translated/sales_order.js:1559 #: templates/js/translated/sales_order.js:1680 #: templates/js/translated/sales_order.js:1993 msgid "Shipped" msgstr "Изпратено" -#: order/models.py:1616 +#: order/models.py:1580 msgid "Shipped quantity" msgstr "" -#: order/models.py:1708 +#: order/models.py:1672 msgid "Date of shipment" msgstr "" -#: order/models.py:1714 templates/js/translated/sales_order.js:1072 +#: order/models.py:1678 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "" -#: order/models.py:1715 +#: order/models.py:1679 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1723 +#: order/models.py:1687 msgid "Checked By" msgstr "" -#: order/models.py:1724 +#: order/models.py:1688 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 -#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 +#: order/models.py:1695 order/models.py:1908 order/serializers.py:1342 +#: order/serializers.py:1452 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "" -#: order/models.py:1732 +#: order/models.py:1696 msgid "Shipment number" msgstr "" -#: order/models.py:1740 +#: order/models.py:1704 msgid "Tracking Number" msgstr "" -#: order/models.py:1741 +#: order/models.py:1705 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1748 +#: order/models.py:1712 msgid "Invoice Number" msgstr "" -#: order/models.py:1749 +#: order/models.py:1713 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1769 +#: order/models.py:1733 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1772 +#: order/models.py:1736 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1890 order/models.py:1892 +#: order/models.py:1854 order/models.py:1856 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1899 +#: order/models.py:1863 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1902 +#: order/models.py:1866 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1905 +#: order/models.py:1869 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1924 order/serializers.py:1231 +#: order/models.py:1888 order/serializers.py:1219 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1927 +#: order/models.py:1891 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1928 plugin/base/barcodes/api.py:481 +#: order/models.py:1892 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1936 +#: order/models.py:1900 msgid "Line" msgstr "" -#: order/models.py:1945 +#: order/models.py:1909 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1958 order/models.py:2275 +#: order/models.py:1922 order/models.py:2239 #: templates/js/translated/return_order.js:721 msgid "Item" msgstr "" -#: order/models.py:1959 +#: order/models.py:1923 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1968 +#: order/models.py:1932 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:2057 +#: order/models.py:2021 msgid "Return Order reference" msgstr "" -#: order/models.py:2069 +#: order/models.py:2033 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:2081 +#: order/models.py:2045 msgid "Return order status" msgstr "" -#: order/models.py:2260 +#: order/models.py:2224 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2276 +#: order/models.py:2240 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2282 +#: order/models.py:2246 msgid "Received Date" msgstr "" -#: order/models.py:2283 +#: order/models.py:2247 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2294 templates/js/translated/return_order.js:732 +#: order/models.py:2258 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2295 +#: order/models.py:2259 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2302 +#: order/models.py:2266 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/serializers.py:79 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_purchase_order_report.html:22 @@ -5153,163 +5209,163 @@ msgstr "" msgid "Line Items" msgstr "" -#: order/serializers.py:84 +#: order/serializers.py:83 msgid "Completed Lines" msgstr "" -#: order/serializers.py:287 +#: order/serializers.py:286 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:302 order/serializers.py:1247 +#: order/serializers.py:301 order/serializers.py:1235 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:312 order/serializers.py:1257 +#: order/serializers.py:311 order/serializers.py:1245 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:440 +#: order/serializers.py:439 msgid "Order is not open" msgstr "" -#: order/serializers.py:461 +#: order/serializers.py:460 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:463 +#: order/serializers.py:462 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:473 +#: order/serializers.py:472 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:478 msgid "Merge Items" msgstr "" -#: order/serializers.py:481 +#: order/serializers.py:480 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:499 +#: order/serializers.py:498 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:502 +#: order/serializers.py:501 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:510 +#: order/serializers.py:509 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:511 +#: order/serializers.py:510 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:550 order/serializers.py:1325 +#: order/serializers.py:549 order/serializers.py:1313 msgid "Line Item" msgstr "" -#: order/serializers.py:556 +#: order/serializers.py:555 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1657 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:581 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:589 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:601 templates/js/translated/barcode.js:52 +#: order/serializers.py:600 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:602 +#: order/serializers.py:601 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:618 +#: order/serializers.py:617 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:642 +#: order/serializers.py:641 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:690 order/serializers.py:1696 +#: order/serializers.py:689 order/serializers.py:1673 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:706 +#: order/serializers.py:705 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:717 +#: order/serializers.py:716 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1074 +#: order/serializers.py:1062 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1134 +#: order/serializers.py:1122 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1195 order/serializers.py:1334 +#: order/serializers.py:1183 order/serializers.py:1322 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1214 +#: order/serializers.py:1202 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1344 +#: order/serializers.py:1332 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1366 order/serializers.py:1472 +#: order/serializers.py:1354 order/serializers.py:1460 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1369 order/serializers.py:1475 +#: order/serializers.py:1357 order/serializers.py:1463 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1416 +#: order/serializers.py:1404 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1423 +#: order/serializers.py:1411 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1650 +#: order/serializers.py:1627 msgid "Return order line item" msgstr "" -#: order/serializers.py:1656 +#: order/serializers.py:1633 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1659 +#: order/serializers.py:1636 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1688 +#: order/serializers.py:1665 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1766 +#: order/serializers.py:1743 msgid "Line price currency" msgstr "" @@ -5639,7 +5695,7 @@ msgstr "" #: 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/part.js:1073 #: templates/js/translated/purchase_order.js:1752 #: templates/js/translated/return_order.js:380 #: templates/js/translated/sales_order.js:891 @@ -5735,34 +5791,34 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:406 part/models.py:3964 part/stocktake.py:218 -#: stock/admin.py:153 +#: part/admin.py:39 part/admin.py:398 part/models.py:3944 part/stocktake.py:219 +#: stock/admin.py:152 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 -#: stock/admin.py:157 +#: part/admin.py:41 part/admin.py:405 part/models.py:3945 part/stocktake.py:220 +#: stock/admin.py:156 msgid "Part Name" msgstr "" -#: part/admin.py:45 part/stocktake.py:220 +#: part/admin.py:45 part/stocktake.py:221 msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:940 part/templates/part/part_base.html:269 #: report/templates/report/inventree_stock_location_report.html:103 -#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/part.js:1227 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 -#: report/models.py:161 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2346 +#: part/admin.py:50 part/models.py:949 part/templates/part/part_base.html:277 +#: report/models.py:162 templates/js/translated/part.js:1232 +#: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:319 part/models.py:929 +#: part/admin.py:53 part/admin.py:319 part/models.py:922 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5771,11 +5827,11 @@ msgstr "" msgid "Part Image" msgstr "" -#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:222 msgid "Category ID" msgstr "" -#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:223 msgid "Category Name" msgstr "" @@ -5787,11 +5843,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:908 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1036 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5799,26 +5855,26 @@ msgstr "" 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 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:235 +#: templates/js/translated/part.js:715 templates/js/translated/part.js:2153 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3123 part/models.py:3137 -#: templates/js/translated/part.js:969 +#: part/admin.py:155 part/models.py:3088 part/models.py:3102 +#: templates/js/translated/part.js:970 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3130 part/models.py:3144 -#: templates/js/translated/part.js:979 +#: part/admin.py:158 part/models.py:3095 part/models.py:3109 +#: templates/js/translated/part.js:980 msgid "Maximum Cost" msgstr "" -#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 msgid "Parent ID" msgstr "" -#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 msgid "Parent Name" msgstr "" @@ -5827,141 +5883,149 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:325 part/models.py:393 part/serializers.py:117 -#: part/serializers.py:272 part/serializers.py:391 +#: part/admin.py:325 part/models.py:396 part/serializers.py:124 +#: part/serializers.py:267 part/serializers.py:386 #: 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:2803 templates/js/translated/search.js:130 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "" -#: part/admin.py:386 +#: part/admin.py:378 msgid "BOM Level" msgstr "" -#: part/admin.py:389 +#: part/admin.py:381 msgid "BOM Item ID" msgstr "" -#: part/admin.py:399 +#: part/admin.py:391 msgid "Parent IPN" msgstr "" -#: part/admin.py:410 part/models.py:3966 +#: part/admin.py:402 part/models.py:3946 msgid "Part IPN" msgstr "" -#: part/admin.py:423 part/serializers.py:1278 +#: part/admin.py:415 part/serializers.py:1274 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:428 part/serializers.py:1293 +#: part/admin.py:420 part/serializers.py:1289 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:110 +#: part/api.py:104 msgid "Starred" msgstr "" -#: part/api.py:112 +#: part/api.py:106 msgid "Filter by starred categories" msgstr "" -#: part/api.py:129 stock/api.py:318 +#: part/api.py:123 stock/api.py:312 msgid "Depth" msgstr "" -#: part/api.py:129 +#: part/api.py:123 msgid "Filter by category depth" msgstr "" -#: part/api.py:147 stock/api.py:336 +#: part/api.py:141 stock/api.py:330 +msgid "Top Level" +msgstr "" + +#: part/api.py:143 +msgid "Filter by top-level categories" +msgstr "" + +#: part/api.py:156 stock/api.py:345 msgid "Cascade" msgstr "" -#: part/api.py:149 +#: part/api.py:158 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:169 +#: part/api.py:179 templates/js/translated/part.js:308 msgid "Parent" msgstr "" -#: part/api.py:171 +#: part/api.py:181 msgid "Filter by parent category" msgstr "" -#: part/api.py:204 +#: part/api.py:214 msgid "Exclude Tree" msgstr "" -#: part/api.py:206 +#: part/api.py:216 msgid "Exclude sub-categories under the specified category" msgstr "" -#: part/api.py:455 +#: part/api.py:449 msgid "Has Results" msgstr "" -#: part/api.py:622 +#: part/api.py:616 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:640 +#: part/api.py:634 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:656 +#: part/api.py:650 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:740 +#: part/api.py:734 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:887 +#: part/api.py:881 msgid "Valid" msgstr "" -#: part/api.py:888 +#: part/api.py:882 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:894 +#: part/api.py:888 msgid "This option must be selected" msgstr "" -#: part/api.py:1111 +#: part/api.py:1105 msgid "BOM Valid" msgstr "" -#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 -#: part/serializers.py:406 part/serializers.py:1134 -#: part/templates/part/part_base.html:260 stock/api.py:781 +#: part/api.py:1508 part/models.py:932 part/models.py:3374 part/models.py:3889 +#: part/serializers.py:401 part/serializers.py:1130 +#: part/templates/part/part_base.html:260 stock/api.py:791 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2376 +#: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/api.py:1803 +#: part/api.py:1796 msgid "Uses" msgstr "" -#: part/bom.py:170 part/models.py:102 part/models.py:982 +#: part/bom.py:170 part/models.py:104 part/models.py:975 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 part/serializers.py:837 +#: part/bom.py:171 part/serializers.py:833 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "Цялостна наличност" @@ -5970,1054 +6034,1066 @@ msgstr "Цялостна наличност" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 +#: part/models.py:85 part/models.py:3890 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:84 part/templates/part/category.html:136 +#: part/models.py:86 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "" -#: part/models.py:103 +#: part/models.py:105 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 +#: part/models.py:110 stock/models.py:174 templates/js/translated/part.js:2810 #: templates/js/translated/stock.js:2772 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:110 +#: part/models.py:112 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:119 +#: part/models.py:121 msgid "Default keywords" msgstr "" -#: part/models.py:120 +#: part/models.py:122 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 stock/models.py:85 stock/models.py:156 +#: part/models.py:128 stock/models.py:86 stock/models.py:157 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:127 stock/models.py:157 +#: part/models.py:129 stock/models.py:158 msgid "Icon (optional)" msgstr "" -#: part/models.py:149 +#: part/models.py:151 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:482 +#: part/models.py:485 msgid "Cannot delete this part as it is still active" msgstr "" -#: part/models.py:489 +#: part/models.py:490 msgid "Cannot delete this part as it is used in an assembly" msgstr "" -#: part/models.py:527 +#: part/models.py:528 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:575 part/models.py:582 +#: part/models.py:576 part/models.py:583 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:594 +#: part/models.py:595 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:659 +#: part/models.py:658 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:739 +#: part/models.py:736 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:844 +#: part/models.py:837 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:854 +#: part/models.py:847 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:869 +#: part/models.py:862 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:898 part/models.py:3965 +#: part/models.py:891 part/models.py:3945 msgid "Part name" msgstr "" -#: part/models.py:903 +#: part/models.py:896 msgid "Is Template" msgstr "" -#: part/models.py:904 +#: part/models.py:897 msgid "Is this part a template part?" msgstr "" -#: part/models.py:914 +#: part/models.py:907 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:922 +#: part/models.py:915 msgid "Part description (optional)" msgstr "" -#: part/models.py:930 +#: part/models.py:923 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:940 +#: part/models.py:933 msgid "Part category" msgstr "" -#: part/models.py:948 +#: part/models.py:941 msgid "Internal Part Number" msgstr "" -#: part/models.py:955 +#: part/models.py:948 msgid "Part revision or version number" msgstr "" -#: part/models.py:980 +#: part/models.py:973 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:1026 part/templates/part/part_base.html:376 +#: part/models.py:1019 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:1027 +#: part/models.py:1020 msgid "Default supplier part" msgstr "" -#: part/models.py:1034 +#: part/models.py:1027 msgid "Default Expiry" msgstr "" -#: part/models.py:1035 +#: part/models.py:1028 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:1044 +#: part/models.py:1037 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:1053 +#: part/models.py:1046 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1060 +#: part/models.py:1053 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1066 +#: part/models.py:1059 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1072 +#: part/models.py:1065 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1078 +#: part/models.py:1071 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1084 +#: part/models.py:1077 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1088 +#: part/models.py:1081 msgid "Is this part active?" msgstr "" -#: part/models.py:1094 +#: part/models.py:1087 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1100 +#: part/models.py:1093 msgid "BOM checksum" msgstr "" -#: part/models.py:1101 +#: part/models.py:1094 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1109 +#: part/models.py:1102 msgid "BOM checked by" msgstr "" -#: part/models.py:1114 +#: part/models.py:1107 msgid "BOM checked date" msgstr "" -#: part/models.py:1130 +#: part/models.py:1123 msgid "Creation User" msgstr "" -#: part/models.py:1140 +#: part/models.py:1133 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1145 part/templates/part/part_base.html:339 +#: part/models.py:1138 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2470 +#: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:2018 +#: part/models.py:2011 msgid "Sell multiple" msgstr "" -#: part/models.py:3037 +#: part/models.py:3002 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:3053 +#: part/models.py:3018 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:3054 +#: part/models.py:3019 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:3060 +#: part/models.py:3025 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3026 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:3067 +#: part/models.py:3032 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3033 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3074 +#: part/models.py:3039 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3040 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3046 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3047 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3053 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3054 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3060 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3096 +#: part/models.py:3061 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3102 +#: part/models.py:3067 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3103 +#: part/models.py:3068 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3109 +#: part/models.py:3074 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3110 +#: part/models.py:3075 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3116 +#: part/models.py:3081 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3117 +#: part/models.py:3082 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3124 +#: part/models.py:3089 msgid "Override minimum cost" msgstr "" -#: part/models.py:3131 +#: part/models.py:3096 msgid "Override maximum cost" msgstr "" -#: part/models.py:3138 +#: part/models.py:3103 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3145 +#: part/models.py:3110 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3151 +#: part/models.py:3116 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3152 +#: part/models.py:3117 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3158 +#: part/models.py:3123 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3159 +#: part/models.py:3124 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3165 +#: part/models.py:3130 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3131 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3172 +#: part/models.py:3137 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3138 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3192 +#: part/models.py:3157 msgid "Part for stocktake" msgstr "" -#: part/models.py:3197 +#: part/models.py:3162 msgid "Item Count" msgstr "" -#: part/models.py:3198 +#: part/models.py:3163 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3206 +#: part/models.py:3171 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3210 part/models.py:3293 +#: part/models.py:3175 part/models.py:3258 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report.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/part.js:1086 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" -#: part/models.py:3211 +#: part/models.py:3176 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3219 +#: part/models.py:3184 msgid "Additional notes" msgstr "" -#: part/models.py:3229 +#: part/models.py:3194 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3235 +#: part/models.py:3200 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3236 +#: part/models.py:3201 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3242 +#: part/models.py:3207 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3243 +#: part/models.py:3208 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3264 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3300 +#: part/models.py:3265 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3270 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3306 +#: part/models.py:3271 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3316 +#: part/models.py:3281 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3478 +#: part/models.py:3423 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3489 +#: part/models.py:3444 part/models.py:3608 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3455 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3500 +#: part/models.py:3466 msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3517 templates/js/translated/part.js:2878 +#: part/models.py:3483 templates/js/translated/part.js:2880 msgid "Test Name" msgstr "" -#: part/models.py:3518 +#: part/models.py:3484 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3524 +#: part/models.py:3490 msgid "Test Key" msgstr "" -#: part/models.py:3525 +#: part/models.py:3491 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3532 +#: part/models.py:3498 msgid "Test Description" msgstr "" -#: part/models.py:3533 +#: part/models.py:3499 msgid "Enter description for this test" msgstr "" -#: part/models.py:3537 report/models.py:208 -#: templates/js/translated/part.js:2899 +#: part/models.py:3503 report/models.py:209 +#: templates/js/translated/part.js:2901 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" -#: part/models.py:3537 +#: part/models.py:3503 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3542 templates/js/translated/part.js:2907 +#: part/models.py:3508 templates/js/translated/part.js:2909 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3543 +#: part/models.py:3509 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3548 templates/js/translated/part.js:2915 +#: part/models.py:3514 templates/js/translated/part.js:2917 msgid "Requires Value" msgstr "" -#: part/models.py:3549 +#: part/models.py:3515 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3554 templates/js/translated/part.js:2922 +#: part/models.py:3520 templates/js/translated/part.js:2924 msgid "Requires Attachment" msgstr "" -#: part/models.py:3556 +#: part/models.py:3522 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3603 +#: part/models.py:3528 part/models.py:3667 templates/js/translated/part.js:1637 +msgid "Choices" +msgstr "" + +#: part/models.py:3529 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3583 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3608 +#: part/models.py:3588 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3628 -msgid "Choices must be unique" -msgstr "" - -#: part/models.py:3645 +#: part/models.py:3625 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3660 +#: part/models.py:3640 msgid "Parameter Name" msgstr "" -#: part/models.py:3667 +#: part/models.py:3647 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3675 +#: part/models.py:3655 msgid "Parameter description" msgstr "" -#: part/models.py:3681 templates/js/translated/part.js:1627 +#: part/models.py:3661 templates/js/translated/part.js:1628 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "" -#: part/models.py:3682 +#: part/models.py:3662 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3687 templates/js/translated/part.js:1636 -msgid "Choices" -msgstr "" - -#: part/models.py:3688 +#: part/models.py:3668 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3765 +#: part/models.py:3745 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3808 +#: part/models.py:3788 msgid "Parent Part" msgstr "" -#: part/models.py:3816 part/models.py:3917 part/models.py:3918 +#: part/models.py:3796 part/models.py:3897 part/models.py:3898 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3821 +#: part/models.py:3801 msgid "Data" msgstr "" -#: part/models.py:3822 +#: part/models.py:3802 msgid "Parameter Value" msgstr "" -#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3904 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3925 +#: part/models.py:3905 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3963 +#: part/models.py:3943 msgid "Part ID or part name" msgstr "" -#: part/models.py:3964 +#: part/models.py:3944 msgid "Unique part ID value" msgstr "" -#: part/models.py:3966 +#: part/models.py:3946 msgid "Part IPN value" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "Level" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "BOM level" msgstr "" -#: part/models.py:4057 +#: part/models.py:4037 msgid "Select parent part" msgstr "" -#: part/models.py:4067 +#: part/models.py:4047 msgid "Sub part" msgstr "" -#: part/models.py:4068 +#: part/models.py:4048 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4079 +#: part/models.py:4059 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4085 +#: part/models.py:4065 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4091 +#: part/models.py:4071 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4098 part/templates/part/upload_bom.html:55 +#: part/models.py:4078 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4099 +#: part/models.py:4079 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4106 +#: part/models.py:4086 msgid "BOM item reference" msgstr "" -#: part/models.py:4114 +#: part/models.py:4094 msgid "BOM item notes" msgstr "" -#: part/models.py:4120 +#: part/models.py:4100 msgid "Checksum" msgstr "" -#: part/models.py:4121 +#: part/models.py:4101 msgid "BOM line checksum" msgstr "" -#: part/models.py:4126 templates/js/translated/table_filters.js:174 +#: part/models.py:4106 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4127 +#: part/models.py:4107 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4132 part/templates/part/upload_bom.html:57 +#: part/models.py:4112 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:4133 +#: part/models.py:4113 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4138 part/templates/part/upload_bom.html:56 +#: part/models.py:4118 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4139 +#: part/models.py:4119 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4224 stock/models.py:664 +#: part/models.py:4204 stock/models.py:662 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4234 part/models.py:4236 +#: part/models.py:4214 part/models.py:4216 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4376 +#: part/models.py:4354 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4397 +#: part/models.py:4375 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4410 +#: part/models.py:4388 msgid "Parent BOM item" msgstr "" -#: part/models.py:4418 +#: part/models.py:4396 msgid "Substitute part" msgstr "" -#: part/models.py:4434 +#: part/models.py:4412 msgid "Part 1" msgstr "" -#: part/models.py:4442 +#: part/models.py:4420 msgid "Part 2" msgstr "" -#: part/models.py:4443 +#: part/models.py:4421 msgid "Select Related Part" msgstr "" -#: part/models.py:4462 +#: part/models.py:4440 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4467 +#: part/models.py:4445 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:119 part/serializers.py:141 +#: part/serializers.py:118 +msgid "Parent Category" +msgstr "" + +#: part/serializers.py:119 templates/js/translated/part.js:309 +msgid "Parent part category" +msgstr "" + +#: part/serializers.py:126 part/serializers.py:148 #: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/serializers.py:185 +#: part/serializers.py:180 msgid "Results" msgstr "" -#: part/serializers.py:186 +#: part/serializers.py:181 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 +#: part/serializers.py:205 part/serializers.py:223 stock/serializers.py:562 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:273 +#: part/serializers.py:268 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:397 +#: part/serializers.py:392 msgid "No parts selected" msgstr "" -#: part/serializers.py:407 +#: part/serializers.py:402 msgid "Select category" msgstr "" -#: part/serializers.py:442 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:443 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:448 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:449 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:455 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:456 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:463 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:488 +#: part/serializers.py:483 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:490 +#: part/serializers.py:485 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:497 +#: part/serializers.py:492 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:493 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:510 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:531 +#: part/serializers.py:526 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:541 +#: part/serializers.py:536 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:548 +#: part/serializers.py:543 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:557 +#: part/serializers.py:552 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:568 +#: part/serializers.py:563 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:575 +#: part/serializers.py:570 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:834 msgid "External Stock" msgstr "" -#: part/serializers.py:840 +#: part/serializers.py:836 msgid "Unallocated Stock" msgstr "" -#: part/serializers.py:843 +#: part/serializers.py:839 msgid "Variant Stock" msgstr "" -#: part/serializers.py:873 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:471 +#: part/serializers.py:869 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:472 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:870 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:880 templates/js/translated/part.js:102 +#: part/serializers.py:876 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:881 +#: part/serializers.py:877 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:887 +#: part/serializers.py:883 msgid "Supplier Information" msgstr "" -#: part/serializers.py:888 +#: part/serializers.py:884 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:896 +#: part/serializers.py:892 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:897 +#: part/serializers.py:893 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:902 +#: part/serializers.py:898 msgid "Existing Image" msgstr "" -#: part/serializers.py:903 +#: part/serializers.py:899 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:920 +#: part/serializers.py:916 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1126 +#: part/serializers.py:1122 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1136 +#: part/serializers.py:1132 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1146 +#: part/serializers.py:1142 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1152 +#: part/serializers.py:1148 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1153 +#: part/serializers.py:1149 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1158 +#: part/serializers.py:1154 msgid "Generate Report" msgstr "" -#: part/serializers.py:1159 +#: part/serializers.py:1155 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1164 +#: part/serializers.py:1160 msgid "Update Parts" msgstr "" -#: part/serializers.py:1165 +#: part/serializers.py:1161 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1173 +#: part/serializers.py:1169 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1279 +#: part/serializers.py:1275 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1286 +#: part/serializers.py:1282 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1294 +#: part/serializers.py:1290 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1301 +#: part/serializers.py:1297 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1330 +#: part/serializers.py:1326 msgid "Update" msgstr "" -#: part/serializers.py:1331 +#: part/serializers.py:1327 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1354 +#: part/serializers.py:1350 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1361 +#: part/serializers.py:1357 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1364 +#: part/serializers.py:1360 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1727 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1739 +#: part/serializers.py:1735 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1740 +#: part/serializers.py:1736 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1745 +#: part/serializers.py:1741 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1746 +#: part/serializers.py:1742 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1747 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1752 +#: part/serializers.py:1748 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1757 +#: part/serializers.py:1753 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1758 +#: part/serializers.py:1754 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1792 +#: part/serializers.py:1788 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1793 +#: part/serializers.py:1789 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1823 +#: part/serializers.py:1819 msgid "No part column specified" msgstr "" -#: part/serializers.py:1867 +#: part/serializers.py:1863 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1870 +#: part/serializers.py:1866 msgid "No matching part found" msgstr "" -#: part/serializers.py:1873 +#: part/serializers.py:1869 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1882 +#: part/serializers.py:1878 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1890 +#: part/serializers.py:1886 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1911 +#: part/serializers.py:1907 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 +#: part/stocktake.py:225 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "" -#: part/stocktake.py:225 +#: part/stocktake.py:226 msgid "Total Cost Min" msgstr "" -#: part/stocktake.py:226 +#: part/stocktake.py:227 msgid "Total Cost Max" msgstr "" -#: part/stocktake.py:284 +#: part/stocktake.py:285 msgid "Stocktake Report Available" msgstr "" -#: part/stocktake.py:285 +#: part/stocktake.py:286 msgid "A new stocktake report is available for download" msgstr "" @@ -7151,7 +7227,7 @@ 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 +#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" @@ -7251,15 +7327,15 @@ msgstr "" msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:655 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:663 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:748 +#: part/templates/part/detail.html:750 msgid "Add Test Result Template" msgstr "" @@ -7340,7 +7416,7 @@ msgstr "" msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" msgstr "" @@ -7412,7 +7488,7 @@ 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:2443 +#: templates/js/translated/part.js:1265 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7505,8 +7581,8 @@ msgstr "" #: 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:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/part.js:1243 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 #: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "Наличност" @@ -7549,7 +7625,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:247 +#: part/templates/part/prices.html:28 stock/admin.py:251 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 @@ -7626,8 +7702,8 @@ msgstr "" #: part/templates/part/stock_count.html:7 #: templates/js/translated/model_renderers.js:227 -#: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 -#: templates/js/translated/part.js:2142 +#: templates/js/translated/part.js:705 templates/js/translated/part.js:2141 +#: templates/js/translated/part.js:2143 msgid "No Stock" msgstr "Няма наличност" @@ -7999,7 +8075,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:308 msgid "Landscape" msgstr "" @@ -8112,62 +8188,62 @@ msgstr "" msgid "Uninstalled plugin successfully" msgstr "" -#: plugin/models.py:35 +#: plugin/models.py:36 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:36 +#: plugin/models.py:37 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:42 users/models.py:100 +#: plugin/models.py:43 users/models.py:100 msgid "Key" msgstr "" -#: plugin/models.py:43 +#: plugin/models.py:44 msgid "Key of plugin" msgstr "" -#: plugin/models.py:51 +#: plugin/models.py:52 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:58 plugin/serializers.py:90 +#: plugin/models.py:59 plugin/serializers.py:90 msgid "Package Name" msgstr "" -#: plugin/models.py:60 +#: plugin/models.py:61 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:65 +#: plugin/models.py:66 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:156 templates/js/translated/table_filters.js:370 +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "" -#: plugin/models.py:165 +#: plugin/models.py:166 msgid "Sample plugin" msgstr "" -#: plugin/models.py:173 +#: plugin/models.py:174 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:181 +#: plugin/models.py:182 msgid "Package Plugin" msgstr "" -#: plugin/models.py:205 report/models.py:474 +#: plugin/models.py:220 report/models.py:475 #: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:252 +#: plugin/models.py:267 msgid "Method" msgstr "" @@ -8175,17 +8251,17 @@ msgstr "" msgid "No author found" msgstr "" -#: plugin/registry.py:597 +#: plugin/registry.py:534 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:600 +#: plugin/registry.py:537 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:602 +#: plugin/registry.py:539 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -8300,23 +8376,19 @@ msgstr "" msgid "Activate this plugin" msgstr "" -#: plugin/serializers.py:234 +#: plugin/serializers.py:226 msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:235 +#: plugin/serializers.py:227 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:77 +#: report/api.py:88 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:89 report/serializers.py:53 -msgid "Model Type" -msgstr "" - -#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/api.py:103 report/models.py:439 report/serializers.py:98 #: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 #: templates/js/translated/return_order.js:353 #: templates/js/translated/sales_order.js:887 @@ -8324,176 +8396,176 @@ msgstr "" msgid "Items" msgstr "" -#: report/api.py:168 +#: report/api.py:180 msgid "Plugin not found" msgstr "" -#: report/api.py:170 +#: report/api.py:182 msgid "Plugin is not active" msgstr "" -#: report/api.py:172 +#: report/api.py:184 msgid "Plugin does not support label printing" msgstr "" -#: report/api.py:221 +#: report/api.py:233 msgid "Invalid label dimensions" msgstr "" -#: report/api.py:236 report/api.py:316 +#: report/api.py:248 report/api.py:329 msgid "No valid items provided to template" msgstr "" -#: report/api.py:271 +#: report/api.py:283 msgid "Error printing label" msgstr "" -#: report/api.py:362 report/api.py:398 +#: report/api.py:375 report/api.py:411 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/helpers.py:41 +#: report/helpers.py:43 msgid "A4" msgstr "" -#: report/helpers.py:42 +#: report/helpers.py:44 msgid "A3" msgstr "" -#: report/helpers.py:43 +#: report/helpers.py:45 msgid "Legal" msgstr "" -#: report/helpers.py:44 +#: report/helpers.py:46 msgid "Letter" msgstr "" -#: report/models.py:118 +#: report/models.py:119 msgid "Template file with this name already exists" msgstr "" -#: report/models.py:150 +#: report/models.py:151 msgid "Template name" msgstr "" -#: report/models.py:156 +#: report/models.py:157 msgid "Template description" msgstr "" -#: report/models.py:162 +#: report/models.py:163 msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Filename Pattern" msgstr "" -#: report/models.py:203 +#: report/models.py:204 msgid "Pattern for generating filenames" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Template is enabled" msgstr "" -#: report/models.py:214 +#: report/models.py:215 msgid "Target model type for template" msgstr "" -#: report/models.py:234 +#: report/models.py:235 msgid "Filters" msgstr "" -#: report/models.py:235 +#: report/models.py:236 msgid "Template query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:294 report/models.py:361 +#: report/models.py:295 report/models.py:362 msgid "Template file" msgstr "" -#: report/models.py:302 +#: report/models.py:303 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:308 +#: report/models.py:309 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:367 +#: report/models.py:368 msgid "Width [mm]" msgstr "" -#: report/models.py:368 +#: report/models.py:369 msgid "Label width, specified in mm" msgstr "" -#: report/models.py:374 +#: report/models.py:375 msgid "Height [mm]" msgstr "" -#: report/models.py:375 +#: report/models.py:376 msgid "Label height, specified in mm" msgstr "" -#: report/models.py:438 +#: report/models.py:439 msgid "Number of items to process" msgstr "" -#: report/models.py:444 +#: report/models.py:445 msgid "Report generation is complete" msgstr "" -#: report/models.py:448 templates/js/translated/build.js:2177 +#: report/models.py:449 templates/js/translated/build.js:2177 msgid "Progress" msgstr "" -#: report/models.py:448 +#: report/models.py:449 msgid "Report generation progress" msgstr "" -#: report/models.py:456 +#: report/models.py:457 msgid "Report Template" msgstr "" -#: report/models.py:463 report/models.py:486 +#: report/models.py:464 report/models.py:487 msgid "Output File" msgstr "" -#: report/models.py:464 report/models.py:487 +#: report/models.py:465 report/models.py:488 msgid "Generated output file" msgstr "" -#: report/models.py:475 +#: report/models.py:476 msgid "Label output plugin" msgstr "" -#: report/models.py:479 +#: report/models.py:480 msgid "Label Template" msgstr "" -#: report/models.py:502 +#: report/models.py:503 msgid "Snippet" msgstr "" -#: report/models.py:503 +#: report/models.py:504 msgid "Report snippet file" msgstr "" -#: report/models.py:510 +#: report/models.py:511 msgid "Snippet file description" msgstr "" -#: report/models.py:528 +#: report/models.py:529 msgid "Asset" msgstr "" -#: report/models.py:529 +#: report/models.py:530 msgid "Report asset file" msgstr "" -#: report/models.py:536 +#: report/models.py:537 msgid "Asset file description" msgstr "" @@ -8566,8 +8638,8 @@ msgid "Total" msgstr "" #: report/templates/report/inventree_return_order_report.html:25 -#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 -#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:824 +#: stock/serializers.py:149 stock/templates/stock/item_base.html:311 #: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 #: templates/js/translated/build.js:2355 #: templates/js/translated/model_renderers.js:230 @@ -8597,32 +8669,32 @@ msgstr "" msgid "Test" msgstr "" -#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2412 msgid "Result" msgstr "" -#: report/templates/report/inventree_test_report.html:130 +#: report/templates/report/inventree_test_report.html:129 msgid "Pass" msgstr "" -#: report/templates/report/inventree_test_report.html:132 +#: report/templates/report/inventree_test_report.html:131 msgid "Fail" msgstr "" -#: report/templates/report/inventree_test_report.html:139 +#: report/templates/report/inventree_test_report.html:138 msgid "No result (required)" msgstr "" -#: report/templates/report/inventree_test_report.html:141 +#: report/templates/report/inventree_test_report.html:140 msgid "No result" msgstr "" -#: report/templates/report/inventree_test_report.html:154 +#: report/templates/report/inventree_test_report.html:153 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "" -#: report/templates/report/inventree_test_report.html:168 stock/admin.py:162 +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 #: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 #: templates/js/translated/stock.js:3110 msgid "Serial" @@ -8644,654 +8716,670 @@ msgstr "" msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:172 +#: stock/admin.py:51 stock/admin.py:171 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:176 +#: stock/admin.py:53 stock/admin.py:175 msgid "Location Name" msgstr "" -#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/admin.py:63 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:149 +#: stock/admin.py:148 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:168 +#: stock/admin.py:167 msgid "Status Code" msgstr "" -#: stock/admin.py:180 +#: stock/admin.py:179 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:185 +#: stock/admin.py:184 +msgid "Supplier Part SKU" +msgstr "" + +#: stock/admin.py:189 msgid "Supplier ID" msgstr "" -#: stock/admin.py:191 +#: stock/admin.py:195 msgid "Supplier Name" msgstr "" -#: stock/admin.py:196 +#: stock/admin.py:200 msgid "Customer ID" msgstr "" -#: stock/admin.py:201 stock/models.py:806 +#: stock/admin.py:205 stock/models.py:804 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:206 +#: stock/admin.py:210 msgid "Build ID" msgstr "" -#: stock/admin.py:216 +#: stock/admin.py:220 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:221 +#: stock/admin.py:225 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:236 +#: stock/admin.py:240 msgid "Review Needed" msgstr "" -#: stock/admin.py:241 +#: stock/admin.py:245 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:256 stock/models.py:900 +#: stock/admin.py:260 stock/models.py:898 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "" -#: stock/api.py:318 +#: stock/api.py:312 msgid "Filter by location depth" msgstr "" -#: stock/api.py:338 +#: stock/api.py:332 +msgid "Filter by top-level locations" +msgstr "" + +#: stock/api.py:347 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:359 +#: stock/api.py:369 stock/serializers.py:1085 msgid "Parent Location" msgstr "" -#: stock/api.py:360 +#: stock/api.py:370 msgid "Filter by parent location" msgstr "" -#: stock/api.py:615 templates/js/translated/table_filters.js:427 +#: stock/api.py:625 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:803 +#: stock/api.py:813 msgid "Part Tree" msgstr "" -#: stock/api.py:833 +#: stock/api.py:843 msgid "Expiry date before" msgstr "" -#: stock/api.py:837 +#: stock/api.py:847 msgid "Expiry date after" msgstr "" -#: stock/api.py:840 stock/templates/stock/item_base.html:439 +#: stock/api.py:850 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:927 +#: stock/api.py:937 msgid "Quantity is required" msgstr "" -#: stock/api.py:933 +#: stock/api.py:943 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:964 +#: stock/api.py:974 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:974 +#: stock/api.py:984 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:1005 +#: stock/api.py:1015 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:59 +#: stock/models.py:60 msgid "Stock Location type" msgstr "" -#: stock/models.py:60 +#: stock/models.py:61 msgid "Stock Location types" msgstr "" -#: stock/models.py:86 +#: stock/models.py:87 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:123 stock/models.py:788 +#: stock/models.py:124 stock/models.py:786 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Място в склада" -#: stock/models.py:124 stock/templates/stock/location.html:186 +#: stock/models.py:125 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "Места в склада" -#: stock/models.py:166 stock/models.py:949 +#: stock/models.py:167 stock/models.py:947 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:167 stock/models.py:950 +#: stock/models.py:168 stock/models.py:948 msgid "Select Owner" msgstr "" -#: stock/models.py:175 +#: stock/models.py:176 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:182 templates/js/translated/stock.js:2781 +#: stock/models.py:183 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:183 +#: stock/models.py:184 msgid "This is an external stock location" msgstr "" -#: stock/models.py:189 templates/js/translated/stock.js:2790 +#: stock/models.py:190 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" -#: stock/models.py:193 +#: stock/models.py:194 msgid "Stock location type of this location" msgstr "" -#: stock/models.py:262 +#: stock/models.py:261 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:643 +#: stock/models.py:641 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:670 stock/serializers.py:419 +#: stock/models.py:668 stock/serializers.py:446 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:687 +#: stock/models.py:685 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:697 stock/models.py:710 +#: stock/models.py:695 stock/models.py:708 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:700 +#: stock/models.py:698 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:724 +#: stock/models.py:722 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:729 +#: stock/models.py:727 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:742 +#: stock/models.py:740 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:758 +#: stock/models.py:756 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:770 +#: stock/models.py:768 msgid "Base part" msgstr "" -#: stock/models.py:780 +#: stock/models.py:778 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:792 +#: stock/models.py:790 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:800 stock/serializers.py:1480 +#: stock/models.py:798 stock/serializers.py:1476 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:811 +#: stock/models.py:809 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:830 +#: stock/models.py:828 msgid "Serial number for this item" msgstr "" -#: stock/models.py:844 stock/serializers.py:1463 +#: stock/models.py:842 stock/serializers.py:1459 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:849 +#: stock/models.py:847 msgid "Stock Quantity" msgstr "" -#: stock/models.py:859 +#: stock/models.py:857 msgid "Source Build" msgstr "" -#: stock/models.py:862 +#: stock/models.py:860 msgid "Build for this stock item" msgstr "" -#: stock/models.py:869 stock/templates/stock/item_base.html:363 +#: stock/models.py:867 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:872 +#: stock/models.py:870 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:881 +#: stock/models.py:879 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:885 +#: stock/models.py:883 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:891 +#: stock/models.py:889 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:902 +#: stock/models.py:900 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:920 +#: stock/models.py:918 msgid "Delete on deplete" msgstr "" -#: stock/models.py:921 +#: stock/models.py:919 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:941 +#: stock/models.py:939 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:972 +#: stock/models.py:970 msgid "Converted to part" msgstr "" -#: stock/models.py:1490 +#: stock/models.py:1486 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1496 +#: stock/models.py:1492 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1500 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1510 +#: stock/models.py:1506 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1515 +#: stock/models.py:1511 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1523 stock/serializers.py:658 +#: stock/models.py:1519 stock/serializers.py:660 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1620 +#: stock/models.py:1616 msgid "Test template does not exist" msgstr "" -#: stock/models.py:1638 +#: stock/models.py:1634 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1642 +#: stock/models.py:1638 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1645 +#: stock/models.py:1641 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1648 +#: stock/models.py:1644 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1651 +#: stock/models.py:1647 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1654 +#: stock/models.py:1650 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1661 stock/serializers.py:1369 +#: stock/models.py:1657 stock/serializers.py:1365 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1665 +#: stock/models.py:1661 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1673 +#: stock/models.py:1669 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1678 +#: stock/models.py:1674 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1905 +#: stock/models.py:1901 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2310 msgid "Entry notes" msgstr "" -#: stock/models.py:2391 +#: stock/models.py:2378 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2396 +#: stock/models.py:2383 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2423 +#: stock/models.py:2388 +msgid "Invalid value for this test" +msgstr "" + +#: stock/models.py:2412 msgid "Test result" msgstr "" -#: stock/models.py:2430 +#: stock/models.py:2419 msgid "Test output value" msgstr "" -#: stock/models.py:2438 +#: stock/models.py:2427 msgid "Test result attachment" msgstr "" -#: stock/models.py:2442 +#: stock/models.py:2431 msgid "Test notes" msgstr "" -#: stock/models.py:2450 templates/js/translated/stock.js:1548 +#: stock/models.py:2439 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2440 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2457 +#: stock/models.py:2446 msgid "Started" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2447 msgid "The timestamp of the test start" msgstr "" -#: stock/models.py:2464 +#: stock/models.py:2453 msgid "Finished" msgstr "" -#: stock/models.py:2465 +#: stock/models.py:2454 msgid "The timestamp of the test finish" msgstr "" -#: stock/serializers.py:75 +#: stock/serializers.py:74 msgid "Generated batch code" msgstr "" -#: stock/serializers.py:84 +#: stock/serializers.py:83 msgid "Select build order" msgstr "" -#: stock/serializers.py:93 +#: stock/serializers.py:92 msgid "Select stock item to generate batch code for" msgstr "" -#: stock/serializers.py:102 +#: stock/serializers.py:101 msgid "Select location to generate batch code for" msgstr "" -#: stock/serializers.py:111 +#: stock/serializers.py:110 msgid "Select part to generate batch code for" msgstr "" -#: stock/serializers.py:120 +#: stock/serializers.py:119 msgid "Select purchase order" msgstr "" -#: stock/serializers.py:127 +#: stock/serializers.py:126 msgid "Enter quantity for batch code" msgstr "" -#: stock/serializers.py:150 +#: stock/serializers.py:149 msgid "Generated serial number" msgstr "" -#: stock/serializers.py:159 +#: stock/serializers.py:158 msgid "Select part to generate serial number for" msgstr "" -#: stock/serializers.py:167 +#: stock/serializers.py:166 msgid "Quantity of serial numbers to generate" msgstr "" -#: stock/serializers.py:229 +#: stock/serializers.py:228 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:248 +#: stock/serializers.py:247 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:280 +#: stock/serializers.py:279 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:313 +#: stock/serializers.py:315 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:411 +#: stock/serializers.py:438 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:531 +#: stock/serializers.py:558 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:595 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:606 +#: stock/serializers.py:608 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:613 +#: stock/serializers.py:615 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 +#: stock/serializers.py:626 stock/serializers.py:1322 stock/serializers.py:1578 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:631 +#: stock/serializers.py:633 msgid "Optional note field" msgstr "" -#: stock/serializers.py:641 +#: stock/serializers.py:643 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:696 +#: stock/serializers.py:698 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:703 +#: stock/serializers.py:705 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:704 +#: stock/serializers.py:706 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 -#: stock/serializers.py:935 +#: stock/serializers.py:711 stock/serializers.py:791 stock/serializers.py:887 +#: stock/serializers.py:937 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:719 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:725 +#: stock/serializers.py:727 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:736 +#: stock/serializers.py:738 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:749 +#: stock/serializers.py:751 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:784 +#: stock/serializers.py:786 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:819 +#: stock/serializers.py:821 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:834 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:849 +#: stock/serializers.py:851 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:880 +#: stock/serializers.py:882 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:917 +#: stock/serializers.py:919 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:923 +#: stock/serializers.py:925 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:1019 stock/serializers.py:1082 +#: stock/serializers.py:1021 stock/serializers.py:1093 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:220 +#: stock/templates/stock/location.html:222 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1198 +#: stock/serializers.py:1086 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: stock/serializers.py:1194 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1202 +#: stock/serializers.py:1198 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1206 +#: stock/serializers.py:1202 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1230 +#: stock/serializers.py:1226 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1236 +#: stock/serializers.py:1232 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1244 +#: stock/serializers.py:1240 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1254 stock/serializers.py:1508 +#: stock/serializers.py:1250 stock/serializers.py:1504 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1333 +#: stock/serializers.py:1329 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1338 +#: stock/serializers.py:1334 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1339 +#: stock/serializers.py:1335 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1344 +#: stock/serializers.py:1340 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1345 +#: stock/serializers.py:1341 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1355 +#: stock/serializers.py:1351 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1422 +#: stock/serializers.py:1418 msgid "No Change" msgstr "" -#: stock/serializers.py:1451 +#: stock/serializers.py:1447 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1470 +#: stock/serializers.py:1466 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1498 +#: stock/serializers.py:1494 msgid "Stock transaction notes" msgstr "" @@ -9444,7 +9532,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276 msgid "Delete Test Data" msgstr "" @@ -9464,11 +9552,11 @@ msgstr "" msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:272 +#: stock/templates/stock/item.html:264 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "" @@ -9754,28 +9842,28 @@ msgstr "" msgid "Location Type" msgstr "" -#: stock/templates/stock/location.html:224 +#: stock/templates/stock/location.html:226 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:225 +#: stock/templates/stock/location.html:227 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:295 +#: stock/templates/stock/location.html:299 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:317 +#: stock/templates/stock/location.html:321 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:390 +#: stock/templates/stock/location.html:394 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:401 +#: stock/templates/stock/location.html:405 msgid "Link Barcode to Stock Location" msgstr "" @@ -10199,20 +10287,20 @@ msgstr "" msgid "Pricing Settings" msgstr "" -#: templates/InvenTree/settings/pricing.html:34 +#: templates/InvenTree/settings/pricing.html:35 msgid "Exchange Rates" msgstr "" -#: templates/InvenTree/settings/pricing.html:38 +#: templates/InvenTree/settings/pricing.html:39 msgid "Update Now" msgstr "" -#: templates/InvenTree/settings/pricing.html:46 -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 msgid "Last Update" msgstr "" -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:51 msgid "Never" msgstr "" @@ -10269,8 +10357,8 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:547 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 +#: templates/js/translated/part.js:393 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:402 msgid "Delete" msgstr "" @@ -10310,12 +10398,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 -#: templates/js/translated/part.js:1645 +#: templates/js/translated/part.js:1646 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 -#: templates/js/translated/part.js:1646 +#: templates/js/translated/part.js:1647 msgid "Delete Template" msgstr "" @@ -10705,7 +10793,7 @@ msgid "Submit Bug Report" msgstr "" #: templates/about.html:91 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 +#: templates/js/translated/helpers.js:589 msgid "copy to clipboard" msgstr "" @@ -10769,7 +10857,7 @@ 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 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45 msgid "Return to Site" msgstr "" @@ -10883,15 +10971,19 @@ msgstr "" msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "" -#: templates/allauth_2fa/setup.html:23 +#: templates/allauth_2fa/setup.html:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 msgid "Step 2" msgstr "" -#: templates/allauth_2fa/setup.html:27 +#: templates/allauth_2fa/setup.html:28 msgid "Input a token generated by the app:" msgstr "" -#: templates/allauth_2fa/setup.html:37 +#: templates/allauth_2fa/setup.html:38 msgid "Verify" msgstr "" @@ -10970,7 +11062,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3217 +#: templates/js/translated/part.js:3219 msgid "Minimum Quantity" msgstr "" @@ -11058,27 +11150,27 @@ msgstr "" msgid "Delete attachments" msgstr "" -#: templates/js/translated/attachment.js:253 +#: templates/js/translated/attachment.js:260 msgid "Attachment actions" msgstr "" -#: templates/js/translated/attachment.js:275 +#: templates/js/translated/attachment.js:294 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:315 +#: templates/js/translated/attachment.js:334 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:365 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:366 +#: templates/js/translated/attachment.js:385 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:374 +#: templates/js/translated/attachment.js:393 msgid "Delete attachment" msgstr "" @@ -11359,7 +11451,7 @@ msgid "Includes variant and substitute stock" msgstr "" #: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 -#: templates/js/translated/part.js:1256 +#: templates/js/translated/part.js:1257 #: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" @@ -11686,7 +11778,7 @@ msgstr "" #: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 #: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 -#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11729,8 +11821,8 @@ msgstr "" msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 -#: templates/js/translated/part.js:1202 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:791 +#: templates/js/translated/part.js:1203 msgid "Trackable part" msgstr "" @@ -11916,7 +12008,7 @@ msgid "Delete Parameters" msgstr "" #: templates/js/translated/company.js:1191 -#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2244 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2245 msgid "Order parts" msgstr "" @@ -11933,34 +12025,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:1279 -#: templates/js/translated/company.js:1567 templates/js/translated/part.js:798 -#: templates/js/translated/part.js:1210 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Template part" msgstr "" #: templates/js/translated/company.js:1283 -#: templates/js/translated/company.js:1571 templates/js/translated/part.js:802 -#: templates/js/translated/part.js:1214 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:803 +#: templates/js/translated/part.js:1215 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1464 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1465 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1527 +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1528 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1528 +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1529 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1433 +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1434 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1549 +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1550 msgid "Delete Parameter" msgstr "" @@ -12094,23 +12186,23 @@ msgstr "" msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2499 +#: templates/js/translated/forms.js:2500 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3113 +#: templates/js/translated/forms.js:3114 msgid "Select Columns" msgstr "" @@ -12211,7 +12303,7 @@ msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 -#: templates/js/translated/part.js:1604 +#: templates/js/translated/part.js:1605 msgid "ID" msgstr "" @@ -12292,347 +12384,343 @@ msgstr "" 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 +#: templates/js/translated/part.js:333 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:355 +#: templates/js/translated/part.js:356 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:356 +#: templates/js/translated/part.js:357 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:370 +#: templates/js/translated/part.js:371 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:383 +#: templates/js/translated/part.js:384 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:388 +#: templates/js/translated/part.js:389 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:397 +#: templates/js/translated/part.js:398 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:401 +#: templates/js/translated/part.js:402 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:406 +#: templates/js/translated/part.js:407 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:430 +#: templates/js/translated/part.js:431 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:432 +#: templates/js/translated/part.js:433 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:433 +#: templates/js/translated/part.js:434 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:462 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:463 +#: templates/js/translated/part.js:464 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:474 +#: templates/js/translated/part.js:475 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:531 +#: templates/js/translated/part.js:532 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:532 +#: templates/js/translated/part.js:533 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:546 +#: templates/js/translated/part.js:547 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:548 +#: templates/js/translated/part.js:549 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:549 +#: templates/js/translated/part.js:550 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:550 +#: templates/js/translated/part.js:551 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:557 +#: templates/js/translated/part.js:558 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:593 +#: templates/js/translated/part.js:594 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:595 +#: templates/js/translated/part.js:596 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:600 +#: templates/js/translated/part.js:601 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:602 +#: templates/js/translated/part.js:603 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:619 +#: templates/js/translated/part.js:620 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:629 +#: templates/js/translated/part.js:630 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:632 +#: templates/js/translated/part.js:633 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:657 +#: templates/js/translated/part.js:658 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:685 +#: templates/js/translated/part.js:686 #: templates/js/translated/table_filters.js:747 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:688 +#: templates/js/translated/part.js:689 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:748 +#: templates/js/translated/part.js:749 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:771 +#: templates/js/translated/part.js:772 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +#: templates/js/translated/part.js:795 templates/js/translated/part.js:1207 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:806 +#: templates/js/translated/part.js:807 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:810 +#: templates/js/translated/part.js:811 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:897 +#: templates/js/translated/part.js:898 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:901 +#: templates/js/translated/part.js:902 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1050 +#: templates/js/translated/part.js:1051 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1145 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +#: templates/js/translated/part.js:1113 templates/js/translated/part.js:1155 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1281 +#: templates/js/translated/part.js:1282 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1599 +#: templates/js/translated/part.js:1600 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1662 +#: templates/js/translated/part.js:1663 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1674 +#: templates/js/translated/part.js:1675 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1682 +#: templates/js/translated/part.js:1683 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1716 +#: templates/js/translated/part.js:1717 #: templates/js/translated/purchase_order.js:1654 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1860 +#: templates/js/translated/part.js:1861 #: templates/js/translated/purchase_order.js:2153 #: templates/js/translated/return_order.js:755 #: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1906 +#: templates/js/translated/part.js:1907 #: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1970 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1991 +#: templates/js/translated/part.js:1992 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 +#: templates/js/translated/part.js:2080 templates/js/translated/part.js:2506 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2200 +#: templates/js/translated/part.js:2201 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2205 +#: templates/js/translated/part.js:2206 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2235 +#: templates/js/translated/part.js:2236 msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2286 +#: templates/js/translated/part.js:2287 msgid "part" msgstr "" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2288 msgid "parts" msgstr "" -#: templates/js/translated/part.js:2383 +#: templates/js/translated/part.js:2384 msgid "No category" msgstr "" -#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2546 +#: templates/js/translated/part.js:2547 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2644 +#: templates/js/translated/part.js:2645 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2760 +#: templates/js/translated/part.js:2761 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2776 +#: templates/js/translated/part.js:2777 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2865 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2887 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/part.js:2938 templates/js/translated/stock.js:1457 #: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2940 +#: templates/js/translated/part.js:2942 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2956 +#: templates/js/translated/part.js:2958 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2970 +#: templates/js/translated/part.js:2972 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3051 templates/js/translated/part.js:3052 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3052 +#: templates/js/translated/part.js:3054 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3058 +#: templates/js/translated/part.js:3060 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3108 +#: templates/js/translated/part.js:3110 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3114 +#: templates/js/translated/part.js:3116 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3210 +#: templates/js/translated/part.js:3212 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3226 +#: templates/js/translated/part.js:3228 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3271 +#: templates/js/translated/part.js:3273 msgid "Minimum Stock Level" msgstr "" @@ -13240,10 +13328,6 @@ msgstr "" 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 "" @@ -13412,7 +13496,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:401 +#: templates/js/translated/stock.js:1042 users/models.py:392 msgid "Add" msgstr "" @@ -14303,34 +14387,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:384 +#: users/models.py:375 msgid "Permission set" msgstr "" -#: users/models.py:393 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "View" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "Permission to view items" msgstr "" -#: users/models.py:401 +#: users/models.py:392 msgid "Permission to add items" msgstr "" -#: users/models.py:405 +#: users/models.py:396 msgid "Change" msgstr "" -#: users/models.py:407 +#: users/models.py:398 msgid "Permissions to edit items" msgstr "" -#: users/models.py:413 +#: users/models.py:404 msgid "Permission to delete items" msgstr "" + diff --git a/src/backend/InvenTree/locale/cs/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/cs/LC_MESSAGES/django.po index b1a73d11a1..03e53a7bdc 100644 --- a/src/backend/InvenTree/locale/cs/LC_MESSAGES/django.po +++ b/src/backend/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-05-31 07:08+0000\n" -"PO-Revision-Date: 2024-05-27 11:54\n" +"POT-Creation-Date: 2024-06-26 03:18+0000\n" +"PO-Revision-Date: 2024-06-26 06:04\n" "Last-Translator: \n" "Language-Team: Czech\n" "Language: cs_CZ\n" @@ -21,7 +21,7 @@ msgstr "" msgid "API endpoint not found" msgstr "API endpoint nebyl nalezen" -#: InvenTree/api.py:536 +#: InvenTree/api.py:520 msgid "User does not have permission to view this model" msgstr "Uživatel nemá právo zobrazit tento model" @@ -52,25 +52,25 @@ msgstr "Vyplněno neplatné množství ({exc})" msgid "Error details can be found in the admin panel" msgstr "Podrobnosti o chybě lze nalézt v panelu administrace" -#: InvenTree/fields.py:139 +#: InvenTree/fields.py:136 msgid "Enter date" msgstr "Zadejte datum" -#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 -#: build/serializers.py:531 build/templates/build/sidebar.html:21 -#: company/models.py:849 company/templates/company/sidebar.html:37 -#: order/models.py:1332 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:205 InvenTree/models.py:918 build/serializers.py:452 +#: build/serializers.py:530 build/templates/build/sidebar.html:21 +#: company/models.py:817 company/templates/company/sidebar.html:37 +#: order/models.py:1296 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:3218 part/templates/part/part_sidebar.html:63 +#: part/models.py:3183 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_report.html:172 -#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 -#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 -#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 -#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:230 stock/models.py:2309 stock/models.py:2431 +#: stock/serializers.py:632 stock/serializers.py:790 stock/serializers.py:886 +#: stock/serializers.py:936 stock/serializers.py:1239 stock/serializers.py:1328 +#: stock/serializers.py:1493 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1080 +#: templates/js/translated/part.js:1081 #: templates/js/translated/purchase_order.js:2200 #: templates/js/translated/return_order.js:775 #: templates/js/translated/sales_order.js:1103 @@ -120,15 +120,15 @@ msgstr "Potvrzení emailové adresy" msgid "You must type the same email each time." msgstr "Pokaždé musíte zadat stejný email." -#: InvenTree/forms.py:253 InvenTree/forms.py:261 +#: InvenTree/forms.py:248 InvenTree/forms.py:256 msgid "The provided primary email address is not valid." msgstr "Zadaná primární e-mailová adresa je neplatná." -#: InvenTree/forms.py:268 +#: InvenTree/forms.py:263 msgid "The provided email domain is not approved." msgstr "Zadaná e-mailová doména není povolena." -#: InvenTree/forms.py:395 +#: InvenTree/forms.py:390 msgid "Registration is disabled." msgstr "Registrace vypnuta." @@ -171,35 +171,35 @@ msgstr "Počet jedinečných sériových čísel ({len(serials)}) musí odpovíd msgid "Remove HTML tags from this value" msgstr "Odstranit HTML tagy z této hodnoty" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Connection error" msgstr "Chyba spojení" -#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 msgid "Server responded with invalid status code" msgstr "Server odpověděl s neplatným stavovým kódem" -#: InvenTree/helpers_model.py:158 +#: InvenTree/helpers_model.py:148 msgid "Exception occurred" msgstr "Došlo k výjimce" -#: InvenTree/helpers_model.py:168 +#: InvenTree/helpers_model.py:158 msgid "Server responded with invalid Content-Length value" msgstr "Server odpověděl s neplatnou hodnotou Content-Length" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:161 msgid "Image size is too large" msgstr "Velikost obrázku je příliš velká" -#: InvenTree/helpers_model.py:183 +#: InvenTree/helpers_model.py:173 msgid "Image download exceeded maximum size" msgstr "Stahování obrázku překročilo maximální velikost" -#: InvenTree/helpers_model.py:188 +#: InvenTree/helpers_model.py:178 msgid "Remote server returned empty response" msgstr "Vzdálený server vrátil prázdnou odpověď" -#: InvenTree/helpers_model.py:196 +#: InvenTree/helpers_model.py:186 msgid "Supplied URL is not a valid image file" msgstr "Zadaná URL adresa není platný soubor obrázku" @@ -296,46 +296,50 @@ msgid "Portuguese (Brazilian)" msgstr "Portugalština (Brazilská)" #: InvenTree/locales.py:41 +msgid "Romanian" +msgstr "Rumunština" + +#: InvenTree/locales.py:42 msgid "Russian" msgstr "Ruština" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:43 msgid "Slovak" msgstr "Slovenština" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:44 msgid "Slovenian" msgstr "Slovinština" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:45 msgid "Serbian" msgstr "Srbština" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:46 msgid "Swedish" msgstr "Švédština" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:47 msgid "Thai" msgstr "Thajština" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:48 msgid "Turkish" msgstr "Turečtina" -#: InvenTree/locales.py:48 -msgid "Ukrainian" -msgstr "" - #: InvenTree/locales.py:49 +msgid "Ukrainian" +msgstr "Ukrajinština" + +#: InvenTree/locales.py:50 msgid "Vietnamese" msgstr "Vietnamština" -#: InvenTree/locales.py:50 +#: InvenTree/locales.py:51 msgid "Chinese (Simplified)" msgstr "Čínština (zjednodušená)" -#: InvenTree/locales.py:51 +#: InvenTree/locales.py:52 msgid "Chinese (Traditional)" msgstr "Čínština (tradiční)" @@ -344,153 +348,65 @@ msgstr "Čínština (tradiční)" 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:133 +#: InvenTree/magic_login.py:38 company/models.py:136 #: company/templates/company/company_base.html:138 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:677 msgid "Email" msgstr "E-mail" -#: InvenTree/models.py:107 +#: InvenTree/models.py:105 msgid "Error running plugin validation" msgstr "Chyba při ověření pluginu" -#: InvenTree/models.py:176 +#: InvenTree/models.py:174 msgid "Metadata must be a python dict object" msgstr "Metadata musí být objekt python dict" -#: InvenTree/models.py:182 +#: InvenTree/models.py:180 msgid "Plugin Metadata" msgstr "Metadata pluginu" -#: InvenTree/models.py:183 +#: InvenTree/models.py:181 msgid "JSON metadata field, for use by external plugins" msgstr "Pole metadat JSON pro použití externími pluginy" -#: InvenTree/models.py:413 +#: InvenTree/models.py:408 msgid "Improperly formatted pattern" msgstr "Nesprávně naformátovaný vzor" -#: InvenTree/models.py:420 +#: InvenTree/models.py:415 msgid "Unknown format key specified" msgstr "Neznámý formát klíče" -#: InvenTree/models.py:426 +#: InvenTree/models.py:421 msgid "Missing required format key" msgstr "Chybí požadovaný klíč" -#: InvenTree/models.py:437 +#: InvenTree/models.py:432 msgid "Reference field cannot be empty" msgstr "Referenční pole nemůže být prázdné" -#: InvenTree/models.py:445 +#: InvenTree/models.py:440 msgid "Reference must match required pattern" msgstr "Referenční číslo musí odpovídat požadovanému vzoru" -#: InvenTree/models.py:476 +#: InvenTree/models.py:471 msgid "Reference number is too large" msgstr "Referenční číslo je příliš velké" -#: InvenTree/models.py:550 -msgid "Missing file" -msgstr "Chybějící soubor" - -#: InvenTree/models.py:551 -msgid "Missing external link" -msgstr "Chybějící externí odkaz" - -#: InvenTree/models.py:572 stock/models.py:2437 -#: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:326 -msgid "Attachment" -msgstr "Příloha" - -#: InvenTree/models.py:573 -msgid "Select file to attach" -msgstr "Vyberte soubor k přiložení" - -#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:831 -#: order/models.py:303 order/models.py:1337 order/models.py:1753 -#: part/admin.py:55 part/models.py:962 -#: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_report.html:164 -#: stock/admin.py:225 templates/js/translated/company.js:1319 -#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2455 -#: templates/js/translated/purchase_order.js:2040 -#: templates/js/translated/purchase_order.js:2204 -#: templates/js/translated/return_order.js:779 -#: templates/js/translated/sales_order.js:1092 -#: templates/js/translated/sales_order.js:2023 -msgid "Link" -msgstr "Odkaz" - -#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 -#: stock/models.py:836 -msgid "Link to external URL" -msgstr "Odkaz na externí URL" - -#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:341 -msgid "Comment" -msgstr "Komentář" - -#: InvenTree/models.py:589 -msgid "File comment" -msgstr "Komentář k souboru" - -#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 -#: common/models.py:2518 common/models.py:2742 common/models.py:2743 -#: common/models.py:2988 common/models.py:2989 part/models.py:3228 -#: part/models.py:3315 part/models.py:3408 part/models.py:3436 -#: plugin/models.py:259 plugin/models.py:260 -#: report/templates/report/inventree_test_report.html:105 -#: templates/js/translated/stock.js:3036 users/models.py:111 -msgid "User" -msgstr "Uživatel" - -#: InvenTree/models.py:602 -msgid "upload date" -msgstr "datum přidání" - -#: InvenTree/models.py:624 -msgid "Filename must not be empty" -msgstr "Název souboru nesmí být prázdný" - -#: InvenTree/models.py:635 -msgid "Invalid attachment directory" -msgstr "Neplatný adresář přílohy" - -#: InvenTree/models.py:665 -#, python-brace-format -msgid "Filename contains illegal character '{c}'" -msgstr "Název souboru obsahuje nepovolený znak '{c}'" - -#: InvenTree/models.py:668 -msgid "Filename missing extension" -msgstr "Chybějící přípona souboru" - -#: InvenTree/models.py:677 -msgid "Attachment with this filename already exists" -msgstr "Příloha s tímto názvem již existuje" - -#: InvenTree/models.py:684 -msgid "Error renaming file" -msgstr "Chyba při přejmenování souboru" - -#: InvenTree/models.py:860 +#: InvenTree/models.py:719 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:877 +#: InvenTree/models.py:736 msgid "Invalid choice" msgstr "Neplatný výběr" -#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 -#: common/serializers.py:403 company/models.py:614 machine/models.py:24 -#: part/models.py:898 part/models.py:3659 plugin/models.py:50 -#: report/models.py:149 stock/models.py:72 +#: InvenTree/models.py:766 common/models.py:2623 common/models.py:3036 +#: common/serializers.py:408 company/models.py:580 machine/models.py:24 +#: part/models.py:891 part/models.py:3639 plugin/models.py:51 +#: report/models.py:150 stock/models.py:73 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:83 @@ -501,25 +417,25 @@ msgstr "Neplatný výběr" #: templates/js/translated/company.js:724 #: templates/js/translated/company.js:913 #: templates/js/translated/company.js:1165 -#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 -#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1187 +#: templates/js/translated/part.js:1475 templates/js/translated/part.js:1611 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Název" -#: InvenTree/models.py:913 build/models.py:218 -#: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:523 company/models.py:840 +#: InvenTree/models.py:772 build/models.py:220 +#: build/templates/build/detail.html:24 common/models.py:138 +#: company/models.py:509 company/models.py:808 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 order/models.py:289 -#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 -#: part/models.py:3674 part/templates/part/category.html:82 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:914 +#: part/models.py:3654 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:155 -#: report/models.py:509 report/models.py:535 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 #: report/templates/report/inventree_build_order_report.html:117 -#: stock/admin.py:55 stock/models.py:78 stock/templates/stock/location.html:125 +#: stock/admin.py:54 stock/models.py:79 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 @@ -528,10 +444,10 @@ msgstr "Název" #: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 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:2354 -#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1239 +#: templates/js/translated/part.js:1484 templates/js/translated/part.js:1622 +#: templates/js/translated/part.js:1959 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2897 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1706 #: templates/js/translated/purchase_order.js:1849 @@ -544,149 +460,141 @@ msgstr "Název" msgid "Description" msgstr "Popis" -#: InvenTree/models.py:914 stock/models.py:79 +#: InvenTree/models.py:773 stock/models.py:80 msgid "Description (optional)" msgstr "Popis (volitelně)" -#: InvenTree/models.py:923 -msgid "parent" -msgstr "nadřazený" - -#: InvenTree/models.py:929 templates/js/translated/part.js:2793 +#: InvenTree/models.py:788 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Cesta" -#: InvenTree/models.py:1035 +#: InvenTree/models.py:918 msgid "Markdown notes (optional)" msgstr "Poznámky (volitelné)" -#: InvenTree/models.py:1064 +#: InvenTree/models.py:947 msgid "Barcode Data" msgstr "Data čárového kódu" -#: InvenTree/models.py:1065 +#: InvenTree/models.py:948 msgid "Third party barcode data" msgstr "Data čárového kódu třetí strany" -#: InvenTree/models.py:1071 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "Hash čárového kódu" -#: InvenTree/models.py:1072 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "Jedinečný hash dat čárového kódu" -#: InvenTree/models.py:1125 +#: InvenTree/models.py:1008 msgid "Existing barcode found" msgstr "Nalezen existující čárový kód" -#: InvenTree/models.py:1168 +#: InvenTree/models.py:1051 msgid "Server Error" msgstr "Chyba serveru" -#: InvenTree/models.py:1169 +#: InvenTree/models.py:1052 msgid "An error has been logged by the server." msgstr "Server zaznamenal chybu." -#: InvenTree/serializers.py:62 part/models.py:4212 +#: InvenTree/serializers.py:63 part/models.py:4192 msgid "Must be a valid number" msgstr "Musí být platné číslo" -#: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:3036 +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3001 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Měna" -#: InvenTree/serializers.py:102 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "Vyberte měnu z dostupných možností" -#: InvenTree/serializers.py:441 +#: InvenTree/serializers.py:442 msgid "You do not have permission to change this user role." msgstr "Nemáte oprávnění měnit tuto uživatelskou roli." -#: InvenTree/serializers.py:453 +#: InvenTree/serializers.py:454 msgid "Only superusers can create new users" msgstr "Pouze superuživatelé mohou vytvářet nové uživatele" -#: InvenTree/serializers.py:472 +#: InvenTree/serializers.py:473 msgid "Your account has been created." msgstr "Váš účet byl vytvořen." -#: InvenTree/serializers.py:474 +#: InvenTree/serializers.py:475 msgid "Please use the password reset function to login" msgstr "Pro přihlášení použijte funkci obnovení hesla" -#: InvenTree/serializers.py:481 +#: InvenTree/serializers.py:482 msgid "Welcome to InvenTree" msgstr "Vítejte v InvenTree" -#: InvenTree/serializers.py:542 -msgid "Filename" -msgstr "Název souboru" - -#: InvenTree/serializers.py:576 +#: InvenTree/serializers.py:540 msgid "Invalid value" msgstr "Neplatná hodnota" -#: InvenTree/serializers.py:596 +#: InvenTree/serializers.py:560 msgid "Data File" msgstr "Datový soubor" -#: InvenTree/serializers.py:597 +#: InvenTree/serializers.py:561 msgid "Select data file for upload" msgstr "Vyberte datový soubor k nahrání" -#: InvenTree/serializers.py:614 +#: InvenTree/serializers.py:578 msgid "Unsupported file type" msgstr "Nepodporovaný typ souboru" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:584 msgid "File is too large" msgstr "Soubor je příliš velký" -#: InvenTree/serializers.py:641 +#: InvenTree/serializers.py:605 msgid "No columns found in file" msgstr "V souboru nebyly nalezeny žádné sloupce" -#: InvenTree/serializers.py:644 +#: InvenTree/serializers.py:608 msgid "No data rows found in file" msgstr "V souboru nebyly nalezeny žádné řádky s daty" -#: InvenTree/serializers.py:757 +#: InvenTree/serializers.py:721 msgid "No data rows provided" msgstr "Nebyly zadány žádné řádky s daty" -#: InvenTree/serializers.py:760 +#: InvenTree/serializers.py:724 msgid "No data columns supplied" msgstr "Nebyly zadány žádné sloupce s daty" -#: InvenTree/serializers.py:827 +#: InvenTree/serializers.py:791 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Chybí povinný sloupec: '{name}'" -#: InvenTree/serializers.py:836 +#: InvenTree/serializers.py:800 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Duplicitní sloupec: '{col}'" -#: InvenTree/serializers.py:859 +#: InvenTree/serializers.py:840 msgid "Remote Image" msgstr "Vzdálený obraz" -#: InvenTree/serializers.py:860 +#: InvenTree/serializers.py:841 msgid "URL of remote image file" msgstr "URL souboru vzdáleného obrázku" -#: InvenTree/serializers.py:878 +#: InvenTree/serializers.py:859 msgid "Downloading images from remote URL is not enabled" msgstr "Stahování obrázků ze vzdálené URL není povoleno" -#: InvenTree/status.py:66 part/serializers.py:1178 +#: InvenTree/status.py:66 part/serializers.py:1174 msgid "Background worker check failed" msgstr "Kontrola procesů na pozadí se nezdařila" @@ -698,27 +606,27 @@ msgstr "Email backend není nakonfigurován" msgid "InvenTree system health checks failed" msgstr "Kontroly zdraví systému InvenTree selhaly" -#: InvenTree/templatetags/inventree_extras.py:183 +#: InvenTree/templatetags/inventree_extras.py:184 msgid "Unknown database" msgstr "Neznámá databáze" -#: InvenTree/validators.py:31 InvenTree/validators.py:33 +#: InvenTree/validators.py:32 InvenTree/validators.py:34 msgid "Invalid physical unit" msgstr "Neplatná fyzikální jednotka" -#: InvenTree/validators.py:39 +#: InvenTree/validators.py:40 msgid "Not a valid currency code" msgstr "Neplatný kód měny" -#: InvenTree/validators.py:121 InvenTree/validators.py:137 +#: InvenTree/validators.py:118 InvenTree/validators.py:134 msgid "Overage value must not be negative" msgstr "Přidaná hodnota nesmí být záporná" -#: InvenTree/validators.py:139 +#: InvenTree/validators.py:136 msgid "Overage must not exceed 100%" msgstr "Nesmí přesáhnout 100%" -#: InvenTree/validators.py:145 +#: InvenTree/validators.py:142 msgid "Invalid value for overage" msgstr "Neplatná hodnota překročení" @@ -750,14 +658,14 @@ 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:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: build/api.py:299 part/models.py:4070 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "Spotřební materiál" -#: build/api.py:300 part/models.py:4084 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4064 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2529 #: templates/js/translated/table_filters.js:186 @@ -778,30 +686,30 @@ msgstr "Sledováno" msgid "Allocated" msgstr "Přiděleno" -#: build/api.py:311 company/models.py:904 company/serializers.py:383 +#: build/api.py:311 company/models.py:872 company/serializers.py:359 #: 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:2561 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:234 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 -#: templates/js/translated/part.js:699 +#: templates/js/translated/part.js:693 templates/js/translated/part.js:695 +#: templates/js/translated/part.js:700 #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:575 msgid "Available" msgstr "Dostupné" -#: build/models.py:83 build/templates/build/build_base.html:9 +#: build/models.py:85 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_report.html:105 -#: stock/serializers.py:83 templates/email/build_order_completed.html:16 +#: stock/serializers.py:82 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:2892 msgid "Build Order" msgstr "Vytvořit objednávku" -#: build/models.py:84 build/templates/build/build_base.html:13 +#: build/models.py:86 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 @@ -812,25 +720,25 @@ msgstr "Vytvořit objednávku" msgid "Build Orders" msgstr "Vytvořené objednávky" -#: build/models.py:131 +#: build/models.py:133 msgid "Invalid choice for parent build" msgstr "Neplatná volba nadřazeného sestavení" -#: build/models.py:142 order/models.py:240 +#: build/models.py:144 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "Musí být specifikován odpovědný uživatel nebo skupina" -#: build/models.py:148 +#: build/models.py:150 msgid "Build order part cannot be changed" msgstr "Díly obědnávky sestavení nemohou být změněny" -#: build/models.py:209 +#: build/models.py:211 msgid "Build Order Reference" msgstr "Referenční číslo objednávky" -#: build/models.py:210 order/models.py:463 order/models.py:928 -#: order/models.py:1325 order/models.py:2056 part/admin.py:419 -#: part/models.py:4105 part/templates/part/upload_bom.html:54 +#: build/models.py:212 order/models.py:463 order/models.py:926 +#: order/models.py:1289 order/models.py:2020 part/admin.py:411 +#: part/models.py:4085 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_purchase_order_report.html:28 #: report/templates/report/inventree_return_order_report.html:26 @@ -844,27 +752,27 @@ msgstr "Referenční číslo objednávky" msgid "Reference" msgstr "Reference" -#: build/models.py:221 +#: build/models.py:223 msgid "Brief description of the build (optional)" msgstr "Stručný popis sestavení (nepovinné)" -#: build/models.py:229 build/templates/build/build_base.html:183 +#: build/models.py:231 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Nadřazená sestava" -#: build/models.py:230 +#: build/models.py:232 msgid "BuildOrder to which this build is allocated" msgstr "Příkaz sestavení pro který je toto sestavení přiděleno" -#: build/models.py:235 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 -#: order/models.py:1450 order/models.py:1595 order/models.py:1596 -#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 -#: part/models.py:3191 part/models.py:3335 part/models.py:3358 -#: part/models.py:3379 part/models.py:3401 part/models.py:3511 -#: part/models.py:3807 part/models.py:3963 part/models.py:4056 -#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 +#: build/models.py:237 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1026 order/api.py:805 +#: order/models.py:1414 order/models.py:1559 order/models.py:1560 +#: part/api.py:1494 part/api.py:1788 part/models.py:395 part/models.py:3012 +#: part/models.py:3156 part/models.py:3303 part/models.py:3324 +#: part/models.py:3346 part/models.py:3477 part/models.py:3787 +#: part/models.py:3943 part/models.py:4036 part/models.py:4395 +#: part/serializers.py:1120 part/serializers.py:1726 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -875,8 +783,8 @@ msgstr "Příkaz sestavení pro který je toto sestavení přiděleno" #: report/templates/report/inventree_return_order_report.html:24 #: report/templates/report/inventree_sales_order_report.html:27 #: report/templates/report/inventree_stock_location_report.html:102 -#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 -#: stock/serializers.py:818 templates/InvenTree/search.html:82 +#: stock/serializers.py:109 stock/serializers.py:157 stock/serializers.py:423 +#: stock/serializers.py:820 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 @@ -889,8 +797,8 @@ msgstr "Příkaz sestavení pro který je toto sestavení přiděleno" #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 -#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2323 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:1944 templates/js/translated/part.js:2016 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 #: templates/js/translated/purchase_order.js:751 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1848 @@ -908,107 +816,107 @@ msgstr "Příkaz sestavení pro který je toto sestavení přiděleno" msgid "Part" msgstr "Díl" -#: build/models.py:243 +#: build/models.py:245 msgid "Select part to build" msgstr "Vyber téma, které chceš stavět" -#: build/models.py:248 +#: build/models.py:250 msgid "Sales Order Reference" msgstr "Referenční číslo prodejní objednávky" -#: build/models.py:252 +#: build/models.py:254 msgid "SalesOrder to which this build is allocated" msgstr "Prodejní příkaz, kterému je tato verze přidělena" -#: build/models.py:257 build/serializers.py:1000 +#: build/models.py:259 build/serializers.py:999 #: templates/js/translated/build.js:1731 #: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "Umístění lokace" -#: build/models.py:261 +#: build/models.py:263 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:266 +#: build/models.py:268 msgid "Destination Location" msgstr "Cílová lokace" -#: build/models.py:270 +#: build/models.py:272 msgid "Select location where the completed items will be stored" msgstr "Vyberte lokaci, kde budou dokončené položky uloženy" -#: build/models.py:274 +#: build/models.py:276 msgid "Build Quantity" msgstr "Množství sestav" -#: build/models.py:277 +#: build/models.py:279 msgid "Number of stock items to build" msgstr "Počet skladových položek k sestavení" -#: build/models.py:281 +#: build/models.py:283 msgid "Completed items" msgstr "Dokončené položky" -#: build/models.py:283 +#: build/models.py:285 msgid "Number of stock items which have been completed" msgstr "Počet skladových položek, které byly dokončeny" -#: build/models.py:287 +#: build/models.py:289 msgid "Build Status" msgstr "Stav sestavení" -#: build/models.py:291 +#: build/models.py:293 msgid "Build status code" msgstr "Stavový kód sestavení" -#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 -#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 +#: build/models.py:302 build/serializers.py:286 order/serializers.py:580 +#: stock/models.py:838 stock/serializers.py:74 stock/serializers.py:1458 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Kód dávky" -#: build/models.py:304 build/serializers.py:288 +#: build/models.py:306 build/serializers.py:287 msgid "Batch code for this build output" msgstr "Dávkový kód pro tento výstup sestavení" -#: build/models.py:307 order/models.py:316 order/serializers.py:120 -#: part/models.py:1122 part/templates/part/part_base.html:310 +#: build/models.py:309 order/models.py:316 order/serializers.py:119 +#: part/models.py:1115 part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:338 #: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "Datum vytvoření" -#: build/models.py:311 +#: build/models.py:313 msgid "Target completion date" msgstr "Cílové datum dokončení" -#: build/models.py:312 +#: build/models.py:314 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:315 order/models.py:521 order/models.py:2101 +#: build/models.py:317 order/models.py:521 order/models.py:2065 #: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "Datum dokončení" -#: build/models.py:321 +#: build/models.py:323 msgid "completed by" msgstr "dokončil" -#: build/models.py:329 templates/js/translated/build.js:2207 +#: build/models.py:331 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "Vystavil" -#: build/models.py:330 +#: build/models.py:332 msgid "User who issued this build order" msgstr "Uživatel, který vydal tento příkaz k sestavení" -#: build/models.py:338 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:145 +#: build/models.py:340 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:147 #: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:232 part/models.py:1139 +#: order/templates/order/sales_order_base.html:232 part/models.py:1132 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_report.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 @@ -1019,31 +927,36 @@ msgstr "Uživatel, který vydal tento příkaz k sestavení" msgid "Responsible" msgstr "Odpovědný" -#: build/models.py:339 +#: build/models.py:341 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:344 build/templates/build/detail.html:108 +#: build/models.py:346 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:184 -#: part/templates/part/part_base.html:383 stock/models.py:836 +#: part/templates/part/part_base.html:383 stock/models.py:834 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "Externí odkaz" -#: build/models.py:349 +#: build/models.py:347 common/models.py:3178 part/models.py:956 +#: stock/models.py:834 +msgid "Link to external URL" +msgstr "Odkaz na externí URL" + +#: build/models.py:351 msgid "Build Priority" msgstr "Priorita sestavení" -#: build/models.py:352 +#: build/models.py:354 msgid "Priority of this build order" msgstr "Priorita tohoto příkazu k sestavení" -#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: build/models.py:361 common/models.py:131 order/admin.py:18 #: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 #: templates/js/translated/build.js:2144 #: templates/js/translated/purchase_order.js:1710 @@ -1054,65 +967,65 @@ msgstr "Priorita tohoto příkazu k sestavení" msgid "Project Code" msgstr "Kód projektu" -#: build/models.py:360 +#: build/models.py:362 msgid "Project code for this build order" msgstr "Kód projektu pro objednávku sestavení" -#: build/models.py:593 build/models.py:658 +#: build/models.py:595 build/models.py:660 msgid "Failed to offload task to complete build allocations" -msgstr "" +msgstr "Nepodařilo se uvolnit úlohu pro dokončení přidělení sestavy" -#: build/models.py:615 +#: build/models.py:617 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Příkaz k sestavení {build} byl dokončen" -#: build/models.py:621 +#: build/models.py:623 msgid "A build order has been completed" msgstr "Příkaz k sestavení byl dokončen" -#: build/models.py:847 build/models.py:932 +#: build/models.py:849 build/models.py:934 msgid "No build output specified" msgstr "Nebyl specifikováno žádný výstup sestavení" -#: build/models.py:850 +#: build/models.py:852 msgid "Build output is already completed" msgstr "Výstup sestavení je již dokončen" -#: build/models.py:853 +#: build/models.py:855 msgid "Build output does not match Build Order" msgstr "Výstup sestavení neodpovídá příkazu sestavení" -#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 -#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 -#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 -#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 +#: build/models.py:938 build/serializers.py:219 build/serializers.py:268 +#: build/serializers.py:866 order/models.py:559 order/serializers.py:432 +#: order/serializers.py:575 part/serializers.py:1484 part/serializers.py:1884 +#: stock/models.py:677 stock/models.py:1495 stock/serializers.py:603 msgid "Quantity must be greater than zero" msgstr "Množství musí být vyšší než nula" -#: build/models.py:941 build/serializers.py:225 +#: build/models.py:943 build/serializers.py:224 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:1001 build/serializers.py:548 +#: build/models.py:1003 build/serializers.py:547 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "Výstup sestavy {serial} neprošel všemi požadavky" -#: build/models.py:1352 +#: build/models.py:1344 msgid "Build Order Line Item" -msgstr "" +msgstr "Vytvořit položku řádku objednávky" -#: build/models.py:1377 +#: build/models.py:1369 msgid "Build object" msgstr "Vytvořit objekt" -#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 -#: build/serializers.py:254 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2539 -#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 -#: part/forms.py:48 part/models.py:3205 part/models.py:4078 +#: build/models.py:1383 build/models.py:1639 build/serializers.py:206 +#: build/serializers.py:253 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2509 +#: order/models.py:1272 order/models.py:1931 order/serializers.py:1327 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3170 part/models.py:4058 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1121,8 +1034,8 @@ msgstr "Vytvořit objekt" #: report/templates/report/inventree_sales_order_report.html:29 #: report/templates/report/inventree_stock_location_report.html:104 #: report/templates/report/inventree_test_report.html:90 -#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 -#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:125 stock/serializers.py:165 stock/serializers.py:594 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1133,8 +1046,8 @@ msgstr "Vytvořit objekt" #: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 #: templates/js/translated/model_renderers.js:236 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:962 +#: templates/js/translated/part.js:1812 templates/js/translated/part.js:3342 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1154,38 +1067,38 @@ msgstr "Vytvořit objekt" msgid "Quantity" msgstr "Množství" -#: build/models.py:1392 +#: build/models.py:1384 msgid "Required quantity for build order" msgstr "Vyžadované množství pro objednávku" -#: build/models.py:1472 +#: build/models.py:1464 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:1481 +#: build/models.py:1473 #, 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:1491 order/models.py:1918 +#: build/models.py:1483 order/models.py:1882 msgid "Stock item is over-allocated" msgstr "Skladová položka je nadměrně zabrána" -#: build/models.py:1497 order/models.py:1921 +#: build/models.py:1489 order/models.py:1885 msgid "Allocation quantity must be greater than zero" msgstr "Zabrané množství musí být větší než nula" -#: build/models.py:1503 +#: build/models.py:1495 msgid "Quantity must be 1 for serialized stock" msgstr "Množství musí být 1 pro zřetězený sklad" -#: build/models.py:1562 +#: build/models.py:1554 msgid "Selected stock item does not match BOM line" msgstr "Vybraná položka zásob neodpovídá řádku BOM" -#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 -#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 -#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: build/models.py:1626 build/serializers.py:846 order/serializers.py:1171 +#: order/serializers.py:1192 stock/models.py:358 stock/serializers.py:91 +#: stock/serializers.py:697 stock/serializers.py:1177 stock/serializers.py:1289 #: stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 @@ -1201,70 +1114,70 @@ msgstr "Vybraná položka zásob neodpovídá řádku BOM" msgid "Stock Item" msgstr "Skladové položky" -#: build/models.py:1635 +#: build/models.py:1627 msgid "Source stock item" msgstr "Zdrojová skladová položka" -#: build/models.py:1648 +#: build/models.py:1640 msgid "Stock quantity to allocate to build" msgstr "Skladové množství pro sestavení" -#: build/models.py:1656 +#: build/models.py:1648 msgid "Install into" msgstr "Instalovat do" -#: build/models.py:1657 +#: build/models.py:1649 msgid "Destination stock item" msgstr "Cílová skladová položka" -#: build/serializers.py:157 build/serializers.py:876 +#: build/serializers.py:156 build/serializers.py:875 #: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "Vytvořit výstup" -#: build/serializers.py:169 +#: build/serializers.py:168 msgid "Build output does not match the parent build" msgstr "Vytvořený výstup neodpovídá nadřazenému sestavení" -#: build/serializers.py:173 +#: build/serializers.py:172 msgid "Output part does not match BuildOrder part" msgstr "Výstupní část se neshoduje s částí příkazu sestavení" -#: build/serializers.py:177 +#: build/serializers.py:176 msgid "This build output has already been completed" msgstr "Výstup sestavení je již dokončen" -#: build/serializers.py:188 +#: build/serializers.py:187 msgid "This build output is not fully allocated" msgstr "Tento stavební výstup není plně přiřazen" -#: build/serializers.py:208 build/serializers.py:255 +#: build/serializers.py:207 build/serializers.py:254 msgid "Enter quantity for build output" msgstr "Zadejte množství pro výstup sestavení" -#: build/serializers.py:276 +#: build/serializers.py:275 msgid "Integer quantity required for trackable parts" msgstr "Celé množství požadované pro sledovatelné díly" -#: build/serializers.py:279 +#: build/serializers.py:278 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "Je vyžadována celočíselná hodnota množství, protože kusovník obsahuje sledovatelné díly" -#: build/serializers.py:294 order/serializers.py:589 order/serializers.py:1343 -#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:293 order/serializers.py:588 order/serializers.py:1331 +#: stock/serializers.py:614 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Sériová čísla" -#: build/serializers.py:295 +#: build/serializers.py:294 msgid "Enter serial numbers for build outputs" -msgstr "" +msgstr "Zadejte sériová čísla pro sestavení výstupů" -#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 -#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 -#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 -#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 -#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 +#: build/serializers.py:299 build/serializers.py:440 build/serializers.py:512 +#: order/serializers.py:564 order/serializers.py:672 order/serializers.py:1656 +#: part/serializers.py:1140 stock/serializers.py:100 stock/serializers.py:625 +#: stock/serializers.py:785 stock/serializers.py:881 stock/serializers.py:1321 +#: stock/serializers.py:1577 stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:1001 #: templates/js/translated/build.js:2372 @@ -1280,54 +1193,54 @@ msgstr "" msgid "Location" msgstr "Lokace" -#: build/serializers.py:301 +#: build/serializers.py:300 msgid "Stock location for build output" -msgstr "" +msgstr "Skladové umístění pro výstup sestavy" -#: build/serializers.py:315 +#: build/serializers.py:314 msgid "Auto Allocate Serial Numbers" msgstr "Automaticky zvolit sériová čísla" -#: build/serializers.py:316 +#: build/serializers.py:315 msgid "Automatically allocate required items with matching serial numbers" -msgstr "" +msgstr "Automaticky přidělit požadované položky s odpovídajícími sériovými čísly" -#: build/serializers.py:331 +#: build/serializers.py:330 msgid "Serial numbers must be provided for trackable parts" -msgstr "" +msgstr "U sledovatelných dílů musí být uvedena sériová čísla" -#: build/serializers.py:356 stock/api.py:1031 +#: build/serializers.py:355 stock/api.py:1041 msgid "The following serial numbers already exist or are invalid" -msgstr "" +msgstr "Následující sériová čísla již existují nebo jsou neplatná" -#: build/serializers.py:403 build/serializers.py:465 build/serializers.py:554 +#: build/serializers.py:402 build/serializers.py:464 build/serializers.py:553 msgid "A list of build outputs must be provided" -msgstr "" +msgstr "Musí být uveden seznam výstupů sestavy" -#: build/serializers.py:442 +#: build/serializers.py:441 msgid "Stock location for scrapped outputs" msgstr "Umístění zásob pro seškrábnuté výstupy" -#: build/serializers.py:448 +#: build/serializers.py:447 msgid "Discard Allocations" -msgstr "" +msgstr "Zahodit alokace" -#: build/serializers.py:449 +#: build/serializers.py:448 msgid "Discard any stock allocations for scrapped outputs" -msgstr "" +msgstr "Vyřadit všechny přidělené zásoby pro vyřazené výstupy" -#: build/serializers.py:454 +#: build/serializers.py:453 msgid "Reason for scrapping build output(s)" -msgstr "" +msgstr "Důvod vyřazení výstupu(ů) sestavy" -#: build/serializers.py:514 +#: build/serializers.py:513 msgid "Location for completed build outputs" -msgstr "" +msgstr "Umístění dokončených výstupů sestavy" -#: build/serializers.py:520 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:952 -#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 -#: stock/serializers.py:930 stock/serializers.py:1469 +#: build/serializers.py:519 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2044 order/serializers.py:596 stock/admin.py:164 +#: stock/serializers.py:932 stock/serializers.py:1465 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 @@ -1339,192 +1252,192 @@ msgstr "" msgid "Status" msgstr "Stav" -#: build/serializers.py:526 +#: build/serializers.py:525 msgid "Accept Incomplete Allocation" -msgstr "" +msgstr "Přijmout neúplné přidělení" -#: build/serializers.py:527 +#: build/serializers.py:526 msgid "Complete outputs if stock has not been fully allocated" -msgstr "" +msgstr "Dokončit výstupy pokud zásoby nebyly plně přiděleny" + +#: build/serializers.py:611 +msgid "Consume Allocated Stock" +msgstr "Spotřebovat přidělené zásoby" #: build/serializers.py:612 -msgid "Consume Allocated Stock" -msgstr "" - -#: build/serializers.py:613 msgid "Consume any stock which has already been allocated to this build" -msgstr "" +msgstr "Spotřebovat všechny zásoby, které již byly přiděleny této sestavě" + +#: build/serializers.py:618 +msgid "Remove Incomplete Outputs" +msgstr "Odstranit neúplné výstupy" #: build/serializers.py:619 -msgid "Remove Incomplete Outputs" -msgstr "" - -#: build/serializers.py:620 msgid "Delete any build outputs which have not been completed" -msgstr "" +msgstr "Odstranit všechny výstupy sestavy, které nebyly dokončeny" + +#: build/serializers.py:646 +msgid "Not permitted" +msgstr "Není povoleno" #: build/serializers.py:647 -msgid "Not permitted" -msgstr "" +msgid "Accept as consumed by this build order" +msgstr "Přijmout jako spotřebované touto objednávkou sestavy" #: build/serializers.py:648 -msgid "Accept as consumed by this build order" -msgstr "" - -#: build/serializers.py:649 msgid "Deallocate before completing this build order" -msgstr "" +msgstr "Uvolnit před dokončením této objednávky sestavy" -#: build/serializers.py:679 +#: build/serializers.py:678 msgid "Overallocated Stock" -msgstr "" +msgstr "Nadměrně přidělené zásoby" -#: build/serializers.py:681 +#: build/serializers.py:680 msgid "How do you want to handle extra stock items assigned to the build order" -msgstr "" +msgstr "Jak chcete zacházet s extra skladovými položkami přiřazenými k objednávce na sestavu" -#: build/serializers.py:691 +#: build/serializers.py:690 msgid "Some stock items have been overallocated" -msgstr "" +msgstr "Některé skladové položky byly nadměrně přiděleny" + +#: build/serializers.py:695 +msgid "Accept Unallocated" +msgstr "Přijmout nepřidělené" #: build/serializers.py:696 -msgid "Accept Unallocated" -msgstr "" - -#: build/serializers.py:697 msgid "Accept that stock items have not been fully allocated to this build order" -msgstr "" +msgstr "Přijmout, že skladové položky nebyly plně přiřazeny k této objednávce sestavy" -#: build/serializers.py:707 templates/js/translated/build.js:315 +#: build/serializers.py:706 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" -msgstr "" +msgstr "Požadované zásoby nebyly plně přiděleny" -#: build/serializers.py:712 order/serializers.py:301 order/serializers.py:1246 +#: build/serializers.py:711 order/serializers.py:300 order/serializers.py:1234 msgid "Accept Incomplete" -msgstr "" +msgstr "Přijmout neúplné" -#: build/serializers.py:713 +#: build/serializers.py:712 msgid "Accept that the required number of build outputs have not been completed" -msgstr "" +msgstr "Přijmout, že nebyl dokončen požadovaný počet výstupů sestavy" -#: build/serializers.py:723 templates/js/translated/build.js:319 +#: build/serializers.py:722 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" -msgstr "" +msgstr "Požadované množství sestavy nebylo dokončeno" -#: build/serializers.py:732 templates/js/translated/build.js:303 +#: build/serializers.py:731 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" -msgstr "" +msgstr "Objednávka sestavy má neúplné výstupy" -#: build/serializers.py:770 +#: build/serializers.py:769 msgid "Build Line" -msgstr "" +msgstr "Linka sestavy" -#: build/serializers.py:780 +#: build/serializers.py:779 msgid "Build output" -msgstr "" +msgstr "Výstup sestavy" -#: build/serializers.py:788 +#: build/serializers.py:787 msgid "Build output must point to the same build" -msgstr "" +msgstr "Výstup sestavy musí odkazovat na stejnou sestavu" -#: build/serializers.py:824 +#: build/serializers.py:823 msgid "Build Line Item" -msgstr "" +msgstr "Řádková položka sestavy" -#: build/serializers.py:838 +#: build/serializers.py:837 msgid "bom_item.part must point to the same part as the build order" -msgstr "" +msgstr "bom_item.part musí ukazovat na stejný díl jako objednávka sestavy" -#: build/serializers.py:853 stock/serializers.py:1194 +#: build/serializers.py:852 stock/serializers.py:1190 msgid "Item must be in stock" -msgstr "" +msgstr "Položka musí být skladem" -#: build/serializers.py:901 order/serializers.py:1237 +#: build/serializers.py:900 order/serializers.py:1225 #, python-brace-format msgid "Available quantity ({q}) exceeded" -msgstr "" +msgstr "Dostupné množství ({q}) překročeno" -#: build/serializers.py:907 +#: build/serializers.py:906 msgid "Build output must be specified for allocation of tracked parts" -msgstr "" +msgstr "Pro přidělení sledovaných dílů musí být zadán výstup sestavy" -#: build/serializers.py:914 +#: build/serializers.py:913 msgid "Build output cannot be specified for allocation of untracked parts" -msgstr "" +msgstr "Výstup sestavy nelze zadat pro přidělení nesledovaných dílů" -#: build/serializers.py:938 order/serializers.py:1489 +#: build/serializers.py:937 order/serializers.py:1477 msgid "Allocation items must be provided" -msgstr "" +msgstr "Položky přidělení musí být poskytnuty" -#: build/serializers.py:1001 +#: build/serializers.py:1000 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" -msgstr "" +msgstr "Skladové místo, odkud se mají díly odebírat (ponechte prázdné, pokud chcete odebírat z libovolného místa)" -#: build/serializers.py:1009 +#: build/serializers.py:1008 msgid "Exclude Location" msgstr "Vynechat lokace" -#: build/serializers.py:1010 +#: build/serializers.py:1009 msgid "Exclude stock items from this selected location" -msgstr "" +msgstr "Vyloučit skladové položky z tohoto vybraného umístění" + +#: build/serializers.py:1014 +msgid "Interchangeable Stock" +msgstr "Zaměnitelné zásoby" #: build/serializers.py:1015 -msgid "Interchangeable Stock" -msgstr "" - -#: build/serializers.py:1016 msgid "Stock items in multiple locations can be used interchangeably" -msgstr "" +msgstr "Skladové položky na více místech lze používat zaměnitelně" + +#: build/serializers.py:1020 +msgid "Substitute Stock" +msgstr "Náhradní zásoby" #: build/serializers.py:1021 -msgid "Substitute Stock" -msgstr "" - -#: build/serializers.py:1022 msgid "Allow allocation of substitute parts" -msgstr "" +msgstr "Povolit přidělování náhradních dílů" -#: build/serializers.py:1027 +#: build/serializers.py:1026 msgid "Optional Items" msgstr "Volitelné položky" -#: build/serializers.py:1028 +#: build/serializers.py:1027 msgid "Allocate optional BOM items to build order" -msgstr "" +msgstr "Přiřazení volitelných BOM položek k objednávce sestavy" -#: build/serializers.py:1050 +#: build/serializers.py:1049 msgid "Failed to start auto-allocation task" -msgstr "" +msgstr "Nepodařilo se spustit úlohu automatického přidělování" -#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 -#: stock/api.py:794 +#: build/serializers.py:1139 part/models.py:3953 part/models.py:4387 +#: stock/api.py:804 msgid "BOM Item" -msgstr "" +msgstr "BOM Položka" -#: build/serializers.py:1149 templates/js/translated/index.js:130 +#: build/serializers.py:1148 templates/js/translated/index.js:130 msgid "Allocated Stock" -msgstr "" +msgstr "Přidělené zásoby" -#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:832 part/serializers.py:1506 +#: build/serializers.py:1153 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:828 part/serializers.py:1502 #: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 -#: templates/js/translated/build.js:2613 templates/js/translated/part.js:709 -#: templates/js/translated/part.js:2148 +#: templates/js/translated/build.js:2613 templates/js/translated/part.js:710 +#: templates/js/translated/part.js:2149 #: templates/js/translated/table_filters.js:170 msgid "On Order" -msgstr "" +msgstr "Na objednávku" -#: build/serializers.py:1159 part/serializers.py:1508 +#: build/serializers.py:1158 part/serializers.py:1504 #: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" -msgstr "" +msgstr "Ve výrobě" -#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 +#: build/serializers.py:1163 part/bom.py:172 part/serializers.py:1527 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1929 msgid "Available Stock" -msgstr "" +msgstr "Dostupné zásoby" #: build/status_codes.py:11 generic/states/tests.py:17 order/status_codes.py:12 #: order/status_codes.py:37 order/status_codes.py:64 order/status_codes.py:82 @@ -1544,26 +1457,26 @@ msgstr "Zrušeno" #: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 #: order/status_codes.py:44 order/status_codes.py:69 #: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:165 report/models.py:443 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 msgid "Complete" msgstr "Hotovo" #: build/tasks.py:184 msgid "Stock required for build order" -msgstr "" +msgstr "Zásoby potřebné pro objednávku sestavy" #: build/tasks.py:201 msgid "Overdue Build Order" -msgstr "" +msgstr "Opožděná objednávka sestavy" #: build/tasks.py:206 #, python-brace-format msgid "Build order {bo} is now overdue" -msgstr "" +msgstr "Objednávka sestavy {bo} je nyní opožděná" #: build/templates/build/build_base.html:18 msgid "Part thumbnail" -msgstr "" +msgstr "Miniatura dílu" #: build/templates/build/build_base.html:38 #: company/templates/company/supplier_part.html:35 @@ -1575,7 +1488,7 @@ msgstr "" #: stock/templates/stock/location.html:55 #: templates/js/translated/filters.js:335 msgid "Barcode actions" -msgstr "" +msgstr "Akce čárového kódu" #: build/templates/build/build_base.html:42 #: company/templates/company/supplier_part.html:39 @@ -1617,68 +1530,68 @@ msgstr "Přiřadit čárový kód" #: order/templates/order/return_order_base.html:55 #: order/templates/order/sales_order_base.html:55 msgid "Print actions" -msgstr "" +msgstr "Akce tisku" #: build/templates/build/build_base.html:60 msgid "Print build order report" -msgstr "" +msgstr "Tisk reportu o objednávce sestavy" #: build/templates/build/build_base.html:67 msgid "Build actions" -msgstr "" +msgstr "Akce sestavy" #: build/templates/build/build_base.html:71 msgid "Edit Build" -msgstr "" +msgstr "Upravit sestavu" #: build/templates/build/build_base.html:73 msgid "Cancel Build" -msgstr "" +msgstr "Zrušit sestavu" #: build/templates/build/build_base.html:76 msgid "Duplicate Build" -msgstr "" +msgstr "Duplikovat sestavu" #: build/templates/build/build_base.html:79 msgid "Delete Build" -msgstr "" +msgstr "Smazat sestavu" #: build/templates/build/build_base.html:84 #: build/templates/build/build_base.html:85 msgid "Complete Build" -msgstr "" +msgstr "Dokončit sestavu" #: build/templates/build/build_base.html:107 msgid "Build Description" -msgstr "" +msgstr "Popis sestavy" #: build/templates/build/build_base.html:117 msgid "No build outputs have been created for this build order" -msgstr "" +msgstr "Pro tuto objednávku sestavy nebyly vytvořeny žádné výstupy sestavy" #: build/templates/build/build_base.html:124 msgid "Build Order is ready to mark as completed" -msgstr "" +msgstr "Objednávka sestavy je připravena k označení jako dokončená" #: build/templates/build/build_base.html:129 msgid "Build Order cannot be completed as outstanding outputs remain" -msgstr "" +msgstr "Objednávku sestavy nelze dokončit, protože zbývají nevyřízené výstupy" #: build/templates/build/build_base.html:134 msgid "Required build quantity has not yet been completed" -msgstr "" +msgstr "Požadované množství sestavy ještě nebylo dokončeno" #: build/templates/build/build_base.html:139 msgid "Stock has not been fully allocated to this Build Order" -msgstr "" +msgstr "Zásoby nebyly plně přiřazeny k této objednávce na sestavu" #: build/templates/build/build_base.html:160 #: build/templates/build/detail.html:138 order/models.py:309 -#: order/models.py:1343 order/templates/order/order_base.html:186 +#: order/models.py:1307 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:196 #: report/templates/report/inventree_build_order_report.html:125 -#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1831 #: templates/js/translated/purchase_order.js:1739 #: templates/js/translated/purchase_order.js:2147 #: templates/js/translated/return_order.js:346 @@ -1691,7 +1604,7 @@ msgstr "Cílené datum" #: build/templates/build/build_base.html:165 #, python-format msgid "This build was due on %(target)s" -msgstr "" +msgstr "Tato sestava byla splatná v %(target)s" #: build/templates/build/build_base.html:165 #: build/templates/build/build_base.html:222 @@ -1703,16 +1616,16 @@ msgstr "" #: templates/js/translated/table_filters.js:626 #: templates/js/translated/table_filters.js:667 msgid "Overdue" -msgstr "" +msgstr "Po splatnosti" #: build/templates/build/build_base.html:177 #: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 msgid "Completed Outputs" -msgstr "" +msgstr "Dokončené výstupy" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 -#: order/models.py:1587 order/models.py:1701 order/models.py:1855 +#: build/templates/build/detail.html:101 order/api.py:1463 order/models.py:845 +#: order/models.py:1551 order/models.py:1665 order/models.py:1819 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_report.html:135 @@ -1724,14 +1637,14 @@ msgstr "" #: templates/js/translated/sales_order.js:1028 #: templates/js/translated/stock.js:2924 msgid "Sales Order" -msgstr "" +msgstr "Prodejní objednávka" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 #: report/templates/report/inventree_build_order_report.html:152 #: templates/js/translated/table_filters.js:24 msgid "Issued By" -msgstr "" +msgstr "Vystavil" #: build/templates/build/build_base.html:211 #: build/templates/build/detail.html:94 templates/js/translated/build.js:2156 @@ -1740,42 +1653,42 @@ msgstr "Priorita" #: build/templates/build/build_base.html:269 msgid "Delete Build Order" -msgstr "" +msgstr "Odstranit objednávku sestavy" #: build/templates/build/build_base.html:279 msgid "Build Order QR Code" -msgstr "" +msgstr "QR kód objednávky sestavy" #: build/templates/build/build_base.html:291 msgid "Link Barcode to Build Order" -msgstr "" +msgstr "Propojit čárový kód s objednávkou sestavy" #: build/templates/build/detail.html:15 msgid "Build Details" -msgstr "" +msgstr "Detaily sestavy" #: build/templates/build/detail.html:38 msgid "Stock Source" -msgstr "" +msgstr "Zdroj zásob" #: build/templates/build/detail.html:43 msgid "Stock can be taken from any available location." -msgstr "" +msgstr "Zásoby lze odebírat z jakéhokoli dostupného umístění." -#: build/templates/build/detail.html:49 order/models.py:1479 +#: build/templates/build/detail.html:49 order/models.py:1443 #: templates/js/translated/purchase_order.js:2189 msgid "Destination" -msgstr "" +msgstr "Místo určení" #: build/templates/build/detail.html:56 msgid "Destination location not specified" -msgstr "" +msgstr "Místo určení není specifikováno" #: build/templates/build/detail.html:73 msgid "Allocated Parts" -msgstr "" +msgstr "Přidělené díly" -#: build/templates/build/detail.html:80 stock/admin.py:163 +#: build/templates/build/detail.html:80 stock/admin.py:162 #: stock/templates/stock/item_base.html:162 #: templates/js/translated/build.js:1380 #: templates/js/translated/model_renderers.js:241 @@ -1785,7 +1698,7 @@ msgstr "" #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 msgid "Batch" -msgstr "" +msgstr "Šarže" #: build/templates/build/detail.html:133 #: order/templates/order/order_base.html:173 @@ -1807,72 +1720,72 @@ msgstr "Dokončeno" #: build/templates/build/detail.html:153 msgid "Build not complete" -msgstr "" +msgstr "Sestava není dokončena" #: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 msgid "Child Build Orders" -msgstr "" +msgstr "Podřízené objednávky sestavy" #: build/templates/build/detail.html:177 msgid "Allocate Stock to Build" -msgstr "" +msgstr "Přiděleit zásoby k sestavě" #: build/templates/build/detail.html:181 msgid "Deallocate stock" -msgstr "" +msgstr "Uvolnění zásob" #: build/templates/build/detail.html:182 msgid "Deallocate Stock" -msgstr "" +msgstr "Uvolnění zásob" #: build/templates/build/detail.html:184 msgid "Automatically allocate stock to build" -msgstr "" +msgstr "Automaticky přiřadit zásoby k sestavě" #: build/templates/build/detail.html:185 msgid "Auto Allocate" -msgstr "" +msgstr "Automaticky přiřadit" #: build/templates/build/detail.html:187 msgid "Manually allocate stock to build" -msgstr "" +msgstr "Manuálně přiřadit zásoby k sestavě" #: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 msgid "Allocate Stock" -msgstr "" +msgstr "Přidělit zásoby" #: build/templates/build/detail.html:191 msgid "Order required parts" -msgstr "" +msgstr "Objednat požadované díly" #: build/templates/build/detail.html:192 #: templates/js/translated/purchase_order.js:795 msgid "Order Parts" -msgstr "" +msgstr "Objednat díly" #: build/templates/build/detail.html:205 msgid "Available stock has been filtered based on specified source location for this build order" -msgstr "" +msgstr "Dostupné skladové zásoby byly vyfiltrovány na základě zadaného místa zdroje pro tuto objednávku sestavy" #: build/templates/build/detail.html:215 msgid "Incomplete Build Outputs" -msgstr "" +msgstr "Neúplné výstupy sestavy" #: build/templates/build/detail.html:219 msgid "Create new build output" -msgstr "" +msgstr "Vytvořit nový výstup sestavy" #: build/templates/build/detail.html:220 msgid "New Build Output" -msgstr "" +msgstr "Nový výstup sestavy" #: build/templates/build/detail.html:237 build/templates/build/sidebar.html:15 msgid "Consumed Stock" -msgstr "" +msgstr "Spotřebované zásoby" #: build/templates/build/detail.html:249 msgid "Completed Build Outputs" -msgstr "" +msgstr "Dokončené výstupy sestavy" #: build/templates/build/detail.html:261 build/templates/build/sidebar.html:19 #: company/templates/company/detail.html:229 @@ -1888,52 +1801,80 @@ 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 "Přílohy" #: build/templates/build/detail.html:276 msgid "Build Notes" -msgstr "" +msgstr "Poznámky k sestavě" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" -msgstr "" +msgstr "Přidělení dokončeno" -#: build/templates/build/detail.html:436 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" -msgstr "" +msgstr "Všechny řádky byly plně přiděleny" #: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" -msgstr "" +msgstr "Objednávka nové sestavy" #: build/templates/build/sidebar.html:5 msgid "Build Order Details" -msgstr "" +msgstr "Podrobnosti o objednávce sestavy" #: build/templates/build/sidebar.html:10 msgid "Incomplete Outputs" -msgstr "" +msgstr "Neúplné výstupy" + +#: common/api.py:689 +msgid "Is Link" +msgstr "Je odkaz" + +#: common/api.py:697 +msgid "Is File" +msgstr "Je soubor" + +#: common/api.py:739 +msgid "User does not have permission to delete this attachment" +msgstr "Uživatel nemá oprávnění k odstranění této přílohy" + +#: common/currency.py:130 +msgid "Invalid currency code" +msgstr "Neplatný kód měny" + +#: common/currency.py:132 +msgid "Duplicate currency code" +msgstr "Duplicitní kód měny" + +#: common/currency.py:137 +msgid "No valid currency codes provided" +msgstr "Nejsou uvedeny žádné platné kódy měn" + +#: common/currency.py:154 +msgid "No plugin" +msgstr "Žádný plugin" #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" -msgstr "" +msgstr "Nepodporovaný formát souboru: {fmt}" #: common/files.py:65 msgid "Error reading file (invalid encoding)" -msgstr "" +msgstr "Chyba při čtení souboru (neplatné kódování)" #: common/files.py:70 msgid "Error reading file (invalid format)" -msgstr "" +msgstr "Chyba při čtení souboru (neplatný formát)" #: common/files.py:72 msgid "Error reading file (incorrect dimension)" -msgstr "" +msgstr "Chyba při čtení souboru (nesprávný rozměr)" #: common/files.py:74 msgid "Error reading file (data could be corrupted)" -msgstr "" +msgstr "Chyba při čtení souboru (data mohou být poškozena)" #: common/forms.py:12 msgid "File" @@ -1941,1520 +1882,1523 @@ msgstr "Soubor" #: common/forms.py:12 msgid "Select file to upload" -msgstr "" +msgstr "Vybrat soubor k nahrání" #: common/forms.py:25 msgid "{name.title()} File" -msgstr "" +msgstr "{name.title()} Soubor" #: common/forms.py:26 #, python-brace-format msgid "Select {name} file to upload" -msgstr "" +msgstr "Vyberte {name} soubor k nahrání" -#: common/models.py:71 +#: common/models.py:73 msgid "Updated" -msgstr "" +msgstr "Aktualizováno" -#: common/models.py:72 +#: common/models.py:74 msgid "Timestamp of last update" -msgstr "" +msgstr "Časové razítko poslední aktualizace" -#: common/models.py:105 +#: common/models.py:107 msgid "Site URL is locked by configuration" -msgstr "" +msgstr "Adresa URL webu je uzamčena konfigurací" -#: common/models.py:130 +#: common/models.py:132 msgid "Unique project code" -msgstr "" +msgstr "Jedinečný kód projektu" -#: common/models.py:137 +#: common/models.py:139 msgid "Project description" -msgstr "" +msgstr "Popis projektu" -#: common/models.py:146 +#: common/models.py:148 msgid "User or group responsible for this project" -msgstr "" +msgstr "Uživatel nebo skupina odpovědná za tento projekt" -#: common/models.py:766 +#: common/models.py:765 msgid "Settings key (must be unique - case insensitive)" -msgstr "" +msgstr "Klíč nastavení (musí být unikátní - rozlišuje malá a velká písmena)" -#: common/models.py:770 +#: common/models.py:769 msgid "Settings value" -msgstr "" +msgstr "Hodnota nastavení" -#: common/models.py:822 +#: common/models.py:821 msgid "Chosen value is not a valid option" -msgstr "" +msgstr "Zvolená hodnota není platnou možností" -#: common/models.py:838 +#: common/models.py:837 msgid "Value must be a boolean value" -msgstr "" +msgstr "Hodnota musí být logická hodnota" -#: common/models.py:846 +#: common/models.py:845 msgid "Value must be an integer value" -msgstr "" +msgstr "Hodnota musí být celé číslo" -#: common/models.py:883 +#: common/models.py:882 msgid "Key string must be unique" -msgstr "" +msgstr "Klíčový text musí být jedinečný" -#: common/models.py:1115 +#: common/models.py:1114 msgid "No group" -msgstr "" +msgstr "Žádná skupina" -#: common/models.py:1158 -msgid "An empty domain is not allowed." -msgstr "" - -#: common/models.py:1160 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "" - -#: common/models.py:1172 -msgid "No plugin" -msgstr "" - -#: common/models.py:1260 +#: common/models.py:1213 msgid "Restart required" -msgstr "" +msgstr "Je vyžadován restart" -#: common/models.py:1262 +#: common/models.py:1215 msgid "A setting has been changed which requires a server restart" -msgstr "" +msgstr "Bylo změněno nastavení, které vyžaduje restart serveru" -#: common/models.py:1269 +#: common/models.py:1222 msgid "Pending migrations" -msgstr "" +msgstr "Nevyřízené migrace" -#: common/models.py:1270 +#: common/models.py:1223 msgid "Number of pending database migrations" -msgstr "" +msgstr "Počet nevyřízených migrací databáze" -#: common/models.py:1275 +#: common/models.py:1228 msgid "Server Instance Name" -msgstr "" +msgstr "Název instance serveru" -#: common/models.py:1277 +#: common/models.py:1230 msgid "String descriptor for the server instance" -msgstr "" +msgstr "Textový popisovač pro instanci serveru" -#: common/models.py:1281 +#: common/models.py:1234 msgid "Use instance name" -msgstr "" +msgstr "Použít název instance" -#: common/models.py:1282 +#: common/models.py:1235 msgid "Use the instance name in the title-bar" -msgstr "" +msgstr "Použít název instance v liště" -#: common/models.py:1287 +#: common/models.py:1240 msgid "Restrict showing `about`" -msgstr "" +msgstr "Omezit zobrazování `o aplikaci`" -#: common/models.py:1288 +#: common/models.py:1241 msgid "Show the `about` modal only to superusers" -msgstr "" +msgstr "Zobrazovat okno `o aplikaci` pouze superuživatelům" -#: common/models.py:1293 company/models.py:108 company/models.py:109 +#: common/models.py:1246 company/models.py:111 company/models.py:112 msgid "Company name" msgstr "Jméno společnosti" -#: common/models.py:1294 +#: common/models.py:1247 msgid "Internal company name" -msgstr "" +msgstr "Interní název společnosti" -#: common/models.py:1298 +#: common/models.py:1251 msgid "Base URL" -msgstr "" +msgstr "Základní URL" -#: common/models.py:1299 +#: common/models.py:1252 msgid "Base URL for server instance" -msgstr "" +msgstr "Základní URL pro instanci serveru" -#: common/models.py:1305 +#: common/models.py:1258 msgid "Default Currency" msgstr "Výchozí měna" -#: common/models.py:1306 +#: common/models.py:1259 msgid "Select base currency for pricing calculations" -msgstr "" +msgstr "Vyberte základní měnu pro cenové kalkulace" -#: common/models.py:1312 +#: common/models.py:1265 +msgid "Supported Currencies" +msgstr "Podporované měny" + +#: common/models.py:1266 +msgid "List of supported currency codes" +msgstr "Seznam podporovaných kódů měn" + +#: common/models.py:1272 msgid "Currency Update Interval" -msgstr "" +msgstr "Interval aktualizace měny" -#: common/models.py:1314 +#: common/models.py:1274 msgid "How often to update exchange rates (set to zero to disable)" -msgstr "" +msgstr "Jak často aktualizovat směnné kurzy (pro vypnutí nastavte na nulu)" -#: common/models.py:1317 common/models.py:1373 common/models.py:1386 -#: common/models.py:1394 common/models.py:1403 common/models.py:1412 -#: common/models.py:1620 common/models.py:1642 common/models.py:1757 -#: common/models.py:2076 +#: common/models.py:1277 common/models.py:1333 common/models.py:1346 +#: common/models.py:1354 common/models.py:1363 common/models.py:1372 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:2046 msgid "days" -msgstr "" +msgstr "dny" -#: common/models.py:1321 +#: common/models.py:1281 msgid "Currency Update Plugin" -msgstr "" +msgstr "Plugin aktualizace měny" -#: common/models.py:1322 +#: common/models.py:1282 msgid "Currency update plugin to use" -msgstr "" +msgstr "Plugin pro aktualizaci měn k použití" -#: common/models.py:1327 +#: common/models.py:1287 msgid "Download from URL" msgstr "Stáhnout z URL" -#: common/models.py:1329 +#: common/models.py:1289 msgid "Allow download of remote images and files from external URL" -msgstr "" +msgstr "Povolit stahování vzdálených obrázků a souborů z externích URL" -#: common/models.py:1335 +#: common/models.py:1295 msgid "Download Size Limit" -msgstr "" +msgstr "Limit velikosti stahování" + +#: common/models.py:1296 +msgid "Maximum allowable download size for remote image" +msgstr "Maximální povolená velikost stahování vzdáleného obrázku" + +#: common/models.py:1302 +msgid "User-agent used to download from URL" +msgstr "User-agent použitý ke stažení z adresy URL" + +#: common/models.py:1304 +msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" +msgstr "Povolit přepsání user-agenta používaného ke stahování obrázků a souborů z externí adresy URL (ponechte prázdné pro výchozí)" + +#: common/models.py:1309 +msgid "Strict URL Validation" +msgstr "Přísná validace URL" + +#: common/models.py:1310 +msgid "Require schema specification when validating URLs" +msgstr "Vyžadovat specifikaci schématu při ověřování adres URL" + +#: common/models.py:1315 +msgid "Require confirm" +msgstr "Vyžadovat potvrzení" + +#: common/models.py:1316 +msgid "Require explicit user confirmation for certain action." +msgstr "Vyžadovat výslovné potvrzení uživatele pro určitou akci." + +#: common/models.py:1321 +msgid "Tree Depth" +msgstr "Hloubka stromu" + +#: common/models.py:1323 +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." +msgstr "Výchozí hloubka stromu pro zobrazení stromu. Hlubší úrovně lze načítat líně podle potřeby." + +#: common/models.py:1329 +msgid "Update Check Interval" +msgstr "Interval kontroly aktualizací" + +#: common/models.py:1330 +msgid "How often to check for updates (set to zero to disable)" +msgstr "Jak často kontrolovat aktualizace (nastavte na nulu pro vypnutí)" #: common/models.py:1336 -msgid "Maximum allowable download size for remote image" -msgstr "" +msgid "Automatic Backup" +msgstr "Automatické Zálohování" + +#: common/models.py:1337 +msgid "Enable automatic backup of database and media files" +msgstr "Povolit automatické zálohování databáze a mediálních souborů" #: common/models.py:1342 -msgid "User-agent used to download from URL" -msgstr "" +msgid "Auto Backup Interval" +msgstr "Interval automatického zálohování" -#: common/models.py:1344 -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:1343 +msgid "Specify number of days between automated backup events" +msgstr "Zadejte počet dní mezi automatickými zálohovými událostmi" #: common/models.py:1349 -msgid "Strict URL Validation" -msgstr "" +msgid "Task Deletion Interval" +msgstr "Interval mazání úloh" -#: common/models.py:1350 -msgid "Require schema specification when validating URLs" -msgstr "" +#: common/models.py:1351 +msgid "Background task results will be deleted after specified number of days" +msgstr "Výsledky úloh na pozadí budou odstraněny po zadaném počtu dní" -#: common/models.py:1355 -msgid "Require confirm" -msgstr "" +#: common/models.py:1358 +msgid "Error Log Deletion Interval" +msgstr "Interval odstranění protokolu chyb" -#: common/models.py:1356 -msgid "Require explicit user confirmation for certain action." -msgstr "" +#: common/models.py:1360 +msgid "Error logs will be deleted after specified number of days" +msgstr "Záznamy chyb budou odstraněny po zadaném počtu dní" -#: common/models.py:1361 -msgid "Tree Depth" -msgstr "" - -#: common/models.py:1363 -msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." -msgstr "" +#: common/models.py:1367 +msgid "Notification Deletion Interval" +msgstr "Interval pro odstranění oznámení" #: common/models.py:1369 -msgid "Update Check Interval" -msgstr "" +msgid "User notifications will be deleted after specified number of days" +msgstr "Uživatelská oznámení budou smazána po zadaném počtu dní" -#: common/models.py:1370 -msgid "How often to check for updates (set to zero to disable)" -msgstr "" - -#: common/models.py:1376 -msgid "Automatic Backup" -msgstr "" +#: common/models.py:1376 templates/InvenTree/settings/sidebar.html:31 +msgid "Barcode Support" +msgstr "Podpora čárových kódů" #: common/models.py:1377 -msgid "Enable automatic backup of database and media files" -msgstr "" +msgid "Enable barcode scanner support in the web interface" +msgstr "Povolit podporu pro skenování čárových kódů ve webovém rozhraní" #: common/models.py:1382 -msgid "Auto Backup Interval" -msgstr "" +msgid "Barcode Input Delay" +msgstr "Zpoždění vstupu čárového kódu" #: common/models.py:1383 -msgid "Specify number of days between automated backup events" -msgstr "" +msgid "Barcode input processing delay time" +msgstr "Doba zpoždění zpracování vstupu čárového kódu" #: common/models.py:1389 -msgid "Task Deletion Interval" -msgstr "" +msgid "Barcode Webcam Support" +msgstr "Podpora webové kamery pro čárové kódy" -#: common/models.py:1391 -msgid "Background task results will be deleted after specified number of days" -msgstr "" +#: common/models.py:1390 +msgid "Allow barcode scanning via webcam in browser" +msgstr "Povolit skenování čárových kódů přes webovou kameru v prohlížeči" -#: common/models.py:1398 -msgid "Error Log Deletion Interval" -msgstr "" +#: common/models.py:1395 +msgid "Part Revisions" +msgstr "Revize dílu" -#: common/models.py:1400 -msgid "Error logs will be deleted after specified number of days" -msgstr "" +#: common/models.py:1396 +msgid "Enable revision field for Part" +msgstr "Povolit pole revize pro díl" + +#: common/models.py:1401 +msgid "Allow Deletion from Assembly" +msgstr "Povolit odstranění ze sestavy" + +#: common/models.py:1402 +msgid "Allow deletion of parts which are used in an assembly" +msgstr "Povolit odstranění dílů, které jsou použity v sestavě" #: common/models.py:1407 -msgid "Notification Deletion Interval" -msgstr "" +msgid "IPN Regex" +msgstr "IPN Regex" -#: common/models.py:1409 -msgid "User notifications will be deleted after specified number of days" -msgstr "" +#: common/models.py:1408 +msgid "Regular expression pattern for matching Part IPN" +msgstr "Regulární vzorec výrazu pro odpovídající IPN dílu" -#: common/models.py:1416 templates/InvenTree/settings/sidebar.html:31 -msgid "Barcode Support" -msgstr "" +#: common/models.py:1411 +msgid "Allow Duplicate IPN" +msgstr "Povolit duplicitní IPN" + +#: common/models.py:1412 +msgid "Allow multiple parts to share the same IPN" +msgstr "Povolit více dílům sdílet stejný IPN" #: common/models.py:1417 -msgid "Enable barcode scanner support in the web interface" -msgstr "" +msgid "Allow Editing IPN" +msgstr "Povolit editaci IPN" -#: common/models.py:1422 -msgid "Barcode Input Delay" -msgstr "" +#: common/models.py:1418 +msgid "Allow changing the IPN value while editing a part" +msgstr "Povolit změnu IPN při úpravách dílu" #: common/models.py:1423 -msgid "Barcode input processing delay time" -msgstr "" +msgid "Copy Part BOM Data" +msgstr "Kopírovat data BOM dílu" + +#: common/models.py:1424 +msgid "Copy BOM data by default when duplicating a part" +msgstr "Kopírovat data BOM ve výchozím nastavení při duplikování dílu" #: common/models.py:1429 -msgid "Barcode Webcam Support" -msgstr "" +msgid "Copy Part Parameter Data" +msgstr "Kopírovat data parametrů dílu" #: common/models.py:1430 -msgid "Allow barcode scanning via webcam in browser" -msgstr "" +msgid "Copy parameter data by default when duplicating a part" +msgstr "Kopírovat data parametrů ve výchozím nastavení při duplikování dílu" #: common/models.py:1435 -msgid "Part Revisions" -msgstr "" +msgid "Copy Part Test Data" +msgstr "Kopírovat zkušební data dílu" #: common/models.py:1436 -msgid "Enable revision field for Part" -msgstr "" +msgid "Copy test data by default when duplicating a part" +msgstr "Kopírovat testovací data ve výchozím nastavení při duplikování dílu" #: common/models.py:1441 -msgid "Allow Deletion from Assembly" -msgstr "" +msgid "Copy Category Parameter Templates" +msgstr "Kopírovat šablony parametrů kategorie" #: common/models.py:1442 -msgid "Allow deletion of parts which are used in an assembly" -msgstr "" - -#: common/models.py:1447 -msgid "IPN Regex" -msgstr "" - -#: common/models.py:1448 -msgid "Regular expression pattern for matching Part IPN" -msgstr "" - -#: common/models.py:1451 -msgid "Allow Duplicate IPN" -msgstr "" - -#: common/models.py:1452 -msgid "Allow multiple parts to share the same IPN" -msgstr "" - -#: common/models.py:1457 -msgid "Allow Editing IPN" -msgstr "" - -#: common/models.py:1458 -msgid "Allow changing the IPN value while editing a part" -msgstr "" - -#: common/models.py:1463 -msgid "Copy Part BOM Data" -msgstr "" - -#: common/models.py:1464 -msgid "Copy BOM data by default when duplicating a part" -msgstr "" - -#: common/models.py:1469 -msgid "Copy Part Parameter Data" -msgstr "" - -#: common/models.py:1470 -msgid "Copy parameter data by default when duplicating a part" -msgstr "" - -#: common/models.py:1475 -msgid "Copy Part Test Data" -msgstr "" - -#: common/models.py:1476 -msgid "Copy test data by default when duplicating a part" -msgstr "" - -#: common/models.py:1481 -msgid "Copy Category Parameter Templates" -msgstr "" - -#: common/models.py:1482 msgid "Copy category parameter templates when creating a part" -msgstr "" +msgstr "Kopírování šablon parametrů kategorie při vytváření dílu" -#: common/models.py:1487 part/admin.py:108 part/models.py:3815 -#: report/models.py:293 report/models.py:360 report/serializers.py:90 -#: report/serializers.py:131 stock/serializers.py:228 +#: common/models.py:1447 part/admin.py:108 part/models.py:3795 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:227 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" -msgstr "" +msgstr "Šablona" -#: common/models.py:1488 +#: common/models.py:1448 msgid "Parts are templates by default" -msgstr "" +msgstr "Díly jsou ve výchozím nastavení šablony" -#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 +#: common/models.py:1453 part/admin.py:91 part/admin.py:425 part/models.py:1052 #: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" -msgstr "" +msgstr "Sestava" -#: common/models.py:1494 +#: common/models.py:1454 msgid "Parts can be assembled from other components by default" -msgstr "" +msgstr "Díly lze ve výchozím nastavení sestavit z jiných komponentů" -#: common/models.py:1499 part/admin.py:95 part/models.py:1065 +#: common/models.py:1459 part/admin.py:95 part/models.py:1058 #: templates/js/translated/table_filters.js:729 msgid "Component" -msgstr "" +msgstr "Komponent" -#: common/models.py:1500 +#: common/models.py:1460 msgid "Parts can be used as sub-components by default" -msgstr "" +msgstr "Díly lze ve výchozím nastavení použít jako dílčí komponenty" -#: common/models.py:1505 part/admin.py:100 part/models.py:1077 +#: common/models.py:1465 part/admin.py:100 part/models.py:1070 msgid "Purchaseable" msgstr "Možné zakoupit" -#: common/models.py:1506 +#: common/models.py:1466 msgid "Parts are purchaseable by default" msgstr "Díly jsou zakoupitelné ve výchozím nastavení" -#: common/models.py:1511 part/admin.py:104 part/models.py:1083 +#: common/models.py:1471 part/admin.py:104 part/models.py:1076 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "Prodejné" -#: common/models.py:1512 +#: common/models.py:1472 msgid "Parts are salable by default" msgstr "Díly jsou prodejné ve výchozím nastavení" -#: common/models.py:1517 part/admin.py:113 part/models.py:1071 +#: common/models.py:1477 part/admin.py:113 part/models.py:1064 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" msgstr "Sledovatelné" -#: common/models.py:1518 +#: common/models.py:1478 msgid "Parts are trackable by default" msgstr "Díly jsou sledovatelné ve výchozím nastavení" -#: common/models.py:1523 part/admin.py:117 part/models.py:1093 +#: common/models.py:1483 part/admin.py:117 part/models.py:1086 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" msgstr "Nehmotné (virtuální)" -#: common/models.py:1524 +#: common/models.py:1484 msgid "Parts are virtual by default" msgstr "Díly jsou nehmotné (virtuální) ve výchozím nastavení" -#: common/models.py:1529 +#: common/models.py:1489 msgid "Show Import in Views" msgstr "Zobrazit Import v zobrazeních" -#: common/models.py:1530 +#: common/models.py:1490 msgid "Display the import wizard in some part views" -msgstr "" +msgstr "Zobrazit průvodce importem v některých zobrazeních dílu" -#: common/models.py:1535 +#: common/models.py:1495 msgid "Show related parts" msgstr "Zobrazit související díly" -#: common/models.py:1536 +#: common/models.py:1496 msgid "Display related parts for a part" msgstr "Zobrazit související díly pro díl" -#: common/models.py:1541 +#: common/models.py:1501 msgid "Initial Stock Data" msgstr "Počáteční údaje zásob" -#: common/models.py:1542 +#: common/models.py:1502 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:1547 templates/js/translated/part.js:107 +#: common/models.py:1507 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Počáteční údaje dodavatele" -#: common/models.py:1549 +#: common/models.py:1509 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:1555 +#: common/models.py:1515 msgid "Part Name Display Format" msgstr "Formát zobrazení jména dílu" -#: common/models.py:1556 +#: common/models.py:1516 msgid "Format to display the part name" msgstr "Formát pro zobrazení názvu dílu" -#: common/models.py:1562 +#: common/models.py:1522 msgid "Part Category Default Icon" msgstr "Výchozí ikona kategorie dílu" -#: common/models.py:1563 +#: common/models.py:1523 msgid "Part category default icon (empty means no icon)" msgstr "Výchozí ikona kategorie dílu (prázdné znamená bez ikony)" -#: common/models.py:1567 +#: common/models.py:1527 msgid "Enforce Parameter Units" -msgstr "" +msgstr "Vynutit jednotky parametru" -#: common/models.py:1569 +#: common/models.py:1529 msgid "If units are provided, parameter values must match the specified units" -msgstr "" +msgstr "Pokud jsou uvedeny jednotky, musí hodnoty parametrů odpovídat zadaným jednotkám" -#: common/models.py:1575 +#: common/models.py:1535 msgid "Minimum Pricing Decimal Places" msgstr "Minimální počet desetinných míst u cen" -#: common/models.py:1577 +#: common/models.py:1537 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:1583 +#: common/models.py:1548 msgid "Maximum Pricing Decimal Places" msgstr "Maximální počet desetinných míst u cen" -#: common/models.py:1585 +#: common/models.py:1550 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:1591 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "Použít ceny dodavatele" -#: common/models.py:1593 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" -msgstr "" +msgstr "Zahrnout cenová zvýhodnění dodavatelů do celkových cenových kalkulací" -#: common/models.py:1599 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "Přepsání historie nákupu" -#: common/models.py:1601 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" -msgstr "" +msgstr "Historické ceny nákupních objednávek mají přednost před cenovými zvýhodněními dodavatele" -#: common/models.py:1607 +#: common/models.py:1577 msgid "Use Stock Item Pricing" -msgstr "" +msgstr "Použít ceny skladových položek" -#: common/models.py:1609 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" -msgstr "" +msgstr "Použít ceny z ručně zadaných skladových údajů pro cenové kalkulace" -#: common/models.py:1615 +#: common/models.py:1585 msgid "Stock Item Pricing Age" -msgstr "" +msgstr "Stáří cen skladových položek" + +#: common/models.py:1587 +msgid "Exclude stock items older than this number of days from pricing calculations" +msgstr "Vyloučit skladové položky starší než tento počet dní z cenových kalkulací" + +#: common/models.py:1594 +msgid "Use Variant Pricing" +msgstr "Použít cenu varianty" + +#: common/models.py:1595 +msgid "Include variant pricing in overall pricing calculations" +msgstr "Zahrnutí cen variant do celkových cenových kalkulací" + +#: common/models.py:1600 +msgid "Active Variants Only" +msgstr "Pouze aktivní varianty" + +#: common/models.py:1602 +msgid "Only use active variant parts for calculating variant pricing" +msgstr "Pro výpočet ceny varianty použijte pouze aktivní díly varianty" + +#: common/models.py:1608 +msgid "Pricing Rebuild Interval" +msgstr "Interval přestavby cen" + +#: common/models.py:1610 +msgid "Number of days before part pricing is automatically updated" +msgstr "Počet dní před automatickou aktualizací cen dílů" #: common/models.py:1617 -msgid "Exclude stock items older than this number of days from pricing calculations" -msgstr "" +msgid "Internal Prices" +msgstr "Interní ceny" -#: common/models.py:1624 -msgid "Use Variant Pricing" -msgstr "" +#: common/models.py:1618 +msgid "Enable internal prices for parts" +msgstr "Povolit interní ceny pro díly" + +#: common/models.py:1623 +msgid "Internal Price Override" +msgstr "Přepis interní ceny" #: common/models.py:1625 -msgid "Include variant pricing in overall pricing calculations" -msgstr "" +msgid "If available, internal prices override price range calculations" +msgstr "Pokud jsou k dispozici, interní ceny mají přednost před výpočty cenového rozpětí" -#: common/models.py:1630 -msgid "Active Variants Only" -msgstr "" +#: common/models.py:1631 +msgid "Enable label printing" +msgstr "Povolit tisk štítků" #: common/models.py:1632 -msgid "Only use active variant parts for calculating variant pricing" -msgstr "" - -#: common/models.py:1638 -msgid "Pricing Rebuild Interval" -msgstr "" - -#: common/models.py:1640 -msgid "Number of days before part pricing is automatically updated" -msgstr "" - -#: common/models.py:1647 -msgid "Internal Prices" -msgstr "" - -#: common/models.py:1648 -msgid "Enable internal prices for parts" -msgstr "" - -#: common/models.py:1653 -msgid "Internal Price Override" -msgstr "" - -#: common/models.py:1655 -msgid "If available, internal prices override price range calculations" -msgstr "" - -#: common/models.py:1661 -msgid "Enable label printing" -msgstr "" - -#: common/models.py:1662 msgid "Enable label printing from the web interface" -msgstr "" +msgstr "Povolit tisk štítků z webového rozhraní" -#: common/models.py:1667 +#: common/models.py:1637 msgid "Label Image DPI" -msgstr "" +msgstr "DPI rozlišení štítků" -#: common/models.py:1669 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" -msgstr "" +msgstr "Rozlišení DPI při generování obrazových souborů, které se dodávají do zásuvných modulů pro tisk štítků" -#: common/models.py:1675 +#: common/models.py:1645 msgid "Enable Reports" -msgstr "" +msgstr "Povolit reporty" -#: common/models.py:1676 +#: common/models.py:1646 msgid "Enable generation of reports" -msgstr "" +msgstr "Povolit generování reportů" -#: common/models.py:1681 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" -msgstr "" +msgstr "Režim ladění chyb" -#: common/models.py:1682 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" -msgstr "" +msgstr "Generovat reporty v režimu ladění (HTML výstup)" -#: common/models.py:1687 +#: common/models.py:1657 msgid "Log Report Errors" -msgstr "" +msgstr "Zaznamenávat chyby reportů" -#: common/models.py:1688 +#: common/models.py:1658 msgid "Log errors which occur when generating reports" -msgstr "" +msgstr "Zaznamenávat chyby, které se vyskytnou při vytváření reportů" -#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:301 +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:302 msgid "Page Size" msgstr "Velikost stránky" -#: common/models.py:1694 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "Výchozí velikost stránky pro PDF reporty" -#: common/models.py:1699 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "Povolit testovací reporty" -#: common/models.py:1700 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "Povolit generování zkušebních reportů" -#: common/models.py:1705 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "Připojit testovací reporty" -#: common/models.py:1707 +#: common/models.py:1677 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:1713 +#: common/models.py:1683 msgid "Globally Unique Serials" -msgstr "" +msgstr "Globálně unikátní sériová čísla" -#: common/models.py:1714 +#: common/models.py:1684 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:1719 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "Automaticky vyplnit sériová čísla" -#: common/models.py:1720 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "Automaticky vyplnit sériová čísla ve formulářích" -#: common/models.py:1725 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "Odstranit vyčerpané zásoby" -#: common/models.py:1727 +#: common/models.py:1697 msgid "Determines default behavior when a stock item is depleted" -msgstr "" +msgstr "Určuje výchozí chování při vyčerpání zásoby položky" -#: common/models.py:1733 +#: common/models.py:1703 msgid "Batch Code Template" -msgstr "" +msgstr "Šablona kódu dávky" -#: common/models.py:1735 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" -msgstr "" +msgstr "Šablona pro generování výchozích kódů dávky pro skladové položky" -#: common/models.py:1740 +#: common/models.py:1710 msgid "Stock Expiry" -msgstr "" +msgstr "Expirace zásob" -#: common/models.py:1741 +#: common/models.py:1711 msgid "Enable stock expiry functionality" -msgstr "" +msgstr "Povolit funkci expirace zásob" -#: common/models.py:1746 +#: common/models.py:1716 msgid "Sell Expired Stock" -msgstr "" +msgstr "Prodat prošlé zásoby" -#: common/models.py:1747 +#: common/models.py:1717 msgid "Allow sale of expired stock" -msgstr "" +msgstr "Povolit prodej prošlých zásob" -#: common/models.py:1752 +#: common/models.py:1722 msgid "Stock Stale Time" -msgstr "" +msgstr "Čas stáří zásob" + +#: common/models.py:1724 +msgid "Number of days stock items are considered stale before expiring" +msgstr "Počet dnů, po které jsou skladové položky považovány za nevyužité před uplynutím doby expirace" + +#: common/models.py:1731 +msgid "Build Expired Stock" +msgstr "Sestavit prošlé zásoby" + +#: common/models.py:1732 +msgid "Allow building with expired stock" +msgstr "Povolit sestavování s prošlými zásobami" + +#: common/models.py:1737 +msgid "Stock Ownership Control" +msgstr "Kontrola vlastnictví zásob" + +#: common/models.py:1738 +msgid "Enable ownership control over stock locations and items" +msgstr "Umožnit kontrolu vlastnictví nad skladovými místy a položkami" + +#: common/models.py:1743 +msgid "Stock Location Default Icon" +msgstr "Výchozí ikona umístění zásob" + +#: common/models.py:1744 +msgid "Stock location default icon (empty means no icon)" +msgstr "Výchozí ikona umístění zásob (prázdné znamená bez ikony)" + +#: common/models.py:1748 +msgid "Show Installed Stock Items" +msgstr "Zobrazit nainstalované skladové položky" + +#: common/models.py:1749 +msgid "Display installed stock items in stock tables" +msgstr "Zobrazit nainstalované skladové položky ve skladových tabulkách" #: common/models.py:1754 -msgid "Number of days stock items are considered stale before expiring" -msgstr "" +msgid "Check BOM when installing items" +msgstr "Zkontrolovat BOM při instalaci položek" -#: common/models.py:1761 -msgid "Build Expired Stock" -msgstr "" +#: common/models.py:1756 +msgid "Installed stock items must exist in the BOM for the parent part" +msgstr "Nainstalované skladové položky musí existovat v BOM pro nadřazený díl" #: common/models.py:1762 -msgid "Allow building with expired stock" -msgstr "" +msgid "Allow Out of Stock Transfer" +msgstr "Povolit převod mimo sklad" -#: common/models.py:1767 -msgid "Stock Ownership Control" -msgstr "" +#: common/models.py:1764 +msgid "Allow stock items which are not in stock to be transferred between stock locations" +msgstr "Umožnit přesun skladových položek, které nejsou na skladě, mezi skladovými místy" -#: common/models.py:1768 -msgid "Enable ownership control over stock locations and items" -msgstr "" +#: common/models.py:1770 +msgid "Build Order Reference Pattern" +msgstr "Referenční vzor objednávky sestavy" -#: common/models.py:1773 -msgid "Stock Location Default Icon" -msgstr "" +#: common/models.py:1772 +msgid "Required pattern for generating Build Order reference field" +msgstr "Požadovaný vzor pro generování referenčního pole Objednávka sestavy" -#: common/models.py:1774 -msgid "Stock location default icon (empty means no icon)" -msgstr "" +#: common/models.py:1778 common/models.py:1806 common/models.py:1828 +#: common/models.py:1864 +msgid "Require Responsible Owner" +msgstr "Vyžadovat odpovědného vlastníka" -#: common/models.py:1778 -msgid "Show Installed Stock Items" -msgstr "" - -#: common/models.py:1779 -msgid "Display installed stock items in stock tables" -msgstr "" +#: common/models.py:1779 common/models.py:1807 common/models.py:1829 +#: common/models.py:1865 +msgid "A responsible owner must be assigned to each order" +msgstr "Ke každé objednávce musí být přiřazen odpovědný vlastník" #: common/models.py:1784 -msgid "Check BOM when installing items" -msgstr "" +msgid "Block Until Tests Pass" +msgstr "Blokovat, dokud testy neprojdou" #: common/models.py:1786 -msgid "Installed stock items must exist in the BOM for the parent part" -msgstr "" +msgid "Prevent build outputs from being completed until all required tests pass" +msgstr "Zabránit dokončení výstupů sestavy, dokud neprojdou všechny požadované testy" #: common/models.py:1792 -msgid "Allow Out of Stock Transfer" -msgstr "" +msgid "Enable Return Orders" +msgstr "Povolit vracení objednávek" -#: common/models.py:1794 -msgid "Allow stock items which are not in stock to be transferred between stock locations" -msgstr "" +#: common/models.py:1793 +msgid "Enable return order functionality in the user interface" +msgstr "Povolit funkci vrácení objednávky v uživatelském rozhraní" + +#: common/models.py:1798 +msgid "Return Order Reference Pattern" +msgstr "Referenční vzor návratové objednávky" #: common/models.py:1800 -msgid "Build Order Reference Pattern" -msgstr "" +msgid "Required pattern for generating Return Order reference field" +msgstr "Požadovaný vzor pro vygenerování referenčního pole Návratová objednávka" -#: common/models.py:1802 -msgid "Required pattern for generating Build Order reference field" -msgstr "" - -#: common/models.py:1808 common/models.py:1836 common/models.py:1858 -#: common/models.py:1894 -msgid "Require Responsible Owner" -msgstr "" - -#: common/models.py:1809 common/models.py:1837 common/models.py:1859 -#: common/models.py:1895 -msgid "A responsible owner must be assigned to each order" -msgstr "" +#: common/models.py:1812 +msgid "Edit Completed Return Orders" +msgstr "Úprava dokončených návratových objednávek" #: common/models.py:1814 -msgid "Block Until Tests Pass" -msgstr "" +msgid "Allow editing of return orders after they have been completed" +msgstr "Umožnit úpravu návratových objednávek po jejich dokončení" -#: common/models.py:1816 -msgid "Prevent build outputs from being completed until all required tests pass" -msgstr "" +#: common/models.py:1820 +msgid "Sales Order Reference Pattern" +msgstr "Referenční vzor prodejní objednávky" #: common/models.py:1822 -msgid "Enable Return Orders" -msgstr "" +msgid "Required pattern for generating Sales Order reference field" +msgstr "Požadovaný vzor pro generování referenčního pole prodejní objednávky" -#: common/models.py:1823 -msgid "Enable return order functionality in the user interface" -msgstr "" +#: common/models.py:1834 +msgid "Sales Order Default Shipment" +msgstr "Výchozí přeprava prodejní objednávky" -#: common/models.py:1828 -msgid "Return Order Reference Pattern" -msgstr "" +#: common/models.py:1835 +msgid "Enable creation of default shipment with sales orders" +msgstr "Povolit vytvoření výchozí přepravy s prodejními objednávkami" -#: common/models.py:1830 -msgid "Required pattern for generating Return Order reference field" -msgstr "" +#: common/models.py:1840 +msgid "Edit Completed Sales Orders" +msgstr "Úprava dokončených prodejních objednávek" #: common/models.py:1842 -msgid "Edit Completed Return Orders" -msgstr "" +msgid "Allow editing of sales orders after they have been shipped or completed" +msgstr "Umožnit úpravy prodejních objednávek po jejich odeslání nebo dokončení" -#: common/models.py:1844 -msgid "Allow editing of return orders after they have been completed" -msgstr "" +#: common/models.py:1848 +msgid "Mark Shipped Orders as Complete" +msgstr "Označit odeslané objednávky jako dokončené" #: common/models.py:1850 -msgid "Sales Order Reference Pattern" -msgstr "" +msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" +msgstr "Prodejní objednávky označené jako odeslané se automaticky dokončí a obejdou stav „odesláno“" -#: common/models.py:1852 -msgid "Required pattern for generating Sales Order reference field" -msgstr "" +#: common/models.py:1856 +msgid "Purchase Order Reference Pattern" +msgstr "Referenční vzor nákupní objednávky" -#: common/models.py:1864 -msgid "Sales Order Default Shipment" -msgstr "" - -#: common/models.py:1865 -msgid "Enable creation of default shipment with sales orders" -msgstr "" +#: common/models.py:1858 +msgid "Required pattern for generating Purchase Order reference field" +msgstr "Požadovaný vzor pro generování referenčního pole nákupní objednávky" #: common/models.py:1870 -msgid "Edit Completed Sales Orders" -msgstr "" +msgid "Edit Completed Purchase Orders" +msgstr "Úprava dokončených nákupních objednávek" #: common/models.py:1872 -msgid "Allow editing of sales orders after they have been shipped or completed" -msgstr "" +msgid "Allow editing of purchase orders after they have been shipped or completed" +msgstr "Umožnit úpravy nákupních objednávek po jejich odeslání nebo dokončení" #: common/models.py:1878 -#, fuzzy -#| msgid "A build order has been completed" -msgid "Mark Shipped Orders as Complete" -msgstr "Příkaz k sestavení byl dokončen" +msgid "Auto Complete Purchase Orders" +msgstr "Automatické dokončování nákupních objednávek" #: common/models.py:1880 -msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" -msgstr "" +msgid "Automatically mark purchase orders as complete when all line items are received" +msgstr "Automaticky označit nákupní objednávky jako kompletní, jakmile jsou přijaty všechny řádkové položky" -#: common/models.py:1886 -msgid "Purchase Order Reference Pattern" -msgstr "" +#: common/models.py:1887 +msgid "Enable password forgot" +msgstr "Povolit pole zapomenutého hesla" #: common/models.py:1888 -msgid "Required pattern for generating Purchase Order reference field" -msgstr "" +msgid "Enable password forgot function on the login pages" +msgstr "Povolení funkce zapomenutého hesla na přihlašovacích stránkách" + +#: common/models.py:1893 +msgid "Enable registration" +msgstr "Povolit registrace" + +#: common/models.py:1894 +msgid "Enable self-registration for users on the login pages" +msgstr "Povolit samoregistraci uživatelů na přihlašovacích stránkách" + +#: common/models.py:1899 +msgid "Enable SSO" +msgstr "Povolit SSO" #: common/models.py:1900 -msgid "Edit Completed Purchase Orders" -msgstr "" - -#: common/models.py:1902 -msgid "Allow editing of purchase orders after they have been shipped or completed" -msgstr "" - -#: common/models.py:1908 -msgid "Auto Complete Purchase Orders" -msgstr "" - -#: common/models.py:1910 -msgid "Automatically mark purchase orders as complete when all line items are received" -msgstr "" - -#: common/models.py:1917 -msgid "Enable password forgot" -msgstr "" - -#: common/models.py:1918 -msgid "Enable password forgot function on the login pages" -msgstr "" - -#: common/models.py:1923 -msgid "Enable registration" -msgstr "" - -#: common/models.py:1924 -msgid "Enable self-registration for users on the login pages" -msgstr "" - -#: common/models.py:1929 -msgid "Enable SSO" -msgstr "" - -#: common/models.py:1930 msgid "Enable SSO on the login pages" -msgstr "" +msgstr "Povolit SSO na přihlašovacích stránkách" -#: common/models.py:1935 +#: common/models.py:1905 msgid "Enable SSO registration" -msgstr "" +msgstr "Povolit SSO registraci" -#: common/models.py:1937 +#: common/models.py:1907 msgid "Enable self-registration via SSO for users on the login pages" -msgstr "" +msgstr "Povolit samoregistraci uživatelů prostřednictvím SSO na přihlašovacích stránkách" -#: common/models.py:1943 +#: common/models.py:1913 msgid "Email required" -msgstr "" +msgstr "Vyžadován e-mail" -#: common/models.py:1944 +#: common/models.py:1914 msgid "Require user to supply mail on signup" -msgstr "" +msgstr "Požadovat, aby uživatel při registraci zadal e-mail" -#: common/models.py:1949 +#: common/models.py:1919 msgid "Auto-fill SSO users" -msgstr "" +msgstr "Automaticky vyplnit SSO uživatele" -#: common/models.py:1951 +#: common/models.py:1921 msgid "Automatically fill out user-details from SSO account-data" -msgstr "" +msgstr "Automaticky vyplnit údaje o uživateli z údajů o účtu SSO" -#: common/models.py:1957 +#: common/models.py:1927 msgid "Mail twice" -msgstr "" +msgstr "Mail dvakrát" -#: common/models.py:1958 +#: common/models.py:1928 msgid "On signup ask users twice for their mail" -msgstr "" +msgstr "Při registraci dvakrát požádat uživatele o zadání e-mailu" -#: common/models.py:1963 +#: common/models.py:1933 msgid "Password twice" -msgstr "" +msgstr "Heslo dvakrát" -#: common/models.py:1964 +#: common/models.py:1934 msgid "On signup ask users twice for their password" -msgstr "" +msgstr "Při registraci dvakrát požádat uživatele o heslo" + +#: common/models.py:1939 +msgid "Allowed domains" +msgstr "Povolené domény" + +#: common/models.py:1941 +msgid "Restrict signup to certain domains (comma-separated, starting with @)" +msgstr "Omezit registraci na určité domény (oddělené čárkou a začínající @)" + +#: common/models.py:1947 +msgid "Group on signup" +msgstr "Skupina při registraci" + +#: common/models.py:1948 +msgid "Group to which new users are assigned on registration" +msgstr "Skupina, ke které jsou přiděleni noví uživatelé při registraci" + +#: common/models.py:1953 +msgid "Enforce MFA" +msgstr "Vynutit MFA" + +#: common/models.py:1954 +msgid "Users must use multifactor security." +msgstr "Uživatelé musí používat vícefaktorové zabezpečení." + +#: common/models.py:1959 +msgid "Check plugins on startup" +msgstr "Zkontrolovat pluginy při spuštění" + +#: common/models.py:1961 +msgid "Check that all plugins are installed on startup - enable in container environments" +msgstr "Zkontrolujte, zda jsou při spuštění nainstalovány všechny pluginy - povolit v kontejnerových prostředích" #: common/models.py:1969 -msgid "Allowed domains" -msgstr "" +msgid "Check for plugin updates" +msgstr "Zkontrolovat aktualizace pluginů" -#: common/models.py:1971 -msgid "Restrict signup to certain domains (comma-separated, starting with @)" -msgstr "" +#: common/models.py:1970 +msgid "Enable periodic checks for updates to installed plugins" +msgstr "Povolit pravidelné kontroly aktualizací nainstalovaných pluginů" + +#: common/models.py:1976 +msgid "Enable URL integration" +msgstr "Povolit integraci URL" #: common/models.py:1977 -msgid "Group on signup" -msgstr "" - -#: common/models.py:1978 -msgid "Group to which new users are assigned on registration" -msgstr "" +msgid "Enable plugins to add URL routes" +msgstr "Povolit plug-inům přidávat trasy URL" #: common/models.py:1983 -msgid "Enforce MFA" -msgstr "" +msgid "Enable navigation integration" +msgstr "Povolit integraci navigace" #: common/models.py:1984 -msgid "Users must use multifactor security." -msgstr "" +msgid "Enable plugins to integrate into navigation" +msgstr "Povolit integrování pluginů do navigace" -#: common/models.py:1989 -msgid "Check plugins on startup" -msgstr "" +#: common/models.py:1990 +msgid "Enable app integration" +msgstr "Povolit integraci aplikací" #: common/models.py:1991 -msgid "Check that all plugins are installed on startup - enable in container environments" -msgstr "" - -#: common/models.py:1999 -msgid "Check for plugin updates" -msgstr "" - -#: common/models.py:2000 -msgid "Enable periodic checks for updates to installed plugins" -msgstr "" - -#: common/models.py:2006 -msgid "Enable URL integration" -msgstr "" - -#: common/models.py:2007 -msgid "Enable plugins to add URL routes" -msgstr "" - -#: common/models.py:2013 -msgid "Enable navigation integration" -msgstr "" - -#: common/models.py:2014 -msgid "Enable plugins to integrate into navigation" -msgstr "" - -#: common/models.py:2020 -msgid "Enable app integration" -msgstr "" - -#: common/models.py:2021 msgid "Enable plugins to add apps" -msgstr "" +msgstr "Povolit pluginům přidávát aplikace" + +#: common/models.py:1997 +msgid "Enable schedule integration" +msgstr "Povolit integraci plánu" + +#: common/models.py:1998 +msgid "Enable plugins to run scheduled tasks" +msgstr "Povolit pluginům spouštění naplánovaných úloh" + +#: common/models.py:2004 +msgid "Enable event integration" +msgstr "Povolit integraci událostí" + +#: common/models.py:2005 +msgid "Enable plugins to respond to internal events" +msgstr "Povolit pluginům reagovat na interní události" + +#: common/models.py:2011 +msgid "Enable project codes" +msgstr "Povolit kódy projektů" + +#: common/models.py:2012 +msgid "Enable project codes for tracking projects" +msgstr "Povolit kódy projektů pro sledování projektů" + +#: common/models.py:2017 +msgid "Stocktake Functionality" +msgstr "Funkce inventury" + +#: common/models.py:2019 +msgid "Enable stocktake functionality for recording stock levels and calculating stock value" +msgstr "Povolit funkci inventury pro evidenci stavu zásob a výpočet hodnoty zásob" + +#: common/models.py:2025 +msgid "Exclude External Locations" +msgstr "Vyloučit externí umístění" #: common/models.py:2027 -msgid "Enable schedule integration" -msgstr "" +msgid "Exclude stock items in external locations from stocktake calculations" +msgstr "Vyloučit skladové položky na externích místech z výpočtů inventury" -#: common/models.py:2028 -msgid "Enable plugins to run scheduled tasks" -msgstr "" - -#: common/models.py:2034 -msgid "Enable event integration" -msgstr "" +#: common/models.py:2033 +msgid "Automatic Stocktake Period" +msgstr "Perioda automatické inventury" #: common/models.py:2035 -msgid "Enable plugins to respond to internal events" -msgstr "" +msgid "Number of days between automatic stocktake recording (set to zero to disable)" +msgstr "Počet dní mezi automatickým záznamem inventury (pro vypnutí nastavte nulu)" #: common/models.py:2041 -msgid "Enable project codes" -msgstr "" +msgid "Report Deletion Interval" +msgstr "Interval mazání reportů" -#: common/models.py:2042 -msgid "Enable project codes for tracking projects" -msgstr "" +#: common/models.py:2043 +msgid "Stocktake reports will be deleted after specified number of days" +msgstr "Reporty o inventuře se po určitém počtu dní vymažou" -#: common/models.py:2047 -msgid "Stocktake Functionality" -msgstr "" +#: common/models.py:2050 +msgid "Display Users full names" +msgstr "Zobrazit celá jména uživatelů" -#: common/models.py:2049 -msgid "Enable stocktake functionality for recording stock levels and calculating stock value" -msgstr "" +#: common/models.py:2051 +msgid "Display Users full names instead of usernames" +msgstr "Zobrazit plná jména uživatelů namísto uživatelských jmen" -#: common/models.py:2055 -msgid "Exclude External Locations" -msgstr "" +#: common/models.py:2056 +msgid "Enable Test Station Data" +msgstr "Povolit data zkušební stanice" #: common/models.py:2057 -msgid "Exclude stock items in external locations from stocktake calculations" -msgstr "" - -#: common/models.py:2063 -msgid "Automatic Stocktake Period" -msgstr "" - -#: common/models.py:2065 -msgid "Number of days between automatic stocktake recording (set to zero to disable)" -msgstr "" - -#: common/models.py:2071 -msgid "Report Deletion Interval" -msgstr "" - -#: common/models.py:2073 -msgid "Stocktake reports will be deleted after specified number of days" -msgstr "" - -#: common/models.py:2080 -msgid "Display Users full names" -msgstr "" - -#: common/models.py:2081 -msgid "Display Users full names instead of usernames" -msgstr "" - -#: common/models.py:2086 -msgid "Enable Test Station Data" -msgstr "" - -#: common/models.py:2087 msgid "Enable test station data collection for test results" -msgstr "" +msgstr "Povolit sběr dat ze zkušební stanice pro výsledky testů" -#: common/models.py:2099 common/models.py:2509 +#: common/models.py:2069 common/models.py:2479 msgid "Settings key (must be unique - case insensitive" -msgstr "" +msgstr "Klíč nastavení (musí být unikátní - rozlišuje malá a velká písmena" -#: common/models.py:2142 +#: common/models.py:2112 msgid "Hide inactive parts" -msgstr "" +msgstr "Skrýt neaktivní díly" + +#: common/models.py:2114 +msgid "Hide inactive parts in results displayed on the homepage" +msgstr "Skrýt neaktivní díly ve výsledcích zobrazených na domovské stránce" + +#: common/models.py:2120 +msgid "Show subscribed parts" +msgstr "Zobrazit odebírané díly" + +#: common/models.py:2121 +msgid "Show subscribed parts on the homepage" +msgstr "Zobrazit odebírané díly na domovské stránce" + +#: common/models.py:2126 +msgid "Show subscribed categories" +msgstr "Zobrazit odebírané kategorie" + +#: common/models.py:2127 +msgid "Show subscribed part categories on the homepage" +msgstr "Zobrazit kategorie odebíraných dílů na hlavní stránce" + +#: common/models.py:2132 +msgid "Show latest parts" +msgstr "Zobrazit nejnovější díly" + +#: common/models.py:2133 +msgid "Show latest parts on the homepage" +msgstr "Zobrazit nejnovější díly na domovské stránce" + +#: common/models.py:2138 +msgid "Show invalid BOMs" +msgstr "Zobrazit neplatné kusovníky (BOMy)" + +#: common/models.py:2139 +msgid "Show BOMs that await validation on the homepage" +msgstr "Zobrazit kusovníky (BOMy), které čekají na ověření, na domovské stránce" #: common/models.py:2144 -msgid "Hide inactive parts in results displayed on the homepage" -msgstr "" +msgid "Show recent stock changes" +msgstr "Zobrazit nedávné změny zásob" + +#: common/models.py:2145 +msgid "Show recently changed stock items on the homepage" +msgstr "Zobrazit nedávno změněné skladové položky na domovské stránce" #: common/models.py:2150 -msgid "Show subscribed parts" -msgstr "" +msgid "Show low stock" +msgstr "Zobrazit nízký stav zásob" #: common/models.py:2151 -msgid "Show subscribed parts on the homepage" -msgstr "" +msgid "Show low stock items on the homepage" +msgstr "Zobrazit na domovské stránce položky s nízkou skladovou zásobou" #: common/models.py:2156 -msgid "Show subscribed categories" -msgstr "" +msgid "Show depleted stock" +msgstr "Zobrazit vyčerpané zásoby" #: common/models.py:2157 -msgid "Show subscribed part categories on the homepage" -msgstr "" +msgid "Show depleted stock items on the homepage" +msgstr "Zobrazit vyčerpané položky na domovské stránce" #: common/models.py:2162 -msgid "Show latest parts" -msgstr "" +msgid "Show needed stock" +msgstr "Zobrazit potřebné zásoby" #: common/models.py:2163 -msgid "Show latest parts on the homepage" -msgstr "" +msgid "Show stock items needed for builds on the homepage" +msgstr "Zobrazit skladové položky potřebné pro sestavy na domovské stránce" #: common/models.py:2168 -msgid "Show invalid BOMs" -msgstr "" +msgid "Show expired stock" +msgstr "Zobrazit expirované zásoby" #: common/models.py:2169 -msgid "Show BOMs that await validation on the homepage" -msgstr "" +msgid "Show expired stock items on the homepage" +msgstr "Zobrazit expirované skladové položky na domovské stránce" #: common/models.py:2174 -msgid "Show recent stock changes" -msgstr "" +msgid "Show stale stock" +msgstr "Zobrazit neaktuální zásoby" #: common/models.py:2175 -msgid "Show recently changed stock items on the homepage" -msgstr "" +msgid "Show stale stock items on the homepage" +msgstr "Zobrazit neaktuální skladové položky na domovské stránce" #: common/models.py:2180 -msgid "Show low stock" -msgstr "" +msgid "Show pending builds" +msgstr "Zobrazit nevyřízené sestavy" #: common/models.py:2181 -msgid "Show low stock items on the homepage" -msgstr "" +msgid "Show pending builds on the homepage" +msgstr "Zobrazit nevyřízené sestavy na domovské stránce" #: common/models.py:2186 -msgid "Show depleted stock" -msgstr "" +msgid "Show overdue builds" +msgstr "Zobrazit sestavy po splatnosti" #: common/models.py:2187 -msgid "Show depleted stock items on the homepage" -msgstr "" +msgid "Show overdue builds on the homepage" +msgstr "Zobrazit sestavy po splatnosti na domovské stránce" #: common/models.py:2192 -msgid "Show needed stock" -msgstr "" +msgid "Show outstanding POs" +msgstr "Zobrazit nevyřízené PO" #: common/models.py:2193 -msgid "Show stock items needed for builds on the homepage" -msgstr "" +msgid "Show outstanding POs on the homepage" +msgstr "Zobrazit nevyřízené PO na domovské stránce" #: common/models.py:2198 -msgid "Show expired stock" -msgstr "" +msgid "Show overdue POs" +msgstr "Zobrazit PO po splatnosti" #: common/models.py:2199 -msgid "Show expired stock items on the homepage" -msgstr "" +msgid "Show overdue POs on the homepage" +msgstr "Zobrazit PO po splatnosti na domovské stránce" #: common/models.py:2204 -msgid "Show stale stock" -msgstr "" +msgid "Show outstanding SOs" +msgstr "Zobrazit nevyřízené SO" #: common/models.py:2205 -msgid "Show stale stock items on the homepage" -msgstr "" +msgid "Show outstanding SOs on the homepage" +msgstr "Zobrazit nevyřízené SO na domovské stránce" #: common/models.py:2210 -msgid "Show pending builds" -msgstr "" +msgid "Show overdue SOs" +msgstr "Zobrazit SO po splatnosti" #: common/models.py:2211 -msgid "Show pending builds on the homepage" -msgstr "" +msgid "Show overdue SOs on the homepage" +msgstr "Zobrazit SO po splatnosti na domovské stránce" #: common/models.py:2216 -msgid "Show overdue builds" -msgstr "" +msgid "Show pending SO shipments" +msgstr "Zobrazit čekající zásilky SO" #: common/models.py:2217 -msgid "Show overdue builds on the homepage" -msgstr "" +msgid "Show pending SO shipments on the homepage" +msgstr "Zobrazit čekající zásilky SO na domovské stránce" #: common/models.py:2222 -msgid "Show outstanding POs" -msgstr "" +msgid "Show News" +msgstr "Zobrazit novinky" #: common/models.py:2223 -msgid "Show outstanding POs on the homepage" -msgstr "" +msgid "Show news on the homepage" +msgstr "Zobrazit novinky na domovské stránce" #: common/models.py:2228 -msgid "Show overdue POs" -msgstr "" +msgid "Inline label display" +msgstr "Zobrazení štítků na řádku" -#: common/models.py:2229 -msgid "Show overdue POs on the homepage" -msgstr "" +#: common/models.py:2230 +msgid "Display PDF labels in the browser, instead of downloading as a file" +msgstr "Zobrazit štítky PDF v prohlížeči namísto stahování jako soubor" -#: common/models.py:2234 -msgid "Show outstanding SOs" -msgstr "" +#: common/models.py:2236 +msgid "Default label printer" +msgstr "Výchozí tiskárna štítků" -#: common/models.py:2235 -msgid "Show outstanding SOs on the homepage" -msgstr "" +#: common/models.py:2238 +msgid "Configure which label printer should be selected by default" +msgstr "Konfigurovat tiskárnu štítků, která má být vybrána jako výchozí" -#: common/models.py:2240 -msgid "Show overdue SOs" -msgstr "" - -#: common/models.py:2241 -msgid "Show overdue SOs on the homepage" -msgstr "" +#: common/models.py:2244 +msgid "Inline report display" +msgstr "Zobrazení reportů na řádku" #: common/models.py:2246 -msgid "Show pending SO shipments" -msgstr "" - -#: common/models.py:2247 -msgid "Show pending SO shipments on the homepage" -msgstr "" +msgid "Display PDF reports in the browser, instead of downloading as a file" +msgstr "Zobrazit reporty PDF v prohlížeči namísto stahování jako soubor" #: common/models.py:2252 -msgid "Show News" -msgstr "" +msgid "Search Parts" +msgstr "Hledat díly" #: common/models.py:2253 -msgid "Show news on the homepage" -msgstr "" +msgid "Display parts in search preview window" +msgstr "Zobrazit díly v náhledu hledání" #: common/models.py:2258 -msgid "Inline label display" -msgstr "" +msgid "Search Supplier Parts" +msgstr "Hledat díly dodavatele" -#: common/models.py:2260 -msgid "Display PDF labels in the browser, instead of downloading as a file" -msgstr "" +#: common/models.py:2259 +msgid "Display supplier parts in search preview window" +msgstr "Zobrazit díly dodavatele v náhledu hledání" -#: common/models.py:2266 -msgid "Default label printer" -msgstr "" +#: common/models.py:2264 +msgid "Search Manufacturer Parts" +msgstr "Vyhledávání dílů výrobce" -#: common/models.py:2268 -msgid "Configure which label printer should be selected by default" -msgstr "" +#: common/models.py:2265 +msgid "Display manufacturer parts in search preview window" +msgstr "Zobrazit díly výrobce v náhledu hledání" -#: common/models.py:2274 -msgid "Inline report display" -msgstr "" +#: common/models.py:2270 +msgid "Hide Inactive Parts" +msgstr "Skrýt neaktivní díly" + +#: common/models.py:2271 +msgid "Excluded inactive parts from search preview window" +msgstr "Vyloučené neaktivní části z okna náhledu vyhledávání" #: common/models.py:2276 -msgid "Display PDF reports in the browser, instead of downloading as a file" -msgstr "" +msgid "Search Categories" +msgstr "Hledat kategorie" + +#: common/models.py:2277 +msgid "Display part categories in search preview window" +msgstr "Zobrazit kategorie dílů v náhledu hledání" #: common/models.py:2282 -msgid "Search Parts" -msgstr "" +msgid "Search Stock" +msgstr "Hledat zásoby" #: common/models.py:2283 -msgid "Display parts in search preview window" -msgstr "" +msgid "Display stock items in search preview window" +msgstr "Zobrazit skladové položky v náhledu hledání" #: common/models.py:2288 -msgid "Search Supplier Parts" -msgstr "" - -#: common/models.py:2289 -msgid "Display supplier parts in search preview window" -msgstr "" - -#: common/models.py:2294 -msgid "Search Manufacturer Parts" -msgstr "" - -#: common/models.py:2295 -msgid "Display manufacturer parts in search preview window" -msgstr "" - -#: common/models.py:2300 -msgid "Hide Inactive Parts" -msgstr "" - -#: common/models.py:2301 -msgid "Excluded inactive parts from search preview window" -msgstr "" - -#: common/models.py:2306 -msgid "Search Categories" -msgstr "" - -#: common/models.py:2307 -msgid "Display part categories in search preview window" -msgstr "" - -#: common/models.py:2312 -msgid "Search Stock" -msgstr "" - -#: common/models.py:2313 -msgid "Display stock items in search preview window" -msgstr "" - -#: common/models.py:2318 msgid "Hide Unavailable Stock Items" -msgstr "" +msgstr "Skrýt nedostupné skladové položky" + +#: common/models.py:2290 +msgid "Exclude stock items which are not available from the search preview window" +msgstr "Vyloučit skladové položky, které nejsou dostupné z okna náhledu hledání" + +#: common/models.py:2296 +msgid "Search Locations" +msgstr "Hledat umístění" + +#: common/models.py:2297 +msgid "Display stock locations in search preview window" +msgstr "Zobrazit skladová umístění v náhledu hledání" + +#: common/models.py:2302 +msgid "Search Companies" +msgstr "Hledat společnosti" + +#: common/models.py:2303 +msgid "Display companies in search preview window" +msgstr "Zobrazit společnosti v náhledu hledání" + +#: common/models.py:2308 +msgid "Search Build Orders" +msgstr "Hledat objednávky sestav" + +#: common/models.py:2309 +msgid "Display build orders in search preview window" +msgstr "Zobrazit objednávky sestav v náhledu hledání" + +#: common/models.py:2314 +msgid "Search Purchase Orders" +msgstr "Hledat nákupní objednávky" + +#: common/models.py:2315 +msgid "Display purchase orders in search preview window" +msgstr "Zobrazit nákupní objednávky v náhledu hledání" #: common/models.py:2320 -msgid "Exclude stock items which are not available from the search preview window" -msgstr "" +msgid "Exclude Inactive Purchase Orders" +msgstr "Vyloučit neaktivní nákupní objednávky" -#: common/models.py:2326 -msgid "Search Locations" -msgstr "" +#: common/models.py:2322 +msgid "Exclude inactive purchase orders from search preview window" +msgstr "Vyloučit neaktivní nákupní objednávky z okna náhledu vyhledávání" -#: common/models.py:2327 -msgid "Display stock locations in search preview window" -msgstr "" +#: common/models.py:2328 +msgid "Search Sales Orders" +msgstr "Hledat prodejní objednávky" -#: common/models.py:2332 -msgid "Search Companies" -msgstr "" +#: common/models.py:2329 +msgid "Display sales orders in search preview window" +msgstr "Zobrazit prodejní objednávky v náhledu hledání" -#: common/models.py:2333 -msgid "Display companies in search preview window" -msgstr "" +#: common/models.py:2334 +msgid "Exclude Inactive Sales Orders" +msgstr "Vyloučit neaktivní prodejní objednávky" -#: common/models.py:2338 -msgid "Search Build Orders" -msgstr "" +#: common/models.py:2336 +msgid "Exclude inactive sales orders from search preview window" +msgstr "Vyloučit neaktivní prodejní objednávky z okna náhledu vyhledávání" -#: common/models.py:2339 -msgid "Display build orders in search preview window" -msgstr "" +#: common/models.py:2342 +msgid "Search Return Orders" +msgstr "Vyhledávání vrácených objednávek" -#: common/models.py:2344 -msgid "Search Purchase Orders" -msgstr "" +#: common/models.py:2343 +msgid "Display return orders in search preview window" +msgstr "Zobrazit vrácené objednávky v okně náhledu vyhledávání" -#: common/models.py:2345 -msgid "Display purchase orders in search preview window" -msgstr "" +#: common/models.py:2348 +msgid "Exclude Inactive Return Orders" +msgstr "Vyloučit neaktivní vrácené objednávky" #: common/models.py:2350 -msgid "Exclude Inactive Purchase Orders" -msgstr "" +msgid "Exclude inactive return orders from search preview window" +msgstr "Vyloučit neaktivní vrácené objednávky z okna náhledu vyhledávání" -#: common/models.py:2352 -msgid "Exclude inactive purchase orders from search preview window" -msgstr "" +#: common/models.py:2356 +msgid "Search Preview Results" +msgstr "Náhled výsledků vyhledávání" #: common/models.py:2358 -msgid "Search Sales Orders" -msgstr "" - -#: common/models.py:2359 -msgid "Display sales orders in search preview window" -msgstr "" +msgid "Number of results to show in each section of the search preview window" +msgstr "Počet výsledků, které se mají zobrazit v každé části okna náhledu vyhledávání" #: common/models.py:2364 -msgid "Exclude Inactive Sales Orders" -msgstr "" +msgid "Regex Search" +msgstr "Regex hledání" -#: common/models.py:2366 -msgid "Exclude inactive sales orders from search preview window" -msgstr "" +#: common/models.py:2365 +msgid "Enable regular expressions in search queries" +msgstr "Povolit regulární výrazy ve vyhledávacích dotazech" -#: common/models.py:2372 -msgid "Search Return Orders" -msgstr "" +#: common/models.py:2370 +msgid "Whole Word Search" +msgstr "Vyhledávání celého slova" -#: common/models.py:2373 -msgid "Display return orders in search preview window" -msgstr "" +#: common/models.py:2371 +msgid "Search queries return results for whole word matches" +msgstr "Vyhledávací dotazy vracejí výsledky pro shody celých slov" -#: common/models.py:2378 -msgid "Exclude Inactive Return Orders" -msgstr "" +#: common/models.py:2376 +msgid "Show Quantity in Forms" +msgstr "Zobrazit množství ve formulářích" -#: common/models.py:2380 -msgid "Exclude inactive return orders from search preview window" -msgstr "" +#: common/models.py:2377 +msgid "Display available part quantity in some forms" +msgstr "Zobrazit dostupné množství dílů v některých formulářích" -#: common/models.py:2386 -msgid "Search Preview Results" -msgstr "" +#: common/models.py:2382 +msgid "Escape Key Closes Forms" +msgstr "Klávesa Escape zavře formuláře" + +#: common/models.py:2383 +msgid "Use the escape key to close modal forms" +msgstr "Zavřít modální formuláře pomocí klávesy escape" #: common/models.py:2388 -msgid "Number of results to show in each section of the search preview window" -msgstr "" +msgid "Fixed Navbar" +msgstr "Pevná navigační lišta" + +#: common/models.py:2389 +msgid "The navbar position is fixed to the top of the screen" +msgstr "Pozice navigační lišty je pevně nastavena na horní okraj obrazovky" #: common/models.py:2394 -msgid "Regex Search" -msgstr "" - -#: common/models.py:2395 -msgid "Enable regular expressions in search queries" -msgstr "" - -#: common/models.py:2400 -msgid "Whole Word Search" -msgstr "" - -#: common/models.py:2401 -msgid "Search queries return results for whole word matches" -msgstr "" - -#: common/models.py:2406 -msgid "Show Quantity in Forms" -msgstr "" - -#: common/models.py:2407 -msgid "Display available part quantity in some forms" -msgstr "" - -#: common/models.py:2412 -msgid "Escape Key Closes Forms" -msgstr "" - -#: common/models.py:2413 -msgid "Use the escape key to close modal forms" -msgstr "" - -#: common/models.py:2418 -msgid "Fixed Navbar" -msgstr "" - -#: common/models.py:2419 -msgid "The navbar position is fixed to the top of the screen" -msgstr "" - -#: common/models.py:2424 msgid "Date Format" msgstr "Formát data" -#: common/models.py:2425 +#: common/models.py:2395 msgid "Preferred format for displaying dates" -msgstr "" +msgstr "Preferovaný formát pro zobrazení datumů" -#: common/models.py:2438 part/templates/part/detail.html:41 +#: common/models.py:2408 part/templates/part/detail.html:41 msgid "Part Scheduling" -msgstr "" +msgstr "Plánování dílů" -#: common/models.py:2439 +#: common/models.py:2409 msgid "Display part scheduling information" -msgstr "" +msgstr "Zobrazit informace o plánování dílů" -#: common/models.py:2444 part/templates/part/detail.html:62 +#: common/models.py:2414 part/templates/part/detail.html:62 msgid "Part Stocktake" -msgstr "" +msgstr "Inventura dílu" + +#: common/models.py:2416 +msgid "Display part stocktake information (if stocktake functionality is enabled)" +msgstr "Zobrazit informace o skladových zásobách dílů (pokud je povolena funkce inventury)" + +#: common/models.py:2422 +msgid "Table String Length" +msgstr "Délka textu v tabulce" + +#: common/models.py:2424 +msgid "Maximum length limit for strings displayed in table views" +msgstr "Maximální délka textu v zobrazeních tabulek" + +#: common/models.py:2430 +msgid "Default part label template" +msgstr "Výchozí šablona štítku dílu" + +#: common/models.py:2431 +msgid "The part label template to be automatically selected" +msgstr "Automaticky vybraná šablona štítku dílu" + +#: common/models.py:2436 +msgid "Default stock item template" +msgstr "Výchozí šablona skladové položky" + +#: common/models.py:2438 +msgid "The stock item label template to be automatically selected" +msgstr "Automaticky vybraná šablona štítku skladové položky" + +#: common/models.py:2444 +msgid "Default stock location label template" +msgstr "Výchozí šablona štítku umístění zásob" #: common/models.py:2446 -msgid "Display part stocktake information (if stocktake functionality is enabled)" -msgstr "" +msgid "The stock location label template to be automatically selected" +msgstr "Automaticky vybraná šablona štítku skladového umístění" #: common/models.py:2452 -msgid "Table String Length" -msgstr "" +msgid "Default build line label template" +msgstr "Výchozí šablona štítku řádku sestavy" #: common/models.py:2454 -msgid "Maximum length limit for strings displayed in table views" -msgstr "" +msgid "The build line label template to be automatically selected" +msgstr "Automaticky vybraná šablona štítku řádku sestavy" #: common/models.py:2460 -msgid "Default part label template" -msgstr "" +msgid "Receive error reports" +msgstr "Přijímat zprávy o chybách" #: common/models.py:2461 -msgid "The part label template to be automatically selected" -msgstr "" +msgid "Receive notifications for system errors" +msgstr "Dostávat oznámení o systémových chybách" #: common/models.py:2466 -msgid "Default stock item template" -msgstr "" - -#: common/models.py:2468 -msgid "The stock item label template to be automatically selected" -msgstr "" - -#: common/models.py:2474 -msgid "Default stock location label template" -msgstr "" - -#: common/models.py:2476 -msgid "The stock location label template to be automatically selected" -msgstr "" - -#: common/models.py:2482 -msgid "Default build line label template" -msgstr "" - -#: common/models.py:2484 -msgid "The build line label template to be automatically selected" -msgstr "" - -#: common/models.py:2490 -msgid "Receive error reports" -msgstr "" - -#: common/models.py:2491 -msgid "Receive notifications for system errors" -msgstr "" - -#: common/models.py:2496 msgid "Last used printing machines" -msgstr "" +msgstr "Poslední použité tiskárny" -#: common/models.py:2497 +#: common/models.py:2467 msgid "Save the last used printing machines for a user" -msgstr "" +msgstr "Uložte poslední použité tiskárny pro uživatele" -#: common/models.py:2540 +#: common/models.py:2487 common/models.py:2488 common/models.py:2636 +#: common/models.py:2637 common/models.py:2882 common/models.py:2883 +#: common/models.py:3193 common/models.py:3194 part/models.py:3193 +#: part/models.py:3280 part/models.py:3353 part/models.py:3381 +#: plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "Uživatel" + +#: common/models.py:2510 msgid "Price break quantity" -msgstr "" +msgstr "Množství cenové slevy" -#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1382 order/models.py:2301 -#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 +#: common/models.py:2517 company/serializers.py:472 order/admin.py:42 +#: order/models.py:1346 order/models.py:2265 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1886 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:740 msgid "Price" msgstr "Cena" -#: common/models.py:2548 +#: common/models.py:2518 msgid "Unit price at specified quantity" -msgstr "" +msgstr "Jednotková cena při stanoveném množství" -#: common/models.py:2719 common/models.py:2904 +#: common/models.py:2613 common/models.py:2798 msgid "Endpoint" -msgstr "" +msgstr "Koncový bod" -#: common/models.py:2720 +#: common/models.py:2614 msgid "Endpoint at which this webhook is received" -msgstr "" +msgstr "Koncový bod, ve kterém je tento webhook přijímán" -#: common/models.py:2730 +#: common/models.py:2624 msgid "Name for this webhook" -msgstr "" +msgstr "Název tohoto webhooku" -#: common/models.py:2734 company/models.py:160 company/models.py:814 -#: machine/models.py:39 part/admin.py:88 part/models.py:1088 -#: plugin/models.py:65 templates/js/translated/company.js:523 +#: common/models.py:2628 company/models.py:163 company/models.py:782 +#: machine/models.py:39 part/admin.py:88 part/models.py:1081 +#: plugin/models.py:66 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3462,103 +3406,120 @@ msgstr "" #: templates/js/translated/table_filters.js:716 #: templates/js/translated/table_filters.js:796 users/models.py:182 msgid "Active" -msgstr "" +msgstr "Aktivní" -#: common/models.py:2734 +#: common/models.py:2628 msgid "Is this webhook active" -msgstr "" +msgstr "Je tento webhook aktivní" -#: common/models.py:2750 users/models.py:159 +#: common/models.py:2644 users/models.py:159 msgid "Token" -msgstr "" +msgstr "Token" -#: common/models.py:2751 +#: common/models.py:2645 msgid "Token for access" -msgstr "" +msgstr "Token pro přístup" -#: common/models.py:2759 +#: common/models.py:2653 msgid "Secret" msgstr "" -#: common/models.py:2760 +#: common/models.py:2654 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2868 +#: common/models.py:2762 msgid "Message ID" msgstr "" -#: common/models.py:2869 +#: common/models.py:2763 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2877 +#: common/models.py:2771 msgid "Host" msgstr "" -#: common/models.py:2878 +#: common/models.py:2772 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2886 +#: common/models.py:2780 msgid "Header" msgstr "" -#: common/models.py:2887 +#: common/models.py:2781 msgid "Header of this message" msgstr "" -#: common/models.py:2894 +#: common/models.py:2788 msgid "Body" msgstr "" -#: common/models.py:2895 +#: common/models.py:2789 msgid "Body of this message" msgstr "" -#: common/models.py:2905 +#: common/models.py:2799 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2910 +#: common/models.py:2804 msgid "Worked on" msgstr "" -#: common/models.py:2911 +#: common/models.py:2805 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:3037 +#: common/models.py:2931 msgid "Id" msgstr "" -#: common/models.py:3039 templates/js/translated/company.js:965 +#: common/models.py:2933 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:3043 templates/js/translated/news.js:60 +#: common/models.py:2935 common/models.py:3177 company/models.py:149 +#: company/models.py:440 company/models.py:500 company/models.py:799 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +#: part/admin.py:55 part/models.py:955 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "Odkaz" + +#: common/models.py:2937 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:3045 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2939 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:3047 templates/js/translated/news.js:52 +#: common/models.py:2941 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Read" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Was this news item read?" msgstr "" -#: common/models.py:3067 company/models.py:156 part/models.py:972 +#: common/models.py:2961 company/models.py:159 part/models.py:965 #: 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.html:35 @@ -3568,34 +3529,89 @@ msgstr "" msgid "Image" msgstr "Obrazek" -#: common/models.py:3067 +#: common/models.py:2961 msgid "Image file" msgstr "" -#: common/models.py:3109 +#: common/models.py:2973 common/models.py:3161 +msgid "Target model type for this image" +msgstr "" + +#: common/models.py:2977 +msgid "Target model ID for this image" +msgstr "" + +#: common/models.py:3018 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3128 +#: common/models.py:3037 msgid "Unit name" msgstr "" -#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3044 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3136 +#: common/models.py:3045 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3052 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3144 +#: common/models.py:3053 msgid "Unit definition" msgstr "" +#: common/models.py:3111 common/models.py:3168 stock/models.py:2426 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "Příloha" + +#: common/models.py:3123 +msgid "Missing file" +msgstr "Chybějící soubor" + +#: common/models.py:3124 +msgid "Missing external link" +msgstr "Chybějící externí odkaz" + +#: common/models.py:3169 +msgid "Select file to attach" +msgstr "Vyberte soubor k přiložení" + +#: common/models.py:3184 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "Komentář" + +#: common/models.py:3185 +msgid "Attachment comment" +msgstr "" + +#: common/models.py:3201 +msgid "Upload date" +msgstr "" + +#: common/models.py:3202 +msgid "Date the file was uploaded" +msgstr "" + +#: common/models.py:3206 +msgid "File size" +msgstr "" + +#: common/models.py:3206 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3244 common/serializers.py:553 +msgid "Invalid model type specified for attachment" +msgstr "" + #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" @@ -3630,72 +3646,109 @@ msgstr "" msgid "Error raised by plugin" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:371 msgid "Is Running" msgstr "" -#: common/serializers.py:372 +#: common/serializers.py:377 msgid "Pending Tasks" msgstr "" -#: common/serializers.py:378 +#: common/serializers.py:383 msgid "Scheduled Tasks" msgstr "" -#: common/serializers.py:384 +#: common/serializers.py:389 msgid "Failed Tasks" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Task ID" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Unique task ID" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock time" -msgstr "" +msgstr "Čas uzamčení" -#: common/serializers.py:403 +#: common/serializers.py:408 msgid "Task name" -msgstr "" +msgstr "Jméno úkolu" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function" -msgstr "" +msgstr "Funkce" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function name" -msgstr "" +msgstr "Název funkce" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Arguments" -msgstr "" +msgstr "Argumenty" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Task arguments" -msgstr "" +msgstr "Argumenty úlohy" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Keyword Arguments" +msgstr "Argumenty klíčových slov" + +#: common/serializers.py:415 +msgid "Task keyword arguments" +msgstr "Argumenty klíčových slov úlohy" + +#: common/serializers.py:525 +msgid "Filename" +msgstr "Název souboru" + +#: common/serializers.py:532 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "Typ modelu" + +#: common/serializers.py:559 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "Uživatel nemá oprávnění k vytváření nebo úpravám příloh pro tento model" + +#: common/validators.py:33 +msgid "No attachment model type provided" msgstr "" -#: common/serializers.py:410 -msgid "Task keyword arguments" +#: common/validators.py:39 +msgid "Invalid attachment model type" msgstr "" +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "Minimální počet míst nesmí být větší než maximální počet míst" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "Maximální počet míst nesmí být menší než minimální počet míst" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "Prázdná doména není povolena." + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +msgstr "Neplatný název domény: {domain}" + #: 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 "Nahrát soubor" #: common/views.py:84 order/templates/order/order_wizard/match_fields.html:52 #: order/views.py:119 @@ -3703,19 +3756,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 "Přiřadit pole" #: common/views.py:84 msgid "Match Items" -msgstr "" +msgstr "Přiřadit položky" #: common/views.py:401 msgid "Fields matching failed" -msgstr "" +msgstr "Shoda polí se nezdařila" #: common/views.py:464 msgid "Parts imported" -msgstr "" +msgstr "Importované díly" #: common/views.py:494 order/templates/order/order_wizard/match_fields.html:27 #: order/templates/order/order_wizard/match_parts.html:19 @@ -3726,212 +3779,224 @@ msgstr "" #: templates/patterns/wizard/match_fields.html:26 #: templates/patterns/wizard/upload.html:35 msgid "Previous Step" -msgstr "" +msgstr "Předchozí krok" -#: company/api.py:164 +#: company/api.py:144 msgid "Part is Active" -msgstr "" +msgstr "Díl je aktivní" -#: company/api.py:168 +#: company/api.py:148 msgid "Manufacturer is Active" -msgstr "" +msgstr "Výrobce je aktivní" -#: company/api.py:317 +#: company/api.py:281 msgid "Supplier Part is Active" -msgstr "" +msgstr "Díl dodavatele je aktivní" -#: company/api.py:321 +#: company/api.py:285 msgid "Internal Part is Active" -msgstr "" +msgstr "Interní díl je aktivní" -#: company/api.py:325 +#: company/api.py:289 msgid "Supplier is Active" -msgstr "" +msgstr "Dodavatel je aktivní" -#: company/models.py:114 +#: company/models.py:100 company/models.py:365 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:822 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "Společnost" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "Společnosti" + +#: company/models.py:117 msgid "Company description" -msgstr "" +msgstr "Popis společnosti" -#: company/models.py:115 +#: company/models.py:118 msgid "Description of the company" -msgstr "" +msgstr "Popis společnosti" -#: company/models.py:120 company/templates/company/company_base.html:106 +#: company/models.py:123 company/templates/company/company_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:532 msgid "Website" msgstr "Webová stránka" -#: company/models.py:120 +#: company/models.py:123 msgid "Company website URL" msgstr "Webové stránky společnosti" -#: company/models.py:125 +#: company/models.py:128 msgid "Phone number" msgstr "Telefonní číslo" -#: company/models.py:127 +#: company/models.py:130 msgid "Contact phone number" msgstr "Kontaktní telefonní číslo" -#: company/models.py:134 +#: company/models.py:137 msgid "Contact email address" msgstr "Kontaktní e-mailová adresa" -#: company/models.py:139 company/templates/company/company_base.html:145 +#: company/models.py:142 company/templates/company/company_base.html:145 #: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "Kontakt" -#: company/models.py:141 +#: company/models.py:144 msgid "Point of contact" msgstr "Kontaktní místo" -#: company/models.py:147 +#: company/models.py:150 msgid "Link to external company information" -msgstr "" +msgstr "Odkaz na externí informace o společnosti" -#: company/models.py:160 +#: company/models.py:163 msgid "Is this company active?" -msgstr "" +msgstr "Je tato společnost aktivní?" -#: company/models.py:165 +#: company/models.py:168 msgid "is customer" msgstr "je zákazník" -#: company/models.py:166 +#: company/models.py:169 msgid "Do you sell items to this company?" -msgstr "" +msgstr "Prodáváte zboží této společnosti?" -#: company/models.py:171 +#: company/models.py:174 msgid "is supplier" -msgstr "" +msgstr "je dodavatel" -#: company/models.py:172 +#: company/models.py:175 msgid "Do you purchase items from this company?" -msgstr "" +msgstr "Zakupujete zboží od této společnosti?" -#: company/models.py:177 +#: company/models.py:180 msgid "is manufacturer" -msgstr "" +msgstr "je výrobce" -#: company/models.py:178 +#: company/models.py:181 msgid "Does this company manufacture parts?" -msgstr "" +msgstr "Vyrábí tato společnost díly?" -#: company/models.py:186 +#: company/models.py:189 msgid "Default currency used for this company" -msgstr "" +msgstr "Výchozí měna používaná pro tuto společnost" -#: company/models.py:273 company/models.py:382 -#: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:812 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 -msgid "Company" -msgstr "Společnost" - -#: company/models.py:383 +#: company/models.py:366 msgid "Select company" -msgstr "" +msgstr "Vyberte společnost" -#: company/models.py:388 +#: company/models.py:371 msgid "Address title" -msgstr "" +msgstr "Název adresy" -#: company/models.py:389 +#: company/models.py:372 msgid "Title describing the address entry" -msgstr "" +msgstr "Název popisující záznam adresy" -#: company/models.py:395 +#: company/models.py:378 msgid "Primary address" -msgstr "" +msgstr "Primární adresa" -#: company/models.py:396 +#: company/models.py:379 msgid "Set as primary address" -msgstr "" +msgstr "Nastavit jako primární adresu" -#: company/models.py:401 templates/js/translated/company.js:914 +#: company/models.py:384 templates/js/translated/company.js:914 #: templates/js/translated/company.js:971 msgid "Line 1" -msgstr "" +msgstr "Řádek 1" -#: company/models.py:402 +#: company/models.py:385 msgid "Address line 1" -msgstr "" +msgstr "1. řádek adresy" -#: company/models.py:408 templates/js/translated/company.js:915 +#: company/models.py:391 templates/js/translated/company.js:915 #: templates/js/translated/company.js:977 msgid "Line 2" -msgstr "" +msgstr "Řádek 2" -#: company/models.py:409 +#: company/models.py:392 msgid "Address line 2" -msgstr "" +msgstr "2. řádek adresy" -#: company/models.py:415 company/models.py:416 +#: company/models.py:398 company/models.py:399 #: templates/js/translated/company.js:983 msgid "Postal code" -msgstr "" +msgstr "PSČ" -#: company/models.py:422 +#: company/models.py:405 msgid "City/Region" -msgstr "" +msgstr "Město/Region" -#: company/models.py:423 +#: company/models.py:406 msgid "Postal code city/region" -msgstr "" +msgstr "PSČ město/region" -#: company/models.py:429 +#: company/models.py:412 msgid "State/Province" -msgstr "" +msgstr "Stát/kraj" -#: company/models.py:430 +#: company/models.py:413 msgid "State or province" -msgstr "" +msgstr "Stát nebo provincie" -#: company/models.py:436 templates/js/translated/company.js:1001 +#: company/models.py:419 templates/js/translated/company.js:1001 msgid "Country" -msgstr "" +msgstr "Země" -#: company/models.py:437 +#: company/models.py:420 msgid "Address country" -msgstr "" +msgstr "Adresovaná země" -#: company/models.py:443 +#: company/models.py:426 msgid "Courier shipping notes" -msgstr "" +msgstr "Doručovací poznámky pro kurýra" -#: company/models.py:444 +#: company/models.py:427 msgid "Notes for shipping courier" -msgstr "" +msgstr "Poznámky pro kurýra" -#: company/models.py:450 +#: company/models.py:433 msgid "Internal shipping notes" -msgstr "" +msgstr "Interní přepravní poznámky" -#: company/models.py:451 +#: company/models.py:434 msgid "Shipping notes for internal use" -msgstr "" +msgstr "Doručovací poznámky pro interní použití" -#: company/models.py:458 +#: company/models.py:441 msgid "Link to address information (external)" -msgstr "" +msgstr "Odkaz na informace o adrese (externí)" -#: company/models.py:489 company/models.py:792 stock/models.py:768 -#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 +#: company/models.py:463 company/models.py:574 company/models.py:792 +#: 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:475 company/models.py:760 stock/models.py:766 +#: stock/serializers.py:422 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Základní díl" -#: company/models.py:491 company/models.py:794 +#: company/models.py:477 company/models.py:762 msgid "Select part" msgstr "Zvolte díl" -#: company/models.py:500 company/templates/company/company_base.html:82 +#: company/models.py:486 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:530 +#: company/templates/company/supplier_part.html:145 part/serializers.py:525 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -3941,212 +4006,214 @@ msgstr "Zvolte díl" msgid "Manufacturer" msgstr "Výrobce" -#: company/models.py:501 +#: company/models.py:487 msgid "Select manufacturer" msgstr "Vyberte výrobce" -#: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:540 +#: company/models.py:493 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:535 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 -#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1801 #: templates/js/translated/purchase_order.js:1851 #: templates/js/translated/purchase_order.js:2053 msgid "MPN" -msgstr "" +msgstr "MPN" -#: company/models.py:508 +#: company/models.py:494 msgid "Manufacturer Part Number" msgstr "Číslo dílu výrobce" -#: company/models.py:515 +#: company/models.py:501 msgid "URL for external manufacturer part link" -msgstr "" +msgstr "URL pro odkaz na díl externího výrobce" -#: company/models.py:524 +#: company/models.py:510 msgid "Manufacturer part description" msgstr "Popis dílu výrobce" -#: company/models.py:581 company/models.py:608 company/models.py:824 -#: 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:615 +#: company/models.py:581 msgid "Parameter name" msgstr "Název parametru" -#: company/models.py:621 report/templates/report/inventree_test_report.html:104 -#: stock/models.py:2429 templates/js/translated/company.js:1166 -#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 +#: company/models.py:587 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2418 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1493 #: templates/js/translated/stock.js:1522 msgid "Value" msgstr "Hodnota" -#: company/models.py:622 +#: company/models.py:588 msgid "Parameter value" msgstr "Hodnota parametru" -#: company/models.py:629 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1052 part/models.py:3666 +#: company/models.py:595 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1045 part/models.py:3646 #: part/templates/part/part_base.html:284 -#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1512 +#: templates/js/translated/part.js:1616 templates/js/translated/part.js:2370 msgid "Units" msgstr "Jednotky" -#: company/models.py:630 +#: company/models.py:596 msgid "Parameter units" -msgstr "" +msgstr "Jednotky parametru" -#: company/models.py:732 +#: company/models.py:648 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:777 stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "Díl dodavatele" + +#: company/models.py:700 msgid "Pack units must be compatible with the base part units" -msgstr "" +msgstr "Jednotky balení musí být kompatibilní s jednotkami základních dílů" -#: company/models.py:739 +#: company/models.py:707 msgid "Pack units must be greater than zero" -msgstr "" +msgstr "Jednotky balení musí být větší než nula" -#: company/models.py:753 +#: company/models.py:721 msgid "Linked manufacturer part must reference the same base part" -msgstr "" +msgstr "Odkazovaný díl výrobce musí odkazovat na stejný základní díl" -#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/models.py:770 company/templates/company/company_base.html:87 #: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:514 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:509 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:511 -#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1769 #: templates/js/translated/pricing.js:498 #: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "Dodavatel" -#: company/models.py:803 +#: company/models.py:771 msgid "Select supplier" -msgstr "" +msgstr "Vyberte dodavatele" -#: company/models.py:809 part/serializers.py:525 +#: company/models.py:777 part/serializers.py:520 msgid "Supplier stock keeping unit" -msgstr "" +msgstr "Skladová evidence dodavatele" -#: company/models.py:815 +#: company/models.py:783 msgid "Is this supplier part active?" -msgstr "" +msgstr "Je tento díl dodavatele aktivní?" -#: company/models.py:825 +#: company/models.py:793 msgid "Select manufacturer part" -msgstr "" +msgstr "Vyberte díl výrobce" -#: company/models.py:832 +#: company/models.py:800 msgid "URL for external supplier part link" -msgstr "" +msgstr "Adresa URL pro odkaz na externí díl dodavatele" -#: company/models.py:841 +#: company/models.py:809 msgid "Supplier part description" -msgstr "" +msgstr "Popis dílu dodavatele" -#: company/models.py:848 company/templates/company/supplier_part.html:187 -#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 +#: company/models.py:816 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4093 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_purchase_order_report.html:32 #: report/templates/report/inventree_return_order_report.html:27 #: report/templates/report/inventree_sales_order_report.html:32 #: report/templates/report/inventree_stock_location_report.html:105 -#: stock/serializers.py:708 +#: stock/serializers.py:710 msgid "Note" msgstr "Poznámka" -#: company/models.py:857 part/models.py:2010 +#: company/models.py:825 part/models.py:2003 msgid "base cost" -msgstr "" +msgstr "základní cena" -#: company/models.py:858 part/models.py:2011 +#: company/models.py:826 part/models.py:2004 msgid "Minimum charge (e.g. stocking fee)" -msgstr "" +msgstr "Minimální poplatek (např. poplatek za skladování)" -#: company/models.py:865 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 +#: company/models.py:833 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:797 stock/serializers.py:1475 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 #: templates/js/translated/stock.js:2424 msgid "Packaging" -msgstr "" +msgstr "Balení" -#: company/models.py:866 +#: company/models.py:834 msgid "Part packaging" -msgstr "" +msgstr "Balení dílu" -#: company/models.py:871 templates/js/translated/company.js:1651 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: company/models.py:839 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:311 #: templates/js/translated/purchase_order.js:841 #: templates/js/translated/purchase_order.js:1103 #: templates/js/translated/purchase_order.js:2084 #: templates/js/translated/purchase_order.js:2101 msgid "Pack Quantity" -msgstr "" +msgstr "Počet kusů v balení" + +#: company/models.py:841 +msgid "Total quantity supplied in a single pack. Leave empty for single items." +msgstr "Celkové množství dodávané v jednom balení. Pro jednotlivé položky ponechte prázdné." + +#: company/models.py:860 part/models.py:2010 +msgid "multiple" +msgstr "více" + +#: company/models.py:861 +msgid "Order multiple" +msgstr "Objednat více" #: company/models.py:873 -msgid "Total quantity supplied in a single pack. Leave empty for single items." -msgstr "" - -#: company/models.py:892 part/models.py:2017 -msgid "multiple" -msgstr "" - -#: company/models.py:893 -msgid "Order multiple" -msgstr "" - -#: company/models.py:905 msgid "Quantity available from supplier" -msgstr "" +msgstr "Množství dostupné od dodavatele" -#: company/models.py:911 +#: company/models.py:879 msgid "Availability Updated" -msgstr "" +msgstr "Dostupnost aktualizována" -#: company/models.py:912 +#: company/models.py:880 msgid "Date of last update of availability data" -msgstr "" +msgstr "Datum poslední aktualizace údajů o dostupnosti" -#: company/serializers.py:163 +#: company/serializers.py:161 msgid "Default currency used for this supplier" -msgstr "" +msgstr "Výchozí měna používaná pro tohoto dodavatele" -#: company/serializers.py:381 part/admin.py:126 +#: company/serializers.py:357 part/admin.py:126 #: part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1689 #: templates/js/translated/table_filters.js:355 msgid "In Stock" -msgstr "" +msgstr "Skladem" #: company/templates/company/company_base.html:16 #: part/templates/part/part_base.html:146 #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 #: templates/js/translated/model_renderers.js:312 -#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +#: templates/js/translated/part.js:815 templates/js/translated/part.js:1219 msgid "Inactive" -msgstr "" +msgstr "Neaktivní" #: company/templates/company/company_base.html:27 #: templates/js/translated/purchase_order.js:242 msgid "Create Purchase Order" -msgstr "" +msgstr "Vytvořit nákupní objednávku" #: company/templates/company/company_base.html:33 msgid "Company actions" -msgstr "" +msgstr "Akce společnosti" #: company/templates/company/company_base.html:38 msgid "Edit company information" @@ -4174,9 +4241,9 @@ msgstr "Odstranit společnost" #: report/templates/report/inventree_purchase_order_report.html:40 #: report/templates/report/inventree_sales_order_report.html:40 #: report/templates/report/inventree_test_report.html:84 -#: report/templates/report/inventree_test_report.html:163 +#: report/templates/report/inventree_test_report.html:162 msgid "Part image" -msgstr "" +msgstr "Obrázek dílu" #: company/templates/company/company_base.html:61 #: part/templates/part/part_thumb.html:12 @@ -4193,10 +4260,10 @@ msgstr "Stáhnout obrázek z URL" msgid "Delete image" msgstr "Smazat obrázek" -#: company/templates/company/company_base.html:92 order/models.py:940 -#: order/models.py:2068 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:148 stock/models.py:821 -#: stock/models.py:822 stock/serializers.py:1229 +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2032 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:819 +#: stock/models.py:820 stock/serializers.py:1225 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 @@ -4209,7 +4276,7 @@ msgstr "Zákazník" #: company/templates/company/company_base.html:117 msgid "Uses default currency" -msgstr "" +msgstr "Použít výchozí měnu" #: company/templates/company/company_base.html:124 order/models.py:353 #: order/templates/order/order_base.html:210 @@ -4225,11 +4292,11 @@ msgstr "Telefon" #: company/templates/company/company_base.html:211 #: part/templates/part/part_base.html:527 msgid "Remove Image" -msgstr "" +msgstr "Odstranit obrázek" #: company/templates/company/company_base.html:212 msgid "Remove associated image from this company" -msgstr "" +msgstr "Odstranit přidružený obrázek z této společnosti" #: company/templates/company/company_base.html:214 #: part/templates/part/part_base.html:530 @@ -4241,12 +4308,12 @@ msgstr "Odstranit" #: company/templates/company/company_base.html:243 #: part/templates/part/part_base.html:559 msgid "Upload Image" -msgstr "" +msgstr "Nahrát obrázek" #: company/templates/company/company_base.html:258 #: part/templates/part/part_base.html:613 msgid "Download Image" -msgstr "" +msgstr "Stáhnout obrázek" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 @@ -4298,12 +4365,12 @@ msgstr "Zakoupené objednávky" #: company/templates/company/detail.html:79 #: order/templates/order/purchase_orders.html:17 msgid "Create new purchase order" -msgstr "" +msgstr "Vytvořit novou nákupní objednávku" #: company/templates/company/detail.html:80 #: order/templates/order/purchase_orders.html:18 msgid "New Purchase Order" -msgstr "" +msgstr "Nová nákupní objednávka" #: company/templates/company/detail.html:101 #: company/templates/company/sidebar.html:21 @@ -4316,21 +4383,21 @@ msgstr "" #: templates/js/translated/search.js:219 templates/navbar.html:62 #: users/models.py:209 msgid "Sales Orders" -msgstr "" +msgstr "Prodejní objednávky" #: company/templates/company/detail.html:105 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" -msgstr "" +msgstr "Vytvořit novou prodejní objednávku" #: company/templates/company/detail.html:106 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" -msgstr "" +msgstr "Nová prodejní objednávka" #: company/templates/company/detail.html:126 msgid "Assigned Stock" -msgstr "" +msgstr "Přiřazené zásoby" #: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:29 @@ -4341,17 +4408,17 @@ msgstr "" #: templates/js/translated/search.js:232 templates/navbar.html:65 #: users/models.py:210 msgid "Return Orders" -msgstr "" +msgstr "Návratové objednávky" #: company/templates/company/detail.html:146 #: order/templates/order/return_orders.html:20 msgid "Create new return order" -msgstr "" +msgstr "Vytvořit novou návratovou objednávku" #: company/templates/company/detail.html:147 #: order/templates/order/return_orders.html:21 msgid "New Return Order" -msgstr "" +msgstr "Nová návratová objednávka" #: company/templates/company/detail.html:168 msgid "Company Notes" @@ -4359,26 +4426,26 @@ msgstr "Poznámky ke společnosti" #: company/templates/company/detail.html:183 msgid "Company Contacts" -msgstr "" +msgstr "Kontakty na společnost" #: company/templates/company/detail.html:187 #: company/templates/company/detail.html:188 msgid "Add Contact" -msgstr "" +msgstr "Přidat kontakt" #: company/templates/company/detail.html:206 msgid "Company addresses" -msgstr "" +msgstr "Adresy společnosti" #: company/templates/company/detail.html:210 #: company/templates/company/detail.html:211 msgid "Add Address" -msgstr "" +msgstr "Přidat adresu" #: company/templates/company/manufacturer_part.html:15 company/views.py:37 #: templates/InvenTree/search.html:180 templates/navbar.html:49 msgid "Manufacturers" -msgstr "" +msgstr "Výrobci" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:227 @@ -4389,86 +4456,77 @@ msgstr "Objednávka dílů" #: company/templates/company/manufacturer_part.html:39 #: templates/js/translated/company.js:1343 msgid "Edit manufacturer part" -msgstr "" +msgstr "Upravit díl výrobce" #: company/templates/company/manufacturer_part.html:43 #: templates/js/translated/company.js:1344 msgid "Delete manufacturer part" -msgstr "" +msgstr "Odstranit díl výrobce" #: company/templates/company/manufacturer_part.html:65 #: company/templates/company/supplier_part.html:97 order/api.py:458 msgid "Internal Part" -msgstr "" +msgstr "Interní díl" #: company/templates/company/manufacturer_part.html:95 msgid "No manufacturer information available" -msgstr "" +msgstr "Nejsou k dispozici žádné informace o výrobci" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:836 +#: part/admin.py:122 part/serializers.py:832 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" -msgstr "" +msgstr "Dodavatelé" #: 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 "Parametry" #: 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 "Nový parametr" -#: company/templates/company/manufacturer_part.html:206 -#: templates/js/translated/part.js:1422 +#: company/templates/company/manufacturer_part.html:196 +#: templates/js/translated/part.js:1423 msgid "Add Parameter" -msgstr "" +msgstr "Přidat parametr" #: company/templates/company/sidebar.html:6 msgid "Manufactured Parts" -msgstr "" +msgstr "Vyrobené díly" #: company/templates/company/sidebar.html:10 msgid "Supplied Parts" -msgstr "" +msgstr "Dodané díly" #: company/templates/company/sidebar.html:16 msgid "Supplied Stock Items" -msgstr "" +msgstr "Dodané skladové položky" #: company/templates/company/sidebar.html:25 msgid "Assigned Stock Items" -msgstr "" +msgstr "Přiřazené skladové položky" #: company/templates/company/sidebar.html:33 msgid "Contacts" -msgstr "" +msgstr "Kontakty" #: company/templates/company/sidebar.html:35 msgid "Addresses" -msgstr "" - -#: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:452 -#: stock/models.py:779 stock/templates/stock/item_base.html:233 -#: templates/js/translated/company.js:1600 -#: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2280 -msgid "Supplier Part" -msgstr "" +msgstr "Adresy" #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1526 msgid "Supplier part actions" -msgstr "" +msgstr "Akce týkající se dílu dodavatele" #: company/templates/company/supplier_part.html:55 #: company/templates/company/supplier_part.html:56 @@ -4480,7 +4538,7 @@ msgstr "Objednávka dílů" #: company/templates/company/supplier_part.html:60 #: company/templates/company/supplier_part.html:61 msgid "Update Availability" -msgstr "" +msgstr "Aktualizovat dostupnost" #: company/templates/company/supplier_part.html:63 #: company/templates/company/supplier_part.html:64 @@ -4504,101 +4562,97 @@ msgstr "Vymazat dodavatele dílu" #: company/templates/company/supplier_part.html:133 msgid "No supplier information available" -msgstr "" +msgstr "Nejsou k dispozici žádné informace o dodavateli" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:524 -#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: part/bom.py:311 part/serializers.py:519 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1787 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1850 #: templates/js/translated/purchase_order.js:2028 msgid "SKU" -msgstr "" +msgstr "Číslo zboží (SKU)" #: company/templates/company/supplier_part.html:206 msgid "Supplier Part Stock" msgstr "Sklad dílu dodavatele" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:207 msgid "Create new stock item" -msgstr "" +msgstr "Vytvořit novou položku skladu" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 #: templates/js/translated/stock.js:537 msgid "New Stock Item" -msgstr "" +msgstr "Nová skladová položka" #: company/templates/company/supplier_part.html:223 msgid "Supplier Part Orders" -msgstr "" +msgstr "Objednávky dílu dodavatele" #: company/templates/company/supplier_part.html:246 msgid "Pricing Information" -msgstr "" +msgstr "Informace o cenách" #: 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 "Přidat cenovou slevu" #: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" -msgstr "" +msgstr "QR kód dílu dodavatele" #: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" -msgstr "" +msgstr "Propojit čárový kód s dílem dodavatele" #: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" -msgstr "" +msgstr "Aktualizovat dostupnost dílu" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:835 part/stocktake.py:223 +#: part/serializers.py:831 part/stocktake.py:224 #: part/templates/part/category.html:183 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:916 stock/serializers.py:1080 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:918 stock/serializers.py:1091 #: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:191 #: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1061 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:206 msgid "Stock Items" -msgstr "" +msgstr "Skladové položky" #: company/templates/company/supplier_part_sidebar.html:9 msgid "Supplier Part Pricing" -msgstr "" +msgstr "Ceny dílu dodavatele" #: company/views.py:32 msgid "New Supplier" -msgstr "" +msgstr "Nový dodavatel" #: company/views.py:38 msgid "New Manufacturer" -msgstr "" +msgstr "Nový výrobce" #: company/views.py:43 templates/InvenTree/search.html:210 #: templates/navbar.html:60 msgid "Customers" -msgstr "" +msgstr "Zákazníci" #: company/views.py:44 msgid "New Customer" -msgstr "" - -#: company/views.py:51 templates/js/translated/search.js:192 -msgid "Companies" -msgstr "" +msgstr "Nový zákazník" #: company/views.py:52 msgid "New Company" -msgstr "" +msgstr "Nová společnost" #: generic/states/tests.py:18 order/status_codes.py:13 msgid "Placed" @@ -4606,48 +4660,48 @@ msgstr "Umístěno" #: machine/machine_types/label_printer.py:218 msgid "Copies" -msgstr "" +msgstr "Kopie" #: machine/machine_types/label_printer.py:219 msgid "Number of copies to print for each label" -msgstr "" +msgstr "Počet kopií, které se mají tisknout pro každý štítek" #: machine/machine_types/label_printer.py:234 msgid "Connected" -msgstr "" +msgstr "Připojeno" -#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: machine/machine_types/label_printer.py:235 order/api.py:1467 #: templates/js/translated/sales_order.js:1078 msgid "Unknown" -msgstr "" +msgstr "Neznámý" #: machine/machine_types/label_printer.py:236 msgid "Printing" -msgstr "" +msgstr "Tisk" #: machine/machine_types/label_printer.py:237 msgid "No media" -msgstr "" +msgstr "Žádná média" #: machine/machine_types/label_printer.py:238 msgid "Disconnected" -msgstr "" +msgstr "Odpojeno" #: machine/machine_types/label_printer.py:245 msgid "Label Printer" -msgstr "" +msgstr "Tiskárna štítků" #: machine/machine_types/label_printer.py:246 msgid "Directly print labels for various items." -msgstr "" +msgstr "Přímo vytisknout štítky pro různé položky." #: machine/machine_types/label_printer.py:252 msgid "Printer Location" -msgstr "" +msgstr "Umístění tiskárny" #: machine/machine_types/label_printer.py:253 msgid "Scope the printer to a specific location" -msgstr "" +msgstr "Určení rozsahu tiskárny na konkrétní místo" #: machine/models.py:25 msgid "Name of machine" @@ -4705,7 +4759,7 @@ msgstr "" msgid "Config type" msgstr "" -#: order/admin.py:30 order/models.py:89 +#: order/admin.py:30 order/models.py:90 #: report/templates/report/inventree_purchase_order_report.html:31 #: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 @@ -4714,30 +4768,30 @@ msgstr "" msgid "Total Price" msgstr "" -#: order/api.py:161 order/serializers.py:91 +#: order/api.py:157 order/serializers.py:90 #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "" -#: order/api.py:165 templates/js/translated/table_filters.js:194 +#: order/api.py:161 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "" -#: order/api.py:240 +#: order/api.py:236 msgid "No matching purchase order found" msgstr "" -#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 -#: order/models.py:1586 order/models.py:1700 order/models.py:1854 -#: order/models.py:2267 order/models.py:2318 +#: order/api.py:435 order/api.py:801 order/models.py:1395 order/models.py:1504 +#: order/models.py:1550 order/models.py:1664 order/models.py:1818 +#: order/models.py:2231 order/models.py:2282 #: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "" -#: order/api.py:441 order/api.py:838 +#: order/api.py:439 order/api.py:822 msgid "Order Complete" msgstr "" @@ -4745,13 +4799,13 @@ msgstr "" msgid "Order Pending" msgstr "" -#: order/api.py:1509 order/models.py:380 order/models.py:1432 -#: order/models.py:1541 order/templates/order/order_base.html:9 +#: order/api.py:1461 order/models.py:380 order/models.py:1396 +#: order/models.py:1505 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_purchase_order_report.html:14 -#: stock/serializers.py:119 stock/templates/stock/item_base.html:176 +#: stock/serializers.py:118 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/part.js:1746 templates/js/translated/pricing.js:804 #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1673 @@ -4759,8 +4813,8 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1513 order/models.py:2017 order/models.py:2268 -#: order/models.py:2319 order/templates/order/return_order_base.html:9 +#: order/api.py:1465 order/models.py:1981 order/models.py:2232 +#: order/models.py:2283 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report.html:13 #: templates/js/translated/return_order.js:280 @@ -4768,15 +4822,15 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/models.py:90 +#: order/models.py:91 msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:71 +#: order/models.py:96 order/serializers.py:70 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:72 +#: order/models.py:99 order/serializers.py:71 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -4792,7 +4846,7 @@ msgstr "" msgid "Select project code for this order" msgstr "" -#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 msgid "Link to external page" msgstr "" @@ -4816,11 +4870,11 @@ msgstr "" msgid "Company address for this order" msgstr "" -#: order/models.py:464 order/models.py:929 +#: order/models.py:464 order/models.py:927 msgid "Order reference" msgstr "" -#: order/models.py:472 order/models.py:953 +#: order/models.py:472 order/models.py:951 msgid "Purchase order status" msgstr "" @@ -4841,15 +4895,15 @@ msgstr "" msgid "received by" msgstr "" -#: order/models.py:514 order/models.py:2094 +#: order/models.py:514 order/models.py:2058 msgid "Issue Date" msgstr "" -#: order/models.py:515 order/models.py:2095 +#: order/models.py:515 order/models.py:2059 msgid "Date order was issued" msgstr "" -#: order/models.py:522 order/models.py:2102 +#: order/models.py:522 order/models.py:2066 msgid "Date order was completed" msgstr "" @@ -4861,294 +4915,292 @@ msgstr "" msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:941 +#: order/models.py:939 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:964 order/models.py:2087 +#: order/models.py:962 order/models.py:2051 msgid "Customer Reference " msgstr "" -#: order/models.py:965 order/models.py:2088 +#: order/models.py:963 order/models.py:2052 msgid "Customer order reference code" msgstr "" -#: order/models.py:969 order/models.py:1707 +#: order/models.py:967 order/models.py:1671 #: templates/js/translated/sales_order.js:879 #: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "" -#: order/models.py:978 +#: order/models.py:976 msgid "shipped by" -msgstr "" +msgstr "odesláno společností" -#: order/models.py:1027 -#, fuzzy -#| msgid "Build output is already completed" +#: order/models.py:1025 msgid "Order is already complete" -msgstr "Výstup sestavení je již dokončen" +msgstr "Objednávka je již dokončena" -#: order/models.py:1030 +#: order/models.py:1028 msgid "Order is already cancelled" -msgstr "" +msgstr "Objednávka je již zrušena" -#: order/models.py:1034 +#: order/models.py:1032 msgid "Only an open order can be marked as complete" -msgstr "" +msgstr "Pouze otevřená objednávka může být označena jako kompletní" -#: order/models.py:1038 +#: order/models.py:1036 msgid "Order cannot be completed as there are incomplete shipments" -msgstr "" +msgstr "Objednávku nelze dokončit, protože dodávky jsou nekompletní" -#: order/models.py:1043 +#: order/models.py:1041 msgid "Order cannot be completed as there are incomplete line items" -msgstr "" +msgstr "Objednávka nemůže být dokončena, protože jsou neúplné řádkové položky" + +#: order/models.py:1273 +msgid "Item quantity" +msgstr "Množství položky" + +#: order/models.py:1290 +msgid "Line item reference" +msgstr "Odkaz na řádkovou položku" + +#: order/models.py:1297 +msgid "Line item notes" +msgstr "Poznámky k řádkovým položkám" #: order/models.py:1309 -msgid "Item quantity" -msgstr "" - -#: order/models.py:1326 -msgid "Line item reference" -msgstr "" - -#: order/models.py:1333 -msgid "Line item notes" -msgstr "" - -#: order/models.py:1345 msgid "Target date for this line item (leave blank to use the target date from the order)" -msgstr "" +msgstr "Cílové datum pro tuto řádkovou položku (pro použití cílového data z objednávky ponechte prázdné)" -#: order/models.py:1366 +#: order/models.py:1330 msgid "Line item description (optional)" -msgstr "" +msgstr "Popis řádkové položky (nepovinné)" -#: order/models.py:1372 +#: order/models.py:1336 msgid "Context" -msgstr "" +msgstr "Kontext" -#: order/models.py:1373 +#: order/models.py:1337 msgid "Additional context for this line" -msgstr "" +msgstr "Dodatečný kontext pro tento řádek" -#: order/models.py:1383 +#: order/models.py:1347 msgid "Unit price" -msgstr "" +msgstr "Cena za jednotku" -#: order/models.py:1416 +#: order/models.py:1380 msgid "Supplier part must match supplier" -msgstr "" +msgstr "Dodavatelský díl musí odpovídat dodavateli" -#: order/models.py:1423 +#: order/models.py:1387 msgid "deleted" -msgstr "" +msgstr "smazáno" -#: order/models.py:1451 +#: order/models.py:1415 msgid "Supplier part" -msgstr "" +msgstr "Díl dodavatele" -#: order/models.py:1458 order/templates/order/order_base.html:196 -#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: order/models.py:1422 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1870 templates/js/translated/part.js:1902 #: templates/js/translated/purchase_order.js:1306 #: templates/js/translated/purchase_order.js:2169 #: templates/js/translated/return_order.js:763 #: templates/js/translated/table_filters.js:120 #: templates/js/translated/table_filters.js:602 msgid "Received" -msgstr "" +msgstr "Doručeno" -#: order/models.py:1459 +#: order/models.py:1423 msgid "Number of items received" -msgstr "" +msgstr "Počet přijatých položek" -#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 +#: order/models.py:1431 stock/models.py:938 stock/serializers.py:556 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2311 msgid "Purchase Price" -msgstr "" +msgstr "Nákupní cena" -#: order/models.py:1468 +#: order/models.py:1432 msgid "Unit purchase price" -msgstr "" +msgstr "Jednotková nákupní cena" -#: order/models.py:1483 +#: order/models.py:1447 msgid "Where does the Purchaser want this item to be stored?" -msgstr "" +msgstr "Kde si kupující přeje, aby byla tato položka uložena?" -#: order/models.py:1574 +#: order/models.py:1538 msgid "Virtual part cannot be assigned to a sales order" -msgstr "" +msgstr "Virtuální díl nelze přiřadit k prodejní objednávce" -#: order/models.py:1579 +#: order/models.py:1543 msgid "Only salable parts can be assigned to a sales order" -msgstr "" +msgstr "K prodejní objednávce lze přiřadit pouze prodejné díly" -#: order/models.py:1605 part/templates/part/part_pricing.html:107 +#: order/models.py:1569 part/templates/part/part_pricing.html:107 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 msgid "Sale Price" -msgstr "" +msgstr "Prodejní cena" -#: order/models.py:1606 +#: order/models.py:1570 msgid "Unit sale price" -msgstr "" +msgstr "Jednotková prodejní cena" -#: order/models.py:1615 order/status_codes.py:43 +#: order/models.py:1579 order/status_codes.py:43 #: templates/js/translated/sales_order.js:1559 #: templates/js/translated/sales_order.js:1680 #: templates/js/translated/sales_order.js:1993 msgid "Shipped" msgstr "Odesláno" -#: order/models.py:1616 +#: order/models.py:1580 msgid "Shipped quantity" -msgstr "" +msgstr "Odeslané množství" -#: order/models.py:1708 +#: order/models.py:1672 msgid "Date of shipment" -msgstr "" +msgstr "Datum odeslání" -#: order/models.py:1714 templates/js/translated/sales_order.js:1072 +#: order/models.py:1678 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" -msgstr "" +msgstr "Datum doručení" -#: order/models.py:1715 +#: order/models.py:1679 msgid "Date of delivery of shipment" -msgstr "" +msgstr "Datum doručení zásilky" -#: order/models.py:1723 +#: order/models.py:1687 msgid "Checked By" -msgstr "" +msgstr "Kontroloval(a)" -#: order/models.py:1724 +#: order/models.py:1688 msgid "User who checked this shipment" -msgstr "" +msgstr "Uživatel, který zkontroloval tuto zásilku" -#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 -#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 +#: order/models.py:1695 order/models.py:1908 order/serializers.py:1342 +#: order/serializers.py:1452 templates/js/translated/model_renderers.js:454 msgid "Shipment" -msgstr "" +msgstr "Doprava" -#: order/models.py:1732 +#: order/models.py:1696 msgid "Shipment number" -msgstr "" +msgstr "Číslo zásilky" -#: order/models.py:1740 +#: order/models.py:1704 msgid "Tracking Number" -msgstr "" +msgstr "Sledovací číslo" -#: order/models.py:1741 +#: order/models.py:1705 msgid "Shipment tracking information" -msgstr "" +msgstr "Informace o sledování zásilky" -#: order/models.py:1748 +#: order/models.py:1712 msgid "Invoice Number" -msgstr "" +msgstr "Číslo faktury" -#: order/models.py:1749 +#: order/models.py:1713 msgid "Reference number for associated invoice" -msgstr "" +msgstr "Referenční číslo přiřazené faktury" -#: order/models.py:1769 +#: order/models.py:1733 msgid "Shipment has already been sent" -msgstr "" +msgstr "Zásilka již byla odeslána" -#: order/models.py:1772 +#: order/models.py:1736 msgid "Shipment has no allocated stock items" -msgstr "" +msgstr "Zásilka nemá žádné přidělené skladové položky" -#: order/models.py:1890 order/models.py:1892 +#: order/models.py:1854 order/models.py:1856 msgid "Stock item has not been assigned" -msgstr "" +msgstr "Zásobní položka nebyla přiřazena" -#: order/models.py:1899 +#: order/models.py:1863 msgid "Cannot allocate stock item to a line with a different part" -msgstr "" +msgstr "Nelze přidělit skladovou položku na řádek s jiným dílem" -#: order/models.py:1902 +#: order/models.py:1866 msgid "Cannot allocate stock to a line without a part" -msgstr "" +msgstr "Nelze přidělit skladovou položku na řádek bez dílu" -#: order/models.py:1905 +#: order/models.py:1869 msgid "Allocation quantity cannot exceed stock quantity" -msgstr "" +msgstr "Přidělené množství nesmí překročit množství zásob" -#: order/models.py:1924 order/serializers.py:1231 +#: order/models.py:1888 order/serializers.py:1219 msgid "Quantity must be 1 for serialized stock item" -msgstr "" +msgstr "Množství musí být 1 pro serializovanou skladovou položku" -#: order/models.py:1927 +#: order/models.py:1891 msgid "Sales order does not match shipment" -msgstr "" +msgstr "Prodejní objednávka neodpovídá zásilce" -#: order/models.py:1928 plugin/base/barcodes/api.py:481 +#: order/models.py:1892 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" -msgstr "" +msgstr "Zásilka neodpovídá prodejní objednávce" -#: order/models.py:1936 +#: order/models.py:1900 msgid "Line" -msgstr "" +msgstr "Řádek" -#: order/models.py:1945 +#: order/models.py:1909 msgid "Sales order shipment reference" -msgstr "" +msgstr "Odkaz na zásilku z prodejní objednávky" -#: order/models.py:1958 order/models.py:2275 +#: order/models.py:1922 order/models.py:2239 #: templates/js/translated/return_order.js:721 msgid "Item" -msgstr "" +msgstr "Položka" -#: order/models.py:1959 +#: order/models.py:1923 msgid "Select stock item to allocate" -msgstr "" +msgstr "Vyberte skladovou položku pro přidělení" -#: order/models.py:1968 +#: order/models.py:1932 msgid "Enter stock allocation quantity" -msgstr "" +msgstr "Zadejte množství pro přidělení zásob" -#: order/models.py:2057 +#: order/models.py:2021 msgid "Return Order reference" msgstr "" -#: order/models.py:2069 +#: order/models.py:2033 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:2081 +#: order/models.py:2045 msgid "Return order status" msgstr "" -#: order/models.py:2260 +#: order/models.py:2224 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2276 +#: order/models.py:2240 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2282 +#: order/models.py:2246 msgid "Received Date" msgstr "" -#: order/models.py:2283 +#: order/models.py:2247 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2294 templates/js/translated/return_order.js:732 +#: order/models.py:2258 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2295 +#: order/models.py:2259 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2302 +#: order/models.py:2266 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/serializers.py:79 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_purchase_order_report.html:22 @@ -5157,163 +5209,163 @@ msgstr "" msgid "Line Items" msgstr "" -#: order/serializers.py:84 +#: order/serializers.py:83 msgid "Completed Lines" msgstr "" -#: order/serializers.py:287 +#: order/serializers.py:286 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:302 order/serializers.py:1247 +#: order/serializers.py:301 order/serializers.py:1235 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:312 order/serializers.py:1257 +#: order/serializers.py:311 order/serializers.py:1245 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:440 +#: order/serializers.py:439 msgid "Order is not open" msgstr "" -#: order/serializers.py:461 +#: order/serializers.py:460 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:463 +#: order/serializers.py:462 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:473 +#: order/serializers.py:472 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:478 msgid "Merge Items" msgstr "" -#: order/serializers.py:481 +#: order/serializers.py:480 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:499 +#: order/serializers.py:498 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:502 +#: order/serializers.py:501 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:510 +#: order/serializers.py:509 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:511 +#: order/serializers.py:510 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:550 order/serializers.py:1325 +#: order/serializers.py:549 order/serializers.py:1313 msgid "Line Item" msgstr "" -#: order/serializers.py:556 +#: order/serializers.py:555 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1657 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:581 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:589 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:601 templates/js/translated/barcode.js:52 +#: order/serializers.py:600 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:602 +#: order/serializers.py:601 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:618 +#: order/serializers.py:617 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:642 +#: order/serializers.py:641 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:690 order/serializers.py:1696 +#: order/serializers.py:689 order/serializers.py:1673 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:706 +#: order/serializers.py:705 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:717 +#: order/serializers.py:716 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1074 +#: order/serializers.py:1062 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1134 +#: order/serializers.py:1122 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1195 order/serializers.py:1334 +#: order/serializers.py:1183 order/serializers.py:1322 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1214 +#: order/serializers.py:1202 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1344 +#: order/serializers.py:1332 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1366 order/serializers.py:1472 +#: order/serializers.py:1354 order/serializers.py:1460 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1369 order/serializers.py:1475 +#: order/serializers.py:1357 order/serializers.py:1463 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1416 +#: order/serializers.py:1404 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1423 +#: order/serializers.py:1411 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1650 +#: order/serializers.py:1627 msgid "Return order line item" msgstr "" -#: order/serializers.py:1656 +#: order/serializers.py:1633 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1659 +#: order/serializers.py:1636 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1688 +#: order/serializers.py:1665 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1766 +#: order/serializers.py:1743 msgid "Line price currency" msgstr "" @@ -5643,7 +5695,7 @@ msgstr "" #: 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/part.js:1073 #: templates/js/translated/purchase_order.js:1752 #: templates/js/translated/return_order.js:380 #: templates/js/translated/sales_order.js:891 @@ -5739,34 +5791,34 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:406 part/models.py:3964 part/stocktake.py:218 -#: stock/admin.py:153 +#: part/admin.py:39 part/admin.py:398 part/models.py:3944 part/stocktake.py:219 +#: stock/admin.py:152 msgid "Part ID" msgstr "ID dílu" -#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 -#: stock/admin.py:157 +#: part/admin.py:41 part/admin.py:405 part/models.py:3945 part/stocktake.py:220 +#: stock/admin.py:156 msgid "Part Name" msgstr "Název dílu" -#: part/admin.py:45 part/stocktake.py:220 +#: part/admin.py:45 part/stocktake.py:221 msgid "Part Description" msgstr "Popis dílu" -#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:940 part/templates/part/part_base.html:269 #: report/templates/report/inventree_stock_location_report.html:103 -#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/part.js:1227 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 -#: report/models.py:161 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2346 +#: part/admin.py:50 part/models.py:949 part/templates/part/part_base.html:277 +#: report/models.py:162 templates/js/translated/part.js:1232 +#: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:319 part/models.py:929 +#: part/admin.py:53 part/admin.py:319 part/models.py:922 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5775,11 +5827,11 @@ msgstr "" msgid "Part Image" msgstr "" -#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:222 msgid "Category ID" msgstr "" -#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:223 msgid "Category Name" msgstr "" @@ -5791,11 +5843,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:908 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1036 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5803,26 +5855,26 @@ msgstr "" 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 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:235 +#: templates/js/translated/part.js:715 templates/js/translated/part.js:2153 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3123 part/models.py:3137 -#: templates/js/translated/part.js:969 +#: part/admin.py:155 part/models.py:3088 part/models.py:3102 +#: templates/js/translated/part.js:970 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3130 part/models.py:3144 -#: templates/js/translated/part.js:979 +#: part/admin.py:158 part/models.py:3095 part/models.py:3109 +#: templates/js/translated/part.js:980 msgid "Maximum Cost" msgstr "" -#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 msgid "Parent ID" msgstr "" -#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 msgid "Parent Name" msgstr "" @@ -5831,141 +5883,149 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:325 part/models.py:393 part/serializers.py:117 -#: part/serializers.py:272 part/serializers.py:391 +#: part/admin.py:325 part/models.py:396 part/serializers.py:124 +#: part/serializers.py:267 part/serializers.py:386 #: 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:2803 templates/js/translated/search.js:130 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "Díly" -#: part/admin.py:386 +#: part/admin.py:378 msgid "BOM Level" msgstr "" -#: part/admin.py:389 +#: part/admin.py:381 msgid "BOM Item ID" msgstr "" -#: part/admin.py:399 +#: part/admin.py:391 msgid "Parent IPN" msgstr "" -#: part/admin.py:410 part/models.py:3966 +#: part/admin.py:402 part/models.py:3946 msgid "Part IPN" msgstr "IPN dílu" -#: part/admin.py:423 part/serializers.py:1278 +#: part/admin.py:415 part/serializers.py:1274 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:428 part/serializers.py:1293 +#: part/admin.py:420 part/serializers.py:1289 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:110 +#: part/api.py:104 msgid "Starred" msgstr "" -#: part/api.py:112 +#: part/api.py:106 msgid "Filter by starred categories" msgstr "" -#: part/api.py:129 stock/api.py:318 +#: part/api.py:123 stock/api.py:312 msgid "Depth" msgstr "" -#: part/api.py:129 +#: part/api.py:123 msgid "Filter by category depth" msgstr "" -#: part/api.py:147 stock/api.py:336 +#: part/api.py:141 stock/api.py:330 +msgid "Top Level" +msgstr "" + +#: part/api.py:143 +msgid "Filter by top-level categories" +msgstr "" + +#: part/api.py:156 stock/api.py:345 msgid "Cascade" msgstr "" -#: part/api.py:149 +#: part/api.py:158 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:169 +#: part/api.py:179 templates/js/translated/part.js:308 msgid "Parent" msgstr "" -#: part/api.py:171 +#: part/api.py:181 msgid "Filter by parent category" msgstr "" -#: part/api.py:204 +#: part/api.py:214 msgid "Exclude Tree" msgstr "" -#: part/api.py:206 +#: part/api.py:216 msgid "Exclude sub-categories under the specified category" msgstr "" -#: part/api.py:455 +#: part/api.py:449 msgid "Has Results" msgstr "" -#: part/api.py:622 +#: part/api.py:616 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:640 +#: part/api.py:634 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:656 +#: part/api.py:650 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:740 +#: part/api.py:734 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:887 +#: part/api.py:881 msgid "Valid" msgstr "" -#: part/api.py:888 +#: part/api.py:882 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:894 +#: part/api.py:888 msgid "This option must be selected" msgstr "" -#: part/api.py:1111 +#: part/api.py:1105 msgid "BOM Valid" msgstr "" -#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 -#: part/serializers.py:406 part/serializers.py:1134 -#: part/templates/part/part_base.html:260 stock/api.py:781 +#: part/api.py:1508 part/models.py:932 part/models.py:3374 part/models.py:3889 +#: part/serializers.py:401 part/serializers.py:1130 +#: part/templates/part/part_base.html:260 stock/api.py:791 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2376 +#: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/api.py:1803 +#: part/api.py:1796 msgid "Uses" msgstr "" -#: part/bom.py:170 part/models.py:102 part/models.py:982 +#: part/bom.py:170 part/models.py:104 part/models.py:975 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 part/serializers.py:837 +#: part/bom.py:171 part/serializers.py:833 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5974,1054 +6034,1066 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 +#: part/models.py:85 part/models.py:3890 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Kategorie dílu" -#: part/models.py:84 part/templates/part/category.html:136 +#: part/models.py:86 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "Kategorie dílů" -#: part/models.py:103 +#: part/models.py:105 msgid "Default location for parts in this category" msgstr "Výchozí umístění dílů v této kategorii" -#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 +#: part/models.py:110 stock/models.py:174 templates/js/translated/part.js:2810 #: templates/js/translated/stock.js:2772 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:110 +#: part/models.py:112 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "Díly nesmějí být přímo zařazeny do strukturované kategorie, ale mohou být zařazeny jako podkategorie." -#: part/models.py:119 +#: part/models.py:121 msgid "Default keywords" msgstr "" -#: part/models.py:120 +#: part/models.py:122 msgid "Default keywords for parts in this category" msgstr "Výchozí klíčová slova pro díly v této kategorii" -#: part/models.py:126 stock/models.py:85 stock/models.py:156 +#: part/models.py:128 stock/models.py:86 stock/models.py:157 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:127 stock/models.py:157 +#: part/models.py:129 stock/models.py:158 msgid "Icon (optional)" msgstr "" -#: part/models.py:149 +#: part/models.py:151 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:482 +#: part/models.py:485 msgid "Cannot delete this part as it is still active" msgstr "" -#: part/models.py:489 +#: part/models.py:490 msgid "Cannot delete this part as it is used in an assembly" msgstr "" -#: part/models.py:527 +#: part/models.py:528 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:575 part/models.py:582 +#: part/models.py:576 part/models.py:583 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:594 +#: part/models.py:595 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:659 +#: part/models.py:658 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:739 +#: part/models.py:736 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:844 +#: part/models.py:837 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:854 +#: part/models.py:847 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:869 +#: part/models.py:862 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:898 part/models.py:3965 +#: part/models.py:891 part/models.py:3945 msgid "Part name" msgstr "Název dílu" -#: part/models.py:903 +#: part/models.py:896 msgid "Is Template" msgstr "" -#: part/models.py:904 +#: part/models.py:897 msgid "Is this part a template part?" msgstr "" -#: part/models.py:914 +#: part/models.py:907 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:922 +#: part/models.py:915 msgid "Part description (optional)" msgstr "" -#: part/models.py:930 +#: part/models.py:923 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:940 +#: part/models.py:933 msgid "Part category" msgstr "Kategorie dílu" -#: part/models.py:948 +#: part/models.py:941 msgid "Internal Part Number" msgstr "Interní číslo dílu" -#: part/models.py:955 +#: part/models.py:948 msgid "Part revision or version number" msgstr "" -#: part/models.py:980 +#: part/models.py:973 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:1026 part/templates/part/part_base.html:376 +#: part/models.py:1019 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:1027 +#: part/models.py:1020 msgid "Default supplier part" msgstr "" -#: part/models.py:1034 +#: part/models.py:1027 msgid "Default Expiry" msgstr "" -#: part/models.py:1035 +#: part/models.py:1028 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:1044 +#: part/models.py:1037 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:1053 +#: part/models.py:1046 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1060 +#: part/models.py:1053 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1066 +#: part/models.py:1059 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1072 +#: part/models.py:1065 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1078 +#: part/models.py:1071 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1084 +#: part/models.py:1077 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1088 +#: part/models.py:1081 msgid "Is this part active?" msgstr "" -#: part/models.py:1094 +#: part/models.py:1087 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1100 +#: part/models.py:1093 msgid "BOM checksum" msgstr "" -#: part/models.py:1101 +#: part/models.py:1094 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1109 +#: part/models.py:1102 msgid "BOM checked by" msgstr "" -#: part/models.py:1114 +#: part/models.py:1107 msgid "BOM checked date" msgstr "" -#: part/models.py:1130 +#: part/models.py:1123 msgid "Creation User" msgstr "" -#: part/models.py:1140 +#: part/models.py:1133 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1145 part/templates/part/part_base.html:339 +#: part/models.py:1138 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2470 +#: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:2018 +#: part/models.py:2011 msgid "Sell multiple" msgstr "" -#: part/models.py:3037 +#: part/models.py:3002 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:3053 +#: part/models.py:3018 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:3054 +#: part/models.py:3019 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:3060 +#: part/models.py:3025 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3026 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:3067 +#: part/models.py:3032 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3033 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3074 +#: part/models.py:3039 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3040 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3046 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3047 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3053 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3054 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3060 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3096 +#: part/models.py:3061 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3102 +#: part/models.py:3067 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3103 +#: part/models.py:3068 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3109 +#: part/models.py:3074 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3110 +#: part/models.py:3075 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3116 +#: part/models.py:3081 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3117 +#: part/models.py:3082 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3124 +#: part/models.py:3089 msgid "Override minimum cost" msgstr "" -#: part/models.py:3131 +#: part/models.py:3096 msgid "Override maximum cost" msgstr "" -#: part/models.py:3138 +#: part/models.py:3103 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3145 +#: part/models.py:3110 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3151 +#: part/models.py:3116 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3152 +#: part/models.py:3117 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3158 +#: part/models.py:3123 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3159 +#: part/models.py:3124 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3165 +#: part/models.py:3130 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3131 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3172 +#: part/models.py:3137 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3138 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3192 +#: part/models.py:3157 msgid "Part for stocktake" msgstr "" -#: part/models.py:3197 +#: part/models.py:3162 msgid "Item Count" msgstr "" -#: part/models.py:3198 +#: part/models.py:3163 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3206 +#: part/models.py:3171 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3210 part/models.py:3293 +#: part/models.py:3175 part/models.py:3258 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report.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/part.js:1086 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" -#: part/models.py:3211 +#: part/models.py:3176 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3219 +#: part/models.py:3184 msgid "Additional notes" msgstr "" -#: part/models.py:3229 +#: part/models.py:3194 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3235 +#: part/models.py:3200 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3236 +#: part/models.py:3201 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3242 +#: part/models.py:3207 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3243 +#: part/models.py:3208 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3264 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3300 +#: part/models.py:3265 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3270 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3306 +#: part/models.py:3271 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3316 +#: part/models.py:3281 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3478 +#: part/models.py:3423 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3489 +#: part/models.py:3444 part/models.py:3608 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3455 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3500 +#: part/models.py:3466 msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3517 templates/js/translated/part.js:2878 +#: part/models.py:3483 templates/js/translated/part.js:2880 msgid "Test Name" msgstr "" -#: part/models.py:3518 +#: part/models.py:3484 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3524 +#: part/models.py:3490 msgid "Test Key" msgstr "" -#: part/models.py:3525 +#: part/models.py:3491 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3532 +#: part/models.py:3498 msgid "Test Description" msgstr "" -#: part/models.py:3533 +#: part/models.py:3499 msgid "Enter description for this test" msgstr "" -#: part/models.py:3537 report/models.py:208 -#: templates/js/translated/part.js:2899 +#: part/models.py:3503 report/models.py:209 +#: templates/js/translated/part.js:2901 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" -#: part/models.py:3537 +#: part/models.py:3503 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3542 templates/js/translated/part.js:2907 +#: part/models.py:3508 templates/js/translated/part.js:2909 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3543 +#: part/models.py:3509 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3548 templates/js/translated/part.js:2915 +#: part/models.py:3514 templates/js/translated/part.js:2917 msgid "Requires Value" msgstr "" -#: part/models.py:3549 +#: part/models.py:3515 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3554 templates/js/translated/part.js:2922 +#: part/models.py:3520 templates/js/translated/part.js:2924 msgid "Requires Attachment" msgstr "" -#: part/models.py:3556 +#: part/models.py:3522 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3603 +#: part/models.py:3528 part/models.py:3667 templates/js/translated/part.js:1637 +msgid "Choices" +msgstr "" + +#: part/models.py:3529 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3583 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3608 +#: part/models.py:3588 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3628 -msgid "Choices must be unique" -msgstr "" - -#: part/models.py:3645 +#: part/models.py:3625 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3660 +#: part/models.py:3640 msgid "Parameter Name" msgstr "" -#: part/models.py:3667 +#: part/models.py:3647 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3675 +#: part/models.py:3655 msgid "Parameter description" msgstr "" -#: part/models.py:3681 templates/js/translated/part.js:1627 +#: part/models.py:3661 templates/js/translated/part.js:1628 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "" -#: part/models.py:3682 +#: part/models.py:3662 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3687 templates/js/translated/part.js:1636 -msgid "Choices" -msgstr "" - -#: part/models.py:3688 +#: part/models.py:3668 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3765 +#: part/models.py:3745 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3808 +#: part/models.py:3788 msgid "Parent Part" msgstr "" -#: part/models.py:3816 part/models.py:3917 part/models.py:3918 +#: part/models.py:3796 part/models.py:3897 part/models.py:3898 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3821 +#: part/models.py:3801 msgid "Data" msgstr "" -#: part/models.py:3822 +#: part/models.py:3802 msgid "Parameter Value" msgstr "" -#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3904 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3925 +#: part/models.py:3905 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3963 +#: part/models.py:3943 msgid "Part ID or part name" msgstr "ID dílu nebo název dílu" -#: part/models.py:3964 +#: part/models.py:3944 msgid "Unique part ID value" msgstr "Jedinečná hodnota ID dílu" -#: part/models.py:3966 +#: part/models.py:3946 msgid "Part IPN value" msgstr "Hodnota IPN dílu" -#: part/models.py:3967 +#: part/models.py:3947 msgid "Level" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "BOM level" msgstr "" -#: part/models.py:4057 +#: part/models.py:4037 msgid "Select parent part" msgstr "Vyberte nadřazený díl" -#: part/models.py:4067 +#: part/models.py:4047 msgid "Sub part" msgstr "" -#: part/models.py:4068 +#: part/models.py:4048 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4079 +#: part/models.py:4059 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4085 +#: part/models.py:4065 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4091 +#: part/models.py:4071 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4098 part/templates/part/upload_bom.html:55 +#: part/models.py:4078 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4099 +#: part/models.py:4079 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4106 +#: part/models.py:4086 msgid "BOM item reference" msgstr "" -#: part/models.py:4114 +#: part/models.py:4094 msgid "BOM item notes" msgstr "" -#: part/models.py:4120 +#: part/models.py:4100 msgid "Checksum" msgstr "" -#: part/models.py:4121 +#: part/models.py:4101 msgid "BOM line checksum" msgstr "" -#: part/models.py:4126 templates/js/translated/table_filters.js:174 +#: part/models.py:4106 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4127 +#: part/models.py:4107 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4132 part/templates/part/upload_bom.html:57 +#: part/models.py:4112 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:4133 +#: part/models.py:4113 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4138 part/templates/part/upload_bom.html:56 +#: part/models.py:4118 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4139 +#: part/models.py:4119 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4224 stock/models.py:664 +#: part/models.py:4204 stock/models.py:662 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4234 part/models.py:4236 +#: part/models.py:4214 part/models.py:4216 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4376 +#: part/models.py:4354 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4397 +#: part/models.py:4375 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4410 +#: part/models.py:4388 msgid "Parent BOM item" msgstr "" -#: part/models.py:4418 +#: part/models.py:4396 msgid "Substitute part" msgstr "" -#: part/models.py:4434 +#: part/models.py:4412 msgid "Part 1" msgstr "" -#: part/models.py:4442 +#: part/models.py:4420 msgid "Part 2" msgstr "" -#: part/models.py:4443 +#: part/models.py:4421 msgid "Select Related Part" msgstr "" -#: part/models.py:4462 +#: part/models.py:4440 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4467 +#: part/models.py:4445 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:119 part/serializers.py:141 +#: part/serializers.py:118 +msgid "Parent Category" +msgstr "" + +#: part/serializers.py:119 templates/js/translated/part.js:309 +msgid "Parent part category" +msgstr "" + +#: part/serializers.py:126 part/serializers.py:148 #: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/serializers.py:185 +#: part/serializers.py:180 msgid "Results" msgstr "" -#: part/serializers.py:186 +#: part/serializers.py:181 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 +#: part/serializers.py:205 part/serializers.py:223 stock/serializers.py:562 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:273 +#: part/serializers.py:268 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:397 +#: part/serializers.py:392 msgid "No parts selected" msgstr "" -#: part/serializers.py:407 +#: part/serializers.py:402 msgid "Select category" msgstr "" -#: part/serializers.py:442 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:443 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:448 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:449 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:455 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:456 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:463 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:488 +#: part/serializers.py:483 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:490 +#: part/serializers.py:485 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:497 +#: part/serializers.py:492 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:493 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:510 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:531 +#: part/serializers.py:526 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:541 +#: part/serializers.py:536 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:548 +#: part/serializers.py:543 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:557 +#: part/serializers.py:552 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:568 +#: part/serializers.py:563 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:575 +#: part/serializers.py:570 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:834 msgid "External Stock" msgstr "" -#: part/serializers.py:840 +#: part/serializers.py:836 msgid "Unallocated Stock" msgstr "" -#: part/serializers.py:843 +#: part/serializers.py:839 msgid "Variant Stock" msgstr "" -#: part/serializers.py:873 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:471 +#: part/serializers.py:869 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:472 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:870 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:880 templates/js/translated/part.js:102 +#: part/serializers.py:876 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:881 +#: part/serializers.py:877 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:887 +#: part/serializers.py:883 msgid "Supplier Information" msgstr "" -#: part/serializers.py:888 +#: part/serializers.py:884 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:896 +#: part/serializers.py:892 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:897 +#: part/serializers.py:893 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:902 +#: part/serializers.py:898 msgid "Existing Image" msgstr "" -#: part/serializers.py:903 +#: part/serializers.py:899 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:920 +#: part/serializers.py:916 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1126 +#: part/serializers.py:1122 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1136 +#: part/serializers.py:1132 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1146 +#: part/serializers.py:1142 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1152 +#: part/serializers.py:1148 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1153 +#: part/serializers.py:1149 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1158 +#: part/serializers.py:1154 msgid "Generate Report" msgstr "" -#: part/serializers.py:1159 +#: part/serializers.py:1155 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1164 +#: part/serializers.py:1160 msgid "Update Parts" msgstr "Aktualizovat díly" -#: part/serializers.py:1165 +#: part/serializers.py:1161 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1173 +#: part/serializers.py:1169 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1279 +#: part/serializers.py:1275 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1286 +#: part/serializers.py:1282 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1294 +#: part/serializers.py:1290 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1301 +#: part/serializers.py:1297 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1330 +#: part/serializers.py:1326 msgid "Update" msgstr "" -#: part/serializers.py:1331 +#: part/serializers.py:1327 msgid "Update pricing for this part" msgstr "Aktualizovat cenu pro díl" -#: part/serializers.py:1354 +#: part/serializers.py:1350 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1361 +#: part/serializers.py:1357 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1364 +#: part/serializers.py:1360 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1727 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1739 +#: part/serializers.py:1735 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1740 +#: part/serializers.py:1736 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1745 +#: part/serializers.py:1741 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1746 +#: part/serializers.py:1742 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1747 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1752 +#: part/serializers.py:1748 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1757 +#: part/serializers.py:1753 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1758 +#: part/serializers.py:1754 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1792 +#: part/serializers.py:1788 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1793 +#: part/serializers.py:1789 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1823 +#: part/serializers.py:1819 msgid "No part column specified" msgstr "" -#: part/serializers.py:1867 +#: part/serializers.py:1863 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1870 +#: part/serializers.py:1866 msgid "No matching part found" msgstr "" -#: part/serializers.py:1873 +#: part/serializers.py:1869 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1882 +#: part/serializers.py:1878 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1890 +#: part/serializers.py:1886 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1911 +#: part/serializers.py:1907 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 +#: part/stocktake.py:225 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "" -#: part/stocktake.py:225 +#: part/stocktake.py:226 msgid "Total Cost Min" msgstr "" -#: part/stocktake.py:226 +#: part/stocktake.py:227 msgid "Total Cost Max" msgstr "" -#: part/stocktake.py:284 +#: part/stocktake.py:285 msgid "Stocktake Report Available" msgstr "" -#: part/stocktake.py:285 +#: part/stocktake.py:286 msgid "A new stocktake report is available for download" msgstr "" @@ -7155,7 +7227,7 @@ 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 +#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" @@ -7255,15 +7327,15 @@ msgstr "" msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:655 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:663 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:748 +#: part/templates/part/detail.html:750 msgid "Add Test Result Template" msgstr "" @@ -7344,7 +7416,7 @@ msgstr "" msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" msgstr "" @@ -7416,7 +7488,7 @@ 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:2443 +#: templates/js/translated/part.js:1265 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7509,8 +7581,8 @@ msgstr "" #: 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:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/part.js:1243 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 #: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7553,7 +7625,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:247 +#: part/templates/part/prices.html:28 stock/admin.py:251 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 @@ -7630,8 +7702,8 @@ msgstr "" #: part/templates/part/stock_count.html:7 #: templates/js/translated/model_renderers.js:227 -#: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 -#: templates/js/translated/part.js:2142 +#: templates/js/translated/part.js:705 templates/js/translated/part.js:2141 +#: templates/js/translated/part.js:2143 msgid "No Stock" msgstr "" @@ -8003,7 +8075,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:308 msgid "Landscape" msgstr "" @@ -8116,62 +8188,62 @@ msgstr "" msgid "Uninstalled plugin successfully" msgstr "" -#: plugin/models.py:35 +#: plugin/models.py:36 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:36 +#: plugin/models.py:37 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:42 users/models.py:100 +#: plugin/models.py:43 users/models.py:100 msgid "Key" msgstr "" -#: plugin/models.py:43 +#: plugin/models.py:44 msgid "Key of plugin" msgstr "" -#: plugin/models.py:51 +#: plugin/models.py:52 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:58 plugin/serializers.py:90 +#: plugin/models.py:59 plugin/serializers.py:90 msgid "Package Name" msgstr "" -#: plugin/models.py:60 +#: plugin/models.py:61 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:65 +#: plugin/models.py:66 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:156 templates/js/translated/table_filters.js:370 +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "" -#: plugin/models.py:165 +#: plugin/models.py:166 msgid "Sample plugin" msgstr "" -#: plugin/models.py:173 +#: plugin/models.py:174 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:181 +#: plugin/models.py:182 msgid "Package Plugin" msgstr "" -#: plugin/models.py:205 report/models.py:474 +#: plugin/models.py:220 report/models.py:475 #: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:252 +#: plugin/models.py:267 msgid "Method" msgstr "" @@ -8179,17 +8251,17 @@ msgstr "" msgid "No author found" msgstr "" -#: plugin/registry.py:597 +#: plugin/registry.py:534 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:600 +#: plugin/registry.py:537 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:602 +#: plugin/registry.py:539 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -8304,23 +8376,19 @@ msgstr "" msgid "Activate this plugin" msgstr "" -#: plugin/serializers.py:234 +#: plugin/serializers.py:226 msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:235 +#: plugin/serializers.py:227 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:77 +#: report/api.py:88 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:89 report/serializers.py:53 -msgid "Model Type" -msgstr "" - -#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/api.py:103 report/models.py:439 report/serializers.py:98 #: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 #: templates/js/translated/return_order.js:353 #: templates/js/translated/sales_order.js:887 @@ -8328,176 +8396,176 @@ msgstr "" msgid "Items" msgstr "" -#: report/api.py:168 +#: report/api.py:180 msgid "Plugin not found" msgstr "" -#: report/api.py:170 +#: report/api.py:182 msgid "Plugin is not active" msgstr "" -#: report/api.py:172 +#: report/api.py:184 msgid "Plugin does not support label printing" msgstr "" -#: report/api.py:221 +#: report/api.py:233 msgid "Invalid label dimensions" msgstr "" -#: report/api.py:236 report/api.py:316 +#: report/api.py:248 report/api.py:329 msgid "No valid items provided to template" msgstr "" -#: report/api.py:271 +#: report/api.py:283 msgid "Error printing label" msgstr "" -#: report/api.py:362 report/api.py:398 +#: report/api.py:375 report/api.py:411 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/helpers.py:41 +#: report/helpers.py:43 msgid "A4" msgstr "" -#: report/helpers.py:42 +#: report/helpers.py:44 msgid "A3" msgstr "" -#: report/helpers.py:43 +#: report/helpers.py:45 msgid "Legal" msgstr "" -#: report/helpers.py:44 +#: report/helpers.py:46 msgid "Letter" msgstr "" -#: report/models.py:118 +#: report/models.py:119 msgid "Template file with this name already exists" msgstr "" -#: report/models.py:150 +#: report/models.py:151 msgid "Template name" msgstr "" -#: report/models.py:156 +#: report/models.py:157 msgid "Template description" msgstr "" -#: report/models.py:162 +#: report/models.py:163 msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Filename Pattern" msgstr "" -#: report/models.py:203 +#: report/models.py:204 msgid "Pattern for generating filenames" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Template is enabled" msgstr "" -#: report/models.py:214 +#: report/models.py:215 msgid "Target model type for template" msgstr "" -#: report/models.py:234 +#: report/models.py:235 msgid "Filters" msgstr "" -#: report/models.py:235 +#: report/models.py:236 msgid "Template query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:294 report/models.py:361 +#: report/models.py:295 report/models.py:362 msgid "Template file" msgstr "" -#: report/models.py:302 +#: report/models.py:303 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:308 +#: report/models.py:309 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:367 +#: report/models.py:368 msgid "Width [mm]" msgstr "" -#: report/models.py:368 +#: report/models.py:369 msgid "Label width, specified in mm" msgstr "" -#: report/models.py:374 +#: report/models.py:375 msgid "Height [mm]" msgstr "" -#: report/models.py:375 +#: report/models.py:376 msgid "Label height, specified in mm" msgstr "" -#: report/models.py:438 +#: report/models.py:439 msgid "Number of items to process" msgstr "" -#: report/models.py:444 +#: report/models.py:445 msgid "Report generation is complete" msgstr "" -#: report/models.py:448 templates/js/translated/build.js:2177 +#: report/models.py:449 templates/js/translated/build.js:2177 msgid "Progress" msgstr "" -#: report/models.py:448 +#: report/models.py:449 msgid "Report generation progress" msgstr "" -#: report/models.py:456 +#: report/models.py:457 msgid "Report Template" msgstr "" -#: report/models.py:463 report/models.py:486 +#: report/models.py:464 report/models.py:487 msgid "Output File" msgstr "" -#: report/models.py:464 report/models.py:487 +#: report/models.py:465 report/models.py:488 msgid "Generated output file" msgstr "" -#: report/models.py:475 +#: report/models.py:476 msgid "Label output plugin" msgstr "" -#: report/models.py:479 +#: report/models.py:480 msgid "Label Template" msgstr "" -#: report/models.py:502 +#: report/models.py:503 msgid "Snippet" msgstr "" -#: report/models.py:503 +#: report/models.py:504 msgid "Report snippet file" msgstr "" -#: report/models.py:510 +#: report/models.py:511 msgid "Snippet file description" msgstr "" -#: report/models.py:528 +#: report/models.py:529 msgid "Asset" msgstr "" -#: report/models.py:529 +#: report/models.py:530 msgid "Report asset file" msgstr "" -#: report/models.py:536 +#: report/models.py:537 msgid "Asset file description" msgstr "" @@ -8570,8 +8638,8 @@ msgid "Total" msgstr "" #: report/templates/report/inventree_return_order_report.html:25 -#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 -#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:824 +#: stock/serializers.py:149 stock/templates/stock/item_base.html:311 #: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 #: templates/js/translated/build.js:2355 #: templates/js/translated/model_renderers.js:230 @@ -8601,32 +8669,32 @@ msgstr "" msgid "Test" msgstr "" -#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2412 msgid "Result" msgstr "" -#: report/templates/report/inventree_test_report.html:130 +#: report/templates/report/inventree_test_report.html:129 msgid "Pass" msgstr "" -#: report/templates/report/inventree_test_report.html:132 +#: report/templates/report/inventree_test_report.html:131 msgid "Fail" msgstr "" -#: report/templates/report/inventree_test_report.html:139 +#: report/templates/report/inventree_test_report.html:138 msgid "No result (required)" msgstr "" -#: report/templates/report/inventree_test_report.html:141 +#: report/templates/report/inventree_test_report.html:140 msgid "No result" msgstr "" -#: report/templates/report/inventree_test_report.html:154 +#: report/templates/report/inventree_test_report.html:153 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "" -#: report/templates/report/inventree_test_report.html:168 stock/admin.py:162 +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 #: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 #: templates/js/translated/stock.js:3110 msgid "Serial" @@ -8648,654 +8716,670 @@ msgstr "" msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:172 +#: stock/admin.py:51 stock/admin.py:171 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:176 +#: stock/admin.py:53 stock/admin.py:175 msgid "Location Name" msgstr "" -#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/admin.py:63 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:149 +#: stock/admin.py:148 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:168 +#: stock/admin.py:167 msgid "Status Code" msgstr "" -#: stock/admin.py:180 +#: stock/admin.py:179 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:185 +#: stock/admin.py:184 +msgid "Supplier Part SKU" +msgstr "" + +#: stock/admin.py:189 msgid "Supplier ID" msgstr "" -#: stock/admin.py:191 +#: stock/admin.py:195 msgid "Supplier Name" msgstr "" -#: stock/admin.py:196 +#: stock/admin.py:200 msgid "Customer ID" msgstr "" -#: stock/admin.py:201 stock/models.py:806 +#: stock/admin.py:205 stock/models.py:804 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:206 +#: stock/admin.py:210 msgid "Build ID" msgstr "" -#: stock/admin.py:216 +#: stock/admin.py:220 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:221 +#: stock/admin.py:225 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:236 +#: stock/admin.py:240 msgid "Review Needed" msgstr "" -#: stock/admin.py:241 +#: stock/admin.py:245 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:256 stock/models.py:900 +#: stock/admin.py:260 stock/models.py:898 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "" -#: stock/api.py:318 +#: stock/api.py:312 msgid "Filter by location depth" msgstr "" -#: stock/api.py:338 +#: stock/api.py:332 +msgid "Filter by top-level locations" +msgstr "" + +#: stock/api.py:347 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:359 +#: stock/api.py:369 stock/serializers.py:1085 msgid "Parent Location" msgstr "" -#: stock/api.py:360 +#: stock/api.py:370 msgid "Filter by parent location" msgstr "" -#: stock/api.py:615 templates/js/translated/table_filters.js:427 +#: stock/api.py:625 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:803 +#: stock/api.py:813 msgid "Part Tree" msgstr "" -#: stock/api.py:833 +#: stock/api.py:843 msgid "Expiry date before" msgstr "" -#: stock/api.py:837 +#: stock/api.py:847 msgid "Expiry date after" msgstr "" -#: stock/api.py:840 stock/templates/stock/item_base.html:439 +#: stock/api.py:850 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:927 +#: stock/api.py:937 msgid "Quantity is required" msgstr "" -#: stock/api.py:933 +#: stock/api.py:943 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:964 +#: stock/api.py:974 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:974 +#: stock/api.py:984 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:1005 +#: stock/api.py:1015 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:59 +#: stock/models.py:60 msgid "Stock Location type" msgstr "" -#: stock/models.py:60 +#: stock/models.py:61 msgid "Stock Location types" msgstr "" -#: stock/models.py:86 +#: stock/models.py:87 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:123 stock/models.py:788 +#: stock/models.py:124 stock/models.py:786 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:124 stock/templates/stock/location.html:186 +#: stock/models.py:125 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "" -#: stock/models.py:166 stock/models.py:949 +#: stock/models.py:167 stock/models.py:947 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:167 stock/models.py:950 +#: stock/models.py:168 stock/models.py:948 msgid "Select Owner" msgstr "" -#: stock/models.py:175 +#: stock/models.py:176 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:182 templates/js/translated/stock.js:2781 +#: stock/models.py:183 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:183 +#: stock/models.py:184 msgid "This is an external stock location" msgstr "" -#: stock/models.py:189 templates/js/translated/stock.js:2790 +#: stock/models.py:190 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" -#: stock/models.py:193 +#: stock/models.py:194 msgid "Stock location type of this location" msgstr "" -#: stock/models.py:262 +#: stock/models.py:261 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:643 +#: stock/models.py:641 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:670 stock/serializers.py:419 +#: stock/models.py:668 stock/serializers.py:446 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:687 +#: stock/models.py:685 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:697 stock/models.py:710 +#: stock/models.py:695 stock/models.py:708 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:700 +#: stock/models.py:698 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:724 +#: stock/models.py:722 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:729 +#: stock/models.py:727 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:742 +#: stock/models.py:740 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:758 +#: stock/models.py:756 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:770 +#: stock/models.py:768 msgid "Base part" msgstr "" -#: stock/models.py:780 +#: stock/models.py:778 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:792 +#: stock/models.py:790 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:800 stock/serializers.py:1480 +#: stock/models.py:798 stock/serializers.py:1476 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:811 +#: stock/models.py:809 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:830 +#: stock/models.py:828 msgid "Serial number for this item" msgstr "" -#: stock/models.py:844 stock/serializers.py:1463 +#: stock/models.py:842 stock/serializers.py:1459 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:849 +#: stock/models.py:847 msgid "Stock Quantity" msgstr "" -#: stock/models.py:859 +#: stock/models.py:857 msgid "Source Build" msgstr "" -#: stock/models.py:862 +#: stock/models.py:860 msgid "Build for this stock item" msgstr "" -#: stock/models.py:869 stock/templates/stock/item_base.html:363 +#: stock/models.py:867 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:872 +#: stock/models.py:870 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:881 +#: stock/models.py:879 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:885 +#: stock/models.py:883 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:891 +#: stock/models.py:889 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:902 +#: stock/models.py:900 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:920 +#: stock/models.py:918 msgid "Delete on deplete" msgstr "" -#: stock/models.py:921 +#: stock/models.py:919 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:941 +#: stock/models.py:939 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:972 +#: stock/models.py:970 msgid "Converted to part" msgstr "" -#: stock/models.py:1490 +#: stock/models.py:1486 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1496 +#: stock/models.py:1492 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1500 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1510 +#: stock/models.py:1506 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1515 +#: stock/models.py:1511 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1523 stock/serializers.py:658 +#: stock/models.py:1519 stock/serializers.py:660 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1620 +#: stock/models.py:1616 msgid "Test template does not exist" msgstr "" -#: stock/models.py:1638 +#: stock/models.py:1634 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1642 +#: stock/models.py:1638 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1645 +#: stock/models.py:1641 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1648 +#: stock/models.py:1644 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1651 +#: stock/models.py:1647 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1654 +#: stock/models.py:1650 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1661 stock/serializers.py:1369 +#: stock/models.py:1657 stock/serializers.py:1365 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1665 +#: stock/models.py:1661 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1673 +#: stock/models.py:1669 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1678 +#: stock/models.py:1674 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1905 +#: stock/models.py:1901 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2310 msgid "Entry notes" msgstr "" -#: stock/models.py:2391 +#: stock/models.py:2378 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2396 +#: stock/models.py:2383 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2423 +#: stock/models.py:2388 +msgid "Invalid value for this test" +msgstr "" + +#: stock/models.py:2412 msgid "Test result" msgstr "" -#: stock/models.py:2430 +#: stock/models.py:2419 msgid "Test output value" msgstr "" -#: stock/models.py:2438 +#: stock/models.py:2427 msgid "Test result attachment" msgstr "" -#: stock/models.py:2442 +#: stock/models.py:2431 msgid "Test notes" msgstr "" -#: stock/models.py:2450 templates/js/translated/stock.js:1548 +#: stock/models.py:2439 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2440 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2457 +#: stock/models.py:2446 msgid "Started" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2447 msgid "The timestamp of the test start" msgstr "" -#: stock/models.py:2464 +#: stock/models.py:2453 msgid "Finished" msgstr "" -#: stock/models.py:2465 +#: stock/models.py:2454 msgid "The timestamp of the test finish" msgstr "" -#: stock/serializers.py:75 +#: stock/serializers.py:74 msgid "Generated batch code" msgstr "" -#: stock/serializers.py:84 +#: stock/serializers.py:83 msgid "Select build order" msgstr "" -#: stock/serializers.py:93 +#: stock/serializers.py:92 msgid "Select stock item to generate batch code for" msgstr "" -#: stock/serializers.py:102 +#: stock/serializers.py:101 msgid "Select location to generate batch code for" msgstr "" -#: stock/serializers.py:111 +#: stock/serializers.py:110 msgid "Select part to generate batch code for" msgstr "" -#: stock/serializers.py:120 +#: stock/serializers.py:119 msgid "Select purchase order" msgstr "" -#: stock/serializers.py:127 +#: stock/serializers.py:126 msgid "Enter quantity for batch code" msgstr "" -#: stock/serializers.py:150 +#: stock/serializers.py:149 msgid "Generated serial number" msgstr "" -#: stock/serializers.py:159 +#: stock/serializers.py:158 msgid "Select part to generate serial number for" msgstr "" -#: stock/serializers.py:167 +#: stock/serializers.py:166 msgid "Quantity of serial numbers to generate" msgstr "" -#: stock/serializers.py:229 +#: stock/serializers.py:228 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:248 +#: stock/serializers.py:247 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:280 +#: stock/serializers.py:279 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:313 +#: stock/serializers.py:315 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:411 +#: stock/serializers.py:438 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:531 +#: stock/serializers.py:558 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:595 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:606 +#: stock/serializers.py:608 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:613 +#: stock/serializers.py:615 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 +#: stock/serializers.py:626 stock/serializers.py:1322 stock/serializers.py:1578 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:631 +#: stock/serializers.py:633 msgid "Optional note field" msgstr "" -#: stock/serializers.py:641 +#: stock/serializers.py:643 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:696 +#: stock/serializers.py:698 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:703 +#: stock/serializers.py:705 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:704 +#: stock/serializers.py:706 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 -#: stock/serializers.py:935 +#: stock/serializers.py:711 stock/serializers.py:791 stock/serializers.py:887 +#: stock/serializers.py:937 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:719 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:725 +#: stock/serializers.py:727 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:736 +#: stock/serializers.py:738 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:749 +#: stock/serializers.py:751 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:784 +#: stock/serializers.py:786 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:819 +#: stock/serializers.py:821 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:834 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:849 +#: stock/serializers.py:851 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:880 +#: stock/serializers.py:882 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:917 +#: stock/serializers.py:919 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:923 +#: stock/serializers.py:925 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:1019 stock/serializers.py:1082 +#: stock/serializers.py:1021 stock/serializers.py:1093 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:220 +#: stock/templates/stock/location.html:222 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1198 +#: stock/serializers.py:1086 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: stock/serializers.py:1194 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1202 +#: stock/serializers.py:1198 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1206 +#: stock/serializers.py:1202 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1230 +#: stock/serializers.py:1226 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1236 +#: stock/serializers.py:1232 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1244 +#: stock/serializers.py:1240 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1254 stock/serializers.py:1508 +#: stock/serializers.py:1250 stock/serializers.py:1504 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1333 +#: stock/serializers.py:1329 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1338 +#: stock/serializers.py:1334 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1339 +#: stock/serializers.py:1335 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1344 +#: stock/serializers.py:1340 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1345 +#: stock/serializers.py:1341 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1355 +#: stock/serializers.py:1351 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1422 +#: stock/serializers.py:1418 msgid "No Change" msgstr "" -#: stock/serializers.py:1451 +#: stock/serializers.py:1447 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1470 +#: stock/serializers.py:1466 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1498 +#: stock/serializers.py:1494 msgid "Stock transaction notes" msgstr "" @@ -9448,7 +9532,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276 msgid "Delete Test Data" msgstr "" @@ -9468,11 +9552,11 @@ msgstr "" msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:272 +#: stock/templates/stock/item.html:264 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "" @@ -9758,28 +9842,28 @@ msgstr "" msgid "Location Type" msgstr "" -#: stock/templates/stock/location.html:224 +#: stock/templates/stock/location.html:226 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:225 +#: stock/templates/stock/location.html:227 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:295 +#: stock/templates/stock/location.html:299 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:317 +#: stock/templates/stock/location.html:321 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:390 +#: stock/templates/stock/location.html:394 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:401 +#: stock/templates/stock/location.html:405 msgid "Link Barcode to Stock Location" msgstr "" @@ -10203,20 +10287,20 @@ msgstr "" msgid "Pricing Settings" msgstr "" -#: templates/InvenTree/settings/pricing.html:34 +#: templates/InvenTree/settings/pricing.html:35 msgid "Exchange Rates" msgstr "" -#: templates/InvenTree/settings/pricing.html:38 +#: templates/InvenTree/settings/pricing.html:39 msgid "Update Now" msgstr "" -#: templates/InvenTree/settings/pricing.html:46 -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 msgid "Last Update" msgstr "" -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:51 msgid "Never" msgstr "" @@ -10273,8 +10357,8 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:547 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 +#: templates/js/translated/part.js:393 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:402 msgid "Delete" msgstr "Odstranit" @@ -10314,12 +10398,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 -#: templates/js/translated/part.js:1645 +#: templates/js/translated/part.js:1646 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 -#: templates/js/translated/part.js:1646 +#: templates/js/translated/part.js:1647 msgid "Delete Template" msgstr "" @@ -10709,7 +10793,7 @@ msgid "Submit Bug Report" msgstr "" #: templates/about.html:91 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 +#: templates/js/translated/helpers.js:589 msgid "copy to clipboard" msgstr "" @@ -10773,7 +10857,7 @@ 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 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45 msgid "Return to Site" msgstr "" @@ -10887,15 +10971,19 @@ msgstr "" msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "" -#: templates/allauth_2fa/setup.html:23 +#: templates/allauth_2fa/setup.html:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 msgid "Step 2" msgstr "" -#: templates/allauth_2fa/setup.html:27 +#: templates/allauth_2fa/setup.html:28 msgid "Input a token generated by the app:" msgstr "" -#: templates/allauth_2fa/setup.html:37 +#: templates/allauth_2fa/setup.html:38 msgid "Verify" msgstr "" @@ -10974,7 +11062,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3217 +#: templates/js/translated/part.js:3219 msgid "Minimum Quantity" msgstr "" @@ -11062,27 +11150,27 @@ msgstr "" msgid "Delete attachments" msgstr "" -#: templates/js/translated/attachment.js:253 +#: templates/js/translated/attachment.js:260 msgid "Attachment actions" msgstr "" -#: templates/js/translated/attachment.js:275 +#: templates/js/translated/attachment.js:294 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:315 +#: templates/js/translated/attachment.js:334 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:365 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:366 +#: templates/js/translated/attachment.js:385 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:374 +#: templates/js/translated/attachment.js:393 msgid "Delete attachment" msgstr "" @@ -11363,7 +11451,7 @@ msgid "Includes variant and substitute stock" msgstr "" #: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 -#: templates/js/translated/part.js:1256 +#: templates/js/translated/part.js:1257 #: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" @@ -11690,7 +11778,7 @@ msgstr "" #: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 #: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 -#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11733,8 +11821,8 @@ msgstr "" msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 -#: templates/js/translated/part.js:1202 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:791 +#: templates/js/translated/part.js:1203 msgid "Trackable part" msgstr "" @@ -11920,7 +12008,7 @@ msgid "Delete Parameters" msgstr "" #: templates/js/translated/company.js:1191 -#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2244 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2245 msgid "Order parts" msgstr "" @@ -11937,34 +12025,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:1279 -#: templates/js/translated/company.js:1567 templates/js/translated/part.js:798 -#: templates/js/translated/part.js:1210 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Template part" msgstr "" #: templates/js/translated/company.js:1283 -#: templates/js/translated/company.js:1571 templates/js/translated/part.js:802 -#: templates/js/translated/part.js:1214 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:803 +#: templates/js/translated/part.js:1215 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1464 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1465 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1527 +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1528 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1528 +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1529 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1433 +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1434 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1549 +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1550 msgid "Delete Parameter" msgstr "" @@ -12098,23 +12186,23 @@ msgstr "" msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2499 +#: templates/js/translated/forms.js:2500 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3113 +#: templates/js/translated/forms.js:3114 msgid "Select Columns" msgstr "" @@ -12215,7 +12303,7 @@ msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 -#: templates/js/translated/part.js:1604 +#: templates/js/translated/part.js:1605 msgid "ID" msgstr "" @@ -12296,347 +12384,343 @@ msgstr "" 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 +#: templates/js/translated/part.js:333 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:355 +#: templates/js/translated/part.js:356 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:356 +#: templates/js/translated/part.js:357 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:370 +#: templates/js/translated/part.js:371 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:383 +#: templates/js/translated/part.js:384 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:388 +#: templates/js/translated/part.js:389 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:397 +#: templates/js/translated/part.js:398 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:401 +#: templates/js/translated/part.js:402 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:406 +#: templates/js/translated/part.js:407 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:430 +#: templates/js/translated/part.js:431 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:432 +#: templates/js/translated/part.js:433 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:433 +#: templates/js/translated/part.js:434 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:462 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:463 +#: templates/js/translated/part.js:464 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:474 +#: templates/js/translated/part.js:475 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:531 +#: templates/js/translated/part.js:532 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:532 +#: templates/js/translated/part.js:533 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:546 +#: templates/js/translated/part.js:547 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:548 +#: templates/js/translated/part.js:549 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:549 +#: templates/js/translated/part.js:550 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:550 +#: templates/js/translated/part.js:551 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:557 +#: templates/js/translated/part.js:558 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:593 +#: templates/js/translated/part.js:594 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:595 +#: templates/js/translated/part.js:596 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:600 +#: templates/js/translated/part.js:601 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:602 +#: templates/js/translated/part.js:603 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:619 +#: templates/js/translated/part.js:620 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:629 +#: templates/js/translated/part.js:630 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:632 +#: templates/js/translated/part.js:633 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:657 +#: templates/js/translated/part.js:658 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:685 +#: templates/js/translated/part.js:686 #: templates/js/translated/table_filters.js:747 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:688 +#: templates/js/translated/part.js:689 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:748 +#: templates/js/translated/part.js:749 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:771 +#: templates/js/translated/part.js:772 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +#: templates/js/translated/part.js:795 templates/js/translated/part.js:1207 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:806 +#: templates/js/translated/part.js:807 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:810 +#: templates/js/translated/part.js:811 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:897 +#: templates/js/translated/part.js:898 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:901 +#: templates/js/translated/part.js:902 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1050 +#: templates/js/translated/part.js:1051 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1145 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +#: templates/js/translated/part.js:1113 templates/js/translated/part.js:1155 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1281 +#: templates/js/translated/part.js:1282 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1599 +#: templates/js/translated/part.js:1600 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1662 +#: templates/js/translated/part.js:1663 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1674 +#: templates/js/translated/part.js:1675 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1682 +#: templates/js/translated/part.js:1683 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1716 +#: templates/js/translated/part.js:1717 #: templates/js/translated/purchase_order.js:1654 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1860 +#: templates/js/translated/part.js:1861 #: templates/js/translated/purchase_order.js:2153 #: templates/js/translated/return_order.js:755 #: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1906 +#: templates/js/translated/part.js:1907 #: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1970 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1991 +#: templates/js/translated/part.js:1992 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 +#: templates/js/translated/part.js:2080 templates/js/translated/part.js:2506 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2200 +#: templates/js/translated/part.js:2201 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2205 +#: templates/js/translated/part.js:2206 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2235 +#: templates/js/translated/part.js:2236 msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2286 +#: templates/js/translated/part.js:2287 msgid "part" msgstr "" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2288 msgid "parts" msgstr "" -#: templates/js/translated/part.js:2383 +#: templates/js/translated/part.js:2384 msgid "No category" msgstr "" -#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2546 +#: templates/js/translated/part.js:2547 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2644 +#: templates/js/translated/part.js:2645 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2760 +#: templates/js/translated/part.js:2761 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2776 +#: templates/js/translated/part.js:2777 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2865 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2887 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/part.js:2938 templates/js/translated/stock.js:1457 #: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2940 +#: templates/js/translated/part.js:2942 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2956 +#: templates/js/translated/part.js:2958 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2970 +#: templates/js/translated/part.js:2972 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3051 templates/js/translated/part.js:3052 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3052 +#: templates/js/translated/part.js:3054 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3058 +#: templates/js/translated/part.js:3060 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3108 +#: templates/js/translated/part.js:3110 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3114 +#: templates/js/translated/part.js:3116 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3210 +#: templates/js/translated/part.js:3212 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3226 +#: templates/js/translated/part.js:3228 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3271 +#: templates/js/translated/part.js:3273 msgid "Minimum Stock Level" msgstr "" @@ -13244,10 +13328,6 @@ msgstr "" 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 "" @@ -13416,7 +13496,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:401 +#: templates/js/translated/stock.js:1042 users/models.py:392 msgid "Add" msgstr "" @@ -14307,34 +14387,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:384 +#: users/models.py:375 msgid "Permission set" msgstr "Nastavení oprávnění" -#: users/models.py:393 +#: users/models.py:384 msgid "Group" msgstr "Skupina" -#: users/models.py:397 +#: users/models.py:388 msgid "View" msgstr "Zobrazit" -#: users/models.py:397 +#: users/models.py:388 msgid "Permission to view items" msgstr "Oprávnění k zobrazení položek" -#: users/models.py:401 +#: users/models.py:392 msgid "Permission to add items" msgstr "Oprávnění přidat položky" -#: users/models.py:405 +#: users/models.py:396 msgid "Change" msgstr "Změnit" -#: users/models.py:407 +#: users/models.py:398 msgid "Permissions to edit items" msgstr "Oprávnění k úpravě položek" -#: users/models.py:413 +#: users/models.py:404 msgid "Permission to delete items" msgstr "Oprávnění k odstranění položek" + diff --git a/src/backend/InvenTree/locale/da/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/da/LC_MESSAGES/django.po index 9938f22e73..f0e0c110ea 100644 --- a/src/backend/InvenTree/locale/da/LC_MESSAGES/django.po +++ b/src/backend/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-05-31 07:08+0000\n" -"PO-Revision-Date: 2024-05-27 11:54\n" +"POT-Creation-Date: 2024-06-26 03:18+0000\n" +"PO-Revision-Date: 2024-06-26 06:04\n" "Last-Translator: \n" "Language-Team: Danish\n" "Language: da_DK\n" @@ -21,7 +21,7 @@ msgstr "" msgid "API endpoint not found" msgstr "API endpoint ikke fundet" -#: InvenTree/api.py:536 +#: InvenTree/api.py:520 msgid "User does not have permission to view this model" msgstr "Bruger har ikke tilladelse til at se denne model" @@ -52,25 +52,25 @@ msgstr "Ugyldigt antal angivet ({exc})" msgid "Error details can be found in the admin panel" msgstr "Fejloplysninger kan findes i admin panelet" -#: InvenTree/fields.py:139 +#: InvenTree/fields.py:136 msgid "Enter date" msgstr "Angiv dato" -#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 -#: build/serializers.py:531 build/templates/build/sidebar.html:21 -#: company/models.py:849 company/templates/company/sidebar.html:37 -#: order/models.py:1332 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:205 InvenTree/models.py:918 build/serializers.py:452 +#: build/serializers.py:530 build/templates/build/sidebar.html:21 +#: company/models.py:817 company/templates/company/sidebar.html:37 +#: order/models.py:1296 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:3218 part/templates/part/part_sidebar.html:63 +#: part/models.py:3183 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_report.html:172 -#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 -#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 -#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 -#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:230 stock/models.py:2309 stock/models.py:2431 +#: stock/serializers.py:632 stock/serializers.py:790 stock/serializers.py:886 +#: stock/serializers.py:936 stock/serializers.py:1239 stock/serializers.py:1328 +#: stock/serializers.py:1493 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1080 +#: templates/js/translated/part.js:1081 #: templates/js/translated/purchase_order.js:2200 #: templates/js/translated/return_order.js:775 #: templates/js/translated/sales_order.js:1103 @@ -120,15 +120,15 @@ msgstr "Bekræftelse af e-mailadresse" msgid "You must type the same email each time." msgstr "Du skal indtaste den samme e-mail hver gang." -#: InvenTree/forms.py:253 InvenTree/forms.py:261 +#: InvenTree/forms.py:248 InvenTree/forms.py:256 msgid "The provided primary email address is not valid." msgstr "Den indtastede email adresse er ikke gyldig." -#: InvenTree/forms.py:268 +#: InvenTree/forms.py:263 msgid "The provided email domain is not approved." msgstr "Det angivne e-mail domæne er ikke godkendt." -#: InvenTree/forms.py:395 +#: InvenTree/forms.py:390 msgid "Registration is disabled." msgstr "Registrering er deaktiveret." @@ -171,35 +171,35 @@ msgstr "" msgid "Remove HTML tags from this value" msgstr "Fjern HTML-tags fra denne værdi" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Connection error" msgstr "Forbindelsesfejl" -#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 msgid "Server responded with invalid status code" msgstr "Serveren svarede med ugyldig statuskode" -#: InvenTree/helpers_model.py:158 +#: InvenTree/helpers_model.py:148 msgid "Exception occurred" msgstr "Der opstod en fejl" -#: InvenTree/helpers_model.py:168 +#: InvenTree/helpers_model.py:158 msgid "Server responded with invalid Content-Length value" msgstr "Serveren svarede med ugyldig Content-Length værdi" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:161 msgid "Image size is too large" msgstr "Billedstørrelsen er for stor" -#: InvenTree/helpers_model.py:183 +#: InvenTree/helpers_model.py:173 msgid "Image download exceeded maximum size" msgstr "Billeddownload overskred maksimumstørrelsen" -#: InvenTree/helpers_model.py:188 +#: InvenTree/helpers_model.py:178 msgid "Remote server returned empty response" msgstr "Fjernserver returnerede tomt svar" -#: InvenTree/helpers_model.py:196 +#: InvenTree/helpers_model.py:186 msgid "Supplied URL is not a valid image file" msgstr "Angivet URL er ikke en gyldig billedfil" @@ -296,46 +296,50 @@ msgid "Portuguese (Brazilian)" msgstr "Portugisisk (Brasilien)" #: InvenTree/locales.py:41 +msgid "Romanian" +msgstr "" + +#: InvenTree/locales.py:42 msgid "Russian" msgstr "Russisk" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:43 msgid "Slovak" msgstr "" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:44 msgid "Slovenian" msgstr "Slovensk" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:45 msgid "Serbian" msgstr "Serbisk" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:46 msgid "Swedish" msgstr "Svensk" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:47 msgid "Thai" msgstr "Thailandsk" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:48 msgid "Turkish" msgstr "Tyrkisk" -#: InvenTree/locales.py:48 +#: InvenTree/locales.py:49 msgid "Ukrainian" msgstr "" -#: InvenTree/locales.py:49 +#: InvenTree/locales.py:50 msgid "Vietnamese" msgstr "Vietnamesisk" -#: InvenTree/locales.py:50 +#: InvenTree/locales.py:51 msgid "Chinese (Simplified)" msgstr "Kinesisk (forenklet)" -#: InvenTree/locales.py:51 +#: InvenTree/locales.py:52 msgid "Chinese (Traditional)" msgstr "Kinesisk (traditionelt)" @@ -344,153 +348,65 @@ msgstr "Kinesisk (traditionelt)" msgid "[{site_name}] Log in to the app" msgstr "" -#: InvenTree/magic_login.py:38 company/models.py:133 +#: InvenTree/magic_login.py:38 company/models.py:136 #: company/templates/company/company_base.html:138 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:677 msgid "Email" msgstr "E-mail" -#: InvenTree/models.py:107 +#: InvenTree/models.py:105 msgid "Error running plugin validation" msgstr "" -#: InvenTree/models.py:176 +#: InvenTree/models.py:174 msgid "Metadata must be a python dict object" msgstr "Metadata skal være et python dict objekt" -#: InvenTree/models.py:182 +#: InvenTree/models.py:180 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:183 +#: InvenTree/models.py:181 msgid "JSON metadata field, for use by external plugins" msgstr "JSON metadata felt, til brug af eksterne plugins" -#: InvenTree/models.py:413 +#: InvenTree/models.py:408 msgid "Improperly formatted pattern" msgstr "Forkert formateret mønster" -#: InvenTree/models.py:420 +#: InvenTree/models.py:415 msgid "Unknown format key specified" msgstr "Ukendt formatnøgle angivet" -#: InvenTree/models.py:426 +#: InvenTree/models.py:421 msgid "Missing required format key" msgstr "Mangler nødvendig formatnøgle" -#: InvenTree/models.py:437 +#: InvenTree/models.py:432 msgid "Reference field cannot be empty" msgstr "Referencefelt må ikke være tomt" -#: InvenTree/models.py:445 +#: InvenTree/models.py:440 msgid "Reference must match required pattern" msgstr "Reference skal matche det påkrævede mønster" -#: InvenTree/models.py:476 +#: InvenTree/models.py:471 msgid "Reference number is too large" msgstr "Referencenummer er for stort" -#: InvenTree/models.py:550 -msgid "Missing file" -msgstr "Manglende fil" - -#: InvenTree/models.py:551 -msgid "Missing external link" -msgstr "Manglende eksternt link" - -#: InvenTree/models.py:572 stock/models.py:2437 -#: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:326 -msgid "Attachment" -msgstr "Vedhæftning" - -#: InvenTree/models.py:573 -msgid "Select file to attach" -msgstr "Vælg fil, der skal vedhæftes" - -#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:831 -#: order/models.py:303 order/models.py:1337 order/models.py:1753 -#: part/admin.py:55 part/models.py:962 -#: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_report.html:164 -#: stock/admin.py:225 templates/js/translated/company.js:1319 -#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2455 -#: templates/js/translated/purchase_order.js:2040 -#: templates/js/translated/purchase_order.js:2204 -#: templates/js/translated/return_order.js:779 -#: templates/js/translated/sales_order.js:1092 -#: templates/js/translated/sales_order.js:2023 -msgid "Link" -msgstr "" - -#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 -#: stock/models.py:836 -msgid "Link to external URL" -msgstr "Link til ekstern URL" - -#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:341 -msgid "Comment" -msgstr "Kommentar" - -#: InvenTree/models.py:589 -msgid "File comment" -msgstr "Fil kommentar" - -#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 -#: common/models.py:2518 common/models.py:2742 common/models.py:2743 -#: common/models.py:2988 common/models.py:2989 part/models.py:3228 -#: part/models.py:3315 part/models.py:3408 part/models.py:3436 -#: plugin/models.py:259 plugin/models.py:260 -#: report/templates/report/inventree_test_report.html:105 -#: templates/js/translated/stock.js:3036 users/models.py:111 -msgid "User" -msgstr "Bruger" - -#: InvenTree/models.py:602 -msgid "upload date" -msgstr "dato for upload" - -#: InvenTree/models.py:624 -msgid "Filename must not be empty" -msgstr "Filnavn må ikke være tomt" - -#: InvenTree/models.py:635 -msgid "Invalid attachment directory" -msgstr "Ugyldig vedhæftningsmappe" - -#: InvenTree/models.py:665 -#, python-brace-format -msgid "Filename contains illegal character '{c}'" -msgstr "Filnavn indeholder ugyldigt tegn '{c}'" - -#: InvenTree/models.py:668 -msgid "Filename missing extension" -msgstr "Filnavn mangler filtype" - -#: InvenTree/models.py:677 -msgid "Attachment with this filename already exists" -msgstr "Vedhæftning med dette filnavn findes allerede" - -#: InvenTree/models.py:684 -msgid "Error renaming file" -msgstr "Fejl ved omdøbning af fil" - -#: InvenTree/models.py:860 +#: InvenTree/models.py:719 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:877 +#: InvenTree/models.py:736 msgid "Invalid choice" msgstr "Ugyldigt valg" -#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 -#: common/serializers.py:403 company/models.py:614 machine/models.py:24 -#: part/models.py:898 part/models.py:3659 plugin/models.py:50 -#: report/models.py:149 stock/models.py:72 +#: InvenTree/models.py:766 common/models.py:2623 common/models.py:3036 +#: common/serializers.py:408 company/models.py:580 machine/models.py:24 +#: part/models.py:891 part/models.py:3639 plugin/models.py:51 +#: report/models.py:150 stock/models.py:73 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:83 @@ -501,25 +417,25 @@ msgstr "Ugyldigt valg" #: templates/js/translated/company.js:724 #: templates/js/translated/company.js:913 #: templates/js/translated/company.js:1165 -#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 -#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1187 +#: templates/js/translated/part.js:1475 templates/js/translated/part.js:1611 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Navn" -#: InvenTree/models.py:913 build/models.py:218 -#: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:523 company/models.py:840 +#: InvenTree/models.py:772 build/models.py:220 +#: build/templates/build/detail.html:24 common/models.py:138 +#: company/models.py:509 company/models.py:808 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 order/models.py:289 -#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 -#: part/models.py:3674 part/templates/part/category.html:82 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:914 +#: part/models.py:3654 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:155 -#: report/models.py:509 report/models.py:535 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 #: report/templates/report/inventree_build_order_report.html:117 -#: stock/admin.py:55 stock/models.py:78 stock/templates/stock/location.html:125 +#: stock/admin.py:54 stock/models.py:79 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 @@ -528,10 +444,10 @@ msgstr "Navn" #: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 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:2354 -#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1239 +#: templates/js/translated/part.js:1484 templates/js/translated/part.js:1622 +#: templates/js/translated/part.js:1959 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2897 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1706 #: templates/js/translated/purchase_order.js:1849 @@ -544,149 +460,141 @@ msgstr "Navn" msgid "Description" msgstr "Beskrivelse" -#: InvenTree/models.py:914 stock/models.py:79 +#: InvenTree/models.py:773 stock/models.py:80 msgid "Description (optional)" msgstr "Beskrivelse (valgfri)" -#: InvenTree/models.py:923 -msgid "parent" -msgstr "overordnet" - -#: InvenTree/models.py:929 templates/js/translated/part.js:2793 +#: InvenTree/models.py:788 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Sti" -#: InvenTree/models.py:1035 +#: InvenTree/models.py:918 msgid "Markdown notes (optional)" msgstr "Markdown noter (valgfri)" -#: InvenTree/models.py:1064 +#: InvenTree/models.py:947 msgid "Barcode Data" msgstr "Stregkode Data" -#: InvenTree/models.py:1065 +#: InvenTree/models.py:948 msgid "Third party barcode data" msgstr "Tredjeparts stregkode data" -#: InvenTree/models.py:1071 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "Stregkode Hash" -#: InvenTree/models.py:1072 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "Unik hash af stregkode data" -#: InvenTree/models.py:1125 +#: InvenTree/models.py:1008 msgid "Existing barcode found" msgstr "Eksisterende stregkode fundet" -#: InvenTree/models.py:1168 +#: InvenTree/models.py:1051 msgid "Server Error" msgstr "Serverfejl" -#: InvenTree/models.py:1169 +#: InvenTree/models.py:1052 msgid "An error has been logged by the server." msgstr "En fejl blev logget af serveren." -#: InvenTree/serializers.py:62 part/models.py:4212 +#: InvenTree/serializers.py:63 part/models.py:4192 msgid "Must be a valid number" msgstr "Skal være et gyldigt tal" -#: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:3036 +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3001 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Valuta" -#: InvenTree/serializers.py:102 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "Vælg valuta fra tilgængelige muligheder" -#: InvenTree/serializers.py:441 +#: InvenTree/serializers.py:442 msgid "You do not have permission to change this user role." msgstr "Du har ikke tilladelse til at ændre denne brugerrolle." -#: InvenTree/serializers.py:453 +#: InvenTree/serializers.py:454 msgid "Only superusers can create new users" msgstr "Kun superbrugere kan oprette nye brugere" -#: InvenTree/serializers.py:472 +#: InvenTree/serializers.py:473 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:474 +#: InvenTree/serializers.py:475 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:481 +#: InvenTree/serializers.py:482 msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:542 -msgid "Filename" -msgstr "Filnavn" - -#: InvenTree/serializers.py:576 +#: InvenTree/serializers.py:540 msgid "Invalid value" msgstr "Ugyldig værdi" -#: InvenTree/serializers.py:596 +#: InvenTree/serializers.py:560 msgid "Data File" msgstr "Datafil" -#: InvenTree/serializers.py:597 +#: InvenTree/serializers.py:561 msgid "Select data file for upload" msgstr "Vælg datafilen til upload" -#: InvenTree/serializers.py:614 +#: InvenTree/serializers.py:578 msgid "Unsupported file type" msgstr "Filtype ikke understøttet" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:584 msgid "File is too large" msgstr "Filen er for stor" -#: InvenTree/serializers.py:641 +#: InvenTree/serializers.py:605 msgid "No columns found in file" msgstr "Ingen kolonner fundet i fil" -#: InvenTree/serializers.py:644 +#: InvenTree/serializers.py:608 msgid "No data rows found in file" msgstr "Ingen datarækker fundet i fil" -#: InvenTree/serializers.py:757 +#: InvenTree/serializers.py:721 msgid "No data rows provided" msgstr "Ingen data-rækker angivet" -#: InvenTree/serializers.py:760 +#: InvenTree/serializers.py:724 msgid "No data columns supplied" msgstr "Ingen data-kolonner angivet" -#: InvenTree/serializers.py:827 +#: InvenTree/serializers.py:791 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Mangler påkrævet kolonne: '{name}'" -#: InvenTree/serializers.py:836 +#: InvenTree/serializers.py:800 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Duplikeret kolonne: '{col}'" -#: InvenTree/serializers.py:859 +#: InvenTree/serializers.py:840 msgid "Remote Image" msgstr "Eksternt billede" -#: InvenTree/serializers.py:860 +#: InvenTree/serializers.py:841 msgid "URL of remote image file" msgstr "URL til ekstern billedfil" -#: InvenTree/serializers.py:878 +#: InvenTree/serializers.py:859 msgid "Downloading images from remote URL is not enabled" msgstr "Download af billeder fra ekstern URL er ikke aktiveret" -#: InvenTree/status.py:66 part/serializers.py:1178 +#: InvenTree/status.py:66 part/serializers.py:1174 msgid "Background worker check failed" msgstr "Kontrol af baggrundstjeneste mislykkedes" @@ -698,27 +606,27 @@ msgstr "E-mail backend ej konfigureret" msgid "InvenTree system health checks failed" msgstr "Helbredstjek af InvenTree system mislykkedes" -#: InvenTree/templatetags/inventree_extras.py:183 +#: InvenTree/templatetags/inventree_extras.py:184 msgid "Unknown database" msgstr "Ukendt database" -#: InvenTree/validators.py:31 InvenTree/validators.py:33 +#: InvenTree/validators.py:32 InvenTree/validators.py:34 msgid "Invalid physical unit" msgstr "Ugyldig fysisk enhed" -#: InvenTree/validators.py:39 +#: InvenTree/validators.py:40 msgid "Not a valid currency code" msgstr "Ikke en gyldig valutakode" -#: InvenTree/validators.py:121 InvenTree/validators.py:137 +#: InvenTree/validators.py:118 InvenTree/validators.py:134 msgid "Overage value must not be negative" msgstr "Overskud må ikke være negativ" -#: InvenTree/validators.py:139 +#: InvenTree/validators.py:136 msgid "Overage must not exceed 100%" msgstr "Overskuddet må ikke overstige 100%" -#: InvenTree/validators.py:145 +#: InvenTree/validators.py:142 msgid "Invalid value for overage" msgstr "Ugyldig værdi for overskud" @@ -750,14 +658,14 @@ 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:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: build/api.py:299 part/models.py:4070 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "Forbrugsvare" -#: build/api.py:300 part/models.py:4084 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4064 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2529 #: templates/js/translated/table_filters.js:186 @@ -778,30 +686,30 @@ msgstr "Sporet" msgid "Allocated" msgstr "Allokeret" -#: build/api.py:311 company/models.py:904 company/serializers.py:383 +#: build/api.py:311 company/models.py:872 company/serializers.py:359 #: 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:2561 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:234 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 -#: templates/js/translated/part.js:699 +#: templates/js/translated/part.js:693 templates/js/translated/part.js:695 +#: templates/js/translated/part.js:700 #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:575 msgid "Available" msgstr "Tilgængelig" -#: build/models.py:83 build/templates/build/build_base.html:9 +#: build/models.py:85 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_report.html:105 -#: stock/serializers.py:83 templates/email/build_order_completed.html:16 +#: stock/serializers.py:82 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:2892 msgid "Build Order" msgstr "Produktionsordre" -#: build/models.py:84 build/templates/build/build_base.html:13 +#: build/models.py:86 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 @@ -812,25 +720,25 @@ msgstr "Produktionsordre" msgid "Build Orders" msgstr "Produktionsordrer" -#: build/models.py:131 +#: build/models.py:133 msgid "Invalid choice for parent build" msgstr "Ugyldigt valg for overordnet produktion" -#: build/models.py:142 order/models.py:240 +#: build/models.py:144 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "" -#: build/models.py:148 +#: build/models.py:150 msgid "Build order part cannot be changed" msgstr "Byggeordre enhed kan ikke ændres" -#: build/models.py:209 +#: build/models.py:211 msgid "Build Order Reference" msgstr "Produktionsordre reference" -#: build/models.py:210 order/models.py:463 order/models.py:928 -#: order/models.py:1325 order/models.py:2056 part/admin.py:419 -#: part/models.py:4105 part/templates/part/upload_bom.html:54 +#: build/models.py:212 order/models.py:463 order/models.py:926 +#: order/models.py:1289 order/models.py:2020 part/admin.py:411 +#: part/models.py:4085 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_purchase_order_report.html:28 #: report/templates/report/inventree_return_order_report.html:26 @@ -844,27 +752,27 @@ msgstr "Produktionsordre reference" msgid "Reference" msgstr "" -#: build/models.py:221 +#: build/models.py:223 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:229 build/templates/build/build_base.html:183 +#: build/models.py:231 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Overordnet produktion" -#: build/models.py:230 +#: build/models.py:232 msgid "BuildOrder to which this build is allocated" msgstr "Produktionsordre som er tildelt denne produktion" -#: build/models.py:235 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 -#: order/models.py:1450 order/models.py:1595 order/models.py:1596 -#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 -#: part/models.py:3191 part/models.py:3335 part/models.py:3358 -#: part/models.py:3379 part/models.py:3401 part/models.py:3511 -#: part/models.py:3807 part/models.py:3963 part/models.py:4056 -#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 +#: build/models.py:237 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1026 order/api.py:805 +#: order/models.py:1414 order/models.py:1559 order/models.py:1560 +#: part/api.py:1494 part/api.py:1788 part/models.py:395 part/models.py:3012 +#: part/models.py:3156 part/models.py:3303 part/models.py:3324 +#: part/models.py:3346 part/models.py:3477 part/models.py:3787 +#: part/models.py:3943 part/models.py:4036 part/models.py:4395 +#: part/serializers.py:1120 part/serializers.py:1726 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -875,8 +783,8 @@ msgstr "Produktionsordre som er tildelt denne produktion" #: report/templates/report/inventree_return_order_report.html:24 #: report/templates/report/inventree_sales_order_report.html:27 #: report/templates/report/inventree_stock_location_report.html:102 -#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 -#: stock/serializers.py:818 templates/InvenTree/search.html:82 +#: stock/serializers.py:109 stock/serializers.py:157 stock/serializers.py:423 +#: stock/serializers.py:820 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 @@ -889,8 +797,8 @@ msgstr "Produktionsordre som er tildelt denne produktion" #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 -#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2323 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:1944 templates/js/translated/part.js:2016 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 #: templates/js/translated/purchase_order.js:751 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1848 @@ -908,107 +816,107 @@ msgstr "Produktionsordre som er tildelt denne produktion" msgid "Part" msgstr "Del" -#: build/models.py:243 +#: build/models.py:245 msgid "Select part to build" msgstr "Vælg dele til produktion" -#: build/models.py:248 +#: build/models.py:250 msgid "Sales Order Reference" msgstr "Salgsordrereference" -#: build/models.py:252 +#: build/models.py:254 msgid "SalesOrder to which this build is allocated" msgstr "Salgsordre, som er tildelt denne produktion" -#: build/models.py:257 build/serializers.py:1000 +#: build/models.py:259 build/serializers.py:999 #: templates/js/translated/build.js:1731 #: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "Kilde Lokation" -#: build/models.py:261 +#: build/models.py:263 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:266 +#: build/models.py:268 msgid "Destination Location" msgstr "Destinations Placering" -#: build/models.py:270 +#: build/models.py:272 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:274 +#: build/models.py:276 msgid "Build Quantity" msgstr "Produktions antal" -#: build/models.py:277 +#: build/models.py:279 msgid "Number of stock items to build" msgstr "Antal lagervarer som skal produceres" -#: build/models.py:281 +#: build/models.py:283 msgid "Completed items" msgstr "Afsluttede elementer" -#: build/models.py:283 +#: build/models.py:285 msgid "Number of stock items which have been completed" msgstr "Antal lagervarer som er færdiggjort" -#: build/models.py:287 +#: build/models.py:289 msgid "Build Status" msgstr "Produktions Status" -#: build/models.py:291 +#: build/models.py:293 msgid "Build status code" msgstr "Produktions statuskode" -#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 -#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 +#: build/models.py:302 build/serializers.py:286 order/serializers.py:580 +#: stock/models.py:838 stock/serializers.py:74 stock/serializers.py:1458 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Batch Kode" -#: build/models.py:304 build/serializers.py:288 +#: build/models.py:306 build/serializers.py:287 msgid "Batch code for this build output" msgstr "Batch kode til dette produktions output" -#: build/models.py:307 order/models.py:316 order/serializers.py:120 -#: part/models.py:1122 part/templates/part/part_base.html:310 +#: build/models.py:309 order/models.py:316 order/serializers.py:119 +#: part/models.py:1115 part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:338 #: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "Oprettelsesdato" -#: build/models.py:311 +#: build/models.py:313 msgid "Target completion date" msgstr "Projekteret afslutningsdato" -#: build/models.py:312 +#: build/models.py:314 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:315 order/models.py:521 order/models.py:2101 +#: build/models.py:317 order/models.py:521 order/models.py:2065 #: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "Dato for afslutning" -#: build/models.py:321 +#: build/models.py:323 msgid "completed by" msgstr "udført af" -#: build/models.py:329 templates/js/translated/build.js:2207 +#: build/models.py:331 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "Udstedt af" -#: build/models.py:330 +#: build/models.py:332 msgid "User who issued this build order" msgstr "Bruger som udstedte denne byggeordre" -#: build/models.py:338 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:145 +#: build/models.py:340 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:147 #: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:232 part/models.py:1139 +#: order/templates/order/sales_order_base.html:232 part/models.py:1132 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_report.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 @@ -1019,31 +927,36 @@ msgstr "Bruger som udstedte denne byggeordre" msgid "Responsible" msgstr "Ansvarlig" -#: build/models.py:339 +#: build/models.py:341 msgid "User or group responsible for this build order" msgstr "Bruger eller gruppe ansvarlig for denne byggeordre" -#: build/models.py:344 build/templates/build/detail.html:108 +#: build/models.py:346 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:184 -#: part/templates/part/part_base.html:383 stock/models.py:836 +#: part/templates/part/part_base.html:383 stock/models.py:834 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "Ekstern link" -#: build/models.py:349 +#: build/models.py:347 common/models.py:3178 part/models.py:956 +#: stock/models.py:834 +msgid "Link to external URL" +msgstr "Link til ekstern URL" + +#: build/models.py:351 msgid "Build Priority" msgstr "Bygge Prioritet" -#: build/models.py:352 +#: build/models.py:354 msgid "Priority of this build order" msgstr "Prioritet af denne byggeordre" -#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: build/models.py:361 common/models.py:131 order/admin.py:18 #: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 #: templates/js/translated/build.js:2144 #: templates/js/translated/purchase_order.js:1710 @@ -1054,65 +967,65 @@ msgstr "Prioritet af denne byggeordre" msgid "Project Code" msgstr "" -#: build/models.py:360 +#: build/models.py:362 msgid "Project code for this build order" msgstr "" -#: build/models.py:593 build/models.py:658 +#: build/models.py:595 build/models.py:660 msgid "Failed to offload task to complete build allocations" msgstr "" -#: build/models.py:615 +#: build/models.py:617 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Bygningsordre {build} er fuldført" -#: build/models.py:621 +#: build/models.py:623 msgid "A build order has been completed" msgstr "En byggeordre er fuldført" -#: build/models.py:847 build/models.py:932 +#: build/models.py:849 build/models.py:934 msgid "No build output specified" msgstr "" -#: build/models.py:850 +#: build/models.py:852 msgid "Build output is already completed" msgstr "" -#: build/models.py:853 +#: build/models.py:855 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 -#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 -#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 -#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 +#: build/models.py:938 build/serializers.py:219 build/serializers.py:268 +#: build/serializers.py:866 order/models.py:559 order/serializers.py:432 +#: order/serializers.py:575 part/serializers.py:1484 part/serializers.py:1884 +#: stock/models.py:677 stock/models.py:1495 stock/serializers.py:603 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:941 build/serializers.py:225 +#: build/models.py:943 build/serializers.py:224 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1001 build/serializers.py:548 +#: build/models.py:1003 build/serializers.py:547 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1352 +#: build/models.py:1344 msgid "Build Order Line Item" msgstr "" -#: build/models.py:1377 +#: build/models.py:1369 msgid "Build object" msgstr "" -#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 -#: build/serializers.py:254 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2539 -#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 -#: part/forms.py:48 part/models.py:3205 part/models.py:4078 +#: build/models.py:1383 build/models.py:1639 build/serializers.py:206 +#: build/serializers.py:253 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2509 +#: order/models.py:1272 order/models.py:1931 order/serializers.py:1327 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3170 part/models.py:4058 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1121,8 +1034,8 @@ msgstr "" #: report/templates/report/inventree_sales_order_report.html:29 #: report/templates/report/inventree_stock_location_report.html:104 #: report/templates/report/inventree_test_report.html:90 -#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 -#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:125 stock/serializers.py:165 stock/serializers.py:594 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1133,8 +1046,8 @@ msgstr "" #: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 #: templates/js/translated/model_renderers.js:236 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:962 +#: templates/js/translated/part.js:1812 templates/js/translated/part.js:3342 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1154,38 +1067,38 @@ msgstr "" msgid "Quantity" msgstr "" -#: build/models.py:1392 +#: build/models.py:1384 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1472 +#: build/models.py:1464 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1481 +#: build/models.py:1473 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1491 order/models.py:1918 +#: build/models.py:1483 order/models.py:1882 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1497 order/models.py:1921 +#: build/models.py:1489 order/models.py:1885 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1503 +#: build/models.py:1495 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1562 +#: build/models.py:1554 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 -#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 -#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: build/models.py:1626 build/serializers.py:846 order/serializers.py:1171 +#: order/serializers.py:1192 stock/models.py:358 stock/serializers.py:91 +#: stock/serializers.py:697 stock/serializers.py:1177 stock/serializers.py:1289 #: stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 @@ -1201,70 +1114,70 @@ msgstr "" msgid "Stock Item" msgstr "" -#: build/models.py:1635 +#: build/models.py:1627 msgid "Source stock item" msgstr "" -#: build/models.py:1648 +#: build/models.py:1640 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1656 +#: build/models.py:1648 msgid "Install into" msgstr "" -#: build/models.py:1657 +#: build/models.py:1649 msgid "Destination stock item" msgstr "" -#: build/serializers.py:157 build/serializers.py:876 +#: build/serializers.py:156 build/serializers.py:875 #: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "" -#: build/serializers.py:169 +#: build/serializers.py:168 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:173 +#: build/serializers.py:172 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:177 +#: build/serializers.py:176 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:188 +#: build/serializers.py:187 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:208 build/serializers.py:255 +#: build/serializers.py:207 build/serializers.py:254 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:276 +#: build/serializers.py:275 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:279 +#: build/serializers.py:278 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:294 order/serializers.py:589 order/serializers.py:1343 -#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:293 order/serializers.py:588 order/serializers.py:1331 +#: stock/serializers.py:614 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:295 +#: build/serializers.py:294 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 -#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 -#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 -#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 -#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 +#: build/serializers.py:299 build/serializers.py:440 build/serializers.py:512 +#: order/serializers.py:564 order/serializers.py:672 order/serializers.py:1656 +#: part/serializers.py:1140 stock/serializers.py:100 stock/serializers.py:625 +#: stock/serializers.py:785 stock/serializers.py:881 stock/serializers.py:1321 +#: stock/serializers.py:1577 stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:1001 #: templates/js/translated/build.js:2372 @@ -1280,54 +1193,54 @@ msgstr "" msgid "Location" msgstr "" -#: build/serializers.py:301 +#: build/serializers.py:300 msgid "Stock location for build output" msgstr "" -#: build/serializers.py:315 +#: build/serializers.py:314 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:316 +#: build/serializers.py:315 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:331 +#: build/serializers.py:330 msgid "Serial numbers must be provided for trackable parts" msgstr "" -#: build/serializers.py:356 stock/api.py:1031 +#: build/serializers.py:355 stock/api.py:1041 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:403 build/serializers.py:465 build/serializers.py:554 +#: build/serializers.py:402 build/serializers.py:464 build/serializers.py:553 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:442 +#: build/serializers.py:441 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:448 +#: build/serializers.py:447 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:449 +#: build/serializers.py:448 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:454 +#: build/serializers.py:453 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:514 +#: build/serializers.py:513 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:520 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:952 -#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 -#: stock/serializers.py:930 stock/serializers.py:1469 +#: build/serializers.py:519 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2044 order/serializers.py:596 stock/admin.py:164 +#: stock/serializers.py:932 stock/serializers.py:1465 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 @@ -1339,188 +1252,188 @@ msgstr "" msgid "Status" msgstr "" -#: build/serializers.py:526 +#: build/serializers.py:525 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:527 +#: build/serializers.py:526 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:611 msgid "Consume Allocated Stock" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:612 msgid "Consume any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:619 +#: build/serializers.py:618 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:620 +#: build/serializers.py:619 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:646 msgid "Not permitted" msgstr "Ikke tilladt" -#: build/serializers.py:648 +#: build/serializers.py:647 msgid "Accept as consumed by this build order" msgstr "Accepter som forbrugt af denne byggeordre" -#: build/serializers.py:649 +#: build/serializers.py:648 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:679 +#: build/serializers.py:678 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:681 +#: build/serializers.py:680 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:691 +#: build/serializers.py:690 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:696 +#: build/serializers.py:695 msgid "Accept Unallocated" msgstr "Accepter Ikke tildelt" -#: build/serializers.py:697 +#: build/serializers.py:696 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:707 templates/js/translated/build.js:315 +#: build/serializers.py:706 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:712 order/serializers.py:301 order/serializers.py:1246 +#: build/serializers.py:711 order/serializers.py:300 order/serializers.py:1234 msgid "Accept Incomplete" msgstr "Accepter ufuldført" -#: build/serializers.py:713 +#: build/serializers.py:712 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:723 templates/js/translated/build.js:319 +#: build/serializers.py:722 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:732 templates/js/translated/build.js:303 +#: build/serializers.py:731 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:770 +#: build/serializers.py:769 msgid "Build Line" msgstr "Bygge linje" -#: build/serializers.py:780 +#: build/serializers.py:779 msgid "Build output" msgstr "" -#: build/serializers.py:788 +#: build/serializers.py:787 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:824 +#: build/serializers.py:823 msgid "Build Line Item" msgstr "" -#: build/serializers.py:838 +#: build/serializers.py:837 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:853 stock/serializers.py:1194 +#: build/serializers.py:852 stock/serializers.py:1190 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:901 order/serializers.py:1237 +#: build/serializers.py:900 order/serializers.py:1225 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:907 +#: build/serializers.py:906 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:914 +#: build/serializers.py:913 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:938 order/serializers.py:1489 +#: build/serializers.py:937 order/serializers.py:1477 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:1001 +#: build/serializers.py:1000 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:1009 +#: build/serializers.py:1008 msgid "Exclude Location" msgstr "" -#: build/serializers.py:1010 +#: build/serializers.py:1009 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:1015 +#: build/serializers.py:1014 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:1016 +#: build/serializers.py:1015 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:1021 +#: build/serializers.py:1020 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:1022 +#: build/serializers.py:1021 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:1027 +#: build/serializers.py:1026 msgid "Optional Items" msgstr "" -#: build/serializers.py:1028 +#: build/serializers.py:1027 msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1050 +#: build/serializers.py:1049 msgid "Failed to start auto-allocation task" msgstr "" -#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 -#: stock/api.py:794 +#: build/serializers.py:1139 part/models.py:3953 part/models.py:4387 +#: stock/api.py:804 msgid "BOM Item" msgstr "" -#: build/serializers.py:1149 templates/js/translated/index.js:130 +#: build/serializers.py:1148 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:832 part/serializers.py:1506 +#: build/serializers.py:1153 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:828 part/serializers.py:1502 #: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 -#: templates/js/translated/build.js:2613 templates/js/translated/part.js:709 -#: templates/js/translated/part.js:2148 +#: templates/js/translated/build.js:2613 templates/js/translated/part.js:710 +#: templates/js/translated/part.js:2149 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1159 part/serializers.py:1508 +#: build/serializers.py:1158 part/serializers.py:1504 #: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 +#: build/serializers.py:1163 part/bom.py:172 part/serializers.py:1527 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1929 msgid "Available Stock" @@ -1544,7 +1457,7 @@ msgstr "Annulleret" #: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 #: order/status_codes.py:44 order/status_codes.py:69 #: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:165 report/models.py:443 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 msgid "Complete" msgstr "Fuldført" @@ -1674,11 +1587,11 @@ msgstr "" #: build/templates/build/build_base.html:160 #: build/templates/build/detail.html:138 order/models.py:309 -#: order/models.py:1343 order/templates/order/order_base.html:186 +#: order/models.py:1307 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:196 #: report/templates/report/inventree_build_order_report.html:125 -#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1831 #: templates/js/translated/purchase_order.js:1739 #: templates/js/translated/purchase_order.js:2147 #: templates/js/translated/return_order.js:346 @@ -1711,8 +1624,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 -#: order/models.py:1587 order/models.py:1701 order/models.py:1855 +#: build/templates/build/detail.html:101 order/api.py:1463 order/models.py:845 +#: order/models.py:1551 order/models.py:1665 order/models.py:1819 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_report.html:135 @@ -1762,7 +1675,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1479 +#: build/templates/build/detail.html:49 order/models.py:1443 #: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "" @@ -1775,7 +1688,7 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:163 +#: build/templates/build/detail.html:80 stock/admin.py:162 #: stock/templates/stock/item_base.html:162 #: templates/js/translated/build.js:1380 #: templates/js/translated/model_renderers.js:241 @@ -1894,11 +1807,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:436 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -1914,6 +1827,34 @@ msgstr "" msgid "Incomplete Outputs" msgstr "" +#: common/api.py:689 +msgid "Is Link" +msgstr "" + +#: common/api.py:697 +msgid "Is File" +msgstr "" + +#: common/api.py:739 +msgid "User does not have permission to delete this attachment" +msgstr "" + +#: common/currency.py:130 +msgid "Invalid currency code" +msgstr "" + +#: common/currency.py:132 +msgid "Duplicate currency code" +msgstr "" + +#: common/currency.py:137 +msgid "No valid currency codes provided" +msgstr "" + +#: common/currency.py:154 +msgid "No plugin" +msgstr "" + #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1952,1509 +1893,1512 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:71 +#: common/models.py:73 msgid "Updated" msgstr "" -#: common/models.py:72 +#: common/models.py:74 msgid "Timestamp of last update" msgstr "" -#: common/models.py:105 +#: common/models.py:107 msgid "Site URL is locked by configuration" msgstr "" -#: common/models.py:130 +#: common/models.py:132 msgid "Unique project code" msgstr "" -#: common/models.py:137 +#: common/models.py:139 msgid "Project description" msgstr "" -#: common/models.py:146 +#: common/models.py:148 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:766 +#: common/models.py:765 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:770 +#: common/models.py:769 msgid "Settings value" msgstr "" -#: common/models.py:822 +#: common/models.py:821 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:838 +#: common/models.py:837 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:846 +#: common/models.py:845 msgid "Value must be an integer value" msgstr "" -#: common/models.py:883 +#: common/models.py:882 msgid "Key string must be unique" msgstr "" -#: common/models.py:1115 +#: common/models.py:1114 msgid "No group" msgstr "" -#: common/models.py:1158 -msgid "An empty domain is not allowed." -msgstr "" - -#: common/models.py:1160 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "" - -#: common/models.py:1172 -msgid "No plugin" -msgstr "" - -#: common/models.py:1260 +#: common/models.py:1213 msgid "Restart required" msgstr "" -#: common/models.py:1262 +#: common/models.py:1215 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1269 +#: common/models.py:1222 msgid "Pending migrations" msgstr "" -#: common/models.py:1270 +#: common/models.py:1223 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1275 +#: common/models.py:1228 msgid "Server Instance Name" msgstr "" -#: common/models.py:1277 +#: common/models.py:1230 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1281 +#: common/models.py:1234 msgid "Use instance name" msgstr "" -#: common/models.py:1282 +#: common/models.py:1235 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1287 +#: common/models.py:1240 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1288 +#: common/models.py:1241 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1293 company/models.py:108 company/models.py:109 +#: common/models.py:1246 company/models.py:111 company/models.py:112 msgid "Company name" msgstr "" -#: common/models.py:1294 +#: common/models.py:1247 msgid "Internal company name" msgstr "" -#: common/models.py:1298 +#: common/models.py:1251 msgid "Base URL" msgstr "" -#: common/models.py:1299 +#: common/models.py:1252 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1305 +#: common/models.py:1258 msgid "Default Currency" msgstr "" -#: common/models.py:1306 +#: common/models.py:1259 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1312 +#: common/models.py:1265 +msgid "Supported Currencies" +msgstr "" + +#: common/models.py:1266 +msgid "List of supported currency codes" +msgstr "" + +#: common/models.py:1272 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1314 +#: common/models.py:1274 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1317 common/models.py:1373 common/models.py:1386 -#: common/models.py:1394 common/models.py:1403 common/models.py:1412 -#: common/models.py:1620 common/models.py:1642 common/models.py:1757 -#: common/models.py:2076 +#: common/models.py:1277 common/models.py:1333 common/models.py:1346 +#: common/models.py:1354 common/models.py:1363 common/models.py:1372 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:2046 msgid "days" msgstr "" -#: common/models.py:1321 +#: common/models.py:1281 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1322 +#: common/models.py:1282 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1327 +#: common/models.py:1287 msgid "Download from URL" msgstr "" -#: common/models.py:1329 +#: common/models.py:1289 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1335 +#: common/models.py:1295 msgid "Download Size Limit" msgstr "" -#: common/models.py:1336 +#: common/models.py:1296 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1342 +#: common/models.py:1302 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1344 +#: common/models.py:1304 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:1349 +#: common/models.py:1309 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1350 +#: common/models.py:1310 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1355 +#: common/models.py:1315 msgid "Require confirm" msgstr "" -#: common/models.py:1356 +#: common/models.py:1316 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1361 +#: common/models.py:1321 msgid "Tree Depth" msgstr "" -#: common/models.py:1363 +#: common/models.py:1323 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1369 +#: common/models.py:1329 msgid "Update Check Interval" msgstr "" -#: common/models.py:1370 +#: common/models.py:1330 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1376 +#: common/models.py:1336 msgid "Automatic Backup" msgstr "" -#: common/models.py:1377 +#: common/models.py:1337 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1382 +#: common/models.py:1342 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1383 +#: common/models.py:1343 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1389 +#: common/models.py:1349 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1391 +#: common/models.py:1351 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1398 +#: common/models.py:1358 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1400 +#: common/models.py:1360 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1407 +#: common/models.py:1367 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1409 +#: common/models.py:1369 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1416 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1376 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1417 +#: common/models.py:1377 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1422 +#: common/models.py:1382 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1423 +#: common/models.py:1383 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1429 +#: common/models.py:1389 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1430 +#: common/models.py:1390 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1435 +#: common/models.py:1395 msgid "Part Revisions" msgstr "" -#: common/models.py:1436 +#: common/models.py:1396 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1441 +#: common/models.py:1401 msgid "Allow Deletion from Assembly" msgstr "" -#: common/models.py:1442 +#: common/models.py:1402 msgid "Allow deletion of parts which are used in an assembly" msgstr "" -#: common/models.py:1447 +#: common/models.py:1407 msgid "IPN Regex" msgstr "" -#: common/models.py:1448 +#: common/models.py:1408 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1451 +#: common/models.py:1411 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1452 +#: common/models.py:1412 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1457 +#: common/models.py:1417 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1458 +#: common/models.py:1418 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1463 +#: common/models.py:1423 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1464 +#: common/models.py:1424 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1469 +#: common/models.py:1429 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1470 +#: common/models.py:1430 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1475 +#: common/models.py:1435 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1476 +#: common/models.py:1436 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1481 +#: common/models.py:1441 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1482 +#: common/models.py:1442 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1487 part/admin.py:108 part/models.py:3815 -#: report/models.py:293 report/models.py:360 report/serializers.py:90 -#: report/serializers.py:131 stock/serializers.py:228 +#: common/models.py:1447 part/admin.py:108 part/models.py:3795 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:227 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1488 +#: common/models.py:1448 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 +#: common/models.py:1453 part/admin.py:91 part/admin.py:425 part/models.py:1052 #: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" msgstr "" -#: common/models.py:1494 +#: common/models.py:1454 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1499 part/admin.py:95 part/models.py:1065 +#: common/models.py:1459 part/admin.py:95 part/models.py:1058 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1500 +#: common/models.py:1460 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1505 part/admin.py:100 part/models.py:1077 +#: common/models.py:1465 part/admin.py:100 part/models.py:1070 msgid "Purchaseable" msgstr "" -#: common/models.py:1506 +#: common/models.py:1466 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1511 part/admin.py:104 part/models.py:1083 +#: common/models.py:1471 part/admin.py:104 part/models.py:1076 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1512 +#: common/models.py:1472 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1517 part/admin.py:113 part/models.py:1071 +#: common/models.py:1477 part/admin.py:113 part/models.py:1064 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" msgstr "" -#: common/models.py:1518 +#: common/models.py:1478 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1523 part/admin.py:117 part/models.py:1093 +#: common/models.py:1483 part/admin.py:117 part/models.py:1086 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" msgstr "" -#: common/models.py:1524 +#: common/models.py:1484 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1529 +#: common/models.py:1489 msgid "Show Import in Views" msgstr "" -#: common/models.py:1530 +#: common/models.py:1490 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1535 +#: common/models.py:1495 msgid "Show related parts" msgstr "" -#: common/models.py:1536 +#: common/models.py:1496 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1541 +#: common/models.py:1501 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1542 +#: common/models.py:1502 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1547 templates/js/translated/part.js:107 +#: common/models.py:1507 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1549 +#: common/models.py:1509 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1555 +#: common/models.py:1515 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1556 +#: common/models.py:1516 msgid "Format to display the part name" msgstr "" -#: common/models.py:1562 +#: common/models.py:1522 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1563 +#: common/models.py:1523 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1567 +#: common/models.py:1527 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1569 +#: common/models.py:1529 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1575 +#: common/models.py:1535 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1577 +#: common/models.py:1537 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1583 +#: common/models.py:1548 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1585 +#: common/models.py:1550 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1591 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1593 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1599 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1601 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1607 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1609 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1615 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1617 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1630 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1632 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1638 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1640 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1647 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1648 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1653 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1655 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1661 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1662 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1667 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1669 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1675 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1676 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1681 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1682 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1687 +#: common/models.py:1657 msgid "Log Report Errors" msgstr "" -#: common/models.py:1688 +#: common/models.py:1658 msgid "Log errors which occur when generating reports" msgstr "" -#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:301 +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:302 msgid "Page Size" msgstr "" -#: common/models.py:1694 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1699 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1700 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1705 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1707 +#: common/models.py:1677 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1713 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1714 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1719 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1720 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1725 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1727 +#: common/models.py:1697 msgid "Determines default behavior when a stock item is depleted" msgstr "" -#: common/models.py:1733 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1735 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1740 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1741 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1746 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1747 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1752 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1754 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1761 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1762 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1767 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1768 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1773 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1774 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1778 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1779 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1784 +#: common/models.py:1754 msgid "Check BOM when installing items" msgstr "" -#: common/models.py:1786 +#: common/models.py:1756 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "" -#: common/models.py:1792 +#: common/models.py:1762 msgid "Allow Out of Stock Transfer" msgstr "" -#: common/models.py:1794 +#: common/models.py:1764 msgid "Allow stock items which are not in stock to be transferred between stock locations" msgstr "" -#: common/models.py:1800 +#: common/models.py:1770 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1802 +#: common/models.py:1772 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1808 common/models.py:1836 common/models.py:1858 -#: common/models.py:1894 +#: common/models.py:1778 common/models.py:1806 common/models.py:1828 +#: common/models.py:1864 msgid "Require Responsible Owner" msgstr "" -#: common/models.py:1809 common/models.py:1837 common/models.py:1859 -#: common/models.py:1895 +#: common/models.py:1779 common/models.py:1807 common/models.py:1829 +#: common/models.py:1865 msgid "A responsible owner must be assigned to each order" msgstr "" -#: common/models.py:1814 +#: common/models.py:1784 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1816 +#: common/models.py:1786 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:1822 +#: common/models.py:1792 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1823 +#: common/models.py:1793 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1828 +#: common/models.py:1798 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1830 +#: common/models.py:1800 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1842 +#: common/models.py:1812 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1844 +#: common/models.py:1814 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1850 +#: common/models.py:1820 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1852 +#: common/models.py:1822 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1864 +#: common/models.py:1834 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1865 +#: common/models.py:1835 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1870 +#: common/models.py:1840 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1872 +#: common/models.py:1842 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1878 -#, fuzzy -#| msgid "A build order has been completed" +#: common/models.py:1848 msgid "Mark Shipped Orders as Complete" -msgstr "En byggeordre er fuldført" +msgstr "" -#: common/models.py:1880 +#: common/models.py:1850 msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" msgstr "" -#: common/models.py:1886 +#: common/models.py:1856 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1888 +#: common/models.py:1858 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1900 +#: common/models.py:1870 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1902 +#: common/models.py:1872 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1908 +#: common/models.py:1878 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1910 +#: common/models.py:1880 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1917 +#: common/models.py:1887 msgid "Enable password forgot" msgstr "" -#: common/models.py:1918 +#: common/models.py:1888 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1923 +#: common/models.py:1893 msgid "Enable registration" msgstr "" -#: common/models.py:1924 +#: common/models.py:1894 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1929 +#: common/models.py:1899 msgid "Enable SSO" msgstr "" -#: common/models.py:1930 +#: common/models.py:1900 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1935 +#: common/models.py:1905 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1937 +#: common/models.py:1907 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1943 +#: common/models.py:1913 msgid "Email required" msgstr "" -#: common/models.py:1944 +#: common/models.py:1914 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1949 +#: common/models.py:1919 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1951 +#: common/models.py:1921 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1957 +#: common/models.py:1927 msgid "Mail twice" msgstr "" -#: common/models.py:1958 +#: common/models.py:1928 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1963 +#: common/models.py:1933 msgid "Password twice" msgstr "" -#: common/models.py:1964 +#: common/models.py:1934 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1969 +#: common/models.py:1939 msgid "Allowed domains" msgstr "" -#: common/models.py:1971 +#: common/models.py:1941 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1977 +#: common/models.py:1947 msgid "Group on signup" msgstr "" -#: common/models.py:1978 +#: common/models.py:1948 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1983 +#: common/models.py:1953 msgid "Enforce MFA" msgstr "" -#: common/models.py:1984 +#: common/models.py:1954 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1989 +#: common/models.py:1959 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1991 +#: common/models.py:1961 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1999 +#: common/models.py:1969 msgid "Check for plugin updates" msgstr "" -#: common/models.py:2000 +#: common/models.py:1970 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:2006 +#: common/models.py:1976 msgid "Enable URL integration" msgstr "" -#: common/models.py:2007 +#: common/models.py:1977 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:2013 +#: common/models.py:1983 msgid "Enable navigation integration" msgstr "" -#: common/models.py:2014 +#: common/models.py:1984 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:2020 +#: common/models.py:1990 msgid "Enable app integration" msgstr "" -#: common/models.py:2021 +#: common/models.py:1991 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:2027 +#: common/models.py:1997 msgid "Enable schedule integration" msgstr "" -#: common/models.py:2028 +#: common/models.py:1998 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:2034 +#: common/models.py:2004 msgid "Enable event integration" msgstr "" -#: common/models.py:2035 +#: common/models.py:2005 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:2041 +#: common/models.py:2011 msgid "Enable project codes" msgstr "" -#: common/models.py:2042 +#: common/models.py:2012 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:2047 +#: common/models.py:2017 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:2049 +#: common/models.py:2019 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:2055 +#: common/models.py:2025 msgid "Exclude External Locations" msgstr "" -#: common/models.py:2057 +#: common/models.py:2027 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:2063 +#: common/models.py:2033 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:2065 +#: common/models.py:2035 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:2071 +#: common/models.py:2041 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:2073 +#: common/models.py:2043 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:2080 +#: common/models.py:2050 msgid "Display Users full names" msgstr "" -#: common/models.py:2081 +#: common/models.py:2051 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:2086 +#: common/models.py:2056 msgid "Enable Test Station Data" msgstr "" -#: common/models.py:2087 +#: common/models.py:2057 msgid "Enable test station data collection for test results" msgstr "" -#: common/models.py:2099 common/models.py:2509 +#: common/models.py:2069 common/models.py:2479 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2142 +#: common/models.py:2112 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2144 +#: common/models.py:2114 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2150 +#: common/models.py:2120 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2151 +#: common/models.py:2121 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2156 +#: common/models.py:2126 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2157 +#: common/models.py:2127 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2162 +#: common/models.py:2132 msgid "Show latest parts" msgstr "" -#: common/models.py:2163 +#: common/models.py:2133 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2168 +#: common/models.py:2138 msgid "Show invalid BOMs" msgstr "" -#: common/models.py:2169 +#: common/models.py:2139 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2174 +#: common/models.py:2144 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2175 +#: common/models.py:2145 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2180 +#: common/models.py:2150 msgid "Show low stock" msgstr "" -#: common/models.py:2181 +#: common/models.py:2151 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2186 +#: common/models.py:2156 msgid "Show depleted stock" msgstr "" -#: common/models.py:2187 +#: common/models.py:2157 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2192 +#: common/models.py:2162 msgid "Show needed stock" msgstr "" -#: common/models.py:2193 +#: common/models.py:2163 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2198 +#: common/models.py:2168 msgid "Show expired stock" msgstr "" -#: common/models.py:2199 +#: common/models.py:2169 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2204 +#: common/models.py:2174 msgid "Show stale stock" msgstr "" -#: common/models.py:2205 +#: common/models.py:2175 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2210 +#: common/models.py:2180 msgid "Show pending builds" msgstr "" -#: common/models.py:2211 +#: common/models.py:2181 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2216 +#: common/models.py:2186 msgid "Show overdue builds" msgstr "" -#: common/models.py:2217 +#: common/models.py:2187 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2222 +#: common/models.py:2192 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2223 +#: common/models.py:2193 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2228 +#: common/models.py:2198 msgid "Show overdue POs" msgstr "" -#: common/models.py:2229 +#: common/models.py:2199 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2234 +#: common/models.py:2204 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2235 +#: common/models.py:2205 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2240 +#: common/models.py:2210 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2241 +#: common/models.py:2211 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2246 +#: common/models.py:2216 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2247 +#: common/models.py:2217 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2252 +#: common/models.py:2222 msgid "Show News" msgstr "" -#: common/models.py:2253 +#: common/models.py:2223 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2258 +#: common/models.py:2228 msgid "Inline label display" msgstr "" -#: common/models.py:2260 +#: common/models.py:2230 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2266 +#: common/models.py:2236 msgid "Default label printer" msgstr "" -#: common/models.py:2268 +#: common/models.py:2238 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2274 +#: common/models.py:2244 msgid "Inline report display" msgstr "" -#: common/models.py:2276 +#: common/models.py:2246 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2282 +#: common/models.py:2252 msgid "Search Parts" msgstr "" -#: common/models.py:2283 +#: common/models.py:2253 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2288 +#: common/models.py:2258 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2289 +#: common/models.py:2259 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2294 +#: common/models.py:2264 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2295 +#: common/models.py:2265 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2300 +#: common/models.py:2270 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2301 +#: common/models.py:2271 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2306 +#: common/models.py:2276 msgid "Search Categories" msgstr "" -#: common/models.py:2307 +#: common/models.py:2277 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2312 +#: common/models.py:2282 msgid "Search Stock" msgstr "" -#: common/models.py:2313 +#: common/models.py:2283 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2318 +#: common/models.py:2288 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2320 +#: common/models.py:2290 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2326 +#: common/models.py:2296 msgid "Search Locations" msgstr "" -#: common/models.py:2327 +#: common/models.py:2297 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2332 +#: common/models.py:2302 msgid "Search Companies" msgstr "" -#: common/models.py:2333 +#: common/models.py:2303 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2338 +#: common/models.py:2308 msgid "Search Build Orders" msgstr "" -#: common/models.py:2339 +#: common/models.py:2309 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2344 +#: common/models.py:2314 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2345 +#: common/models.py:2315 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2350 +#: common/models.py:2320 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2352 +#: common/models.py:2322 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2358 +#: common/models.py:2328 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2359 +#: common/models.py:2329 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2364 +#: common/models.py:2334 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2366 +#: common/models.py:2336 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2372 +#: common/models.py:2342 msgid "Search Return Orders" msgstr "" -#: common/models.py:2373 +#: common/models.py:2343 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2378 +#: common/models.py:2348 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2380 +#: common/models.py:2350 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2386 +#: common/models.py:2356 msgid "Search Preview Results" msgstr "" -#: common/models.py:2388 +#: common/models.py:2358 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2394 +#: common/models.py:2364 msgid "Regex Search" msgstr "" -#: common/models.py:2395 +#: common/models.py:2365 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2400 +#: common/models.py:2370 msgid "Whole Word Search" msgstr "" -#: common/models.py:2401 +#: common/models.py:2371 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2406 +#: common/models.py:2376 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2407 +#: common/models.py:2377 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2412 +#: common/models.py:2382 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2413 +#: common/models.py:2383 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2418 +#: common/models.py:2388 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2419 +#: common/models.py:2389 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2424 +#: common/models.py:2394 msgid "Date Format" msgstr "" -#: common/models.py:2425 +#: common/models.py:2395 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2438 part/templates/part/detail.html:41 +#: common/models.py:2408 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2439 +#: common/models.py:2409 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2444 part/templates/part/detail.html:62 +#: common/models.py:2414 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2446 +#: common/models.py:2416 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2452 +#: common/models.py:2422 msgid "Table String Length" msgstr "" -#: common/models.py:2454 +#: common/models.py:2424 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2460 +#: common/models.py:2430 msgid "Default part label template" msgstr "" -#: common/models.py:2461 +#: common/models.py:2431 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2466 +#: common/models.py:2436 msgid "Default stock item template" msgstr "" -#: common/models.py:2468 +#: common/models.py:2438 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2474 +#: common/models.py:2444 msgid "Default stock location label template" msgstr "" -#: common/models.py:2476 +#: common/models.py:2446 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2482 +#: common/models.py:2452 msgid "Default build line label template" msgstr "" -#: common/models.py:2484 +#: common/models.py:2454 msgid "The build line label template to be automatically selected" msgstr "" -#: common/models.py:2490 +#: common/models.py:2460 msgid "Receive error reports" msgstr "" -#: common/models.py:2491 +#: common/models.py:2461 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2496 +#: common/models.py:2466 msgid "Last used printing machines" msgstr "" -#: common/models.py:2497 +#: common/models.py:2467 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2540 +#: common/models.py:2487 common/models.py:2488 common/models.py:2636 +#: common/models.py:2637 common/models.py:2882 common/models.py:2883 +#: common/models.py:3193 common/models.py:3194 part/models.py:3193 +#: part/models.py:3280 part/models.py:3353 part/models.py:3381 +#: plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "Bruger" + +#: common/models.py:2510 msgid "Price break quantity" msgstr "" -#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1382 order/models.py:2301 -#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 +#: common/models.py:2517 company/serializers.py:472 order/admin.py:42 +#: order/models.py:1346 order/models.py:2265 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1886 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:740 msgid "Price" msgstr "" -#: common/models.py:2548 +#: common/models.py:2518 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2719 common/models.py:2904 +#: common/models.py:2613 common/models.py:2798 msgid "Endpoint" msgstr "" -#: common/models.py:2720 +#: common/models.py:2614 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2730 +#: common/models.py:2624 msgid "Name for this webhook" msgstr "" -#: common/models.py:2734 company/models.py:160 company/models.py:814 -#: machine/models.py:39 part/admin.py:88 part/models.py:1088 -#: plugin/models.py:65 templates/js/translated/company.js:523 +#: common/models.py:2628 company/models.py:163 company/models.py:782 +#: machine/models.py:39 part/admin.py:88 part/models.py:1081 +#: plugin/models.py:66 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3464,101 +3408,118 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2734 +#: common/models.py:2628 msgid "Is this webhook active" msgstr "" -#: common/models.py:2750 users/models.py:159 +#: common/models.py:2644 users/models.py:159 msgid "Token" msgstr "" -#: common/models.py:2751 +#: common/models.py:2645 msgid "Token for access" msgstr "" -#: common/models.py:2759 +#: common/models.py:2653 msgid "Secret" msgstr "" -#: common/models.py:2760 +#: common/models.py:2654 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2868 +#: common/models.py:2762 msgid "Message ID" msgstr "" -#: common/models.py:2869 +#: common/models.py:2763 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2877 +#: common/models.py:2771 msgid "Host" msgstr "" -#: common/models.py:2878 +#: common/models.py:2772 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2886 +#: common/models.py:2780 msgid "Header" msgstr "" -#: common/models.py:2887 +#: common/models.py:2781 msgid "Header of this message" msgstr "" -#: common/models.py:2894 +#: common/models.py:2788 msgid "Body" msgstr "" -#: common/models.py:2895 +#: common/models.py:2789 msgid "Body of this message" msgstr "" -#: common/models.py:2905 +#: common/models.py:2799 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2910 +#: common/models.py:2804 msgid "Worked on" msgstr "" -#: common/models.py:2911 +#: common/models.py:2805 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:3037 +#: common/models.py:2931 msgid "Id" msgstr "" -#: common/models.py:3039 templates/js/translated/company.js:965 +#: common/models.py:2933 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:3043 templates/js/translated/news.js:60 +#: common/models.py:2935 common/models.py:3177 company/models.py:149 +#: company/models.py:440 company/models.py:500 company/models.py:799 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +#: part/admin.py:55 part/models.py:955 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "" + +#: common/models.py:2937 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:3045 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2939 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:3047 templates/js/translated/news.js:52 +#: common/models.py:2941 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Read" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Was this news item read?" msgstr "" -#: common/models.py:3067 company/models.py:156 part/models.py:972 +#: common/models.py:2961 company/models.py:159 part/models.py:965 #: 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.html:35 @@ -3568,34 +3529,89 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:3067 +#: common/models.py:2961 msgid "Image file" msgstr "" -#: common/models.py:3109 +#: common/models.py:2973 common/models.py:3161 +msgid "Target model type for this image" +msgstr "" + +#: common/models.py:2977 +msgid "Target model ID for this image" +msgstr "" + +#: common/models.py:3018 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3128 +#: common/models.py:3037 msgid "Unit name" msgstr "" -#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3044 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3136 +#: common/models.py:3045 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3052 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3144 +#: common/models.py:3053 msgid "Unit definition" msgstr "" +#: common/models.py:3111 common/models.py:3168 stock/models.py:2426 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "Vedhæftning" + +#: common/models.py:3123 +msgid "Missing file" +msgstr "Manglende fil" + +#: common/models.py:3124 +msgid "Missing external link" +msgstr "Manglende eksternt link" + +#: common/models.py:3169 +msgid "Select file to attach" +msgstr "Vælg fil, der skal vedhæftes" + +#: common/models.py:3184 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "Kommentar" + +#: common/models.py:3185 +msgid "Attachment comment" +msgstr "" + +#: common/models.py:3201 +msgid "Upload date" +msgstr "" + +#: common/models.py:3202 +msgid "Date the file was uploaded" +msgstr "" + +#: common/models.py:3206 +msgid "File size" +msgstr "" + +#: common/models.py:3206 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3244 common/serializers.py:553 +msgid "Invalid model type specified for attachment" +msgstr "" + #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" @@ -3630,66 +3646,103 @@ msgstr "" msgid "Error raised by plugin" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:371 msgid "Is Running" msgstr "" -#: common/serializers.py:372 +#: common/serializers.py:377 msgid "Pending Tasks" msgstr "" -#: common/serializers.py:378 +#: common/serializers.py:383 msgid "Scheduled Tasks" msgstr "" -#: common/serializers.py:384 +#: common/serializers.py:389 msgid "Failed Tasks" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Task ID" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Unique task ID" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock time" msgstr "" -#: common/serializers.py:403 +#: common/serializers.py:408 msgid "Task name" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function name" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Arguments" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Task arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Keyword Arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Task keyword arguments" msgstr "" +#: common/serializers.py:525 +msgid "Filename" +msgstr "Filnavn" + +#: common/serializers.py:532 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: common/serializers.py:559 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "" + +#: common/validators.py:33 +msgid "No attachment model type provided" +msgstr "" + +#: common/validators.py:39 +msgid "Invalid attachment model type" +msgstr "" + +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "" + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +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 @@ -3728,210 +3781,222 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/api.py:164 +#: company/api.py:144 msgid "Part is Active" msgstr "" -#: company/api.py:168 +#: company/api.py:148 msgid "Manufacturer is Active" msgstr "" -#: company/api.py:317 +#: company/api.py:281 msgid "Supplier Part is Active" msgstr "" -#: company/api.py:321 +#: company/api.py:285 msgid "Internal Part is Active" msgstr "" -#: company/api.py:325 +#: company/api.py:289 msgid "Supplier is Active" msgstr "" -#: company/models.py:114 +#: company/models.py:100 company/models.py:365 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:822 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "" + +#: company/models.py:117 msgid "Company description" msgstr "" -#: company/models.py:115 +#: company/models.py:118 msgid "Description of the company" msgstr "" -#: company/models.py:120 company/templates/company/company_base.html:106 +#: company/models.py:123 company/templates/company/company_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:532 msgid "Website" msgstr "" -#: company/models.py:120 +#: company/models.py:123 msgid "Company website URL" msgstr "" -#: company/models.py:125 +#: company/models.py:128 msgid "Phone number" msgstr "" -#: company/models.py:127 +#: company/models.py:130 msgid "Contact phone number" msgstr "" -#: company/models.py:134 +#: company/models.py:137 msgid "Contact email address" msgstr "" -#: company/models.py:139 company/templates/company/company_base.html:145 +#: company/models.py:142 company/templates/company/company_base.html:145 #: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "" -#: company/models.py:141 +#: company/models.py:144 msgid "Point of contact" msgstr "" -#: company/models.py:147 +#: company/models.py:150 msgid "Link to external company information" msgstr "" -#: company/models.py:160 +#: company/models.py:163 msgid "Is this company active?" msgstr "" -#: company/models.py:165 +#: company/models.py:168 msgid "is customer" msgstr "" -#: company/models.py:166 +#: company/models.py:169 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:171 +#: company/models.py:174 msgid "is supplier" msgstr "" -#: company/models.py:172 +#: company/models.py:175 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:177 +#: company/models.py:180 msgid "is manufacturer" msgstr "" -#: company/models.py:178 +#: company/models.py:181 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:186 +#: company/models.py:189 msgid "Default currency used for this company" msgstr "" -#: company/models.py:273 company/models.py:382 -#: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:812 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 -msgid "Company" -msgstr "" - -#: company/models.py:383 +#: company/models.py:366 msgid "Select company" msgstr "" -#: company/models.py:388 +#: company/models.py:371 msgid "Address title" msgstr "" -#: company/models.py:389 +#: company/models.py:372 msgid "Title describing the address entry" msgstr "" -#: company/models.py:395 +#: company/models.py:378 msgid "Primary address" msgstr "" -#: company/models.py:396 +#: company/models.py:379 msgid "Set as primary address" msgstr "" -#: company/models.py:401 templates/js/translated/company.js:914 +#: company/models.py:384 templates/js/translated/company.js:914 #: templates/js/translated/company.js:971 msgid "Line 1" msgstr "" -#: company/models.py:402 +#: company/models.py:385 msgid "Address line 1" msgstr "" -#: company/models.py:408 templates/js/translated/company.js:915 +#: company/models.py:391 templates/js/translated/company.js:915 #: templates/js/translated/company.js:977 msgid "Line 2" msgstr "" -#: company/models.py:409 +#: company/models.py:392 msgid "Address line 2" msgstr "" -#: company/models.py:415 company/models.py:416 +#: company/models.py:398 company/models.py:399 #: templates/js/translated/company.js:983 msgid "Postal code" msgstr "" -#: company/models.py:422 +#: company/models.py:405 msgid "City/Region" msgstr "" -#: company/models.py:423 +#: company/models.py:406 msgid "Postal code city/region" msgstr "" -#: company/models.py:429 +#: company/models.py:412 msgid "State/Province" msgstr "" -#: company/models.py:430 +#: company/models.py:413 msgid "State or province" msgstr "" -#: company/models.py:436 templates/js/translated/company.js:1001 +#: company/models.py:419 templates/js/translated/company.js:1001 msgid "Country" msgstr "" -#: company/models.py:437 +#: company/models.py:420 msgid "Address country" msgstr "" -#: company/models.py:443 +#: company/models.py:426 msgid "Courier shipping notes" msgstr "" -#: company/models.py:444 +#: company/models.py:427 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:450 +#: company/models.py:433 msgid "Internal shipping notes" msgstr "" -#: company/models.py:451 +#: company/models.py:434 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:458 +#: company/models.py:441 msgid "Link to address information (external)" msgstr "" -#: company/models.py:489 company/models.py:792 stock/models.py:768 -#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 +#: company/models.py:463 company/models.py:574 company/models.py:792 +#: 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:475 company/models.py:760 stock/models.py:766 +#: stock/serializers.py:422 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:491 company/models.py:794 +#: company/models.py:477 company/models.py:762 msgid "Select part" msgstr "" -#: company/models.py:500 company/templates/company/company_base.html:82 +#: company/models.py:486 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:530 +#: company/templates/company/supplier_part.html:145 part/serializers.py:525 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -3941,152 +4006,154 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:501 +#: company/models.py:487 msgid "Select manufacturer" msgstr "" -#: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:540 +#: company/models.py:493 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:535 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 -#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1801 #: templates/js/translated/purchase_order.js:1851 #: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "" -#: company/models.py:508 +#: company/models.py:494 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:515 +#: company/models.py:501 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:524 +#: company/models.py:510 msgid "Manufacturer part description" msgstr "" -#: company/models.py:581 company/models.py:608 company/models.py:824 -#: 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:615 +#: company/models.py:581 msgid "Parameter name" msgstr "" -#: company/models.py:621 report/templates/report/inventree_test_report.html:104 -#: stock/models.py:2429 templates/js/translated/company.js:1166 -#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 +#: company/models.py:587 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2418 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1493 #: templates/js/translated/stock.js:1522 msgid "Value" msgstr "" -#: company/models.py:622 +#: company/models.py:588 msgid "Parameter value" msgstr "" -#: company/models.py:629 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1052 part/models.py:3666 +#: company/models.py:595 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1045 part/models.py:3646 #: part/templates/part/part_base.html:284 -#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1512 +#: templates/js/translated/part.js:1616 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:630 +#: company/models.py:596 msgid "Parameter units" msgstr "" -#: company/models.py:732 +#: company/models.py:648 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:777 stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "" + +#: company/models.py:700 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:739 +#: company/models.py:707 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:753 +#: company/models.py:721 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/models.py:770 company/templates/company/company_base.html:87 #: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:514 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:509 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:511 -#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1769 #: templates/js/translated/pricing.js:498 #: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "" -#: company/models.py:803 +#: company/models.py:771 msgid "Select supplier" msgstr "" -#: company/models.py:809 part/serializers.py:525 +#: company/models.py:777 part/serializers.py:520 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:815 +#: company/models.py:783 msgid "Is this supplier part active?" msgstr "" -#: company/models.py:825 +#: company/models.py:793 msgid "Select manufacturer part" msgstr "" -#: company/models.py:832 +#: company/models.py:800 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:841 +#: company/models.py:809 msgid "Supplier part description" msgstr "" -#: company/models.py:848 company/templates/company/supplier_part.html:187 -#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 +#: company/models.py:816 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4093 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_purchase_order_report.html:32 #: report/templates/report/inventree_return_order_report.html:27 #: report/templates/report/inventree_sales_order_report.html:32 #: report/templates/report/inventree_stock_location_report.html:105 -#: stock/serializers.py:708 +#: stock/serializers.py:710 msgid "Note" msgstr "" -#: company/models.py:857 part/models.py:2010 +#: company/models.py:825 part/models.py:2003 msgid "base cost" msgstr "" -#: company/models.py:858 part/models.py:2011 +#: company/models.py:826 part/models.py:2004 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:865 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 +#: company/models.py:833 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:797 stock/serializers.py:1475 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 #: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "" -#: company/models.py:866 +#: company/models.py:834 msgid "Part packaging" msgstr "" -#: company/models.py:871 templates/js/translated/company.js:1651 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: company/models.py:839 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:311 #: templates/js/translated/purchase_order.js:841 #: templates/js/translated/purchase_order.js:1103 @@ -4095,35 +4162,35 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:873 +#: company/models.py:841 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:892 part/models.py:2017 +#: company/models.py:860 part/models.py:2010 msgid "multiple" msgstr "" -#: company/models.py:893 +#: company/models.py:861 msgid "Order multiple" msgstr "" -#: company/models.py:905 +#: company/models.py:873 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:911 +#: company/models.py:879 msgid "Availability Updated" msgstr "" -#: company/models.py:912 +#: company/models.py:880 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:163 +#: company/serializers.py:161 msgid "Default currency used for this supplier" msgstr "" -#: company/serializers.py:381 part/admin.py:126 +#: company/serializers.py:357 part/admin.py:126 #: part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1689 #: templates/js/translated/table_filters.js:355 @@ -4135,7 +4202,7 @@ msgstr "" #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 #: templates/js/translated/model_renderers.js:312 -#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +#: templates/js/translated/part.js:815 templates/js/translated/part.js:1219 msgid "Inactive" msgstr "" @@ -4174,7 +4241,7 @@ msgstr "" #: report/templates/report/inventree_purchase_order_report.html:40 #: report/templates/report/inventree_sales_order_report.html:40 #: report/templates/report/inventree_test_report.html:84 -#: report/templates/report/inventree_test_report.html:163 +#: report/templates/report/inventree_test_report.html:162 msgid "Part image" msgstr "" @@ -4193,10 +4260,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:92 order/models.py:940 -#: order/models.py:2068 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:148 stock/models.py:821 -#: stock/models.py:822 stock/serializers.py:1229 +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2032 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:819 +#: stock/models.py:820 stock/serializers.py:1225 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 @@ -4407,7 +4474,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:836 +#: part/admin.py:122 part/serializers.py:832 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4427,8 +4494,8 @@ msgstr "" msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:206 -#: templates/js/translated/part.js:1422 +#: company/templates/company/manufacturer_part.html:196 +#: templates/js/translated/part.js:1423 msgid "Add Parameter" msgstr "" @@ -4456,15 +4523,6 @@ msgstr "" msgid "Addresses" msgstr "" -#: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:452 -#: stock/models.py:779 stock/templates/stock/item_base.html:233 -#: templates/js/translated/company.js:1600 -#: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2280 -msgid "Supplier Part" -msgstr "" - #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1526 msgid "Supplier part actions" @@ -4507,8 +4565,8 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:524 -#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: part/bom.py:311 part/serializers.py:519 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1787 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1850 #: templates/js/translated/purchase_order.js:2028 @@ -4520,12 +4578,12 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:207 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" @@ -4557,15 +4615,15 @@ msgid "Update Part Availability" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:835 part/stocktake.py:223 +#: part/serializers.py:831 part/stocktake.py:224 #: part/templates/part/category.html:183 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:916 stock/serializers.py:1080 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:918 stock/serializers.py:1091 #: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:191 #: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1061 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:206 msgid "Stock Items" @@ -4592,10 +4650,6 @@ msgstr "" 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 "" @@ -4616,7 +4670,7 @@ msgstr "" msgid "Connected" msgstr "" -#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: machine/machine_types/label_printer.py:235 order/api.py:1467 #: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "" @@ -4705,7 +4759,7 @@ msgstr "" msgid "Config type" msgstr "" -#: order/admin.py:30 order/models.py:89 +#: order/admin.py:30 order/models.py:90 #: report/templates/report/inventree_purchase_order_report.html:31 #: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 @@ -4714,30 +4768,30 @@ msgstr "" msgid "Total Price" msgstr "" -#: order/api.py:161 order/serializers.py:91 +#: order/api.py:157 order/serializers.py:90 #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "" -#: order/api.py:165 templates/js/translated/table_filters.js:194 +#: order/api.py:161 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "" -#: order/api.py:240 +#: order/api.py:236 msgid "No matching purchase order found" msgstr "" -#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 -#: order/models.py:1586 order/models.py:1700 order/models.py:1854 -#: order/models.py:2267 order/models.py:2318 +#: order/api.py:435 order/api.py:801 order/models.py:1395 order/models.py:1504 +#: order/models.py:1550 order/models.py:1664 order/models.py:1818 +#: order/models.py:2231 order/models.py:2282 #: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "" -#: order/api.py:441 order/api.py:838 +#: order/api.py:439 order/api.py:822 msgid "Order Complete" msgstr "" @@ -4745,13 +4799,13 @@ msgstr "" msgid "Order Pending" msgstr "" -#: order/api.py:1509 order/models.py:380 order/models.py:1432 -#: order/models.py:1541 order/templates/order/order_base.html:9 +#: order/api.py:1461 order/models.py:380 order/models.py:1396 +#: order/models.py:1505 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_purchase_order_report.html:14 -#: stock/serializers.py:119 stock/templates/stock/item_base.html:176 +#: stock/serializers.py:118 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/part.js:1746 templates/js/translated/pricing.js:804 #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1673 @@ -4759,8 +4813,8 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1513 order/models.py:2017 order/models.py:2268 -#: order/models.py:2319 order/templates/order/return_order_base.html:9 +#: order/api.py:1465 order/models.py:1981 order/models.py:2232 +#: order/models.py:2283 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report.html:13 #: templates/js/translated/return_order.js:280 @@ -4768,15 +4822,15 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/models.py:90 +#: order/models.py:91 msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:71 +#: order/models.py:96 order/serializers.py:70 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:72 +#: order/models.py:99 order/serializers.py:71 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -4792,7 +4846,7 @@ msgstr "" msgid "Select project code for this order" msgstr "" -#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 msgid "Link to external page" msgstr "" @@ -4816,11 +4870,11 @@ msgstr "" msgid "Company address for this order" msgstr "" -#: order/models.py:464 order/models.py:929 +#: order/models.py:464 order/models.py:927 msgid "Order reference" msgstr "" -#: order/models.py:472 order/models.py:953 +#: order/models.py:472 order/models.py:951 msgid "Purchase order status" msgstr "" @@ -4841,15 +4895,15 @@ msgstr "" msgid "received by" msgstr "" -#: order/models.py:514 order/models.py:2094 +#: order/models.py:514 order/models.py:2058 msgid "Issue Date" msgstr "" -#: order/models.py:515 order/models.py:2095 +#: order/models.py:515 order/models.py:2059 msgid "Date order was issued" msgstr "" -#: order/models.py:522 order/models.py:2102 +#: order/models.py:522 order/models.py:2066 msgid "Date order was completed" msgstr "" @@ -4861,94 +4915,94 @@ msgstr "" msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:941 +#: order/models.py:939 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:964 order/models.py:2087 +#: order/models.py:962 order/models.py:2051 msgid "Customer Reference " msgstr "" -#: order/models.py:965 order/models.py:2088 +#: order/models.py:963 order/models.py:2052 msgid "Customer order reference code" msgstr "" -#: order/models.py:969 order/models.py:1707 +#: order/models.py:967 order/models.py:1671 #: templates/js/translated/sales_order.js:879 #: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "" -#: order/models.py:978 +#: order/models.py:976 msgid "shipped by" msgstr "" -#: order/models.py:1027 +#: order/models.py:1025 msgid "Order is already complete" msgstr "" -#: order/models.py:1030 +#: order/models.py:1028 msgid "Order is already cancelled" msgstr "" -#: order/models.py:1034 +#: order/models.py:1032 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:1038 +#: order/models.py:1036 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:1043 +#: order/models.py:1041 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1309 +#: order/models.py:1273 msgid "Item quantity" msgstr "" -#: order/models.py:1326 +#: order/models.py:1290 msgid "Line item reference" msgstr "" -#: order/models.py:1333 +#: order/models.py:1297 msgid "Line item notes" msgstr "" -#: order/models.py:1345 +#: order/models.py:1309 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1366 +#: order/models.py:1330 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1372 +#: order/models.py:1336 msgid "Context" msgstr "" -#: order/models.py:1373 +#: order/models.py:1337 msgid "Additional context for this line" msgstr "" -#: order/models.py:1383 +#: order/models.py:1347 msgid "Unit price" msgstr "" -#: order/models.py:1416 +#: order/models.py:1380 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1423 +#: order/models.py:1387 msgid "deleted" msgstr "" -#: order/models.py:1451 +#: order/models.py:1415 msgid "Supplier part" msgstr "" -#: order/models.py:1458 order/templates/order/order_base.html:196 -#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: order/models.py:1422 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1870 templates/js/translated/part.js:1902 #: templates/js/translated/purchase_order.js:1306 #: templates/js/translated/purchase_order.js:2169 #: templates/js/translated/return_order.js:763 @@ -4957,196 +5011,196 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1459 +#: order/models.py:1423 msgid "Number of items received" msgstr "" -#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 +#: order/models.py:1431 stock/models.py:938 stock/serializers.py:556 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "" -#: order/models.py:1468 +#: order/models.py:1432 msgid "Unit purchase price" msgstr "" -#: order/models.py:1483 +#: order/models.py:1447 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1574 +#: order/models.py:1538 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1579 +#: order/models.py:1543 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1605 part/templates/part/part_pricing.html:107 +#: order/models.py:1569 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:1606 +#: order/models.py:1570 msgid "Unit sale price" msgstr "" -#: order/models.py:1615 order/status_codes.py:43 +#: order/models.py:1579 order/status_codes.py:43 #: templates/js/translated/sales_order.js:1559 #: templates/js/translated/sales_order.js:1680 #: templates/js/translated/sales_order.js:1993 msgid "Shipped" msgstr "Afsendt" -#: order/models.py:1616 +#: order/models.py:1580 msgid "Shipped quantity" msgstr "" -#: order/models.py:1708 +#: order/models.py:1672 msgid "Date of shipment" msgstr "" -#: order/models.py:1714 templates/js/translated/sales_order.js:1072 +#: order/models.py:1678 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "" -#: order/models.py:1715 +#: order/models.py:1679 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1723 +#: order/models.py:1687 msgid "Checked By" msgstr "" -#: order/models.py:1724 +#: order/models.py:1688 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 -#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 +#: order/models.py:1695 order/models.py:1908 order/serializers.py:1342 +#: order/serializers.py:1452 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "" -#: order/models.py:1732 +#: order/models.py:1696 msgid "Shipment number" msgstr "" -#: order/models.py:1740 +#: order/models.py:1704 msgid "Tracking Number" msgstr "" -#: order/models.py:1741 +#: order/models.py:1705 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1748 +#: order/models.py:1712 msgid "Invoice Number" msgstr "" -#: order/models.py:1749 +#: order/models.py:1713 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1769 +#: order/models.py:1733 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1772 +#: order/models.py:1736 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1890 order/models.py:1892 +#: order/models.py:1854 order/models.py:1856 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1899 +#: order/models.py:1863 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1902 +#: order/models.py:1866 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1905 +#: order/models.py:1869 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1924 order/serializers.py:1231 +#: order/models.py:1888 order/serializers.py:1219 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1927 +#: order/models.py:1891 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1928 plugin/base/barcodes/api.py:481 +#: order/models.py:1892 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1936 +#: order/models.py:1900 msgid "Line" msgstr "" -#: order/models.py:1945 +#: order/models.py:1909 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1958 order/models.py:2275 +#: order/models.py:1922 order/models.py:2239 #: templates/js/translated/return_order.js:721 msgid "Item" msgstr "" -#: order/models.py:1959 +#: order/models.py:1923 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1968 +#: order/models.py:1932 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:2057 +#: order/models.py:2021 msgid "Return Order reference" msgstr "" -#: order/models.py:2069 +#: order/models.py:2033 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:2081 +#: order/models.py:2045 msgid "Return order status" msgstr "" -#: order/models.py:2260 +#: order/models.py:2224 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2276 +#: order/models.py:2240 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2282 +#: order/models.py:2246 msgid "Received Date" msgstr "" -#: order/models.py:2283 +#: order/models.py:2247 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2294 templates/js/translated/return_order.js:732 +#: order/models.py:2258 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2295 +#: order/models.py:2259 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2302 +#: order/models.py:2266 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/serializers.py:79 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_purchase_order_report.html:22 @@ -5155,163 +5209,163 @@ msgstr "" msgid "Line Items" msgstr "" -#: order/serializers.py:84 +#: order/serializers.py:83 msgid "Completed Lines" msgstr "" -#: order/serializers.py:287 +#: order/serializers.py:286 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:302 order/serializers.py:1247 +#: order/serializers.py:301 order/serializers.py:1235 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:312 order/serializers.py:1257 +#: order/serializers.py:311 order/serializers.py:1245 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:440 +#: order/serializers.py:439 msgid "Order is not open" msgstr "" -#: order/serializers.py:461 +#: order/serializers.py:460 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:463 +#: order/serializers.py:462 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:473 +#: order/serializers.py:472 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:478 msgid "Merge Items" msgstr "" -#: order/serializers.py:481 +#: order/serializers.py:480 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:499 +#: order/serializers.py:498 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:502 +#: order/serializers.py:501 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:510 +#: order/serializers.py:509 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:511 +#: order/serializers.py:510 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:550 order/serializers.py:1325 +#: order/serializers.py:549 order/serializers.py:1313 msgid "Line Item" msgstr "" -#: order/serializers.py:556 +#: order/serializers.py:555 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1657 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:581 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:589 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:601 templates/js/translated/barcode.js:52 +#: order/serializers.py:600 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:602 +#: order/serializers.py:601 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:618 +#: order/serializers.py:617 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:642 +#: order/serializers.py:641 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:690 order/serializers.py:1696 +#: order/serializers.py:689 order/serializers.py:1673 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:706 +#: order/serializers.py:705 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:717 +#: order/serializers.py:716 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1074 +#: order/serializers.py:1062 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1134 +#: order/serializers.py:1122 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1195 order/serializers.py:1334 +#: order/serializers.py:1183 order/serializers.py:1322 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1214 +#: order/serializers.py:1202 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1344 +#: order/serializers.py:1332 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1366 order/serializers.py:1472 +#: order/serializers.py:1354 order/serializers.py:1460 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1369 order/serializers.py:1475 +#: order/serializers.py:1357 order/serializers.py:1463 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1416 +#: order/serializers.py:1404 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1423 +#: order/serializers.py:1411 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1650 +#: order/serializers.py:1627 msgid "Return order line item" msgstr "" -#: order/serializers.py:1656 +#: order/serializers.py:1633 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1659 +#: order/serializers.py:1636 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1688 +#: order/serializers.py:1665 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1766 +#: order/serializers.py:1743 msgid "Line price currency" msgstr "" @@ -5641,7 +5695,7 @@ msgstr "" #: 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/part.js:1073 #: templates/js/translated/purchase_order.js:1752 #: templates/js/translated/return_order.js:380 #: templates/js/translated/sales_order.js:891 @@ -5737,34 +5791,34 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:406 part/models.py:3964 part/stocktake.py:218 -#: stock/admin.py:153 +#: part/admin.py:39 part/admin.py:398 part/models.py:3944 part/stocktake.py:219 +#: stock/admin.py:152 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 -#: stock/admin.py:157 +#: part/admin.py:41 part/admin.py:405 part/models.py:3945 part/stocktake.py:220 +#: stock/admin.py:156 msgid "Part Name" msgstr "" -#: part/admin.py:45 part/stocktake.py:220 +#: part/admin.py:45 part/stocktake.py:221 msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:940 part/templates/part/part_base.html:269 #: report/templates/report/inventree_stock_location_report.html:103 -#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/part.js:1227 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 -#: report/models.py:161 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2346 +#: part/admin.py:50 part/models.py:949 part/templates/part/part_base.html:277 +#: report/models.py:162 templates/js/translated/part.js:1232 +#: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:319 part/models.py:929 +#: part/admin.py:53 part/admin.py:319 part/models.py:922 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5773,11 +5827,11 @@ msgstr "" msgid "Part Image" msgstr "" -#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:222 msgid "Category ID" msgstr "" -#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:223 msgid "Category Name" msgstr "" @@ -5789,11 +5843,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:908 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1036 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5801,26 +5855,26 @@ msgstr "" 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 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:235 +#: templates/js/translated/part.js:715 templates/js/translated/part.js:2153 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3123 part/models.py:3137 -#: templates/js/translated/part.js:969 +#: part/admin.py:155 part/models.py:3088 part/models.py:3102 +#: templates/js/translated/part.js:970 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3130 part/models.py:3144 -#: templates/js/translated/part.js:979 +#: part/admin.py:158 part/models.py:3095 part/models.py:3109 +#: templates/js/translated/part.js:980 msgid "Maximum Cost" msgstr "" -#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 msgid "Parent ID" msgstr "" -#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 msgid "Parent Name" msgstr "" @@ -5829,141 +5883,149 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:325 part/models.py:393 part/serializers.py:117 -#: part/serializers.py:272 part/serializers.py:391 +#: part/admin.py:325 part/models.py:396 part/serializers.py:124 +#: part/serializers.py:267 part/serializers.py:386 #: 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:2803 templates/js/translated/search.js:130 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "" -#: part/admin.py:386 +#: part/admin.py:378 msgid "BOM Level" msgstr "" -#: part/admin.py:389 +#: part/admin.py:381 msgid "BOM Item ID" msgstr "" -#: part/admin.py:399 +#: part/admin.py:391 msgid "Parent IPN" msgstr "" -#: part/admin.py:410 part/models.py:3966 +#: part/admin.py:402 part/models.py:3946 msgid "Part IPN" msgstr "" -#: part/admin.py:423 part/serializers.py:1278 +#: part/admin.py:415 part/serializers.py:1274 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:428 part/serializers.py:1293 +#: part/admin.py:420 part/serializers.py:1289 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:110 +#: part/api.py:104 msgid "Starred" msgstr "" -#: part/api.py:112 +#: part/api.py:106 msgid "Filter by starred categories" msgstr "" -#: part/api.py:129 stock/api.py:318 +#: part/api.py:123 stock/api.py:312 msgid "Depth" msgstr "" -#: part/api.py:129 +#: part/api.py:123 msgid "Filter by category depth" msgstr "" -#: part/api.py:147 stock/api.py:336 +#: part/api.py:141 stock/api.py:330 +msgid "Top Level" +msgstr "" + +#: part/api.py:143 +msgid "Filter by top-level categories" +msgstr "" + +#: part/api.py:156 stock/api.py:345 msgid "Cascade" msgstr "" -#: part/api.py:149 +#: part/api.py:158 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:169 +#: part/api.py:179 templates/js/translated/part.js:308 msgid "Parent" msgstr "" -#: part/api.py:171 +#: part/api.py:181 msgid "Filter by parent category" msgstr "" -#: part/api.py:204 +#: part/api.py:214 msgid "Exclude Tree" msgstr "" -#: part/api.py:206 +#: part/api.py:216 msgid "Exclude sub-categories under the specified category" msgstr "" -#: part/api.py:455 +#: part/api.py:449 msgid "Has Results" msgstr "" -#: part/api.py:622 +#: part/api.py:616 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:640 +#: part/api.py:634 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:656 +#: part/api.py:650 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:740 +#: part/api.py:734 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:887 +#: part/api.py:881 msgid "Valid" msgstr "" -#: part/api.py:888 +#: part/api.py:882 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:894 +#: part/api.py:888 msgid "This option must be selected" msgstr "" -#: part/api.py:1111 +#: part/api.py:1105 msgid "BOM Valid" msgstr "" -#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 -#: part/serializers.py:406 part/serializers.py:1134 -#: part/templates/part/part_base.html:260 stock/api.py:781 +#: part/api.py:1508 part/models.py:932 part/models.py:3374 part/models.py:3889 +#: part/serializers.py:401 part/serializers.py:1130 +#: part/templates/part/part_base.html:260 stock/api.py:791 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2376 +#: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/api.py:1803 +#: part/api.py:1796 msgid "Uses" msgstr "" -#: part/bom.py:170 part/models.py:102 part/models.py:982 +#: part/bom.py:170 part/models.py:104 part/models.py:975 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 part/serializers.py:837 +#: part/bom.py:171 part/serializers.py:833 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5972,1054 +6034,1066 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 +#: part/models.py:85 part/models.py:3890 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:84 part/templates/part/category.html:136 +#: part/models.py:86 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "" -#: part/models.py:103 +#: part/models.py:105 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 +#: part/models.py:110 stock/models.py:174 templates/js/translated/part.js:2810 #: templates/js/translated/stock.js:2772 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:110 +#: part/models.py:112 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:119 +#: part/models.py:121 msgid "Default keywords" msgstr "" -#: part/models.py:120 +#: part/models.py:122 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 stock/models.py:85 stock/models.py:156 +#: part/models.py:128 stock/models.py:86 stock/models.py:157 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:127 stock/models.py:157 +#: part/models.py:129 stock/models.py:158 msgid "Icon (optional)" msgstr "" -#: part/models.py:149 +#: part/models.py:151 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:482 +#: part/models.py:485 msgid "Cannot delete this part as it is still active" msgstr "" -#: part/models.py:489 +#: part/models.py:490 msgid "Cannot delete this part as it is used in an assembly" msgstr "" -#: part/models.py:527 +#: part/models.py:528 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:575 part/models.py:582 +#: part/models.py:576 part/models.py:583 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:594 +#: part/models.py:595 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:659 +#: part/models.py:658 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:739 +#: part/models.py:736 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:844 +#: part/models.py:837 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:854 +#: part/models.py:847 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:869 +#: part/models.py:862 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:898 part/models.py:3965 +#: part/models.py:891 part/models.py:3945 msgid "Part name" msgstr "" -#: part/models.py:903 +#: part/models.py:896 msgid "Is Template" msgstr "" -#: part/models.py:904 +#: part/models.py:897 msgid "Is this part a template part?" msgstr "" -#: part/models.py:914 +#: part/models.py:907 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:922 +#: part/models.py:915 msgid "Part description (optional)" msgstr "" -#: part/models.py:930 +#: part/models.py:923 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:940 +#: part/models.py:933 msgid "Part category" msgstr "" -#: part/models.py:948 +#: part/models.py:941 msgid "Internal Part Number" msgstr "" -#: part/models.py:955 +#: part/models.py:948 msgid "Part revision or version number" msgstr "" -#: part/models.py:980 +#: part/models.py:973 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:1026 part/templates/part/part_base.html:376 +#: part/models.py:1019 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:1027 +#: part/models.py:1020 msgid "Default supplier part" msgstr "" -#: part/models.py:1034 +#: part/models.py:1027 msgid "Default Expiry" msgstr "" -#: part/models.py:1035 +#: part/models.py:1028 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:1044 +#: part/models.py:1037 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:1053 +#: part/models.py:1046 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1060 +#: part/models.py:1053 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1066 +#: part/models.py:1059 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1072 +#: part/models.py:1065 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1078 +#: part/models.py:1071 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1084 +#: part/models.py:1077 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1088 +#: part/models.py:1081 msgid "Is this part active?" msgstr "" -#: part/models.py:1094 +#: part/models.py:1087 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1100 +#: part/models.py:1093 msgid "BOM checksum" msgstr "" -#: part/models.py:1101 +#: part/models.py:1094 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1109 +#: part/models.py:1102 msgid "BOM checked by" msgstr "" -#: part/models.py:1114 +#: part/models.py:1107 msgid "BOM checked date" msgstr "" -#: part/models.py:1130 +#: part/models.py:1123 msgid "Creation User" msgstr "" -#: part/models.py:1140 +#: part/models.py:1133 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1145 part/templates/part/part_base.html:339 +#: part/models.py:1138 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2470 +#: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:2018 +#: part/models.py:2011 msgid "Sell multiple" msgstr "" -#: part/models.py:3037 +#: part/models.py:3002 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:3053 +#: part/models.py:3018 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:3054 +#: part/models.py:3019 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:3060 +#: part/models.py:3025 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3026 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:3067 +#: part/models.py:3032 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3033 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3074 +#: part/models.py:3039 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3040 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3046 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3047 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3053 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3054 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3060 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3096 +#: part/models.py:3061 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3102 +#: part/models.py:3067 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3103 +#: part/models.py:3068 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3109 +#: part/models.py:3074 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3110 +#: part/models.py:3075 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3116 +#: part/models.py:3081 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3117 +#: part/models.py:3082 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3124 +#: part/models.py:3089 msgid "Override minimum cost" msgstr "" -#: part/models.py:3131 +#: part/models.py:3096 msgid "Override maximum cost" msgstr "" -#: part/models.py:3138 +#: part/models.py:3103 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3145 +#: part/models.py:3110 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3151 +#: part/models.py:3116 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3152 +#: part/models.py:3117 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3158 +#: part/models.py:3123 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3159 +#: part/models.py:3124 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3165 +#: part/models.py:3130 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3131 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3172 +#: part/models.py:3137 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3138 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3192 +#: part/models.py:3157 msgid "Part for stocktake" msgstr "" -#: part/models.py:3197 +#: part/models.py:3162 msgid "Item Count" msgstr "" -#: part/models.py:3198 +#: part/models.py:3163 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3206 +#: part/models.py:3171 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3210 part/models.py:3293 +#: part/models.py:3175 part/models.py:3258 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report.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/part.js:1086 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" -#: part/models.py:3211 +#: part/models.py:3176 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3219 +#: part/models.py:3184 msgid "Additional notes" msgstr "" -#: part/models.py:3229 +#: part/models.py:3194 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3235 +#: part/models.py:3200 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3236 +#: part/models.py:3201 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3242 +#: part/models.py:3207 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3243 +#: part/models.py:3208 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3264 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3300 +#: part/models.py:3265 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3270 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3306 +#: part/models.py:3271 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3316 +#: part/models.py:3281 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3478 +#: part/models.py:3423 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3489 +#: part/models.py:3444 part/models.py:3608 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3455 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3500 +#: part/models.py:3466 msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3517 templates/js/translated/part.js:2878 +#: part/models.py:3483 templates/js/translated/part.js:2880 msgid "Test Name" msgstr "" -#: part/models.py:3518 +#: part/models.py:3484 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3524 +#: part/models.py:3490 msgid "Test Key" msgstr "" -#: part/models.py:3525 +#: part/models.py:3491 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3532 +#: part/models.py:3498 msgid "Test Description" msgstr "" -#: part/models.py:3533 +#: part/models.py:3499 msgid "Enter description for this test" msgstr "" -#: part/models.py:3537 report/models.py:208 -#: templates/js/translated/part.js:2899 +#: part/models.py:3503 report/models.py:209 +#: templates/js/translated/part.js:2901 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" -#: part/models.py:3537 +#: part/models.py:3503 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3542 templates/js/translated/part.js:2907 +#: part/models.py:3508 templates/js/translated/part.js:2909 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3543 +#: part/models.py:3509 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3548 templates/js/translated/part.js:2915 +#: part/models.py:3514 templates/js/translated/part.js:2917 msgid "Requires Value" msgstr "" -#: part/models.py:3549 +#: part/models.py:3515 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3554 templates/js/translated/part.js:2922 +#: part/models.py:3520 templates/js/translated/part.js:2924 msgid "Requires Attachment" msgstr "" -#: part/models.py:3556 +#: part/models.py:3522 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3603 +#: part/models.py:3528 part/models.py:3667 templates/js/translated/part.js:1637 +msgid "Choices" +msgstr "" + +#: part/models.py:3529 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3583 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3608 +#: part/models.py:3588 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3628 -msgid "Choices must be unique" -msgstr "" - -#: part/models.py:3645 +#: part/models.py:3625 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3660 +#: part/models.py:3640 msgid "Parameter Name" msgstr "" -#: part/models.py:3667 +#: part/models.py:3647 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3675 +#: part/models.py:3655 msgid "Parameter description" msgstr "" -#: part/models.py:3681 templates/js/translated/part.js:1627 +#: part/models.py:3661 templates/js/translated/part.js:1628 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "" -#: part/models.py:3682 +#: part/models.py:3662 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3687 templates/js/translated/part.js:1636 -msgid "Choices" -msgstr "" - -#: part/models.py:3688 +#: part/models.py:3668 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3765 +#: part/models.py:3745 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3808 +#: part/models.py:3788 msgid "Parent Part" msgstr "" -#: part/models.py:3816 part/models.py:3917 part/models.py:3918 +#: part/models.py:3796 part/models.py:3897 part/models.py:3898 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3821 +#: part/models.py:3801 msgid "Data" msgstr "" -#: part/models.py:3822 +#: part/models.py:3802 msgid "Parameter Value" msgstr "" -#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3904 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3925 +#: part/models.py:3905 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3963 +#: part/models.py:3943 msgid "Part ID or part name" msgstr "" -#: part/models.py:3964 +#: part/models.py:3944 msgid "Unique part ID value" msgstr "" -#: part/models.py:3966 +#: part/models.py:3946 msgid "Part IPN value" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "Level" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "BOM level" msgstr "" -#: part/models.py:4057 +#: part/models.py:4037 msgid "Select parent part" msgstr "" -#: part/models.py:4067 +#: part/models.py:4047 msgid "Sub part" msgstr "" -#: part/models.py:4068 +#: part/models.py:4048 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4079 +#: part/models.py:4059 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4085 +#: part/models.py:4065 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4091 +#: part/models.py:4071 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4098 part/templates/part/upload_bom.html:55 +#: part/models.py:4078 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4099 +#: part/models.py:4079 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4106 +#: part/models.py:4086 msgid "BOM item reference" msgstr "" -#: part/models.py:4114 +#: part/models.py:4094 msgid "BOM item notes" msgstr "" -#: part/models.py:4120 +#: part/models.py:4100 msgid "Checksum" msgstr "" -#: part/models.py:4121 +#: part/models.py:4101 msgid "BOM line checksum" msgstr "" -#: part/models.py:4126 templates/js/translated/table_filters.js:174 +#: part/models.py:4106 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4127 +#: part/models.py:4107 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4132 part/templates/part/upload_bom.html:57 +#: part/models.py:4112 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:4133 +#: part/models.py:4113 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4138 part/templates/part/upload_bom.html:56 +#: part/models.py:4118 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4139 +#: part/models.py:4119 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4224 stock/models.py:664 +#: part/models.py:4204 stock/models.py:662 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4234 part/models.py:4236 +#: part/models.py:4214 part/models.py:4216 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4376 +#: part/models.py:4354 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4397 +#: part/models.py:4375 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4410 +#: part/models.py:4388 msgid "Parent BOM item" msgstr "" -#: part/models.py:4418 +#: part/models.py:4396 msgid "Substitute part" msgstr "" -#: part/models.py:4434 +#: part/models.py:4412 msgid "Part 1" msgstr "" -#: part/models.py:4442 +#: part/models.py:4420 msgid "Part 2" msgstr "" -#: part/models.py:4443 +#: part/models.py:4421 msgid "Select Related Part" msgstr "" -#: part/models.py:4462 +#: part/models.py:4440 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4467 +#: part/models.py:4445 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:119 part/serializers.py:141 +#: part/serializers.py:118 +msgid "Parent Category" +msgstr "" + +#: part/serializers.py:119 templates/js/translated/part.js:309 +msgid "Parent part category" +msgstr "" + +#: part/serializers.py:126 part/serializers.py:148 #: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/serializers.py:185 +#: part/serializers.py:180 msgid "Results" msgstr "" -#: part/serializers.py:186 +#: part/serializers.py:181 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 +#: part/serializers.py:205 part/serializers.py:223 stock/serializers.py:562 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:273 +#: part/serializers.py:268 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:397 +#: part/serializers.py:392 msgid "No parts selected" msgstr "" -#: part/serializers.py:407 +#: part/serializers.py:402 msgid "Select category" msgstr "" -#: part/serializers.py:442 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:443 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:448 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:449 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:455 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:456 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:463 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:488 +#: part/serializers.py:483 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:490 +#: part/serializers.py:485 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:497 +#: part/serializers.py:492 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:493 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:510 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:531 +#: part/serializers.py:526 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:541 +#: part/serializers.py:536 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:548 +#: part/serializers.py:543 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:557 +#: part/serializers.py:552 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:568 +#: part/serializers.py:563 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:575 +#: part/serializers.py:570 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:834 msgid "External Stock" msgstr "" -#: part/serializers.py:840 +#: part/serializers.py:836 msgid "Unallocated Stock" msgstr "" -#: part/serializers.py:843 +#: part/serializers.py:839 msgid "Variant Stock" msgstr "" -#: part/serializers.py:873 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:471 +#: part/serializers.py:869 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:472 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:870 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:880 templates/js/translated/part.js:102 +#: part/serializers.py:876 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:881 +#: part/serializers.py:877 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:887 +#: part/serializers.py:883 msgid "Supplier Information" msgstr "" -#: part/serializers.py:888 +#: part/serializers.py:884 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:896 +#: part/serializers.py:892 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:897 +#: part/serializers.py:893 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:902 +#: part/serializers.py:898 msgid "Existing Image" msgstr "" -#: part/serializers.py:903 +#: part/serializers.py:899 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:920 +#: part/serializers.py:916 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1126 +#: part/serializers.py:1122 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1136 +#: part/serializers.py:1132 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1146 +#: part/serializers.py:1142 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1152 +#: part/serializers.py:1148 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1153 +#: part/serializers.py:1149 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1158 +#: part/serializers.py:1154 msgid "Generate Report" msgstr "" -#: part/serializers.py:1159 +#: part/serializers.py:1155 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1164 +#: part/serializers.py:1160 msgid "Update Parts" msgstr "" -#: part/serializers.py:1165 +#: part/serializers.py:1161 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1173 +#: part/serializers.py:1169 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1279 +#: part/serializers.py:1275 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1286 +#: part/serializers.py:1282 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1294 +#: part/serializers.py:1290 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1301 +#: part/serializers.py:1297 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1330 +#: part/serializers.py:1326 msgid "Update" msgstr "" -#: part/serializers.py:1331 +#: part/serializers.py:1327 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1354 +#: part/serializers.py:1350 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1361 +#: part/serializers.py:1357 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1364 +#: part/serializers.py:1360 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1727 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1739 +#: part/serializers.py:1735 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1740 +#: part/serializers.py:1736 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1745 +#: part/serializers.py:1741 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1746 +#: part/serializers.py:1742 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1747 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1752 +#: part/serializers.py:1748 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1757 +#: part/serializers.py:1753 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1758 +#: part/serializers.py:1754 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1792 +#: part/serializers.py:1788 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1793 +#: part/serializers.py:1789 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1823 +#: part/serializers.py:1819 msgid "No part column specified" msgstr "" -#: part/serializers.py:1867 +#: part/serializers.py:1863 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1870 +#: part/serializers.py:1866 msgid "No matching part found" msgstr "" -#: part/serializers.py:1873 +#: part/serializers.py:1869 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1882 +#: part/serializers.py:1878 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1890 +#: part/serializers.py:1886 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1911 +#: part/serializers.py:1907 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 +#: part/stocktake.py:225 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "" -#: part/stocktake.py:225 +#: part/stocktake.py:226 msgid "Total Cost Min" msgstr "" -#: part/stocktake.py:226 +#: part/stocktake.py:227 msgid "Total Cost Max" msgstr "" -#: part/stocktake.py:284 +#: part/stocktake.py:285 msgid "Stocktake Report Available" msgstr "" -#: part/stocktake.py:285 +#: part/stocktake.py:286 msgid "A new stocktake report is available for download" msgstr "" @@ -7153,7 +7227,7 @@ 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 +#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" @@ -7253,15 +7327,15 @@ msgstr "" msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:655 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:663 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:748 +#: part/templates/part/detail.html:750 msgid "Add Test Result Template" msgstr "" @@ -7342,7 +7416,7 @@ msgstr "" msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" msgstr "" @@ -7414,7 +7488,7 @@ 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:2443 +#: templates/js/translated/part.js:1265 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7507,8 +7581,8 @@ msgstr "" #: 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:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/part.js:1243 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 #: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7551,7 +7625,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:247 +#: part/templates/part/prices.html:28 stock/admin.py:251 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 @@ -7628,8 +7702,8 @@ msgstr "" #: part/templates/part/stock_count.html:7 #: templates/js/translated/model_renderers.js:227 -#: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 -#: templates/js/translated/part.js:2142 +#: templates/js/translated/part.js:705 templates/js/translated/part.js:2141 +#: templates/js/translated/part.js:2143 msgid "No Stock" msgstr "" @@ -8001,7 +8075,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:308 msgid "Landscape" msgstr "" @@ -8114,62 +8188,62 @@ msgstr "" msgid "Uninstalled plugin successfully" msgstr "" -#: plugin/models.py:35 +#: plugin/models.py:36 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:36 +#: plugin/models.py:37 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:42 users/models.py:100 +#: plugin/models.py:43 users/models.py:100 msgid "Key" msgstr "" -#: plugin/models.py:43 +#: plugin/models.py:44 msgid "Key of plugin" msgstr "" -#: plugin/models.py:51 +#: plugin/models.py:52 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:58 plugin/serializers.py:90 +#: plugin/models.py:59 plugin/serializers.py:90 msgid "Package Name" msgstr "" -#: plugin/models.py:60 +#: plugin/models.py:61 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:65 +#: plugin/models.py:66 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:156 templates/js/translated/table_filters.js:370 +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "" -#: plugin/models.py:165 +#: plugin/models.py:166 msgid "Sample plugin" msgstr "" -#: plugin/models.py:173 +#: plugin/models.py:174 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:181 +#: plugin/models.py:182 msgid "Package Plugin" msgstr "" -#: plugin/models.py:205 report/models.py:474 +#: plugin/models.py:220 report/models.py:475 #: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:252 +#: plugin/models.py:267 msgid "Method" msgstr "" @@ -8177,17 +8251,17 @@ msgstr "" msgid "No author found" msgstr "" -#: plugin/registry.py:597 +#: plugin/registry.py:534 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:600 +#: plugin/registry.py:537 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:602 +#: plugin/registry.py:539 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -8302,23 +8376,19 @@ msgstr "" msgid "Activate this plugin" msgstr "" -#: plugin/serializers.py:234 +#: plugin/serializers.py:226 msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:235 +#: plugin/serializers.py:227 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:77 +#: report/api.py:88 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:89 report/serializers.py:53 -msgid "Model Type" -msgstr "" - -#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/api.py:103 report/models.py:439 report/serializers.py:98 #: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 #: templates/js/translated/return_order.js:353 #: templates/js/translated/sales_order.js:887 @@ -8326,176 +8396,176 @@ msgstr "" msgid "Items" msgstr "" -#: report/api.py:168 +#: report/api.py:180 msgid "Plugin not found" msgstr "" -#: report/api.py:170 +#: report/api.py:182 msgid "Plugin is not active" msgstr "" -#: report/api.py:172 +#: report/api.py:184 msgid "Plugin does not support label printing" msgstr "" -#: report/api.py:221 +#: report/api.py:233 msgid "Invalid label dimensions" msgstr "" -#: report/api.py:236 report/api.py:316 +#: report/api.py:248 report/api.py:329 msgid "No valid items provided to template" msgstr "" -#: report/api.py:271 +#: report/api.py:283 msgid "Error printing label" msgstr "" -#: report/api.py:362 report/api.py:398 +#: report/api.py:375 report/api.py:411 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/helpers.py:41 +#: report/helpers.py:43 msgid "A4" msgstr "" -#: report/helpers.py:42 +#: report/helpers.py:44 msgid "A3" msgstr "" -#: report/helpers.py:43 +#: report/helpers.py:45 msgid "Legal" msgstr "" -#: report/helpers.py:44 +#: report/helpers.py:46 msgid "Letter" msgstr "" -#: report/models.py:118 +#: report/models.py:119 msgid "Template file with this name already exists" msgstr "" -#: report/models.py:150 +#: report/models.py:151 msgid "Template name" msgstr "" -#: report/models.py:156 +#: report/models.py:157 msgid "Template description" msgstr "" -#: report/models.py:162 +#: report/models.py:163 msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Filename Pattern" msgstr "" -#: report/models.py:203 +#: report/models.py:204 msgid "Pattern for generating filenames" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Template is enabled" msgstr "" -#: report/models.py:214 +#: report/models.py:215 msgid "Target model type for template" msgstr "" -#: report/models.py:234 +#: report/models.py:235 msgid "Filters" msgstr "" -#: report/models.py:235 +#: report/models.py:236 msgid "Template query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:294 report/models.py:361 +#: report/models.py:295 report/models.py:362 msgid "Template file" msgstr "" -#: report/models.py:302 +#: report/models.py:303 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:308 +#: report/models.py:309 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:367 +#: report/models.py:368 msgid "Width [mm]" msgstr "" -#: report/models.py:368 +#: report/models.py:369 msgid "Label width, specified in mm" msgstr "" -#: report/models.py:374 +#: report/models.py:375 msgid "Height [mm]" msgstr "" -#: report/models.py:375 +#: report/models.py:376 msgid "Label height, specified in mm" msgstr "" -#: report/models.py:438 +#: report/models.py:439 msgid "Number of items to process" msgstr "" -#: report/models.py:444 +#: report/models.py:445 msgid "Report generation is complete" msgstr "" -#: report/models.py:448 templates/js/translated/build.js:2177 +#: report/models.py:449 templates/js/translated/build.js:2177 msgid "Progress" msgstr "" -#: report/models.py:448 +#: report/models.py:449 msgid "Report generation progress" msgstr "" -#: report/models.py:456 +#: report/models.py:457 msgid "Report Template" msgstr "" -#: report/models.py:463 report/models.py:486 +#: report/models.py:464 report/models.py:487 msgid "Output File" msgstr "" -#: report/models.py:464 report/models.py:487 +#: report/models.py:465 report/models.py:488 msgid "Generated output file" msgstr "" -#: report/models.py:475 +#: report/models.py:476 msgid "Label output plugin" msgstr "" -#: report/models.py:479 +#: report/models.py:480 msgid "Label Template" msgstr "" -#: report/models.py:502 +#: report/models.py:503 msgid "Snippet" msgstr "" -#: report/models.py:503 +#: report/models.py:504 msgid "Report snippet file" msgstr "" -#: report/models.py:510 +#: report/models.py:511 msgid "Snippet file description" msgstr "" -#: report/models.py:528 +#: report/models.py:529 msgid "Asset" msgstr "" -#: report/models.py:529 +#: report/models.py:530 msgid "Report asset file" msgstr "" -#: report/models.py:536 +#: report/models.py:537 msgid "Asset file description" msgstr "" @@ -8568,8 +8638,8 @@ msgid "Total" msgstr "" #: report/templates/report/inventree_return_order_report.html:25 -#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 -#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:824 +#: stock/serializers.py:149 stock/templates/stock/item_base.html:311 #: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 #: templates/js/translated/build.js:2355 #: templates/js/translated/model_renderers.js:230 @@ -8599,32 +8669,32 @@ msgstr "" msgid "Test" msgstr "" -#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2412 msgid "Result" msgstr "" -#: report/templates/report/inventree_test_report.html:130 +#: report/templates/report/inventree_test_report.html:129 msgid "Pass" msgstr "" -#: report/templates/report/inventree_test_report.html:132 +#: report/templates/report/inventree_test_report.html:131 msgid "Fail" msgstr "" -#: report/templates/report/inventree_test_report.html:139 +#: report/templates/report/inventree_test_report.html:138 msgid "No result (required)" msgstr "" -#: report/templates/report/inventree_test_report.html:141 +#: report/templates/report/inventree_test_report.html:140 msgid "No result" msgstr "" -#: report/templates/report/inventree_test_report.html:154 +#: report/templates/report/inventree_test_report.html:153 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "" -#: report/templates/report/inventree_test_report.html:168 stock/admin.py:162 +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 #: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 #: templates/js/translated/stock.js:3110 msgid "Serial" @@ -8646,654 +8716,670 @@ msgstr "" msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:172 +#: stock/admin.py:51 stock/admin.py:171 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:176 +#: stock/admin.py:53 stock/admin.py:175 msgid "Location Name" msgstr "" -#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/admin.py:63 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:149 +#: stock/admin.py:148 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:168 +#: stock/admin.py:167 msgid "Status Code" msgstr "" -#: stock/admin.py:180 +#: stock/admin.py:179 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:185 +#: stock/admin.py:184 +msgid "Supplier Part SKU" +msgstr "" + +#: stock/admin.py:189 msgid "Supplier ID" msgstr "" -#: stock/admin.py:191 +#: stock/admin.py:195 msgid "Supplier Name" msgstr "" -#: stock/admin.py:196 +#: stock/admin.py:200 msgid "Customer ID" msgstr "" -#: stock/admin.py:201 stock/models.py:806 +#: stock/admin.py:205 stock/models.py:804 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:206 +#: stock/admin.py:210 msgid "Build ID" msgstr "" -#: stock/admin.py:216 +#: stock/admin.py:220 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:221 +#: stock/admin.py:225 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:236 +#: stock/admin.py:240 msgid "Review Needed" msgstr "" -#: stock/admin.py:241 +#: stock/admin.py:245 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:256 stock/models.py:900 +#: stock/admin.py:260 stock/models.py:898 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "" -#: stock/api.py:318 +#: stock/api.py:312 msgid "Filter by location depth" msgstr "" -#: stock/api.py:338 +#: stock/api.py:332 +msgid "Filter by top-level locations" +msgstr "" + +#: stock/api.py:347 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:359 +#: stock/api.py:369 stock/serializers.py:1085 msgid "Parent Location" msgstr "" -#: stock/api.py:360 +#: stock/api.py:370 msgid "Filter by parent location" msgstr "" -#: stock/api.py:615 templates/js/translated/table_filters.js:427 +#: stock/api.py:625 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:803 +#: stock/api.py:813 msgid "Part Tree" msgstr "" -#: stock/api.py:833 +#: stock/api.py:843 msgid "Expiry date before" msgstr "" -#: stock/api.py:837 +#: stock/api.py:847 msgid "Expiry date after" msgstr "" -#: stock/api.py:840 stock/templates/stock/item_base.html:439 +#: stock/api.py:850 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:927 +#: stock/api.py:937 msgid "Quantity is required" msgstr "" -#: stock/api.py:933 +#: stock/api.py:943 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:964 +#: stock/api.py:974 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:974 +#: stock/api.py:984 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:1005 +#: stock/api.py:1015 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:59 +#: stock/models.py:60 msgid "Stock Location type" msgstr "" -#: stock/models.py:60 +#: stock/models.py:61 msgid "Stock Location types" msgstr "" -#: stock/models.py:86 +#: stock/models.py:87 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:123 stock/models.py:788 +#: stock/models.py:124 stock/models.py:786 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:124 stock/templates/stock/location.html:186 +#: stock/models.py:125 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "" -#: stock/models.py:166 stock/models.py:949 +#: stock/models.py:167 stock/models.py:947 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:167 stock/models.py:950 +#: stock/models.py:168 stock/models.py:948 msgid "Select Owner" msgstr "" -#: stock/models.py:175 +#: stock/models.py:176 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:182 templates/js/translated/stock.js:2781 +#: stock/models.py:183 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:183 +#: stock/models.py:184 msgid "This is an external stock location" msgstr "" -#: stock/models.py:189 templates/js/translated/stock.js:2790 +#: stock/models.py:190 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" -#: stock/models.py:193 +#: stock/models.py:194 msgid "Stock location type of this location" msgstr "" -#: stock/models.py:262 +#: stock/models.py:261 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:643 +#: stock/models.py:641 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:670 stock/serializers.py:419 +#: stock/models.py:668 stock/serializers.py:446 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:687 +#: stock/models.py:685 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:697 stock/models.py:710 +#: stock/models.py:695 stock/models.py:708 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:700 +#: stock/models.py:698 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:724 +#: stock/models.py:722 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:729 +#: stock/models.py:727 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:742 +#: stock/models.py:740 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:758 +#: stock/models.py:756 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:770 +#: stock/models.py:768 msgid "Base part" msgstr "" -#: stock/models.py:780 +#: stock/models.py:778 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:792 +#: stock/models.py:790 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:800 stock/serializers.py:1480 +#: stock/models.py:798 stock/serializers.py:1476 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:811 +#: stock/models.py:809 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:830 +#: stock/models.py:828 msgid "Serial number for this item" msgstr "" -#: stock/models.py:844 stock/serializers.py:1463 +#: stock/models.py:842 stock/serializers.py:1459 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:849 +#: stock/models.py:847 msgid "Stock Quantity" msgstr "" -#: stock/models.py:859 +#: stock/models.py:857 msgid "Source Build" msgstr "" -#: stock/models.py:862 +#: stock/models.py:860 msgid "Build for this stock item" msgstr "" -#: stock/models.py:869 stock/templates/stock/item_base.html:363 +#: stock/models.py:867 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:872 +#: stock/models.py:870 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:881 +#: stock/models.py:879 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:885 +#: stock/models.py:883 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:891 +#: stock/models.py:889 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:902 +#: stock/models.py:900 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:920 +#: stock/models.py:918 msgid "Delete on deplete" msgstr "" -#: stock/models.py:921 +#: stock/models.py:919 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:941 +#: stock/models.py:939 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:972 +#: stock/models.py:970 msgid "Converted to part" msgstr "" -#: stock/models.py:1490 +#: stock/models.py:1486 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1496 +#: stock/models.py:1492 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1500 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1510 +#: stock/models.py:1506 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1515 +#: stock/models.py:1511 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1523 stock/serializers.py:658 +#: stock/models.py:1519 stock/serializers.py:660 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1620 +#: stock/models.py:1616 msgid "Test template does not exist" msgstr "" -#: stock/models.py:1638 +#: stock/models.py:1634 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1642 +#: stock/models.py:1638 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1645 +#: stock/models.py:1641 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1648 +#: stock/models.py:1644 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1651 +#: stock/models.py:1647 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1654 +#: stock/models.py:1650 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1661 stock/serializers.py:1369 +#: stock/models.py:1657 stock/serializers.py:1365 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1665 +#: stock/models.py:1661 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1673 +#: stock/models.py:1669 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1678 +#: stock/models.py:1674 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1905 +#: stock/models.py:1901 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2310 msgid "Entry notes" msgstr "" -#: stock/models.py:2391 +#: stock/models.py:2378 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2396 +#: stock/models.py:2383 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2423 +#: stock/models.py:2388 +msgid "Invalid value for this test" +msgstr "" + +#: stock/models.py:2412 msgid "Test result" msgstr "" -#: stock/models.py:2430 +#: stock/models.py:2419 msgid "Test output value" msgstr "" -#: stock/models.py:2438 +#: stock/models.py:2427 msgid "Test result attachment" msgstr "" -#: stock/models.py:2442 +#: stock/models.py:2431 msgid "Test notes" msgstr "" -#: stock/models.py:2450 templates/js/translated/stock.js:1548 +#: stock/models.py:2439 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2440 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2457 +#: stock/models.py:2446 msgid "Started" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2447 msgid "The timestamp of the test start" msgstr "" -#: stock/models.py:2464 +#: stock/models.py:2453 msgid "Finished" msgstr "" -#: stock/models.py:2465 +#: stock/models.py:2454 msgid "The timestamp of the test finish" msgstr "" -#: stock/serializers.py:75 +#: stock/serializers.py:74 msgid "Generated batch code" msgstr "" -#: stock/serializers.py:84 +#: stock/serializers.py:83 msgid "Select build order" msgstr "" -#: stock/serializers.py:93 +#: stock/serializers.py:92 msgid "Select stock item to generate batch code for" msgstr "" -#: stock/serializers.py:102 +#: stock/serializers.py:101 msgid "Select location to generate batch code for" msgstr "" -#: stock/serializers.py:111 +#: stock/serializers.py:110 msgid "Select part to generate batch code for" msgstr "" -#: stock/serializers.py:120 +#: stock/serializers.py:119 msgid "Select purchase order" msgstr "" -#: stock/serializers.py:127 +#: stock/serializers.py:126 msgid "Enter quantity for batch code" msgstr "" -#: stock/serializers.py:150 +#: stock/serializers.py:149 msgid "Generated serial number" msgstr "" -#: stock/serializers.py:159 +#: stock/serializers.py:158 msgid "Select part to generate serial number for" msgstr "" -#: stock/serializers.py:167 +#: stock/serializers.py:166 msgid "Quantity of serial numbers to generate" msgstr "" -#: stock/serializers.py:229 +#: stock/serializers.py:228 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:248 +#: stock/serializers.py:247 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:280 +#: stock/serializers.py:279 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:313 +#: stock/serializers.py:315 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:411 +#: stock/serializers.py:438 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:531 +#: stock/serializers.py:558 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:595 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:606 +#: stock/serializers.py:608 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:613 +#: stock/serializers.py:615 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 +#: stock/serializers.py:626 stock/serializers.py:1322 stock/serializers.py:1578 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:631 +#: stock/serializers.py:633 msgid "Optional note field" msgstr "" -#: stock/serializers.py:641 +#: stock/serializers.py:643 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:696 +#: stock/serializers.py:698 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:703 +#: stock/serializers.py:705 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:704 +#: stock/serializers.py:706 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 -#: stock/serializers.py:935 +#: stock/serializers.py:711 stock/serializers.py:791 stock/serializers.py:887 +#: stock/serializers.py:937 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:719 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:725 +#: stock/serializers.py:727 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:736 +#: stock/serializers.py:738 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:749 +#: stock/serializers.py:751 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:784 +#: stock/serializers.py:786 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:819 +#: stock/serializers.py:821 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:834 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:849 +#: stock/serializers.py:851 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:880 +#: stock/serializers.py:882 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:917 +#: stock/serializers.py:919 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:923 +#: stock/serializers.py:925 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:1019 stock/serializers.py:1082 +#: stock/serializers.py:1021 stock/serializers.py:1093 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:220 +#: stock/templates/stock/location.html:222 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1198 +#: stock/serializers.py:1086 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: stock/serializers.py:1194 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1202 +#: stock/serializers.py:1198 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1206 +#: stock/serializers.py:1202 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1230 +#: stock/serializers.py:1226 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1236 +#: stock/serializers.py:1232 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1244 +#: stock/serializers.py:1240 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1254 stock/serializers.py:1508 +#: stock/serializers.py:1250 stock/serializers.py:1504 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1333 +#: stock/serializers.py:1329 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1338 +#: stock/serializers.py:1334 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1339 +#: stock/serializers.py:1335 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1344 +#: stock/serializers.py:1340 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1345 +#: stock/serializers.py:1341 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1355 +#: stock/serializers.py:1351 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1422 +#: stock/serializers.py:1418 msgid "No Change" msgstr "" -#: stock/serializers.py:1451 +#: stock/serializers.py:1447 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1470 +#: stock/serializers.py:1466 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1498 +#: stock/serializers.py:1494 msgid "Stock transaction notes" msgstr "" @@ -9446,7 +9532,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276 msgid "Delete Test Data" msgstr "" @@ -9466,11 +9552,11 @@ msgstr "" msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:272 +#: stock/templates/stock/item.html:264 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "" @@ -9756,28 +9842,28 @@ msgstr "" msgid "Location Type" msgstr "" -#: stock/templates/stock/location.html:224 +#: stock/templates/stock/location.html:226 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:225 +#: stock/templates/stock/location.html:227 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:295 +#: stock/templates/stock/location.html:299 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:317 +#: stock/templates/stock/location.html:321 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:390 +#: stock/templates/stock/location.html:394 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:401 +#: stock/templates/stock/location.html:405 msgid "Link Barcode to Stock Location" msgstr "" @@ -10201,20 +10287,20 @@ msgstr "" msgid "Pricing Settings" msgstr "" -#: templates/InvenTree/settings/pricing.html:34 +#: templates/InvenTree/settings/pricing.html:35 msgid "Exchange Rates" msgstr "" -#: templates/InvenTree/settings/pricing.html:38 +#: templates/InvenTree/settings/pricing.html:39 msgid "Update Now" msgstr "" -#: templates/InvenTree/settings/pricing.html:46 -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 msgid "Last Update" msgstr "" -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:51 msgid "Never" msgstr "" @@ -10271,8 +10357,8 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:547 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 +#: templates/js/translated/part.js:393 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:402 msgid "Delete" msgstr "" @@ -10312,12 +10398,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 -#: templates/js/translated/part.js:1645 +#: templates/js/translated/part.js:1646 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 -#: templates/js/translated/part.js:1646 +#: templates/js/translated/part.js:1647 msgid "Delete Template" msgstr "" @@ -10707,7 +10793,7 @@ msgid "Submit Bug Report" msgstr "" #: templates/about.html:91 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 +#: templates/js/translated/helpers.js:589 msgid "copy to clipboard" msgstr "" @@ -10771,7 +10857,7 @@ 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 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45 msgid "Return to Site" msgstr "" @@ -10885,15 +10971,19 @@ msgstr "" msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "" -#: templates/allauth_2fa/setup.html:23 +#: templates/allauth_2fa/setup.html:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 msgid "Step 2" msgstr "" -#: templates/allauth_2fa/setup.html:27 +#: templates/allauth_2fa/setup.html:28 msgid "Input a token generated by the app:" msgstr "" -#: templates/allauth_2fa/setup.html:37 +#: templates/allauth_2fa/setup.html:38 msgid "Verify" msgstr "" @@ -10972,7 +11062,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3217 +#: templates/js/translated/part.js:3219 msgid "Minimum Quantity" msgstr "" @@ -11060,27 +11150,27 @@ msgstr "" msgid "Delete attachments" msgstr "" -#: templates/js/translated/attachment.js:253 +#: templates/js/translated/attachment.js:260 msgid "Attachment actions" msgstr "" -#: templates/js/translated/attachment.js:275 +#: templates/js/translated/attachment.js:294 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:315 +#: templates/js/translated/attachment.js:334 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:365 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:366 +#: templates/js/translated/attachment.js:385 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:374 +#: templates/js/translated/attachment.js:393 msgid "Delete attachment" msgstr "" @@ -11361,7 +11451,7 @@ msgid "Includes variant and substitute stock" msgstr "" #: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 -#: templates/js/translated/part.js:1256 +#: templates/js/translated/part.js:1257 #: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" @@ -11688,7 +11778,7 @@ msgstr "" #: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 #: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 -#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11731,8 +11821,8 @@ msgstr "" msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 -#: templates/js/translated/part.js:1202 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:791 +#: templates/js/translated/part.js:1203 msgid "Trackable part" msgstr "" @@ -11918,7 +12008,7 @@ msgid "Delete Parameters" msgstr "" #: templates/js/translated/company.js:1191 -#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2244 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2245 msgid "Order parts" msgstr "" @@ -11935,34 +12025,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:1279 -#: templates/js/translated/company.js:1567 templates/js/translated/part.js:798 -#: templates/js/translated/part.js:1210 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Template part" msgstr "" #: templates/js/translated/company.js:1283 -#: templates/js/translated/company.js:1571 templates/js/translated/part.js:802 -#: templates/js/translated/part.js:1214 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:803 +#: templates/js/translated/part.js:1215 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1464 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1465 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1527 +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1528 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1528 +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1529 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1433 +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1434 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1549 +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1550 msgid "Delete Parameter" msgstr "" @@ -12096,23 +12186,23 @@ msgstr "" msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2499 +#: templates/js/translated/forms.js:2500 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3113 +#: templates/js/translated/forms.js:3114 msgid "Select Columns" msgstr "" @@ -12213,7 +12303,7 @@ msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 -#: templates/js/translated/part.js:1604 +#: templates/js/translated/part.js:1605 msgid "ID" msgstr "" @@ -12294,347 +12384,343 @@ msgstr "" 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 +#: templates/js/translated/part.js:333 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:355 +#: templates/js/translated/part.js:356 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:356 +#: templates/js/translated/part.js:357 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:370 +#: templates/js/translated/part.js:371 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:383 +#: templates/js/translated/part.js:384 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:388 +#: templates/js/translated/part.js:389 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:397 +#: templates/js/translated/part.js:398 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:401 +#: templates/js/translated/part.js:402 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:406 +#: templates/js/translated/part.js:407 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:430 +#: templates/js/translated/part.js:431 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:432 +#: templates/js/translated/part.js:433 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:433 +#: templates/js/translated/part.js:434 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:462 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:463 +#: templates/js/translated/part.js:464 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:474 +#: templates/js/translated/part.js:475 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:531 +#: templates/js/translated/part.js:532 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:532 +#: templates/js/translated/part.js:533 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:546 +#: templates/js/translated/part.js:547 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:548 +#: templates/js/translated/part.js:549 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:549 +#: templates/js/translated/part.js:550 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:550 +#: templates/js/translated/part.js:551 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:557 +#: templates/js/translated/part.js:558 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:593 +#: templates/js/translated/part.js:594 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:595 +#: templates/js/translated/part.js:596 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:600 +#: templates/js/translated/part.js:601 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:602 +#: templates/js/translated/part.js:603 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:619 +#: templates/js/translated/part.js:620 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:629 +#: templates/js/translated/part.js:630 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:632 +#: templates/js/translated/part.js:633 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:657 +#: templates/js/translated/part.js:658 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:685 +#: templates/js/translated/part.js:686 #: templates/js/translated/table_filters.js:747 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:688 +#: templates/js/translated/part.js:689 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:748 +#: templates/js/translated/part.js:749 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:771 +#: templates/js/translated/part.js:772 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +#: templates/js/translated/part.js:795 templates/js/translated/part.js:1207 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:806 +#: templates/js/translated/part.js:807 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:810 +#: templates/js/translated/part.js:811 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:897 +#: templates/js/translated/part.js:898 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:901 +#: templates/js/translated/part.js:902 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1050 +#: templates/js/translated/part.js:1051 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1145 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +#: templates/js/translated/part.js:1113 templates/js/translated/part.js:1155 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1281 +#: templates/js/translated/part.js:1282 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1599 +#: templates/js/translated/part.js:1600 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1662 +#: templates/js/translated/part.js:1663 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1674 +#: templates/js/translated/part.js:1675 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1682 +#: templates/js/translated/part.js:1683 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1716 +#: templates/js/translated/part.js:1717 #: templates/js/translated/purchase_order.js:1654 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1860 +#: templates/js/translated/part.js:1861 #: templates/js/translated/purchase_order.js:2153 #: templates/js/translated/return_order.js:755 #: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1906 +#: templates/js/translated/part.js:1907 #: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1970 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1991 +#: templates/js/translated/part.js:1992 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 +#: templates/js/translated/part.js:2080 templates/js/translated/part.js:2506 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2200 +#: templates/js/translated/part.js:2201 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2205 +#: templates/js/translated/part.js:2206 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2235 +#: templates/js/translated/part.js:2236 msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2286 +#: templates/js/translated/part.js:2287 msgid "part" msgstr "" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2288 msgid "parts" msgstr "" -#: templates/js/translated/part.js:2383 +#: templates/js/translated/part.js:2384 msgid "No category" msgstr "" -#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2546 +#: templates/js/translated/part.js:2547 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2644 +#: templates/js/translated/part.js:2645 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2760 +#: templates/js/translated/part.js:2761 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2776 +#: templates/js/translated/part.js:2777 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2865 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2887 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/part.js:2938 templates/js/translated/stock.js:1457 #: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2940 +#: templates/js/translated/part.js:2942 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2956 +#: templates/js/translated/part.js:2958 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2970 +#: templates/js/translated/part.js:2972 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3051 templates/js/translated/part.js:3052 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3052 +#: templates/js/translated/part.js:3054 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3058 +#: templates/js/translated/part.js:3060 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3108 +#: templates/js/translated/part.js:3110 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3114 +#: templates/js/translated/part.js:3116 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3210 +#: templates/js/translated/part.js:3212 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3226 +#: templates/js/translated/part.js:3228 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3271 +#: templates/js/translated/part.js:3273 msgid "Minimum Stock Level" msgstr "" @@ -13242,10 +13328,6 @@ msgstr "" 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 "" @@ -13414,7 +13496,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:401 +#: templates/js/translated/stock.js:1042 users/models.py:392 msgid "Add" msgstr "" @@ -14305,34 +14387,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:384 +#: users/models.py:375 msgid "Permission set" msgstr "" -#: users/models.py:393 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "View" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "Permission to view items" msgstr "" -#: users/models.py:401 +#: users/models.py:392 msgid "Permission to add items" msgstr "" -#: users/models.py:405 +#: users/models.py:396 msgid "Change" msgstr "" -#: users/models.py:407 +#: users/models.py:398 msgid "Permissions to edit items" msgstr "" -#: users/models.py:413 +#: users/models.py:404 msgid "Permission to delete items" msgstr "" + diff --git a/src/backend/InvenTree/locale/de/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/de/LC_MESSAGES/django.po index 489cd55ac6..757418ef2c 100644 --- a/src/backend/InvenTree/locale/de/LC_MESSAGES/django.po +++ b/src/backend/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-05-31 07:08+0000\n" -"PO-Revision-Date: 2024-05-27 11:54\n" +"POT-Creation-Date: 2024-06-26 03:18+0000\n" +"PO-Revision-Date: 2024-06-26 06:04\n" "Last-Translator: \n" "Language-Team: German\n" "Language: de_DE\n" @@ -21,7 +21,7 @@ msgstr "" msgid "API endpoint not found" msgstr "API-Endpunkt nicht gefunden" -#: InvenTree/api.py:536 +#: InvenTree/api.py:520 msgid "User does not have permission to view this model" msgstr "Benutzer hat keine Berechtigung, dieses Modell anzuzeigen" @@ -52,25 +52,25 @@ msgstr "Ungültige Menge ({exc})" msgid "Error details can be found in the admin panel" msgstr "Fehlerdetails finden Sie im Admin-Panel" -#: InvenTree/fields.py:139 +#: InvenTree/fields.py:136 msgid "Enter date" msgstr "Datum eingeben" -#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 -#: build/serializers.py:531 build/templates/build/sidebar.html:21 -#: company/models.py:849 company/templates/company/sidebar.html:37 -#: order/models.py:1332 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:205 InvenTree/models.py:918 build/serializers.py:452 +#: build/serializers.py:530 build/templates/build/sidebar.html:21 +#: company/models.py:817 company/templates/company/sidebar.html:37 +#: order/models.py:1296 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:3218 part/templates/part/part_sidebar.html:63 +#: part/models.py:3183 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_report.html:172 -#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 -#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 -#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 -#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:230 stock/models.py:2309 stock/models.py:2431 +#: stock/serializers.py:632 stock/serializers.py:790 stock/serializers.py:886 +#: stock/serializers.py:936 stock/serializers.py:1239 stock/serializers.py:1328 +#: stock/serializers.py:1493 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1080 +#: templates/js/translated/part.js:1081 #: templates/js/translated/purchase_order.js:2200 #: templates/js/translated/return_order.js:775 #: templates/js/translated/sales_order.js:1103 @@ -120,15 +120,15 @@ msgstr "Bestätigung der E-Mail Adresse" msgid "You must type the same email each time." msgstr "E-Mail Adressen müssen übereinstimmen." -#: InvenTree/forms.py:253 InvenTree/forms.py:261 +#: InvenTree/forms.py:248 InvenTree/forms.py:256 msgid "The provided primary email address is not valid." msgstr "Die angegebene primäre E-Mail-Adresse ist ungültig." -#: InvenTree/forms.py:268 +#: InvenTree/forms.py:263 msgid "The provided email domain is not approved." msgstr "Die angegebene E-Mail-Domain ist nicht freigegeben." -#: InvenTree/forms.py:395 +#: InvenTree/forms.py:390 msgid "Registration is disabled." msgstr "Registrierung ist deaktiviert." @@ -171,35 +171,35 @@ msgstr "Anzahl der eindeutigen Seriennummern ({len(serials)}) muss mit der Menge msgid "Remove HTML tags from this value" msgstr "Entferne HTML-Tags von diesem Wert" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Connection error" msgstr "Verbindungsfehler" -#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 msgid "Server responded with invalid status code" msgstr "Server antwortete mit ungültigem Statuscode" -#: InvenTree/helpers_model.py:158 +#: InvenTree/helpers_model.py:148 msgid "Exception occurred" msgstr "Ausnahme aufgetreten" -#: InvenTree/helpers_model.py:168 +#: InvenTree/helpers_model.py:158 msgid "Server responded with invalid Content-Length value" msgstr "Server antwortete mit ungültigem Wert für die Inhaltslänge" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:161 msgid "Image size is too large" msgstr "Bild ist zu groß" -#: InvenTree/helpers_model.py:183 +#: InvenTree/helpers_model.py:173 msgid "Image download exceeded maximum size" msgstr "Bilddownload überschreitet maximale Größe" -#: InvenTree/helpers_model.py:188 +#: InvenTree/helpers_model.py:178 msgid "Remote server returned empty response" msgstr "Remote-Server gab leere Antwort zurück" -#: InvenTree/helpers_model.py:196 +#: InvenTree/helpers_model.py:186 msgid "Supplied URL is not a valid image file" msgstr "Angegebene URL ist kein gültiges Bild" @@ -296,46 +296,50 @@ msgid "Portuguese (Brazilian)" msgstr "Portugiesisch (Brasilien)" #: InvenTree/locales.py:41 +msgid "Romanian" +msgstr "" + +#: InvenTree/locales.py:42 msgid "Russian" msgstr "Russisch" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:43 msgid "Slovak" msgstr "Slowakisch" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:44 msgid "Slovenian" msgstr "Slowenisch" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:45 msgid "Serbian" msgstr "Serbisch" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:46 msgid "Swedish" msgstr "Schwedisch" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:47 msgid "Thai" msgstr "Thailändisch" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:48 msgid "Turkish" msgstr "Türkisch" -#: InvenTree/locales.py:48 +#: InvenTree/locales.py:49 msgid "Ukrainian" msgstr "Ukrainisch" -#: InvenTree/locales.py:49 +#: InvenTree/locales.py:50 msgid "Vietnamese" msgstr "Vietnamesisch" -#: InvenTree/locales.py:50 +#: InvenTree/locales.py:51 msgid "Chinese (Simplified)" msgstr "Chinesisch (Vereinfacht)" -#: InvenTree/locales.py:51 +#: InvenTree/locales.py:52 msgid "Chinese (Traditional)" msgstr "Chinesisch (Traditionell)" @@ -344,153 +348,65 @@ msgstr "Chinesisch (Traditionell)" msgid "[{site_name}] Log in to the app" msgstr "[{site_name}] In App einloggen" -#: InvenTree/magic_login.py:38 company/models.py:133 +#: InvenTree/magic_login.py:38 company/models.py:136 #: company/templates/company/company_base.html:138 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:677 msgid "Email" msgstr "Email" -#: InvenTree/models.py:107 +#: InvenTree/models.py:105 msgid "Error running plugin validation" msgstr "Fehler beim Ausführen der Plugin Validierung" -#: InvenTree/models.py:176 +#: InvenTree/models.py:174 msgid "Metadata must be a python dict object" msgstr "Metadaten müssen ein Python-Dict Objekt sein" -#: InvenTree/models.py:182 +#: InvenTree/models.py:180 msgid "Plugin Metadata" msgstr "Plugin Metadaten" -#: InvenTree/models.py:183 +#: InvenTree/models.py:181 msgid "JSON metadata field, for use by external plugins" msgstr "JSON-Metadatenfeld, für die Verwendung durch externe Plugins" -#: InvenTree/models.py:413 +#: InvenTree/models.py:408 msgid "Improperly formatted pattern" msgstr "Falsch formatiertes Muster" -#: InvenTree/models.py:420 +#: InvenTree/models.py:415 msgid "Unknown format key specified" msgstr "Unbekannter Formatschlüssel angegeben" -#: InvenTree/models.py:426 +#: InvenTree/models.py:421 msgid "Missing required format key" msgstr "Erforderlicher Formatschlüssel fehlt" -#: InvenTree/models.py:437 +#: InvenTree/models.py:432 msgid "Reference field cannot be empty" msgstr "Referenz-Feld darf nicht leer sein" -#: InvenTree/models.py:445 +#: InvenTree/models.py:440 msgid "Reference must match required pattern" msgstr "Referenz muss erforderlichem Muster entsprechen" -#: InvenTree/models.py:476 +#: InvenTree/models.py:471 msgid "Reference number is too large" msgstr "Referenznummer ist zu groß" -#: InvenTree/models.py:550 -msgid "Missing file" -msgstr "Fehlende Datei" - -#: InvenTree/models.py:551 -msgid "Missing external link" -msgstr "Fehlender externer Link" - -#: InvenTree/models.py:572 stock/models.py:2437 -#: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:326 -msgid "Attachment" -msgstr "Anhang" - -#: InvenTree/models.py:573 -msgid "Select file to attach" -msgstr "Datei zum Anhängen auswählen" - -#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:831 -#: order/models.py:303 order/models.py:1337 order/models.py:1753 -#: part/admin.py:55 part/models.py:962 -#: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_report.html:164 -#: stock/admin.py:225 templates/js/translated/company.js:1319 -#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2455 -#: templates/js/translated/purchase_order.js:2040 -#: templates/js/translated/purchase_order.js:2204 -#: templates/js/translated/return_order.js:779 -#: templates/js/translated/sales_order.js:1092 -#: templates/js/translated/sales_order.js:2023 -msgid "Link" -msgstr "Link" - -#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 -#: stock/models.py:836 -msgid "Link to external URL" -msgstr "Link zu einer externen URL" - -#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:341 -msgid "Comment" -msgstr "Kommentar" - -#: InvenTree/models.py:589 -msgid "File comment" -msgstr "Datei-Kommentar" - -#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 -#: common/models.py:2518 common/models.py:2742 common/models.py:2743 -#: common/models.py:2988 common/models.py:2989 part/models.py:3228 -#: part/models.py:3315 part/models.py:3408 part/models.py:3436 -#: plugin/models.py:259 plugin/models.py:260 -#: report/templates/report/inventree_test_report.html:105 -#: templates/js/translated/stock.js:3036 users/models.py:111 -msgid "User" -msgstr "Benutzer" - -#: InvenTree/models.py:602 -msgid "upload date" -msgstr "Hochladedatum" - -#: InvenTree/models.py:624 -msgid "Filename must not be empty" -msgstr "Dateiname darf nicht leer sein" - -#: InvenTree/models.py:635 -msgid "Invalid attachment directory" -msgstr "Ungültiges Verzeichnis für Anhang" - -#: InvenTree/models.py:665 -#, python-brace-format -msgid "Filename contains illegal character '{c}'" -msgstr "Dateiname enthält ungültiges Zeichen '{c}'" - -#: InvenTree/models.py:668 -msgid "Filename missing extension" -msgstr "Dateiendung fehlt" - -#: InvenTree/models.py:677 -msgid "Attachment with this filename already exists" -msgstr "Anhang mit diesem Dateinamen bereits vorhanden" - -#: InvenTree/models.py:684 -msgid "Error renaming file" -msgstr "Fehler beim Umbenennen" - -#: InvenTree/models.py:860 +#: InvenTree/models.py:719 msgid "Duplicate names cannot exist under the same parent" msgstr "Doppelte Namen können nicht unter dem selben Elternteil existieren" -#: InvenTree/models.py:877 +#: InvenTree/models.py:736 msgid "Invalid choice" msgstr "Ungültige Auswahl" -#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 -#: common/serializers.py:403 company/models.py:614 machine/models.py:24 -#: part/models.py:898 part/models.py:3659 plugin/models.py:50 -#: report/models.py:149 stock/models.py:72 +#: InvenTree/models.py:766 common/models.py:2623 common/models.py:3036 +#: common/serializers.py:408 company/models.py:580 machine/models.py:24 +#: part/models.py:891 part/models.py:3639 plugin/models.py:51 +#: report/models.py:150 stock/models.py:73 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:83 @@ -501,25 +417,25 @@ msgstr "Ungültige Auswahl" #: templates/js/translated/company.js:724 #: templates/js/translated/company.js:913 #: templates/js/translated/company.js:1165 -#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 -#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1187 +#: templates/js/translated/part.js:1475 templates/js/translated/part.js:1611 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Name" -#: InvenTree/models.py:913 build/models.py:218 -#: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:523 company/models.py:840 +#: InvenTree/models.py:772 build/models.py:220 +#: build/templates/build/detail.html:24 common/models.py:138 +#: company/models.py:509 company/models.py:808 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 order/models.py:289 -#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 -#: part/models.py:3674 part/templates/part/category.html:82 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:914 +#: part/models.py:3654 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:155 -#: report/models.py:509 report/models.py:535 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 #: report/templates/report/inventree_build_order_report.html:117 -#: stock/admin.py:55 stock/models.py:78 stock/templates/stock/location.html:125 +#: stock/admin.py:54 stock/models.py:79 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 @@ -528,10 +444,10 @@ msgstr "Name" #: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 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:2354 -#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1239 +#: templates/js/translated/part.js:1484 templates/js/translated/part.js:1622 +#: templates/js/translated/part.js:1959 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2897 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1706 #: templates/js/translated/purchase_order.js:1849 @@ -544,149 +460,141 @@ msgstr "Name" msgid "Description" msgstr "Beschreibung" -#: InvenTree/models.py:914 stock/models.py:79 +#: InvenTree/models.py:773 stock/models.py:80 msgid "Description (optional)" msgstr "Beschreibung (optional)" -#: InvenTree/models.py:923 -msgid "parent" -msgstr "Eltern" - -#: InvenTree/models.py:929 templates/js/translated/part.js:2793 +#: InvenTree/models.py:788 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Pfad" -#: InvenTree/models.py:1035 +#: InvenTree/models.py:918 msgid "Markdown notes (optional)" msgstr "Markdown Notizen (optional)" -#: InvenTree/models.py:1064 +#: InvenTree/models.py:947 msgid "Barcode Data" msgstr "Barcode-Daten" -#: InvenTree/models.py:1065 +#: InvenTree/models.py:948 msgid "Third party barcode data" msgstr "Drittanbieter-Barcode-Daten" -#: InvenTree/models.py:1071 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "Barcode-Hash" -#: InvenTree/models.py:1072 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "Eindeutiger Hash der Barcode-Daten" -#: InvenTree/models.py:1125 +#: InvenTree/models.py:1008 msgid "Existing barcode found" msgstr "Bestehender Barcode gefunden" -#: InvenTree/models.py:1168 +#: InvenTree/models.py:1051 msgid "Server Error" msgstr "Serverfehler" -#: InvenTree/models.py:1169 +#: InvenTree/models.py:1052 msgid "An error has been logged by the server." msgstr "Ein Fehler wurde vom Server protokolliert." -#: InvenTree/serializers.py:62 part/models.py:4212 +#: InvenTree/serializers.py:63 part/models.py:4192 msgid "Must be a valid number" msgstr "Muss eine gültige Nummer sein" -#: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:3036 +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3001 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Währung" -#: InvenTree/serializers.py:102 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "Währung aus verfügbaren Optionen auswählen" -#: InvenTree/serializers.py:441 +#: InvenTree/serializers.py:442 msgid "You do not have permission to change this user role." msgstr "Sie haben keine Berechtigung, diese Benutzerrolle zu ändern." -#: InvenTree/serializers.py:453 +#: InvenTree/serializers.py:454 msgid "Only superusers can create new users" msgstr "Nur Superuser können neue Benutzer erstellen" -#: InvenTree/serializers.py:472 +#: InvenTree/serializers.py:473 msgid "Your account has been created." msgstr "Ihr Konto wurde erstellt." -#: InvenTree/serializers.py:474 +#: InvenTree/serializers.py:475 msgid "Please use the password reset function to login" msgstr "Bitte benutzen Sie die Passwort-zurücksetzen-Funktion, um sich anzumelden" -#: InvenTree/serializers.py:481 +#: InvenTree/serializers.py:482 msgid "Welcome to InvenTree" msgstr "Willkommen bei InvenTree" -#: InvenTree/serializers.py:542 -msgid "Filename" -msgstr "Dateiname" - -#: InvenTree/serializers.py:576 +#: InvenTree/serializers.py:540 msgid "Invalid value" msgstr "Ungültiger Wert" -#: InvenTree/serializers.py:596 +#: InvenTree/serializers.py:560 msgid "Data File" msgstr "Datendatei" -#: InvenTree/serializers.py:597 +#: InvenTree/serializers.py:561 msgid "Select data file for upload" msgstr "Neue Datei zum Hochladen auswählen" -#: InvenTree/serializers.py:614 +#: InvenTree/serializers.py:578 msgid "Unsupported file type" msgstr "Nicht unterstütztes Dateiformat" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:584 msgid "File is too large" msgstr "Datei ist zu groß" -#: InvenTree/serializers.py:641 +#: InvenTree/serializers.py:605 msgid "No columns found in file" msgstr "Keine Spalten in der Datei gefunden" -#: InvenTree/serializers.py:644 +#: InvenTree/serializers.py:608 msgid "No data rows found in file" msgstr "Keine Datensätze in der Datei gefunden" -#: InvenTree/serializers.py:757 +#: InvenTree/serializers.py:721 msgid "No data rows provided" msgstr "Keine Zeilen ausgewählt" -#: InvenTree/serializers.py:760 +#: InvenTree/serializers.py:724 msgid "No data columns supplied" msgstr "Keine Spalten angegeben" -#: InvenTree/serializers.py:827 +#: InvenTree/serializers.py:791 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Erforderliche Spalte '{name}' fehlt" -#: InvenTree/serializers.py:836 +#: InvenTree/serializers.py:800 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Doppelte Spalte: '{col}'" -#: InvenTree/serializers.py:859 +#: InvenTree/serializers.py:840 msgid "Remote Image" msgstr "Grafiken aus externen Quellen" -#: InvenTree/serializers.py:860 +#: InvenTree/serializers.py:841 msgid "URL of remote image file" msgstr "URL der Remote-Bilddatei" -#: InvenTree/serializers.py:878 +#: InvenTree/serializers.py:859 msgid "Downloading images from remote URL is not enabled" msgstr "Das Herunterladen von Bildern von Remote-URLs ist nicht aktiviert" -#: InvenTree/status.py:66 part/serializers.py:1178 +#: InvenTree/status.py:66 part/serializers.py:1174 msgid "Background worker check failed" msgstr "Hintergrund-Prozess-Kontrolle fehlgeschlagen" @@ -698,27 +606,27 @@ msgstr "E-Mail-Backend nicht konfiguriert" msgid "InvenTree system health checks failed" msgstr "InvenTree Status-Überprüfung fehlgeschlagen" -#: InvenTree/templatetags/inventree_extras.py:183 +#: InvenTree/templatetags/inventree_extras.py:184 msgid "Unknown database" msgstr "Unbekannte Datenbank" -#: InvenTree/validators.py:31 InvenTree/validators.py:33 +#: InvenTree/validators.py:32 InvenTree/validators.py:34 msgid "Invalid physical unit" msgstr "Ungültige physikalische Einheit" -#: InvenTree/validators.py:39 +#: InvenTree/validators.py:40 msgid "Not a valid currency code" msgstr "Kein gültiger Währungscode" -#: InvenTree/validators.py:121 InvenTree/validators.py:137 +#: InvenTree/validators.py:118 InvenTree/validators.py:134 msgid "Overage value must not be negative" msgstr "Überschuss-Wert darf nicht negativ sein" -#: InvenTree/validators.py:139 +#: InvenTree/validators.py:136 msgid "Overage must not exceed 100%" msgstr "Überschuss darf 100% nicht überschreiten" -#: InvenTree/validators.py:145 +#: InvenTree/validators.py:142 msgid "Invalid value for overage" msgstr "Ungültiger Wert für Ausschuss" @@ -750,14 +658,14 @@ 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:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: build/api.py:299 part/models.py:4070 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "Verbrauchsmaterial" -#: build/api.py:300 part/models.py:4084 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4064 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2529 #: templates/js/translated/table_filters.js:186 @@ -778,30 +686,30 @@ msgstr "Nachverfolgt" msgid "Allocated" msgstr "Zugeordnet" -#: build/api.py:311 company/models.py:904 company/serializers.py:383 +#: build/api.py:311 company/models.py:872 company/serializers.py:359 #: 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:2561 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:234 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 -#: templates/js/translated/part.js:699 +#: templates/js/translated/part.js:693 templates/js/translated/part.js:695 +#: templates/js/translated/part.js:700 #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:575 msgid "Available" msgstr "Verfügbar" -#: build/models.py:83 build/templates/build/build_base.html:9 +#: build/models.py:85 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_report.html:105 -#: stock/serializers.py:83 templates/email/build_order_completed.html:16 +#: stock/serializers.py:82 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:2892 msgid "Build Order" msgstr "Bauauftrag" -#: build/models.py:84 build/templates/build/build_base.html:13 +#: build/models.py:86 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 @@ -812,25 +720,25 @@ msgstr "Bauauftrag" msgid "Build Orders" msgstr "Bauaufträge" -#: build/models.py:131 +#: build/models.py:133 msgid "Invalid choice for parent build" msgstr "Ungültige Wahl für übergeordneten Bauauftrag" -#: build/models.py:142 order/models.py:240 +#: build/models.py:144 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "Verantwortlicher Benutzer oder Gruppe muss angegeben werden" -#: build/models.py:148 +#: build/models.py:150 msgid "Build order part cannot be changed" msgstr "Teil in Bauauftrag kann nicht geändert werden" -#: build/models.py:209 +#: build/models.py:211 msgid "Build Order Reference" msgstr "Bauauftragsreferenz" -#: build/models.py:210 order/models.py:463 order/models.py:928 -#: order/models.py:1325 order/models.py:2056 part/admin.py:419 -#: part/models.py:4105 part/templates/part/upload_bom.html:54 +#: build/models.py:212 order/models.py:463 order/models.py:926 +#: order/models.py:1289 order/models.py:2020 part/admin.py:411 +#: part/models.py:4085 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_purchase_order_report.html:28 #: report/templates/report/inventree_return_order_report.html:26 @@ -844,27 +752,27 @@ msgstr "Bauauftragsreferenz" msgid "Reference" msgstr "Referenz" -#: build/models.py:221 +#: build/models.py:223 msgid "Brief description of the build (optional)" msgstr "Kurze Beschreibung des Baus (optional)" -#: build/models.py:229 build/templates/build/build_base.html:183 +#: build/models.py:231 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Eltern-Bauauftrag" -#: build/models.py:230 +#: build/models.py:232 msgid "BuildOrder to which this build is allocated" msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist" -#: build/models.py:235 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 -#: order/models.py:1450 order/models.py:1595 order/models.py:1596 -#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 -#: part/models.py:3191 part/models.py:3335 part/models.py:3358 -#: part/models.py:3379 part/models.py:3401 part/models.py:3511 -#: part/models.py:3807 part/models.py:3963 part/models.py:4056 -#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 +#: build/models.py:237 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1026 order/api.py:805 +#: order/models.py:1414 order/models.py:1559 order/models.py:1560 +#: part/api.py:1494 part/api.py:1788 part/models.py:395 part/models.py:3012 +#: part/models.py:3156 part/models.py:3303 part/models.py:3324 +#: part/models.py:3346 part/models.py:3477 part/models.py:3787 +#: part/models.py:3943 part/models.py:4036 part/models.py:4395 +#: part/serializers.py:1120 part/serializers.py:1726 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -875,8 +783,8 @@ msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist" #: report/templates/report/inventree_return_order_report.html:24 #: report/templates/report/inventree_sales_order_report.html:27 #: report/templates/report/inventree_stock_location_report.html:102 -#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 -#: stock/serializers.py:818 templates/InvenTree/search.html:82 +#: stock/serializers.py:109 stock/serializers.py:157 stock/serializers.py:423 +#: stock/serializers.py:820 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 @@ -889,8 +797,8 @@ msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist" #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 -#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2323 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:1944 templates/js/translated/part.js:2016 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 #: templates/js/translated/purchase_order.js:751 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1848 @@ -908,107 +816,107 @@ msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist" msgid "Part" msgstr "Teil" -#: build/models.py:243 +#: build/models.py:245 msgid "Select part to build" msgstr "Teil für den Bauauftrag wählen" -#: build/models.py:248 +#: build/models.py:250 msgid "Sales Order Reference" msgstr "Auftrag Referenz" -#: build/models.py:252 +#: build/models.py:254 msgid "SalesOrder to which this build is allocated" msgstr "Bestellung, die diesem Bauauftrag zugewiesen ist" -#: build/models.py:257 build/serializers.py:1000 +#: build/models.py:259 build/serializers.py:999 #: templates/js/translated/build.js:1731 #: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "Quell-Lagerort" -#: build/models.py:261 +#: build/models.py:263 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:266 +#: build/models.py:268 msgid "Destination Location" msgstr "Ziel-Lagerort" -#: build/models.py:270 +#: build/models.py:272 msgid "Select location where the completed items will be stored" msgstr "Lagerort an dem fertige Objekte gelagert werden auswählen" -#: build/models.py:274 +#: build/models.py:276 msgid "Build Quantity" msgstr "Bau-Anzahl" -#: build/models.py:277 +#: build/models.py:279 msgid "Number of stock items to build" msgstr "Anzahl der zu bauenden Lagerartikel" -#: build/models.py:281 +#: build/models.py:283 msgid "Completed items" msgstr "Fertiggestellte Teile" -#: build/models.py:283 +#: build/models.py:285 msgid "Number of stock items which have been completed" msgstr "Anzahl der fertigen Lagerartikel" -#: build/models.py:287 +#: build/models.py:289 msgid "Build Status" msgstr "Bauauftrags-Status" -#: build/models.py:291 +#: build/models.py:293 msgid "Build status code" msgstr "Bau-Statuscode" -#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 -#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 +#: build/models.py:302 build/serializers.py:286 order/serializers.py:580 +#: stock/models.py:838 stock/serializers.py:74 stock/serializers.py:1458 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Losnummer" -#: build/models.py:304 build/serializers.py:288 +#: build/models.py:306 build/serializers.py:287 msgid "Batch code for this build output" msgstr "Losnummer für dieses Endprodukt" -#: build/models.py:307 order/models.py:316 order/serializers.py:120 -#: part/models.py:1122 part/templates/part/part_base.html:310 +#: build/models.py:309 order/models.py:316 order/serializers.py:119 +#: part/models.py:1115 part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:338 #: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "Erstelldatum" -#: build/models.py:311 +#: build/models.py:313 msgid "Target completion date" msgstr "geplantes Fertigstellungsdatum" -#: build/models.py:312 +#: build/models.py:314 msgid "Target date for build completion. Build will be overdue after this date." msgstr "Zieldatum für Bauauftrag-Fertigstellung." -#: build/models.py:315 order/models.py:521 order/models.py:2101 +#: build/models.py:317 order/models.py:521 order/models.py:2065 #: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "Fertigstellungsdatum" -#: build/models.py:321 +#: build/models.py:323 msgid "completed by" msgstr "Fertiggestellt von" -#: build/models.py:329 templates/js/translated/build.js:2207 +#: build/models.py:331 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "Aufgegeben von" -#: build/models.py:330 +#: build/models.py:332 msgid "User who issued this build order" msgstr "Nutzer der diesen Bauauftrag erstellt hat" -#: build/models.py:338 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:145 +#: build/models.py:340 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:147 #: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:232 part/models.py:1139 +#: order/templates/order/sales_order_base.html:232 part/models.py:1132 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_report.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 @@ -1019,31 +927,36 @@ msgstr "Nutzer der diesen Bauauftrag erstellt hat" msgid "Responsible" msgstr "Verantwortlicher Benutzer" -#: build/models.py:339 +#: build/models.py:341 msgid "User or group responsible for this build order" msgstr "Benutzer oder Gruppe verantwortlich für diesen Bauauftrag" -#: build/models.py:344 build/templates/build/detail.html:108 +#: build/models.py:346 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:184 -#: part/templates/part/part_base.html:383 stock/models.py:836 +#: part/templates/part/part_base.html:383 stock/models.py:834 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "Externer Link" -#: build/models.py:349 +#: build/models.py:347 common/models.py:3178 part/models.py:956 +#: stock/models.py:834 +msgid "Link to external URL" +msgstr "Link zu einer externen URL" + +#: build/models.py:351 msgid "Build Priority" msgstr "Bauauftrags-Priorität" -#: build/models.py:352 +#: build/models.py:354 msgid "Priority of this build order" msgstr "Priorität dieses Bauauftrags" -#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: build/models.py:361 common/models.py:131 order/admin.py:18 #: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 #: templates/js/translated/build.js:2144 #: templates/js/translated/purchase_order.js:1710 @@ -1054,65 +967,65 @@ msgstr "Priorität dieses Bauauftrags" msgid "Project Code" msgstr "Projektcode" -#: build/models.py:360 +#: build/models.py:362 msgid "Project code for this build order" msgstr "Projektcode für diesen Auftrag" -#: build/models.py:593 build/models.py:658 +#: build/models.py:595 build/models.py:660 msgid "Failed to offload task to complete build allocations" msgstr "Fehler beim Abladen der Aufgabe, um die Build-Allokation abzuschließen" -#: build/models.py:615 +#: build/models.py:617 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Bauauftrag {build} wurde fertiggestellt" -#: build/models.py:621 +#: build/models.py:623 msgid "A build order has been completed" msgstr "Ein Bauauftrag wurde fertiggestellt" -#: build/models.py:847 build/models.py:932 +#: build/models.py:849 build/models.py:934 msgid "No build output specified" msgstr "kein Endprodukt angegeben" -#: build/models.py:850 +#: build/models.py:852 msgid "Build output is already completed" msgstr "Endprodukt bereits hergstellt" -#: build/models.py:853 +#: build/models.py:855 msgid "Build output does not match Build Order" msgstr "Endprodukt stimmt nicht mit dem Bauauftrag überein" -#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 -#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 -#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 -#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 +#: build/models.py:938 build/serializers.py:219 build/serializers.py:268 +#: build/serializers.py:866 order/models.py:559 order/serializers.py:432 +#: order/serializers.py:575 part/serializers.py:1484 part/serializers.py:1884 +#: stock/models.py:677 stock/models.py:1495 stock/serializers.py:603 msgid "Quantity must be greater than zero" msgstr "Anzahl muss größer Null sein" -#: build/models.py:941 build/serializers.py:225 +#: build/models.py:943 build/serializers.py:224 msgid "Quantity cannot be greater than the output quantity" msgstr "Menge kann nicht größer als die Ausgangsmenge sein" -#: build/models.py:1001 build/serializers.py:548 +#: build/models.py:1003 build/serializers.py:547 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "Build Ausgabe {serial} hat nicht alle erforderlichen Tests bestanden" -#: build/models.py:1352 +#: build/models.py:1344 msgid "Build Order Line Item" msgstr "" -#: build/models.py:1377 +#: build/models.py:1369 msgid "Build object" msgstr "Objekt bauen" -#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 -#: build/serializers.py:254 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2539 -#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 -#: part/forms.py:48 part/models.py:3205 part/models.py:4078 +#: build/models.py:1383 build/models.py:1639 build/serializers.py:206 +#: build/serializers.py:253 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2509 +#: order/models.py:1272 order/models.py:1931 order/serializers.py:1327 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3170 part/models.py:4058 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1121,8 +1034,8 @@ msgstr "Objekt bauen" #: report/templates/report/inventree_sales_order_report.html:29 #: report/templates/report/inventree_stock_location_report.html:104 #: report/templates/report/inventree_test_report.html:90 -#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 -#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:125 stock/serializers.py:165 stock/serializers.py:594 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1133,8 +1046,8 @@ msgstr "Objekt bauen" #: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 #: templates/js/translated/model_renderers.js:236 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:962 +#: templates/js/translated/part.js:1812 templates/js/translated/part.js:3342 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1154,38 +1067,38 @@ msgstr "Objekt bauen" msgid "Quantity" msgstr "Anzahl" -#: build/models.py:1392 +#: build/models.py:1384 msgid "Required quantity for build order" msgstr "Erforderliche Menge für Auftrag" -#: build/models.py:1472 +#: build/models.py:1464 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:1481 +#: build/models.py:1473 #, 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:1491 order/models.py:1918 +#: build/models.py:1483 order/models.py:1882 msgid "Stock item is over-allocated" msgstr "BestandObjekt ist zu oft zugewiesen" -#: build/models.py:1497 order/models.py:1921 +#: build/models.py:1489 order/models.py:1885 msgid "Allocation quantity must be greater than zero" msgstr "Reserviermenge muss größer null sein" -#: build/models.py:1503 +#: build/models.py:1495 msgid "Quantity must be 1 for serialized stock" msgstr "Anzahl muss 1 für Objekte mit Seriennummer sein" -#: build/models.py:1562 +#: build/models.py:1554 msgid "Selected stock item does not match BOM line" msgstr "Ausgewählter Lagerbestand stimmt nicht mit BOM-Linie überein" -#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 -#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 -#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: build/models.py:1626 build/serializers.py:846 order/serializers.py:1171 +#: order/serializers.py:1192 stock/models.py:358 stock/serializers.py:91 +#: stock/serializers.py:697 stock/serializers.py:1177 stock/serializers.py:1289 #: stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 @@ -1201,70 +1114,70 @@ msgstr "Ausgewählter Lagerbestand stimmt nicht mit BOM-Linie überein" msgid "Stock Item" msgstr "Lagerartikel" -#: build/models.py:1635 +#: build/models.py:1627 msgid "Source stock item" msgstr "Quell-Lagerartikel" -#: build/models.py:1648 +#: build/models.py:1640 msgid "Stock quantity to allocate to build" msgstr "Anzahl an Lagerartikel dem Bauauftrag zuweisen" -#: build/models.py:1656 +#: build/models.py:1648 msgid "Install into" msgstr "Installiere in" -#: build/models.py:1657 +#: build/models.py:1649 msgid "Destination stock item" msgstr "Ziel-Lagerartikel" -#: build/serializers.py:157 build/serializers.py:876 +#: build/serializers.py:156 build/serializers.py:875 #: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "Endprodukt" -#: build/serializers.py:169 +#: build/serializers.py:168 msgid "Build output does not match the parent build" msgstr "Endprodukt stimmt nicht mit übergeordnetem Bauauftrag überein" -#: build/serializers.py:173 +#: build/serializers.py:172 msgid "Output part does not match BuildOrder part" msgstr "Endprodukt entspricht nicht dem Teil des Bauauftrags" -#: build/serializers.py:177 +#: build/serializers.py:176 msgid "This build output has already been completed" msgstr "Dieses Endprodukt wurde bereits fertiggestellt" -#: build/serializers.py:188 +#: build/serializers.py:187 msgid "This build output is not fully allocated" msgstr "Dieses Endprodukt ist nicht vollständig zugewiesen" -#: build/serializers.py:208 build/serializers.py:255 +#: build/serializers.py:207 build/serializers.py:254 msgid "Enter quantity for build output" msgstr "Menge der Endprodukte angeben" -#: build/serializers.py:276 +#: build/serializers.py:275 msgid "Integer quantity required for trackable parts" msgstr "Ganzzahl für verfolgbare Teile erforderlich" -#: build/serializers.py:279 +#: build/serializers.py:278 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:294 order/serializers.py:589 order/serializers.py:1343 -#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:293 order/serializers.py:588 order/serializers.py:1331 +#: stock/serializers.py:614 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Seriennummer" -#: build/serializers.py:295 +#: build/serializers.py:294 msgid "Enter serial numbers for build outputs" msgstr "Seriennummer für dieses Endprodukt eingeben" -#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 -#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 -#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 -#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 -#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 +#: build/serializers.py:299 build/serializers.py:440 build/serializers.py:512 +#: order/serializers.py:564 order/serializers.py:672 order/serializers.py:1656 +#: part/serializers.py:1140 stock/serializers.py:100 stock/serializers.py:625 +#: stock/serializers.py:785 stock/serializers.py:881 stock/serializers.py:1321 +#: stock/serializers.py:1577 stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:1001 #: templates/js/translated/build.js:2372 @@ -1280,54 +1193,54 @@ msgstr "Seriennummer für dieses Endprodukt eingeben" msgid "Location" msgstr "Lagerort" -#: build/serializers.py:301 +#: build/serializers.py:300 msgid "Stock location for build output" msgstr "Lagerort für Bauprodukt" -#: build/serializers.py:315 +#: build/serializers.py:314 msgid "Auto Allocate Serial Numbers" msgstr "Seriennummern automatisch zuweisen" -#: build/serializers.py:316 +#: build/serializers.py:315 msgid "Automatically allocate required items with matching serial numbers" msgstr "Benötigte Lagerartikel automatisch mit passenden Seriennummern zuweisen" -#: build/serializers.py:331 +#: build/serializers.py:330 msgid "Serial numbers must be provided for trackable parts" msgstr "Seriennummern müssen für nachverfolgbare Teile angegeben werden" -#: build/serializers.py:356 stock/api.py:1031 +#: build/serializers.py:355 stock/api.py:1041 msgid "The following serial numbers already exist or are invalid" msgstr "Die folgenden Seriennummern existieren bereits oder sind ungültig" -#: build/serializers.py:403 build/serializers.py:465 build/serializers.py:554 +#: build/serializers.py:402 build/serializers.py:464 build/serializers.py:553 msgid "A list of build outputs must be provided" msgstr "Eine Liste von Endprodukten muss angegeben werden" -#: build/serializers.py:442 +#: build/serializers.py:441 msgid "Stock location for scrapped outputs" msgstr "Lagerort für ausgemusterte Ausgänge" -#: build/serializers.py:448 +#: build/serializers.py:447 msgid "Discard Allocations" msgstr "Zuteilungen verwerfen" -#: build/serializers.py:449 +#: build/serializers.py:448 msgid "Discard any stock allocations for scrapped outputs" msgstr "Bestandszuteilung für ausgemusterte Endprodukte verwerfen" -#: build/serializers.py:454 +#: build/serializers.py:453 msgid "Reason for scrapping build output(s)" msgstr "Grund für das Verwerfen des Bauauftrages/der Bauaufträge" -#: build/serializers.py:514 +#: build/serializers.py:513 msgid "Location for completed build outputs" msgstr "Lagerort für fertige Endprodukte" -#: build/serializers.py:520 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:952 -#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 -#: stock/serializers.py:930 stock/serializers.py:1469 +#: build/serializers.py:519 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2044 order/serializers.py:596 stock/admin.py:164 +#: stock/serializers.py:932 stock/serializers.py:1465 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 @@ -1339,188 +1252,188 @@ msgstr "Lagerort für fertige Endprodukte" msgid "Status" msgstr "Status" -#: build/serializers.py:526 +#: build/serializers.py:525 msgid "Accept Incomplete Allocation" msgstr "Unvollständige Zuweisung akzeptieren" -#: build/serializers.py:527 +#: build/serializers.py:526 msgid "Complete outputs if stock has not been fully allocated" msgstr "Endprodukte fertigstellen, auch wenn Bestand nicht fertig zugewiesen wurde" -#: build/serializers.py:612 +#: build/serializers.py:611 msgid "Consume Allocated Stock" msgstr "Zugewiesen Bestand verbrauchen" -#: build/serializers.py:613 +#: build/serializers.py:612 msgid "Consume any stock which has already been allocated to this build" msgstr "Verbrauche alle Bestände, die diesem Bauauftrag bereits zugewiesen wurden" -#: build/serializers.py:619 +#: build/serializers.py:618 msgid "Remove Incomplete Outputs" msgstr "Unfertige Endprodukte entfernen" -#: build/serializers.py:620 +#: build/serializers.py:619 msgid "Delete any build outputs which have not been completed" msgstr "Lösche alle noch nicht abgeschlossenen Endprodukte" -#: build/serializers.py:647 +#: build/serializers.py:646 msgid "Not permitted" msgstr "Nicht erlaubt" -#: build/serializers.py:648 +#: build/serializers.py:647 msgid "Accept as consumed by this build order" msgstr "Als von diesem Bauauftrag verbraucht setzen" -#: build/serializers.py:649 +#: build/serializers.py:648 msgid "Deallocate before completing this build order" msgstr "Bestandszuordnung vor dem Abschluss dieses Bauauftrags freigeben" -#: build/serializers.py:679 +#: build/serializers.py:678 msgid "Overallocated Stock" msgstr "Überbelegter Lagerbestand" -#: build/serializers.py:681 +#: build/serializers.py:680 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:691 +#: build/serializers.py:690 msgid "Some stock items have been overallocated" msgstr "Der Bestand einiger Lagerartikel ist überbelegt" -#: build/serializers.py:696 +#: build/serializers.py:695 msgid "Accept Unallocated" msgstr "Nicht zugewiesene akzeptieren" -#: build/serializers.py:697 +#: build/serializers.py:696 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:707 templates/js/translated/build.js:315 +#: build/serializers.py:706 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:712 order/serializers.py:301 order/serializers.py:1246 +#: build/serializers.py:711 order/serializers.py:300 order/serializers.py:1234 msgid "Accept Incomplete" msgstr "Unvollständig Zuweisung akzeptieren" -#: build/serializers.py:713 +#: build/serializers.py:712 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:723 templates/js/translated/build.js:319 +#: build/serializers.py:722 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:732 templates/js/translated/build.js:303 +#: build/serializers.py:731 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "Bauauftrag hat unvollständige Aufbauten" -#: build/serializers.py:770 +#: build/serializers.py:769 msgid "Build Line" msgstr "Bauauftragsposition" -#: build/serializers.py:780 +#: build/serializers.py:779 msgid "Build output" msgstr "Endprodukt" -#: build/serializers.py:788 +#: build/serializers.py:787 msgid "Build output must point to the same build" msgstr "Endprodukt muss auf den gleichen Bauauftrag verweisen" -#: build/serializers.py:824 +#: build/serializers.py:823 msgid "Build Line Item" msgstr "Bauauftragspositionsartikel" -#: build/serializers.py:838 +#: build/serializers.py:837 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:853 stock/serializers.py:1194 +#: build/serializers.py:852 stock/serializers.py:1190 msgid "Item must be in stock" msgstr "Teil muss auf Lager sein" -#: build/serializers.py:901 order/serializers.py:1237 +#: build/serializers.py:900 order/serializers.py:1225 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Verfügbare Menge ({q}) überschritten" -#: build/serializers.py:907 +#: build/serializers.py:906 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:914 +#: build/serializers.py:913 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:938 order/serializers.py:1489 +#: build/serializers.py:937 order/serializers.py:1477 msgid "Allocation items must be provided" msgstr "Zuweisungen müssen angegeben werden" -#: build/serializers.py:1001 +#: build/serializers.py:1000 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:1009 +#: build/serializers.py:1008 msgid "Exclude Location" msgstr "Lagerort ausschließen" -#: build/serializers.py:1010 +#: build/serializers.py:1009 msgid "Exclude stock items from this selected location" msgstr "Lagerartikel vom ausgewählten Ort ausschließen" -#: build/serializers.py:1015 +#: build/serializers.py:1014 msgid "Interchangeable Stock" msgstr "Wechselbares Lagerbestand" -#: build/serializers.py:1016 +#: build/serializers.py:1015 msgid "Stock items in multiple locations can be used interchangeably" msgstr "Lagerartikel an mehreren Standorten können austauschbar verwendet werden" -#: build/serializers.py:1021 +#: build/serializers.py:1020 msgid "Substitute Stock" msgstr "Ersatzbestand" -#: build/serializers.py:1022 +#: build/serializers.py:1021 msgid "Allow allocation of substitute parts" msgstr "Zuordnung von Ersatzteilen erlauben" -#: build/serializers.py:1027 +#: build/serializers.py:1026 msgid "Optional Items" msgstr "Optionale Positionen" -#: build/serializers.py:1028 +#: build/serializers.py:1027 msgid "Allocate optional BOM items to build order" msgstr "Optionale Stücklisten-Positionen dem Bauauftrag hinzufügen" -#: build/serializers.py:1050 +#: build/serializers.py:1049 msgid "Failed to start auto-allocation task" msgstr "Fehler beim Starten der automatischen Zuweisung" -#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 -#: stock/api.py:794 +#: build/serializers.py:1139 part/models.py:3953 part/models.py:4387 +#: stock/api.py:804 msgid "BOM Item" msgstr "Stücklisten-Position" -#: build/serializers.py:1149 templates/js/translated/index.js:130 +#: build/serializers.py:1148 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "Zugewiesener Bestand" -#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:832 part/serializers.py:1506 +#: build/serializers.py:1153 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:828 part/serializers.py:1502 #: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 -#: templates/js/translated/build.js:2613 templates/js/translated/part.js:709 -#: templates/js/translated/part.js:2148 +#: templates/js/translated/build.js:2613 templates/js/translated/part.js:710 +#: templates/js/translated/part.js:2149 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "Bestellt" -#: build/serializers.py:1159 part/serializers.py:1508 +#: build/serializers.py:1158 part/serializers.py:1504 #: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "In Produktion" -#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 +#: build/serializers.py:1163 part/bom.py:172 part/serializers.py:1527 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1929 msgid "Available Stock" @@ -1544,7 +1457,7 @@ msgstr "Storniert" #: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 #: order/status_codes.py:44 order/status_codes.py:69 #: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:165 report/models.py:443 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 msgid "Complete" msgstr "Fertig" @@ -1674,11 +1587,11 @@ 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:309 -#: order/models.py:1343 order/templates/order/order_base.html:186 +#: order/models.py:1307 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:196 #: report/templates/report/inventree_build_order_report.html:125 -#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1831 #: templates/js/translated/purchase_order.js:1739 #: templates/js/translated/purchase_order.js:2147 #: templates/js/translated/return_order.js:346 @@ -1711,8 +1624,8 @@ msgid "Completed Outputs" msgstr "Fertiggestellte Endprodukte" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 -#: order/models.py:1587 order/models.py:1701 order/models.py:1855 +#: build/templates/build/detail.html:101 order/api.py:1463 order/models.py:845 +#: order/models.py:1551 order/models.py:1665 order/models.py:1819 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_report.html:135 @@ -1762,7 +1675,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:1479 +#: build/templates/build/detail.html:49 order/models.py:1443 #: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "Ziel-Lager" @@ -1775,7 +1688,7 @@ msgstr "Ziel-Lagerort nicht angegeben" msgid "Allocated Parts" msgstr "Zugewiesene Teile" -#: build/templates/build/detail.html:80 stock/admin.py:163 +#: build/templates/build/detail.html:80 stock/admin.py:162 #: stock/templates/stock/item_base.html:162 #: templates/js/translated/build.js:1380 #: templates/js/translated/model_renderers.js:241 @@ -1894,11 +1807,11 @@ msgstr "Anhänge" msgid "Build Notes" msgstr "Bauauftrags-Notizen" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "Zuordnung abgeschlossen" -#: build/templates/build/detail.html:436 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "Alle Zeilen wurden vollständig zugewiesen" @@ -1914,6 +1827,34 @@ msgstr "Bauauftragdetails" msgid "Incomplete Outputs" msgstr "Unfertige Endprodukte" +#: common/api.py:689 +msgid "Is Link" +msgstr "" + +#: common/api.py:697 +msgid "Is File" +msgstr "" + +#: common/api.py:739 +msgid "User does not have permission to delete this attachment" +msgstr "" + +#: common/currency.py:130 +msgid "Invalid currency code" +msgstr "" + +#: common/currency.py:132 +msgid "Duplicate currency code" +msgstr "" + +#: common/currency.py:137 +msgid "No valid currency codes provided" +msgstr "" + +#: common/currency.py:154 +msgid "No plugin" +msgstr "Kein Plugin" + #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1952,1509 +1893,1512 @@ msgstr "{name.title()} Datei" msgid "Select {name} file to upload" msgstr "{name} Datei zum Hochladen auswählen" -#: common/models.py:71 +#: common/models.py:73 msgid "Updated" msgstr "Aktualisiert" -#: common/models.py:72 +#: common/models.py:74 msgid "Timestamp of last update" msgstr "Zeitstempel der letzten Aktualisierung" -#: common/models.py:105 +#: common/models.py:107 msgid "Site URL is locked by configuration" msgstr "Seiten-URL ist durch die Konfiguration gesperrt" -#: common/models.py:130 +#: common/models.py:132 msgid "Unique project code" msgstr "Eindeutiger Projektcode" -#: common/models.py:137 +#: common/models.py:139 msgid "Project description" msgstr "Projektbeschreibung" -#: common/models.py:146 +#: common/models.py:148 msgid "User or group responsible for this project" msgstr "Benutzer oder Gruppe verantwortlich für dieses Projekt" -#: common/models.py:766 +#: common/models.py:765 msgid "Settings key (must be unique - case insensitive)" msgstr "Einstellungs-Schlüssel (muss einzigartig sein, Groß-/ Kleinschreibung wird nicht beachtet)" -#: common/models.py:770 +#: common/models.py:769 msgid "Settings value" msgstr "Einstellungs-Wert" -#: common/models.py:822 +#: common/models.py:821 msgid "Chosen value is not a valid option" msgstr "Wert ist keine gültige Option" -#: common/models.py:838 +#: common/models.py:837 msgid "Value must be a boolean value" msgstr "Wahrheitswert erforderlich" -#: common/models.py:846 +#: common/models.py:845 msgid "Value must be an integer value" msgstr "Nur Ganzzahl eingeben" -#: common/models.py:883 +#: common/models.py:882 msgid "Key string must be unique" msgstr "Schlüsseltext muss eindeutig sein" -#: common/models.py:1115 +#: common/models.py:1114 msgid "No group" msgstr "Keine Gruppe" -#: common/models.py:1158 -msgid "An empty domain is not allowed." -msgstr "Eine leere Domain ist nicht erlaubt." - -#: common/models.py:1160 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "Ungültiger Domainname: {domain}" - -#: common/models.py:1172 -msgid "No plugin" -msgstr "Kein Plugin" - -#: common/models.py:1260 +#: common/models.py:1213 msgid "Restart required" msgstr "Neustart erforderlich" -#: common/models.py:1262 +#: common/models.py:1215 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:1269 +#: common/models.py:1222 msgid "Pending migrations" msgstr "Ausstehende Migrationen" -#: common/models.py:1270 +#: common/models.py:1223 msgid "Number of pending database migrations" msgstr "Anzahl der ausstehenden Datenbankmigrationen" -#: common/models.py:1275 +#: common/models.py:1228 msgid "Server Instance Name" msgstr "Name der Serverinstanz" -#: common/models.py:1277 +#: common/models.py:1230 msgid "String descriptor for the server instance" msgstr "Kurze Beschreibung der Instanz" -#: common/models.py:1281 +#: common/models.py:1234 msgid "Use instance name" msgstr "Name der Instanz verwenden" -#: common/models.py:1282 +#: common/models.py:1235 msgid "Use the instance name in the title-bar" msgstr "Den Namen der Instanz in der Titelleiste verwenden" -#: common/models.py:1287 +#: common/models.py:1240 msgid "Restrict showing `about`" msgstr "Anzeige von `Über` einschränken" -#: common/models.py:1288 +#: common/models.py:1241 msgid "Show the `about` modal only to superusers" msgstr "Zeige das `Über` Fenster nur Administratoren" -#: common/models.py:1293 company/models.py:108 company/models.py:109 +#: common/models.py:1246 company/models.py:111 company/models.py:112 msgid "Company name" msgstr "Firmenname" -#: common/models.py:1294 +#: common/models.py:1247 msgid "Internal company name" msgstr "interner Firmenname" -#: common/models.py:1298 +#: common/models.py:1251 msgid "Base URL" msgstr "Basis-URL" -#: common/models.py:1299 +#: common/models.py:1252 msgid "Base URL for server instance" msgstr "Basis-URL für dieses Instanz" -#: common/models.py:1305 +#: common/models.py:1258 msgid "Default Currency" msgstr "Standardwährung" -#: common/models.py:1306 +#: common/models.py:1259 msgid "Select base currency for pricing calculations" msgstr "Wählen Sie die Basiswährung für Preisberechnungen aus" -#: common/models.py:1312 +#: common/models.py:1265 +msgid "Supported Currencies" +msgstr "" + +#: common/models.py:1266 +msgid "List of supported currency codes" +msgstr "" + +#: common/models.py:1272 msgid "Currency Update Interval" msgstr "Währungsaktualisierungsintervall" -#: common/models.py:1314 +#: common/models.py:1274 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:1317 common/models.py:1373 common/models.py:1386 -#: common/models.py:1394 common/models.py:1403 common/models.py:1412 -#: common/models.py:1620 common/models.py:1642 common/models.py:1757 -#: common/models.py:2076 +#: common/models.py:1277 common/models.py:1333 common/models.py:1346 +#: common/models.py:1354 common/models.py:1363 common/models.py:1372 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:2046 msgid "days" msgstr "Tage" -#: common/models.py:1321 +#: common/models.py:1281 msgid "Currency Update Plugin" msgstr "Währungs-Aktualisierungs-Plugin" -#: common/models.py:1322 +#: common/models.py:1282 msgid "Currency update plugin to use" msgstr "Zu verwendendes Währungs-Aktualisierungs-Plugin" -#: common/models.py:1327 +#: common/models.py:1287 msgid "Download from URL" msgstr "Von URL herunterladen" -#: common/models.py:1329 +#: common/models.py:1289 msgid "Allow download of remote images and files from external URL" msgstr "Herunterladen von externen Bildern und Dateien von URLs erlaubt" -#: common/models.py:1335 +#: common/models.py:1295 msgid "Download Size Limit" msgstr "Download-Größenlimit" -#: common/models.py:1336 +#: common/models.py:1296 msgid "Maximum allowable download size for remote image" msgstr "Maximal zulässige Größe für heruntergeladene Bilder" -#: common/models.py:1342 +#: common/models.py:1302 msgid "User-agent used to download from URL" msgstr "Benutzer-Agent zum Herunterladen von Daten" -#: common/models.py:1344 +#: common/models.py:1304 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:1349 +#: common/models.py:1309 msgid "Strict URL Validation" msgstr "Strenge URL-Prüfung" -#: common/models.py:1350 +#: common/models.py:1310 msgid "Require schema specification when validating URLs" msgstr "Erfordert die Schema-Spezifikation bei der Validierung von URLs" -#: common/models.py:1355 +#: common/models.py:1315 msgid "Require confirm" msgstr "Bestätigung verpflichtend" -#: common/models.py:1356 +#: common/models.py:1316 msgid "Require explicit user confirmation for certain action." msgstr "Eine ausdrückliche Benutzerbestätigung für bestimmte Aktionen erfordern." -#: common/models.py:1361 +#: common/models.py:1321 msgid "Tree Depth" msgstr "Baumtiefe" -#: common/models.py:1363 +#: common/models.py:1323 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:1369 +#: common/models.py:1329 msgid "Update Check Interval" msgstr "Prüfungsintervall aktualisieren" -#: common/models.py:1370 +#: common/models.py:1330 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:1376 +#: common/models.py:1336 msgid "Automatic Backup" msgstr "Automatische Sicherung" -#: common/models.py:1377 +#: common/models.py:1337 msgid "Enable automatic backup of database and media files" msgstr "Automatische Sicherung der Datenbank- und Mediendateien aktivieren" -#: common/models.py:1382 +#: common/models.py:1342 msgid "Auto Backup Interval" msgstr "Intervall für automatische Sicherung" -#: common/models.py:1383 +#: common/models.py:1343 msgid "Specify number of days between automated backup events" msgstr "Anzahl der Tage zwischen automatischen Sicherungen" -#: common/models.py:1389 +#: common/models.py:1349 msgid "Task Deletion Interval" msgstr "Aufgabenlöschinterval" -#: common/models.py:1391 +#: common/models.py:1351 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:1398 +#: common/models.py:1358 msgid "Error Log Deletion Interval" msgstr "Löschintervall für Fehlerprotokolle" -#: common/models.py:1400 +#: common/models.py:1360 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:1407 +#: common/models.py:1367 msgid "Notification Deletion Interval" msgstr "Löschintervall für Benachrichtigungen" -#: common/models.py:1409 +#: common/models.py:1369 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:1416 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1376 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Bacode-Feature verwenden" -#: common/models.py:1417 +#: common/models.py:1377 msgid "Enable barcode scanner support in the web interface" msgstr "Barcode-Scanner Unterstützung im Webinterface aktivieren" -#: common/models.py:1422 +#: common/models.py:1382 msgid "Barcode Input Delay" msgstr "Barcode-Eingabeverzögerung" -#: common/models.py:1423 +#: common/models.py:1383 msgid "Barcode input processing delay time" msgstr "Verzögerungszeit bei Barcode-Eingabe" -#: common/models.py:1429 +#: common/models.py:1389 msgid "Barcode Webcam Support" msgstr "Barcode Webcam-Unterstützung" -#: common/models.py:1430 +#: common/models.py:1390 msgid "Allow barcode scanning via webcam in browser" msgstr "Barcode-Scannen über Webcam im Browser erlauben" -#: common/models.py:1435 +#: common/models.py:1395 msgid "Part Revisions" msgstr "Artikelrevisionen" -#: common/models.py:1436 +#: common/models.py:1396 msgid "Enable revision field for Part" msgstr "Revisions-Feld für Artikel aktivieren" -#: common/models.py:1441 +#: common/models.py:1401 msgid "Allow Deletion from Assembly" msgstr "" -#: common/models.py:1442 +#: common/models.py:1402 msgid "Allow deletion of parts which are used in an assembly" msgstr "" -#: common/models.py:1447 +#: common/models.py:1407 msgid "IPN Regex" msgstr "IPN Regex" -#: common/models.py:1448 +#: common/models.py:1408 msgid "Regular expression pattern for matching Part IPN" msgstr "RegEx Muster für die Zuordnung von Teil-IPN" -#: common/models.py:1451 +#: common/models.py:1411 msgid "Allow Duplicate IPN" msgstr "Mehrere Artikel mit gleicher IPN erlaubt" -#: common/models.py:1452 +#: common/models.py:1412 msgid "Allow multiple parts to share the same IPN" msgstr "Mehrere Artikel mit gleicher IPN erlaubt" -#: common/models.py:1457 +#: common/models.py:1417 msgid "Allow Editing IPN" msgstr "Ändern von IPN erlaubt" -#: common/models.py:1458 +#: common/models.py:1418 msgid "Allow changing the IPN value while editing a part" msgstr "Ändern der IPN während des Bearbeiten eines Teils erlaubt" -#: common/models.py:1463 +#: common/models.py:1423 msgid "Copy Part BOM Data" msgstr "Teil-Stückliste kopieren" -#: common/models.py:1464 +#: common/models.py:1424 msgid "Copy BOM data by default when duplicating a part" msgstr "Stückliste von Teil kopieren wenn das Teil dupliziert wird " -#: common/models.py:1469 +#: common/models.py:1429 msgid "Copy Part Parameter Data" msgstr "Teil-Parameter kopieren" -#: common/models.py:1470 +#: common/models.py:1430 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:1475 +#: common/models.py:1435 msgid "Copy Part Test Data" msgstr "Teil-Testdaten kopieren" -#: common/models.py:1476 +#: common/models.py:1436 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:1481 +#: common/models.py:1441 msgid "Copy Category Parameter Templates" msgstr "Kategorie-Parametervorlage kopieren" -#: common/models.py:1482 +#: common/models.py:1442 msgid "Copy category parameter templates when creating a part" msgstr "Kategorie-Parameter Vorlagen kopieren wenn ein Teil angelegt wird" -#: common/models.py:1487 part/admin.py:108 part/models.py:3815 -#: report/models.py:293 report/models.py:360 report/serializers.py:90 -#: report/serializers.py:131 stock/serializers.py:228 +#: common/models.py:1447 part/admin.py:108 part/models.py:3795 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:227 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "Vorlage" -#: common/models.py:1488 +#: common/models.py:1448 msgid "Parts are templates by default" msgstr "Teile sind standardmäßig Vorlagen" -#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 +#: common/models.py:1453 part/admin.py:91 part/admin.py:425 part/models.py:1052 #: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" msgstr "Baugruppe" -#: common/models.py:1494 +#: common/models.py:1454 msgid "Parts can be assembled from other components by default" msgstr "Teile können standardmäßig aus anderen Teilen angefertigt werden" -#: common/models.py:1499 part/admin.py:95 part/models.py:1065 +#: common/models.py:1459 part/admin.py:95 part/models.py:1058 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "Komponente" -#: common/models.py:1500 +#: common/models.py:1460 msgid "Parts can be used as sub-components by default" msgstr "Teile können standardmäßig in Baugruppen benutzt werden" -#: common/models.py:1505 part/admin.py:100 part/models.py:1077 +#: common/models.py:1465 part/admin.py:100 part/models.py:1070 msgid "Purchaseable" msgstr "Kaufbar" -#: common/models.py:1506 +#: common/models.py:1466 msgid "Parts are purchaseable by default" msgstr "Artikel sind grundsätzlich kaufbar" -#: common/models.py:1511 part/admin.py:104 part/models.py:1083 +#: common/models.py:1471 part/admin.py:104 part/models.py:1076 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "Verkäuflich" -#: common/models.py:1512 +#: common/models.py:1472 msgid "Parts are salable by default" msgstr "Artikel sind grundsätzlich verkaufbar" -#: common/models.py:1517 part/admin.py:113 part/models.py:1071 +#: common/models.py:1477 part/admin.py:113 part/models.py:1064 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" msgstr "Nachverfolgbar" -#: common/models.py:1518 +#: common/models.py:1478 msgid "Parts are trackable by default" msgstr "Artikel sind grundsätzlich verfolgbar" -#: common/models.py:1523 part/admin.py:117 part/models.py:1093 +#: common/models.py:1483 part/admin.py:117 part/models.py:1086 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" msgstr "Virtuell" -#: common/models.py:1524 +#: common/models.py:1484 msgid "Parts are virtual by default" msgstr "Teile sind grundsätzlich virtuell" -#: common/models.py:1529 +#: common/models.py:1489 msgid "Show Import in Views" msgstr "Import in Ansichten anzeigen" -#: common/models.py:1530 +#: common/models.py:1490 msgid "Display the import wizard in some part views" msgstr "Importassistent in einigen Teil-Ansichten anzeigen" -#: common/models.py:1535 +#: common/models.py:1495 msgid "Show related parts" msgstr "Verwandte Teile anzeigen" -#: common/models.py:1536 +#: common/models.py:1496 msgid "Display related parts for a part" msgstr "Verwandte Teile eines Teils anzeigen" -#: common/models.py:1541 +#: common/models.py:1501 msgid "Initial Stock Data" msgstr "Initialer Lagerbestand" -#: common/models.py:1542 +#: common/models.py:1502 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:1547 templates/js/translated/part.js:107 +#: common/models.py:1507 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Initiale Lieferantendaten" -#: common/models.py:1549 +#: common/models.py:1509 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:1555 +#: common/models.py:1515 msgid "Part Name Display Format" msgstr "Anzeigeformat für Teilenamen" -#: common/models.py:1556 +#: common/models.py:1516 msgid "Format to display the part name" msgstr "Format für den Namen eines Teiles" -#: common/models.py:1562 +#: common/models.py:1522 msgid "Part Category Default Icon" msgstr "Standardsymbol der Teilkategorie" -#: common/models.py:1563 +#: common/models.py:1523 msgid "Part category default icon (empty means no icon)" msgstr "Standardsymbol der Teilkategorie (leer bedeutet kein Symbol)" -#: common/models.py:1567 +#: common/models.py:1527 msgid "Enforce Parameter Units" msgstr "Parameter Einheiten durchsetzen" -#: common/models.py:1569 +#: common/models.py:1529 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:1575 +#: common/models.py:1535 msgid "Minimum Pricing Decimal Places" msgstr "Dezimalstellen für minimalen Preis" -#: common/models.py:1577 +#: common/models.py:1537 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "Mindestanzahl der Dezimalstellen bei der Darstellung der Preisdaten" -#: common/models.py:1583 +#: common/models.py:1548 msgid "Maximum Pricing Decimal Places" msgstr "Dezimalstellen für maximalen Preis" -#: common/models.py:1585 +#: common/models.py:1550 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:1591 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "Zulieferer-Preise verwenden" -#: common/models.py:1593 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "Lieferanten-Staffelpreise in die Gesamt-Preisberechnungen einbeziehen" -#: common/models.py:1599 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "Kaufverlauf überschreiben" -#: common/models.py:1601 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "Historische Bestellungspreise überschreiben die Lieferanten-Staffelpreise" -#: common/models.py:1607 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "Lagerartikel-Preis verwenden" -#: common/models.py:1609 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "Preise aus manuell eingegebenen Lagerdaten für Preisberechnungen verwenden" -#: common/models.py:1615 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "Lagerartikelpreis Alter" -#: common/models.py:1617 +#: common/models.py:1587 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:1624 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "Variantenpreise verwenden" -#: common/models.py:1625 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "Variantenpreise in die Gesamt-Preisberechnungen einbeziehen" -#: common/models.py:1630 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "Nur aktive Varianten" -#: common/models.py:1632 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "Nur aktive Variantenteile zur Berechnung der Variantenbepreisung verwenden" -#: common/models.py:1638 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "Intervall für Neuberechnung von Preisen" -#: common/models.py:1640 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "Anzahl der Tage bis die Teile-Preisberechnungen automatisch aktualisiert werden" -#: common/models.py:1647 +#: common/models.py:1617 msgid "Internal Prices" msgstr "Interne Preise" -#: common/models.py:1648 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "Interne Preise für Teile aktivieren" -#: common/models.py:1653 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "Interne Preisüberschreibung" -#: common/models.py:1655 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "Falls verfügbar, überschreiben interne Preise Preispannenberechnungen" -#: common/models.py:1661 +#: common/models.py:1631 msgid "Enable label printing" msgstr "Labeldruck aktivieren" -#: common/models.py:1662 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "Labeldruck über die Website aktivieren" -#: common/models.py:1667 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "Label Bild DPI" -#: common/models.py:1669 +#: common/models.py:1639 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:1675 +#: common/models.py:1645 msgid "Enable Reports" msgstr "Berichte aktivieren" -#: common/models.py:1676 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "Berichterstellung aktivieren" -#: common/models.py:1681 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "Entwickler-Modus" -#: common/models.py:1682 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "Berichte im Entwickler-Modus generieren (als HTML)" -#: common/models.py:1687 +#: common/models.py:1657 msgid "Log Report Errors" msgstr "Berichtsfehler protokollieren" -#: common/models.py:1688 +#: common/models.py:1658 msgid "Log errors which occur when generating reports" msgstr "Fehler, die beim Erstellen von Berichten auftreten, protokollieren" -#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:301 +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:302 msgid "Page Size" msgstr "Seitengröße" -#: common/models.py:1694 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "Standardseitenformat für PDF-Bericht" -#: common/models.py:1699 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "Testberichte aktivieren" -#: common/models.py:1700 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "Erstellung von Test-Berichten aktivieren" -#: common/models.py:1705 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "Testberichte anhängen" -#: common/models.py:1707 +#: common/models.py:1677 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:1713 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "Global einzigartige Seriennummern" -#: common/models.py:1714 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "Seriennummern für Lagerartikel müssen global eindeutig sein" -#: common/models.py:1719 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "Seriennummern automatisch ausfüllen" -#: common/models.py:1720 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "Seriennummern in Formularen automatisch ausfüllen" -#: common/models.py:1725 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "Erschöpften Lagerartikel löschen" -#: common/models.py:1727 +#: common/models.py:1697 msgid "Determines default behavior when a stock item is depleted" msgstr "Legt das Standardverhalten fest, wenn ein Lagerartikel aufgebraucht ist" -#: common/models.py:1733 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "Losnummer Vorlage" -#: common/models.py:1735 +#: common/models.py:1705 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:1740 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "Bestands-Ablauf" -#: common/models.py:1741 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "Ablaufen von Bestand ermöglichen" -#: common/models.py:1746 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "Abgelaufenen Bestand verkaufen" -#: common/models.py:1747 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "Verkauf von abgelaufenem Bestand erlaubt" -#: common/models.py:1752 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "Bestands-Stehzeit" -#: common/models.py:1754 +#: common/models.py:1724 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:1761 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "Abgelaufenen Bestand verbauen" -#: common/models.py:1762 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "Verbauen von abgelaufenen Bestand erlaubt" -#: common/models.py:1767 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "Bestands-Eigentümerkontrolle" -#: common/models.py:1768 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "Eigentümerkontrolle für Lagerorte und Teile aktivieren" -#: common/models.py:1773 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "Standardsymbol für Lagerort" -#: common/models.py:1774 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "Standardsymbol für Lagerstandort (leer bedeutet kein Symbol)" -#: common/models.py:1778 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "Zeige installierte Lagerartikel" -#: common/models.py:1779 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "Anzeige der installierten Lagerartikel in Bestandstabellen" -#: common/models.py:1784 +#: common/models.py:1754 msgid "Check BOM when installing items" msgstr "Prüfe BOM bei der Installation von Elementen" -#: common/models.py:1786 +#: common/models.py:1756 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "Installierte Lagerbestandteile müssen im BOM für den übergeordneten Teil vorhanden sein" -#: common/models.py:1792 +#: common/models.py:1762 msgid "Allow Out of Stock Transfer" msgstr "Erlaube Verschieben von \"nicht auf Lager\" Bestand" -#: common/models.py:1794 +#: common/models.py:1764 msgid "Allow stock items which are not in stock to be transferred between stock locations" msgstr "Lagerartikel, die nicht auf Lager sind, können zwischen Lagerstandorten übertragen werden" -#: common/models.py:1800 +#: common/models.py:1770 msgid "Build Order Reference Pattern" msgstr "Bauauftragsreferenz-Muster" -#: common/models.py:1802 +#: common/models.py:1772 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:1808 common/models.py:1836 common/models.py:1858 -#: common/models.py:1894 +#: common/models.py:1778 common/models.py:1806 common/models.py:1828 +#: common/models.py:1864 msgid "Require Responsible Owner" msgstr "Verantwortlicher Besitzer erforderlich" -#: common/models.py:1809 common/models.py:1837 common/models.py:1859 -#: common/models.py:1895 +#: common/models.py:1779 common/models.py:1807 common/models.py:1829 +#: common/models.py:1865 msgid "A responsible owner must be assigned to each order" msgstr "Jeder Bestellung muss ein verantwortlicher Besitzer zugewiesen werden" -#: common/models.py:1814 +#: common/models.py:1784 msgid "Block Until Tests Pass" msgstr "Blockieren bis Test bestanden" -#: common/models.py:1816 +#: common/models.py:1786 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "Verhindert die Fertigstellung bis alle erforderlichen Tests bestanden sind" -#: common/models.py:1822 +#: common/models.py:1792 msgid "Enable Return Orders" msgstr "Rücksendungen aktivieren" -#: common/models.py:1823 +#: common/models.py:1793 msgid "Enable return order functionality in the user interface" msgstr "Aktivieren der Rücksendung-Funktion in der Benutzeroberfläche" -#: common/models.py:1828 +#: common/models.py:1798 msgid "Return Order Reference Pattern" msgstr "Referenz Muster für Rücksendungen" -#: common/models.py:1830 +#: common/models.py:1800 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:1842 +#: common/models.py:1812 msgid "Edit Completed Return Orders" msgstr "Abgeschlossene Rücksendungen bearbeiten" -#: common/models.py:1844 +#: common/models.py:1814 msgid "Allow editing of return orders after they have been completed" msgstr "Bearbeitung von Rücksendungen nach Abschluss erlauben" -#: common/models.py:1850 +#: common/models.py:1820 msgid "Sales Order Reference Pattern" msgstr "Auftragsreferenz-Muster" -#: common/models.py:1852 +#: common/models.py:1822 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:1864 +#: common/models.py:1834 msgid "Sales Order Default Shipment" msgstr "Auftrag Standardsendung" -#: common/models.py:1865 +#: common/models.py:1835 msgid "Enable creation of default shipment with sales orders" msgstr "Erstelle eine Standardsendung für Aufträge" -#: common/models.py:1870 +#: common/models.py:1840 msgid "Edit Completed Sales Orders" msgstr "Abgeschlossene Aufträge bearbeiten" -#: common/models.py:1872 +#: common/models.py:1842 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "Bearbeitung von Aufträgen nach Versand oder Abschluss erlauben" -#: common/models.py:1878 -#, fuzzy -#| msgid "Mark this order as complete?" +#: common/models.py:1848 msgid "Mark Shipped Orders as Complete" -msgstr "Diese Bestellung als vollständig markieren?" +msgstr "" -#: common/models.py:1880 +#: common/models.py:1850 msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" msgstr "" -#: common/models.py:1886 +#: common/models.py:1856 msgid "Purchase Order Reference Pattern" msgstr "Bestellungsreferenz-Muster" -#: common/models.py:1888 +#: common/models.py:1858 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:1900 +#: common/models.py:1870 msgid "Edit Completed Purchase Orders" msgstr "Abgeschlossene Einkaufsaufträge bearbeiten" -#: common/models.py:1902 +#: common/models.py:1872 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:1908 +#: common/models.py:1878 msgid "Auto Complete Purchase Orders" msgstr "Bestellungen automatisch abschließen" -#: common/models.py:1910 +#: common/models.py:1880 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "Bestellung automatisch als abgeschlossen markieren, wenn der Empfang aller Artikel bestätigt wurde" -#: common/models.py:1917 +#: common/models.py:1887 msgid "Enable password forgot" msgstr "Passwort vergessen aktivieren" -#: common/models.py:1918 +#: common/models.py:1888 msgid "Enable password forgot function on the login pages" msgstr "Passwort-vergessen-Funktion auf den Anmeldeseiten aktivieren" -#: common/models.py:1923 +#: common/models.py:1893 msgid "Enable registration" msgstr "Registrierung erlauben" -#: common/models.py:1924 +#: common/models.py:1894 msgid "Enable self-registration for users on the login pages" msgstr "Selbstregistrierung für Benutzer auf den Anmeldeseiten aktivieren" -#: common/models.py:1929 +#: common/models.py:1899 msgid "Enable SSO" msgstr "SSO aktivieren" -#: common/models.py:1930 +#: common/models.py:1900 msgid "Enable SSO on the login pages" msgstr "SSO auf den Anmeldeseiten aktivieren" -#: common/models.py:1935 +#: common/models.py:1905 msgid "Enable SSO registration" msgstr "SSO Selbstregistrierung aktivieren" -#: common/models.py:1937 +#: common/models.py:1907 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:1943 +#: common/models.py:1913 msgid "Email required" msgstr "Email-Adresse erforderlich" -#: common/models.py:1944 +#: common/models.py:1914 msgid "Require user to supply mail on signup" msgstr "Benutzer müssen bei der Registrierung eine E-Mail angeben" -#: common/models.py:1949 +#: common/models.py:1919 msgid "Auto-fill SSO users" msgstr "SSO-Benutzer automatisch ausfüllen" -#: common/models.py:1951 +#: common/models.py:1921 msgid "Automatically fill out user-details from SSO account-data" msgstr "Benutzer-Details automatisch aus SSO-Konto ausfüllen" -#: common/models.py:1957 +#: common/models.py:1927 msgid "Mail twice" msgstr "E-Mail zweimal" -#: common/models.py:1958 +#: common/models.py:1928 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:1963 +#: common/models.py:1933 msgid "Password twice" msgstr "Passwort zweimal" -#: common/models.py:1964 +#: common/models.py:1934 msgid "On signup ask users twice for their password" msgstr "Bei der Registrierung den Benutzer zweimal nach dem Passwort fragen" -#: common/models.py:1969 +#: common/models.py:1939 msgid "Allowed domains" msgstr "Erlaubte Domains" -#: common/models.py:1971 +#: common/models.py:1941 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "Anmeldung auf bestimmte Domänen beschränken (kommagetrennt, beginnend mit @)" -#: common/models.py:1977 +#: common/models.py:1947 msgid "Group on signup" msgstr "Gruppe bei Registrierung" -#: common/models.py:1978 +#: common/models.py:1948 msgid "Group to which new users are assigned on registration" msgstr "Gruppe der neue Benutzer bei der Registrierung zugewiesen werden" -#: common/models.py:1983 +#: common/models.py:1953 msgid "Enforce MFA" msgstr "MFA erzwingen" -#: common/models.py:1984 +#: common/models.py:1954 msgid "Users must use multifactor security." msgstr "Benutzer müssen Multifaktor-Authentifizierung verwenden." -#: common/models.py:1989 +#: common/models.py:1959 msgid "Check plugins on startup" msgstr "Plugins beim Start prüfen" -#: common/models.py:1991 +#: common/models.py:1961 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:1999 +#: common/models.py:1969 msgid "Check for plugin updates" msgstr "Nach Plugin-Aktualisierungen suchen" -#: common/models.py:2000 +#: common/models.py:1970 msgid "Enable periodic checks for updates to installed plugins" msgstr "Periodische Überprüfungen auf Updates für installierte Plugins aktivieren" -#: common/models.py:2006 +#: common/models.py:1976 msgid "Enable URL integration" msgstr "URL-Integration aktivieren" -#: common/models.py:2007 +#: common/models.py:1977 msgid "Enable plugins to add URL routes" msgstr "Plugins zum Hinzufügen von URLs aktivieren" -#: common/models.py:2013 +#: common/models.py:1983 msgid "Enable navigation integration" msgstr "Navigations-Integration aktivieren" -#: common/models.py:2014 +#: common/models.py:1984 msgid "Enable plugins to integrate into navigation" msgstr "Plugins zur Integration in die Navigation aktivieren" -#: common/models.py:2020 +#: common/models.py:1990 msgid "Enable app integration" msgstr "App-Integration aktivieren" -#: common/models.py:2021 +#: common/models.py:1991 msgid "Enable plugins to add apps" msgstr "Plugins zum Hinzufügen von Apps aktivieren" -#: common/models.py:2027 +#: common/models.py:1997 msgid "Enable schedule integration" msgstr "Terminplan-Integration aktivieren" -#: common/models.py:2028 +#: common/models.py:1998 msgid "Enable plugins to run scheduled tasks" msgstr "Geplante Aufgaben aktivieren" -#: common/models.py:2034 +#: common/models.py:2004 msgid "Enable event integration" msgstr "Ereignis-Integration aktivieren" -#: common/models.py:2035 +#: common/models.py:2005 msgid "Enable plugins to respond to internal events" msgstr "Plugins ermöglichen auf interne Ereignisse zu reagieren" -#: common/models.py:2041 +#: common/models.py:2011 msgid "Enable project codes" msgstr "Projektcodes aktivieren" -#: common/models.py:2042 +#: common/models.py:2012 msgid "Enable project codes for tracking projects" msgstr "Aktiviere Projektcodes für die Verfolgung von Projekten" -#: common/models.py:2047 +#: common/models.py:2017 msgid "Stocktake Functionality" msgstr "Inventurfunktionen" -#: common/models.py:2049 +#: common/models.py:2019 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:2055 +#: common/models.py:2025 msgid "Exclude External Locations" msgstr "Externe Standorte ausschließen" -#: common/models.py:2057 +#: common/models.py:2027 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:2063 +#: common/models.py:2033 msgid "Automatic Stocktake Period" msgstr "Automatische Inventur-Periode" -#: common/models.py:2065 +#: common/models.py:2035 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:2071 +#: common/models.py:2041 msgid "Report Deletion Interval" msgstr "Löschintervall für Berichte" -#: common/models.py:2073 +#: common/models.py:2043 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:2080 +#: common/models.py:2050 msgid "Display Users full names" msgstr "Vollständige Namen von Benutzern anzeigen" -#: common/models.py:2081 +#: common/models.py:2051 msgid "Display Users full names instead of usernames" msgstr "Vollständigen Namen von Benutzern anstatt Benutzername anzeigen" -#: common/models.py:2086 +#: common/models.py:2056 msgid "Enable Test Station Data" msgstr "Teststation-Daten aktivieren" -#: common/models.py:2087 +#: common/models.py:2057 msgid "Enable test station data collection for test results" msgstr "Teststation-Datenerfassung für Testergebnisse aktivieren" -#: common/models.py:2099 common/models.py:2509 +#: common/models.py:2069 common/models.py:2479 msgid "Settings key (must be unique - case insensitive" msgstr "Einstellungs-Schlüssel (muss einzigartig sein, Groß-/ Kleinschreibung wird nicht beachtet)" -#: common/models.py:2142 +#: common/models.py:2112 msgid "Hide inactive parts" msgstr "Inaktive Teile ausblenden" -#: common/models.py:2144 +#: common/models.py:2114 msgid "Hide inactive parts in results displayed on the homepage" msgstr "Ausblenden inaktiver Teile in den auf der Startseite angezeigten Ergebnissen" -#: common/models.py:2150 +#: common/models.py:2120 msgid "Show subscribed parts" msgstr "Abonnierte Teile anzeigen" -#: common/models.py:2151 +#: common/models.py:2121 msgid "Show subscribed parts on the homepage" msgstr "Zeige abonnierte Teile auf der Startseite" -#: common/models.py:2156 +#: common/models.py:2126 msgid "Show subscribed categories" msgstr "Abonnierte Kategorien anzeigen" -#: common/models.py:2157 +#: common/models.py:2127 msgid "Show subscribed part categories on the homepage" msgstr "Zeige abonnierte Teilkategorien auf der Startseite" -#: common/models.py:2162 +#: common/models.py:2132 msgid "Show latest parts" msgstr "Neueste Teile anzeigen" -#: common/models.py:2163 +#: common/models.py:2133 msgid "Show latest parts on the homepage" msgstr "Zeige neueste Teile auf der Startseite" -#: common/models.py:2168 +#: common/models.py:2138 msgid "Show invalid BOMs" msgstr "Zeige ungültige Stücklisten" -#: common/models.py:2169 +#: common/models.py:2139 msgid "Show BOMs that await validation on the homepage" msgstr "Zeige Stücklisten, die noch nicht validiert sind, auf der Startseite" -#: common/models.py:2174 +#: common/models.py:2144 msgid "Show recent stock changes" msgstr "Neueste Bestandänderungen anzeigen" -#: common/models.py:2175 +#: common/models.py:2145 msgid "Show recently changed stock items on the homepage" msgstr "Zeige zuletzt geänderte Lagerbestände auf der Startseite" -#: common/models.py:2180 +#: common/models.py:2150 msgid "Show low stock" msgstr "Niedrigen Bestand anzeigen" -#: common/models.py:2181 +#: common/models.py:2151 msgid "Show low stock items on the homepage" msgstr "Zeige geringen Bestand auf der Startseite" -#: common/models.py:2186 +#: common/models.py:2156 msgid "Show depleted stock" msgstr "Lerren Bestand anzeigen" -#: common/models.py:2187 +#: common/models.py:2157 msgid "Show depleted stock items on the homepage" msgstr "Zeige aufgebrauchte Lagerartikel auf der Startseite" -#: common/models.py:2192 +#: common/models.py:2162 msgid "Show needed stock" msgstr "Benötigten Bestand anzeigen" -#: common/models.py:2193 +#: common/models.py:2163 msgid "Show stock items needed for builds on the homepage" msgstr "Zeige Bestand für Bauaufträge auf der Startseite" -#: common/models.py:2198 +#: common/models.py:2168 msgid "Show expired stock" msgstr "Abgelaufenen Bestand anzeigen" -#: common/models.py:2199 +#: common/models.py:2169 msgid "Show expired stock items on the homepage" msgstr "Zeige abgelaufene Lagerbestände auf der Startseite" -#: common/models.py:2204 +#: common/models.py:2174 msgid "Show stale stock" msgstr "Alten Bestand anzeigen" -#: common/models.py:2205 +#: common/models.py:2175 msgid "Show stale stock items on the homepage" msgstr "Zeige überfällige Lagerartikel auf der Startseite" -#: common/models.py:2210 +#: common/models.py:2180 msgid "Show pending builds" msgstr "Ausstehende Bauaufträge anzeigen" -#: common/models.py:2211 +#: common/models.py:2181 msgid "Show pending builds on the homepage" msgstr "Zeige ausstehende Bauaufträge auf der Startseite" -#: common/models.py:2216 +#: common/models.py:2186 msgid "Show overdue builds" msgstr "Zeige überfällige Bauaufträge" -#: common/models.py:2217 +#: common/models.py:2187 msgid "Show overdue builds on the homepage" msgstr "Zeige überfällige Bauaufträge auf der Startseite" -#: common/models.py:2222 +#: common/models.py:2192 msgid "Show outstanding POs" msgstr "Ausstehende POs anzeigen" -#: common/models.py:2223 +#: common/models.py:2193 msgid "Show outstanding POs on the homepage" msgstr "Zeige ausstehende POs auf der Startseite" -#: common/models.py:2228 +#: common/models.py:2198 msgid "Show overdue POs" msgstr "Überfällige POs anzeigen" -#: common/models.py:2229 +#: common/models.py:2199 msgid "Show overdue POs on the homepage" msgstr "Zeige überfällige POs auf der Startseite" -#: common/models.py:2234 +#: common/models.py:2204 msgid "Show outstanding SOs" msgstr "Ausstehende SOs anzeigen" -#: common/models.py:2235 +#: common/models.py:2205 msgid "Show outstanding SOs on the homepage" msgstr "Zeige ausstehende SOs auf der Startseite" -#: common/models.py:2240 +#: common/models.py:2210 msgid "Show overdue SOs" msgstr "Überfällige SOs anzeigen" -#: common/models.py:2241 +#: common/models.py:2211 msgid "Show overdue SOs on the homepage" msgstr "Zeige überfällige SOs auf der Startseite" -#: common/models.py:2246 +#: common/models.py:2216 msgid "Show pending SO shipments" msgstr "Ausstehende Versandaufträge anzeigen" -#: common/models.py:2247 +#: common/models.py:2217 msgid "Show pending SO shipments on the homepage" msgstr "Ausstehende Versandaufträge auf der Startseite anzeigen" -#: common/models.py:2252 +#: common/models.py:2222 msgid "Show News" msgstr "Zeige Neuigkeiten" -#: common/models.py:2253 +#: common/models.py:2223 msgid "Show news on the homepage" msgstr "Neuigkeiten auf der Startseite anzeigen" -#: common/models.py:2258 +#: common/models.py:2228 msgid "Inline label display" msgstr "Label inline anzeigen" -#: common/models.py:2260 +#: common/models.py:2230 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:2266 +#: common/models.py:2236 msgid "Default label printer" msgstr "Standard-Etikettendrucker" -#: common/models.py:2268 +#: common/models.py:2238 msgid "Configure which label printer should be selected by default" msgstr "Einen standardmäßig ausgewählten Etikettendrucker konfigurieren" -#: common/models.py:2274 +#: common/models.py:2244 msgid "Inline report display" msgstr "Berichte inline anzeigen" -#: common/models.py:2276 +#: common/models.py:2246 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:2282 +#: common/models.py:2252 msgid "Search Parts" msgstr "Teile suchen" -#: common/models.py:2283 +#: common/models.py:2253 msgid "Display parts in search preview window" msgstr "Teile in der Suchvorschau anzeigen" -#: common/models.py:2288 +#: common/models.py:2258 msgid "Search Supplier Parts" msgstr "Zulieferteile durchsuchen" -#: common/models.py:2289 +#: common/models.py:2259 msgid "Display supplier parts in search preview window" msgstr "Zuliefererteile in der Suchvorschau anzeigen" -#: common/models.py:2294 +#: common/models.py:2264 msgid "Search Manufacturer Parts" msgstr "Herstellerteile durchsuchen" -#: common/models.py:2295 +#: common/models.py:2265 msgid "Display manufacturer parts in search preview window" msgstr "Herstellerteile in der Suchvorschau anzeigen" -#: common/models.py:2300 +#: common/models.py:2270 msgid "Hide Inactive Parts" msgstr "Inaktive Teile ausblenden" -#: common/models.py:2301 +#: common/models.py:2271 msgid "Excluded inactive parts from search preview window" msgstr "Inaktive Teile in der Suchvorschau ausblenden" -#: common/models.py:2306 +#: common/models.py:2276 msgid "Search Categories" msgstr "Kategorien durchsuchen" -#: common/models.py:2307 +#: common/models.py:2277 msgid "Display part categories in search preview window" msgstr "Teilekategorien in der Suchvorschau anzeigen" -#: common/models.py:2312 +#: common/models.py:2282 msgid "Search Stock" msgstr "Bestand durchsuchen" -#: common/models.py:2313 +#: common/models.py:2283 msgid "Display stock items in search preview window" msgstr "Lagerartikel in Suchvorschau anzeigen" -#: common/models.py:2318 +#: common/models.py:2288 msgid "Hide Unavailable Stock Items" msgstr "Nicht verfügbare Artikel ausblenden" -#: common/models.py:2320 +#: common/models.py:2290 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:2326 +#: common/models.py:2296 msgid "Search Locations" msgstr "Lagerorte durchsuchen" -#: common/models.py:2327 +#: common/models.py:2297 msgid "Display stock locations in search preview window" msgstr "Lagerorte in Suchvorschau anzeigen" -#: common/models.py:2332 +#: common/models.py:2302 msgid "Search Companies" msgstr "Firmen durchsuchen" -#: common/models.py:2333 +#: common/models.py:2303 msgid "Display companies in search preview window" msgstr "Firmen in der Suchvorschau anzeigen" -#: common/models.py:2338 +#: common/models.py:2308 msgid "Search Build Orders" msgstr "Bauaufträge durchsuchen" -#: common/models.py:2339 +#: common/models.py:2309 msgid "Display build orders in search preview window" msgstr "Bauaufträge in der Suchvorschau anzeigen" -#: common/models.py:2344 +#: common/models.py:2314 msgid "Search Purchase Orders" msgstr "Bestellungen durchsuchen" -#: common/models.py:2345 +#: common/models.py:2315 msgid "Display purchase orders in search preview window" msgstr "Bestellungen in der Suchvorschau anzeigen" -#: common/models.py:2350 +#: common/models.py:2320 msgid "Exclude Inactive Purchase Orders" msgstr "Inaktive Bestellungen ausblenden" -#: common/models.py:2352 +#: common/models.py:2322 msgid "Exclude inactive purchase orders from search preview window" msgstr "Inaktive Bestellungen in der Suchvorschau ausblenden" -#: common/models.py:2358 +#: common/models.py:2328 msgid "Search Sales Orders" msgstr "Aufträge durchsuchen" -#: common/models.py:2359 +#: common/models.py:2329 msgid "Display sales orders in search preview window" msgstr "Aufträge in der Suchvorschau anzeigen" -#: common/models.py:2364 +#: common/models.py:2334 msgid "Exclude Inactive Sales Orders" msgstr "Inaktive Aufträge ausblenden" -#: common/models.py:2366 +#: common/models.py:2336 msgid "Exclude inactive sales orders from search preview window" msgstr "Inaktive Aufträge in der Suchvorschau ausblenden" -#: common/models.py:2372 +#: common/models.py:2342 msgid "Search Return Orders" msgstr "Suche nach Rücksendungen" -#: common/models.py:2373 +#: common/models.py:2343 msgid "Display return orders in search preview window" msgstr "Rücksendungen in der Suchvorschau anzeigen" -#: common/models.py:2378 +#: common/models.py:2348 msgid "Exclude Inactive Return Orders" msgstr "Inaktive Rücksendungen ausblenden" -#: common/models.py:2380 +#: common/models.py:2350 msgid "Exclude inactive return orders from search preview window" msgstr "Inaktive Rücksendungen in der Suchvorschau ausblenden" -#: common/models.py:2386 +#: common/models.py:2356 msgid "Search Preview Results" msgstr "Anzahl Suchergebnisse" -#: common/models.py:2388 +#: common/models.py:2358 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:2394 +#: common/models.py:2364 msgid "Regex Search" msgstr "Regex Suche" -#: common/models.py:2395 +#: common/models.py:2365 msgid "Enable regular expressions in search queries" msgstr "Reguläre Ausdrücke in Suchabfragen aktivieren" -#: common/models.py:2400 +#: common/models.py:2370 msgid "Whole Word Search" msgstr "Ganzes Wort suchen" -#: common/models.py:2401 +#: common/models.py:2371 msgid "Search queries return results for whole word matches" msgstr "Suchabfragen liefern Ergebnisse für ganze Wortkombinationen" -#: common/models.py:2406 +#: common/models.py:2376 msgid "Show Quantity in Forms" msgstr "zeige Bestand in Eingabemasken" -#: common/models.py:2407 +#: common/models.py:2377 msgid "Display available part quantity in some forms" msgstr "Zeige den verfügbaren Bestand in einigen Eingabemasken" -#: common/models.py:2412 +#: common/models.py:2382 msgid "Escape Key Closes Forms" msgstr "Esc-Taste schließt Formulare" -#: common/models.py:2413 +#: common/models.py:2383 msgid "Use the escape key to close modal forms" msgstr "Benutze die Esc-Taste, um Formulare zu schließen" -#: common/models.py:2418 +#: common/models.py:2388 msgid "Fixed Navbar" msgstr "Fixierter Navigationsleiste" -#: common/models.py:2419 +#: common/models.py:2389 msgid "The navbar position is fixed to the top of the screen" msgstr "Position der Navigationsleiste am oberen Bildschirmrand fixieren" -#: common/models.py:2424 +#: common/models.py:2394 msgid "Date Format" msgstr "Datumsformat" -#: common/models.py:2425 +#: common/models.py:2395 msgid "Preferred format for displaying dates" msgstr "Bevorzugtes Format für die Anzeige von Daten" -#: common/models.py:2438 part/templates/part/detail.html:41 +#: common/models.py:2408 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Teilzeitplanung" -#: common/models.py:2439 +#: common/models.py:2409 msgid "Display part scheduling information" msgstr "Zeige Zeitplanung für Teile" -#: common/models.py:2444 part/templates/part/detail.html:62 +#: common/models.py:2414 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "Inventur" -#: common/models.py:2446 +#: common/models.py:2416 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "Zeigt Inventur-Informationen an (falls die Inventurfunktion aktiviert ist)" -#: common/models.py:2452 +#: common/models.py:2422 msgid "Table String Length" msgstr "Zeichenkettenlänge in Tabellen" -#: common/models.py:2454 +#: common/models.py:2424 msgid "Maximum length limit for strings displayed in table views" msgstr "Maximale Länge für Zeichenketten, die in Tabellenansichten angezeigt werden" -#: common/models.py:2460 +#: common/models.py:2430 msgid "Default part label template" msgstr "Standardvorlage für Teilebeschriftung" -#: common/models.py:2461 +#: common/models.py:2431 msgid "The part label template to be automatically selected" msgstr "Die Teil-Etikettenvorlage, die automatisch ausgewählt werden soll" -#: common/models.py:2466 +#: common/models.py:2436 msgid "Default stock item template" msgstr "Lagerartikel-Standardvorlage" -#: common/models.py:2468 +#: common/models.py:2438 msgid "The stock item label template to be automatically selected" msgstr "Die Lagerartikel-Etikettenvorlage soll automatisch ausgewählt werden" -#: common/models.py:2474 +#: common/models.py:2444 msgid "Default stock location label template" msgstr "Standardetikettenvorlage für Lagerstandort" -#: common/models.py:2476 +#: common/models.py:2446 msgid "The stock location label template to be automatically selected" msgstr "Die Lagerstandort-Etikettenvorlage, die automatisch ausgewählt werden soll" -#: common/models.py:2482 +#: common/models.py:2452 msgid "Default build line label template" msgstr "Standardetikettenvorlage für Bauauftragspositionen" -#: common/models.py:2484 +#: common/models.py:2454 msgid "The build line label template to be automatically selected" msgstr "Die Bauauftragspositionsetikettenvorlage welche automatisch ausgewählt werden soll" -#: common/models.py:2490 +#: common/models.py:2460 msgid "Receive error reports" msgstr "Fehlerberichte empfangen" -#: common/models.py:2491 +#: common/models.py:2461 msgid "Receive notifications for system errors" msgstr "Benachrichtigungen bei Systemfehlern erhalten" -#: common/models.py:2496 +#: common/models.py:2466 msgid "Last used printing machines" msgstr "Zuletzt verwendete Druckmaschinen" -#: common/models.py:2497 +#: common/models.py:2467 msgid "Save the last used printing machines for a user" msgstr "Die zuletzt benutzten Druckmaschinen für einen Benutzer speichern" -#: common/models.py:2540 +#: common/models.py:2487 common/models.py:2488 common/models.py:2636 +#: common/models.py:2637 common/models.py:2882 common/models.py:2883 +#: common/models.py:3193 common/models.py:3194 part/models.py:3193 +#: part/models.py:3280 part/models.py:3353 part/models.py:3381 +#: plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "Benutzer" + +#: common/models.py:2510 msgid "Price break quantity" msgstr "Preisstaffelungs Anzahl" -#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1382 order/models.py:2301 -#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 +#: common/models.py:2517 company/serializers.py:472 order/admin.py:42 +#: order/models.py:1346 order/models.py:2265 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1886 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:740 msgid "Price" msgstr "Preis" -#: common/models.py:2548 +#: common/models.py:2518 msgid "Unit price at specified quantity" msgstr "Stückpreis für die angegebene Anzahl" -#: common/models.py:2719 common/models.py:2904 +#: common/models.py:2613 common/models.py:2798 msgid "Endpoint" msgstr "Endpunkt" -#: common/models.py:2720 +#: common/models.py:2614 msgid "Endpoint at which this webhook is received" msgstr "Endpunkt, an dem dieser Webhook empfangen wird" -#: common/models.py:2730 +#: common/models.py:2624 msgid "Name for this webhook" msgstr "Name für diesen Webhook" -#: common/models.py:2734 company/models.py:160 company/models.py:814 -#: machine/models.py:39 part/admin.py:88 part/models.py:1088 -#: plugin/models.py:65 templates/js/translated/company.js:523 +#: common/models.py:2628 company/models.py:163 company/models.py:782 +#: machine/models.py:39 part/admin.py:88 part/models.py:1081 +#: plugin/models.py:66 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3464,101 +3408,118 @@ msgstr "Name für diesen Webhook" msgid "Active" msgstr "Aktiv" -#: common/models.py:2734 +#: common/models.py:2628 msgid "Is this webhook active" msgstr "Ist dieser Webhook aktiv" -#: common/models.py:2750 users/models.py:159 +#: common/models.py:2644 users/models.py:159 msgid "Token" msgstr "Token" -#: common/models.py:2751 +#: common/models.py:2645 msgid "Token for access" msgstr "Token für Zugang" -#: common/models.py:2759 +#: common/models.py:2653 msgid "Secret" msgstr "Geheimnis" -#: common/models.py:2760 +#: common/models.py:2654 msgid "Shared secret for HMAC" msgstr "Shared Secret für HMAC" -#: common/models.py:2868 +#: common/models.py:2762 msgid "Message ID" msgstr "Nachrichten-ID" -#: common/models.py:2869 +#: common/models.py:2763 msgid "Unique identifier for this message" msgstr "Eindeutige Kennung für diese Nachricht" -#: common/models.py:2877 +#: common/models.py:2771 msgid "Host" msgstr "Host" -#: common/models.py:2878 +#: common/models.py:2772 msgid "Host from which this message was received" msgstr "Host von dem diese Nachricht empfangen wurde" -#: common/models.py:2886 +#: common/models.py:2780 msgid "Header" msgstr "Kopfzeile" -#: common/models.py:2887 +#: common/models.py:2781 msgid "Header of this message" msgstr "Header dieser Nachricht" -#: common/models.py:2894 +#: common/models.py:2788 msgid "Body" msgstr "Body" -#: common/models.py:2895 +#: common/models.py:2789 msgid "Body of this message" msgstr "Body dieser Nachricht" -#: common/models.py:2905 +#: common/models.py:2799 msgid "Endpoint on which this message was received" msgstr "Endpunkt, über den diese Nachricht empfangen wurde" -#: common/models.py:2910 +#: common/models.py:2804 msgid "Worked on" msgstr "Bearbeitet" -#: common/models.py:2911 +#: common/models.py:2805 msgid "Was the work on this message finished?" msgstr "Wurde die Arbeit an dieser Nachricht abgeschlossen?" -#: common/models.py:3037 +#: common/models.py:2931 msgid "Id" msgstr "ID" -#: common/models.py:3039 templates/js/translated/company.js:965 +#: common/models.py:2933 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "Titel" -#: common/models.py:3043 templates/js/translated/news.js:60 +#: common/models.py:2935 common/models.py:3177 company/models.py:149 +#: company/models.py:440 company/models.py:500 company/models.py:799 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +#: part/admin.py:55 part/models.py:955 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "Link" + +#: common/models.py:2937 templates/js/translated/news.js:60 msgid "Published" msgstr "Veröffentlicht" -#: common/models.py:3045 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2939 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:3047 templates/js/translated/news.js:52 +#: common/models.py:2941 templates/js/translated/news.js:52 msgid "Summary" msgstr "Zusammenfassung" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Read" msgstr "Gelesen" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Was this news item read?" msgstr "Wurde diese Nachricht gelesen?" -#: common/models.py:3067 company/models.py:156 part/models.py:972 +#: common/models.py:2961 company/models.py:159 part/models.py:965 #: 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.html:35 @@ -3568,34 +3529,89 @@ msgstr "Wurde diese Nachricht gelesen?" msgid "Image" msgstr "Bild" -#: common/models.py:3067 +#: common/models.py:2961 msgid "Image file" msgstr "Bilddatei" -#: common/models.py:3109 +#: common/models.py:2973 common/models.py:3161 +msgid "Target model type for this image" +msgstr "" + +#: common/models.py:2977 +msgid "Target model ID for this image" +msgstr "" + +#: common/models.py:3018 msgid "Unit name must be a valid identifier" msgstr "Einheitsname muss eine gültige Kennung sein" -#: common/models.py:3128 +#: common/models.py:3037 msgid "Unit name" msgstr "Einheitsname" -#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3044 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "Symbol" -#: common/models.py:3136 +#: common/models.py:3045 msgid "Optional unit symbol" msgstr "Optionales Einheitssymbol" -#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3052 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "Definition" -#: common/models.py:3144 +#: common/models.py:3053 msgid "Unit definition" msgstr "Einheitsdefinition" +#: common/models.py:3111 common/models.py:3168 stock/models.py:2426 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "Anhang" + +#: common/models.py:3123 +msgid "Missing file" +msgstr "Fehlende Datei" + +#: common/models.py:3124 +msgid "Missing external link" +msgstr "Fehlender externer Link" + +#: common/models.py:3169 +msgid "Select file to attach" +msgstr "Datei zum Anhängen auswählen" + +#: common/models.py:3184 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "Kommentar" + +#: common/models.py:3185 +msgid "Attachment comment" +msgstr "" + +#: common/models.py:3201 +msgid "Upload date" +msgstr "" + +#: common/models.py:3202 +msgid "Date the file was uploaded" +msgstr "" + +#: common/models.py:3206 +msgid "File size" +msgstr "" + +#: common/models.py:3206 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3244 common/serializers.py:553 +msgid "Invalid model type specified for attachment" +msgstr "" + #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" @@ -3630,66 +3646,103 @@ msgstr "Artikel wurden aus einer Rücksendung erhalten" msgid "Error raised by plugin" msgstr "Fehler in Plugin aufgetreten" -#: common/serializers.py:366 +#: common/serializers.py:371 msgid "Is Running" msgstr "Wird ausgeführt" -#: common/serializers.py:372 +#: common/serializers.py:377 msgid "Pending Tasks" msgstr "Anstehende Aufgaben" -#: common/serializers.py:378 +#: common/serializers.py:383 msgid "Scheduled Tasks" msgstr "Geplante Aufgaben" -#: common/serializers.py:384 +#: common/serializers.py:389 msgid "Failed Tasks" msgstr "Fehlgeschlagene Aufgaben" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Task ID" msgstr "Aufgabe-ID" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Unique task ID" msgstr "Eindeutige Aufgaben-ID" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock" msgstr "Sperren" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock time" msgstr "Sperrzeit" -#: common/serializers.py:403 +#: common/serializers.py:408 msgid "Task name" msgstr "Aufgabenname" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function" msgstr "Funktion" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function name" msgstr "Funktionsname" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Arguments" msgstr "Parameter" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Task arguments" msgstr "Aufgaben-Parameter" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Keyword Arguments" msgstr "Schlüsselwort Parameter" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Task keyword arguments" msgstr "Schlüsselwort Parameter für Aufgaben" +#: common/serializers.py:525 +msgid "Filename" +msgstr "Dateiname" + +#: common/serializers.py:532 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: common/serializers.py:559 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "" + +#: common/validators.py:33 +msgid "No attachment model type provided" +msgstr "" + +#: common/validators.py:39 +msgid "Invalid attachment model type" +msgstr "" + +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "Eine leere Domain ist nicht erlaubt." + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +msgstr "Ungültiger Domainname: {domain}" + #: 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 @@ -3728,210 +3781,222 @@ msgstr "Teile importiert" msgid "Previous Step" msgstr "Vorheriger Schritt" -#: company/api.py:164 +#: company/api.py:144 msgid "Part is Active" msgstr "Teil ist aktiv" -#: company/api.py:168 +#: company/api.py:148 msgid "Manufacturer is Active" msgstr "Hersteller ist aktiv" -#: company/api.py:317 +#: company/api.py:281 msgid "Supplier Part is Active" msgstr "Lieferantenteil ist aktiv" -#: company/api.py:321 +#: company/api.py:285 msgid "Internal Part is Active" msgstr "Internes Teil ist aktiv" -#: company/api.py:325 +#: company/api.py:289 msgid "Supplier is Active" msgstr "Lieferant ist aktiv" -#: company/models.py:114 +#: company/models.py:100 company/models.py:365 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:822 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "Firma" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "Firmen" + +#: company/models.py:117 msgid "Company description" msgstr "Firmenbeschreibung" -#: company/models.py:115 +#: company/models.py:118 msgid "Description of the company" msgstr "Firmenbeschreibung" -#: company/models.py:120 company/templates/company/company_base.html:106 +#: company/models.py:123 company/templates/company/company_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:532 msgid "Website" msgstr "Webseite" -#: company/models.py:120 +#: company/models.py:123 msgid "Company website URL" msgstr "Firmenwebsite Adresse/URL" -#: company/models.py:125 +#: company/models.py:128 msgid "Phone number" msgstr "Kontakt-Tel." -#: company/models.py:127 +#: company/models.py:130 msgid "Contact phone number" msgstr "Kontakt-Telefon" -#: company/models.py:134 +#: company/models.py:137 msgid "Contact email address" msgstr "Kontakt-Email" -#: company/models.py:139 company/templates/company/company_base.html:145 +#: company/models.py:142 company/templates/company/company_base.html:145 #: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "Kontakt" -#: company/models.py:141 +#: company/models.py:144 msgid "Point of contact" msgstr "Anlaufstelle" -#: company/models.py:147 +#: company/models.py:150 msgid "Link to external company information" msgstr "Link auf externe Firmeninformation" -#: company/models.py:160 +#: company/models.py:163 msgid "Is this company active?" msgstr "Ist dieses Unternehmen aktiv?" -#: company/models.py:165 +#: company/models.py:168 msgid "is customer" msgstr "ist Kunde" -#: company/models.py:166 +#: company/models.py:169 msgid "Do you sell items to this company?" msgstr "Verkaufen Sie Teile an diese Firma?" -#: company/models.py:171 +#: company/models.py:174 msgid "is supplier" msgstr "ist Zulieferer" -#: company/models.py:172 +#: company/models.py:175 msgid "Do you purchase items from this company?" msgstr "Kaufen Sie Teile von dieser Firma?" -#: company/models.py:177 +#: company/models.py:180 msgid "is manufacturer" msgstr "ist Hersteller" -#: company/models.py:178 +#: company/models.py:181 msgid "Does this company manufacture parts?" msgstr "Produziert diese Firma Teile?" -#: company/models.py:186 +#: company/models.py:189 msgid "Default currency used for this company" msgstr "Standard-Währung für diese Firma" -#: company/models.py:273 company/models.py:382 -#: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:812 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 -msgid "Company" -msgstr "Firma" - -#: company/models.py:383 +#: company/models.py:366 msgid "Select company" msgstr "Firma auswählen" -#: company/models.py:388 +#: company/models.py:371 msgid "Address title" msgstr "Adresstitel" -#: company/models.py:389 +#: company/models.py:372 msgid "Title describing the address entry" msgstr "Titel zur Beschreibung des Adresseintrages" -#: company/models.py:395 +#: company/models.py:378 msgid "Primary address" msgstr "Primäre Adresse" -#: company/models.py:396 +#: company/models.py:379 msgid "Set as primary address" msgstr "Als primäre Adresse festlegen" -#: company/models.py:401 templates/js/translated/company.js:914 +#: company/models.py:384 templates/js/translated/company.js:914 #: templates/js/translated/company.js:971 msgid "Line 1" msgstr "Linie 1" -#: company/models.py:402 +#: company/models.py:385 msgid "Address line 1" msgstr "Adresszeile 1" -#: company/models.py:408 templates/js/translated/company.js:915 +#: company/models.py:391 templates/js/translated/company.js:915 #: templates/js/translated/company.js:977 msgid "Line 2" msgstr "Linie 2" -#: company/models.py:409 +#: company/models.py:392 msgid "Address line 2" msgstr "Adresszeile 2" -#: company/models.py:415 company/models.py:416 +#: company/models.py:398 company/models.py:399 #: templates/js/translated/company.js:983 msgid "Postal code" msgstr "Postleitzahl" -#: company/models.py:422 +#: company/models.py:405 msgid "City/Region" msgstr "Stadt/Region" -#: company/models.py:423 +#: company/models.py:406 msgid "Postal code city/region" msgstr "Postleitzahl Stadt/Region" -#: company/models.py:429 +#: company/models.py:412 msgid "State/Province" msgstr "Staat/Provinz" -#: company/models.py:430 +#: company/models.py:413 msgid "State or province" msgstr "Bundesland" -#: company/models.py:436 templates/js/translated/company.js:1001 +#: company/models.py:419 templates/js/translated/company.js:1001 msgid "Country" msgstr "Land" -#: company/models.py:437 +#: company/models.py:420 msgid "Address country" msgstr "Adresse Land" -#: company/models.py:443 +#: company/models.py:426 msgid "Courier shipping notes" msgstr "Versandnotizen" -#: company/models.py:444 +#: company/models.py:427 msgid "Notes for shipping courier" msgstr "Notizen für Versandkurier" -#: company/models.py:450 +#: company/models.py:433 msgid "Internal shipping notes" msgstr "Interne Versandnotizen" -#: company/models.py:451 +#: company/models.py:434 msgid "Shipping notes for internal use" msgstr "Versandnotizen für interne Verwendung" -#: company/models.py:458 +#: company/models.py:441 msgid "Link to address information (external)" msgstr "Link zu Adressinformationen (extern)" -#: company/models.py:489 company/models.py:792 stock/models.py:768 -#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 +#: company/models.py:463 company/models.py:574 company/models.py:792 +#: 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:475 company/models.py:760 stock/models.py:766 +#: stock/serializers.py:422 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Basisteil" -#: company/models.py:491 company/models.py:794 +#: company/models.py:477 company/models.py:762 msgid "Select part" msgstr "Teil auswählen" -#: company/models.py:500 company/templates/company/company_base.html:82 +#: company/models.py:486 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:530 +#: company/templates/company/supplier_part.html:145 part/serializers.py:525 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -3941,152 +4006,154 @@ msgstr "Teil auswählen" msgid "Manufacturer" msgstr "Hersteller" -#: company/models.py:501 +#: company/models.py:487 msgid "Select manufacturer" msgstr "Hersteller auswählen" -#: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:540 +#: company/models.py:493 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:535 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 -#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1801 #: templates/js/translated/purchase_order.js:1851 #: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "MPN" -#: company/models.py:508 +#: company/models.py:494 msgid "Manufacturer Part Number" msgstr "Hersteller-Teilenummer" -#: company/models.py:515 +#: company/models.py:501 msgid "URL for external manufacturer part link" msgstr "Externe URL für das Herstellerteil" -#: company/models.py:524 +#: company/models.py:510 msgid "Manufacturer part description" msgstr "Teilbeschreibung des Herstellers" -#: company/models.py:581 company/models.py:608 company/models.py:824 -#: 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:615 +#: company/models.py:581 msgid "Parameter name" msgstr "Parametername" -#: company/models.py:621 report/templates/report/inventree_test_report.html:104 -#: stock/models.py:2429 templates/js/translated/company.js:1166 -#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 +#: company/models.py:587 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2418 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1493 #: templates/js/translated/stock.js:1522 msgid "Value" msgstr "Wert" -#: company/models.py:622 +#: company/models.py:588 msgid "Parameter value" msgstr "Parameterwert" -#: company/models.py:629 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1052 part/models.py:3666 +#: company/models.py:595 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1045 part/models.py:3646 #: part/templates/part/part_base.html:284 -#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1512 +#: templates/js/translated/part.js:1616 templates/js/translated/part.js:2370 msgid "Units" msgstr "Einheiten" -#: company/models.py:630 +#: company/models.py:596 msgid "Parameter units" msgstr "Parametereinheit" -#: company/models.py:732 +#: company/models.py:648 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:777 stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "Zuliefererteil" + +#: company/models.py:700 msgid "Pack units must be compatible with the base part units" msgstr "Packeinheiten müssen mit den Basisteileinheiten kompatibel sein" -#: company/models.py:739 +#: company/models.py:707 msgid "Pack units must be greater than zero" msgstr "Packeinheiten müssen größer als Null sein" -#: company/models.py:753 +#: company/models.py:721 msgid "Linked manufacturer part must reference the same base part" msgstr "Verlinktes Herstellerteil muss dasselbe Basisteil referenzieren" -#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/models.py:770 company/templates/company/company_base.html:87 #: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:514 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:509 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:511 -#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1769 #: templates/js/translated/pricing.js:498 #: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "Zulieferer" -#: company/models.py:803 +#: company/models.py:771 msgid "Select supplier" msgstr "Zulieferer auswählen" -#: company/models.py:809 part/serializers.py:525 +#: company/models.py:777 part/serializers.py:520 msgid "Supplier stock keeping unit" msgstr "Lagerbestandseinheit (SKU) des Zulieferers" -#: company/models.py:815 +#: company/models.py:783 msgid "Is this supplier part active?" msgstr "Ist dieser Lieferantenteil aktiv?" -#: company/models.py:825 +#: company/models.py:793 msgid "Select manufacturer part" msgstr "Herstellerteil auswählen" -#: company/models.py:832 +#: company/models.py:800 msgid "URL for external supplier part link" msgstr "Teil-URL des Zulieferers" -#: company/models.py:841 +#: company/models.py:809 msgid "Supplier part description" msgstr "Zuliefererbeschreibung des Teils" -#: company/models.py:848 company/templates/company/supplier_part.html:187 -#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 +#: company/models.py:816 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4093 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_purchase_order_report.html:32 #: report/templates/report/inventree_return_order_report.html:27 #: report/templates/report/inventree_sales_order_report.html:32 #: report/templates/report/inventree_stock_location_report.html:105 -#: stock/serializers.py:708 +#: stock/serializers.py:710 msgid "Note" msgstr "Notiz" -#: company/models.py:857 part/models.py:2010 +#: company/models.py:825 part/models.py:2003 msgid "base cost" msgstr "Basiskosten" -#: company/models.py:858 part/models.py:2011 +#: company/models.py:826 part/models.py:2004 msgid "Minimum charge (e.g. stocking fee)" msgstr "Mindestpreis" -#: company/models.py:865 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 +#: company/models.py:833 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:797 stock/serializers.py:1475 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 #: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "Verpackungen" -#: company/models.py:866 +#: company/models.py:834 msgid "Part packaging" msgstr "Teile-Verpackungen" -#: company/models.py:871 templates/js/translated/company.js:1651 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: company/models.py:839 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:311 #: templates/js/translated/purchase_order.js:841 #: templates/js/translated/purchase_order.js:1103 @@ -4095,35 +4162,35 @@ msgstr "Teile-Verpackungen" msgid "Pack Quantity" msgstr "Packmenge" -#: company/models.py:873 +#: company/models.py:841 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:892 part/models.py:2017 +#: company/models.py:860 part/models.py:2010 msgid "multiple" msgstr "Vielfache" -#: company/models.py:893 +#: company/models.py:861 msgid "Order multiple" msgstr "Mehrere bestellen" -#: company/models.py:905 +#: company/models.py:873 msgid "Quantity available from supplier" msgstr "Verfügbare Menge von Lieferanten" -#: company/models.py:911 +#: company/models.py:879 msgid "Availability Updated" msgstr "Verfügbarkeit aktualisiert" -#: company/models.py:912 +#: company/models.py:880 msgid "Date of last update of availability data" msgstr "Datum des letzten Updates der Verfügbarkeitsdaten" -#: company/serializers.py:163 +#: company/serializers.py:161 msgid "Default currency used for this supplier" msgstr "Standard-Währung für diesen Zulieferer" -#: company/serializers.py:381 part/admin.py:126 +#: company/serializers.py:357 part/admin.py:126 #: part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1689 #: templates/js/translated/table_filters.js:355 @@ -4135,7 +4202,7 @@ msgstr "Auf Lager" #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 #: templates/js/translated/model_renderers.js:312 -#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +#: templates/js/translated/part.js:815 templates/js/translated/part.js:1219 msgid "Inactive" msgstr "Inaktiv" @@ -4174,7 +4241,7 @@ msgstr "Firma löschen" #: report/templates/report/inventree_purchase_order_report.html:40 #: report/templates/report/inventree_sales_order_report.html:40 #: report/templates/report/inventree_test_report.html:84 -#: report/templates/report/inventree_test_report.html:163 +#: report/templates/report/inventree_test_report.html:162 msgid "Part image" msgstr "Artikelbild" @@ -4193,10 +4260,10 @@ msgstr "Bild von URL herunterladen" msgid "Delete image" msgstr "Bild löschen" -#: company/templates/company/company_base.html:92 order/models.py:940 -#: order/models.py:2068 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:148 stock/models.py:821 -#: stock/models.py:822 stock/serializers.py:1229 +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2032 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:819 +#: stock/models.py:820 stock/serializers.py:1225 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 @@ -4407,7 +4474,7 @@ msgstr "Keine Herstellerdaten verfügbar" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:836 +#: part/admin.py:122 part/serializers.py:832 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4427,8 +4494,8 @@ msgstr "Parameter" msgid "New Parameter" msgstr "Neuer Parameter" -#: company/templates/company/manufacturer_part.html:206 -#: templates/js/translated/part.js:1422 +#: company/templates/company/manufacturer_part.html:196 +#: templates/js/translated/part.js:1423 msgid "Add Parameter" msgstr "Parameter hinzufügen" @@ -4456,15 +4523,6 @@ msgstr "Kontakte" msgid "Addresses" msgstr "Adressen" -#: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:452 -#: stock/models.py:779 stock/templates/stock/item_base.html:233 -#: templates/js/translated/company.js:1600 -#: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2280 -msgid "Supplier Part" -msgstr "Zuliefererteil" - #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1526 msgid "Supplier part actions" @@ -4507,8 +4565,8 @@ msgid "No supplier information available" msgstr "Keine Lieferanteninformationen verfügbar" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:524 -#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: part/bom.py:311 part/serializers.py:519 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1787 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1850 #: templates/js/translated/purchase_order.js:2028 @@ -4520,12 +4578,12 @@ msgid "Supplier Part Stock" msgstr "Zulieferer-Bestand" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:207 msgid "Create new stock item" msgstr "Neuen Lagerartikel hinzufügen" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "Neuer Lagerartikel" @@ -4557,15 +4615,15 @@ msgid "Update Part Availability" msgstr "Verfügbarkeit der Teile aktualisieren" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:835 part/stocktake.py:223 +#: part/serializers.py:831 part/stocktake.py:224 #: part/templates/part/category.html:183 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:916 stock/serializers.py:1080 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:918 stock/serializers.py:1091 #: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:191 #: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1061 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:206 msgid "Stock Items" @@ -4592,10 +4650,6 @@ msgstr "Kunden" msgid "New Customer" msgstr "Neuer Kunde" -#: company/views.py:51 templates/js/translated/search.js:192 -msgid "Companies" -msgstr "Firmen" - #: company/views.py:52 msgid "New Company" msgstr "Neue Firma" @@ -4616,7 +4670,7 @@ msgstr "Anzahl der zu druckenden Kopien für jedes Label" msgid "Connected" msgstr "Verbunden" -#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: machine/machine_types/label_printer.py:235 order/api.py:1467 #: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "Unbekannt" @@ -4705,7 +4759,7 @@ msgstr "Maschinenkonfiguration" msgid "Config type" msgstr "Konfigurationstyp" -#: order/admin.py:30 order/models.py:89 +#: order/admin.py:30 order/models.py:90 #: report/templates/report/inventree_purchase_order_report.html:31 #: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 @@ -4714,30 +4768,30 @@ msgstr "Konfigurationstyp" msgid "Total Price" msgstr "Gesamtpreis" -#: order/api.py:161 order/serializers.py:91 +#: order/api.py:157 order/serializers.py:90 #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "Bestellstatus" -#: order/api.py:165 templates/js/translated/table_filters.js:194 +#: order/api.py:161 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "Hat Preise" -#: order/api.py:240 +#: order/api.py:236 msgid "No matching purchase order found" msgstr "Keine passende Bestellung gefunden" -#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 -#: order/models.py:1586 order/models.py:1700 order/models.py:1854 -#: order/models.py:2267 order/models.py:2318 +#: order/api.py:435 order/api.py:801 order/models.py:1395 order/models.py:1504 +#: order/models.py:1550 order/models.py:1664 order/models.py:1818 +#: order/models.py:2231 order/models.py:2282 #: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "Bestellung" -#: order/api.py:441 order/api.py:838 +#: order/api.py:439 order/api.py:822 msgid "Order Complete" msgstr "Bestellung abgeschlossen" @@ -4745,13 +4799,13 @@ msgstr "Bestellung abgeschlossen" msgid "Order Pending" msgstr "Bestellung ausstehend" -#: order/api.py:1509 order/models.py:380 order/models.py:1432 -#: order/models.py:1541 order/templates/order/order_base.html:9 +#: order/api.py:1461 order/models.py:380 order/models.py:1396 +#: order/models.py:1505 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_purchase_order_report.html:14 -#: stock/serializers.py:119 stock/templates/stock/item_base.html:176 +#: stock/serializers.py:118 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/part.js:1746 templates/js/translated/pricing.js:804 #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1673 @@ -4759,8 +4813,8 @@ msgstr "Bestellung ausstehend" msgid "Purchase Order" msgstr "Bestellung" -#: order/api.py:1513 order/models.py:2017 order/models.py:2268 -#: order/models.py:2319 order/templates/order/return_order_base.html:9 +#: order/api.py:1465 order/models.py:1981 order/models.py:2232 +#: order/models.py:2283 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report.html:13 #: templates/js/translated/return_order.js:280 @@ -4768,15 +4822,15 @@ msgstr "Bestellung" msgid "Return Order" msgstr "Rücksendeauftrag" -#: order/models.py:90 +#: order/models.py:91 msgid "Total price for this order" msgstr "Gesamtpreis für diese Bestellung" -#: order/models.py:95 order/serializers.py:71 +#: order/models.py:96 order/serializers.py:70 msgid "Order Currency" msgstr "Auftragswährung" -#: order/models.py:98 order/serializers.py:72 +#: order/models.py:99 order/serializers.py:71 msgid "Currency for this order (leave blank to use company default)" msgstr "Währung für diesen Auftrag (leer lassen, um Firmenstandard zu verwenden)" @@ -4792,7 +4846,7 @@ msgstr "Auftragsbeschreibung (optional)" msgid "Select project code for this order" msgstr "Projektcode für diesen Auftrag auswählen" -#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 msgid "Link to external page" msgstr "Link auf externe Seite" @@ -4816,11 +4870,11 @@ msgstr "Ansprechpartner für diesen Auftrag" msgid "Company address for this order" msgstr "Firmenadresse für diesen Auftrag" -#: order/models.py:464 order/models.py:929 +#: order/models.py:464 order/models.py:927 msgid "Order reference" msgstr "Bestell-Referenz" -#: order/models.py:472 order/models.py:953 +#: order/models.py:472 order/models.py:951 msgid "Purchase order status" msgstr "Bestellungs-Status" @@ -4841,15 +4895,15 @@ msgstr "Zulieferer Bestellreferenz" msgid "received by" msgstr "Empfangen von" -#: order/models.py:514 order/models.py:2094 +#: order/models.py:514 order/models.py:2058 msgid "Issue Date" msgstr "Aufgabedatum" -#: order/models.py:515 order/models.py:2095 +#: order/models.py:515 order/models.py:2059 msgid "Date order was issued" msgstr "Datum an dem die Bestellung aufgegeben wurde" -#: order/models.py:522 order/models.py:2102 +#: order/models.py:522 order/models.py:2066 msgid "Date order was completed" msgstr "Datum an dem der Auftrag fertigstellt wurde" @@ -4861,98 +4915,94 @@ msgstr "Teile-Zulieferer muss dem Zulieferer der Bestellung entsprechen" msgid "Quantity must be a positive number" msgstr "Anzahl muss eine positive Zahl sein" -#: order/models.py:941 +#: order/models.py:939 msgid "Company to which the items are being sold" msgstr "Firma an die die Teile verkauft werden" -#: order/models.py:964 order/models.py:2087 +#: order/models.py:962 order/models.py:2051 msgid "Customer Reference " msgstr "Kundenreferenz" -#: order/models.py:965 order/models.py:2088 +#: order/models.py:963 order/models.py:2052 msgid "Customer order reference code" msgstr "Bestellreferenz" -#: order/models.py:969 order/models.py:1707 +#: order/models.py:967 order/models.py:1671 #: templates/js/translated/sales_order.js:879 #: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "Versanddatum" -#: order/models.py:978 +#: order/models.py:976 msgid "shipped by" msgstr "Versand von" -#: order/models.py:1027 -#, fuzzy -#| msgid "Build output is already completed" +#: order/models.py:1025 msgid "Order is already complete" -msgstr "Endprodukt bereits hergstellt" +msgstr "" -#: order/models.py:1030 -#, fuzzy -#| msgid "Order cannot be cancelled" +#: order/models.py:1028 msgid "Order is already cancelled" -msgstr "Bestellung kann nicht verworfen werden" +msgstr "" -#: order/models.py:1034 +#: order/models.py:1032 msgid "Only an open order can be marked as complete" msgstr "Nur ein offener Auftrag kann als abgeschlossen markiert werden" -#: order/models.py:1038 +#: order/models.py:1036 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:1043 +#: order/models.py:1041 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:1309 +#: order/models.py:1273 msgid "Item quantity" msgstr "Anzahl" -#: order/models.py:1326 +#: order/models.py:1290 msgid "Line item reference" msgstr "Position - Referenz" -#: order/models.py:1333 +#: order/models.py:1297 msgid "Line item notes" msgstr "Position - Notizen" -#: order/models.py:1345 +#: order/models.py:1309 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:1366 +#: order/models.py:1330 msgid "Line item description (optional)" msgstr "Positionsbeschreibung (optional)" -#: order/models.py:1372 +#: order/models.py:1336 msgid "Context" msgstr "Kontext" -#: order/models.py:1373 +#: order/models.py:1337 msgid "Additional context for this line" msgstr "Zusätzlicher Kontext für diese Zeile" -#: order/models.py:1383 +#: order/models.py:1347 msgid "Unit price" msgstr "Stückpreis" -#: order/models.py:1416 +#: order/models.py:1380 msgid "Supplier part must match supplier" msgstr "Lieferantenteil muss mit Lieferant übereinstimmen" -#: order/models.py:1423 +#: order/models.py:1387 msgid "deleted" msgstr "gelöscht" -#: order/models.py:1451 +#: order/models.py:1415 msgid "Supplier part" msgstr "Zuliefererteil" -#: order/models.py:1458 order/templates/order/order_base.html:196 -#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: order/models.py:1422 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1870 templates/js/translated/part.js:1902 #: templates/js/translated/purchase_order.js:1306 #: templates/js/translated/purchase_order.js:2169 #: templates/js/translated/return_order.js:763 @@ -4961,196 +5011,196 @@ msgstr "Zuliefererteil" msgid "Received" msgstr "Empfangen" -#: order/models.py:1459 +#: order/models.py:1423 msgid "Number of items received" msgstr "Empfangene Objekt-Anzahl" -#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 +#: order/models.py:1431 stock/models.py:938 stock/serializers.py:556 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "Preis" -#: order/models.py:1468 +#: order/models.py:1432 msgid "Unit purchase price" msgstr "Preis pro Einheit" -#: order/models.py:1483 +#: order/models.py:1447 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:1574 +#: order/models.py:1538 msgid "Virtual part cannot be assigned to a sales order" msgstr "Ein virtuelles Teil kann nicht einem Auftrag zugeordnet werden" -#: order/models.py:1579 +#: order/models.py:1543 msgid "Only salable parts can be assigned to a sales order" msgstr "Nur verkaufbare Teile können einem Auftrag zugewiesen werden" -#: order/models.py:1605 part/templates/part/part_pricing.html:107 +#: order/models.py:1569 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:1606 +#: order/models.py:1570 msgid "Unit sale price" msgstr "Stückverkaufspreis" -#: order/models.py:1615 order/status_codes.py:43 +#: order/models.py:1579 order/status_codes.py:43 #: templates/js/translated/sales_order.js:1559 #: templates/js/translated/sales_order.js:1680 #: templates/js/translated/sales_order.js:1993 msgid "Shipped" msgstr "Versendet" -#: order/models.py:1616 +#: order/models.py:1580 msgid "Shipped quantity" msgstr "Versendete Menge" -#: order/models.py:1708 +#: order/models.py:1672 msgid "Date of shipment" msgstr "Versanddatum" -#: order/models.py:1714 templates/js/translated/sales_order.js:1072 +#: order/models.py:1678 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "Lieferdatum" -#: order/models.py:1715 +#: order/models.py:1679 msgid "Date of delivery of shipment" msgstr "Versanddatum" -#: order/models.py:1723 +#: order/models.py:1687 msgid "Checked By" msgstr "Kontrolliert von" -#: order/models.py:1724 +#: order/models.py:1688 msgid "User who checked this shipment" msgstr "Benutzer, der diese Sendung kontrolliert hat" -#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 -#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 +#: order/models.py:1695 order/models.py:1908 order/serializers.py:1342 +#: order/serializers.py:1452 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "Sendung" -#: order/models.py:1732 +#: order/models.py:1696 msgid "Shipment number" msgstr "Sendungsnummer" -#: order/models.py:1740 +#: order/models.py:1704 msgid "Tracking Number" msgstr "Sendungsverfolgungsnummer" -#: order/models.py:1741 +#: order/models.py:1705 msgid "Shipment tracking information" msgstr "Informationen zur Sendungsverfolgung" -#: order/models.py:1748 +#: order/models.py:1712 msgid "Invoice Number" msgstr "Rechnungsnummer" -#: order/models.py:1749 +#: order/models.py:1713 msgid "Reference number for associated invoice" msgstr "Referenznummer für zugehörige Rechnung" -#: order/models.py:1769 +#: order/models.py:1733 msgid "Shipment has already been sent" msgstr "Sendung wurde bereits versandt" -#: order/models.py:1772 +#: order/models.py:1736 msgid "Shipment has no allocated stock items" msgstr "Sendung hat keine zugewiesene Lagerartikel" -#: order/models.py:1890 order/models.py:1892 +#: order/models.py:1854 order/models.py:1856 msgid "Stock item has not been assigned" msgstr "Lagerartikel wurde nicht zugewiesen" -#: order/models.py:1899 +#: order/models.py:1863 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:1902 +#: order/models.py:1866 msgid "Cannot allocate stock to a line without a part" msgstr "Kann Lagerartikel keiner Zeile ohne Teil hinzufügen" -#: order/models.py:1905 +#: order/models.py:1869 msgid "Allocation quantity cannot exceed stock quantity" msgstr "Die zugeordnete Anzahl darf nicht die verfügbare Anzahl überschreiten" -#: order/models.py:1924 order/serializers.py:1231 +#: order/models.py:1888 order/serializers.py:1219 msgid "Quantity must be 1 for serialized stock item" msgstr "Anzahl für serialisierte Lagerartikel muss 1 sein" -#: order/models.py:1927 +#: order/models.py:1891 msgid "Sales order does not match shipment" msgstr "Auftrag gehört nicht zu Sendung" -#: order/models.py:1928 plugin/base/barcodes/api.py:481 +#: order/models.py:1892 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "Sendung gehört nicht zu Auftrag" -#: order/models.py:1936 +#: order/models.py:1900 msgid "Line" msgstr "Position" -#: order/models.py:1945 +#: order/models.py:1909 msgid "Sales order shipment reference" msgstr "Sendungsnummer-Referenz" -#: order/models.py:1958 order/models.py:2275 +#: order/models.py:1922 order/models.py:2239 #: templates/js/translated/return_order.js:721 msgid "Item" msgstr "Position" -#: order/models.py:1959 +#: order/models.py:1923 msgid "Select stock item to allocate" msgstr "Lagerartikel für Zuordnung auswählen" -#: order/models.py:1968 +#: order/models.py:1932 msgid "Enter stock allocation quantity" msgstr "Anzahl für Bestandszuordnung eingeben" -#: order/models.py:2057 +#: order/models.py:2021 msgid "Return Order reference" msgstr "Rücksendungsreferenz" -#: order/models.py:2069 +#: order/models.py:2033 msgid "Company from which items are being returned" msgstr "Firma von der die Artikel zurückgeschickt werden" -#: order/models.py:2081 +#: order/models.py:2045 msgid "Return order status" msgstr "Status der Rücksendung" -#: order/models.py:2260 +#: order/models.py:2224 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:2276 +#: order/models.py:2240 msgid "Select item to return from customer" msgstr "Artikel zur Rücksendung auswählen" -#: order/models.py:2282 +#: order/models.py:2246 msgid "Received Date" msgstr "Empfangsdatum" -#: order/models.py:2283 +#: order/models.py:2247 msgid "The date this this return item was received" msgstr "Das Datum des Empfangs dieses Rücksendeartikels" -#: order/models.py:2294 templates/js/translated/return_order.js:732 +#: order/models.py:2258 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "Ergebnis" -#: order/models.py:2295 +#: order/models.py:2259 msgid "Outcome for this line item" msgstr "Ergebnis für dieses Zeilenelement" -#: order/models.py:2302 +#: order/models.py:2266 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:80 order/templates/order/po_sidebar.html:5 +#: order/serializers.py:79 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_purchase_order_report.html:22 @@ -5159,163 +5209,163 @@ msgstr "Kosten für die Rückgabe oder Reparatur dieses Objektes" msgid "Line Items" msgstr "Positionen" -#: order/serializers.py:84 +#: order/serializers.py:83 msgid "Completed Lines" msgstr "Abgeschlossene Positionen" -#: order/serializers.py:287 +#: order/serializers.py:286 msgid "Order cannot be cancelled" msgstr "Bestellung kann nicht verworfen werden" -#: order/serializers.py:302 order/serializers.py:1247 +#: order/serializers.py:301 order/serializers.py:1235 msgid "Allow order to be closed with incomplete line items" msgstr "Erlaube das Schließen des Auftrags mit unvollständigen Positionen" -#: order/serializers.py:312 order/serializers.py:1257 +#: order/serializers.py:311 order/serializers.py:1245 msgid "Order has incomplete line items" msgstr "Auftrag hat unvollständige Positionen" -#: order/serializers.py:440 +#: order/serializers.py:439 msgid "Order is not open" msgstr "Der Auftrag ist nicht offen" -#: order/serializers.py:461 +#: order/serializers.py:460 msgid "Auto Pricing" msgstr "Automatische Preisgestaltung" -#: order/serializers.py:463 +#: order/serializers.py:462 msgid "Automatically calculate purchase price based on supplier part data" msgstr "Kaufpreis automatisch basierend auf Lieferantenbestandsdaten berechnen" -#: order/serializers.py:473 +#: order/serializers.py:472 msgid "Purchase price currency" msgstr "Kaufpreiswährung" -#: order/serializers.py:479 +#: order/serializers.py:478 msgid "Merge Items" msgstr "Elemente zusammenfügen" -#: order/serializers.py:481 +#: order/serializers.py:480 msgid "Merge items with the same part, destination and target date into one line item" msgstr "Zusammenführen von Elementen mit dem gleichen Teil, Ziel- und Zieldatum zu einem Zeilenelement" -#: order/serializers.py:499 +#: order/serializers.py:498 msgid "Supplier part must be specified" msgstr "Zuliefererteil muss ausgewählt werden" -#: order/serializers.py:502 +#: order/serializers.py:501 msgid "Purchase order must be specified" msgstr "Bestellung muss angegeben sein" -#: order/serializers.py:510 +#: order/serializers.py:509 msgid "Supplier must match purchase order" msgstr "Lieferant muss mit der Bestellung übereinstimmen" -#: order/serializers.py:511 +#: order/serializers.py:510 msgid "Purchase order must match supplier" msgstr "Die Bestellung muss mit dem Lieferant übereinstimmen" -#: order/serializers.py:550 order/serializers.py:1325 +#: order/serializers.py:549 order/serializers.py:1313 msgid "Line Item" msgstr "Position" -#: order/serializers.py:556 +#: order/serializers.py:555 msgid "Line item does not match purchase order" msgstr "Position stimmt nicht mit Kaufauftrag überein" -#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1657 msgid "Select destination location for received items" msgstr "Zielort für empfangene Teile auswählen" -#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:581 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "Losnummer für eingehende Lagerartikel" -#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:589 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "Seriennummern für eingehende Lagerartikel" -#: order/serializers.py:601 templates/js/translated/barcode.js:52 +#: order/serializers.py:600 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Barcode" -#: order/serializers.py:602 +#: order/serializers.py:601 msgid "Scanned barcode" msgstr "Gescannter Barcode" -#: order/serializers.py:618 +#: order/serializers.py:617 msgid "Barcode is already in use" msgstr "Barcode ist bereits in Verwendung" -#: order/serializers.py:642 +#: order/serializers.py:641 msgid "An integer quantity must be provided for trackable parts" msgstr "Ganzzahl für verfolgbare Teile erforderlich" -#: order/serializers.py:690 order/serializers.py:1696 +#: order/serializers.py:689 order/serializers.py:1673 msgid "Line items must be provided" msgstr "Positionen müssen angegeben werden" -#: order/serializers.py:706 +#: order/serializers.py:705 msgid "Destination location must be specified" msgstr "Ziel-Lagerort muss angegeben werden" -#: order/serializers.py:717 +#: order/serializers.py:716 msgid "Supplied barcode values must be unique" msgstr "Barcode muss eindeutig sein" -#: order/serializers.py:1074 +#: order/serializers.py:1062 msgid "Sale price currency" msgstr "Verkaufspreis-Währung" -#: order/serializers.py:1134 +#: order/serializers.py:1122 msgid "No shipment details provided" msgstr "Keine Sendungsdetails angegeben" -#: order/serializers.py:1195 order/serializers.py:1334 +#: order/serializers.py:1183 order/serializers.py:1322 msgid "Line item is not associated with this order" msgstr "Position ist nicht diesem Auftrag zugeordnet" -#: order/serializers.py:1214 +#: order/serializers.py:1202 msgid "Quantity must be positive" msgstr "Anzahl muss positiv sein" -#: order/serializers.py:1344 +#: order/serializers.py:1332 msgid "Enter serial numbers to allocate" msgstr "Seriennummern zum Zuweisen eingeben" -#: order/serializers.py:1366 order/serializers.py:1472 +#: order/serializers.py:1354 order/serializers.py:1460 msgid "Shipment has already been shipped" msgstr "Sendung wurde bereits versandt" -#: order/serializers.py:1369 order/serializers.py:1475 +#: order/serializers.py:1357 order/serializers.py:1463 msgid "Shipment is not associated with this order" msgstr "Sendung ist nicht diesem Auftrag zugeordnet" -#: order/serializers.py:1416 +#: order/serializers.py:1404 msgid "No match found for the following serial numbers" msgstr "Folgende Serienummern konnten nicht gefunden werden" -#: order/serializers.py:1423 +#: order/serializers.py:1411 msgid "The following serial numbers are already allocated" msgstr "Folgende Seriennummern sind bereits zugewiesen" -#: order/serializers.py:1650 +#: order/serializers.py:1627 msgid "Return order line item" msgstr "Artikel der Bestellzeile zurücksenden" -#: order/serializers.py:1656 +#: order/serializers.py:1633 msgid "Line item does not match return order" msgstr "Artikel entspricht nicht der Rücksendeschrift" -#: order/serializers.py:1659 +#: order/serializers.py:1636 msgid "Line item has already been received" msgstr "Artikel wurde bereits erhalten" -#: order/serializers.py:1688 +#: order/serializers.py:1665 msgid "Items can only be received against orders which are in progress" msgstr "Artikel können nur bei laufenden Bestellungen empfangen werden" -#: order/serializers.py:1766 +#: order/serializers.py:1743 msgid "Line price currency" msgstr "Verkaufspreis-Währung" @@ -5645,7 +5695,7 @@ msgstr "Kundenreferenz" #: 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/part.js:1073 #: templates/js/translated/purchase_order.js:1752 #: templates/js/translated/return_order.js:380 #: templates/js/translated/sales_order.js:891 @@ -5741,34 +5791,34 @@ 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:406 part/models.py:3964 part/stocktake.py:218 -#: stock/admin.py:153 +#: part/admin.py:39 part/admin.py:398 part/models.py:3944 part/stocktake.py:219 +#: stock/admin.py:152 msgid "Part ID" msgstr "Teil-ID" -#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 -#: stock/admin.py:157 +#: part/admin.py:41 part/admin.py:405 part/models.py:3945 part/stocktake.py:220 +#: stock/admin.py:156 msgid "Part Name" msgstr "Name des Teils" -#: part/admin.py:45 part/stocktake.py:220 +#: part/admin.py:45 part/stocktake.py:221 msgid "Part Description" msgstr "Beschreibung des Teils" -#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:940 part/templates/part/part_base.html:269 #: report/templates/report/inventree_stock_location_report.html:103 -#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/part.js:1227 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "IPN (Interne Produktnummer)" -#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 -#: report/models.py:161 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2346 +#: part/admin.py:50 part/models.py:949 part/templates/part/part_base.html:277 +#: report/models.py:162 templates/js/translated/part.js:1232 +#: templates/js/translated/part.js:2347 msgid "Revision" msgstr "Version" -#: part/admin.py:53 part/admin.py:319 part/models.py:929 +#: part/admin.py:53 part/admin.py:319 part/models.py:922 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "Schlüsselwörter" @@ -5777,11 +5827,11 @@ msgstr "Schlüsselwörter" msgid "Part Image" msgstr "Artikelbild" -#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:222 msgid "Category ID" msgstr "Kategorie-ID" -#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:223 msgid "Category Name" msgstr "Kategoriename" @@ -5793,11 +5843,11 @@ msgstr "Standard-Standortnummer" msgid "Default Supplier ID" msgstr "Standard-Lieferantennummer" -#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:908 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "Variante von" -#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1036 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "Minimaler Bestand" @@ -5805,26 +5855,26 @@ msgstr "Minimaler Bestand" msgid "Used In" msgstr "Benutzt in" -#: 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 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:235 +#: templates/js/translated/part.js:715 templates/js/translated/part.js:2153 msgid "Building" msgstr "Im Bau" -#: part/admin.py:155 part/models.py:3123 part/models.py:3137 -#: templates/js/translated/part.js:969 +#: part/admin.py:155 part/models.py:3088 part/models.py:3102 +#: templates/js/translated/part.js:970 msgid "Minimum Cost" msgstr "Minimale Kosten" -#: part/admin.py:158 part/models.py:3130 part/models.py:3144 -#: templates/js/translated/part.js:979 +#: part/admin.py:158 part/models.py:3095 part/models.py:3109 +#: templates/js/translated/part.js:980 msgid "Maximum Cost" msgstr "Maximale Kosten" -#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 msgid "Parent ID" msgstr "Eltern ID" -#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 msgid "Parent Name" msgstr "Name des übergeordneten Teils" @@ -5833,141 +5883,149 @@ msgstr "Name des übergeordneten Teils" msgid "Category Path" msgstr "Pfad zur Kategorie" -#: part/admin.py:325 part/models.py:393 part/serializers.py:117 -#: part/serializers.py:272 part/serializers.py:391 +#: part/admin.py:325 part/models.py:396 part/serializers.py:124 +#: part/serializers.py:267 part/serializers.py:386 #: 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:2803 templates/js/translated/search.js:130 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "Teile" -#: part/admin.py:386 +#: part/admin.py:378 msgid "BOM Level" msgstr "Stücklistenebene" -#: part/admin.py:389 +#: part/admin.py:381 msgid "BOM Item ID" msgstr "Stücklisten-Position ID" -#: part/admin.py:399 +#: part/admin.py:391 msgid "Parent IPN" msgstr "Übergeordnete IPN" -#: part/admin.py:410 part/models.py:3966 +#: part/admin.py:402 part/models.py:3946 msgid "Part IPN" msgstr "Teil IPN" -#: part/admin.py:423 part/serializers.py:1278 +#: part/admin.py:415 part/serializers.py:1274 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "Niedrigster Preis" -#: part/admin.py:428 part/serializers.py:1293 +#: part/admin.py:420 part/serializers.py:1289 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "Höchster Preis" -#: part/api.py:110 +#: part/api.py:104 msgid "Starred" msgstr "Markiert" -#: part/api.py:112 +#: part/api.py:106 msgid "Filter by starred categories" msgstr "Nach markierten Kategorien filtern" -#: part/api.py:129 stock/api.py:318 +#: part/api.py:123 stock/api.py:312 msgid "Depth" msgstr "Ebenen" -#: part/api.py:129 +#: part/api.py:123 msgid "Filter by category depth" msgstr "Filter nach Kategorietiefe" -#: part/api.py:147 stock/api.py:336 +#: part/api.py:141 stock/api.py:330 +msgid "Top Level" +msgstr "" + +#: part/api.py:143 +msgid "Filter by top-level categories" +msgstr "" + +#: part/api.py:156 stock/api.py:345 msgid "Cascade" msgstr "Mehrstufig" -#: part/api.py:149 +#: part/api.py:158 msgid "Include sub-categories in filtered results" msgstr "Unterkategorien in gefilterte Ergebnisse einbeziehen" -#: part/api.py:169 +#: part/api.py:179 templates/js/translated/part.js:308 msgid "Parent" msgstr "Übergeordnetes" -#: part/api.py:171 +#: part/api.py:181 msgid "Filter by parent category" msgstr "Nach übergeordneter Kategorie filtern" -#: part/api.py:204 +#: part/api.py:214 msgid "Exclude Tree" msgstr "Baum ausschließen" -#: part/api.py:206 +#: part/api.py:216 msgid "Exclude sub-categories under the specified category" msgstr "Unterkategorien in der angegebenen Kategorie ausschließen" -#: part/api.py:455 +#: part/api.py:449 msgid "Has Results" msgstr "Ergebnisse" -#: part/api.py:622 +#: part/api.py:616 msgid "Incoming Purchase Order" msgstr "Eingehende Bestellung" -#: part/api.py:640 +#: part/api.py:634 msgid "Outgoing Sales Order" msgstr "Ausgehender Auftrag" -#: part/api.py:656 +#: part/api.py:650 msgid "Stock produced by Build Order" msgstr "Lagerartikel produziert von Bauauftrag" -#: part/api.py:740 +#: part/api.py:734 msgid "Stock required for Build Order" msgstr "Lagerartikel für Bauauftrag benötigt" -#: part/api.py:887 +#: part/api.py:881 msgid "Valid" msgstr "Gültig" -#: part/api.py:888 +#: part/api.py:882 msgid "Validate entire Bill of Materials" msgstr "Gesamte Stückliste validieren" -#: part/api.py:894 +#: part/api.py:888 msgid "This option must be selected" msgstr "Diese Option muss ausgewählt werden" -#: part/api.py:1111 +#: part/api.py:1105 msgid "BOM Valid" msgstr "" -#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 -#: part/serializers.py:406 part/serializers.py:1134 -#: part/templates/part/part_base.html:260 stock/api.py:781 +#: part/api.py:1508 part/models.py:932 part/models.py:3374 part/models.py:3889 +#: part/serializers.py:401 part/serializers.py:1130 +#: part/templates/part/part_base.html:260 stock/api.py:791 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2376 +#: templates/js/translated/part.js:2377 msgid "Category" msgstr "Kategorie" -#: part/api.py:1803 +#: part/api.py:1796 msgid "Uses" msgstr "Verwendet" -#: part/bom.py:170 part/models.py:102 part/models.py:982 +#: part/bom.py:170 part/models.py:104 part/models.py:975 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Standard-Lagerort" -#: part/bom.py:171 part/serializers.py:837 +#: part/bom.py:171 part/serializers.py:833 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "Gesamtbestand" @@ -5976,1054 +6034,1066 @@ msgstr "Gesamtbestand" msgid "Input quantity for price calculation" msgstr "Menge für die Preisberechnung" -#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 +#: part/models.py:85 part/models.py:3890 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Teil-Kategorie" -#: part/models.py:84 part/templates/part/category.html:136 +#: part/models.py:86 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "Teil-Kategorien" -#: part/models.py:103 +#: part/models.py:105 msgid "Default location for parts in this category" msgstr "Standard-Lagerort für Teile dieser Kategorie" -#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 +#: part/models.py:110 stock/models.py:174 templates/js/translated/part.js:2810 #: templates/js/translated/stock.js:2772 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "Strukturell" -#: part/models.py:110 +#: part/models.py:112 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:119 +#: part/models.py:121 msgid "Default keywords" msgstr "Standard Stichwörter" -#: part/models.py:120 +#: part/models.py:122 msgid "Default keywords for parts in this category" msgstr "Standard-Stichworte für Teile dieser Kategorie" -#: part/models.py:126 stock/models.py:85 stock/models.py:156 +#: part/models.py:128 stock/models.py:86 stock/models.py:157 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "Symbol" -#: part/models.py:127 stock/models.py:157 +#: part/models.py:129 stock/models.py:158 msgid "Icon (optional)" msgstr "Symbol (optional)" -#: part/models.py:149 +#: part/models.py:151 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:482 +#: part/models.py:485 msgid "Cannot delete this part as it is still active" msgstr "" -#: part/models.py:489 +#: part/models.py:490 msgid "Cannot delete this part as it is used in an assembly" msgstr "" -#: part/models.py:527 +#: part/models.py:528 msgid "Invalid choice for parent part" msgstr "Ungültige Auswahl für übergeordnetes Teil" -#: part/models.py:575 part/models.py:582 +#: part/models.py:576 part/models.py:583 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "Teil '{self}' kann in der Stückliste nicht für '{parent}' (rekursiv) verwendet werden" -#: part/models.py:594 +#: part/models.py:595 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "Teil '{parent}' wird in der Stückliste für '{self}' (rekursiv) verwendet" -#: part/models.py:659 +#: part/models.py:658 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "IPN muss mit Regex-Muster {pattern} übereinstimmen" -#: part/models.py:739 +#: part/models.py:736 msgid "Stock item with this serial number already exists" msgstr "Ein Lagerartikel mit dieser Seriennummer existiert bereits" -#: part/models.py:844 +#: part/models.py:837 msgid "Duplicate IPN not allowed in part settings" msgstr "Doppelte IPN in den Teil-Einstellungen nicht erlaubt" -#: part/models.py:854 +#: part/models.py:847 msgid "Part with this Name, IPN and Revision already exists." msgstr "Teil mit diesem Namen, IPN und Revision existiert bereits." -#: part/models.py:869 +#: part/models.py:862 msgid "Parts cannot be assigned to structural part categories!" msgstr "Strukturellen Teilekategorien können keine Teile zugewiesen werden!" -#: part/models.py:898 part/models.py:3965 +#: part/models.py:891 part/models.py:3945 msgid "Part name" msgstr "Name des Teils" -#: part/models.py:903 +#: part/models.py:896 msgid "Is Template" msgstr "Ist eine Vorlage" -#: part/models.py:904 +#: part/models.py:897 msgid "Is this part a template part?" msgstr "Ist dieses Teil eine Vorlage?" -#: part/models.py:914 +#: part/models.py:907 msgid "Is this part a variant of another part?" msgstr "Ist dieses Teil eine Variante eines anderen Teils?" -#: part/models.py:922 +#: part/models.py:915 msgid "Part description (optional)" msgstr "Artikelbeschreibung (optional)" -#: part/models.py:930 +#: part/models.py:923 msgid "Part keywords to improve visibility in search results" msgstr "Schlüsselworte um die Sichtbarkeit in Suchergebnissen zu verbessern" -#: part/models.py:940 +#: part/models.py:933 msgid "Part category" msgstr "Teile-Kategorie" -#: part/models.py:948 +#: part/models.py:941 msgid "Internal Part Number" msgstr "Interne Teilenummer" -#: part/models.py:955 +#: part/models.py:948 msgid "Part revision or version number" msgstr "Revisions- oder Versionsnummer" -#: part/models.py:980 +#: part/models.py:973 msgid "Where is this item normally stored?" msgstr "Wo wird dieses Teil normalerweise gelagert?" -#: part/models.py:1026 part/templates/part/part_base.html:376 +#: part/models.py:1019 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "Standard Zulieferer" -#: part/models.py:1027 +#: part/models.py:1020 msgid "Default supplier part" msgstr "Standard Zuliefererteil" -#: part/models.py:1034 +#: part/models.py:1027 msgid "Default Expiry" msgstr "Standard Ablaufzeit" -#: part/models.py:1035 +#: part/models.py:1028 msgid "Expiry time (in days) for stock items of this part" msgstr "Ablauf-Zeit (in Tagen) für Bestand dieses Teils" -#: part/models.py:1044 +#: part/models.py:1037 msgid "Minimum allowed stock level" msgstr "Minimal zulässiger Bestand" -#: part/models.py:1053 +#: part/models.py:1046 msgid "Units of measure for this part" msgstr "Maßeinheit für diesen Teil" -#: part/models.py:1060 +#: part/models.py:1053 msgid "Can this part be built from other parts?" msgstr "Kann dieses Teil aus anderen Teilen angefertigt werden?" -#: part/models.py:1066 +#: part/models.py:1059 msgid "Can this part be used to build other parts?" msgstr "Kann dieses Teil zum Bauauftrag von anderen genutzt werden?" -#: part/models.py:1072 +#: part/models.py:1065 msgid "Does this part have tracking for unique items?" msgstr "Hat dieses Teil Tracking für einzelne Objekte?" -#: part/models.py:1078 +#: part/models.py:1071 msgid "Can this part be purchased from external suppliers?" msgstr "Kann dieses Teil von externen Zulieferern gekauft werden?" -#: part/models.py:1084 +#: part/models.py:1077 msgid "Can this part be sold to customers?" msgstr "Kann dieses Teil an Kunden verkauft werden?" -#: part/models.py:1088 +#: part/models.py:1081 msgid "Is this part active?" msgstr "Ist dieses Teil aktiv?" -#: part/models.py:1094 +#: part/models.py:1087 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:1100 +#: part/models.py:1093 msgid "BOM checksum" msgstr "Prüfsumme der Stückliste" -#: part/models.py:1101 +#: part/models.py:1094 msgid "Stored BOM checksum" msgstr "Prüfsumme der Stückliste gespeichert" -#: part/models.py:1109 +#: part/models.py:1102 msgid "BOM checked by" msgstr "Stückliste kontrolliert von" -#: part/models.py:1114 +#: part/models.py:1107 msgid "BOM checked date" msgstr "BOM Kontrolldatum" -#: part/models.py:1130 +#: part/models.py:1123 msgid "Creation User" msgstr "Erstellungs-Nutzer" -#: part/models.py:1140 +#: part/models.py:1133 msgid "Owner responsible for this part" msgstr "Verantwortlicher Besitzer für dieses Teil" -#: part/models.py:1145 part/templates/part/part_base.html:339 +#: part/models.py:1138 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2470 +#: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "Letzte Inventur" -#: part/models.py:2018 +#: part/models.py:2011 msgid "Sell multiple" msgstr "Mehrere verkaufen" -#: part/models.py:3037 +#: part/models.py:3002 msgid "Currency used to cache pricing calculations" msgstr "Währung für die Berechnung der Preise im Cache" -#: part/models.py:3053 +#: part/models.py:3018 msgid "Minimum BOM Cost" msgstr "Minimale Stücklisten Kosten" -#: part/models.py:3054 +#: part/models.py:3019 msgid "Minimum cost of component parts" msgstr "Minimale Kosten für Teile" -#: part/models.py:3060 +#: part/models.py:3025 msgid "Maximum BOM Cost" msgstr "Maximale Stücklisten Kosten" -#: part/models.py:3061 +#: part/models.py:3026 msgid "Maximum cost of component parts" msgstr "Maximale Kosten für Teile" -#: part/models.py:3067 +#: part/models.py:3032 msgid "Minimum Purchase Cost" msgstr "Minimale Einkaufskosten" -#: part/models.py:3068 +#: part/models.py:3033 msgid "Minimum historical purchase cost" msgstr "Minimale historische Kaufkosten" -#: part/models.py:3074 +#: part/models.py:3039 msgid "Maximum Purchase Cost" msgstr "Maximale Einkaufskosten" -#: part/models.py:3075 +#: part/models.py:3040 msgid "Maximum historical purchase cost" msgstr "Maximale historische Einkaufskosten" -#: part/models.py:3081 +#: part/models.py:3046 msgid "Minimum Internal Price" msgstr "Minimaler interner Preis" -#: part/models.py:3082 +#: part/models.py:3047 msgid "Minimum cost based on internal price breaks" msgstr "Minimale Kosten basierend auf den internen Staffelpreisen" -#: part/models.py:3088 +#: part/models.py:3053 msgid "Maximum Internal Price" msgstr "Maximaler interner Preis" -#: part/models.py:3089 +#: part/models.py:3054 msgid "Maximum cost based on internal price breaks" msgstr "Maximale Kosten basierend auf internen Preisstaffeln" -#: part/models.py:3095 +#: part/models.py:3060 msgid "Minimum Supplier Price" msgstr "Minimaler Lieferantenpreis" -#: part/models.py:3096 +#: part/models.py:3061 msgid "Minimum price of part from external suppliers" msgstr "Mindestpreis für Teil von externen Lieferanten" -#: part/models.py:3102 +#: part/models.py:3067 msgid "Maximum Supplier Price" msgstr "Maximaler Lieferantenpreis" -#: part/models.py:3103 +#: part/models.py:3068 msgid "Maximum price of part from external suppliers" msgstr "Maximaler Preis für Teil von externen Lieferanten" -#: part/models.py:3109 +#: part/models.py:3074 msgid "Minimum Variant Cost" msgstr "Minimale Variantenkosten" -#: part/models.py:3110 +#: part/models.py:3075 msgid "Calculated minimum cost of variant parts" msgstr "Berechnete minimale Kosten für Variantenteile" -#: part/models.py:3116 +#: part/models.py:3081 msgid "Maximum Variant Cost" msgstr "Maximale Variantenkosten" -#: part/models.py:3117 +#: part/models.py:3082 msgid "Calculated maximum cost of variant parts" msgstr "Berechnete maximale Kosten für Variantenteile" -#: part/models.py:3124 +#: part/models.py:3089 msgid "Override minimum cost" msgstr "Mindestkosten überschreiben" -#: part/models.py:3131 +#: part/models.py:3096 msgid "Override maximum cost" msgstr "Maximale Kosten überschreiben" -#: part/models.py:3138 +#: part/models.py:3103 msgid "Calculated overall minimum cost" msgstr "Berechnete Mindestkosten" -#: part/models.py:3145 +#: part/models.py:3110 msgid "Calculated overall maximum cost" msgstr "Berechnete Maximalkosten" -#: part/models.py:3151 +#: part/models.py:3116 msgid "Minimum Sale Price" msgstr "Mindestverkaufspreis" -#: part/models.py:3152 +#: part/models.py:3117 msgid "Minimum sale price based on price breaks" msgstr "Mindestverkaufspreis basierend auf Staffelpreisen" -#: part/models.py:3158 +#: part/models.py:3123 msgid "Maximum Sale Price" msgstr "Maximaler Verkaufspreis" -#: part/models.py:3159 +#: part/models.py:3124 msgid "Maximum sale price based on price breaks" msgstr "Maximalverkaufspreis basierend auf Staffelpreisen" -#: part/models.py:3165 +#: part/models.py:3130 msgid "Minimum Sale Cost" msgstr "Mindestverkaufskosten" -#: part/models.py:3166 +#: part/models.py:3131 msgid "Minimum historical sale price" msgstr "Minimaler historischer Verkaufspreis" -#: part/models.py:3172 +#: part/models.py:3137 msgid "Maximum Sale Cost" msgstr "Maximale Verkaufskosten" -#: part/models.py:3173 +#: part/models.py:3138 msgid "Maximum historical sale price" msgstr "Maximaler historischer Verkaufspreis" -#: part/models.py:3192 +#: part/models.py:3157 msgid "Part for stocktake" msgstr "Teil für die Inventur" -#: part/models.py:3197 +#: part/models.py:3162 msgid "Item Count" msgstr "Stückzahl" -#: part/models.py:3198 +#: part/models.py:3163 msgid "Number of individual stock entries at time of stocktake" msgstr "Anzahl einzelner Bestandseinträge zum Zeitpunkt der Inventur" -#: part/models.py:3206 +#: part/models.py:3171 msgid "Total available stock at time of stocktake" msgstr "Insgesamt verfügbarer Lagerbestand zum Zeitpunkt der Inventur" -#: part/models.py:3210 part/models.py:3293 +#: part/models.py:3175 part/models.py:3258 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report.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/part.js:1086 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "Datum" -#: part/models.py:3211 +#: part/models.py:3176 msgid "Date stocktake was performed" msgstr "Datum der Inventur" -#: part/models.py:3219 +#: part/models.py:3184 msgid "Additional notes" msgstr "Zusätzliche Notizen" -#: part/models.py:3229 +#: part/models.py:3194 msgid "User who performed this stocktake" msgstr "Benutzer, der diese Inventur durchgeführt hat" -#: part/models.py:3235 +#: part/models.py:3200 msgid "Minimum Stock Cost" msgstr "Mindestbestandswert" -#: part/models.py:3236 +#: part/models.py:3201 msgid "Estimated minimum cost of stock on hand" msgstr "Geschätzter Mindestwert des vorhandenen Bestands" -#: part/models.py:3242 +#: part/models.py:3207 msgid "Maximum Stock Cost" msgstr "Maximaler Bestandswert" -#: part/models.py:3243 +#: part/models.py:3208 msgid "Estimated maximum cost of stock on hand" msgstr "Geschätzter Maximalwert des vorhandenen Bestands" -#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3264 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "Bericht" -#: part/models.py:3300 +#: part/models.py:3265 msgid "Stocktake report file (generated internally)" msgstr "Inventur-Berichtsdatei (intern generiert)" -#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3270 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "Anzahl der Teile" -#: part/models.py:3306 +#: part/models.py:3271 msgid "Number of parts covered by stocktake" msgstr "Anzahl der Teile, die von der Inventur abgedeckt werden" -#: part/models.py:3316 +#: part/models.py:3281 msgid "User who requested this stocktake report" msgstr "Benutzer, der diesen Inventurbericht angefordert hat" -#: part/models.py:3478 +#: part/models.py:3423 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "Ungültiger Vorlagenname - es muss mindestens ein alphanumerisches Zeichen enthalten sein" -#: part/models.py:3489 +#: part/models.py:3444 part/models.py:3608 +msgid "Choices must be unique" +msgstr "Auswahl muss einzigartig sein" + +#: part/models.py:3455 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:3500 +#: part/models.py:3466 msgid "Test template with the same key already exists for part" msgstr "Testvorlage mit demselben Schlüssel existiert bereits für Teil" -#: part/models.py:3517 templates/js/translated/part.js:2878 +#: part/models.py:3483 templates/js/translated/part.js:2880 msgid "Test Name" msgstr "Test-Name" -#: part/models.py:3518 +#: part/models.py:3484 msgid "Enter a name for the test" msgstr "Namen für diesen Test eingeben" -#: part/models.py:3524 +#: part/models.py:3490 msgid "Test Key" msgstr "Testschlüssel" -#: part/models.py:3525 +#: part/models.py:3491 msgid "Simplified key for the test" msgstr "Vereinfachter Schlüssel zum Test" -#: part/models.py:3532 +#: part/models.py:3498 msgid "Test Description" msgstr "Test-Beschreibung" -#: part/models.py:3533 +#: part/models.py:3499 msgid "Enter description for this test" msgstr "Beschreibung für diesen Test eingeben" -#: part/models.py:3537 report/models.py:208 -#: templates/js/translated/part.js:2899 +#: part/models.py:3503 report/models.py:209 +#: templates/js/translated/part.js:2901 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "Aktiviert" -#: part/models.py:3537 +#: part/models.py:3503 msgid "Is this test enabled?" msgstr "Ist dieser Test aktiviert?" -#: part/models.py:3542 templates/js/translated/part.js:2907 +#: part/models.py:3508 templates/js/translated/part.js:2909 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Benötigt" -#: part/models.py:3543 +#: part/models.py:3509 msgid "Is this test required to pass?" msgstr "Muss dieser Test erfolgreich sein?" -#: part/models.py:3548 templates/js/translated/part.js:2915 +#: part/models.py:3514 templates/js/translated/part.js:2917 msgid "Requires Value" msgstr "Erfordert Wert" -#: part/models.py:3549 +#: part/models.py:3515 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:3554 templates/js/translated/part.js:2922 +#: part/models.py:3520 templates/js/translated/part.js:2924 msgid "Requires Attachment" msgstr "Anhang muss eingegeben werden" -#: part/models.py:3556 +#: part/models.py:3522 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:3603 +#: part/models.py:3528 part/models.py:3667 templates/js/translated/part.js:1637 +msgid "Choices" +msgstr "Auswahlmöglichkeiten" + +#: part/models.py:3529 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3583 msgid "Checkbox parameters cannot have units" msgstr "Checkbox-Parameter können keine Einheiten haben" -#: part/models.py:3608 +#: part/models.py:3588 msgid "Checkbox parameters cannot have choices" msgstr "Checkbox-Parameter können keine Auswahl haben" -#: part/models.py:3628 -msgid "Choices must be unique" -msgstr "Auswahl muss einzigartig sein" - -#: part/models.py:3645 +#: part/models.py:3625 msgid "Parameter template name must be unique" msgstr "Vorlagen-Name des Parameters muss eindeutig sein" -#: part/models.py:3660 +#: part/models.py:3640 msgid "Parameter Name" msgstr "Name des Parameters" -#: part/models.py:3667 +#: part/models.py:3647 msgid "Physical units for this parameter" msgstr "Physikalische Einheiten für diesen Parameter" -#: part/models.py:3675 +#: part/models.py:3655 msgid "Parameter description" msgstr "Parameter-Beschreibung" -#: part/models.py:3681 templates/js/translated/part.js:1627 +#: part/models.py:3661 templates/js/translated/part.js:1628 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "Checkbox" -#: part/models.py:3682 +#: part/models.py:3662 msgid "Is this parameter a checkbox?" msgstr "Ist dieser Parameter eine Checkbox?" -#: part/models.py:3687 templates/js/translated/part.js:1636 -msgid "Choices" -msgstr "Auswahlmöglichkeiten" - -#: part/models.py:3688 +#: part/models.py:3668 msgid "Valid choices for this parameter (comma-separated)" msgstr "Gültige Optionen für diesen Parameter (durch Kommas getrennt)" -#: part/models.py:3765 +#: part/models.py:3745 msgid "Invalid choice for parameter value" msgstr "Ungültige Auswahl für Parameterwert" -#: part/models.py:3808 +#: part/models.py:3788 msgid "Parent Part" msgstr "Ausgangsteil" -#: part/models.py:3816 part/models.py:3917 part/models.py:3918 +#: part/models.py:3796 part/models.py:3897 part/models.py:3898 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "Parameter Vorlage" -#: part/models.py:3821 +#: part/models.py:3801 msgid "Data" msgstr "Wert" -#: part/models.py:3822 +#: part/models.py:3802 msgid "Parameter Value" msgstr "Parameter Wert" -#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3904 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "Standard-Wert" -#: part/models.py:3925 +#: part/models.py:3905 msgid "Default Parameter Value" msgstr "Standard Parameter Wert" -#: part/models.py:3963 +#: part/models.py:3943 msgid "Part ID or part name" msgstr "Teilnummer oder Teilname" -#: part/models.py:3964 +#: part/models.py:3944 msgid "Unique part ID value" msgstr "Eindeutige Teil-ID" -#: part/models.py:3966 +#: part/models.py:3946 msgid "Part IPN value" msgstr "IPN-Wert des Teils" -#: part/models.py:3967 +#: part/models.py:3947 msgid "Level" msgstr "Stufe" -#: part/models.py:3967 +#: part/models.py:3947 msgid "BOM level" msgstr "Stücklistenebene" -#: part/models.py:4057 +#: part/models.py:4037 msgid "Select parent part" msgstr "Ausgangsteil auswählen" -#: part/models.py:4067 +#: part/models.py:4047 msgid "Sub part" msgstr "Untergeordnetes Teil" -#: part/models.py:4068 +#: part/models.py:4048 msgid "Select part to be used in BOM" msgstr "Teil für die Nutzung in der Stückliste auswählen" -#: part/models.py:4079 +#: part/models.py:4059 msgid "BOM quantity for this BOM item" msgstr "Stücklisten-Anzahl für dieses Stücklisten-Teil" -#: part/models.py:4085 +#: part/models.py:4065 msgid "This BOM item is optional" msgstr "Diese Stücklisten-Position ist optional" -#: part/models.py:4091 +#: part/models.py:4071 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:4098 part/templates/part/upload_bom.html:55 +#: part/models.py:4078 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Überschuss" -#: part/models.py:4099 +#: part/models.py:4079 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "Geschätzter Ausschuss (absolut oder prozentual)" -#: part/models.py:4106 +#: part/models.py:4086 msgid "BOM item reference" msgstr "Referenz der Postion auf der Stückliste" -#: part/models.py:4114 +#: part/models.py:4094 msgid "BOM item notes" msgstr "Notizen zur Stücklisten-Position" -#: part/models.py:4120 +#: part/models.py:4100 msgid "Checksum" msgstr "Prüfsumme" -#: part/models.py:4121 +#: part/models.py:4101 msgid "BOM line checksum" msgstr "Prüfsumme der Stückliste" -#: part/models.py:4126 templates/js/translated/table_filters.js:174 +#: part/models.py:4106 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "überprüft" -#: part/models.py:4127 +#: part/models.py:4107 msgid "This BOM item has been validated" msgstr "Diese Stücklistenposition wurde validiert" -#: part/models.py:4132 part/templates/part/upload_bom.html:57 +#: part/models.py:4112 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:4133 +#: part/models.py:4113 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:4138 part/templates/part/upload_bom.html:56 +#: part/models.py:4118 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "Varianten zulassen" -#: part/models.py:4139 +#: part/models.py:4119 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:4224 stock/models.py:664 +#: part/models.py:4204 stock/models.py:662 msgid "Quantity must be integer value for trackable parts" msgstr "Menge muss eine Ganzzahl sein" -#: part/models.py:4234 part/models.py:4236 +#: part/models.py:4214 part/models.py:4216 msgid "Sub part must be specified" msgstr "Zuliefererteil muss festgelegt sein" -#: part/models.py:4376 +#: part/models.py:4354 msgid "BOM Item Substitute" msgstr "Stücklisten Ersatzteile" -#: part/models.py:4397 +#: part/models.py:4375 msgid "Substitute part cannot be the same as the master part" msgstr "Ersatzteil kann nicht identisch mit dem Hauptteil sein" -#: part/models.py:4410 +#: part/models.py:4388 msgid "Parent BOM item" msgstr "Übergeordnete Stücklisten Position" -#: part/models.py:4418 +#: part/models.py:4396 msgid "Substitute part" msgstr "Ersatzteil" -#: part/models.py:4434 +#: part/models.py:4412 msgid "Part 1" msgstr "Teil 1" -#: part/models.py:4442 +#: part/models.py:4420 msgid "Part 2" msgstr "Teil 2" -#: part/models.py:4443 +#: part/models.py:4421 msgid "Select Related Part" msgstr "verknüpftes Teil auswählen" -#: part/models.py:4462 +#: part/models.py:4440 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:4467 +#: part/models.py:4445 msgid "Duplicate relationship already exists" msgstr "Doppelte Beziehung existiert bereits" -#: part/serializers.py:119 part/serializers.py:141 +#: part/serializers.py:118 +msgid "Parent Category" +msgstr "" + +#: part/serializers.py:119 templates/js/translated/part.js:309 +msgid "Parent part category" +msgstr "Übergeordnete Teilkategorie" + +#: part/serializers.py:126 part/serializers.py:148 #: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "Unter-Kategorien" -#: part/serializers.py:185 +#: part/serializers.py:180 msgid "Results" msgstr "Ergebnisse" -#: part/serializers.py:186 +#: part/serializers.py:181 msgid "Number of results recorded against this template" msgstr "Anzahl der Ergebnisse, die in dieser Vorlage aufgezeichnet wurden" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 +#: part/serializers.py:205 part/serializers.py:223 stock/serializers.py:562 msgid "Purchase currency of this stock item" msgstr "Kaufwährung dieses Lagerartikels" -#: part/serializers.py:273 +#: part/serializers.py:268 msgid "Number of parts using this template" msgstr "Anzahl der Teile, die diese Vorlage verwenden" -#: part/serializers.py:397 +#: part/serializers.py:392 msgid "No parts selected" msgstr "Keine Teile ausgewählt" -#: part/serializers.py:407 +#: part/serializers.py:402 msgid "Select category" msgstr "Kategorie auswählen" -#: part/serializers.py:442 +#: part/serializers.py:437 msgid "Original Part" msgstr "Originalteil" -#: part/serializers.py:443 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "Originalteil zum Duplizieren auswählen" -#: part/serializers.py:448 +#: part/serializers.py:443 msgid "Copy Image" msgstr "Bild kopieren" -#: part/serializers.py:449 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "Bild vom Originalteil kopieren" -#: part/serializers.py:455 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "Stückliste kopieren" -#: part/serializers.py:456 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "Stückliste vom Originalteil kopieren" -#: part/serializers.py:462 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "Parameter kopieren" -#: part/serializers.py:463 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "Parameterdaten vom Originalteil kopieren" -#: part/serializers.py:469 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "Anmerkungen kopieren" -#: part/serializers.py:470 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "Notizen aus Originalteil kopieren" -#: part/serializers.py:488 +#: part/serializers.py:483 msgid "Initial Stock Quantity" msgstr "Start-Bestandsmenge" -#: part/serializers.py:490 +#: part/serializers.py:485 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "Initiale Lagermenge für dieses Teil. Wenn die Menge null ist, wird kein Lagerbestand hinzugefügt." -#: part/serializers.py:497 +#: part/serializers.py:492 msgid "Initial Stock Location" msgstr "Initialer Lagerort" -#: part/serializers.py:498 +#: part/serializers.py:493 msgid "Specify initial stock location for this Part" msgstr "Lagerstandort für dieses Teil angeben" -#: part/serializers.py:515 +#: part/serializers.py:510 msgid "Select supplier (or leave blank to skip)" msgstr "Lieferant auswählen (oder leer lassen, um zu überspringen)" -#: part/serializers.py:531 +#: part/serializers.py:526 msgid "Select manufacturer (or leave blank to skip)" msgstr "Hersteller auswählen (oder leer lassen, um zu überspringen)" -#: part/serializers.py:541 +#: part/serializers.py:536 msgid "Manufacturer part number" msgstr "Hersteller-Teilenummer" -#: part/serializers.py:548 +#: part/serializers.py:543 msgid "Selected company is not a valid supplier" msgstr "Ausgewählte Firma ist kein gültiger Lieferant" -#: part/serializers.py:557 +#: part/serializers.py:552 msgid "Selected company is not a valid manufacturer" msgstr "Ausgewählte Firma ist kein gültiger Hersteller" -#: part/serializers.py:568 +#: part/serializers.py:563 msgid "Manufacturer part matching this MPN already exists" msgstr "Herstellerteil mit dieser MPN existiert bereits" -#: part/serializers.py:575 +#: part/serializers.py:570 msgid "Supplier part matching this SKU already exists" msgstr "Lieferantenteil mit dieser SKU existiert bereits" -#: part/serializers.py:838 +#: part/serializers.py:834 msgid "External Stock" msgstr "Externes Lager" -#: part/serializers.py:840 +#: part/serializers.py:836 msgid "Unallocated Stock" msgstr "Nicht zugewiesenes Lager" -#: part/serializers.py:843 +#: part/serializers.py:839 msgid "Variant Stock" msgstr "Alternatives Lager" -#: part/serializers.py:873 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:471 +#: part/serializers.py:869 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:472 msgid "Duplicate Part" msgstr "Teil duplizieren" -#: part/serializers.py:874 +#: part/serializers.py:870 msgid "Copy initial data from another Part" msgstr "Initiale Daten von anderem Teil kopieren" -#: part/serializers.py:880 templates/js/translated/part.js:102 +#: part/serializers.py:876 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "Initialer Lagerbestand" -#: part/serializers.py:881 +#: part/serializers.py:877 msgid "Create Part with initial stock quantity" msgstr "Erstelle Teil mit Ausgangsbestand" -#: part/serializers.py:887 +#: part/serializers.py:883 msgid "Supplier Information" msgstr "Lieferanteninformationen" -#: part/serializers.py:888 +#: part/serializers.py:884 msgid "Add initial supplier information for this part" msgstr "Lieferanteninformationen zu diesem Teil hinzufügen" -#: part/serializers.py:896 +#: part/serializers.py:892 msgid "Copy Category Parameters" msgstr "Kategorieparameter kopieren" -#: part/serializers.py:897 +#: part/serializers.py:893 msgid "Copy parameter templates from selected part category" msgstr "Parametervorlagen aus der ausgewählten Teilkategorie kopieren" -#: part/serializers.py:902 +#: part/serializers.py:898 msgid "Existing Image" msgstr "Vorhandenes Bild" -#: part/serializers.py:903 +#: part/serializers.py:899 msgid "Filename of an existing part image" msgstr "Dateiname eines vorhandenen Teilbildes" -#: part/serializers.py:920 +#: part/serializers.py:916 msgid "Image file does not exist" msgstr "Bilddatei existiert nicht" -#: part/serializers.py:1126 +#: part/serializers.py:1122 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:1136 +#: part/serializers.py:1132 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:1146 +#: part/serializers.py:1142 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:1152 +#: part/serializers.py:1148 msgid "Exclude External Stock" msgstr "Externen Bestand ausschließen" -#: part/serializers.py:1153 +#: part/serializers.py:1149 msgid "Exclude stock items in external locations" msgstr "Lagerartikel an externen Orten ausschließen" -#: part/serializers.py:1158 +#: part/serializers.py:1154 msgid "Generate Report" msgstr "Bericht generieren" -#: part/serializers.py:1159 +#: part/serializers.py:1155 msgid "Generate report file containing calculated stocktake data" msgstr "Erstelle Berichtsdatei mit berechneten Inventurdaten" -#: part/serializers.py:1164 +#: part/serializers.py:1160 msgid "Update Parts" msgstr "Teile aktualisieren" -#: part/serializers.py:1165 +#: part/serializers.py:1161 msgid "Update specified parts with calculated stocktake data" msgstr "Angegebene Teile mit berechneten Inventurdaten aktualisieren" -#: part/serializers.py:1173 +#: part/serializers.py:1169 msgid "Stocktake functionality is not enabled" msgstr "Inventur-Funktionalität ist nicht aktiviert" -#: part/serializers.py:1279 +#: part/serializers.py:1275 msgid "Override calculated value for minimum price" msgstr "Berechneten Wert für Mindestpreis überschreiben" -#: part/serializers.py:1286 +#: part/serializers.py:1282 msgid "Minimum price currency" msgstr "Mindestpreis Währung" -#: part/serializers.py:1294 +#: part/serializers.py:1290 msgid "Override calculated value for maximum price" msgstr "Berechneten Wert für maximalen Preis überschreiben" -#: part/serializers.py:1301 +#: part/serializers.py:1297 msgid "Maximum price currency" msgstr "Maximalpreis Währung" -#: part/serializers.py:1330 +#: part/serializers.py:1326 msgid "Update" msgstr "Aktualisieren" -#: part/serializers.py:1331 +#: part/serializers.py:1327 msgid "Update pricing for this part" msgstr "Preis für dieses Teil aktualisieren" -#: part/serializers.py:1354 +#: part/serializers.py:1350 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "Konnte nicht von den angegebenen Währungen in {default_currency} umrechnen" -#: part/serializers.py:1361 +#: part/serializers.py:1357 msgid "Minimum price must not be greater than maximum price" msgstr "Mindestpreis darf nicht größer als der Maximalpreis sein" -#: part/serializers.py:1364 +#: part/serializers.py:1360 msgid "Maximum price must not be less than minimum price" msgstr "Der Maximalpreis darf nicht kleiner als der Mindestpreis sein" -#: part/serializers.py:1731 +#: part/serializers.py:1727 msgid "Select part to copy BOM from" msgstr "Teil auswählen, von dem Stückliste kopiert wird" -#: part/serializers.py:1739 +#: part/serializers.py:1735 msgid "Remove Existing Data" msgstr "Bestehende Daten entfernen" -#: part/serializers.py:1740 +#: part/serializers.py:1736 msgid "Remove existing BOM items before copying" msgstr "Bestehende Stücklisten-Positionen vor dem Kopieren entfernen" -#: part/serializers.py:1745 +#: part/serializers.py:1741 msgid "Include Inherited" msgstr "Vererbtes einschließen" -#: part/serializers.py:1746 +#: part/serializers.py:1742 msgid "Include BOM items which are inherited from templated parts" msgstr "Stücklisten-Positionen einbeziehen, die von Vorlage-Teilen geerbt werden" -#: part/serializers.py:1751 +#: part/serializers.py:1747 msgid "Skip Invalid Rows" msgstr "Ungültige Zeilen überspringen" -#: part/serializers.py:1752 +#: part/serializers.py:1748 msgid "Enable this option to skip invalid rows" msgstr "Aktiviere diese Option, um ungültige Zeilen zu überspringen" -#: part/serializers.py:1757 +#: part/serializers.py:1753 msgid "Copy Substitute Parts" msgstr "Ersatzteile kopieren" -#: part/serializers.py:1758 +#: part/serializers.py:1754 msgid "Copy substitute parts when duplicate BOM items" msgstr "Ersatzteile beim Duplizieren von Stücklisten-Positionen kopieren" -#: part/serializers.py:1792 +#: part/serializers.py:1788 msgid "Clear Existing BOM" msgstr "Bestehende Stückliste löschen" -#: part/serializers.py:1793 +#: part/serializers.py:1789 msgid "Delete existing BOM items before uploading" msgstr "Bestehende Stücklisten-Positionen vor dem Importieren entfernen" -#: part/serializers.py:1823 +#: part/serializers.py:1819 msgid "No part column specified" msgstr "Keine Teilspalte angegeben" -#: part/serializers.py:1867 +#: part/serializers.py:1863 msgid "Multiple matching parts found" msgstr "Mehrere übereinstimmende Teile gefunden" -#: part/serializers.py:1870 +#: part/serializers.py:1866 msgid "No matching part found" msgstr "Keine passenden Teile gefunden" -#: part/serializers.py:1873 +#: part/serializers.py:1869 msgid "Part is not designated as a component" msgstr "Teil ist nicht als Komponente angelegt" -#: part/serializers.py:1882 +#: part/serializers.py:1878 msgid "Quantity not provided" msgstr "Menge nicht angegeben" -#: part/serializers.py:1890 +#: part/serializers.py:1886 msgid "Invalid quantity" msgstr "Ungültige Menge" -#: part/serializers.py:1911 +#: part/serializers.py:1907 msgid "At least one BOM item is required" msgstr "Mindestens eine Stückliste-Position ist erforderlich" -#: part/stocktake.py:224 templates/js/translated/part.js:1066 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: part/stocktake.py:225 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "Gesamtstückzahl" -#: part/stocktake.py:225 +#: part/stocktake.py:226 msgid "Total Cost Min" msgstr "Gesamt-Bestandswert min" -#: part/stocktake.py:226 +#: part/stocktake.py:227 msgid "Total Cost Max" msgstr "Gesamt-Bestandswert max" -#: part/stocktake.py:284 +#: part/stocktake.py:285 msgid "Stocktake Report Available" msgstr "Inventurbericht verfügbar" -#: part/stocktake.py:285 +#: part/stocktake.py:286 msgid "A new stocktake report is available for download" msgstr "Ein neuer Inventurbericht steht zum Download zur Verfügung" @@ -7157,7 +7227,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:251 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" @@ -7257,15 +7327,15 @@ msgstr "Zulieferer" msgid "Part Manufacturers" msgstr "Teil-Hersteller" -#: part/templates/part/detail.html:655 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "Verknüpftes Teil" -#: part/templates/part/detail.html:663 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "Verknüpftes Teil hinzufügen" -#: part/templates/part/detail.html:748 +#: part/templates/part/detail.html:750 msgid "Add Test Result Template" msgstr "Testergebnis-Vorlage hinzufügen" @@ -7346,7 +7416,7 @@ msgstr "Bestand zählen" msgid "Transfer part stock" msgstr "Teilbestand verschieben" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" msgstr "Teile Aktionen" @@ -7418,7 +7488,7 @@ msgid "Minimum stock level" msgstr "Minimaler Bestand" #: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 -#: templates/js/translated/part.js:1264 templates/js/translated/part.js:2443 +#: templates/js/translated/part.js:1265 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7511,8 +7581,8 @@ msgstr "Varianten" #: 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:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/part.js:1243 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 #: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "Bestand" @@ -7555,7 +7625,7 @@ msgstr "Artikelpreise überschreiben" msgid "Edit" msgstr "Bearbeiten" -#: part/templates/part/prices.html:28 stock/admin.py:247 +#: part/templates/part/prices.html:28 stock/admin.py:251 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 @@ -7632,8 +7702,8 @@ msgstr "Preise aktualisieren" #: part/templates/part/stock_count.html:7 #: templates/js/translated/model_renderers.js:227 -#: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 -#: templates/js/translated/part.js:2142 +#: templates/js/translated/part.js:705 templates/js/translated/part.js:2141 +#: templates/js/translated/part.js:2143 msgid "No Stock" msgstr "Kein Bestand" @@ -8005,7 +8075,7 @@ msgstr "Rand" msgid "Print a border around each label" msgstr "Einen Rahmen um jedes Label drucken" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:308 msgid "Landscape" msgstr "Querformat" @@ -8118,62 +8188,62 @@ msgstr "Plugin kann nicht deinstalliert werden, da es momentan aktiv ist" msgid "Uninstalled plugin successfully" msgstr "Plugin erfolgreich deinstallieren" -#: plugin/models.py:35 +#: plugin/models.py:36 msgid "Plugin Configuration" msgstr "Plugin-Konfiguration" -#: plugin/models.py:36 +#: plugin/models.py:37 msgid "Plugin Configurations" msgstr "Plugin-Konfigurationen" -#: plugin/models.py:42 users/models.py:100 +#: plugin/models.py:43 users/models.py:100 msgid "Key" msgstr "Schlüssel" -#: plugin/models.py:43 +#: plugin/models.py:44 msgid "Key of plugin" msgstr "Schlüssel des Plugins" -#: plugin/models.py:51 +#: plugin/models.py:52 msgid "PluginName of the plugin" msgstr "Name des Plugins" -#: plugin/models.py:58 plugin/serializers.py:90 +#: plugin/models.py:59 plugin/serializers.py:90 msgid "Package Name" msgstr "Paket-Name" -#: plugin/models.py:60 +#: plugin/models.py:61 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "Name des installierten Paketes, wenn das Plugin über PIP installiert wurde" -#: plugin/models.py:65 +#: plugin/models.py:66 msgid "Is the plugin active" msgstr "Ist das Plugin aktiv" -#: plugin/models.py:156 templates/js/translated/table_filters.js:370 +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "Installiert" -#: plugin/models.py:165 +#: plugin/models.py:166 msgid "Sample plugin" msgstr "Beispiel-Plugin" -#: plugin/models.py:173 +#: plugin/models.py:174 msgid "Builtin Plugin" msgstr "Integriertes Plugin" -#: plugin/models.py:181 +#: plugin/models.py:182 msgid "Package Plugin" msgstr "Paket-Plugin" -#: plugin/models.py:205 report/models.py:474 +#: plugin/models.py:220 report/models.py:475 #: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "Plugin" -#: plugin/models.py:252 +#: plugin/models.py:267 msgid "Method" msgstr "Methode" @@ -8181,17 +8251,17 @@ msgstr "Methode" msgid "No author found" msgstr "Kein Autor gefunden" -#: plugin/registry.py:597 +#: plugin/registry.py:534 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "Plugin '{p}' ist nicht kompatibel mit der aktuellen InvenTree Version {v}" -#: plugin/registry.py:600 +#: plugin/registry.py:537 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "Plugin benötigt mindestens Version {v}" -#: plugin/registry.py:602 +#: plugin/registry.py:539 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "Plugin benötigt maximal Version {v}" @@ -8306,23 +8376,19 @@ msgstr "Plugin aktivieren" msgid "Activate this plugin" msgstr "Dieses Plugin aktivieren" -#: plugin/serializers.py:234 +#: plugin/serializers.py:226 msgid "Delete configuration" msgstr "Konfiguration löschen" -#: plugin/serializers.py:235 +#: plugin/serializers.py:227 msgid "Delete the plugin configuration from the database" msgstr "Plugin-Konfiguration aus der Datenbank löschen" -#: report/api.py:77 +#: report/api.py:88 msgid "No valid objects provided to template" msgstr "Keine korrekten Objekte für Vorlage gegeben" -#: report/api.py:89 report/serializers.py:53 -msgid "Model Type" -msgstr "" - -#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/api.py:103 report/models.py:439 report/serializers.py:98 #: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 #: templates/js/translated/return_order.js:353 #: templates/js/translated/sales_order.js:887 @@ -8330,176 +8396,176 @@ msgstr "" msgid "Items" msgstr "Teile" -#: report/api.py:168 +#: report/api.py:180 msgid "Plugin not found" msgstr "" -#: report/api.py:170 +#: report/api.py:182 msgid "Plugin is not active" msgstr "" -#: report/api.py:172 +#: report/api.py:184 msgid "Plugin does not support label printing" msgstr "" -#: report/api.py:221 +#: report/api.py:233 msgid "Invalid label dimensions" msgstr "" -#: report/api.py:236 report/api.py:316 +#: report/api.py:248 report/api.py:329 msgid "No valid items provided to template" msgstr "" -#: report/api.py:271 +#: report/api.py:283 msgid "Error printing label" msgstr "Fehler beim Drucken des Labels" -#: report/api.py:362 report/api.py:398 +#: report/api.py:375 report/api.py:411 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "Vorlagendatei '{template}' fehlt oder existiert nicht" -#: report/helpers.py:41 +#: report/helpers.py:43 msgid "A4" msgstr "A4" -#: report/helpers.py:42 +#: report/helpers.py:44 msgid "A3" msgstr "A3" -#: report/helpers.py:43 +#: report/helpers.py:45 msgid "Legal" msgstr "US-Legal" -#: report/helpers.py:44 +#: report/helpers.py:46 msgid "Letter" msgstr "US-Letter" -#: report/models.py:118 +#: report/models.py:119 msgid "Template file with this name already exists" msgstr "" -#: report/models.py:150 +#: report/models.py:151 msgid "Template name" msgstr "Vorlagen Name" -#: report/models.py:156 +#: report/models.py:157 msgid "Template description" msgstr "" -#: report/models.py:162 +#: report/models.py:163 msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Filename Pattern" msgstr "Dateinamen-Muster" -#: report/models.py:203 +#: report/models.py:204 msgid "Pattern for generating filenames" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Template is enabled" msgstr "" -#: report/models.py:214 +#: report/models.py:215 msgid "Target model type for template" msgstr "" -#: report/models.py:234 +#: report/models.py:235 msgid "Filters" msgstr "Filter" -#: report/models.py:235 +#: report/models.py:236 msgid "Template query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:294 report/models.py:361 +#: report/models.py:295 report/models.py:362 msgid "Template file" msgstr "" -#: report/models.py:302 +#: report/models.py:303 msgid "Page size for PDF reports" msgstr "Seitengröße für PDF-Berichte" -#: report/models.py:308 +#: report/models.py:309 msgid "Render report in landscape orientation" msgstr "Bericht in Querformat anzeigen" -#: report/models.py:367 +#: report/models.py:368 msgid "Width [mm]" msgstr "Breite [mm]" -#: report/models.py:368 +#: report/models.py:369 msgid "Label width, specified in mm" msgstr "Label-Breite in mm" -#: report/models.py:374 +#: report/models.py:375 msgid "Height [mm]" msgstr "Höhe [mm]" -#: report/models.py:375 +#: report/models.py:376 msgid "Label height, specified in mm" msgstr "Label-Höhe in mm" -#: report/models.py:438 +#: report/models.py:439 msgid "Number of items to process" msgstr "" -#: report/models.py:444 +#: report/models.py:445 msgid "Report generation is complete" msgstr "" -#: report/models.py:448 templates/js/translated/build.js:2177 +#: report/models.py:449 templates/js/translated/build.js:2177 msgid "Progress" msgstr "Fortschritt" -#: report/models.py:448 +#: report/models.py:449 msgid "Report generation progress" msgstr "" -#: report/models.py:456 +#: report/models.py:457 msgid "Report Template" msgstr "" -#: report/models.py:463 report/models.py:486 +#: report/models.py:464 report/models.py:487 msgid "Output File" msgstr "" -#: report/models.py:464 report/models.py:487 +#: report/models.py:465 report/models.py:488 msgid "Generated output file" msgstr "" -#: report/models.py:475 +#: report/models.py:476 msgid "Label output plugin" msgstr "" -#: report/models.py:479 +#: report/models.py:480 msgid "Label Template" msgstr "" -#: report/models.py:502 +#: report/models.py:503 msgid "Snippet" msgstr "Schnipsel" -#: report/models.py:503 +#: report/models.py:504 msgid "Report snippet file" msgstr "Berichts-Snippet" -#: report/models.py:510 +#: report/models.py:511 msgid "Snippet file description" msgstr "Snippet-Beschreibung" -#: report/models.py:528 +#: report/models.py:529 msgid "Asset" msgstr "Ressource" -#: report/models.py:529 +#: report/models.py:530 msgid "Report asset file" msgstr "Berichts-Ressource" -#: report/models.py:536 +#: report/models.py:537 msgid "Asset file description" msgstr "Ressource-Beschreibung" @@ -8572,8 +8638,8 @@ msgid "Total" msgstr "Summe" #: report/templates/report/inventree_return_order_report.html:25 -#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 -#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:824 +#: stock/serializers.py:149 stock/templates/stock/item_base.html:311 #: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 #: templates/js/translated/build.js:2355 #: templates/js/translated/model_renderers.js:230 @@ -8603,32 +8669,32 @@ msgstr "Testergebnisse" msgid "Test" msgstr "Test" -#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2412 msgid "Result" msgstr "Ergebnis" -#: report/templates/report/inventree_test_report.html:130 +#: report/templates/report/inventree_test_report.html:129 msgid "Pass" msgstr "bestanden" -#: report/templates/report/inventree_test_report.html:132 +#: report/templates/report/inventree_test_report.html:131 msgid "Fail" msgstr "fehlgeschlagen" -#: report/templates/report/inventree_test_report.html:139 +#: report/templates/report/inventree_test_report.html:138 msgid "No result (required)" msgstr "Kein Ergebnis (erforderlich)" -#: report/templates/report/inventree_test_report.html:141 +#: report/templates/report/inventree_test_report.html:140 msgid "No result" msgstr "Kein Ergebnis" -#: report/templates/report/inventree_test_report.html:154 +#: report/templates/report/inventree_test_report.html:153 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "Verbaute Objekte" -#: report/templates/report/inventree_test_report.html:168 stock/admin.py:162 +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 #: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 #: templates/js/translated/stock.js:3110 msgid "Serial" @@ -8650,654 +8716,670 @@ msgstr "part_image tag benötigt eine Bauteilinstanz" msgid "company_image tag requires a Company instance" msgstr "company_image tag erfordert eine Firmeninstanz" -#: stock/admin.py:52 stock/admin.py:172 +#: stock/admin.py:51 stock/admin.py:171 msgid "Location ID" msgstr "Standort-ID" -#: stock/admin.py:54 stock/admin.py:176 +#: stock/admin.py:53 stock/admin.py:175 msgid "Location Name" msgstr "Ortsname" -#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/admin.py:63 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "Lagerortpfad" -#: stock/admin.py:149 +#: stock/admin.py:148 msgid "Stock Item ID" msgstr "Lagerartikel ID" -#: stock/admin.py:168 +#: stock/admin.py:167 msgid "Status Code" msgstr "Statuscode" -#: stock/admin.py:180 +#: stock/admin.py:179 msgid "Supplier Part ID" msgstr "Zuliefererteil-ID" -#: stock/admin.py:185 +#: stock/admin.py:184 +msgid "Supplier Part SKU" +msgstr "" + +#: stock/admin.py:189 msgid "Supplier ID" msgstr "Zulieferer ID" -#: stock/admin.py:191 +#: stock/admin.py:195 msgid "Supplier Name" msgstr "Lieferant" -#: stock/admin.py:196 +#: stock/admin.py:200 msgid "Customer ID" msgstr "Kunden ID" -#: stock/admin.py:201 stock/models.py:806 +#: stock/admin.py:205 stock/models.py:804 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "verbaut in" -#: stock/admin.py:206 +#: stock/admin.py:210 msgid "Build ID" msgstr "Bauauftrag-ID" -#: stock/admin.py:216 +#: stock/admin.py:220 msgid "Sales Order ID" msgstr "Auftrags-ID" -#: stock/admin.py:221 +#: stock/admin.py:225 msgid "Purchase Order ID" msgstr "Bestellungs-ID" -#: stock/admin.py:236 +#: stock/admin.py:240 msgid "Review Needed" msgstr "Überprüfung erforderlich" -#: stock/admin.py:241 +#: stock/admin.py:245 msgid "Delete on Deplete" msgstr "Löschen wenn leer" -#: stock/admin.py:256 stock/models.py:900 +#: stock/admin.py:260 stock/models.py:898 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "Ablaufdatum" -#: stock/api.py:318 +#: stock/api.py:312 msgid "Filter by location depth" msgstr "Filtern nach Standorttiefe" -#: stock/api.py:338 +#: stock/api.py:332 +msgid "Filter by top-level locations" +msgstr "" + +#: stock/api.py:347 msgid "Include sub-locations in filtered results" msgstr "Unterorte in gefilterte Ergebnisse einbeziehen" -#: stock/api.py:359 +#: stock/api.py:369 stock/serializers.py:1085 msgid "Parent Location" msgstr "Übergeordneter Ort" -#: stock/api.py:360 +#: stock/api.py:370 msgid "Filter by parent location" msgstr "Filtern nach übergeordnetem Ort" -#: stock/api.py:615 templates/js/translated/table_filters.js:427 +#: stock/api.py:625 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "Externer Standort" -#: stock/api.py:803 +#: stock/api.py:813 msgid "Part Tree" msgstr "Teile-Baum" -#: stock/api.py:833 +#: stock/api.py:843 msgid "Expiry date before" msgstr "Gültigkeitsdauer vor" -#: stock/api.py:837 +#: stock/api.py:847 msgid "Expiry date after" msgstr "Gültigkeitsdauer nach" -#: stock/api.py:840 stock/templates/stock/item_base.html:439 +#: stock/api.py:850 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "überfällig" -#: stock/api.py:927 +#: stock/api.py:937 msgid "Quantity is required" msgstr "Menge ist erforderlich" -#: stock/api.py:933 +#: stock/api.py:943 msgid "Valid part must be supplied" msgstr "Gültiges Teil muss angegeben werden" -#: stock/api.py:964 +#: stock/api.py:974 msgid "The given supplier part does not exist" msgstr "Der angegebene Lieferantenartikel existiert nicht" -#: stock/api.py:974 +#: stock/api.py:984 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "Das Zulieferteil hat eine Packungsgröße definiert, aber das Kennzeichen use_pack_size ist nicht gesetzt" -#: stock/api.py:1005 +#: stock/api.py:1015 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:59 +#: stock/models.py:60 msgid "Stock Location type" msgstr "Lagerstandort Typ" -#: stock/models.py:60 +#: stock/models.py:61 msgid "Stock Location types" msgstr "Lagerstandorte Typen" -#: stock/models.py:86 +#: stock/models.py:87 msgid "Default icon for all locations that have no icon set (optional)" msgstr "Standardsymbol für alle Orte, die kein Icon gesetzt haben (optional)" -#: stock/models.py:123 stock/models.py:788 +#: stock/models.py:124 stock/models.py:786 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Bestand-Lagerort" -#: stock/models.py:124 stock/templates/stock/location.html:186 +#: stock/models.py:125 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "Bestand-Lagerorte" -#: stock/models.py:166 stock/models.py:949 +#: stock/models.py:167 stock/models.py:947 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "Besitzer" -#: stock/models.py:167 stock/models.py:950 +#: stock/models.py:168 stock/models.py:948 msgid "Select Owner" msgstr "Besitzer auswählen" -#: stock/models.py:175 +#: stock/models.py:176 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "Lagerartikel können nicht direkt an einen strukturellen Lagerort verlegt werden, können aber an einen untergeordneten Lagerort verlegt werden." -#: stock/models.py:182 templates/js/translated/stock.js:2781 +#: stock/models.py:183 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "Extern" -#: stock/models.py:183 +#: stock/models.py:184 msgid "This is an external stock location" msgstr "Dies ist ein externer Lagerort" -#: stock/models.py:189 templates/js/translated/stock.js:2790 +#: stock/models.py:190 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "Standorttyp" -#: stock/models.py:193 +#: stock/models.py:194 msgid "Stock location type of this location" msgstr "Standortart dieses Standortes" -#: stock/models.py:262 +#: stock/models.py:261 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:643 +#: stock/models.py:641 msgid "Stock items cannot be located into structural stock locations!" msgstr "Lagerartikel können nicht in strukturelle Lagerorte abgelegt werden!" -#: stock/models.py:670 stock/serializers.py:419 +#: stock/models.py:668 stock/serializers.py:446 msgid "Stock item cannot be created for virtual parts" msgstr "Für virtuelle Teile können keine Lagerartikel erstellt werden" -#: stock/models.py:687 +#: stock/models.py:685 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "Artikeltyp ('{self.supplier_part.part}') muss {self.part} sein" -#: stock/models.py:697 stock/models.py:710 +#: stock/models.py:695 stock/models.py:708 msgid "Quantity must be 1 for item with a serial number" msgstr "Anzahl muss für Objekte mit Seriennummer 1 sein" -#: stock/models.py:700 +#: stock/models.py:698 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:724 +#: stock/models.py:722 msgid "Item cannot belong to itself" msgstr "Teil kann nicht zu sich selbst gehören" -#: stock/models.py:729 +#: stock/models.py:727 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:742 +#: stock/models.py:740 msgid "Build reference does not point to the same part object" msgstr "Referenz verweist nicht auf das gleiche Teil" -#: stock/models.py:758 +#: stock/models.py:756 msgid "Parent Stock Item" msgstr "Eltern-Lagerartikel" -#: stock/models.py:770 +#: stock/models.py:768 msgid "Base part" msgstr "Basis-Teil" -#: stock/models.py:780 +#: stock/models.py:778 msgid "Select a matching supplier part for this stock item" msgstr "Passendes Zuliefererteil für diesen Lagerartikel auswählen" -#: stock/models.py:792 +#: stock/models.py:790 msgid "Where is this stock item located?" msgstr "Wo wird dieses Teil normalerweise gelagert?" -#: stock/models.py:800 stock/serializers.py:1480 +#: stock/models.py:798 stock/serializers.py:1476 msgid "Packaging this stock item is stored in" msgstr "Verpackung, in der dieser Lagerartikel gelagert ist" -#: stock/models.py:811 +#: stock/models.py:809 msgid "Is this item installed in another item?" msgstr "Ist dieses Teil in einem anderen verbaut?" -#: stock/models.py:830 +#: stock/models.py:828 msgid "Serial number for this item" msgstr "Seriennummer für dieses Teil" -#: stock/models.py:844 stock/serializers.py:1463 +#: stock/models.py:842 stock/serializers.py:1459 msgid "Batch code for this stock item" msgstr "Losnummer für diesen Lagerartikel" -#: stock/models.py:849 +#: stock/models.py:847 msgid "Stock Quantity" msgstr "Bestand" -#: stock/models.py:859 +#: stock/models.py:857 msgid "Source Build" msgstr "Quellbau" -#: stock/models.py:862 +#: stock/models.py:860 msgid "Build for this stock item" msgstr "Bauauftrag für diesen Lagerartikel" -#: stock/models.py:869 stock/templates/stock/item_base.html:363 +#: stock/models.py:867 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "Verbraucht von" -#: stock/models.py:872 +#: stock/models.py:870 msgid "Build order which consumed this stock item" msgstr "Bauauftrag der diesen Lagerartikel verbrauchte" -#: stock/models.py:881 +#: stock/models.py:879 msgid "Source Purchase Order" msgstr "Quelle Bestellung" -#: stock/models.py:885 +#: stock/models.py:883 msgid "Purchase order for this stock item" msgstr "Bestellung für diesen Lagerartikel" -#: stock/models.py:891 +#: stock/models.py:889 msgid "Destination Sales Order" msgstr "Ziel-Auftrag" -#: stock/models.py:902 +#: stock/models.py:900 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:920 +#: stock/models.py:918 msgid "Delete on deplete" msgstr "Löschen wenn leer" -#: stock/models.py:921 +#: stock/models.py:919 msgid "Delete this Stock Item when stock is depleted" msgstr "Diesen Lagerartikel löschen wenn der Bestand aufgebraucht ist" -#: stock/models.py:941 +#: stock/models.py:939 msgid "Single unit purchase price at time of purchase" msgstr "Preis für eine Einheit bei Einkauf" -#: stock/models.py:972 +#: stock/models.py:970 msgid "Converted to part" msgstr "In Teil umgewandelt" -#: stock/models.py:1490 +#: stock/models.py:1486 msgid "Part is not set as trackable" msgstr "Teil ist nicht verfolgbar" -#: stock/models.py:1496 +#: stock/models.py:1492 msgid "Quantity must be integer" msgstr "Anzahl muss eine Ganzzahl sein" -#: stock/models.py:1504 +#: stock/models.py:1500 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "Menge darf die verfügbare Lagermenge ({self.quantity}) nicht überschreiten" -#: stock/models.py:1510 +#: stock/models.py:1506 msgid "Serial numbers must be a list of integers" msgstr "Seriennummern muss eine Liste von Ganzzahlen sein" -#: stock/models.py:1515 +#: stock/models.py:1511 msgid "Quantity does not match serial numbers" msgstr "Anzahl stimmt nicht mit den Seriennummern überein" -#: stock/models.py:1523 stock/serializers.py:658 +#: stock/models.py:1519 stock/serializers.py:660 msgid "Serial numbers already exist" msgstr "Seriennummern existieren bereits" -#: stock/models.py:1620 +#: stock/models.py:1616 msgid "Test template does not exist" msgstr "Testvorlage existiert nicht" -#: stock/models.py:1638 +#: stock/models.py:1634 msgid "Stock item has been assigned to a sales order" msgstr "Artikel wurde einem Kundenauftrag zugewiesen" -#: stock/models.py:1642 +#: stock/models.py:1638 msgid "Stock item is installed in another item" msgstr "Lagerartikel ist in anderem Element verbaut" -#: stock/models.py:1645 +#: stock/models.py:1641 msgid "Stock item contains other items" msgstr "Lagerartikel enthält andere Artikel" -#: stock/models.py:1648 +#: stock/models.py:1644 msgid "Stock item has been assigned to a customer" msgstr "Artikel wurde einem Kunden zugewiesen" -#: stock/models.py:1651 +#: stock/models.py:1647 msgid "Stock item is currently in production" msgstr "Lagerartikel wird aktuell produziert" -#: stock/models.py:1654 +#: stock/models.py:1650 msgid "Serialized stock cannot be merged" msgstr "Nachverfolgbare Lagerartikel können nicht zusammengeführt werden" -#: stock/models.py:1661 stock/serializers.py:1369 +#: stock/models.py:1657 stock/serializers.py:1365 msgid "Duplicate stock items" msgstr "Artikel duplizeren" -#: stock/models.py:1665 +#: stock/models.py:1661 msgid "Stock items must refer to the same part" msgstr "Lagerartikel müssen auf dasselbe Teil verweisen" -#: stock/models.py:1673 +#: stock/models.py:1669 msgid "Stock items must refer to the same supplier part" msgstr "Lagerartikel müssen auf dasselbe Lieferantenteil verweisen" -#: stock/models.py:1678 +#: stock/models.py:1674 msgid "Stock status codes must match" msgstr "Status-Codes müssen zusammenpassen" -#: stock/models.py:1905 +#: stock/models.py:1901 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:2326 +#: stock/models.py:2310 msgid "Entry notes" msgstr "Eintrags-Notizen" -#: stock/models.py:2391 +#: stock/models.py:2378 msgid "Value must be provided for this test" msgstr "Wert muss für diesen Test angegeben werden" -#: stock/models.py:2396 +#: stock/models.py:2383 msgid "Attachment must be uploaded for this test" msgstr "Anhang muss für diesen Test hochgeladen werden" -#: stock/models.py:2423 +#: stock/models.py:2388 +msgid "Invalid value for this test" +msgstr "" + +#: stock/models.py:2412 msgid "Test result" msgstr "Testergebnis" -#: stock/models.py:2430 +#: stock/models.py:2419 msgid "Test output value" msgstr "Test Ausgabe Wert" -#: stock/models.py:2438 +#: stock/models.py:2427 msgid "Test result attachment" msgstr "Test Ergebnis Anhang" -#: stock/models.py:2442 +#: stock/models.py:2431 msgid "Test notes" msgstr "Test Notizen" -#: stock/models.py:2450 templates/js/translated/stock.js:1548 +#: stock/models.py:2439 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "Teststation" -#: stock/models.py:2451 +#: stock/models.py:2440 msgid "The identifier of the test station where the test was performed" msgstr "Der Bezeichner der Teststation, in der der Test durchgeführt wurde" -#: stock/models.py:2457 +#: stock/models.py:2446 msgid "Started" msgstr "Gestartet" -#: stock/models.py:2458 +#: stock/models.py:2447 msgid "The timestamp of the test start" msgstr "Der Zeitstempel des Teststarts" -#: stock/models.py:2464 +#: stock/models.py:2453 msgid "Finished" msgstr "Fertiggestellt" -#: stock/models.py:2465 +#: stock/models.py:2454 msgid "The timestamp of the test finish" msgstr "Der Zeitstempel der Test-Beendigung" -#: stock/serializers.py:75 +#: stock/serializers.py:74 msgid "Generated batch code" msgstr "" -#: stock/serializers.py:84 +#: stock/serializers.py:83 msgid "Select build order" msgstr "" -#: stock/serializers.py:93 +#: stock/serializers.py:92 msgid "Select stock item to generate batch code for" msgstr "" -#: stock/serializers.py:102 +#: stock/serializers.py:101 msgid "Select location to generate batch code for" msgstr "" -#: stock/serializers.py:111 +#: stock/serializers.py:110 msgid "Select part to generate batch code for" msgstr "" -#: stock/serializers.py:120 +#: stock/serializers.py:119 msgid "Select purchase order" msgstr "" -#: stock/serializers.py:127 +#: stock/serializers.py:126 msgid "Enter quantity for batch code" msgstr "" -#: stock/serializers.py:150 +#: stock/serializers.py:149 msgid "Generated serial number" msgstr "" -#: stock/serializers.py:159 +#: stock/serializers.py:158 msgid "Select part to generate serial number for" msgstr "" -#: stock/serializers.py:167 +#: stock/serializers.py:166 msgid "Quantity of serial numbers to generate" msgstr "" -#: stock/serializers.py:229 +#: stock/serializers.py:228 msgid "Test template for this result" msgstr "Testvorlage für dieses Ergebnis" -#: stock/serializers.py:248 +#: stock/serializers.py:247 msgid "Template ID or test name must be provided" msgstr "Vorlagen-ID oder Testname muss angegeben werden" -#: stock/serializers.py:280 +#: stock/serializers.py:279 msgid "The test finished time cannot be earlier than the test started time" msgstr "Die Test-Endzeit kann nicht früher als die Startzeit des Tests sein" -#: stock/serializers.py:313 +#: stock/serializers.py:315 msgid "Serial number is too large" msgstr "Seriennummer ist zu lang" -#: stock/serializers.py:411 +#: stock/serializers.py:438 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "Packungsgröße beim Hinzufügen verwenden: Die definierte Menge ist die Anzahl der Pakete" -#: stock/serializers.py:531 +#: stock/serializers.py:558 msgid "Purchase price of this stock item, per unit or pack" msgstr "Einkaufspreis dieses Lagerartikels, pro Einheit oder Verpackungseinheit" -#: stock/serializers.py:593 +#: stock/serializers.py:595 msgid "Enter number of stock items to serialize" msgstr "Anzahl der zu serialisierenden Lagerartikel eingeben" -#: stock/serializers.py:606 +#: stock/serializers.py:608 #, 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:613 +#: stock/serializers.py:615 msgid "Enter serial numbers for new items" msgstr "Seriennummern für neue Teile eingeben" -#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 +#: stock/serializers.py:626 stock/serializers.py:1322 stock/serializers.py:1578 msgid "Destination stock location" msgstr "Ziel-Bestand" -#: stock/serializers.py:631 +#: stock/serializers.py:633 msgid "Optional note field" msgstr "Optionales Notizfeld" -#: stock/serializers.py:641 +#: stock/serializers.py:643 msgid "Serial numbers cannot be assigned to this part" msgstr "Seriennummern können diesem Teil nicht zugewiesen werden" -#: stock/serializers.py:696 +#: stock/serializers.py:698 msgid "Select stock item to install" msgstr "Lagerartikel für Installation auswählen" -#: stock/serializers.py:703 +#: stock/serializers.py:705 msgid "Quantity to Install" msgstr "Zu installierende Menge" -#: stock/serializers.py:704 +#: stock/serializers.py:706 msgid "Enter the quantity of items to install" msgstr "Anzahl der zu verwendenden Artikel eingeben" -#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 -#: stock/serializers.py:935 +#: stock/serializers.py:711 stock/serializers.py:791 stock/serializers.py:887 +#: stock/serializers.py:937 msgid "Add transaction note (optional)" msgstr " Transaktionsnotizen hinzufügen (optional)" -#: stock/serializers.py:717 +#: stock/serializers.py:719 msgid "Quantity to install must be at least 1" msgstr "Die zu verwendende Menge muss mindestens 1 sein" -#: stock/serializers.py:725 +#: stock/serializers.py:727 msgid "Stock item is unavailable" msgstr "Lagerartikel ist nicht verfügbar" -#: stock/serializers.py:736 +#: stock/serializers.py:738 msgid "Selected part is not in the Bill of Materials" msgstr "Ausgewähltes Teil ist nicht in der Stückliste" -#: stock/serializers.py:749 +#: stock/serializers.py:751 msgid "Quantity to install must not exceed available quantity" msgstr "Die zu verwendende Menge darf die verfügbare Menge nicht überschreiten" -#: stock/serializers.py:784 +#: stock/serializers.py:786 msgid "Destination location for uninstalled item" msgstr "Ziel Lagerort für unverbautes Objekt" -#: stock/serializers.py:819 +#: stock/serializers.py:821 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:832 +#: stock/serializers.py:834 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:849 +#: stock/serializers.py:851 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "Lagerartikel konnte nicht mit Zulieferteil zugewiesen werden" -#: stock/serializers.py:880 +#: stock/serializers.py:882 msgid "Destination location for returned item" msgstr "Ziel Lagerort für zurückgegebene Artikel" -#: stock/serializers.py:917 +#: stock/serializers.py:919 msgid "Select stock items to change status" msgstr "Lagerartikel auswählen, um den Status zu ändern" -#: stock/serializers.py:923 +#: stock/serializers.py:925 msgid "No stock items selected" msgstr "Keine Lagerartikel ausgewählt" -#: stock/serializers.py:1019 stock/serializers.py:1082 +#: stock/serializers.py:1021 stock/serializers.py:1093 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:220 +#: stock/templates/stock/location.html:222 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "Unter-Lagerorte" -#: stock/serializers.py:1198 +#: stock/serializers.py:1086 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "Übergeordneter Lagerort" + +#: stock/serializers.py:1194 msgid "Part must be salable" msgstr "Teil muss verkaufbar sein" -#: stock/serializers.py:1202 +#: stock/serializers.py:1198 msgid "Item is allocated to a sales order" msgstr "Artikel ist einem Kundenauftrag zugeordnet" -#: stock/serializers.py:1206 +#: stock/serializers.py:1202 msgid "Item is allocated to a build order" msgstr "Artikel ist einem Fertigungsauftrag zugeordnet" -#: stock/serializers.py:1230 +#: stock/serializers.py:1226 msgid "Customer to assign stock items" msgstr "Kunde zum Zuweisen von Lagerartikel" -#: stock/serializers.py:1236 +#: stock/serializers.py:1232 msgid "Selected company is not a customer" msgstr "Ausgewählte Firma ist kein Kunde" -#: stock/serializers.py:1244 +#: stock/serializers.py:1240 msgid "Stock assignment notes" msgstr "Notizen zur Lagerzuordnung" -#: stock/serializers.py:1254 stock/serializers.py:1508 +#: stock/serializers.py:1250 stock/serializers.py:1504 msgid "A list of stock items must be provided" msgstr "Eine Liste der Lagerbestände muss angegeben werden" -#: stock/serializers.py:1333 +#: stock/serializers.py:1329 msgid "Stock merging notes" msgstr "Notizen zur Lagerartikelzusammenführung" -#: stock/serializers.py:1338 +#: stock/serializers.py:1334 msgid "Allow mismatched suppliers" msgstr "Unterschiedliche Lieferanten erlauben" -#: stock/serializers.py:1339 +#: stock/serializers.py:1335 msgid "Allow stock items with different supplier parts to be merged" msgstr "Zusammenführen von Lagerartikeln mit unterschiedlichen Lieferanten erlauben" -#: stock/serializers.py:1344 +#: stock/serializers.py:1340 msgid "Allow mismatched status" msgstr "Unterschiedliche Status erlauben" -#: stock/serializers.py:1345 +#: stock/serializers.py:1341 msgid "Allow stock items with different status codes to be merged" msgstr "Zusammenführen von Lagerartikeln mit unterschiedlichen Status-Codes erlauben" -#: stock/serializers.py:1355 +#: stock/serializers.py:1351 msgid "At least two stock items must be provided" msgstr "Mindestens zwei Lagerartikel müssen angegeben werden" -#: stock/serializers.py:1422 +#: stock/serializers.py:1418 msgid "No Change" msgstr "Keine Änderung" -#: stock/serializers.py:1451 +#: stock/serializers.py:1447 msgid "StockItem primary key value" msgstr "Primärschlüssel Lagerelement" -#: stock/serializers.py:1470 +#: stock/serializers.py:1466 msgid "Stock item status code" msgstr "Lagerartikel Status-Code" -#: stock/serializers.py:1498 +#: stock/serializers.py:1494 msgid "Stock transaction notes" msgstr "Bestandsbewegungsnotizen" @@ -9450,7 +9532,7 @@ msgstr "Testdaten" msgid "Test Report" msgstr "Test-Bericht" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276 msgid "Delete Test Data" msgstr "Testdaten löschen" @@ -9470,11 +9552,11 @@ msgstr "Installierte Lagerartikel" msgid "Install Stock Item" msgstr "Lagerartikel installieren" -#: stock/templates/stock/item.html:272 +#: stock/templates/stock/item.html:264 msgid "Delete all test results for this stock item" msgstr "Alle Testergebnisse für diesen Lagerartikel löschen" -#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "Testergebnis hinzufügen" @@ -9760,28 +9842,28 @@ msgstr "Sie sind nicht auf der Liste der Besitzer dieses Lagerorts. Der Bestands msgid "Location Type" msgstr "Lagerort Typ" -#: stock/templates/stock/location.html:224 +#: stock/templates/stock/location.html:226 msgid "Create new stock location" msgstr "Neuen Lagerort anlegen" -#: stock/templates/stock/location.html:225 +#: stock/templates/stock/location.html:227 msgid "New Location" msgstr "Neuer Lagerort" -#: stock/templates/stock/location.html:295 +#: stock/templates/stock/location.html:299 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "Lagerort" -#: stock/templates/stock/location.html:317 +#: stock/templates/stock/location.html:321 msgid "Scanned stock container into this location" msgstr "Lagerbehälter an diesen Ort eingescannt" -#: stock/templates/stock/location.html:390 +#: stock/templates/stock/location.html:394 msgid "Stock Location QR Code" msgstr "Lagerort QR-Code" -#: stock/templates/stock/location.html:401 +#: stock/templates/stock/location.html:405 msgid "Link Barcode to Stock Location" msgstr "Barcode mit Lagerort verknüpfen" @@ -10205,20 +10287,20 @@ msgstr "Bestellungs-Einstellungen" msgid "Pricing Settings" msgstr "Preiseinstellungen" -#: templates/InvenTree/settings/pricing.html:34 +#: templates/InvenTree/settings/pricing.html:35 msgid "Exchange Rates" msgstr "Wechselkurse" -#: templates/InvenTree/settings/pricing.html:38 +#: templates/InvenTree/settings/pricing.html:39 msgid "Update Now" msgstr "Jetzt aktualisieren" -#: templates/InvenTree/settings/pricing.html:46 -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 msgid "Last Update" msgstr "Letzte Aktualisierung" -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:51 msgid "Never" msgstr "Nie" @@ -10275,8 +10357,8 @@ msgstr "Bewerten" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:547 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 +#: templates/js/translated/part.js:393 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:402 msgid "Delete" msgstr "Löschen" @@ -10316,12 +10398,12 @@ msgid "No category parameter templates found" msgstr "Keine Kategorieparameter Vorlage gefunden" #: templates/InvenTree/settings/settings_staff_js.html:308 -#: templates/js/translated/part.js:1645 +#: templates/js/translated/part.js:1646 msgid "Edit Template" msgstr "Vorlage bearbeiten" #: templates/InvenTree/settings/settings_staff_js.html:309 -#: templates/js/translated/part.js:1646 +#: templates/js/translated/part.js:1647 msgid "Delete Template" msgstr "Vorlage löschen" @@ -10711,7 +10793,7 @@ msgid "Submit Bug Report" msgstr "Fehlerbericht senden" #: templates/about.html:91 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 +#: templates/js/translated/helpers.js:589 msgid "copy to clipboard" msgstr "In die Zwischenablage kopieren" @@ -10775,7 +10857,7 @@ msgid "Are you sure you want to sign out?" msgstr "Möchten Sie sich wirklich abmelden?" #: templates/account/logout.html:27 templates/allauth_2fa/backup_tokens.html:35 -#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:44 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45 msgid "Return to Site" msgstr "Zurück zur Seite" @@ -10889,15 +10971,19 @@ msgstr "Schritt 1" msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "Scannen Sie den QR-Code unten mit einem Token-Generator Ihrer Wahl (z.B. Google Authenticator)." -#: templates/allauth_2fa/setup.html:23 +#: templates/allauth_2fa/setup.html:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 msgid "Step 2" msgstr "Schritt 2" -#: templates/allauth_2fa/setup.html:27 +#: templates/allauth_2fa/setup.html:28 msgid "Input a token generated by the app:" msgstr "Geben Sie das von der App generierte Token ein:" -#: templates/allauth_2fa/setup.html:37 +#: templates/allauth_2fa/setup.html:38 msgid "Verify" msgstr "Überprüfen" @@ -10976,7 +11062,7 @@ msgid "Click on the following link to view this part" msgstr "Klicken Sie auf den folgenden Link, um diesen Teil anzuzeigen" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3217 +#: templates/js/translated/part.js:3219 msgid "Minimum Quantity" msgstr "Mindestmenge" @@ -11064,27 +11150,27 @@ msgstr "Anhang löschen" msgid "Delete attachments" msgstr "Anhänge löschen" -#: templates/js/translated/attachment.js:253 +#: templates/js/translated/attachment.js:260 msgid "Attachment actions" msgstr "Anhang-Aktionen" -#: templates/js/translated/attachment.js:275 +#: templates/js/translated/attachment.js:294 msgid "No attachments found" msgstr "Keine Anhänge gefunden" -#: templates/js/translated/attachment.js:315 +#: templates/js/translated/attachment.js:334 msgid "Edit Attachment" msgstr "Anhänge bearbeiten" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:365 msgid "Upload Date" msgstr "Datum hochgeladen" -#: templates/js/translated/attachment.js:366 +#: templates/js/translated/attachment.js:385 msgid "Edit attachment" msgstr "Anhang bearbeiten" -#: templates/js/translated/attachment.js:374 +#: templates/js/translated/attachment.js:393 msgid "Delete attachment" msgstr "Anhang löschen" @@ -11365,7 +11451,7 @@ msgid "Includes variant and substitute stock" msgstr "Alternatives Lager und Ersatzteillager einschließen" #: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 -#: templates/js/translated/part.js:1256 +#: templates/js/translated/part.js:1257 #: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "Alternatives Lager einschließen" @@ -11692,7 +11778,7 @@ msgstr "Keine Bauaufträge zur Suchanfrage" #: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 #: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 -#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "Auswählen" @@ -11735,8 +11821,8 @@ msgstr "Bauauftragspositionen" msgid "No build lines found" msgstr "Keine Bauauftragspositionen gefunden" -#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 -#: templates/js/translated/part.js:1202 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:791 +#: templates/js/translated/part.js:1203 msgid "Trackable part" msgstr "Nachverfolgbares Teil" @@ -11922,7 +12008,7 @@ msgid "Delete Parameters" msgstr "Parameter löschen" #: templates/js/translated/company.js:1191 -#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2244 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2245 msgid "Order parts" msgstr "Teile bestellen" @@ -11939,34 +12025,34 @@ msgid "No manufacturer parts found" msgstr "Keine Herstellerteile gefunden" #: templates/js/translated/company.js:1279 -#: templates/js/translated/company.js:1567 templates/js/translated/part.js:798 -#: templates/js/translated/part.js:1210 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Template part" msgstr "Vorlagenteil" #: templates/js/translated/company.js:1283 -#: templates/js/translated/company.js:1571 templates/js/translated/part.js:802 -#: templates/js/translated/part.js:1214 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:803 +#: templates/js/translated/part.js:1215 msgid "Assembled part" msgstr "Baugruppe" -#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1464 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1465 msgid "No parameters found" msgstr "Keine Parameter gefunden" -#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1527 +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1528 msgid "Edit parameter" msgstr "Parameter bearbeiten" -#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1528 +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1529 msgid "Delete parameter" msgstr "Parameter löschen" -#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1433 +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1434 msgid "Edit Parameter" msgstr "Parameter bearbeiten" -#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1549 +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1550 msgid "Delete Parameter" msgstr "Parameter löschen" @@ -12100,23 +12186,23 @@ msgstr "Fehler in Formular" msgid "No results found" msgstr "Keine Ergebnisse gefunden" -#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 msgid "Searching" msgstr "Suche" -#: templates/js/translated/forms.js:2499 +#: templates/js/translated/forms.js:2500 msgid "Clear input" msgstr "Eingabe löschen" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "File Column" msgstr "Dateispalte" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "Field Name" msgstr "Feldname" -#: templates/js/translated/forms.js:3113 +#: templates/js/translated/forms.js:3114 msgid "Select Columns" msgstr "Spalten auswählen" @@ -12217,7 +12303,7 @@ msgstr "Keine Nachrichten gefunden" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 -#: templates/js/translated/part.js:1604 +#: templates/js/translated/part.js:1605 msgid "ID" msgstr "ID" @@ -12298,347 +12384,343 @@ msgstr "Duplizierungsoptionen für Teile" msgid "Add Part Category" msgstr "Teil-Kategorie hinzufügen" -#: templates/js/translated/part.js:308 -msgid "Parent part category" -msgstr "Übergeordnete Teilkategorie" - -#: templates/js/translated/part.js:332 templates/js/translated/stock.js:175 +#: templates/js/translated/part.js:333 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "Icon (optional) - alle verfügbaren Icons einsehbar auf" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Category" msgstr "Teil-Kategorie hinzufügen" -#: templates/js/translated/part.js:355 +#: templates/js/translated/part.js:356 msgid "Create new category after this one" msgstr "Neue Kategorie nach dieser Kategorie erstellen" -#: templates/js/translated/part.js:356 +#: templates/js/translated/part.js:357 msgid "Part category created" msgstr "Artikelkategorie erstellt" -#: templates/js/translated/part.js:370 +#: templates/js/translated/part.js:371 msgid "Edit Part Category" msgstr "Teilekategorie bearbeiten" -#: templates/js/translated/part.js:383 +#: templates/js/translated/part.js:384 msgid "Are you sure you want to delete this part category?" msgstr "Möchten Sie diese Artikel-Kategorie wirklich löschen?" -#: templates/js/translated/part.js:388 +#: templates/js/translated/part.js:389 msgid "Move to parent category" msgstr "In übergeordnete Kategorie verschieben" -#: templates/js/translated/part.js:397 +#: templates/js/translated/part.js:398 msgid "Delete Part Category" msgstr "Teil-Kategorie löschen" -#: templates/js/translated/part.js:401 +#: templates/js/translated/part.js:402 msgid "Action for parts in this category" msgstr "Aktion für Teile in dieser Kategorie" -#: templates/js/translated/part.js:406 +#: templates/js/translated/part.js:407 msgid "Action for child categories" msgstr "Aktion für Unterkategorien" -#: templates/js/translated/part.js:430 +#: templates/js/translated/part.js:431 msgid "Create Part" msgstr "Teil erstellen" -#: templates/js/translated/part.js:432 +#: templates/js/translated/part.js:433 msgid "Create another part after this one" msgstr "Weiteres Teil nach diesem erstellen" -#: templates/js/translated/part.js:433 +#: templates/js/translated/part.js:434 msgid "Part created successfully" msgstr "Teil erfolgreich angelegt" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:462 msgid "Edit Part" msgstr "Teil bearbeiten" -#: templates/js/translated/part.js:463 +#: templates/js/translated/part.js:464 msgid "Part edited" msgstr "Teil bearbeitet" -#: templates/js/translated/part.js:474 +#: templates/js/translated/part.js:475 msgid "Create Part Variant" msgstr "Teil-Variante anlegen" -#: templates/js/translated/part.js:531 +#: templates/js/translated/part.js:532 msgid "Active Part" msgstr "Aktives Teil" -#: templates/js/translated/part.js:532 +#: templates/js/translated/part.js:533 msgid "Part cannot be deleted as it is currently active" msgstr "Teil kann nicht gelöscht werden, da es derzeit aktiv ist" -#: templates/js/translated/part.js:546 +#: templates/js/translated/part.js:547 msgid "Deleting this part cannot be reversed" msgstr "Das Löschen dieses Teils kann nicht rückgängig gemacht werden" -#: templates/js/translated/part.js:548 +#: templates/js/translated/part.js:549 msgid "Any stock items for this part will be deleted" msgstr "Alle Lagerartikel für dieses Teil werden gelöscht" -#: templates/js/translated/part.js:549 +#: templates/js/translated/part.js:550 msgid "This part will be removed from any Bills of Material" msgstr "Dieses Teil wird von allen Stücklisten entfernt" -#: templates/js/translated/part.js:550 +#: templates/js/translated/part.js:551 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "Alle Hersteller- und Lieferanteninformationen für dieses Teil werden gelöscht" -#: templates/js/translated/part.js:557 +#: templates/js/translated/part.js:558 msgid "Delete Part" msgstr "Teil löschen" -#: templates/js/translated/part.js:593 +#: templates/js/translated/part.js:594 msgid "You are subscribed to notifications for this item" msgstr "Du hast Benachrichtigungen zu diesem Artikel abonniert" -#: templates/js/translated/part.js:595 +#: templates/js/translated/part.js:596 msgid "You have subscribed to notifications for this item" msgstr "Du hast Benachrichtigungen zu diesem Artikel abonniert" -#: templates/js/translated/part.js:600 +#: templates/js/translated/part.js:601 msgid "Subscribe to notifications for this item" msgstr "Benachrichtigungen zu diesem Artikel abonnieren" -#: templates/js/translated/part.js:602 +#: templates/js/translated/part.js:603 msgid "You have unsubscribed to notifications for this item" msgstr "Du erhältst keine Benachrichtigungen zu diesem Artikel mehr" -#: templates/js/translated/part.js:619 +#: templates/js/translated/part.js:620 msgid "Validating the BOM will mark each line item as valid" msgstr "Die Stückliste zu validieren markiert jede Position als gültig" -#: templates/js/translated/part.js:629 +#: templates/js/translated/part.js:630 msgid "Validate Bill of Materials" msgstr "Stückliste prüfen" -#: templates/js/translated/part.js:632 +#: templates/js/translated/part.js:633 msgid "Validated Bill of Materials" msgstr "Überprüfte Stückliste" -#: templates/js/translated/part.js:657 +#: templates/js/translated/part.js:658 msgid "Copy Bill of Materials" msgstr "Stückliste kopieren" -#: templates/js/translated/part.js:685 +#: templates/js/translated/part.js:686 #: templates/js/translated/table_filters.js:747 msgid "Low stock" msgstr "Bestand niedrig" -#: templates/js/translated/part.js:688 +#: templates/js/translated/part.js:689 msgid "No stock available" msgstr "Kein Lagerbestand verfügbar" -#: templates/js/translated/part.js:748 +#: templates/js/translated/part.js:749 msgid "Demand" msgstr "Bedarf" -#: templates/js/translated/part.js:771 +#: templates/js/translated/part.js:772 msgid "Unit" msgstr "Einheit" -#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +#: templates/js/translated/part.js:795 templates/js/translated/part.js:1207 msgid "Virtual part" msgstr "Virtuelles Teil" -#: templates/js/translated/part.js:806 +#: templates/js/translated/part.js:807 msgid "Subscribed part" msgstr "Abonniertes Teil" -#: templates/js/translated/part.js:810 +#: templates/js/translated/part.js:811 msgid "Salable part" msgstr "Verkäufliches Teil" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Schedule generation of a new stocktake report." msgstr "Erstellung eines neuen Inventurberichts planen." -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Once complete, the stocktake report will be available for download." msgstr "Nach Fertigstellung steht der Inventurbericht zum Download zur Verfügung." -#: templates/js/translated/part.js:897 +#: templates/js/translated/part.js:898 msgid "Generate Stocktake Report" msgstr "Inventurbericht erstellen" -#: templates/js/translated/part.js:901 +#: templates/js/translated/part.js:902 msgid "Stocktake report scheduled" msgstr "Inventurbericht geplant" -#: templates/js/translated/part.js:1050 +#: templates/js/translated/part.js:1051 msgid "No stocktake information available" msgstr "Keine Inventurinformationen verfügbar" -#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1145 msgid "Edit Stocktake Entry" msgstr "Inventureintrag bearbeiten" -#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +#: templates/js/translated/part.js:1113 templates/js/translated/part.js:1155 msgid "Delete Stocktake Entry" msgstr "Inventureintrag löschen" -#: templates/js/translated/part.js:1281 +#: templates/js/translated/part.js:1282 msgid "No variants found" msgstr "Keine Varianten gefunden" -#: templates/js/translated/part.js:1599 +#: templates/js/translated/part.js:1600 msgid "No part parameter templates found" msgstr "Keine Teileparametervorlagen gefunden" -#: templates/js/translated/part.js:1662 +#: templates/js/translated/part.js:1663 msgid "Edit Part Parameter Template" msgstr "Teileparametervorlage bearbeiten" -#: templates/js/translated/part.js:1674 +#: templates/js/translated/part.js:1675 msgid "Any parameters which reference this template will also be deleted" msgstr "Alle Parameter mit Verweis auf diese Vorlage werden ebenfalls gelöscht" -#: templates/js/translated/part.js:1682 +#: templates/js/translated/part.js:1683 msgid "Delete Part Parameter Template" msgstr "Teileparametervorlage löschen" -#: templates/js/translated/part.js:1716 +#: templates/js/translated/part.js:1717 #: templates/js/translated/purchase_order.js:1654 msgid "No purchase orders found" msgstr "Keine Bestellungen gefunden" -#: templates/js/translated/part.js:1860 +#: templates/js/translated/part.js:1861 #: templates/js/translated/purchase_order.js:2153 #: templates/js/translated/return_order.js:755 #: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "Diese Position ist überfällig" -#: templates/js/translated/part.js:1906 +#: templates/js/translated/part.js:1907 #: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "Position empfangen" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1970 msgid "Delete part relationship" msgstr "Teilebeziehung löschen" -#: templates/js/translated/part.js:1991 +#: templates/js/translated/part.js:1992 msgid "Delete Part Relationship" msgstr "Teilebeziehung löschen" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 +#: templates/js/translated/part.js:2080 templates/js/translated/part.js:2506 msgid "No parts found" msgstr "Keine Teile gefunden" -#: templates/js/translated/part.js:2200 +#: templates/js/translated/part.js:2201 msgid "Set the part category for the selected parts" msgstr "Wähle die Kategorie für die ausgewählten Teile" -#: templates/js/translated/part.js:2205 +#: templates/js/translated/part.js:2206 msgid "Set Part Category" msgstr "Teilekategorie auswählen" -#: templates/js/translated/part.js:2235 +#: templates/js/translated/part.js:2236 msgid "Set category" msgstr "Kategorie wählen" -#: templates/js/translated/part.js:2286 +#: templates/js/translated/part.js:2287 msgid "part" msgstr "Teil" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2288 msgid "parts" msgstr "Teile" -#: templates/js/translated/part.js:2383 +#: templates/js/translated/part.js:2384 msgid "No category" msgstr "Keine Kategorien" -#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "Als Liste anzeigen" -#: templates/js/translated/part.js:2546 +#: templates/js/translated/part.js:2547 msgid "Display as grid" msgstr "Als Raster anzeigen" -#: templates/js/translated/part.js:2644 +#: templates/js/translated/part.js:2645 msgid "No subcategories found" msgstr "Keine Unterkategorien gefunden" -#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "Als Baum anzeigen" -#: templates/js/translated/part.js:2760 +#: templates/js/translated/part.js:2761 msgid "Load Subcategories" msgstr "Unterkategorien laden" -#: templates/js/translated/part.js:2776 +#: templates/js/translated/part.js:2777 msgid "Subscribed category" msgstr "Abonnierte Kategorie" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2865 msgid "No test templates matching query" msgstr "Keine passenden Testvorlagen gefunden" -#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2887 templates/js/translated/search.js:342 msgid "results" msgstr "Ergebnisse" -#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "Testergebnis bearbeiten" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/part.js:2938 templates/js/translated/stock.js:1457 #: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "Testergebnis löschen" -#: templates/js/translated/part.js:2940 +#: templates/js/translated/part.js:2942 msgid "This test is defined for a parent part" msgstr "Dieser Test ist für ein übergeordnetes Teil definiert" -#: templates/js/translated/part.js:2956 +#: templates/js/translated/part.js:2958 msgid "Edit Test Result Template" msgstr "Vorlage für Testergebnis bearbeiten" -#: templates/js/translated/part.js:2970 +#: templates/js/translated/part.js:2972 msgid "Delete Test Result Template" msgstr "Vorlage für Testergebnis löschen" -#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3051 templates/js/translated/part.js:3052 msgid "No date specified" msgstr "Kein Datum angegeben" -#: templates/js/translated/part.js:3052 +#: templates/js/translated/part.js:3054 msgid "Specified date is in the past" msgstr "Das angegebene Datum liegt in der Vergangenheit" -#: templates/js/translated/part.js:3058 +#: templates/js/translated/part.js:3060 msgid "Speculative" msgstr "Spekulativ" -#: templates/js/translated/part.js:3108 +#: templates/js/translated/part.js:3110 msgid "No scheduling information available for this part" msgstr "Keine Zeitplanung für dieses Teil vorhanden" -#: templates/js/translated/part.js:3114 +#: templates/js/translated/part.js:3116 msgid "Error fetching scheduling information for this part" msgstr "Fehler beim Abrufen der Zeitplanungsinformationen für dieses Teil" -#: templates/js/translated/part.js:3210 +#: templates/js/translated/part.js:3212 msgid "Scheduled Stock Quantities" msgstr "Geplante Lagermengen" -#: templates/js/translated/part.js:3226 +#: templates/js/translated/part.js:3228 msgid "Maximum Quantity" msgstr "Maximale Menge" -#: templates/js/translated/part.js:3271 +#: templates/js/translated/part.js:3273 msgid "Minimum Stock Level" msgstr "Minimaler Lagerbestand" @@ -13246,10 +13328,6 @@ msgstr "Lager-Serialisierung bestätigen" msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" msgstr "Standardsymbol für alle Orte, die kein Symbol haben (optional) - Erkunden Sie alle verfügbaren Symbole auf" -#: templates/js/translated/stock.js:152 -msgid "Parent stock location" -msgstr "Übergeordneter Lagerort" - #: templates/js/translated/stock.js:166 msgid "Add Location type" msgstr "Lagerorttyp hinzufügen" @@ -13418,7 +13496,7 @@ msgstr "Entnehmen" msgid "Add Stock" msgstr "Bestand hinzufügen" -#: templates/js/translated/stock.js:1042 users/models.py:401 +#: templates/js/translated/stock.js:1042 users/models.py:392 msgid "Add" msgstr "Hinzufügen" @@ -14309,34 +14387,35 @@ msgstr "Das letzte Mal, wo das Token verwendet wurde" msgid "Revoked" msgstr "Widerrufen" -#: users/models.py:384 +#: users/models.py:375 msgid "Permission set" msgstr "Berechtigung geändert" -#: users/models.py:393 +#: users/models.py:384 msgid "Group" msgstr "Gruppe" -#: users/models.py:397 +#: users/models.py:388 msgid "View" msgstr "Ansicht" -#: users/models.py:397 +#: users/models.py:388 msgid "Permission to view items" msgstr "Berechtigung Einträge anzuzeigen" -#: users/models.py:401 +#: users/models.py:392 msgid "Permission to add items" msgstr "Berechtigung Einträge zu erstellen" -#: users/models.py:405 +#: users/models.py:396 msgid "Change" msgstr "Ändern" -#: users/models.py:407 +#: users/models.py:398 msgid "Permissions to edit items" msgstr "Berechtigungen Einträge zu ändern" -#: users/models.py:413 +#: users/models.py:404 msgid "Permission to delete items" msgstr "Berechtigung Einträge zu löschen" + diff --git a/src/backend/InvenTree/locale/el/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/el/LC_MESSAGES/django.po index 59c26e1611..12d1296fe8 100644 --- a/src/backend/InvenTree/locale/el/LC_MESSAGES/django.po +++ b/src/backend/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-05-31 07:08+0000\n" -"PO-Revision-Date: 2024-05-27 11:54\n" +"POT-Creation-Date: 2024-06-26 03:18+0000\n" +"PO-Revision-Date: 2024-06-26 06:04\n" "Last-Translator: \n" "Language-Team: Greek\n" "Language: el_GR\n" @@ -21,7 +21,7 @@ msgstr "" msgid "API endpoint not found" msgstr "Το API endpoint δε βρέθηκε" -#: InvenTree/api.py:536 +#: InvenTree/api.py:520 msgid "User does not have permission to view this model" msgstr "Δεν έχετε δικαιώματα να το δείτε αυτό" @@ -52,25 +52,25 @@ msgstr "Δόθηκε μη έγκυρη ποσότητα ({exc})" msgid "Error details can be found in the admin panel" msgstr "Μπορείτε να βρείτε λεπτομέρειες σφάλματος στον πίνακα διαχείρισης" -#: InvenTree/fields.py:139 +#: InvenTree/fields.py:136 msgid "Enter date" msgstr "Εισάγετε ημερομηνία" -#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 -#: build/serializers.py:531 build/templates/build/sidebar.html:21 -#: company/models.py:849 company/templates/company/sidebar.html:37 -#: order/models.py:1332 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:205 InvenTree/models.py:918 build/serializers.py:452 +#: build/serializers.py:530 build/templates/build/sidebar.html:21 +#: company/models.py:817 company/templates/company/sidebar.html:37 +#: order/models.py:1296 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:3218 part/templates/part/part_sidebar.html:63 +#: part/models.py:3183 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_report.html:172 -#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 -#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 -#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 -#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:230 stock/models.py:2309 stock/models.py:2431 +#: stock/serializers.py:632 stock/serializers.py:790 stock/serializers.py:886 +#: stock/serializers.py:936 stock/serializers.py:1239 stock/serializers.py:1328 +#: stock/serializers.py:1493 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1080 +#: templates/js/translated/part.js:1081 #: templates/js/translated/purchase_order.js:2200 #: templates/js/translated/return_order.js:775 #: templates/js/translated/sales_order.js:1103 @@ -120,15 +120,15 @@ msgstr "Επιβεβαίωση διεύθυνσης email" msgid "You must type the same email each time." msgstr "Πρέπει να πληκτρολογήσετε το ίδιο email κάθε φορά." -#: InvenTree/forms.py:253 InvenTree/forms.py:261 +#: InvenTree/forms.py:248 InvenTree/forms.py:256 msgid "The provided primary email address is not valid." msgstr "Η παρεχόμενη κύρια διεύθυνση ηλεκτρονικού ταχυδρομείου δεν είναι έγκυρη." -#: InvenTree/forms.py:268 +#: InvenTree/forms.py:263 msgid "The provided email domain is not approved." msgstr "Ο παρεχόμενος τομέας ηλεκτρονικού ταχυδρομείου δεν έχει εγκριθεί." -#: InvenTree/forms.py:395 +#: InvenTree/forms.py:390 msgid "Registration is disabled." msgstr "Η εγγραφή είναι απενεργοποιημένη." @@ -171,35 +171,35 @@ msgstr "Ο αριθμός μοναδικών σειριακών αριθμών ( msgid "Remove HTML tags from this value" msgstr "Αφαιρέστε τα HTML tags από την τιμή που εισάγατε" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Connection error" msgstr "Σφάλμα σύνδεσης" -#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 msgid "Server responded with invalid status code" msgstr "Ο διακομιστής απάντησε με μη έγκυρο κωδικό κατάστασης" -#: InvenTree/helpers_model.py:158 +#: InvenTree/helpers_model.py:148 msgid "Exception occurred" msgstr "Προέκυψε σφάλμα" -#: InvenTree/helpers_model.py:168 +#: InvenTree/helpers_model.py:158 msgid "Server responded with invalid Content-Length value" msgstr "Ο διακομιστής ανταποκρίθηκε με \"Invalid Content-Length value\"" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:161 msgid "Image size is too large" msgstr "Η εικόνα είναι πολύ μεγάλη σε μέγεθος" -#: InvenTree/helpers_model.py:183 +#: InvenTree/helpers_model.py:173 msgid "Image download exceeded maximum size" msgstr "Η λήψη εικόνας ξεπέρασε το μέγιστο μέγεθος" -#: InvenTree/helpers_model.py:188 +#: InvenTree/helpers_model.py:178 msgid "Remote server returned empty response" msgstr "Ο διακομιστής επέστρεψε σφάλμα %1$d %2$s" -#: InvenTree/helpers_model.py:196 +#: InvenTree/helpers_model.py:186 msgid "Supplied URL is not a valid image file" msgstr "Το URL δεν είναι έγκυρο αρχείο εικόνας" @@ -296,46 +296,50 @@ msgid "Portuguese (Brazilian)" msgstr "Πορτογαλικά (Βραζιλίας)" #: InvenTree/locales.py:41 +msgid "Romanian" +msgstr "" + +#: InvenTree/locales.py:42 msgid "Russian" msgstr "Ρωσικά" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:43 msgid "Slovak" msgstr "Σλοβάκικα" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:44 msgid "Slovenian" msgstr "Σλοβενικά" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:45 msgid "Serbian" msgstr "Σερβικά" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:46 msgid "Swedish" msgstr "Σουηδικά" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:47 msgid "Thai" msgstr "Ταϊλανδέζικα" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:48 msgid "Turkish" msgstr "Τούρκικα" -#: InvenTree/locales.py:48 +#: InvenTree/locales.py:49 msgid "Ukrainian" msgstr "" -#: InvenTree/locales.py:49 +#: InvenTree/locales.py:50 msgid "Vietnamese" msgstr "Βιετναμέζικα" -#: InvenTree/locales.py:50 +#: InvenTree/locales.py:51 msgid "Chinese (Simplified)" msgstr "Κινέζικα (απλοποιημένα)" -#: InvenTree/locales.py:51 +#: InvenTree/locales.py:52 msgid "Chinese (Traditional)" msgstr "Κινέζικα (Παραδοσιακά)" @@ -344,153 +348,65 @@ msgstr "Κινέζικα (Παραδοσιακά)" msgid "[{site_name}] Log in to the app" msgstr "[{site_name}] Σύνδεση στην εφαρμογή" -#: InvenTree/magic_login.py:38 company/models.py:133 +#: InvenTree/magic_login.py:38 company/models.py:136 #: company/templates/company/company_base.html:138 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:677 msgid "Email" msgstr "" -#: InvenTree/models.py:107 +#: InvenTree/models.py:105 msgid "Error running plugin validation" msgstr "Σφάλμα κατά την εκτέλεση επικύρωσης προσθέτου" -#: InvenTree/models.py:176 +#: InvenTree/models.py:174 msgid "Metadata must be a python dict object" msgstr "Τα μεταδεδομένα πρέπει να είναι ένα αντικείμενο dict python" -#: InvenTree/models.py:182 +#: InvenTree/models.py:180 msgid "Plugin Metadata" msgstr "Μεταδεδομένα Πρόσθετου" -#: InvenTree/models.py:183 +#: InvenTree/models.py:181 msgid "JSON metadata field, for use by external plugins" msgstr "JSON πεδίο μεταδεδομένων, για χρήση από εξωτερικά πρόσθετα" -#: InvenTree/models.py:413 +#: InvenTree/models.py:408 msgid "Improperly formatted pattern" msgstr "Λανθασμένο μοτίβο" -#: InvenTree/models.py:420 +#: InvenTree/models.py:415 msgid "Unknown format key specified" msgstr "Δώσατε λάθος μορφή κλειδιού" -#: InvenTree/models.py:426 +#: InvenTree/models.py:421 msgid "Missing required format key" msgstr "Λείπει το απαραίτητο κλειδί" -#: InvenTree/models.py:437 +#: InvenTree/models.py:432 msgid "Reference field cannot be empty" msgstr "Το πεδίο δεν μπορεί να είναι άδειο" -#: InvenTree/models.py:445 +#: InvenTree/models.py:440 msgid "Reference must match required pattern" msgstr "Η αναφορά πρέπει να ταιριάζει με το απαιτούμενο μοτίβο" -#: InvenTree/models.py:476 +#: InvenTree/models.py:471 msgid "Reference number is too large" msgstr "Ο αριθμός αναφοράς είναι πολύ μεγάλος" -#: InvenTree/models.py:550 -msgid "Missing file" -msgstr "Το αρχείο λείπει" - -#: InvenTree/models.py:551 -msgid "Missing external link" -msgstr "Λείπει ο εξωτερικός σύνδεσμος" - -#: InvenTree/models.py:572 stock/models.py:2437 -#: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:326 -msgid "Attachment" -msgstr "Συνημμένο" - -#: InvenTree/models.py:573 -msgid "Select file to attach" -msgstr "Επιλέξτε αρχείο για επισύναψη" - -#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:831 -#: order/models.py:303 order/models.py:1337 order/models.py:1753 -#: part/admin.py:55 part/models.py:962 -#: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_report.html:164 -#: stock/admin.py:225 templates/js/translated/company.js:1319 -#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2455 -#: templates/js/translated/purchase_order.js:2040 -#: templates/js/translated/purchase_order.js:2204 -#: templates/js/translated/return_order.js:779 -#: templates/js/translated/sales_order.js:1092 -#: templates/js/translated/sales_order.js:2023 -msgid "Link" -msgstr "Σύνδεσμος" - -#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 -#: stock/models.py:836 -msgid "Link to external URL" -msgstr "Σύνδεσμος προς εξωτερική διεύθυνση URL" - -#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:341 -msgid "Comment" -msgstr "Σχόλιο" - -#: InvenTree/models.py:589 -msgid "File comment" -msgstr "Σχόλιο αρχείου" - -#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 -#: common/models.py:2518 common/models.py:2742 common/models.py:2743 -#: common/models.py:2988 common/models.py:2989 part/models.py:3228 -#: part/models.py:3315 part/models.py:3408 part/models.py:3436 -#: plugin/models.py:259 plugin/models.py:260 -#: report/templates/report/inventree_test_report.html:105 -#: templates/js/translated/stock.js:3036 users/models.py:111 -msgid "User" -msgstr "Χρήστης" - -#: InvenTree/models.py:602 -msgid "upload date" -msgstr "ημερομηνία φόρτωσης" - -#: InvenTree/models.py:624 -msgid "Filename must not be empty" -msgstr "Το όνομα αρχείου δεν μπορεί να είναι κενό" - -#: InvenTree/models.py:635 -msgid "Invalid attachment directory" -msgstr "Μη διαθέσιμη τοποθεσία συνημμένου" - -#: InvenTree/models.py:665 -#, python-brace-format -msgid "Filename contains illegal character '{c}'" -msgstr "Το όνομα αρχείου περιέχει μη έγκυρους χαρακτήρες '{c}'" - -#: InvenTree/models.py:668 -msgid "Filename missing extension" -msgstr "Λείπει επέκταση ονόματος αρχείου" - -#: InvenTree/models.py:677 -msgid "Attachment with this filename already exists" -msgstr "Αρχείο με αυτό το όνομα υπάρχει ήδη" - -#: InvenTree/models.py:684 -msgid "Error renaming file" -msgstr "Σφάλμα κατά τη μετονομασία" - -#: InvenTree/models.py:860 +#: InvenTree/models.py:719 msgid "Duplicate names cannot exist under the same parent" msgstr "Διπλότυπα ονόματα δεν μπορούν να υπάρχουν στον ίδιο γονέα" -#: InvenTree/models.py:877 +#: InvenTree/models.py:736 msgid "Invalid choice" msgstr "Μη έγκυρη επιλογή" -#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 -#: common/serializers.py:403 company/models.py:614 machine/models.py:24 -#: part/models.py:898 part/models.py:3659 plugin/models.py:50 -#: report/models.py:149 stock/models.py:72 +#: InvenTree/models.py:766 common/models.py:2623 common/models.py:3036 +#: common/serializers.py:408 company/models.py:580 machine/models.py:24 +#: part/models.py:891 part/models.py:3639 plugin/models.py:51 +#: report/models.py:150 stock/models.py:73 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:83 @@ -501,25 +417,25 @@ msgstr "Μη έγκυρη επιλογή" #: templates/js/translated/company.js:724 #: templates/js/translated/company.js:913 #: templates/js/translated/company.js:1165 -#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 -#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1187 +#: templates/js/translated/part.js:1475 templates/js/translated/part.js:1611 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Όνομα" -#: InvenTree/models.py:913 build/models.py:218 -#: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:523 company/models.py:840 +#: InvenTree/models.py:772 build/models.py:220 +#: build/templates/build/detail.html:24 common/models.py:138 +#: company/models.py:509 company/models.py:808 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 order/models.py:289 -#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 -#: part/models.py:3674 part/templates/part/category.html:82 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:914 +#: part/models.py:3654 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:155 -#: report/models.py:509 report/models.py:535 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 #: report/templates/report/inventree_build_order_report.html:117 -#: stock/admin.py:55 stock/models.py:78 stock/templates/stock/location.html:125 +#: stock/admin.py:54 stock/models.py:79 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 @@ -528,10 +444,10 @@ msgstr "Όνομα" #: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 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:2354 -#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1239 +#: templates/js/translated/part.js:1484 templates/js/translated/part.js:1622 +#: templates/js/translated/part.js:1959 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2897 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1706 #: templates/js/translated/purchase_order.js:1849 @@ -544,149 +460,141 @@ msgstr "Όνομα" msgid "Description" msgstr "Περιγραφή" -#: InvenTree/models.py:914 stock/models.py:79 +#: InvenTree/models.py:773 stock/models.py:80 msgid "Description (optional)" msgstr "Περιγραφή (προαιρετική)" -#: InvenTree/models.py:923 -msgid "parent" -msgstr "γονέας" - -#: InvenTree/models.py:929 templates/js/translated/part.js:2793 +#: InvenTree/models.py:788 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Μονοπάτι" -#: InvenTree/models.py:1035 +#: InvenTree/models.py:918 msgid "Markdown notes (optional)" msgstr "Σημειώσεις Markdown (προαιρετικό)" -#: InvenTree/models.py:1064 +#: InvenTree/models.py:947 msgid "Barcode Data" msgstr "Στοιχεία Barcode" -#: InvenTree/models.py:1065 +#: InvenTree/models.py:948 msgid "Third party barcode data" msgstr "Δεδομένα barcode τρίτων" -#: InvenTree/models.py:1071 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:1072 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "Μοναδικό hash δεδομένων barcode" -#: InvenTree/models.py:1125 +#: InvenTree/models.py:1008 msgid "Existing barcode found" msgstr "Βρέθηκε υπάρχων barcode" -#: InvenTree/models.py:1168 +#: InvenTree/models.py:1051 msgid "Server Error" msgstr "Σφάλμα διακομιστή" -#: InvenTree/models.py:1169 +#: InvenTree/models.py:1052 msgid "An error has been logged by the server." msgstr "Ένα σφάλμα έχει καταγραφεί από το διακομιστή." -#: InvenTree/serializers.py:62 part/models.py:4212 +#: InvenTree/serializers.py:63 part/models.py:4192 msgid "Must be a valid number" msgstr "Πρέπει να είναι αριθμός" -#: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:3036 +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3001 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Νόμισμα" -#: InvenTree/serializers.py:102 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "Επιλέξτε νόμισμα από τις διαθέσιμες επιλογές" -#: InvenTree/serializers.py:441 +#: InvenTree/serializers.py:442 msgid "You do not have permission to change this user role." msgstr "Δεν έχετε άδεια να αλλάξετε αυτόν τον ρόλο χρήστη." -#: InvenTree/serializers.py:453 +#: InvenTree/serializers.py:454 msgid "Only superusers can create new users" msgstr "Μόνο υπερχρήστες (superusers) μπορούν να δημιουργήσουν νέους χρήστες" -#: InvenTree/serializers.py:472 +#: InvenTree/serializers.py:473 msgid "Your account has been created." msgstr "Ο λογαριασμός σας δημιουργήθηκε." -#: InvenTree/serializers.py:474 +#: InvenTree/serializers.py:475 msgid "Please use the password reset function to login" msgstr "Παρακαλούμε χρησιμοποιήστε τη λειτουργία επαναφοράς κωδικού πρόσβασης για να συνδεθείτε" -#: InvenTree/serializers.py:481 +#: InvenTree/serializers.py:482 msgid "Welcome to InvenTree" msgstr "Καλώς ήρθατε στο InvenTree" -#: InvenTree/serializers.py:542 -msgid "Filename" -msgstr "Όνομα αρχείου" - -#: InvenTree/serializers.py:576 +#: InvenTree/serializers.py:540 msgid "Invalid value" msgstr "Μη έγκυρη τιμή" -#: InvenTree/serializers.py:596 +#: InvenTree/serializers.py:560 msgid "Data File" msgstr "Αρχείο Δεδομένων" -#: InvenTree/serializers.py:597 +#: InvenTree/serializers.py:561 msgid "Select data file for upload" msgstr "Επιλέξτε ένα αρχείο για ανέβασμα" -#: InvenTree/serializers.py:614 +#: InvenTree/serializers.py:578 msgid "Unsupported file type" msgstr "Μη υποστηριζόμενος τύπος αρχείου" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:584 msgid "File is too large" msgstr "Το αρχείο είναι πολύ μεγάλο" -#: InvenTree/serializers.py:641 +#: InvenTree/serializers.py:605 msgid "No columns found in file" msgstr "Δεν βρέθηκαν στήλες στο αρχείο" -#: InvenTree/serializers.py:644 +#: InvenTree/serializers.py:608 msgid "No data rows found in file" msgstr "Δεν βρέθηκαν γραμμές δεδομένων στο αρχείο" -#: InvenTree/serializers.py:757 +#: InvenTree/serializers.py:721 msgid "No data rows provided" msgstr "Δεν παρασχέθηκαν σειρές δεδομένων" -#: InvenTree/serializers.py:760 +#: InvenTree/serializers.py:724 msgid "No data columns supplied" msgstr "Δεν δόθηκαν στήλες δεδομένων" -#: InvenTree/serializers.py:827 +#: InvenTree/serializers.py:791 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Λείπει απαιτούμενη στήλη: '{name}'" -#: InvenTree/serializers.py:836 +#: InvenTree/serializers.py:800 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Διπλή στήλη: '{col}'" -#: InvenTree/serializers.py:859 +#: InvenTree/serializers.py:840 msgid "Remote Image" msgstr "Απομακρυσμένες Εικόνες" -#: InvenTree/serializers.py:860 +#: InvenTree/serializers.py:841 msgid "URL of remote image file" msgstr "Διεύθυνση URL του αρχείου απομακρυσμένης εικόνας" -#: InvenTree/serializers.py:878 +#: InvenTree/serializers.py:859 msgid "Downloading images from remote URL is not enabled" msgstr "Η λήψη εικόνων από απομακρυσμένο URL δεν είναι ενεργοποιημένη" -#: InvenTree/status.py:66 part/serializers.py:1178 +#: InvenTree/status.py:66 part/serializers.py:1174 msgid "Background worker check failed" msgstr "Ο έλεγχος εργασίας στο παρασκήνιο απέτυχε" @@ -698,27 +606,27 @@ msgstr "Δεν έχει ρυθμιστεί διεύθυνση ηλεκτρονι msgid "InvenTree system health checks failed" msgstr "Ο έλεγχος συστήματος για το Inventree απέτυχε" -#: InvenTree/templatetags/inventree_extras.py:183 +#: InvenTree/templatetags/inventree_extras.py:184 msgid "Unknown database" msgstr "Άγνωστη βάση δεδομένων" -#: InvenTree/validators.py:31 InvenTree/validators.py:33 +#: InvenTree/validators.py:32 InvenTree/validators.py:34 msgid "Invalid physical unit" msgstr "Μη έγκυρη φυσική μονάδα" -#: InvenTree/validators.py:39 +#: InvenTree/validators.py:40 msgid "Not a valid currency code" msgstr "Μη έγκυρος κωδικός συναλλάγματος" -#: InvenTree/validators.py:121 InvenTree/validators.py:137 +#: InvenTree/validators.py:118 InvenTree/validators.py:134 msgid "Overage value must not be negative" msgstr "Η μέση τιμή δεν πρέπει να είναι αρνητική" -#: InvenTree/validators.py:139 +#: InvenTree/validators.py:136 msgid "Overage must not exceed 100%" msgstr "Η μέση τιμή δεν πρέπει να υπερβαίνει το 100%" -#: InvenTree/validators.py:145 +#: InvenTree/validators.py:142 msgid "Invalid value for overage" msgstr "Μη έγκυρη τιμή για υπέρβαση" @@ -750,14 +658,14 @@ msgstr "Σχετικά με το InvenTree" msgid "Build must be cancelled before it can be deleted" msgstr "Η έκδοση πρέπει να ακυρωθεί πριν διαγραφεί" -#: build/api.py:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: build/api.py:299 part/models.py:4070 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "Αναλώσιμο" -#: build/api.py:300 part/models.py:4084 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4064 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2529 #: templates/js/translated/table_filters.js:186 @@ -778,30 +686,30 @@ msgstr "Υπό παρακολούθηση" msgid "Allocated" msgstr "Κατανεμημένο" -#: build/api.py:311 company/models.py:904 company/serializers.py:383 +#: build/api.py:311 company/models.py:872 company/serializers.py:359 #: 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:2561 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:234 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 -#: templates/js/translated/part.js:699 +#: templates/js/translated/part.js:693 templates/js/translated/part.js:695 +#: templates/js/translated/part.js:700 #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:575 msgid "Available" msgstr "Διαθέσιμο" -#: build/models.py:83 build/templates/build/build_base.html:9 +#: build/models.py:85 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_report.html:105 -#: stock/serializers.py:83 templates/email/build_order_completed.html:16 +#: stock/serializers.py:82 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:2892 msgid "Build Order" msgstr "Σειρά Κατασκευής" -#: build/models.py:84 build/templates/build/build_base.html:13 +#: build/models.py:86 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 @@ -812,25 +720,25 @@ msgstr "Σειρά Κατασκευής" msgid "Build Orders" msgstr "Δημιουργία Παραγγελιών" -#: build/models.py:131 +#: build/models.py:133 msgid "Invalid choice for parent build" msgstr "Μη έγκυρη επιλογή για γονική κατασκευή" -#: build/models.py:142 order/models.py:240 +#: build/models.py:144 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "" -#: build/models.py:148 +#: build/models.py:150 msgid "Build order part cannot be changed" msgstr "Εξάρτημα από εντολή κατασκευής δεν μπορεί να αλλάξει" -#: build/models.py:209 +#: build/models.py:211 msgid "Build Order Reference" msgstr "Αναφορά Παραγγελίας Κατασκευής" -#: build/models.py:210 order/models.py:463 order/models.py:928 -#: order/models.py:1325 order/models.py:2056 part/admin.py:419 -#: part/models.py:4105 part/templates/part/upload_bom.html:54 +#: build/models.py:212 order/models.py:463 order/models.py:926 +#: order/models.py:1289 order/models.py:2020 part/admin.py:411 +#: part/models.py:4085 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_purchase_order_report.html:28 #: report/templates/report/inventree_return_order_report.html:26 @@ -844,27 +752,27 @@ msgstr "Αναφορά Παραγγελίας Κατασκευής" msgid "Reference" msgstr "Αναφορά" -#: build/models.py:221 +#: build/models.py:223 msgid "Brief description of the build (optional)" msgstr "Σύντομη περιγραφή της κατασκευής (προαιρετικό)" -#: build/models.py:229 build/templates/build/build_base.html:183 +#: build/models.py:231 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Γονική Κατασκευή" -#: build/models.py:230 +#: build/models.py:232 msgid "BuildOrder to which this build is allocated" msgstr "BuildOrder στην οποία έχει δοθεί αυτή η κατασκευή" -#: build/models.py:235 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 -#: order/models.py:1450 order/models.py:1595 order/models.py:1596 -#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 -#: part/models.py:3191 part/models.py:3335 part/models.py:3358 -#: part/models.py:3379 part/models.py:3401 part/models.py:3511 -#: part/models.py:3807 part/models.py:3963 part/models.py:4056 -#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 +#: build/models.py:237 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1026 order/api.py:805 +#: order/models.py:1414 order/models.py:1559 order/models.py:1560 +#: part/api.py:1494 part/api.py:1788 part/models.py:395 part/models.py:3012 +#: part/models.py:3156 part/models.py:3303 part/models.py:3324 +#: part/models.py:3346 part/models.py:3477 part/models.py:3787 +#: part/models.py:3943 part/models.py:4036 part/models.py:4395 +#: part/serializers.py:1120 part/serializers.py:1726 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -875,8 +783,8 @@ msgstr "BuildOrder στην οποία έχει δοθεί αυτή η κατα #: report/templates/report/inventree_return_order_report.html:24 #: report/templates/report/inventree_sales_order_report.html:27 #: report/templates/report/inventree_stock_location_report.html:102 -#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 -#: stock/serializers.py:818 templates/InvenTree/search.html:82 +#: stock/serializers.py:109 stock/serializers.py:157 stock/serializers.py:423 +#: stock/serializers.py:820 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 @@ -889,8 +797,8 @@ msgstr "BuildOrder στην οποία έχει δοθεί αυτή η κατα #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 -#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2323 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:1944 templates/js/translated/part.js:2016 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 #: templates/js/translated/purchase_order.js:751 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1848 @@ -908,107 +816,107 @@ msgstr "BuildOrder στην οποία έχει δοθεί αυτή η κατα msgid "Part" msgstr "Εξάρτημα" -#: build/models.py:243 +#: build/models.py:245 msgid "Select part to build" msgstr "Επιλέξτε τμήμα για κατασκευή" -#: build/models.py:248 +#: build/models.py:250 msgid "Sales Order Reference" msgstr "Κωδικός Παραγγελίας Πωλήσεων" -#: build/models.py:252 +#: build/models.py:254 msgid "SalesOrder to which this build is allocated" msgstr "SalesOrder στην οποία έχει διατεθεί αυτό το build" -#: build/models.py:257 build/serializers.py:1000 +#: build/models.py:259 build/serializers.py:999 #: templates/js/translated/build.js:1731 #: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "Τοποθεσία Προέλευσης" -#: build/models.py:261 +#: build/models.py:263 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "Επιλέξτε τοποθεσία από την οποία θα γίνει απόθεμα, για αυτή την κατασκευή (αφήστε κενό για να πάρετε από οποιαδήποτε θέση αποθήκευσης)" -#: build/models.py:266 +#: build/models.py:268 msgid "Destination Location" msgstr "Τοποθεσία Προορισμού" -#: build/models.py:270 +#: build/models.py:272 msgid "Select location where the completed items will be stored" msgstr "Επιλέξτε την τοποθεσία όπου θα αποθηκευτούν τα ολοκληρωμένα στοιχεία" -#: build/models.py:274 +#: build/models.py:276 msgid "Build Quantity" msgstr "Ποσότητα Κατασκευής" -#: build/models.py:277 +#: build/models.py:279 msgid "Number of stock items to build" msgstr "Αριθμός αντικειμένων για κατασκευή" -#: build/models.py:281 +#: build/models.py:283 msgid "Completed items" msgstr "Ολοκληρωμένα αντικείμενα" -#: build/models.py:283 +#: build/models.py:285 msgid "Number of stock items which have been completed" msgstr "Αριθμός αντικειμένων αποθέματος που έχουν ολοκληρωθεί" -#: build/models.py:287 +#: build/models.py:289 msgid "Build Status" msgstr "Κατάσταση Κατασκευής" -#: build/models.py:291 +#: build/models.py:293 msgid "Build status code" msgstr "Κωδικός κατάστασης κατασκευής" -#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 -#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 +#: build/models.py:302 build/serializers.py:286 order/serializers.py:580 +#: stock/models.py:838 stock/serializers.py:74 stock/serializers.py:1458 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Κωδικός Παρτίδας" -#: build/models.py:304 build/serializers.py:288 +#: build/models.py:306 build/serializers.py:287 msgid "Batch code for this build output" msgstr "Κωδικός παρτίδας για αυτήν την κατασκευή" -#: build/models.py:307 order/models.py:316 order/serializers.py:120 -#: part/models.py:1122 part/templates/part/part_base.html:310 +#: build/models.py:309 order/models.py:316 order/serializers.py:119 +#: part/models.py:1115 part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:338 #: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "Ημερομηνία Δημιουργίας" -#: build/models.py:311 +#: build/models.py:313 msgid "Target completion date" msgstr "Ημερομηνία ολοκλήρωσης στόχου" -#: build/models.py:312 +#: build/models.py:314 msgid "Target date for build completion. Build will be overdue after this date." msgstr "Ημερομηνία ολοκλήρωσης της κατασκευής. Η κατασκευή θα καθυστερήσει μετά από αυτή την ημερομηνία." -#: build/models.py:315 order/models.py:521 order/models.py:2101 +#: build/models.py:317 order/models.py:521 order/models.py:2065 #: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "Ημερομηνία ολοκλήρωσης" -#: build/models.py:321 +#: build/models.py:323 msgid "completed by" msgstr "ολοκληρώθηκε από" -#: build/models.py:329 templates/js/translated/build.js:2207 +#: build/models.py:331 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "Εκδόθηκε από" -#: build/models.py:330 +#: build/models.py:332 msgid "User who issued this build order" msgstr "Χρήστης που εξέδωσε αυτήν την παραγγελία κατασκευής" -#: build/models.py:338 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:145 +#: build/models.py:340 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:147 #: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:232 part/models.py:1139 +#: order/templates/order/sales_order_base.html:232 part/models.py:1132 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_report.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 @@ -1019,31 +927,36 @@ msgstr "Χρήστης που εξέδωσε αυτήν την παραγγελ msgid "Responsible" msgstr "Υπεύθυνος" -#: build/models.py:339 +#: build/models.py:341 msgid "User or group responsible for this build order" msgstr "Χρήστης ή ομάδα υπεύθυνη για αυτή την εντολή κατασκευής" -#: build/models.py:344 build/templates/build/detail.html:108 +#: build/models.py:346 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:184 -#: part/templates/part/part_base.html:383 stock/models.py:836 +#: part/templates/part/part_base.html:383 stock/models.py:834 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "Εξωτερικοί σύνδεσμοι" -#: build/models.py:349 +#: build/models.py:347 common/models.py:3178 part/models.py:956 +#: stock/models.py:834 +msgid "Link to external URL" +msgstr "Σύνδεσμος προς εξωτερική διεύθυνση URL" + +#: build/models.py:351 msgid "Build Priority" msgstr "Προτεραιότητα Κατασκευής" -#: build/models.py:352 +#: build/models.py:354 msgid "Priority of this build order" msgstr "Προτεραιότητα αυτής της εντολής κατασκευής" -#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: build/models.py:361 common/models.py:131 order/admin.py:18 #: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 #: templates/js/translated/build.js:2144 #: templates/js/translated/purchase_order.js:1710 @@ -1054,65 +967,65 @@ msgstr "Προτεραιότητα αυτής της εντολής κατασκ msgid "Project Code" msgstr "Κωδικός Έργου" -#: build/models.py:360 +#: build/models.py:362 msgid "Project code for this build order" msgstr "Κωδικός έργου για αυτήν την εντολή κατασκευής" -#: build/models.py:593 build/models.py:658 +#: build/models.py:595 build/models.py:660 msgid "Failed to offload task to complete build allocations" msgstr "" -#: build/models.py:615 +#: build/models.py:617 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Η παραγγελία κατασκευής {build} έχει ολοκληρωθεί" -#: build/models.py:621 +#: build/models.py:623 msgid "A build order has been completed" msgstr "Η παραγγελία κατασκευής έχει ολοκληρωθεί" -#: build/models.py:847 build/models.py:932 +#: build/models.py:849 build/models.py:934 msgid "No build output specified" msgstr "Δεν καθορίστηκε έξοδος κατασκευής" -#: build/models.py:850 +#: build/models.py:852 msgid "Build output is already completed" msgstr "Η παραγγελία κατασκευής έχει ολοκληρωθεί" -#: build/models.py:853 +#: build/models.py:855 msgid "Build output does not match Build Order" msgstr "Η έξοδος κατασκευής δεν ταιριάζει με την παραγγελία κατασκευής" -#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 -#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 -#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 -#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 +#: build/models.py:938 build/serializers.py:219 build/serializers.py:268 +#: build/serializers.py:866 order/models.py:559 order/serializers.py:432 +#: order/serializers.py:575 part/serializers.py:1484 part/serializers.py:1884 +#: stock/models.py:677 stock/models.py:1495 stock/serializers.py:603 msgid "Quantity must be greater than zero" msgstr "Η ποσότητα πρέπει να είναι μεγαλύτερη από 0" -#: build/models.py:941 build/serializers.py:225 +#: build/models.py:943 build/serializers.py:224 msgid "Quantity cannot be greater than the output quantity" msgstr "Η ποσότητα δεν μπορεί να είναι μεγαλύτερη από την παραγόμενη ποσότητα" -#: build/models.py:1001 build/serializers.py:548 +#: build/models.py:1003 build/serializers.py:547 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "Το προϊόν κατασκευής {serial} δεν έχει περάσει όλες τις απαιτούμενες δοκιμές" -#: build/models.py:1352 +#: build/models.py:1344 msgid "Build Order Line Item" msgstr "" -#: build/models.py:1377 +#: build/models.py:1369 msgid "Build object" msgstr "Αντικείμενο κατασκευής" -#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 -#: build/serializers.py:254 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2539 -#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 -#: part/forms.py:48 part/models.py:3205 part/models.py:4078 +#: build/models.py:1383 build/models.py:1639 build/serializers.py:206 +#: build/serializers.py:253 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2509 +#: order/models.py:1272 order/models.py:1931 order/serializers.py:1327 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3170 part/models.py:4058 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1121,8 +1034,8 @@ msgstr "Αντικείμενο κατασκευής" #: report/templates/report/inventree_sales_order_report.html:29 #: report/templates/report/inventree_stock_location_report.html:104 #: report/templates/report/inventree_test_report.html:90 -#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 -#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:125 stock/serializers.py:165 stock/serializers.py:594 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1133,8 +1046,8 @@ msgstr "Αντικείμενο κατασκευής" #: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 #: templates/js/translated/model_renderers.js:236 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:962 +#: templates/js/translated/part.js:1812 templates/js/translated/part.js:3342 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1154,38 +1067,38 @@ msgstr "Αντικείμενο κατασκευής" msgid "Quantity" msgstr "Ποσότητα" -#: build/models.py:1392 +#: build/models.py:1384 msgid "Required quantity for build order" msgstr "Απαιτούμενη ποσότητα για την εντολή κατασκευής" -#: build/models.py:1472 +#: build/models.py:1464 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "Το στοιχείο κατασκευής πρέπει να ορίζει μια έξοδο κατασκευής, καθώς το κύριο τμήμα επισημαίνεται ως ανιχνεύσιμο" -#: build/models.py:1481 +#: build/models.py:1473 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "Η καταχωρημένη ποσότητα ({q}) δεν πρέπει να υπερβαίνει τη διαθέσιμη ποσότητα αποθέματος ({a})" -#: build/models.py:1491 order/models.py:1918 +#: build/models.py:1483 order/models.py:1882 msgid "Stock item is over-allocated" msgstr "Στοιχείο αποθέματος είναι υπερ-κατανεμημένο" -#: build/models.py:1497 order/models.py:1921 +#: build/models.py:1489 order/models.py:1885 msgid "Allocation quantity must be greater than zero" msgstr "Η ποσότητα πρέπει να είναι μεγαλύτερη από 0" -#: build/models.py:1503 +#: build/models.py:1495 msgid "Quantity must be 1 for serialized stock" msgstr "Η ποσότητα πρέπει να είναι 1 για σειριακό απόθεμα" -#: build/models.py:1562 +#: build/models.py:1554 msgid "Selected stock item does not match BOM line" msgstr "Το επιλεγμένο στοιχείο αποθέματος δεν ταιριάζει με τη γραμμή ΤΥ" -#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 -#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 -#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: build/models.py:1626 build/serializers.py:846 order/serializers.py:1171 +#: order/serializers.py:1192 stock/models.py:358 stock/serializers.py:91 +#: stock/serializers.py:697 stock/serializers.py:1177 stock/serializers.py:1289 #: stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 @@ -1201,70 +1114,70 @@ msgstr "Το επιλεγμένο στοιχείο αποθέματος δεν msgid "Stock Item" msgstr "Στοιχείο Αποθέματος" -#: build/models.py:1635 +#: build/models.py:1627 msgid "Source stock item" msgstr "Στοιχείο πηγαίου αποθέματος" -#: build/models.py:1648 +#: build/models.py:1640 msgid "Stock quantity to allocate to build" msgstr "Ποσότητα αποθέματος για διάθεση για κατασκευή" -#: build/models.py:1656 +#: build/models.py:1648 msgid "Install into" msgstr "Εγκατάσταση σε" -#: build/models.py:1657 +#: build/models.py:1649 msgid "Destination stock item" msgstr "Αποθήκη προορισμού" -#: build/serializers.py:157 build/serializers.py:876 +#: build/serializers.py:156 build/serializers.py:875 #: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "Κατασκευή Εξόδου" -#: build/serializers.py:169 +#: build/serializers.py:168 msgid "Build output does not match the parent build" msgstr "Η έξοδος κατασκευής δεν ταιριάζει με την παραγγελία κατασκευής" -#: build/serializers.py:173 +#: build/serializers.py:172 msgid "Output part does not match BuildOrder part" msgstr "Το εξερχόμενο μέρος δεν ταιριάζει με το μέρος BuildOrder" -#: build/serializers.py:177 +#: build/serializers.py:176 msgid "This build output has already been completed" msgstr "Η παραγγελία κατασκευής έχει ολοκληρωθεί" -#: build/serializers.py:188 +#: build/serializers.py:187 msgid "This build output is not fully allocated" msgstr "Αυτή η έξοδος κατασκευής δεν έχει εκχωρηθεί πλήρως" -#: build/serializers.py:208 build/serializers.py:255 +#: build/serializers.py:207 build/serializers.py:254 msgid "Enter quantity for build output" msgstr "Εισάγετε ποσότητα για την έξοδο κατασκευής" -#: build/serializers.py:276 +#: build/serializers.py:275 msgid "Integer quantity required for trackable parts" msgstr "Ακέραιη ποσότητα που απαιτείται για ανιχνεύσιμα μέρη" -#: build/serializers.py:279 +#: build/serializers.py:278 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "Ακέραιη ποσότητα που απαιτείται, καθώς ο λογαριασμός των υλικών περιέχει ανιχνεύσιμα μέρη" -#: build/serializers.py:294 order/serializers.py:589 order/serializers.py:1343 -#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:293 order/serializers.py:588 order/serializers.py:1331 +#: stock/serializers.py:614 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Σειριακοί αριθμοί" -#: build/serializers.py:295 +#: build/serializers.py:294 msgid "Enter serial numbers for build outputs" msgstr "Εισάγετε ποσότητα για την έξοδο κατασκευής" -#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 -#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 -#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 -#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 -#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 +#: build/serializers.py:299 build/serializers.py:440 build/serializers.py:512 +#: order/serializers.py:564 order/serializers.py:672 order/serializers.py:1656 +#: part/serializers.py:1140 stock/serializers.py:100 stock/serializers.py:625 +#: stock/serializers.py:785 stock/serializers.py:881 stock/serializers.py:1321 +#: stock/serializers.py:1577 stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:1001 #: templates/js/translated/build.js:2372 @@ -1280,54 +1193,54 @@ msgstr "Εισάγετε ποσότητα για την έξοδο κατασκ msgid "Location" msgstr "Τοποθεσία" -#: build/serializers.py:301 +#: build/serializers.py:300 msgid "Stock location for build output" msgstr "" -#: build/serializers.py:315 +#: build/serializers.py:314 msgid "Auto Allocate Serial Numbers" msgstr "Αυτόματη Κατανομή Σειριακών Αριθμών" -#: build/serializers.py:316 +#: build/serializers.py:315 msgid "Automatically allocate required items with matching serial numbers" msgstr "Αυτόματη κατανομή των απαιτούμενων στοιχείων με τους αντίστοιχους σειριακούς αριθμούς" -#: build/serializers.py:331 +#: build/serializers.py:330 msgid "Serial numbers must be provided for trackable parts" msgstr "" -#: build/serializers.py:356 stock/api.py:1031 +#: build/serializers.py:355 stock/api.py:1041 msgid "The following serial numbers already exist or are invalid" msgstr "Οι παρακάτω σειριακοί αριθμοί υπάρχουν ήδη ή δεν είναι έγκυροι" -#: build/serializers.py:403 build/serializers.py:465 build/serializers.py:554 +#: build/serializers.py:402 build/serializers.py:464 build/serializers.py:553 msgid "A list of build outputs must be provided" msgstr "Πρέπει να παρέχεται μια λίστα με τα αποτελέσματα κατασκευής" -#: build/serializers.py:442 +#: build/serializers.py:441 msgid "Stock location for scrapped outputs" msgstr "Θέση αποθέματος για απορριφθείσες παραγωγές" -#: build/serializers.py:448 +#: build/serializers.py:447 msgid "Discard Allocations" msgstr "Απόρριψη Κατανομών" -#: build/serializers.py:449 +#: build/serializers.py:448 msgid "Discard any stock allocations for scrapped outputs" msgstr "Απορρίψτε τυχόν κατανομές αποθέματος για παραγωγές που έχουν απορριφθεί" -#: build/serializers.py:454 +#: build/serializers.py:453 msgid "Reason for scrapping build output(s)" msgstr "Αιτία απόρριψης προϊόντων κατασκευής" -#: build/serializers.py:514 +#: build/serializers.py:513 msgid "Location for completed build outputs" msgstr "Τοποθεσία για ολοκληρωμένα προϊόντα κατασκευής" -#: build/serializers.py:520 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:952 -#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 -#: stock/serializers.py:930 stock/serializers.py:1469 +#: build/serializers.py:519 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2044 order/serializers.py:596 stock/admin.py:164 +#: stock/serializers.py:932 stock/serializers.py:1465 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 @@ -1339,188 +1252,188 @@ msgstr "Τοποθεσία για ολοκληρωμένα προϊόντα κα msgid "Status" msgstr "Κατάσταση" -#: build/serializers.py:526 +#: build/serializers.py:525 msgid "Accept Incomplete Allocation" msgstr "Αποδοχή Ελλιπούς Δέσμευσης" -#: build/serializers.py:527 +#: build/serializers.py:526 msgid "Complete outputs if stock has not been fully allocated" msgstr "Ολοκλήρωσε τα προϊόντα εάν το απόθεμα δεν έχει δεσμευτεί πλήρως" -#: build/serializers.py:612 +#: build/serializers.py:611 msgid "Consume Allocated Stock" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:612 msgid "Consume any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:619 +#: build/serializers.py:618 msgid "Remove Incomplete Outputs" msgstr "Αφαίρεση Ατελείωτων Προϊόντων" -#: build/serializers.py:620 +#: build/serializers.py:619 msgid "Delete any build outputs which have not been completed" msgstr "Διαγράψτε τυχόν προϊόντα κατασκευής που δεν έχουν ολοκληρωθεί" -#: build/serializers.py:647 +#: build/serializers.py:646 msgid "Not permitted" msgstr "Δεν επιτρέπεται" -#: build/serializers.py:648 +#: build/serializers.py:647 msgid "Accept as consumed by this build order" msgstr "Αποδοχή ως κατανάλωση για αυτή την παραγγελία κατασκευής" -#: build/serializers.py:649 +#: build/serializers.py:648 msgid "Deallocate before completing this build order" msgstr "Αποδέσμευση πριν από την ολοκλήρωση αυτής της παραγγελίας κατασκευής" -#: build/serializers.py:679 +#: build/serializers.py:678 msgid "Overallocated Stock" msgstr "Υπερ-δεσμευμένο Απόθεμα" -#: build/serializers.py:681 +#: build/serializers.py:680 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "Πώς θέλετε να χειριστείτε το επιπλέον απόθεμα που έχει δεσμευτεί στην παραγγελία κατασκευής" -#: build/serializers.py:691 +#: build/serializers.py:690 msgid "Some stock items have been overallocated" msgstr "Μερικά στοιχεία αποθέματος έχουν υπερ-δεσμευτεί" -#: build/serializers.py:696 +#: build/serializers.py:695 msgid "Accept Unallocated" msgstr "Αποδοχή Μη Δεσμευμένων" -#: build/serializers.py:697 +#: build/serializers.py:696 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "Αποδεχτείτε ότι αντικείμενα αποθέματος δεν έχουν δεσμευτεί πλήρως σε αυτή την παραγγελία κατασκευής" -#: build/serializers.py:707 templates/js/translated/build.js:315 +#: build/serializers.py:706 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "Το απαιτούμενο απόθεμα δεν έχει δεσμευτεί πλήρως" -#: build/serializers.py:712 order/serializers.py:301 order/serializers.py:1246 +#: build/serializers.py:711 order/serializers.py:300 order/serializers.py:1234 msgid "Accept Incomplete" msgstr "Αποδοχή Μη Ολοκληρωμένων" -#: build/serializers.py:713 +#: build/serializers.py:712 msgid "Accept that the required number of build outputs have not been completed" msgstr "Αποδεχτείτε ότι ο απαιτούμενος αριθμός προϊόντων κατασκευής δεν έχει ολοκληρωθεί" -#: build/serializers.py:723 templates/js/translated/build.js:319 +#: build/serializers.py:722 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "Ο απαιτούμενος αριθμός προϊόντων δεν έχει ολοκληρωθεί" -#: build/serializers.py:732 templates/js/translated/build.js:303 +#: build/serializers.py:731 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "Η παραγγελία κατασκευής έχει ελλιπή προϊόντα" -#: build/serializers.py:770 +#: build/serializers.py:769 msgid "Build Line" msgstr "Γραμμή Κατασκευής" -#: build/serializers.py:780 +#: build/serializers.py:779 msgid "Build output" msgstr "Προϊόν Κατασκευής" -#: build/serializers.py:788 +#: build/serializers.py:787 msgid "Build output must point to the same build" msgstr "Το προϊόν κατασκευής πρέπει να δείχνει στην ίδια κατασκευή" -#: build/serializers.py:824 +#: build/serializers.py:823 msgid "Build Line Item" msgstr "Αντικείμενο Γραμμής Κατασκευής" -#: build/serializers.py:838 +#: build/serializers.py:837 msgid "bom_item.part must point to the same part as the build order" msgstr "bom_item.part πρέπει να δείχνει στο ίδιο εξάρτημα με τη εντολή κατασκευής" -#: build/serializers.py:853 stock/serializers.py:1194 +#: build/serializers.py:852 stock/serializers.py:1190 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:901 order/serializers.py:1237 +#: build/serializers.py:900 order/serializers.py:1225 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:907 +#: build/serializers.py:906 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:914 +#: build/serializers.py:913 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:938 order/serializers.py:1489 +#: build/serializers.py:937 order/serializers.py:1477 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:1001 +#: build/serializers.py:1000 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:1009 +#: build/serializers.py:1008 msgid "Exclude Location" msgstr "" -#: build/serializers.py:1010 +#: build/serializers.py:1009 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:1015 +#: build/serializers.py:1014 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:1016 +#: build/serializers.py:1015 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:1021 +#: build/serializers.py:1020 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:1022 +#: build/serializers.py:1021 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:1027 +#: build/serializers.py:1026 msgid "Optional Items" msgstr "" -#: build/serializers.py:1028 +#: build/serializers.py:1027 msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1050 +#: build/serializers.py:1049 msgid "Failed to start auto-allocation task" msgstr "" -#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 -#: stock/api.py:794 +#: build/serializers.py:1139 part/models.py:3953 part/models.py:4387 +#: stock/api.py:804 msgid "BOM Item" msgstr "" -#: build/serializers.py:1149 templates/js/translated/index.js:130 +#: build/serializers.py:1148 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:832 part/serializers.py:1506 +#: build/serializers.py:1153 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:828 part/serializers.py:1502 #: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 -#: templates/js/translated/build.js:2613 templates/js/translated/part.js:709 -#: templates/js/translated/part.js:2148 +#: templates/js/translated/build.js:2613 templates/js/translated/part.js:710 +#: templates/js/translated/part.js:2149 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1159 part/serializers.py:1508 +#: build/serializers.py:1158 part/serializers.py:1504 #: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 +#: build/serializers.py:1163 part/bom.py:172 part/serializers.py:1527 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1929 msgid "Available Stock" @@ -1544,7 +1457,7 @@ msgstr "Ακυρώθηκε" #: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 #: order/status_codes.py:44 order/status_codes.py:69 #: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:165 report/models.py:443 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 msgid "Complete" msgstr "Ολοκληρώθηκε" @@ -1674,11 +1587,11 @@ msgstr "Το Απόθεμα δεν έχει κατανεμηθεί πλήρως #: build/templates/build/build_base.html:160 #: build/templates/build/detail.html:138 order/models.py:309 -#: order/models.py:1343 order/templates/order/order_base.html:186 +#: order/models.py:1307 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:196 #: report/templates/report/inventree_build_order_report.html:125 -#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1831 #: templates/js/translated/purchase_order.js:1739 #: templates/js/translated/purchase_order.js:2147 #: templates/js/translated/return_order.js:346 @@ -1711,8 +1624,8 @@ msgid "Completed Outputs" msgstr "Ολοκληρωμένα Προϊόντα" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 -#: order/models.py:1587 order/models.py:1701 order/models.py:1855 +#: build/templates/build/detail.html:101 order/api.py:1463 order/models.py:845 +#: order/models.py:1551 order/models.py:1665 order/models.py:1819 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_report.html:135 @@ -1762,7 +1675,7 @@ msgstr "Προέλευση Αποθέματος" msgid "Stock can be taken from any available location." msgstr "Το απόθεμα μπορεί να ληφθεί από οποιαδήποτε διαθέσιμη τοποθεσία." -#: build/templates/build/detail.html:49 order/models.py:1479 +#: build/templates/build/detail.html:49 order/models.py:1443 #: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "Προορισμός" @@ -1775,7 +1688,7 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:163 +#: build/templates/build/detail.html:80 stock/admin.py:162 #: stock/templates/stock/item_base.html:162 #: templates/js/translated/build.js:1380 #: templates/js/translated/model_renderers.js:241 @@ -1894,11 +1807,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:436 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -1914,6 +1827,34 @@ msgstr "" msgid "Incomplete Outputs" msgstr "" +#: common/api.py:689 +msgid "Is Link" +msgstr "" + +#: common/api.py:697 +msgid "Is File" +msgstr "" + +#: common/api.py:739 +msgid "User does not have permission to delete this attachment" +msgstr "" + +#: common/currency.py:130 +msgid "Invalid currency code" +msgstr "" + +#: common/currency.py:132 +msgid "Duplicate currency code" +msgstr "" + +#: common/currency.py:137 +msgid "No valid currency codes provided" +msgstr "" + +#: common/currency.py:154 +msgid "No plugin" +msgstr "" + #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1952,1509 +1893,1512 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:71 +#: common/models.py:73 msgid "Updated" msgstr "" -#: common/models.py:72 +#: common/models.py:74 msgid "Timestamp of last update" msgstr "" -#: common/models.py:105 +#: common/models.py:107 msgid "Site URL is locked by configuration" msgstr "" -#: common/models.py:130 +#: common/models.py:132 msgid "Unique project code" msgstr "" -#: common/models.py:137 +#: common/models.py:139 msgid "Project description" msgstr "" -#: common/models.py:146 +#: common/models.py:148 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:766 +#: common/models.py:765 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:770 +#: common/models.py:769 msgid "Settings value" msgstr "" -#: common/models.py:822 +#: common/models.py:821 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:838 +#: common/models.py:837 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:846 +#: common/models.py:845 msgid "Value must be an integer value" msgstr "" -#: common/models.py:883 +#: common/models.py:882 msgid "Key string must be unique" msgstr "" -#: common/models.py:1115 +#: common/models.py:1114 msgid "No group" msgstr "" -#: common/models.py:1158 -msgid "An empty domain is not allowed." -msgstr "" - -#: common/models.py:1160 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "" - -#: common/models.py:1172 -msgid "No plugin" -msgstr "" - -#: common/models.py:1260 +#: common/models.py:1213 msgid "Restart required" msgstr "" -#: common/models.py:1262 +#: common/models.py:1215 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1269 +#: common/models.py:1222 msgid "Pending migrations" msgstr "" -#: common/models.py:1270 +#: common/models.py:1223 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1275 +#: common/models.py:1228 msgid "Server Instance Name" msgstr "" -#: common/models.py:1277 +#: common/models.py:1230 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1281 +#: common/models.py:1234 msgid "Use instance name" msgstr "" -#: common/models.py:1282 +#: common/models.py:1235 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1287 +#: common/models.py:1240 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1288 +#: common/models.py:1241 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1293 company/models.py:108 company/models.py:109 +#: common/models.py:1246 company/models.py:111 company/models.py:112 msgid "Company name" msgstr "" -#: common/models.py:1294 +#: common/models.py:1247 msgid "Internal company name" msgstr "" -#: common/models.py:1298 +#: common/models.py:1251 msgid "Base URL" msgstr "" -#: common/models.py:1299 +#: common/models.py:1252 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1305 +#: common/models.py:1258 msgid "Default Currency" msgstr "" -#: common/models.py:1306 +#: common/models.py:1259 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1312 +#: common/models.py:1265 +msgid "Supported Currencies" +msgstr "" + +#: common/models.py:1266 +msgid "List of supported currency codes" +msgstr "" + +#: common/models.py:1272 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1314 +#: common/models.py:1274 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1317 common/models.py:1373 common/models.py:1386 -#: common/models.py:1394 common/models.py:1403 common/models.py:1412 -#: common/models.py:1620 common/models.py:1642 common/models.py:1757 -#: common/models.py:2076 +#: common/models.py:1277 common/models.py:1333 common/models.py:1346 +#: common/models.py:1354 common/models.py:1363 common/models.py:1372 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:2046 msgid "days" msgstr "" -#: common/models.py:1321 +#: common/models.py:1281 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1322 +#: common/models.py:1282 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1327 +#: common/models.py:1287 msgid "Download from URL" msgstr "" -#: common/models.py:1329 +#: common/models.py:1289 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1335 +#: common/models.py:1295 msgid "Download Size Limit" msgstr "" -#: common/models.py:1336 +#: common/models.py:1296 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1342 +#: common/models.py:1302 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1344 +#: common/models.py:1304 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:1349 +#: common/models.py:1309 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1350 +#: common/models.py:1310 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1355 +#: common/models.py:1315 msgid "Require confirm" msgstr "" -#: common/models.py:1356 +#: common/models.py:1316 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1361 +#: common/models.py:1321 msgid "Tree Depth" msgstr "" -#: common/models.py:1363 +#: common/models.py:1323 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1369 +#: common/models.py:1329 msgid "Update Check Interval" msgstr "" -#: common/models.py:1370 +#: common/models.py:1330 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1376 +#: common/models.py:1336 msgid "Automatic Backup" msgstr "" -#: common/models.py:1377 +#: common/models.py:1337 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1382 +#: common/models.py:1342 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1383 +#: common/models.py:1343 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1389 +#: common/models.py:1349 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1391 +#: common/models.py:1351 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1398 +#: common/models.py:1358 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1400 +#: common/models.py:1360 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1407 +#: common/models.py:1367 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1409 +#: common/models.py:1369 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1416 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1376 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1417 +#: common/models.py:1377 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1422 +#: common/models.py:1382 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1423 +#: common/models.py:1383 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1429 +#: common/models.py:1389 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1430 +#: common/models.py:1390 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1435 +#: common/models.py:1395 msgid "Part Revisions" msgstr "" -#: common/models.py:1436 +#: common/models.py:1396 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1441 +#: common/models.py:1401 msgid "Allow Deletion from Assembly" msgstr "" -#: common/models.py:1442 +#: common/models.py:1402 msgid "Allow deletion of parts which are used in an assembly" msgstr "" -#: common/models.py:1447 +#: common/models.py:1407 msgid "IPN Regex" msgstr "" -#: common/models.py:1448 +#: common/models.py:1408 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1451 +#: common/models.py:1411 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1452 +#: common/models.py:1412 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1457 +#: common/models.py:1417 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1458 +#: common/models.py:1418 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1463 +#: common/models.py:1423 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1464 +#: common/models.py:1424 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1469 +#: common/models.py:1429 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1470 +#: common/models.py:1430 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1475 +#: common/models.py:1435 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1476 +#: common/models.py:1436 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1481 +#: common/models.py:1441 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1482 +#: common/models.py:1442 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1487 part/admin.py:108 part/models.py:3815 -#: report/models.py:293 report/models.py:360 report/serializers.py:90 -#: report/serializers.py:131 stock/serializers.py:228 +#: common/models.py:1447 part/admin.py:108 part/models.py:3795 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:227 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1488 +#: common/models.py:1448 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 +#: common/models.py:1453 part/admin.py:91 part/admin.py:425 part/models.py:1052 #: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" msgstr "" -#: common/models.py:1494 +#: common/models.py:1454 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1499 part/admin.py:95 part/models.py:1065 +#: common/models.py:1459 part/admin.py:95 part/models.py:1058 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1500 +#: common/models.py:1460 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1505 part/admin.py:100 part/models.py:1077 +#: common/models.py:1465 part/admin.py:100 part/models.py:1070 msgid "Purchaseable" msgstr "" -#: common/models.py:1506 +#: common/models.py:1466 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1511 part/admin.py:104 part/models.py:1083 +#: common/models.py:1471 part/admin.py:104 part/models.py:1076 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1512 +#: common/models.py:1472 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1517 part/admin.py:113 part/models.py:1071 +#: common/models.py:1477 part/admin.py:113 part/models.py:1064 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" msgstr "" -#: common/models.py:1518 +#: common/models.py:1478 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1523 part/admin.py:117 part/models.py:1093 +#: common/models.py:1483 part/admin.py:117 part/models.py:1086 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" msgstr "" -#: common/models.py:1524 +#: common/models.py:1484 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1529 +#: common/models.py:1489 msgid "Show Import in Views" msgstr "" -#: common/models.py:1530 +#: common/models.py:1490 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1535 +#: common/models.py:1495 msgid "Show related parts" msgstr "" -#: common/models.py:1536 +#: common/models.py:1496 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1541 +#: common/models.py:1501 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1542 +#: common/models.py:1502 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1547 templates/js/translated/part.js:107 +#: common/models.py:1507 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1549 +#: common/models.py:1509 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1555 +#: common/models.py:1515 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1556 +#: common/models.py:1516 msgid "Format to display the part name" msgstr "" -#: common/models.py:1562 +#: common/models.py:1522 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1563 +#: common/models.py:1523 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1567 +#: common/models.py:1527 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1569 +#: common/models.py:1529 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1575 +#: common/models.py:1535 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1577 +#: common/models.py:1537 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1583 +#: common/models.py:1548 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1585 +#: common/models.py:1550 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1591 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1593 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1599 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1601 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1607 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1609 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1615 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1617 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1630 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1632 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1638 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1640 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1647 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1648 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1653 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1655 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1661 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1662 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1667 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1669 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1675 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1676 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1681 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1682 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1687 +#: common/models.py:1657 msgid "Log Report Errors" msgstr "" -#: common/models.py:1688 +#: common/models.py:1658 msgid "Log errors which occur when generating reports" msgstr "" -#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:301 +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:302 msgid "Page Size" msgstr "" -#: common/models.py:1694 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1699 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1700 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1705 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1707 +#: common/models.py:1677 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1713 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1714 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1719 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1720 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1725 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1727 +#: common/models.py:1697 msgid "Determines default behavior when a stock item is depleted" msgstr "" -#: common/models.py:1733 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1735 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1740 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1741 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1746 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1747 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1752 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1754 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1761 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1762 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1767 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1768 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1773 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1774 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1778 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1779 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1784 +#: common/models.py:1754 msgid "Check BOM when installing items" msgstr "" -#: common/models.py:1786 +#: common/models.py:1756 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "" -#: common/models.py:1792 +#: common/models.py:1762 msgid "Allow Out of Stock Transfer" msgstr "" -#: common/models.py:1794 +#: common/models.py:1764 msgid "Allow stock items which are not in stock to be transferred between stock locations" msgstr "" -#: common/models.py:1800 +#: common/models.py:1770 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1802 +#: common/models.py:1772 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1808 common/models.py:1836 common/models.py:1858 -#: common/models.py:1894 +#: common/models.py:1778 common/models.py:1806 common/models.py:1828 +#: common/models.py:1864 msgid "Require Responsible Owner" msgstr "" -#: common/models.py:1809 common/models.py:1837 common/models.py:1859 -#: common/models.py:1895 +#: common/models.py:1779 common/models.py:1807 common/models.py:1829 +#: common/models.py:1865 msgid "A responsible owner must be assigned to each order" msgstr "" -#: common/models.py:1814 +#: common/models.py:1784 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1816 +#: common/models.py:1786 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:1822 +#: common/models.py:1792 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1823 +#: common/models.py:1793 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1828 +#: common/models.py:1798 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1830 +#: common/models.py:1800 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1842 +#: common/models.py:1812 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1844 +#: common/models.py:1814 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1850 +#: common/models.py:1820 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1852 +#: common/models.py:1822 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1864 +#: common/models.py:1834 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1865 +#: common/models.py:1835 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1870 +#: common/models.py:1840 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1872 +#: common/models.py:1842 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1878 -#, fuzzy -#| msgid "A build order has been completed" +#: common/models.py:1848 msgid "Mark Shipped Orders as Complete" -msgstr "Η παραγγελία κατασκευής έχει ολοκληρωθεί" +msgstr "" -#: common/models.py:1880 +#: common/models.py:1850 msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" msgstr "" -#: common/models.py:1886 +#: common/models.py:1856 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1888 +#: common/models.py:1858 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1900 +#: common/models.py:1870 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1902 +#: common/models.py:1872 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1908 +#: common/models.py:1878 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1910 +#: common/models.py:1880 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1917 +#: common/models.py:1887 msgid "Enable password forgot" msgstr "" -#: common/models.py:1918 +#: common/models.py:1888 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1923 +#: common/models.py:1893 msgid "Enable registration" msgstr "" -#: common/models.py:1924 +#: common/models.py:1894 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1929 +#: common/models.py:1899 msgid "Enable SSO" msgstr "" -#: common/models.py:1930 +#: common/models.py:1900 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1935 +#: common/models.py:1905 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1937 +#: common/models.py:1907 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1943 +#: common/models.py:1913 msgid "Email required" msgstr "" -#: common/models.py:1944 +#: common/models.py:1914 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1949 +#: common/models.py:1919 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1951 +#: common/models.py:1921 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1957 +#: common/models.py:1927 msgid "Mail twice" msgstr "" -#: common/models.py:1958 +#: common/models.py:1928 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1963 +#: common/models.py:1933 msgid "Password twice" msgstr "" -#: common/models.py:1964 +#: common/models.py:1934 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1969 +#: common/models.py:1939 msgid "Allowed domains" msgstr "" -#: common/models.py:1971 +#: common/models.py:1941 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1977 +#: common/models.py:1947 msgid "Group on signup" msgstr "" -#: common/models.py:1978 +#: common/models.py:1948 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1983 +#: common/models.py:1953 msgid "Enforce MFA" msgstr "" -#: common/models.py:1984 +#: common/models.py:1954 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1989 +#: common/models.py:1959 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1991 +#: common/models.py:1961 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1999 +#: common/models.py:1969 msgid "Check for plugin updates" msgstr "" -#: common/models.py:2000 +#: common/models.py:1970 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:2006 +#: common/models.py:1976 msgid "Enable URL integration" msgstr "" -#: common/models.py:2007 +#: common/models.py:1977 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:2013 +#: common/models.py:1983 msgid "Enable navigation integration" msgstr "" -#: common/models.py:2014 +#: common/models.py:1984 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:2020 +#: common/models.py:1990 msgid "Enable app integration" msgstr "" -#: common/models.py:2021 +#: common/models.py:1991 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:2027 +#: common/models.py:1997 msgid "Enable schedule integration" msgstr "" -#: common/models.py:2028 +#: common/models.py:1998 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:2034 +#: common/models.py:2004 msgid "Enable event integration" msgstr "" -#: common/models.py:2035 +#: common/models.py:2005 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:2041 +#: common/models.py:2011 msgid "Enable project codes" msgstr "" -#: common/models.py:2042 +#: common/models.py:2012 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:2047 +#: common/models.py:2017 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:2049 +#: common/models.py:2019 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:2055 +#: common/models.py:2025 msgid "Exclude External Locations" msgstr "" -#: common/models.py:2057 +#: common/models.py:2027 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:2063 +#: common/models.py:2033 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:2065 +#: common/models.py:2035 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:2071 +#: common/models.py:2041 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:2073 +#: common/models.py:2043 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:2080 +#: common/models.py:2050 msgid "Display Users full names" msgstr "" -#: common/models.py:2081 +#: common/models.py:2051 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:2086 +#: common/models.py:2056 msgid "Enable Test Station Data" msgstr "" -#: common/models.py:2087 +#: common/models.py:2057 msgid "Enable test station data collection for test results" msgstr "" -#: common/models.py:2099 common/models.py:2509 +#: common/models.py:2069 common/models.py:2479 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2142 +#: common/models.py:2112 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2144 +#: common/models.py:2114 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2150 +#: common/models.py:2120 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2151 +#: common/models.py:2121 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2156 +#: common/models.py:2126 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2157 +#: common/models.py:2127 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2162 +#: common/models.py:2132 msgid "Show latest parts" msgstr "" -#: common/models.py:2163 +#: common/models.py:2133 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2168 +#: common/models.py:2138 msgid "Show invalid BOMs" msgstr "" -#: common/models.py:2169 +#: common/models.py:2139 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2174 +#: common/models.py:2144 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2175 +#: common/models.py:2145 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2180 +#: common/models.py:2150 msgid "Show low stock" msgstr "" -#: common/models.py:2181 +#: common/models.py:2151 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2186 +#: common/models.py:2156 msgid "Show depleted stock" msgstr "" -#: common/models.py:2187 +#: common/models.py:2157 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2192 +#: common/models.py:2162 msgid "Show needed stock" msgstr "" -#: common/models.py:2193 +#: common/models.py:2163 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2198 +#: common/models.py:2168 msgid "Show expired stock" msgstr "" -#: common/models.py:2199 +#: common/models.py:2169 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2204 +#: common/models.py:2174 msgid "Show stale stock" msgstr "" -#: common/models.py:2205 +#: common/models.py:2175 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2210 +#: common/models.py:2180 msgid "Show pending builds" msgstr "" -#: common/models.py:2211 +#: common/models.py:2181 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2216 +#: common/models.py:2186 msgid "Show overdue builds" msgstr "" -#: common/models.py:2217 +#: common/models.py:2187 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2222 +#: common/models.py:2192 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2223 +#: common/models.py:2193 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2228 +#: common/models.py:2198 msgid "Show overdue POs" msgstr "" -#: common/models.py:2229 +#: common/models.py:2199 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2234 +#: common/models.py:2204 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2235 +#: common/models.py:2205 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2240 +#: common/models.py:2210 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2241 +#: common/models.py:2211 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2246 +#: common/models.py:2216 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2247 +#: common/models.py:2217 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2252 +#: common/models.py:2222 msgid "Show News" msgstr "" -#: common/models.py:2253 +#: common/models.py:2223 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2258 +#: common/models.py:2228 msgid "Inline label display" msgstr "" -#: common/models.py:2260 +#: common/models.py:2230 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2266 +#: common/models.py:2236 msgid "Default label printer" msgstr "" -#: common/models.py:2268 +#: common/models.py:2238 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2274 +#: common/models.py:2244 msgid "Inline report display" msgstr "" -#: common/models.py:2276 +#: common/models.py:2246 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2282 +#: common/models.py:2252 msgid "Search Parts" msgstr "" -#: common/models.py:2283 +#: common/models.py:2253 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2288 +#: common/models.py:2258 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2289 +#: common/models.py:2259 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2294 +#: common/models.py:2264 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2295 +#: common/models.py:2265 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2300 +#: common/models.py:2270 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2301 +#: common/models.py:2271 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2306 +#: common/models.py:2276 msgid "Search Categories" msgstr "" -#: common/models.py:2307 +#: common/models.py:2277 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2312 +#: common/models.py:2282 msgid "Search Stock" msgstr "" -#: common/models.py:2313 +#: common/models.py:2283 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2318 +#: common/models.py:2288 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2320 +#: common/models.py:2290 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2326 +#: common/models.py:2296 msgid "Search Locations" msgstr "" -#: common/models.py:2327 +#: common/models.py:2297 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2332 +#: common/models.py:2302 msgid "Search Companies" msgstr "" -#: common/models.py:2333 +#: common/models.py:2303 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2338 +#: common/models.py:2308 msgid "Search Build Orders" msgstr "" -#: common/models.py:2339 +#: common/models.py:2309 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2344 +#: common/models.py:2314 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2345 +#: common/models.py:2315 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2350 +#: common/models.py:2320 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2352 +#: common/models.py:2322 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2358 +#: common/models.py:2328 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2359 +#: common/models.py:2329 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2364 +#: common/models.py:2334 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2366 +#: common/models.py:2336 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2372 +#: common/models.py:2342 msgid "Search Return Orders" msgstr "" -#: common/models.py:2373 +#: common/models.py:2343 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2378 +#: common/models.py:2348 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2380 +#: common/models.py:2350 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2386 +#: common/models.py:2356 msgid "Search Preview Results" msgstr "" -#: common/models.py:2388 +#: common/models.py:2358 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2394 +#: common/models.py:2364 msgid "Regex Search" msgstr "" -#: common/models.py:2395 +#: common/models.py:2365 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2400 +#: common/models.py:2370 msgid "Whole Word Search" msgstr "" -#: common/models.py:2401 +#: common/models.py:2371 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2406 +#: common/models.py:2376 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2407 +#: common/models.py:2377 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2412 +#: common/models.py:2382 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2413 +#: common/models.py:2383 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2418 +#: common/models.py:2388 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2419 +#: common/models.py:2389 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2424 +#: common/models.py:2394 msgid "Date Format" msgstr "" -#: common/models.py:2425 +#: common/models.py:2395 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2438 part/templates/part/detail.html:41 +#: common/models.py:2408 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2439 +#: common/models.py:2409 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2444 part/templates/part/detail.html:62 +#: common/models.py:2414 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2446 +#: common/models.py:2416 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2452 +#: common/models.py:2422 msgid "Table String Length" msgstr "" -#: common/models.py:2454 +#: common/models.py:2424 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2460 +#: common/models.py:2430 msgid "Default part label template" msgstr "" -#: common/models.py:2461 +#: common/models.py:2431 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2466 +#: common/models.py:2436 msgid "Default stock item template" msgstr "" -#: common/models.py:2468 +#: common/models.py:2438 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2474 +#: common/models.py:2444 msgid "Default stock location label template" msgstr "" -#: common/models.py:2476 +#: common/models.py:2446 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2482 +#: common/models.py:2452 msgid "Default build line label template" msgstr "" -#: common/models.py:2484 +#: common/models.py:2454 msgid "The build line label template to be automatically selected" msgstr "" -#: common/models.py:2490 +#: common/models.py:2460 msgid "Receive error reports" msgstr "" -#: common/models.py:2491 +#: common/models.py:2461 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2496 +#: common/models.py:2466 msgid "Last used printing machines" msgstr "" -#: common/models.py:2497 +#: common/models.py:2467 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2540 +#: common/models.py:2487 common/models.py:2488 common/models.py:2636 +#: common/models.py:2637 common/models.py:2882 common/models.py:2883 +#: common/models.py:3193 common/models.py:3194 part/models.py:3193 +#: part/models.py:3280 part/models.py:3353 part/models.py:3381 +#: plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "Χρήστης" + +#: common/models.py:2510 msgid "Price break quantity" msgstr "" -#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1382 order/models.py:2301 -#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 +#: common/models.py:2517 company/serializers.py:472 order/admin.py:42 +#: order/models.py:1346 order/models.py:2265 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1886 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:740 msgid "Price" msgstr "" -#: common/models.py:2548 +#: common/models.py:2518 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2719 common/models.py:2904 +#: common/models.py:2613 common/models.py:2798 msgid "Endpoint" msgstr "" -#: common/models.py:2720 +#: common/models.py:2614 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2730 +#: common/models.py:2624 msgid "Name for this webhook" msgstr "" -#: common/models.py:2734 company/models.py:160 company/models.py:814 -#: machine/models.py:39 part/admin.py:88 part/models.py:1088 -#: plugin/models.py:65 templates/js/translated/company.js:523 +#: common/models.py:2628 company/models.py:163 company/models.py:782 +#: machine/models.py:39 part/admin.py:88 part/models.py:1081 +#: plugin/models.py:66 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3464,101 +3408,118 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2734 +#: common/models.py:2628 msgid "Is this webhook active" msgstr "" -#: common/models.py:2750 users/models.py:159 +#: common/models.py:2644 users/models.py:159 msgid "Token" msgstr "" -#: common/models.py:2751 +#: common/models.py:2645 msgid "Token for access" msgstr "" -#: common/models.py:2759 +#: common/models.py:2653 msgid "Secret" msgstr "" -#: common/models.py:2760 +#: common/models.py:2654 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2868 +#: common/models.py:2762 msgid "Message ID" msgstr "" -#: common/models.py:2869 +#: common/models.py:2763 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2877 +#: common/models.py:2771 msgid "Host" msgstr "" -#: common/models.py:2878 +#: common/models.py:2772 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2886 +#: common/models.py:2780 msgid "Header" msgstr "" -#: common/models.py:2887 +#: common/models.py:2781 msgid "Header of this message" msgstr "" -#: common/models.py:2894 +#: common/models.py:2788 msgid "Body" msgstr "" -#: common/models.py:2895 +#: common/models.py:2789 msgid "Body of this message" msgstr "" -#: common/models.py:2905 +#: common/models.py:2799 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2910 +#: common/models.py:2804 msgid "Worked on" msgstr "" -#: common/models.py:2911 +#: common/models.py:2805 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:3037 +#: common/models.py:2931 msgid "Id" msgstr "" -#: common/models.py:3039 templates/js/translated/company.js:965 +#: common/models.py:2933 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:3043 templates/js/translated/news.js:60 +#: common/models.py:2935 common/models.py:3177 company/models.py:149 +#: company/models.py:440 company/models.py:500 company/models.py:799 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +#: part/admin.py:55 part/models.py:955 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "Σύνδεσμος" + +#: common/models.py:2937 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:3045 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2939 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:3047 templates/js/translated/news.js:52 +#: common/models.py:2941 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Read" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Was this news item read?" msgstr "" -#: common/models.py:3067 company/models.py:156 part/models.py:972 +#: common/models.py:2961 company/models.py:159 part/models.py:965 #: 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.html:35 @@ -3568,34 +3529,89 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:3067 +#: common/models.py:2961 msgid "Image file" msgstr "" -#: common/models.py:3109 +#: common/models.py:2973 common/models.py:3161 +msgid "Target model type for this image" +msgstr "" + +#: common/models.py:2977 +msgid "Target model ID for this image" +msgstr "" + +#: common/models.py:3018 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3128 +#: common/models.py:3037 msgid "Unit name" msgstr "" -#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3044 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3136 +#: common/models.py:3045 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3052 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3144 +#: common/models.py:3053 msgid "Unit definition" msgstr "" +#: common/models.py:3111 common/models.py:3168 stock/models.py:2426 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "Συνημμένο" + +#: common/models.py:3123 +msgid "Missing file" +msgstr "Το αρχείο λείπει" + +#: common/models.py:3124 +msgid "Missing external link" +msgstr "Λείπει ο εξωτερικός σύνδεσμος" + +#: common/models.py:3169 +msgid "Select file to attach" +msgstr "Επιλέξτε αρχείο για επισύναψη" + +#: common/models.py:3184 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "Σχόλιο" + +#: common/models.py:3185 +msgid "Attachment comment" +msgstr "" + +#: common/models.py:3201 +msgid "Upload date" +msgstr "" + +#: common/models.py:3202 +msgid "Date the file was uploaded" +msgstr "" + +#: common/models.py:3206 +msgid "File size" +msgstr "" + +#: common/models.py:3206 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3244 common/serializers.py:553 +msgid "Invalid model type specified for attachment" +msgstr "" + #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" @@ -3630,66 +3646,103 @@ msgstr "" msgid "Error raised by plugin" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:371 msgid "Is Running" msgstr "" -#: common/serializers.py:372 +#: common/serializers.py:377 msgid "Pending Tasks" msgstr "" -#: common/serializers.py:378 +#: common/serializers.py:383 msgid "Scheduled Tasks" msgstr "" -#: common/serializers.py:384 +#: common/serializers.py:389 msgid "Failed Tasks" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Task ID" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Unique task ID" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock time" msgstr "" -#: common/serializers.py:403 +#: common/serializers.py:408 msgid "Task name" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function name" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Arguments" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Task arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Keyword Arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Task keyword arguments" msgstr "" +#: common/serializers.py:525 +msgid "Filename" +msgstr "Όνομα αρχείου" + +#: common/serializers.py:532 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: common/serializers.py:559 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "" + +#: common/validators.py:33 +msgid "No attachment model type provided" +msgstr "" + +#: common/validators.py:39 +msgid "Invalid attachment model type" +msgstr "" + +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "" + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +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 @@ -3728,210 +3781,222 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/api.py:164 +#: company/api.py:144 msgid "Part is Active" msgstr "" -#: company/api.py:168 +#: company/api.py:148 msgid "Manufacturer is Active" msgstr "" -#: company/api.py:317 +#: company/api.py:281 msgid "Supplier Part is Active" msgstr "" -#: company/api.py:321 +#: company/api.py:285 msgid "Internal Part is Active" msgstr "" -#: company/api.py:325 +#: company/api.py:289 msgid "Supplier is Active" msgstr "" -#: company/models.py:114 +#: company/models.py:100 company/models.py:365 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:822 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "" + +#: company/models.py:117 msgid "Company description" msgstr "" -#: company/models.py:115 +#: company/models.py:118 msgid "Description of the company" msgstr "" -#: company/models.py:120 company/templates/company/company_base.html:106 +#: company/models.py:123 company/templates/company/company_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:532 msgid "Website" msgstr "" -#: company/models.py:120 +#: company/models.py:123 msgid "Company website URL" msgstr "" -#: company/models.py:125 +#: company/models.py:128 msgid "Phone number" msgstr "" -#: company/models.py:127 +#: company/models.py:130 msgid "Contact phone number" msgstr "" -#: company/models.py:134 +#: company/models.py:137 msgid "Contact email address" msgstr "" -#: company/models.py:139 company/templates/company/company_base.html:145 +#: company/models.py:142 company/templates/company/company_base.html:145 #: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "" -#: company/models.py:141 +#: company/models.py:144 msgid "Point of contact" msgstr "" -#: company/models.py:147 +#: company/models.py:150 msgid "Link to external company information" msgstr "" -#: company/models.py:160 +#: company/models.py:163 msgid "Is this company active?" msgstr "" -#: company/models.py:165 +#: company/models.py:168 msgid "is customer" msgstr "" -#: company/models.py:166 +#: company/models.py:169 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:171 +#: company/models.py:174 msgid "is supplier" msgstr "" -#: company/models.py:172 +#: company/models.py:175 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:177 +#: company/models.py:180 msgid "is manufacturer" msgstr "" -#: company/models.py:178 +#: company/models.py:181 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:186 +#: company/models.py:189 msgid "Default currency used for this company" msgstr "" -#: company/models.py:273 company/models.py:382 -#: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:812 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 -msgid "Company" -msgstr "" - -#: company/models.py:383 +#: company/models.py:366 msgid "Select company" msgstr "" -#: company/models.py:388 +#: company/models.py:371 msgid "Address title" msgstr "" -#: company/models.py:389 +#: company/models.py:372 msgid "Title describing the address entry" msgstr "" -#: company/models.py:395 +#: company/models.py:378 msgid "Primary address" msgstr "" -#: company/models.py:396 +#: company/models.py:379 msgid "Set as primary address" msgstr "" -#: company/models.py:401 templates/js/translated/company.js:914 +#: company/models.py:384 templates/js/translated/company.js:914 #: templates/js/translated/company.js:971 msgid "Line 1" msgstr "" -#: company/models.py:402 +#: company/models.py:385 msgid "Address line 1" msgstr "" -#: company/models.py:408 templates/js/translated/company.js:915 +#: company/models.py:391 templates/js/translated/company.js:915 #: templates/js/translated/company.js:977 msgid "Line 2" msgstr "" -#: company/models.py:409 +#: company/models.py:392 msgid "Address line 2" msgstr "" -#: company/models.py:415 company/models.py:416 +#: company/models.py:398 company/models.py:399 #: templates/js/translated/company.js:983 msgid "Postal code" msgstr "" -#: company/models.py:422 +#: company/models.py:405 msgid "City/Region" msgstr "" -#: company/models.py:423 +#: company/models.py:406 msgid "Postal code city/region" msgstr "" -#: company/models.py:429 +#: company/models.py:412 msgid "State/Province" msgstr "" -#: company/models.py:430 +#: company/models.py:413 msgid "State or province" msgstr "" -#: company/models.py:436 templates/js/translated/company.js:1001 +#: company/models.py:419 templates/js/translated/company.js:1001 msgid "Country" msgstr "" -#: company/models.py:437 +#: company/models.py:420 msgid "Address country" msgstr "" -#: company/models.py:443 +#: company/models.py:426 msgid "Courier shipping notes" msgstr "" -#: company/models.py:444 +#: company/models.py:427 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:450 +#: company/models.py:433 msgid "Internal shipping notes" msgstr "" -#: company/models.py:451 +#: company/models.py:434 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:458 +#: company/models.py:441 msgid "Link to address information (external)" msgstr "" -#: company/models.py:489 company/models.py:792 stock/models.py:768 -#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 +#: company/models.py:463 company/models.py:574 company/models.py:792 +#: 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:475 company/models.py:760 stock/models.py:766 +#: stock/serializers.py:422 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:491 company/models.py:794 +#: company/models.py:477 company/models.py:762 msgid "Select part" msgstr "" -#: company/models.py:500 company/templates/company/company_base.html:82 +#: company/models.py:486 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:530 +#: company/templates/company/supplier_part.html:145 part/serializers.py:525 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -3941,152 +4006,154 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:501 +#: company/models.py:487 msgid "Select manufacturer" msgstr "" -#: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:540 +#: company/models.py:493 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:535 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 -#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1801 #: templates/js/translated/purchase_order.js:1851 #: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "" -#: company/models.py:508 +#: company/models.py:494 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:515 +#: company/models.py:501 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:524 +#: company/models.py:510 msgid "Manufacturer part description" msgstr "" -#: company/models.py:581 company/models.py:608 company/models.py:824 -#: 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:615 +#: company/models.py:581 msgid "Parameter name" msgstr "" -#: company/models.py:621 report/templates/report/inventree_test_report.html:104 -#: stock/models.py:2429 templates/js/translated/company.js:1166 -#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 +#: company/models.py:587 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2418 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1493 #: templates/js/translated/stock.js:1522 msgid "Value" msgstr "" -#: company/models.py:622 +#: company/models.py:588 msgid "Parameter value" msgstr "" -#: company/models.py:629 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1052 part/models.py:3666 +#: company/models.py:595 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1045 part/models.py:3646 #: part/templates/part/part_base.html:284 -#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1512 +#: templates/js/translated/part.js:1616 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:630 +#: company/models.py:596 msgid "Parameter units" msgstr "" -#: company/models.py:732 +#: company/models.py:648 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:777 stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "" + +#: company/models.py:700 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:739 +#: company/models.py:707 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:753 +#: company/models.py:721 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/models.py:770 company/templates/company/company_base.html:87 #: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:514 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:509 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:511 -#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1769 #: templates/js/translated/pricing.js:498 #: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "" -#: company/models.py:803 +#: company/models.py:771 msgid "Select supplier" msgstr "" -#: company/models.py:809 part/serializers.py:525 +#: company/models.py:777 part/serializers.py:520 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:815 +#: company/models.py:783 msgid "Is this supplier part active?" msgstr "" -#: company/models.py:825 +#: company/models.py:793 msgid "Select manufacturer part" msgstr "" -#: company/models.py:832 +#: company/models.py:800 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:841 +#: company/models.py:809 msgid "Supplier part description" msgstr "" -#: company/models.py:848 company/templates/company/supplier_part.html:187 -#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 +#: company/models.py:816 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4093 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_purchase_order_report.html:32 #: report/templates/report/inventree_return_order_report.html:27 #: report/templates/report/inventree_sales_order_report.html:32 #: report/templates/report/inventree_stock_location_report.html:105 -#: stock/serializers.py:708 +#: stock/serializers.py:710 msgid "Note" msgstr "" -#: company/models.py:857 part/models.py:2010 +#: company/models.py:825 part/models.py:2003 msgid "base cost" msgstr "" -#: company/models.py:858 part/models.py:2011 +#: company/models.py:826 part/models.py:2004 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:865 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 +#: company/models.py:833 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:797 stock/serializers.py:1475 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 #: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "" -#: company/models.py:866 +#: company/models.py:834 msgid "Part packaging" msgstr "" -#: company/models.py:871 templates/js/translated/company.js:1651 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: company/models.py:839 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:311 #: templates/js/translated/purchase_order.js:841 #: templates/js/translated/purchase_order.js:1103 @@ -4095,35 +4162,35 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:873 +#: company/models.py:841 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:892 part/models.py:2017 +#: company/models.py:860 part/models.py:2010 msgid "multiple" msgstr "" -#: company/models.py:893 +#: company/models.py:861 msgid "Order multiple" msgstr "" -#: company/models.py:905 +#: company/models.py:873 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:911 +#: company/models.py:879 msgid "Availability Updated" msgstr "" -#: company/models.py:912 +#: company/models.py:880 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:163 +#: company/serializers.py:161 msgid "Default currency used for this supplier" msgstr "" -#: company/serializers.py:381 part/admin.py:126 +#: company/serializers.py:357 part/admin.py:126 #: part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1689 #: templates/js/translated/table_filters.js:355 @@ -4135,7 +4202,7 @@ msgstr "" #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 #: templates/js/translated/model_renderers.js:312 -#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +#: templates/js/translated/part.js:815 templates/js/translated/part.js:1219 msgid "Inactive" msgstr "" @@ -4174,7 +4241,7 @@ msgstr "" #: report/templates/report/inventree_purchase_order_report.html:40 #: report/templates/report/inventree_sales_order_report.html:40 #: report/templates/report/inventree_test_report.html:84 -#: report/templates/report/inventree_test_report.html:163 +#: report/templates/report/inventree_test_report.html:162 msgid "Part image" msgstr "" @@ -4193,10 +4260,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:92 order/models.py:940 -#: order/models.py:2068 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:148 stock/models.py:821 -#: stock/models.py:822 stock/serializers.py:1229 +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2032 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:819 +#: stock/models.py:820 stock/serializers.py:1225 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 @@ -4407,7 +4474,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:836 +#: part/admin.py:122 part/serializers.py:832 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4427,8 +4494,8 @@ msgstr "" msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:206 -#: templates/js/translated/part.js:1422 +#: company/templates/company/manufacturer_part.html:196 +#: templates/js/translated/part.js:1423 msgid "Add Parameter" msgstr "" @@ -4456,15 +4523,6 @@ msgstr "" msgid "Addresses" msgstr "" -#: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:452 -#: stock/models.py:779 stock/templates/stock/item_base.html:233 -#: templates/js/translated/company.js:1600 -#: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2280 -msgid "Supplier Part" -msgstr "" - #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1526 msgid "Supplier part actions" @@ -4507,8 +4565,8 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:524 -#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: part/bom.py:311 part/serializers.py:519 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1787 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1850 #: templates/js/translated/purchase_order.js:2028 @@ -4520,12 +4578,12 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:207 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" @@ -4557,15 +4615,15 @@ msgid "Update Part Availability" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:835 part/stocktake.py:223 +#: part/serializers.py:831 part/stocktake.py:224 #: part/templates/part/category.html:183 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:916 stock/serializers.py:1080 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:918 stock/serializers.py:1091 #: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:191 #: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1061 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:206 msgid "Stock Items" @@ -4592,10 +4650,6 @@ msgstr "" 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 "" @@ -4616,7 +4670,7 @@ msgstr "" msgid "Connected" msgstr "" -#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: machine/machine_types/label_printer.py:235 order/api.py:1467 #: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "" @@ -4705,7 +4759,7 @@ msgstr "" msgid "Config type" msgstr "" -#: order/admin.py:30 order/models.py:89 +#: order/admin.py:30 order/models.py:90 #: report/templates/report/inventree_purchase_order_report.html:31 #: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 @@ -4714,30 +4768,30 @@ msgstr "" msgid "Total Price" msgstr "" -#: order/api.py:161 order/serializers.py:91 +#: order/api.py:157 order/serializers.py:90 #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "" -#: order/api.py:165 templates/js/translated/table_filters.js:194 +#: order/api.py:161 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "" -#: order/api.py:240 +#: order/api.py:236 msgid "No matching purchase order found" msgstr "" -#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 -#: order/models.py:1586 order/models.py:1700 order/models.py:1854 -#: order/models.py:2267 order/models.py:2318 +#: order/api.py:435 order/api.py:801 order/models.py:1395 order/models.py:1504 +#: order/models.py:1550 order/models.py:1664 order/models.py:1818 +#: order/models.py:2231 order/models.py:2282 #: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "" -#: order/api.py:441 order/api.py:838 +#: order/api.py:439 order/api.py:822 msgid "Order Complete" msgstr "" @@ -4745,13 +4799,13 @@ msgstr "" msgid "Order Pending" msgstr "" -#: order/api.py:1509 order/models.py:380 order/models.py:1432 -#: order/models.py:1541 order/templates/order/order_base.html:9 +#: order/api.py:1461 order/models.py:380 order/models.py:1396 +#: order/models.py:1505 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_purchase_order_report.html:14 -#: stock/serializers.py:119 stock/templates/stock/item_base.html:176 +#: stock/serializers.py:118 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/part.js:1746 templates/js/translated/pricing.js:804 #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1673 @@ -4759,8 +4813,8 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1513 order/models.py:2017 order/models.py:2268 -#: order/models.py:2319 order/templates/order/return_order_base.html:9 +#: order/api.py:1465 order/models.py:1981 order/models.py:2232 +#: order/models.py:2283 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report.html:13 #: templates/js/translated/return_order.js:280 @@ -4768,15 +4822,15 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/models.py:90 +#: order/models.py:91 msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:71 +#: order/models.py:96 order/serializers.py:70 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:72 +#: order/models.py:99 order/serializers.py:71 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -4792,7 +4846,7 @@ msgstr "" msgid "Select project code for this order" msgstr "" -#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 msgid "Link to external page" msgstr "" @@ -4816,11 +4870,11 @@ msgstr "" msgid "Company address for this order" msgstr "" -#: order/models.py:464 order/models.py:929 +#: order/models.py:464 order/models.py:927 msgid "Order reference" msgstr "" -#: order/models.py:472 order/models.py:953 +#: order/models.py:472 order/models.py:951 msgid "Purchase order status" msgstr "" @@ -4841,15 +4895,15 @@ msgstr "" msgid "received by" msgstr "" -#: order/models.py:514 order/models.py:2094 +#: order/models.py:514 order/models.py:2058 msgid "Issue Date" msgstr "" -#: order/models.py:515 order/models.py:2095 +#: order/models.py:515 order/models.py:2059 msgid "Date order was issued" msgstr "" -#: order/models.py:522 order/models.py:2102 +#: order/models.py:522 order/models.py:2066 msgid "Date order was completed" msgstr "" @@ -4861,96 +4915,94 @@ msgstr "" msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:941 +#: order/models.py:939 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:964 order/models.py:2087 +#: order/models.py:962 order/models.py:2051 msgid "Customer Reference " msgstr "" -#: order/models.py:965 order/models.py:2088 +#: order/models.py:963 order/models.py:2052 msgid "Customer order reference code" msgstr "" -#: order/models.py:969 order/models.py:1707 +#: order/models.py:967 order/models.py:1671 #: templates/js/translated/sales_order.js:879 #: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "" -#: order/models.py:978 +#: order/models.py:976 msgid "shipped by" msgstr "" -#: order/models.py:1027 -#, fuzzy -#| msgid "Build output is already completed" +#: order/models.py:1025 msgid "Order is already complete" -msgstr "Η παραγγελία κατασκευής έχει ολοκληρωθεί" +msgstr "" -#: order/models.py:1030 +#: order/models.py:1028 msgid "Order is already cancelled" msgstr "" -#: order/models.py:1034 +#: order/models.py:1032 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:1038 +#: order/models.py:1036 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:1043 +#: order/models.py:1041 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1309 +#: order/models.py:1273 msgid "Item quantity" msgstr "" -#: order/models.py:1326 +#: order/models.py:1290 msgid "Line item reference" msgstr "" -#: order/models.py:1333 +#: order/models.py:1297 msgid "Line item notes" msgstr "" -#: order/models.py:1345 +#: order/models.py:1309 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1366 +#: order/models.py:1330 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1372 +#: order/models.py:1336 msgid "Context" msgstr "" -#: order/models.py:1373 +#: order/models.py:1337 msgid "Additional context for this line" msgstr "" -#: order/models.py:1383 +#: order/models.py:1347 msgid "Unit price" msgstr "" -#: order/models.py:1416 +#: order/models.py:1380 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1423 +#: order/models.py:1387 msgid "deleted" msgstr "" -#: order/models.py:1451 +#: order/models.py:1415 msgid "Supplier part" msgstr "" -#: order/models.py:1458 order/templates/order/order_base.html:196 -#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: order/models.py:1422 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1870 templates/js/translated/part.js:1902 #: templates/js/translated/purchase_order.js:1306 #: templates/js/translated/purchase_order.js:2169 #: templates/js/translated/return_order.js:763 @@ -4959,196 +5011,196 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1459 +#: order/models.py:1423 msgid "Number of items received" msgstr "" -#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 +#: order/models.py:1431 stock/models.py:938 stock/serializers.py:556 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "" -#: order/models.py:1468 +#: order/models.py:1432 msgid "Unit purchase price" msgstr "" -#: order/models.py:1483 +#: order/models.py:1447 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1574 +#: order/models.py:1538 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1579 +#: order/models.py:1543 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1605 part/templates/part/part_pricing.html:107 +#: order/models.py:1569 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:1606 +#: order/models.py:1570 msgid "Unit sale price" msgstr "" -#: order/models.py:1615 order/status_codes.py:43 +#: order/models.py:1579 order/status_codes.py:43 #: templates/js/translated/sales_order.js:1559 #: templates/js/translated/sales_order.js:1680 #: templates/js/translated/sales_order.js:1993 msgid "Shipped" msgstr "Αποστάλθηκε" -#: order/models.py:1616 +#: order/models.py:1580 msgid "Shipped quantity" msgstr "" -#: order/models.py:1708 +#: order/models.py:1672 msgid "Date of shipment" msgstr "" -#: order/models.py:1714 templates/js/translated/sales_order.js:1072 +#: order/models.py:1678 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "" -#: order/models.py:1715 +#: order/models.py:1679 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1723 +#: order/models.py:1687 msgid "Checked By" msgstr "" -#: order/models.py:1724 +#: order/models.py:1688 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 -#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 +#: order/models.py:1695 order/models.py:1908 order/serializers.py:1342 +#: order/serializers.py:1452 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "" -#: order/models.py:1732 +#: order/models.py:1696 msgid "Shipment number" msgstr "" -#: order/models.py:1740 +#: order/models.py:1704 msgid "Tracking Number" msgstr "" -#: order/models.py:1741 +#: order/models.py:1705 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1748 +#: order/models.py:1712 msgid "Invoice Number" msgstr "" -#: order/models.py:1749 +#: order/models.py:1713 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1769 +#: order/models.py:1733 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1772 +#: order/models.py:1736 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1890 order/models.py:1892 +#: order/models.py:1854 order/models.py:1856 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1899 +#: order/models.py:1863 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1902 +#: order/models.py:1866 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1905 +#: order/models.py:1869 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1924 order/serializers.py:1231 +#: order/models.py:1888 order/serializers.py:1219 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1927 +#: order/models.py:1891 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1928 plugin/base/barcodes/api.py:481 +#: order/models.py:1892 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1936 +#: order/models.py:1900 msgid "Line" msgstr "" -#: order/models.py:1945 +#: order/models.py:1909 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1958 order/models.py:2275 +#: order/models.py:1922 order/models.py:2239 #: templates/js/translated/return_order.js:721 msgid "Item" msgstr "" -#: order/models.py:1959 +#: order/models.py:1923 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1968 +#: order/models.py:1932 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:2057 +#: order/models.py:2021 msgid "Return Order reference" msgstr "" -#: order/models.py:2069 +#: order/models.py:2033 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:2081 +#: order/models.py:2045 msgid "Return order status" msgstr "" -#: order/models.py:2260 +#: order/models.py:2224 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2276 +#: order/models.py:2240 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2282 +#: order/models.py:2246 msgid "Received Date" msgstr "" -#: order/models.py:2283 +#: order/models.py:2247 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2294 templates/js/translated/return_order.js:732 +#: order/models.py:2258 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2295 +#: order/models.py:2259 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2302 +#: order/models.py:2266 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/serializers.py:79 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_purchase_order_report.html:22 @@ -5157,163 +5209,163 @@ msgstr "" msgid "Line Items" msgstr "" -#: order/serializers.py:84 +#: order/serializers.py:83 msgid "Completed Lines" msgstr "" -#: order/serializers.py:287 +#: order/serializers.py:286 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:302 order/serializers.py:1247 +#: order/serializers.py:301 order/serializers.py:1235 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:312 order/serializers.py:1257 +#: order/serializers.py:311 order/serializers.py:1245 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:440 +#: order/serializers.py:439 msgid "Order is not open" msgstr "" -#: order/serializers.py:461 +#: order/serializers.py:460 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:463 +#: order/serializers.py:462 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:473 +#: order/serializers.py:472 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:478 msgid "Merge Items" msgstr "" -#: order/serializers.py:481 +#: order/serializers.py:480 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:499 +#: order/serializers.py:498 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:502 +#: order/serializers.py:501 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:510 +#: order/serializers.py:509 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:511 +#: order/serializers.py:510 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:550 order/serializers.py:1325 +#: order/serializers.py:549 order/serializers.py:1313 msgid "Line Item" msgstr "" -#: order/serializers.py:556 +#: order/serializers.py:555 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1657 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:581 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:589 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:601 templates/js/translated/barcode.js:52 +#: order/serializers.py:600 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:602 +#: order/serializers.py:601 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:618 +#: order/serializers.py:617 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:642 +#: order/serializers.py:641 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:690 order/serializers.py:1696 +#: order/serializers.py:689 order/serializers.py:1673 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:706 +#: order/serializers.py:705 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:717 +#: order/serializers.py:716 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1074 +#: order/serializers.py:1062 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1134 +#: order/serializers.py:1122 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1195 order/serializers.py:1334 +#: order/serializers.py:1183 order/serializers.py:1322 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1214 +#: order/serializers.py:1202 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1344 +#: order/serializers.py:1332 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1366 order/serializers.py:1472 +#: order/serializers.py:1354 order/serializers.py:1460 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1369 order/serializers.py:1475 +#: order/serializers.py:1357 order/serializers.py:1463 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1416 +#: order/serializers.py:1404 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1423 +#: order/serializers.py:1411 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1650 +#: order/serializers.py:1627 msgid "Return order line item" msgstr "" -#: order/serializers.py:1656 +#: order/serializers.py:1633 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1659 +#: order/serializers.py:1636 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1688 +#: order/serializers.py:1665 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1766 +#: order/serializers.py:1743 msgid "Line price currency" msgstr "" @@ -5643,7 +5695,7 @@ msgstr "" #: 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/part.js:1073 #: templates/js/translated/purchase_order.js:1752 #: templates/js/translated/return_order.js:380 #: templates/js/translated/sales_order.js:891 @@ -5739,34 +5791,34 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:406 part/models.py:3964 part/stocktake.py:218 -#: stock/admin.py:153 +#: part/admin.py:39 part/admin.py:398 part/models.py:3944 part/stocktake.py:219 +#: stock/admin.py:152 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 -#: stock/admin.py:157 +#: part/admin.py:41 part/admin.py:405 part/models.py:3945 part/stocktake.py:220 +#: stock/admin.py:156 msgid "Part Name" msgstr "" -#: part/admin.py:45 part/stocktake.py:220 +#: part/admin.py:45 part/stocktake.py:221 msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:940 part/templates/part/part_base.html:269 #: report/templates/report/inventree_stock_location_report.html:103 -#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/part.js:1227 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 -#: report/models.py:161 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2346 +#: part/admin.py:50 part/models.py:949 part/templates/part/part_base.html:277 +#: report/models.py:162 templates/js/translated/part.js:1232 +#: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:319 part/models.py:929 +#: part/admin.py:53 part/admin.py:319 part/models.py:922 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5775,11 +5827,11 @@ msgstr "" msgid "Part Image" msgstr "" -#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:222 msgid "Category ID" msgstr "" -#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:223 msgid "Category Name" msgstr "" @@ -5791,11 +5843,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:908 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1036 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5803,26 +5855,26 @@ msgstr "" 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 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:235 +#: templates/js/translated/part.js:715 templates/js/translated/part.js:2153 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3123 part/models.py:3137 -#: templates/js/translated/part.js:969 +#: part/admin.py:155 part/models.py:3088 part/models.py:3102 +#: templates/js/translated/part.js:970 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3130 part/models.py:3144 -#: templates/js/translated/part.js:979 +#: part/admin.py:158 part/models.py:3095 part/models.py:3109 +#: templates/js/translated/part.js:980 msgid "Maximum Cost" msgstr "" -#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 msgid "Parent ID" msgstr "" -#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 msgid "Parent Name" msgstr "" @@ -5831,141 +5883,149 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:325 part/models.py:393 part/serializers.py:117 -#: part/serializers.py:272 part/serializers.py:391 +#: part/admin.py:325 part/models.py:396 part/serializers.py:124 +#: part/serializers.py:267 part/serializers.py:386 #: 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:2803 templates/js/translated/search.js:130 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "" -#: part/admin.py:386 +#: part/admin.py:378 msgid "BOM Level" msgstr "" -#: part/admin.py:389 +#: part/admin.py:381 msgid "BOM Item ID" msgstr "" -#: part/admin.py:399 +#: part/admin.py:391 msgid "Parent IPN" msgstr "" -#: part/admin.py:410 part/models.py:3966 +#: part/admin.py:402 part/models.py:3946 msgid "Part IPN" msgstr "" -#: part/admin.py:423 part/serializers.py:1278 +#: part/admin.py:415 part/serializers.py:1274 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:428 part/serializers.py:1293 +#: part/admin.py:420 part/serializers.py:1289 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:110 +#: part/api.py:104 msgid "Starred" msgstr "" -#: part/api.py:112 +#: part/api.py:106 msgid "Filter by starred categories" msgstr "" -#: part/api.py:129 stock/api.py:318 +#: part/api.py:123 stock/api.py:312 msgid "Depth" msgstr "" -#: part/api.py:129 +#: part/api.py:123 msgid "Filter by category depth" msgstr "" -#: part/api.py:147 stock/api.py:336 +#: part/api.py:141 stock/api.py:330 +msgid "Top Level" +msgstr "" + +#: part/api.py:143 +msgid "Filter by top-level categories" +msgstr "" + +#: part/api.py:156 stock/api.py:345 msgid "Cascade" msgstr "" -#: part/api.py:149 +#: part/api.py:158 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:169 +#: part/api.py:179 templates/js/translated/part.js:308 msgid "Parent" msgstr "" -#: part/api.py:171 +#: part/api.py:181 msgid "Filter by parent category" msgstr "" -#: part/api.py:204 +#: part/api.py:214 msgid "Exclude Tree" msgstr "" -#: part/api.py:206 +#: part/api.py:216 msgid "Exclude sub-categories under the specified category" msgstr "" -#: part/api.py:455 +#: part/api.py:449 msgid "Has Results" msgstr "" -#: part/api.py:622 +#: part/api.py:616 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:640 +#: part/api.py:634 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:656 +#: part/api.py:650 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:740 +#: part/api.py:734 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:887 +#: part/api.py:881 msgid "Valid" msgstr "" -#: part/api.py:888 +#: part/api.py:882 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:894 +#: part/api.py:888 msgid "This option must be selected" msgstr "" -#: part/api.py:1111 +#: part/api.py:1105 msgid "BOM Valid" msgstr "" -#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 -#: part/serializers.py:406 part/serializers.py:1134 -#: part/templates/part/part_base.html:260 stock/api.py:781 +#: part/api.py:1508 part/models.py:932 part/models.py:3374 part/models.py:3889 +#: part/serializers.py:401 part/serializers.py:1130 +#: part/templates/part/part_base.html:260 stock/api.py:791 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2376 +#: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/api.py:1803 +#: part/api.py:1796 msgid "Uses" msgstr "" -#: part/bom.py:170 part/models.py:102 part/models.py:982 +#: part/bom.py:170 part/models.py:104 part/models.py:975 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 part/serializers.py:837 +#: part/bom.py:171 part/serializers.py:833 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5974,1054 +6034,1066 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 +#: part/models.py:85 part/models.py:3890 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:84 part/templates/part/category.html:136 +#: part/models.py:86 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "" -#: part/models.py:103 +#: part/models.py:105 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 +#: part/models.py:110 stock/models.py:174 templates/js/translated/part.js:2810 #: templates/js/translated/stock.js:2772 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:110 +#: part/models.py:112 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:119 +#: part/models.py:121 msgid "Default keywords" msgstr "" -#: part/models.py:120 +#: part/models.py:122 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 stock/models.py:85 stock/models.py:156 +#: part/models.py:128 stock/models.py:86 stock/models.py:157 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:127 stock/models.py:157 +#: part/models.py:129 stock/models.py:158 msgid "Icon (optional)" msgstr "" -#: part/models.py:149 +#: part/models.py:151 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:482 +#: part/models.py:485 msgid "Cannot delete this part as it is still active" msgstr "" -#: part/models.py:489 +#: part/models.py:490 msgid "Cannot delete this part as it is used in an assembly" msgstr "" -#: part/models.py:527 +#: part/models.py:528 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:575 part/models.py:582 +#: part/models.py:576 part/models.py:583 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:594 +#: part/models.py:595 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:659 +#: part/models.py:658 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:739 +#: part/models.py:736 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:844 +#: part/models.py:837 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:854 +#: part/models.py:847 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:869 +#: part/models.py:862 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:898 part/models.py:3965 +#: part/models.py:891 part/models.py:3945 msgid "Part name" msgstr "" -#: part/models.py:903 +#: part/models.py:896 msgid "Is Template" msgstr "" -#: part/models.py:904 +#: part/models.py:897 msgid "Is this part a template part?" msgstr "" -#: part/models.py:914 +#: part/models.py:907 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:922 +#: part/models.py:915 msgid "Part description (optional)" msgstr "" -#: part/models.py:930 +#: part/models.py:923 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:940 +#: part/models.py:933 msgid "Part category" msgstr "" -#: part/models.py:948 +#: part/models.py:941 msgid "Internal Part Number" msgstr "" -#: part/models.py:955 +#: part/models.py:948 msgid "Part revision or version number" msgstr "" -#: part/models.py:980 +#: part/models.py:973 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:1026 part/templates/part/part_base.html:376 +#: part/models.py:1019 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:1027 +#: part/models.py:1020 msgid "Default supplier part" msgstr "" -#: part/models.py:1034 +#: part/models.py:1027 msgid "Default Expiry" msgstr "" -#: part/models.py:1035 +#: part/models.py:1028 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:1044 +#: part/models.py:1037 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:1053 +#: part/models.py:1046 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1060 +#: part/models.py:1053 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1066 +#: part/models.py:1059 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1072 +#: part/models.py:1065 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1078 +#: part/models.py:1071 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1084 +#: part/models.py:1077 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1088 +#: part/models.py:1081 msgid "Is this part active?" msgstr "" -#: part/models.py:1094 +#: part/models.py:1087 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1100 +#: part/models.py:1093 msgid "BOM checksum" msgstr "" -#: part/models.py:1101 +#: part/models.py:1094 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1109 +#: part/models.py:1102 msgid "BOM checked by" msgstr "" -#: part/models.py:1114 +#: part/models.py:1107 msgid "BOM checked date" msgstr "" -#: part/models.py:1130 +#: part/models.py:1123 msgid "Creation User" msgstr "" -#: part/models.py:1140 +#: part/models.py:1133 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1145 part/templates/part/part_base.html:339 +#: part/models.py:1138 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2470 +#: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:2018 +#: part/models.py:2011 msgid "Sell multiple" msgstr "" -#: part/models.py:3037 +#: part/models.py:3002 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:3053 +#: part/models.py:3018 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:3054 +#: part/models.py:3019 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:3060 +#: part/models.py:3025 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3026 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:3067 +#: part/models.py:3032 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3033 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3074 +#: part/models.py:3039 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3040 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3046 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3047 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3053 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3054 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3060 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3096 +#: part/models.py:3061 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3102 +#: part/models.py:3067 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3103 +#: part/models.py:3068 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3109 +#: part/models.py:3074 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3110 +#: part/models.py:3075 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3116 +#: part/models.py:3081 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3117 +#: part/models.py:3082 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3124 +#: part/models.py:3089 msgid "Override minimum cost" msgstr "" -#: part/models.py:3131 +#: part/models.py:3096 msgid "Override maximum cost" msgstr "" -#: part/models.py:3138 +#: part/models.py:3103 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3145 +#: part/models.py:3110 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3151 +#: part/models.py:3116 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3152 +#: part/models.py:3117 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3158 +#: part/models.py:3123 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3159 +#: part/models.py:3124 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3165 +#: part/models.py:3130 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3131 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3172 +#: part/models.py:3137 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3138 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3192 +#: part/models.py:3157 msgid "Part for stocktake" msgstr "" -#: part/models.py:3197 +#: part/models.py:3162 msgid "Item Count" msgstr "" -#: part/models.py:3198 +#: part/models.py:3163 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3206 +#: part/models.py:3171 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3210 part/models.py:3293 +#: part/models.py:3175 part/models.py:3258 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report.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/part.js:1086 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" -#: part/models.py:3211 +#: part/models.py:3176 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3219 +#: part/models.py:3184 msgid "Additional notes" msgstr "" -#: part/models.py:3229 +#: part/models.py:3194 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3235 +#: part/models.py:3200 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3236 +#: part/models.py:3201 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3242 +#: part/models.py:3207 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3243 +#: part/models.py:3208 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3264 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3300 +#: part/models.py:3265 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3270 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3306 +#: part/models.py:3271 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3316 +#: part/models.py:3281 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3478 +#: part/models.py:3423 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3489 +#: part/models.py:3444 part/models.py:3608 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3455 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3500 +#: part/models.py:3466 msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3517 templates/js/translated/part.js:2878 +#: part/models.py:3483 templates/js/translated/part.js:2880 msgid "Test Name" msgstr "" -#: part/models.py:3518 +#: part/models.py:3484 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3524 +#: part/models.py:3490 msgid "Test Key" msgstr "" -#: part/models.py:3525 +#: part/models.py:3491 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3532 +#: part/models.py:3498 msgid "Test Description" msgstr "" -#: part/models.py:3533 +#: part/models.py:3499 msgid "Enter description for this test" msgstr "" -#: part/models.py:3537 report/models.py:208 -#: templates/js/translated/part.js:2899 +#: part/models.py:3503 report/models.py:209 +#: templates/js/translated/part.js:2901 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" -#: part/models.py:3537 +#: part/models.py:3503 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3542 templates/js/translated/part.js:2907 +#: part/models.py:3508 templates/js/translated/part.js:2909 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3543 +#: part/models.py:3509 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3548 templates/js/translated/part.js:2915 +#: part/models.py:3514 templates/js/translated/part.js:2917 msgid "Requires Value" msgstr "" -#: part/models.py:3549 +#: part/models.py:3515 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3554 templates/js/translated/part.js:2922 +#: part/models.py:3520 templates/js/translated/part.js:2924 msgid "Requires Attachment" msgstr "" -#: part/models.py:3556 +#: part/models.py:3522 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3603 +#: part/models.py:3528 part/models.py:3667 templates/js/translated/part.js:1637 +msgid "Choices" +msgstr "" + +#: part/models.py:3529 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3583 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3608 +#: part/models.py:3588 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3628 -msgid "Choices must be unique" -msgstr "" - -#: part/models.py:3645 +#: part/models.py:3625 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3660 +#: part/models.py:3640 msgid "Parameter Name" msgstr "" -#: part/models.py:3667 +#: part/models.py:3647 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3675 +#: part/models.py:3655 msgid "Parameter description" msgstr "" -#: part/models.py:3681 templates/js/translated/part.js:1627 +#: part/models.py:3661 templates/js/translated/part.js:1628 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "" -#: part/models.py:3682 +#: part/models.py:3662 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3687 templates/js/translated/part.js:1636 -msgid "Choices" -msgstr "" - -#: part/models.py:3688 +#: part/models.py:3668 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3765 +#: part/models.py:3745 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3808 +#: part/models.py:3788 msgid "Parent Part" msgstr "" -#: part/models.py:3816 part/models.py:3917 part/models.py:3918 +#: part/models.py:3796 part/models.py:3897 part/models.py:3898 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3821 +#: part/models.py:3801 msgid "Data" msgstr "" -#: part/models.py:3822 +#: part/models.py:3802 msgid "Parameter Value" msgstr "" -#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3904 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3925 +#: part/models.py:3905 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3963 +#: part/models.py:3943 msgid "Part ID or part name" msgstr "" -#: part/models.py:3964 +#: part/models.py:3944 msgid "Unique part ID value" msgstr "" -#: part/models.py:3966 +#: part/models.py:3946 msgid "Part IPN value" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "Level" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "BOM level" msgstr "" -#: part/models.py:4057 +#: part/models.py:4037 msgid "Select parent part" msgstr "" -#: part/models.py:4067 +#: part/models.py:4047 msgid "Sub part" msgstr "" -#: part/models.py:4068 +#: part/models.py:4048 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4079 +#: part/models.py:4059 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4085 +#: part/models.py:4065 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4091 +#: part/models.py:4071 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4098 part/templates/part/upload_bom.html:55 +#: part/models.py:4078 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4099 +#: part/models.py:4079 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4106 +#: part/models.py:4086 msgid "BOM item reference" msgstr "" -#: part/models.py:4114 +#: part/models.py:4094 msgid "BOM item notes" msgstr "" -#: part/models.py:4120 +#: part/models.py:4100 msgid "Checksum" msgstr "" -#: part/models.py:4121 +#: part/models.py:4101 msgid "BOM line checksum" msgstr "" -#: part/models.py:4126 templates/js/translated/table_filters.js:174 +#: part/models.py:4106 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4127 +#: part/models.py:4107 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4132 part/templates/part/upload_bom.html:57 +#: part/models.py:4112 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:4133 +#: part/models.py:4113 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4138 part/templates/part/upload_bom.html:56 +#: part/models.py:4118 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4139 +#: part/models.py:4119 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4224 stock/models.py:664 +#: part/models.py:4204 stock/models.py:662 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4234 part/models.py:4236 +#: part/models.py:4214 part/models.py:4216 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4376 +#: part/models.py:4354 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4397 +#: part/models.py:4375 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4410 +#: part/models.py:4388 msgid "Parent BOM item" msgstr "" -#: part/models.py:4418 +#: part/models.py:4396 msgid "Substitute part" msgstr "" -#: part/models.py:4434 +#: part/models.py:4412 msgid "Part 1" msgstr "" -#: part/models.py:4442 +#: part/models.py:4420 msgid "Part 2" msgstr "" -#: part/models.py:4443 +#: part/models.py:4421 msgid "Select Related Part" msgstr "" -#: part/models.py:4462 +#: part/models.py:4440 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4467 +#: part/models.py:4445 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:119 part/serializers.py:141 +#: part/serializers.py:118 +msgid "Parent Category" +msgstr "" + +#: part/serializers.py:119 templates/js/translated/part.js:309 +msgid "Parent part category" +msgstr "" + +#: part/serializers.py:126 part/serializers.py:148 #: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/serializers.py:185 +#: part/serializers.py:180 msgid "Results" msgstr "" -#: part/serializers.py:186 +#: part/serializers.py:181 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 +#: part/serializers.py:205 part/serializers.py:223 stock/serializers.py:562 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:273 +#: part/serializers.py:268 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:397 +#: part/serializers.py:392 msgid "No parts selected" msgstr "" -#: part/serializers.py:407 +#: part/serializers.py:402 msgid "Select category" msgstr "" -#: part/serializers.py:442 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:443 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:448 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:449 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:455 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:456 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:463 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:488 +#: part/serializers.py:483 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:490 +#: part/serializers.py:485 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:497 +#: part/serializers.py:492 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:493 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:510 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:531 +#: part/serializers.py:526 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:541 +#: part/serializers.py:536 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:548 +#: part/serializers.py:543 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:557 +#: part/serializers.py:552 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:568 +#: part/serializers.py:563 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:575 +#: part/serializers.py:570 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:834 msgid "External Stock" msgstr "" -#: part/serializers.py:840 +#: part/serializers.py:836 msgid "Unallocated Stock" msgstr "" -#: part/serializers.py:843 +#: part/serializers.py:839 msgid "Variant Stock" msgstr "" -#: part/serializers.py:873 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:471 +#: part/serializers.py:869 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:472 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:870 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:880 templates/js/translated/part.js:102 +#: part/serializers.py:876 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:881 +#: part/serializers.py:877 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:887 +#: part/serializers.py:883 msgid "Supplier Information" msgstr "" -#: part/serializers.py:888 +#: part/serializers.py:884 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:896 +#: part/serializers.py:892 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:897 +#: part/serializers.py:893 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:902 +#: part/serializers.py:898 msgid "Existing Image" msgstr "" -#: part/serializers.py:903 +#: part/serializers.py:899 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:920 +#: part/serializers.py:916 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1126 +#: part/serializers.py:1122 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1136 +#: part/serializers.py:1132 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1146 +#: part/serializers.py:1142 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1152 +#: part/serializers.py:1148 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1153 +#: part/serializers.py:1149 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1158 +#: part/serializers.py:1154 msgid "Generate Report" msgstr "" -#: part/serializers.py:1159 +#: part/serializers.py:1155 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1164 +#: part/serializers.py:1160 msgid "Update Parts" msgstr "" -#: part/serializers.py:1165 +#: part/serializers.py:1161 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1173 +#: part/serializers.py:1169 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1279 +#: part/serializers.py:1275 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1286 +#: part/serializers.py:1282 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1294 +#: part/serializers.py:1290 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1301 +#: part/serializers.py:1297 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1330 +#: part/serializers.py:1326 msgid "Update" msgstr "" -#: part/serializers.py:1331 +#: part/serializers.py:1327 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1354 +#: part/serializers.py:1350 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1361 +#: part/serializers.py:1357 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1364 +#: part/serializers.py:1360 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1727 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1739 +#: part/serializers.py:1735 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1740 +#: part/serializers.py:1736 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1745 +#: part/serializers.py:1741 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1746 +#: part/serializers.py:1742 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1747 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1752 +#: part/serializers.py:1748 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1757 +#: part/serializers.py:1753 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1758 +#: part/serializers.py:1754 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1792 +#: part/serializers.py:1788 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1793 +#: part/serializers.py:1789 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1823 +#: part/serializers.py:1819 msgid "No part column specified" msgstr "" -#: part/serializers.py:1867 +#: part/serializers.py:1863 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1870 +#: part/serializers.py:1866 msgid "No matching part found" msgstr "" -#: part/serializers.py:1873 +#: part/serializers.py:1869 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1882 +#: part/serializers.py:1878 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1890 +#: part/serializers.py:1886 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1911 +#: part/serializers.py:1907 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 +#: part/stocktake.py:225 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "" -#: part/stocktake.py:225 +#: part/stocktake.py:226 msgid "Total Cost Min" msgstr "" -#: part/stocktake.py:226 +#: part/stocktake.py:227 msgid "Total Cost Max" msgstr "" -#: part/stocktake.py:284 +#: part/stocktake.py:285 msgid "Stocktake Report Available" msgstr "" -#: part/stocktake.py:285 +#: part/stocktake.py:286 msgid "A new stocktake report is available for download" msgstr "" @@ -7155,7 +7227,7 @@ 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 +#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" @@ -7255,15 +7327,15 @@ msgstr "" msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:655 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:663 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:748 +#: part/templates/part/detail.html:750 msgid "Add Test Result Template" msgstr "" @@ -7344,7 +7416,7 @@ msgstr "" msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" msgstr "" @@ -7416,7 +7488,7 @@ 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:2443 +#: templates/js/translated/part.js:1265 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7509,8 +7581,8 @@ msgstr "" #: 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:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/part.js:1243 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 #: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7553,7 +7625,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:247 +#: part/templates/part/prices.html:28 stock/admin.py:251 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 @@ -7630,8 +7702,8 @@ msgstr "" #: part/templates/part/stock_count.html:7 #: templates/js/translated/model_renderers.js:227 -#: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 -#: templates/js/translated/part.js:2142 +#: templates/js/translated/part.js:705 templates/js/translated/part.js:2141 +#: templates/js/translated/part.js:2143 msgid "No Stock" msgstr "" @@ -8003,7 +8075,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:308 msgid "Landscape" msgstr "" @@ -8116,62 +8188,62 @@ msgstr "" msgid "Uninstalled plugin successfully" msgstr "" -#: plugin/models.py:35 +#: plugin/models.py:36 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:36 +#: plugin/models.py:37 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:42 users/models.py:100 +#: plugin/models.py:43 users/models.py:100 msgid "Key" msgstr "" -#: plugin/models.py:43 +#: plugin/models.py:44 msgid "Key of plugin" msgstr "" -#: plugin/models.py:51 +#: plugin/models.py:52 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:58 plugin/serializers.py:90 +#: plugin/models.py:59 plugin/serializers.py:90 msgid "Package Name" msgstr "" -#: plugin/models.py:60 +#: plugin/models.py:61 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:65 +#: plugin/models.py:66 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:156 templates/js/translated/table_filters.js:370 +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "" -#: plugin/models.py:165 +#: plugin/models.py:166 msgid "Sample plugin" msgstr "" -#: plugin/models.py:173 +#: plugin/models.py:174 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:181 +#: plugin/models.py:182 msgid "Package Plugin" msgstr "" -#: plugin/models.py:205 report/models.py:474 +#: plugin/models.py:220 report/models.py:475 #: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:252 +#: plugin/models.py:267 msgid "Method" msgstr "" @@ -8179,17 +8251,17 @@ msgstr "" msgid "No author found" msgstr "" -#: plugin/registry.py:597 +#: plugin/registry.py:534 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:600 +#: plugin/registry.py:537 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:602 +#: plugin/registry.py:539 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -8304,23 +8376,19 @@ msgstr "" msgid "Activate this plugin" msgstr "" -#: plugin/serializers.py:234 +#: plugin/serializers.py:226 msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:235 +#: plugin/serializers.py:227 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:77 +#: report/api.py:88 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:89 report/serializers.py:53 -msgid "Model Type" -msgstr "" - -#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/api.py:103 report/models.py:439 report/serializers.py:98 #: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 #: templates/js/translated/return_order.js:353 #: templates/js/translated/sales_order.js:887 @@ -8328,176 +8396,176 @@ msgstr "" msgid "Items" msgstr "" -#: report/api.py:168 +#: report/api.py:180 msgid "Plugin not found" msgstr "" -#: report/api.py:170 +#: report/api.py:182 msgid "Plugin is not active" msgstr "" -#: report/api.py:172 +#: report/api.py:184 msgid "Plugin does not support label printing" msgstr "" -#: report/api.py:221 +#: report/api.py:233 msgid "Invalid label dimensions" msgstr "" -#: report/api.py:236 report/api.py:316 +#: report/api.py:248 report/api.py:329 msgid "No valid items provided to template" msgstr "" -#: report/api.py:271 +#: report/api.py:283 msgid "Error printing label" msgstr "" -#: report/api.py:362 report/api.py:398 +#: report/api.py:375 report/api.py:411 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/helpers.py:41 +#: report/helpers.py:43 msgid "A4" msgstr "" -#: report/helpers.py:42 +#: report/helpers.py:44 msgid "A3" msgstr "" -#: report/helpers.py:43 +#: report/helpers.py:45 msgid "Legal" msgstr "" -#: report/helpers.py:44 +#: report/helpers.py:46 msgid "Letter" msgstr "" -#: report/models.py:118 +#: report/models.py:119 msgid "Template file with this name already exists" msgstr "" -#: report/models.py:150 +#: report/models.py:151 msgid "Template name" msgstr "" -#: report/models.py:156 +#: report/models.py:157 msgid "Template description" msgstr "" -#: report/models.py:162 +#: report/models.py:163 msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Filename Pattern" msgstr "" -#: report/models.py:203 +#: report/models.py:204 msgid "Pattern for generating filenames" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Template is enabled" msgstr "" -#: report/models.py:214 +#: report/models.py:215 msgid "Target model type for template" msgstr "" -#: report/models.py:234 +#: report/models.py:235 msgid "Filters" msgstr "" -#: report/models.py:235 +#: report/models.py:236 msgid "Template query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:294 report/models.py:361 +#: report/models.py:295 report/models.py:362 msgid "Template file" msgstr "" -#: report/models.py:302 +#: report/models.py:303 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:308 +#: report/models.py:309 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:367 +#: report/models.py:368 msgid "Width [mm]" msgstr "" -#: report/models.py:368 +#: report/models.py:369 msgid "Label width, specified in mm" msgstr "" -#: report/models.py:374 +#: report/models.py:375 msgid "Height [mm]" msgstr "" -#: report/models.py:375 +#: report/models.py:376 msgid "Label height, specified in mm" msgstr "" -#: report/models.py:438 +#: report/models.py:439 msgid "Number of items to process" msgstr "" -#: report/models.py:444 +#: report/models.py:445 msgid "Report generation is complete" msgstr "" -#: report/models.py:448 templates/js/translated/build.js:2177 +#: report/models.py:449 templates/js/translated/build.js:2177 msgid "Progress" msgstr "" -#: report/models.py:448 +#: report/models.py:449 msgid "Report generation progress" msgstr "" -#: report/models.py:456 +#: report/models.py:457 msgid "Report Template" msgstr "" -#: report/models.py:463 report/models.py:486 +#: report/models.py:464 report/models.py:487 msgid "Output File" msgstr "" -#: report/models.py:464 report/models.py:487 +#: report/models.py:465 report/models.py:488 msgid "Generated output file" msgstr "" -#: report/models.py:475 +#: report/models.py:476 msgid "Label output plugin" msgstr "" -#: report/models.py:479 +#: report/models.py:480 msgid "Label Template" msgstr "" -#: report/models.py:502 +#: report/models.py:503 msgid "Snippet" msgstr "" -#: report/models.py:503 +#: report/models.py:504 msgid "Report snippet file" msgstr "" -#: report/models.py:510 +#: report/models.py:511 msgid "Snippet file description" msgstr "" -#: report/models.py:528 +#: report/models.py:529 msgid "Asset" msgstr "" -#: report/models.py:529 +#: report/models.py:530 msgid "Report asset file" msgstr "" -#: report/models.py:536 +#: report/models.py:537 msgid "Asset file description" msgstr "" @@ -8570,8 +8638,8 @@ msgid "Total" msgstr "" #: report/templates/report/inventree_return_order_report.html:25 -#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 -#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:824 +#: stock/serializers.py:149 stock/templates/stock/item_base.html:311 #: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 #: templates/js/translated/build.js:2355 #: templates/js/translated/model_renderers.js:230 @@ -8601,32 +8669,32 @@ msgstr "" msgid "Test" msgstr "" -#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2412 msgid "Result" msgstr "" -#: report/templates/report/inventree_test_report.html:130 +#: report/templates/report/inventree_test_report.html:129 msgid "Pass" msgstr "" -#: report/templates/report/inventree_test_report.html:132 +#: report/templates/report/inventree_test_report.html:131 msgid "Fail" msgstr "" -#: report/templates/report/inventree_test_report.html:139 +#: report/templates/report/inventree_test_report.html:138 msgid "No result (required)" msgstr "" -#: report/templates/report/inventree_test_report.html:141 +#: report/templates/report/inventree_test_report.html:140 msgid "No result" msgstr "" -#: report/templates/report/inventree_test_report.html:154 +#: report/templates/report/inventree_test_report.html:153 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "" -#: report/templates/report/inventree_test_report.html:168 stock/admin.py:162 +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 #: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 #: templates/js/translated/stock.js:3110 msgid "Serial" @@ -8648,654 +8716,670 @@ msgstr "" msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:172 +#: stock/admin.py:51 stock/admin.py:171 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:176 +#: stock/admin.py:53 stock/admin.py:175 msgid "Location Name" msgstr "" -#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/admin.py:63 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:149 +#: stock/admin.py:148 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:168 +#: stock/admin.py:167 msgid "Status Code" msgstr "" -#: stock/admin.py:180 +#: stock/admin.py:179 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:185 +#: stock/admin.py:184 +msgid "Supplier Part SKU" +msgstr "" + +#: stock/admin.py:189 msgid "Supplier ID" msgstr "" -#: stock/admin.py:191 +#: stock/admin.py:195 msgid "Supplier Name" msgstr "" -#: stock/admin.py:196 +#: stock/admin.py:200 msgid "Customer ID" msgstr "" -#: stock/admin.py:201 stock/models.py:806 +#: stock/admin.py:205 stock/models.py:804 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:206 +#: stock/admin.py:210 msgid "Build ID" msgstr "" -#: stock/admin.py:216 +#: stock/admin.py:220 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:221 +#: stock/admin.py:225 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:236 +#: stock/admin.py:240 msgid "Review Needed" msgstr "" -#: stock/admin.py:241 +#: stock/admin.py:245 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:256 stock/models.py:900 +#: stock/admin.py:260 stock/models.py:898 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "" -#: stock/api.py:318 +#: stock/api.py:312 msgid "Filter by location depth" msgstr "" -#: stock/api.py:338 +#: stock/api.py:332 +msgid "Filter by top-level locations" +msgstr "" + +#: stock/api.py:347 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:359 +#: stock/api.py:369 stock/serializers.py:1085 msgid "Parent Location" msgstr "" -#: stock/api.py:360 +#: stock/api.py:370 msgid "Filter by parent location" msgstr "" -#: stock/api.py:615 templates/js/translated/table_filters.js:427 +#: stock/api.py:625 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:803 +#: stock/api.py:813 msgid "Part Tree" msgstr "" -#: stock/api.py:833 +#: stock/api.py:843 msgid "Expiry date before" msgstr "" -#: stock/api.py:837 +#: stock/api.py:847 msgid "Expiry date after" msgstr "" -#: stock/api.py:840 stock/templates/stock/item_base.html:439 +#: stock/api.py:850 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:927 +#: stock/api.py:937 msgid "Quantity is required" msgstr "" -#: stock/api.py:933 +#: stock/api.py:943 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:964 +#: stock/api.py:974 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:974 +#: stock/api.py:984 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:1005 +#: stock/api.py:1015 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:59 +#: stock/models.py:60 msgid "Stock Location type" msgstr "" -#: stock/models.py:60 +#: stock/models.py:61 msgid "Stock Location types" msgstr "" -#: stock/models.py:86 +#: stock/models.py:87 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:123 stock/models.py:788 +#: stock/models.py:124 stock/models.py:786 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:124 stock/templates/stock/location.html:186 +#: stock/models.py:125 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "" -#: stock/models.py:166 stock/models.py:949 +#: stock/models.py:167 stock/models.py:947 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:167 stock/models.py:950 +#: stock/models.py:168 stock/models.py:948 msgid "Select Owner" msgstr "" -#: stock/models.py:175 +#: stock/models.py:176 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:182 templates/js/translated/stock.js:2781 +#: stock/models.py:183 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:183 +#: stock/models.py:184 msgid "This is an external stock location" msgstr "" -#: stock/models.py:189 templates/js/translated/stock.js:2790 +#: stock/models.py:190 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" -#: stock/models.py:193 +#: stock/models.py:194 msgid "Stock location type of this location" msgstr "" -#: stock/models.py:262 +#: stock/models.py:261 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:643 +#: stock/models.py:641 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:670 stock/serializers.py:419 +#: stock/models.py:668 stock/serializers.py:446 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:687 +#: stock/models.py:685 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:697 stock/models.py:710 +#: stock/models.py:695 stock/models.py:708 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:700 +#: stock/models.py:698 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:724 +#: stock/models.py:722 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:729 +#: stock/models.py:727 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:742 +#: stock/models.py:740 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:758 +#: stock/models.py:756 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:770 +#: stock/models.py:768 msgid "Base part" msgstr "" -#: stock/models.py:780 +#: stock/models.py:778 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:792 +#: stock/models.py:790 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:800 stock/serializers.py:1480 +#: stock/models.py:798 stock/serializers.py:1476 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:811 +#: stock/models.py:809 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:830 +#: stock/models.py:828 msgid "Serial number for this item" msgstr "" -#: stock/models.py:844 stock/serializers.py:1463 +#: stock/models.py:842 stock/serializers.py:1459 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:849 +#: stock/models.py:847 msgid "Stock Quantity" msgstr "" -#: stock/models.py:859 +#: stock/models.py:857 msgid "Source Build" msgstr "" -#: stock/models.py:862 +#: stock/models.py:860 msgid "Build for this stock item" msgstr "" -#: stock/models.py:869 stock/templates/stock/item_base.html:363 +#: stock/models.py:867 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:872 +#: stock/models.py:870 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:881 +#: stock/models.py:879 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:885 +#: stock/models.py:883 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:891 +#: stock/models.py:889 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:902 +#: stock/models.py:900 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:920 +#: stock/models.py:918 msgid "Delete on deplete" msgstr "" -#: stock/models.py:921 +#: stock/models.py:919 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:941 +#: stock/models.py:939 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:972 +#: stock/models.py:970 msgid "Converted to part" msgstr "" -#: stock/models.py:1490 +#: stock/models.py:1486 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1496 +#: stock/models.py:1492 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1500 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1510 +#: stock/models.py:1506 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1515 +#: stock/models.py:1511 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1523 stock/serializers.py:658 +#: stock/models.py:1519 stock/serializers.py:660 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1620 +#: stock/models.py:1616 msgid "Test template does not exist" msgstr "" -#: stock/models.py:1638 +#: stock/models.py:1634 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1642 +#: stock/models.py:1638 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1645 +#: stock/models.py:1641 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1648 +#: stock/models.py:1644 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1651 +#: stock/models.py:1647 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1654 +#: stock/models.py:1650 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1661 stock/serializers.py:1369 +#: stock/models.py:1657 stock/serializers.py:1365 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1665 +#: stock/models.py:1661 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1673 +#: stock/models.py:1669 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1678 +#: stock/models.py:1674 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1905 +#: stock/models.py:1901 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2310 msgid "Entry notes" msgstr "" -#: stock/models.py:2391 +#: stock/models.py:2378 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2396 +#: stock/models.py:2383 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2423 +#: stock/models.py:2388 +msgid "Invalid value for this test" +msgstr "" + +#: stock/models.py:2412 msgid "Test result" msgstr "" -#: stock/models.py:2430 +#: stock/models.py:2419 msgid "Test output value" msgstr "" -#: stock/models.py:2438 +#: stock/models.py:2427 msgid "Test result attachment" msgstr "" -#: stock/models.py:2442 +#: stock/models.py:2431 msgid "Test notes" msgstr "" -#: stock/models.py:2450 templates/js/translated/stock.js:1548 +#: stock/models.py:2439 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2440 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2457 +#: stock/models.py:2446 msgid "Started" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2447 msgid "The timestamp of the test start" msgstr "" -#: stock/models.py:2464 +#: stock/models.py:2453 msgid "Finished" msgstr "" -#: stock/models.py:2465 +#: stock/models.py:2454 msgid "The timestamp of the test finish" msgstr "" -#: stock/serializers.py:75 +#: stock/serializers.py:74 msgid "Generated batch code" msgstr "" -#: stock/serializers.py:84 +#: stock/serializers.py:83 msgid "Select build order" msgstr "" -#: stock/serializers.py:93 +#: stock/serializers.py:92 msgid "Select stock item to generate batch code for" msgstr "" -#: stock/serializers.py:102 +#: stock/serializers.py:101 msgid "Select location to generate batch code for" msgstr "" -#: stock/serializers.py:111 +#: stock/serializers.py:110 msgid "Select part to generate batch code for" msgstr "" -#: stock/serializers.py:120 +#: stock/serializers.py:119 msgid "Select purchase order" msgstr "" -#: stock/serializers.py:127 +#: stock/serializers.py:126 msgid "Enter quantity for batch code" msgstr "" -#: stock/serializers.py:150 +#: stock/serializers.py:149 msgid "Generated serial number" msgstr "" -#: stock/serializers.py:159 +#: stock/serializers.py:158 msgid "Select part to generate serial number for" msgstr "" -#: stock/serializers.py:167 +#: stock/serializers.py:166 msgid "Quantity of serial numbers to generate" msgstr "" -#: stock/serializers.py:229 +#: stock/serializers.py:228 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:248 +#: stock/serializers.py:247 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:280 +#: stock/serializers.py:279 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:313 +#: stock/serializers.py:315 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:411 +#: stock/serializers.py:438 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:531 +#: stock/serializers.py:558 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:595 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:606 +#: stock/serializers.py:608 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:613 +#: stock/serializers.py:615 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 +#: stock/serializers.py:626 stock/serializers.py:1322 stock/serializers.py:1578 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:631 +#: stock/serializers.py:633 msgid "Optional note field" msgstr "" -#: stock/serializers.py:641 +#: stock/serializers.py:643 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:696 +#: stock/serializers.py:698 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:703 +#: stock/serializers.py:705 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:704 +#: stock/serializers.py:706 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 -#: stock/serializers.py:935 +#: stock/serializers.py:711 stock/serializers.py:791 stock/serializers.py:887 +#: stock/serializers.py:937 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:719 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:725 +#: stock/serializers.py:727 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:736 +#: stock/serializers.py:738 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:749 +#: stock/serializers.py:751 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:784 +#: stock/serializers.py:786 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:819 +#: stock/serializers.py:821 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:834 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:849 +#: stock/serializers.py:851 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:880 +#: stock/serializers.py:882 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:917 +#: stock/serializers.py:919 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:923 +#: stock/serializers.py:925 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:1019 stock/serializers.py:1082 +#: stock/serializers.py:1021 stock/serializers.py:1093 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:220 +#: stock/templates/stock/location.html:222 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1198 +#: stock/serializers.py:1086 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: stock/serializers.py:1194 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1202 +#: stock/serializers.py:1198 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1206 +#: stock/serializers.py:1202 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1230 +#: stock/serializers.py:1226 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1236 +#: stock/serializers.py:1232 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1244 +#: stock/serializers.py:1240 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1254 stock/serializers.py:1508 +#: stock/serializers.py:1250 stock/serializers.py:1504 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1333 +#: stock/serializers.py:1329 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1338 +#: stock/serializers.py:1334 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1339 +#: stock/serializers.py:1335 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1344 +#: stock/serializers.py:1340 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1345 +#: stock/serializers.py:1341 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1355 +#: stock/serializers.py:1351 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1422 +#: stock/serializers.py:1418 msgid "No Change" msgstr "" -#: stock/serializers.py:1451 +#: stock/serializers.py:1447 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1470 +#: stock/serializers.py:1466 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1498 +#: stock/serializers.py:1494 msgid "Stock transaction notes" msgstr "" @@ -9448,7 +9532,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276 msgid "Delete Test Data" msgstr "" @@ -9468,11 +9552,11 @@ msgstr "" msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:272 +#: stock/templates/stock/item.html:264 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "" @@ -9758,28 +9842,28 @@ msgstr "" msgid "Location Type" msgstr "" -#: stock/templates/stock/location.html:224 +#: stock/templates/stock/location.html:226 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:225 +#: stock/templates/stock/location.html:227 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:295 +#: stock/templates/stock/location.html:299 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:317 +#: stock/templates/stock/location.html:321 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:390 +#: stock/templates/stock/location.html:394 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:401 +#: stock/templates/stock/location.html:405 msgid "Link Barcode to Stock Location" msgstr "" @@ -10203,20 +10287,20 @@ msgstr "" msgid "Pricing Settings" msgstr "" -#: templates/InvenTree/settings/pricing.html:34 +#: templates/InvenTree/settings/pricing.html:35 msgid "Exchange Rates" msgstr "" -#: templates/InvenTree/settings/pricing.html:38 +#: templates/InvenTree/settings/pricing.html:39 msgid "Update Now" msgstr "" -#: templates/InvenTree/settings/pricing.html:46 -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 msgid "Last Update" msgstr "" -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:51 msgid "Never" msgstr "" @@ -10273,8 +10357,8 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:547 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 +#: templates/js/translated/part.js:393 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:402 msgid "Delete" msgstr "" @@ -10314,12 +10398,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 -#: templates/js/translated/part.js:1645 +#: templates/js/translated/part.js:1646 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 -#: templates/js/translated/part.js:1646 +#: templates/js/translated/part.js:1647 msgid "Delete Template" msgstr "" @@ -10709,7 +10793,7 @@ msgid "Submit Bug Report" msgstr "" #: templates/about.html:91 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 +#: templates/js/translated/helpers.js:589 msgid "copy to clipboard" msgstr "" @@ -10773,7 +10857,7 @@ 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 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45 msgid "Return to Site" msgstr "" @@ -10887,15 +10971,19 @@ msgstr "" msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "" -#: templates/allauth_2fa/setup.html:23 +#: templates/allauth_2fa/setup.html:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 msgid "Step 2" msgstr "" -#: templates/allauth_2fa/setup.html:27 +#: templates/allauth_2fa/setup.html:28 msgid "Input a token generated by the app:" msgstr "" -#: templates/allauth_2fa/setup.html:37 +#: templates/allauth_2fa/setup.html:38 msgid "Verify" msgstr "" @@ -10974,7 +11062,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3217 +#: templates/js/translated/part.js:3219 msgid "Minimum Quantity" msgstr "" @@ -11062,27 +11150,27 @@ msgstr "" msgid "Delete attachments" msgstr "" -#: templates/js/translated/attachment.js:253 +#: templates/js/translated/attachment.js:260 msgid "Attachment actions" msgstr "" -#: templates/js/translated/attachment.js:275 +#: templates/js/translated/attachment.js:294 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:315 +#: templates/js/translated/attachment.js:334 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:365 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:366 +#: templates/js/translated/attachment.js:385 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:374 +#: templates/js/translated/attachment.js:393 msgid "Delete attachment" msgstr "" @@ -11363,7 +11451,7 @@ msgid "Includes variant and substitute stock" msgstr "" #: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 -#: templates/js/translated/part.js:1256 +#: templates/js/translated/part.js:1257 #: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" @@ -11690,7 +11778,7 @@ msgstr "" #: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 #: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 -#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11733,8 +11821,8 @@ msgstr "" msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 -#: templates/js/translated/part.js:1202 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:791 +#: templates/js/translated/part.js:1203 msgid "Trackable part" msgstr "" @@ -11920,7 +12008,7 @@ msgid "Delete Parameters" msgstr "" #: templates/js/translated/company.js:1191 -#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2244 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2245 msgid "Order parts" msgstr "" @@ -11937,34 +12025,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:1279 -#: templates/js/translated/company.js:1567 templates/js/translated/part.js:798 -#: templates/js/translated/part.js:1210 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Template part" msgstr "" #: templates/js/translated/company.js:1283 -#: templates/js/translated/company.js:1571 templates/js/translated/part.js:802 -#: templates/js/translated/part.js:1214 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:803 +#: templates/js/translated/part.js:1215 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1464 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1465 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1527 +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1528 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1528 +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1529 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1433 +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1434 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1549 +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1550 msgid "Delete Parameter" msgstr "" @@ -12098,23 +12186,23 @@ msgstr "" msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2499 +#: templates/js/translated/forms.js:2500 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3113 +#: templates/js/translated/forms.js:3114 msgid "Select Columns" msgstr "" @@ -12215,7 +12303,7 @@ msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 -#: templates/js/translated/part.js:1604 +#: templates/js/translated/part.js:1605 msgid "ID" msgstr "" @@ -12296,347 +12384,343 @@ msgstr "" 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 +#: templates/js/translated/part.js:333 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:355 +#: templates/js/translated/part.js:356 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:356 +#: templates/js/translated/part.js:357 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:370 +#: templates/js/translated/part.js:371 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:383 +#: templates/js/translated/part.js:384 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:388 +#: templates/js/translated/part.js:389 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:397 +#: templates/js/translated/part.js:398 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:401 +#: templates/js/translated/part.js:402 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:406 +#: templates/js/translated/part.js:407 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:430 +#: templates/js/translated/part.js:431 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:432 +#: templates/js/translated/part.js:433 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:433 +#: templates/js/translated/part.js:434 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:462 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:463 +#: templates/js/translated/part.js:464 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:474 +#: templates/js/translated/part.js:475 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:531 +#: templates/js/translated/part.js:532 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:532 +#: templates/js/translated/part.js:533 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:546 +#: templates/js/translated/part.js:547 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:548 +#: templates/js/translated/part.js:549 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:549 +#: templates/js/translated/part.js:550 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:550 +#: templates/js/translated/part.js:551 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:557 +#: templates/js/translated/part.js:558 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:593 +#: templates/js/translated/part.js:594 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:595 +#: templates/js/translated/part.js:596 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:600 +#: templates/js/translated/part.js:601 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:602 +#: templates/js/translated/part.js:603 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:619 +#: templates/js/translated/part.js:620 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:629 +#: templates/js/translated/part.js:630 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:632 +#: templates/js/translated/part.js:633 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:657 +#: templates/js/translated/part.js:658 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:685 +#: templates/js/translated/part.js:686 #: templates/js/translated/table_filters.js:747 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:688 +#: templates/js/translated/part.js:689 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:748 +#: templates/js/translated/part.js:749 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:771 +#: templates/js/translated/part.js:772 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +#: templates/js/translated/part.js:795 templates/js/translated/part.js:1207 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:806 +#: templates/js/translated/part.js:807 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:810 +#: templates/js/translated/part.js:811 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:897 +#: templates/js/translated/part.js:898 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:901 +#: templates/js/translated/part.js:902 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1050 +#: templates/js/translated/part.js:1051 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1145 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +#: templates/js/translated/part.js:1113 templates/js/translated/part.js:1155 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1281 +#: templates/js/translated/part.js:1282 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1599 +#: templates/js/translated/part.js:1600 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1662 +#: templates/js/translated/part.js:1663 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1674 +#: templates/js/translated/part.js:1675 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1682 +#: templates/js/translated/part.js:1683 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1716 +#: templates/js/translated/part.js:1717 #: templates/js/translated/purchase_order.js:1654 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1860 +#: templates/js/translated/part.js:1861 #: templates/js/translated/purchase_order.js:2153 #: templates/js/translated/return_order.js:755 #: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1906 +#: templates/js/translated/part.js:1907 #: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1970 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1991 +#: templates/js/translated/part.js:1992 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 +#: templates/js/translated/part.js:2080 templates/js/translated/part.js:2506 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2200 +#: templates/js/translated/part.js:2201 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2205 +#: templates/js/translated/part.js:2206 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2235 +#: templates/js/translated/part.js:2236 msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2286 +#: templates/js/translated/part.js:2287 msgid "part" msgstr "" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2288 msgid "parts" msgstr "" -#: templates/js/translated/part.js:2383 +#: templates/js/translated/part.js:2384 msgid "No category" msgstr "" -#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2546 +#: templates/js/translated/part.js:2547 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2644 +#: templates/js/translated/part.js:2645 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2760 +#: templates/js/translated/part.js:2761 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2776 +#: templates/js/translated/part.js:2777 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2865 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2887 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/part.js:2938 templates/js/translated/stock.js:1457 #: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2940 +#: templates/js/translated/part.js:2942 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2956 +#: templates/js/translated/part.js:2958 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2970 +#: templates/js/translated/part.js:2972 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3051 templates/js/translated/part.js:3052 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3052 +#: templates/js/translated/part.js:3054 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3058 +#: templates/js/translated/part.js:3060 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3108 +#: templates/js/translated/part.js:3110 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3114 +#: templates/js/translated/part.js:3116 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3210 +#: templates/js/translated/part.js:3212 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3226 +#: templates/js/translated/part.js:3228 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3271 +#: templates/js/translated/part.js:3273 msgid "Minimum Stock Level" msgstr "" @@ -13244,10 +13328,6 @@ msgstr "" 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 "" @@ -13416,7 +13496,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:401 +#: templates/js/translated/stock.js:1042 users/models.py:392 msgid "Add" msgstr "" @@ -14307,34 +14387,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:384 +#: users/models.py:375 msgid "Permission set" msgstr "" -#: users/models.py:393 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "View" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "Permission to view items" msgstr "" -#: users/models.py:401 +#: users/models.py:392 msgid "Permission to add items" msgstr "" -#: users/models.py:405 +#: users/models.py:396 msgid "Change" msgstr "" -#: users/models.py:407 +#: users/models.py:398 msgid "Permissions to edit items" msgstr "" -#: users/models.py:413 +#: users/models.py:404 msgid "Permission to delete items" msgstr "" + diff --git a/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po index be983506d7..f0ebeec87a 100644 --- a/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po +++ b/src/backend/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-05-31 07:08+0000\n" +"POT-Creation-Date: 2024-06-26 03:18+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,7 +22,7 @@ msgstr "" msgid "API endpoint not found" msgstr "" -#: InvenTree/api.py:536 +#: InvenTree/api.py:520 msgid "User does not have permission to view this model" msgstr "" @@ -53,25 +53,25 @@ msgstr "" msgid "Error details can be found in the admin panel" msgstr "" -#: InvenTree/fields.py:139 +#: InvenTree/fields.py:136 msgid "Enter date" msgstr "" -#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 -#: build/serializers.py:531 build/templates/build/sidebar.html:21 -#: company/models.py:849 company/templates/company/sidebar.html:37 -#: order/models.py:1332 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:205 InvenTree/models.py:918 build/serializers.py:452 +#: build/serializers.py:530 build/templates/build/sidebar.html:21 +#: company/models.py:817 company/templates/company/sidebar.html:37 +#: order/models.py:1296 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:3218 part/templates/part/part_sidebar.html:63 +#: part/models.py:3183 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_report.html:172 -#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 -#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 -#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 -#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:230 stock/models.py:2309 stock/models.py:2431 +#: stock/serializers.py:632 stock/serializers.py:790 stock/serializers.py:886 +#: stock/serializers.py:936 stock/serializers.py:1239 stock/serializers.py:1328 +#: stock/serializers.py:1493 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1080 +#: templates/js/translated/part.js:1081 #: templates/js/translated/purchase_order.js:2200 #: templates/js/translated/return_order.js:775 #: templates/js/translated/sales_order.js:1103 @@ -121,15 +121,15 @@ msgstr "" msgid "You must type the same email each time." msgstr "" -#: InvenTree/forms.py:253 InvenTree/forms.py:261 +#: InvenTree/forms.py:248 InvenTree/forms.py:256 msgid "The provided primary email address is not valid." msgstr "" -#: InvenTree/forms.py:268 +#: InvenTree/forms.py:263 msgid "The provided email domain is not approved." msgstr "" -#: InvenTree/forms.py:395 +#: InvenTree/forms.py:390 msgid "Registration is disabled." msgstr "" @@ -172,35 +172,35 @@ msgstr "" msgid "Remove HTML tags from this value" msgstr "" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Connection error" msgstr "" -#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 msgid "Server responded with invalid status code" msgstr "" -#: InvenTree/helpers_model.py:158 +#: InvenTree/helpers_model.py:148 msgid "Exception occurred" msgstr "" -#: InvenTree/helpers_model.py:168 +#: InvenTree/helpers_model.py:158 msgid "Server responded with invalid Content-Length value" msgstr "" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:161 msgid "Image size is too large" msgstr "" -#: InvenTree/helpers_model.py:183 +#: InvenTree/helpers_model.py:173 msgid "Image download exceeded maximum size" msgstr "" -#: InvenTree/helpers_model.py:188 +#: InvenTree/helpers_model.py:178 msgid "Remote server returned empty response" msgstr "" -#: InvenTree/helpers_model.py:196 +#: InvenTree/helpers_model.py:186 msgid "Supplied URL is not a valid image file" msgstr "" @@ -297,46 +297,50 @@ msgid "Portuguese (Brazilian)" msgstr "" #: InvenTree/locales.py:41 -msgid "Russian" +msgid "Romanian" msgstr "" #: InvenTree/locales.py:42 -msgid "Slovak" +msgid "Russian" msgstr "" #: InvenTree/locales.py:43 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: InvenTree/locales.py:44 -msgid "Serbian" +msgid "Slovenian" msgstr "" #: InvenTree/locales.py:45 -msgid "Swedish" +msgid "Serbian" msgstr "" #: InvenTree/locales.py:46 -msgid "Thai" +msgid "Swedish" msgstr "" #: InvenTree/locales.py:47 -msgid "Turkish" +msgid "Thai" msgstr "" #: InvenTree/locales.py:48 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: InvenTree/locales.py:49 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: InvenTree/locales.py:50 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: InvenTree/locales.py:51 +msgid "Chinese (Simplified)" +msgstr "" + +#: InvenTree/locales.py:52 msgid "Chinese (Traditional)" msgstr "" @@ -345,153 +349,65 @@ msgstr "" msgid "[{site_name}] Log in to the app" msgstr "" -#: InvenTree/magic_login.py:38 company/models.py:133 +#: InvenTree/magic_login.py:38 company/models.py:136 #: company/templates/company/company_base.html:138 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:677 msgid "Email" msgstr "" -#: InvenTree/models.py:107 +#: InvenTree/models.py:105 msgid "Error running plugin validation" msgstr "" -#: InvenTree/models.py:176 +#: InvenTree/models.py:174 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:182 +#: InvenTree/models.py:180 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:183 +#: InvenTree/models.py:181 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:413 +#: InvenTree/models.py:408 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:420 +#: InvenTree/models.py:415 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:426 +#: InvenTree/models.py:421 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:437 +#: InvenTree/models.py:432 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:445 +#: InvenTree/models.py:440 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:476 +#: InvenTree/models.py:471 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:550 -msgid "Missing file" -msgstr "" - -#: InvenTree/models.py:551 -msgid "Missing external link" -msgstr "" - -#: InvenTree/models.py:572 stock/models.py:2437 -#: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:326 -msgid "Attachment" -msgstr "" - -#: InvenTree/models.py:573 -msgid "Select file to attach" -msgstr "" - -#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:831 -#: order/models.py:303 order/models.py:1337 order/models.py:1753 -#: part/admin.py:55 part/models.py:962 -#: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_report.html:164 -#: stock/admin.py:225 templates/js/translated/company.js:1319 -#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2455 -#: templates/js/translated/purchase_order.js:2040 -#: templates/js/translated/purchase_order.js:2204 -#: templates/js/translated/return_order.js:779 -#: templates/js/translated/sales_order.js:1092 -#: templates/js/translated/sales_order.js:2023 -msgid "Link" -msgstr "" - -#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 -#: stock/models.py:836 -msgid "Link to external URL" -msgstr "" - -#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:341 -msgid "Comment" -msgstr "" - -#: InvenTree/models.py:589 -msgid "File comment" -msgstr "" - -#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 -#: common/models.py:2518 common/models.py:2742 common/models.py:2743 -#: common/models.py:2988 common/models.py:2989 part/models.py:3228 -#: part/models.py:3315 part/models.py:3408 part/models.py:3436 -#: plugin/models.py:259 plugin/models.py:260 -#: report/templates/report/inventree_test_report.html:105 -#: templates/js/translated/stock.js:3036 users/models.py:111 -msgid "User" -msgstr "" - -#: InvenTree/models.py:602 -msgid "upload date" -msgstr "" - -#: InvenTree/models.py:624 -msgid "Filename must not be empty" -msgstr "" - -#: InvenTree/models.py:635 -msgid "Invalid attachment directory" -msgstr "" - -#: InvenTree/models.py:665 -#, python-brace-format -msgid "Filename contains illegal character '{c}'" -msgstr "" - -#: InvenTree/models.py:668 -msgid "Filename missing extension" -msgstr "" - -#: InvenTree/models.py:677 -msgid "Attachment with this filename already exists" -msgstr "" - -#: InvenTree/models.py:684 -msgid "Error renaming file" -msgstr "" - -#: InvenTree/models.py:860 +#: InvenTree/models.py:719 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:877 +#: InvenTree/models.py:736 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 -#: common/serializers.py:403 company/models.py:614 machine/models.py:24 -#: part/models.py:898 part/models.py:3659 plugin/models.py:50 -#: report/models.py:149 stock/models.py:72 +#: InvenTree/models.py:766 common/models.py:2623 common/models.py:3036 +#: common/serializers.py:408 company/models.py:580 machine/models.py:24 +#: part/models.py:891 part/models.py:3639 plugin/models.py:51 +#: report/models.py:150 stock/models.py:73 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:83 @@ -502,25 +418,25 @@ msgstr "" #: templates/js/translated/company.js:724 #: templates/js/translated/company.js:913 #: templates/js/translated/company.js:1165 -#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 -#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1187 +#: templates/js/translated/part.js:1475 templates/js/translated/part.js:1611 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "" -#: InvenTree/models.py:913 build/models.py:218 -#: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:523 company/models.py:840 +#: InvenTree/models.py:772 build/models.py:220 +#: build/templates/build/detail.html:24 common/models.py:138 +#: company/models.py:509 company/models.py:808 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 order/models.py:289 -#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 -#: part/models.py:3674 part/templates/part/category.html:82 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:914 +#: part/models.py:3654 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:155 -#: report/models.py:509 report/models.py:535 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 #: report/templates/report/inventree_build_order_report.html:117 -#: stock/admin.py:55 stock/models.py:78 stock/templates/stock/location.html:125 +#: stock/admin.py:54 stock/models.py:79 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 @@ -529,10 +445,10 @@ msgstr "" #: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 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:2354 -#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1239 +#: templates/js/translated/part.js:1484 templates/js/translated/part.js:1622 +#: templates/js/translated/part.js:1959 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2897 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1706 #: templates/js/translated/purchase_order.js:1849 @@ -545,149 +461,141 @@ msgstr "" msgid "Description" msgstr "" -#: InvenTree/models.py:914 stock/models.py:79 +#: InvenTree/models.py:773 stock/models.py:80 msgid "Description (optional)" msgstr "" -#: InvenTree/models.py:923 -msgid "parent" -msgstr "" - -#: InvenTree/models.py:929 templates/js/translated/part.js:2793 +#: InvenTree/models.py:788 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "" -#: InvenTree/models.py:1035 +#: InvenTree/models.py:918 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:1064 +#: InvenTree/models.py:947 msgid "Barcode Data" msgstr "" -#: InvenTree/models.py:1065 +#: InvenTree/models.py:948 msgid "Third party barcode data" msgstr "" -#: InvenTree/models.py:1071 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:1072 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:1125 +#: InvenTree/models.py:1008 msgid "Existing barcode found" msgstr "" -#: InvenTree/models.py:1168 +#: InvenTree/models.py:1051 msgid "Server Error" msgstr "" -#: InvenTree/models.py:1169 +#: InvenTree/models.py:1052 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:62 part/models.py:4212 +#: InvenTree/serializers.py:63 part/models.py:4192 msgid "Must be a valid number" msgstr "" -#: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:3036 +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3001 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "" -#: InvenTree/serializers.py:102 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:441 +#: InvenTree/serializers.py:442 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:453 +#: InvenTree/serializers.py:454 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:472 +#: InvenTree/serializers.py:473 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:474 +#: InvenTree/serializers.py:475 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:481 +#: InvenTree/serializers.py:482 msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:542 -msgid "Filename" -msgstr "" - -#: InvenTree/serializers.py:576 +#: InvenTree/serializers.py:540 msgid "Invalid value" msgstr "" -#: InvenTree/serializers.py:596 +#: InvenTree/serializers.py:560 msgid "Data File" msgstr "" -#: InvenTree/serializers.py:597 +#: InvenTree/serializers.py:561 msgid "Select data file for upload" msgstr "" -#: InvenTree/serializers.py:614 +#: InvenTree/serializers.py:578 msgid "Unsupported file type" msgstr "" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:584 msgid "File is too large" msgstr "" -#: InvenTree/serializers.py:641 +#: InvenTree/serializers.py:605 msgid "No columns found in file" msgstr "" -#: InvenTree/serializers.py:644 +#: InvenTree/serializers.py:608 msgid "No data rows found in file" msgstr "" -#: InvenTree/serializers.py:757 +#: InvenTree/serializers.py:721 msgid "No data rows provided" msgstr "" -#: InvenTree/serializers.py:760 +#: InvenTree/serializers.py:724 msgid "No data columns supplied" msgstr "" -#: InvenTree/serializers.py:827 +#: InvenTree/serializers.py:791 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "" -#: InvenTree/serializers.py:836 +#: InvenTree/serializers.py:800 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/serializers.py:859 +#: InvenTree/serializers.py:840 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:860 +#: InvenTree/serializers.py:841 msgid "URL of remote image file" msgstr "" -#: InvenTree/serializers.py:878 +#: InvenTree/serializers.py:859 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/status.py:66 part/serializers.py:1178 +#: InvenTree/status.py:66 part/serializers.py:1174 msgid "Background worker check failed" msgstr "" @@ -699,27 +607,27 @@ msgstr "" msgid "InvenTree system health checks failed" msgstr "" -#: InvenTree/templatetags/inventree_extras.py:183 +#: InvenTree/templatetags/inventree_extras.py:184 msgid "Unknown database" msgstr "" -#: InvenTree/validators.py:31 InvenTree/validators.py:33 +#: InvenTree/validators.py:32 InvenTree/validators.py:34 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:39 +#: InvenTree/validators.py:40 msgid "Not a valid currency code" msgstr "" -#: InvenTree/validators.py:121 InvenTree/validators.py:137 +#: InvenTree/validators.py:118 InvenTree/validators.py:134 msgid "Overage value must not be negative" msgstr "" -#: InvenTree/validators.py:139 +#: InvenTree/validators.py:136 msgid "Overage must not exceed 100%" msgstr "" -#: InvenTree/validators.py:145 +#: InvenTree/validators.py:142 msgid "Invalid value for overage" msgstr "" @@ -751,14 +659,14 @@ msgstr "" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: build/api.py:299 part/models.py:4070 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:300 part/models.py:4084 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4064 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2529 #: templates/js/translated/table_filters.js:186 @@ -779,30 +687,30 @@ msgstr "" msgid "Allocated" msgstr "" -#: build/api.py:311 company/models.py:904 company/serializers.py:383 +#: build/api.py:311 company/models.py:872 company/serializers.py:359 #: 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:2561 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:234 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 -#: templates/js/translated/part.js:699 +#: templates/js/translated/part.js:693 templates/js/translated/part.js:695 +#: templates/js/translated/part.js:700 #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:575 msgid "Available" msgstr "" -#: build/models.py:83 build/templates/build/build_base.html:9 +#: build/models.py:85 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_report.html:105 -#: stock/serializers.py:83 templates/email/build_order_completed.html:16 +#: stock/serializers.py:82 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:2892 msgid "Build Order" msgstr "" -#: build/models.py:84 build/templates/build/build_base.html:13 +#: build/models.py:86 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 @@ -813,25 +721,25 @@ msgstr "" msgid "Build Orders" msgstr "" -#: build/models.py:131 +#: build/models.py:133 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:142 order/models.py:240 +#: build/models.py:144 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "" -#: build/models.py:148 +#: build/models.py:150 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:209 +#: build/models.py:211 msgid "Build Order Reference" msgstr "" -#: build/models.py:210 order/models.py:463 order/models.py:928 -#: order/models.py:1325 order/models.py:2056 part/admin.py:419 -#: part/models.py:4105 part/templates/part/upload_bom.html:54 +#: build/models.py:212 order/models.py:463 order/models.py:926 +#: order/models.py:1289 order/models.py:2020 part/admin.py:411 +#: part/models.py:4085 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_purchase_order_report.html:28 #: report/templates/report/inventree_return_order_report.html:26 @@ -845,27 +753,27 @@ msgstr "" msgid "Reference" msgstr "" -#: build/models.py:221 +#: build/models.py:223 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:229 build/templates/build/build_base.html:183 +#: build/models.py:231 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:230 +#: build/models.py:232 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:235 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 -#: order/models.py:1450 order/models.py:1595 order/models.py:1596 -#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 -#: part/models.py:3191 part/models.py:3335 part/models.py:3358 -#: part/models.py:3379 part/models.py:3401 part/models.py:3511 -#: part/models.py:3807 part/models.py:3963 part/models.py:4056 -#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 +#: build/models.py:237 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1026 order/api.py:805 +#: order/models.py:1414 order/models.py:1559 order/models.py:1560 +#: part/api.py:1494 part/api.py:1788 part/models.py:395 part/models.py:3012 +#: part/models.py:3156 part/models.py:3303 part/models.py:3324 +#: part/models.py:3346 part/models.py:3477 part/models.py:3787 +#: part/models.py:3943 part/models.py:4036 part/models.py:4395 +#: part/serializers.py:1120 part/serializers.py:1726 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -876,8 +784,8 @@ msgstr "" #: report/templates/report/inventree_return_order_report.html:24 #: report/templates/report/inventree_sales_order_report.html:27 #: report/templates/report/inventree_stock_location_report.html:102 -#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 -#: stock/serializers.py:818 templates/InvenTree/search.html:82 +#: stock/serializers.py:109 stock/serializers.py:157 stock/serializers.py:423 +#: stock/serializers.py:820 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 @@ -890,8 +798,8 @@ msgstr "" #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 -#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2323 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:1944 templates/js/translated/part.js:2016 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 #: templates/js/translated/purchase_order.js:751 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1848 @@ -909,107 +817,107 @@ msgstr "" msgid "Part" msgstr "" -#: build/models.py:243 +#: build/models.py:245 msgid "Select part to build" msgstr "" -#: build/models.py:248 +#: build/models.py:250 msgid "Sales Order Reference" msgstr "" -#: build/models.py:252 +#: build/models.py:254 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:257 build/serializers.py:1000 +#: build/models.py:259 build/serializers.py:999 #: templates/js/translated/build.js:1731 #: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "" -#: build/models.py:261 +#: build/models.py:263 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:266 +#: build/models.py:268 msgid "Destination Location" msgstr "" -#: build/models.py:270 +#: build/models.py:272 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:274 +#: build/models.py:276 msgid "Build Quantity" msgstr "" -#: build/models.py:277 +#: build/models.py:279 msgid "Number of stock items to build" msgstr "" -#: build/models.py:281 +#: build/models.py:283 msgid "Completed items" msgstr "" -#: build/models.py:283 +#: build/models.py:285 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:287 +#: build/models.py:289 msgid "Build Status" msgstr "" -#: build/models.py:291 +#: build/models.py:293 msgid "Build status code" msgstr "" -#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 -#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 +#: build/models.py:302 build/serializers.py:286 order/serializers.py:580 +#: stock/models.py:838 stock/serializers.py:74 stock/serializers.py:1458 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "" -#: build/models.py:304 build/serializers.py:288 +#: build/models.py:306 build/serializers.py:287 msgid "Batch code for this build output" msgstr "" -#: build/models.py:307 order/models.py:316 order/serializers.py:120 -#: part/models.py:1122 part/templates/part/part_base.html:310 +#: build/models.py:309 order/models.py:316 order/serializers.py:119 +#: part/models.py:1115 part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:338 #: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "" -#: build/models.py:311 +#: build/models.py:313 msgid "Target completion date" msgstr "" -#: build/models.py:312 +#: build/models.py:314 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:315 order/models.py:521 order/models.py:2101 +#: build/models.py:317 order/models.py:521 order/models.py:2065 #: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "" -#: build/models.py:321 +#: build/models.py:323 msgid "completed by" msgstr "" -#: build/models.py:329 templates/js/translated/build.js:2207 +#: build/models.py:331 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "" -#: build/models.py:330 +#: build/models.py:332 msgid "User who issued this build order" msgstr "" -#: build/models.py:338 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:145 +#: build/models.py:340 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:147 #: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:232 part/models.py:1139 +#: order/templates/order/sales_order_base.html:232 part/models.py:1132 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_report.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 @@ -1020,31 +928,36 @@ msgstr "" msgid "Responsible" msgstr "" -#: build/models.py:339 +#: build/models.py:341 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:344 build/templates/build/detail.html:108 +#: build/models.py:346 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:184 -#: part/templates/part/part_base.html:383 stock/models.py:836 +#: part/templates/part/part_base.html:383 stock/models.py:834 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "" -#: build/models.py:349 +#: build/models.py:347 common/models.py:3178 part/models.py:956 +#: stock/models.py:834 +msgid "Link to external URL" +msgstr "" + +#: build/models.py:351 msgid "Build Priority" msgstr "" -#: build/models.py:352 +#: build/models.py:354 msgid "Priority of this build order" msgstr "" -#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: build/models.py:361 common/models.py:131 order/admin.py:18 #: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 #: templates/js/translated/build.js:2144 #: templates/js/translated/purchase_order.js:1710 @@ -1055,65 +968,65 @@ msgstr "" msgid "Project Code" msgstr "" -#: build/models.py:360 +#: build/models.py:362 msgid "Project code for this build order" msgstr "" -#: build/models.py:593 build/models.py:658 +#: build/models.py:595 build/models.py:660 msgid "Failed to offload task to complete build allocations" msgstr "" -#: build/models.py:615 +#: build/models.py:617 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:621 +#: build/models.py:623 msgid "A build order has been completed" msgstr "" -#: build/models.py:847 build/models.py:932 +#: build/models.py:849 build/models.py:934 msgid "No build output specified" msgstr "" -#: build/models.py:850 +#: build/models.py:852 msgid "Build output is already completed" msgstr "" -#: build/models.py:853 +#: build/models.py:855 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 -#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 -#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 -#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 +#: build/models.py:938 build/serializers.py:219 build/serializers.py:268 +#: build/serializers.py:866 order/models.py:559 order/serializers.py:432 +#: order/serializers.py:575 part/serializers.py:1484 part/serializers.py:1884 +#: stock/models.py:677 stock/models.py:1495 stock/serializers.py:603 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:941 build/serializers.py:225 +#: build/models.py:943 build/serializers.py:224 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1001 build/serializers.py:548 +#: build/models.py:1003 build/serializers.py:547 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1352 +#: build/models.py:1344 msgid "Build Order Line Item" msgstr "" -#: build/models.py:1377 +#: build/models.py:1369 msgid "Build object" msgstr "" -#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 -#: build/serializers.py:254 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2539 -#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 -#: part/forms.py:48 part/models.py:3205 part/models.py:4078 +#: build/models.py:1383 build/models.py:1639 build/serializers.py:206 +#: build/serializers.py:253 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2509 +#: order/models.py:1272 order/models.py:1931 order/serializers.py:1327 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3170 part/models.py:4058 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1122,8 +1035,8 @@ msgstr "" #: report/templates/report/inventree_sales_order_report.html:29 #: report/templates/report/inventree_stock_location_report.html:104 #: report/templates/report/inventree_test_report.html:90 -#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 -#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:125 stock/serializers.py:165 stock/serializers.py:594 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1134,8 +1047,8 @@ msgstr "" #: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 #: templates/js/translated/model_renderers.js:236 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:962 +#: templates/js/translated/part.js:1812 templates/js/translated/part.js:3342 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1155,38 +1068,38 @@ msgstr "" msgid "Quantity" msgstr "" -#: build/models.py:1392 +#: build/models.py:1384 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1472 +#: build/models.py:1464 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1481 +#: build/models.py:1473 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1491 order/models.py:1918 +#: build/models.py:1483 order/models.py:1882 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1497 order/models.py:1921 +#: build/models.py:1489 order/models.py:1885 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1503 +#: build/models.py:1495 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1562 +#: build/models.py:1554 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 -#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 -#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: build/models.py:1626 build/serializers.py:846 order/serializers.py:1171 +#: order/serializers.py:1192 stock/models.py:358 stock/serializers.py:91 +#: stock/serializers.py:697 stock/serializers.py:1177 stock/serializers.py:1289 #: stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 @@ -1202,70 +1115,70 @@ msgstr "" msgid "Stock Item" msgstr "" -#: build/models.py:1635 +#: build/models.py:1627 msgid "Source stock item" msgstr "" -#: build/models.py:1648 +#: build/models.py:1640 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1656 +#: build/models.py:1648 msgid "Install into" msgstr "" -#: build/models.py:1657 +#: build/models.py:1649 msgid "Destination stock item" msgstr "" -#: build/serializers.py:157 build/serializers.py:876 +#: build/serializers.py:156 build/serializers.py:875 #: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "" -#: build/serializers.py:169 +#: build/serializers.py:168 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:173 +#: build/serializers.py:172 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:177 +#: build/serializers.py:176 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:188 +#: build/serializers.py:187 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:208 build/serializers.py:255 +#: build/serializers.py:207 build/serializers.py:254 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:276 +#: build/serializers.py:275 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:279 +#: build/serializers.py:278 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:294 order/serializers.py:589 order/serializers.py:1343 -#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:293 order/serializers.py:588 order/serializers.py:1331 +#: stock/serializers.py:614 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:295 +#: build/serializers.py:294 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 -#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 -#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 -#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 -#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 +#: build/serializers.py:299 build/serializers.py:440 build/serializers.py:512 +#: order/serializers.py:564 order/serializers.py:672 order/serializers.py:1656 +#: part/serializers.py:1140 stock/serializers.py:100 stock/serializers.py:625 +#: stock/serializers.py:785 stock/serializers.py:881 stock/serializers.py:1321 +#: stock/serializers.py:1577 stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:1001 #: templates/js/translated/build.js:2372 @@ -1281,54 +1194,54 @@ msgstr "" msgid "Location" msgstr "" -#: build/serializers.py:301 +#: build/serializers.py:300 msgid "Stock location for build output" msgstr "" -#: build/serializers.py:315 +#: build/serializers.py:314 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:316 +#: build/serializers.py:315 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:331 +#: build/serializers.py:330 msgid "Serial numbers must be provided for trackable parts" msgstr "" -#: build/serializers.py:356 stock/api.py:1031 +#: build/serializers.py:355 stock/api.py:1041 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:403 build/serializers.py:465 build/serializers.py:554 +#: build/serializers.py:402 build/serializers.py:464 build/serializers.py:553 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:442 +#: build/serializers.py:441 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:448 +#: build/serializers.py:447 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:449 +#: build/serializers.py:448 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:454 +#: build/serializers.py:453 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:514 +#: build/serializers.py:513 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:520 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:952 -#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 -#: stock/serializers.py:930 stock/serializers.py:1469 +#: build/serializers.py:519 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2044 order/serializers.py:596 stock/admin.py:164 +#: stock/serializers.py:932 stock/serializers.py:1465 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 @@ -1340,188 +1253,188 @@ msgstr "" msgid "Status" msgstr "" -#: build/serializers.py:526 +#: build/serializers.py:525 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:527 +#: build/serializers.py:526 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:611 msgid "Consume Allocated Stock" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:612 msgid "Consume any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:619 +#: build/serializers.py:618 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:620 +#: build/serializers.py:619 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:646 msgid "Not permitted" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:647 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:648 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:679 +#: build/serializers.py:678 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:681 +#: build/serializers.py:680 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:691 +#: build/serializers.py:690 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:696 +#: build/serializers.py:695 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:697 +#: build/serializers.py:696 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:707 templates/js/translated/build.js:315 +#: build/serializers.py:706 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:712 order/serializers.py:301 order/serializers.py:1246 +#: build/serializers.py:711 order/serializers.py:300 order/serializers.py:1234 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:713 +#: build/serializers.py:712 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:723 templates/js/translated/build.js:319 +#: build/serializers.py:722 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:732 templates/js/translated/build.js:303 +#: build/serializers.py:731 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:770 +#: build/serializers.py:769 msgid "Build Line" msgstr "" -#: build/serializers.py:780 +#: build/serializers.py:779 msgid "Build output" msgstr "" -#: build/serializers.py:788 +#: build/serializers.py:787 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:824 +#: build/serializers.py:823 msgid "Build Line Item" msgstr "" -#: build/serializers.py:838 +#: build/serializers.py:837 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:853 stock/serializers.py:1194 +#: build/serializers.py:852 stock/serializers.py:1190 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:901 order/serializers.py:1237 +#: build/serializers.py:900 order/serializers.py:1225 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:907 +#: build/serializers.py:906 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:914 +#: build/serializers.py:913 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:938 order/serializers.py:1489 +#: build/serializers.py:937 order/serializers.py:1477 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:1001 +#: build/serializers.py:1000 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:1009 +#: build/serializers.py:1008 msgid "Exclude Location" msgstr "" -#: build/serializers.py:1010 +#: build/serializers.py:1009 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:1015 +#: build/serializers.py:1014 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:1016 +#: build/serializers.py:1015 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:1021 +#: build/serializers.py:1020 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:1022 +#: build/serializers.py:1021 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:1027 +#: build/serializers.py:1026 msgid "Optional Items" msgstr "" -#: build/serializers.py:1028 +#: build/serializers.py:1027 msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1050 +#: build/serializers.py:1049 msgid "Failed to start auto-allocation task" msgstr "" -#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 -#: stock/api.py:794 +#: build/serializers.py:1139 part/models.py:3953 part/models.py:4387 +#: stock/api.py:804 msgid "BOM Item" msgstr "" -#: build/serializers.py:1149 templates/js/translated/index.js:130 +#: build/serializers.py:1148 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:832 part/serializers.py:1506 +#: build/serializers.py:1153 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:828 part/serializers.py:1502 #: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 -#: templates/js/translated/build.js:2613 templates/js/translated/part.js:709 -#: templates/js/translated/part.js:2148 +#: templates/js/translated/build.js:2613 templates/js/translated/part.js:710 +#: templates/js/translated/part.js:2149 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1159 part/serializers.py:1508 +#: build/serializers.py:1158 part/serializers.py:1504 #: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 +#: build/serializers.py:1163 part/bom.py:172 part/serializers.py:1527 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1929 msgid "Available Stock" @@ -1545,7 +1458,7 @@ msgstr "" #: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 #: order/status_codes.py:44 order/status_codes.py:69 #: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:165 report/models.py:443 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 msgid "Complete" msgstr "" @@ -1675,11 +1588,11 @@ msgstr "" #: build/templates/build/build_base.html:160 #: build/templates/build/detail.html:138 order/models.py:309 -#: order/models.py:1343 order/templates/order/order_base.html:186 +#: order/models.py:1307 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:196 #: report/templates/report/inventree_build_order_report.html:125 -#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1831 #: templates/js/translated/purchase_order.js:1739 #: templates/js/translated/purchase_order.js:2147 #: templates/js/translated/return_order.js:346 @@ -1712,8 +1625,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 -#: order/models.py:1587 order/models.py:1701 order/models.py:1855 +#: build/templates/build/detail.html:101 order/api.py:1463 order/models.py:845 +#: order/models.py:1551 order/models.py:1665 order/models.py:1819 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_report.html:135 @@ -1763,7 +1676,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1479 +#: build/templates/build/detail.html:49 order/models.py:1443 #: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "" @@ -1776,7 +1689,7 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:163 +#: build/templates/build/detail.html:80 stock/admin.py:162 #: stock/templates/stock/item_base.html:162 #: templates/js/translated/build.js:1380 #: templates/js/translated/model_renderers.js:241 @@ -1895,11 +1808,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:436 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -1915,6 +1828,34 @@ msgstr "" msgid "Incomplete Outputs" msgstr "" +#: common/api.py:689 +msgid "Is Link" +msgstr "" + +#: common/api.py:697 +msgid "Is File" +msgstr "" + +#: common/api.py:739 +msgid "User does not have permission to delete this attachment" +msgstr "" + +#: common/currency.py:130 +msgid "Invalid currency code" +msgstr "" + +#: common/currency.py:132 +msgid "Duplicate currency code" +msgstr "" + +#: common/currency.py:137 +msgid "No valid currency codes provided" +msgstr "" + +#: common/currency.py:154 +msgid "No plugin" +msgstr "" + #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1953,1507 +1894,1512 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:71 +#: common/models.py:73 msgid "Updated" msgstr "" -#: common/models.py:72 +#: common/models.py:74 msgid "Timestamp of last update" msgstr "" -#: common/models.py:105 +#: common/models.py:107 msgid "Site URL is locked by configuration" msgstr "" -#: common/models.py:130 +#: common/models.py:132 msgid "Unique project code" msgstr "" -#: common/models.py:137 +#: common/models.py:139 msgid "Project description" msgstr "" -#: common/models.py:146 +#: common/models.py:148 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:766 +#: common/models.py:765 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:770 +#: common/models.py:769 msgid "Settings value" msgstr "" -#: common/models.py:822 +#: common/models.py:821 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:838 +#: common/models.py:837 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:846 +#: common/models.py:845 msgid "Value must be an integer value" msgstr "" -#: common/models.py:883 +#: common/models.py:882 msgid "Key string must be unique" msgstr "" -#: common/models.py:1115 +#: common/models.py:1114 msgid "No group" msgstr "" -#: common/models.py:1158 -msgid "An empty domain is not allowed." -msgstr "" - -#: common/models.py:1160 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "" - -#: common/models.py:1172 -msgid "No plugin" -msgstr "" - -#: common/models.py:1260 +#: common/models.py:1213 msgid "Restart required" msgstr "" -#: common/models.py:1262 +#: common/models.py:1215 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1269 +#: common/models.py:1222 msgid "Pending migrations" msgstr "" -#: common/models.py:1270 +#: common/models.py:1223 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1275 +#: common/models.py:1228 msgid "Server Instance Name" msgstr "" -#: common/models.py:1277 +#: common/models.py:1230 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1281 +#: common/models.py:1234 msgid "Use instance name" msgstr "" -#: common/models.py:1282 +#: common/models.py:1235 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1287 +#: common/models.py:1240 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1288 +#: common/models.py:1241 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1293 company/models.py:108 company/models.py:109 +#: common/models.py:1246 company/models.py:111 company/models.py:112 msgid "Company name" msgstr "" -#: common/models.py:1294 +#: common/models.py:1247 msgid "Internal company name" msgstr "" -#: common/models.py:1298 +#: common/models.py:1251 msgid "Base URL" msgstr "" -#: common/models.py:1299 +#: common/models.py:1252 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1305 +#: common/models.py:1258 msgid "Default Currency" msgstr "" -#: common/models.py:1306 +#: common/models.py:1259 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1312 +#: common/models.py:1265 +msgid "Supported Currencies" +msgstr "" + +#: common/models.py:1266 +msgid "List of supported currency codes" +msgstr "" + +#: common/models.py:1272 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1314 +#: common/models.py:1274 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1317 common/models.py:1373 common/models.py:1386 -#: common/models.py:1394 common/models.py:1403 common/models.py:1412 -#: common/models.py:1620 common/models.py:1642 common/models.py:1757 -#: common/models.py:2076 +#: common/models.py:1277 common/models.py:1333 common/models.py:1346 +#: common/models.py:1354 common/models.py:1363 common/models.py:1372 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:2046 msgid "days" msgstr "" -#: common/models.py:1321 +#: common/models.py:1281 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1322 +#: common/models.py:1282 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1327 +#: common/models.py:1287 msgid "Download from URL" msgstr "" -#: common/models.py:1329 +#: common/models.py:1289 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1335 +#: common/models.py:1295 msgid "Download Size Limit" msgstr "" -#: common/models.py:1336 +#: common/models.py:1296 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1342 +#: common/models.py:1302 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1344 +#: common/models.py:1304 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:1349 +#: common/models.py:1309 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1350 +#: common/models.py:1310 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1355 +#: common/models.py:1315 msgid "Require confirm" msgstr "" -#: common/models.py:1356 +#: common/models.py:1316 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1361 +#: common/models.py:1321 msgid "Tree Depth" msgstr "" -#: common/models.py:1363 +#: common/models.py:1323 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1369 +#: common/models.py:1329 msgid "Update Check Interval" msgstr "" -#: common/models.py:1370 +#: common/models.py:1330 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1376 +#: common/models.py:1336 msgid "Automatic Backup" msgstr "" -#: common/models.py:1377 +#: common/models.py:1337 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1382 +#: common/models.py:1342 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1383 +#: common/models.py:1343 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1389 +#: common/models.py:1349 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1391 +#: common/models.py:1351 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1398 +#: common/models.py:1358 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1400 +#: common/models.py:1360 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1407 +#: common/models.py:1367 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1409 +#: common/models.py:1369 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1416 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1376 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1417 +#: common/models.py:1377 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1422 +#: common/models.py:1382 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1423 +#: common/models.py:1383 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1429 +#: common/models.py:1389 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1430 +#: common/models.py:1390 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1435 +#: common/models.py:1395 msgid "Part Revisions" msgstr "" -#: common/models.py:1436 +#: common/models.py:1396 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1441 +#: common/models.py:1401 msgid "Allow Deletion from Assembly" msgstr "" -#: common/models.py:1442 +#: common/models.py:1402 msgid "Allow deletion of parts which are used in an assembly" msgstr "" -#: common/models.py:1447 +#: common/models.py:1407 msgid "IPN Regex" msgstr "" -#: common/models.py:1448 +#: common/models.py:1408 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1451 +#: common/models.py:1411 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1452 +#: common/models.py:1412 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1457 +#: common/models.py:1417 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1458 +#: common/models.py:1418 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1463 +#: common/models.py:1423 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1464 +#: common/models.py:1424 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1469 +#: common/models.py:1429 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1470 +#: common/models.py:1430 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1475 +#: common/models.py:1435 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1476 +#: common/models.py:1436 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1481 +#: common/models.py:1441 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1482 +#: common/models.py:1442 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1487 part/admin.py:108 part/models.py:3815 -#: report/models.py:293 report/models.py:360 report/serializers.py:90 -#: report/serializers.py:131 stock/serializers.py:228 +#: common/models.py:1447 part/admin.py:108 part/models.py:3795 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:227 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1488 +#: common/models.py:1448 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 +#: common/models.py:1453 part/admin.py:91 part/admin.py:425 part/models.py:1052 #: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" msgstr "" -#: common/models.py:1494 +#: common/models.py:1454 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1499 part/admin.py:95 part/models.py:1065 +#: common/models.py:1459 part/admin.py:95 part/models.py:1058 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1500 +#: common/models.py:1460 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1505 part/admin.py:100 part/models.py:1077 +#: common/models.py:1465 part/admin.py:100 part/models.py:1070 msgid "Purchaseable" msgstr "" -#: common/models.py:1506 +#: common/models.py:1466 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1511 part/admin.py:104 part/models.py:1083 +#: common/models.py:1471 part/admin.py:104 part/models.py:1076 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1512 +#: common/models.py:1472 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1517 part/admin.py:113 part/models.py:1071 +#: common/models.py:1477 part/admin.py:113 part/models.py:1064 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" msgstr "" -#: common/models.py:1518 +#: common/models.py:1478 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1523 part/admin.py:117 part/models.py:1093 +#: common/models.py:1483 part/admin.py:117 part/models.py:1086 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" msgstr "" -#: common/models.py:1524 +#: common/models.py:1484 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1529 +#: common/models.py:1489 msgid "Show Import in Views" msgstr "" -#: common/models.py:1530 +#: common/models.py:1490 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1535 +#: common/models.py:1495 msgid "Show related parts" msgstr "" -#: common/models.py:1536 +#: common/models.py:1496 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1541 +#: common/models.py:1501 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1542 +#: common/models.py:1502 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1547 templates/js/translated/part.js:107 +#: common/models.py:1507 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1549 +#: common/models.py:1509 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1555 +#: common/models.py:1515 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1556 +#: common/models.py:1516 msgid "Format to display the part name" msgstr "" -#: common/models.py:1562 +#: common/models.py:1522 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1563 +#: common/models.py:1523 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1567 +#: common/models.py:1527 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1569 +#: common/models.py:1529 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1575 +#: common/models.py:1535 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1577 +#: common/models.py:1537 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1583 +#: common/models.py:1548 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1585 +#: common/models.py:1550 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1591 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1593 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1599 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1601 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1607 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1609 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1615 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1617 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1630 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1632 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1638 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1640 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1647 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1648 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1653 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1655 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1661 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1662 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1667 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1669 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1675 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1676 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1681 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1682 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1687 +#: common/models.py:1657 msgid "Log Report Errors" msgstr "" -#: common/models.py:1688 +#: common/models.py:1658 msgid "Log errors which occur when generating reports" msgstr "" -#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:301 +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:302 msgid "Page Size" msgstr "" -#: common/models.py:1694 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1699 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1700 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1705 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1707 +#: common/models.py:1677 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1713 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1714 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1719 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1720 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1725 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1727 +#: common/models.py:1697 msgid "Determines default behavior when a stock item is depleted" msgstr "" -#: common/models.py:1733 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1735 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1740 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1741 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1746 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1747 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1752 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1754 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1761 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1762 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1767 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1768 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1773 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1774 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1778 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1779 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1784 +#: common/models.py:1754 msgid "Check BOM when installing items" msgstr "" -#: common/models.py:1786 +#: common/models.py:1756 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "" -#: common/models.py:1792 +#: common/models.py:1762 msgid "Allow Out of Stock Transfer" msgstr "" -#: common/models.py:1794 +#: common/models.py:1764 msgid "Allow stock items which are not in stock to be transferred between stock locations" msgstr "" -#: common/models.py:1800 +#: common/models.py:1770 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1802 +#: common/models.py:1772 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1808 common/models.py:1836 common/models.py:1858 -#: common/models.py:1894 +#: common/models.py:1778 common/models.py:1806 common/models.py:1828 +#: common/models.py:1864 msgid "Require Responsible Owner" msgstr "" -#: common/models.py:1809 common/models.py:1837 common/models.py:1859 -#: common/models.py:1895 +#: common/models.py:1779 common/models.py:1807 common/models.py:1829 +#: common/models.py:1865 msgid "A responsible owner must be assigned to each order" msgstr "" -#: common/models.py:1814 +#: common/models.py:1784 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1816 +#: common/models.py:1786 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:1822 +#: common/models.py:1792 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1823 +#: common/models.py:1793 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1828 +#: common/models.py:1798 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1830 +#: common/models.py:1800 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1842 +#: common/models.py:1812 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1844 +#: common/models.py:1814 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1850 +#: common/models.py:1820 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1852 +#: common/models.py:1822 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1864 +#: common/models.py:1834 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1865 +#: common/models.py:1835 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1870 +#: common/models.py:1840 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1872 +#: common/models.py:1842 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1878 +#: common/models.py:1848 msgid "Mark Shipped Orders as Complete" msgstr "" -#: common/models.py:1880 +#: common/models.py:1850 msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" msgstr "" -#: common/models.py:1886 +#: common/models.py:1856 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1888 +#: common/models.py:1858 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1900 +#: common/models.py:1870 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1902 +#: common/models.py:1872 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1908 +#: common/models.py:1878 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1910 +#: common/models.py:1880 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1917 +#: common/models.py:1887 msgid "Enable password forgot" msgstr "" -#: common/models.py:1918 +#: common/models.py:1888 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1923 +#: common/models.py:1893 msgid "Enable registration" msgstr "" -#: common/models.py:1924 +#: common/models.py:1894 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1929 +#: common/models.py:1899 msgid "Enable SSO" msgstr "" -#: common/models.py:1930 +#: common/models.py:1900 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1935 +#: common/models.py:1905 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1937 +#: common/models.py:1907 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1943 +#: common/models.py:1913 msgid "Email required" msgstr "" -#: common/models.py:1944 +#: common/models.py:1914 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1949 +#: common/models.py:1919 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1951 +#: common/models.py:1921 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1957 +#: common/models.py:1927 msgid "Mail twice" msgstr "" -#: common/models.py:1958 +#: common/models.py:1928 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1963 +#: common/models.py:1933 msgid "Password twice" msgstr "" -#: common/models.py:1964 +#: common/models.py:1934 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1969 +#: common/models.py:1939 msgid "Allowed domains" msgstr "" -#: common/models.py:1971 +#: common/models.py:1941 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1977 +#: common/models.py:1947 msgid "Group on signup" msgstr "" -#: common/models.py:1978 +#: common/models.py:1948 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1983 +#: common/models.py:1953 msgid "Enforce MFA" msgstr "" -#: common/models.py:1984 +#: common/models.py:1954 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1989 +#: common/models.py:1959 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1991 +#: common/models.py:1961 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1999 +#: common/models.py:1969 msgid "Check for plugin updates" msgstr "" -#: common/models.py:2000 +#: common/models.py:1970 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:2006 +#: common/models.py:1976 msgid "Enable URL integration" msgstr "" -#: common/models.py:2007 +#: common/models.py:1977 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:2013 +#: common/models.py:1983 msgid "Enable navigation integration" msgstr "" -#: common/models.py:2014 +#: common/models.py:1984 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:2020 +#: common/models.py:1990 msgid "Enable app integration" msgstr "" -#: common/models.py:2021 +#: common/models.py:1991 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:2027 +#: common/models.py:1997 msgid "Enable schedule integration" msgstr "" -#: common/models.py:2028 +#: common/models.py:1998 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:2034 +#: common/models.py:2004 msgid "Enable event integration" msgstr "" -#: common/models.py:2035 +#: common/models.py:2005 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:2041 +#: common/models.py:2011 msgid "Enable project codes" msgstr "" -#: common/models.py:2042 +#: common/models.py:2012 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:2047 +#: common/models.py:2017 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:2049 +#: common/models.py:2019 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:2055 +#: common/models.py:2025 msgid "Exclude External Locations" msgstr "" -#: common/models.py:2057 +#: common/models.py:2027 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:2063 +#: common/models.py:2033 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:2065 +#: common/models.py:2035 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:2071 +#: common/models.py:2041 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:2073 +#: common/models.py:2043 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:2080 +#: common/models.py:2050 msgid "Display Users full names" msgstr "" -#: common/models.py:2081 +#: common/models.py:2051 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:2086 +#: common/models.py:2056 msgid "Enable Test Station Data" msgstr "" -#: common/models.py:2087 +#: common/models.py:2057 msgid "Enable test station data collection for test results" msgstr "" -#: common/models.py:2099 common/models.py:2509 +#: common/models.py:2069 common/models.py:2479 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2142 +#: common/models.py:2112 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2144 +#: common/models.py:2114 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2150 +#: common/models.py:2120 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2151 +#: common/models.py:2121 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2156 +#: common/models.py:2126 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2157 +#: common/models.py:2127 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2162 +#: common/models.py:2132 msgid "Show latest parts" msgstr "" -#: common/models.py:2163 +#: common/models.py:2133 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2168 +#: common/models.py:2138 msgid "Show invalid BOMs" msgstr "" -#: common/models.py:2169 +#: common/models.py:2139 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2174 +#: common/models.py:2144 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2175 +#: common/models.py:2145 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2180 +#: common/models.py:2150 msgid "Show low stock" msgstr "" -#: common/models.py:2181 +#: common/models.py:2151 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2186 +#: common/models.py:2156 msgid "Show depleted stock" msgstr "" -#: common/models.py:2187 +#: common/models.py:2157 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2192 +#: common/models.py:2162 msgid "Show needed stock" msgstr "" -#: common/models.py:2193 +#: common/models.py:2163 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2198 +#: common/models.py:2168 msgid "Show expired stock" msgstr "" -#: common/models.py:2199 +#: common/models.py:2169 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2204 +#: common/models.py:2174 msgid "Show stale stock" msgstr "" -#: common/models.py:2205 +#: common/models.py:2175 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2210 +#: common/models.py:2180 msgid "Show pending builds" msgstr "" -#: common/models.py:2211 +#: common/models.py:2181 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2216 +#: common/models.py:2186 msgid "Show overdue builds" msgstr "" -#: common/models.py:2217 +#: common/models.py:2187 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2222 +#: common/models.py:2192 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2223 +#: common/models.py:2193 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2228 +#: common/models.py:2198 msgid "Show overdue POs" msgstr "" -#: common/models.py:2229 +#: common/models.py:2199 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2234 +#: common/models.py:2204 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2235 +#: common/models.py:2205 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2240 +#: common/models.py:2210 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2241 +#: common/models.py:2211 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2246 +#: common/models.py:2216 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2247 +#: common/models.py:2217 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2252 +#: common/models.py:2222 msgid "Show News" msgstr "" -#: common/models.py:2253 +#: common/models.py:2223 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2258 +#: common/models.py:2228 msgid "Inline label display" msgstr "" -#: common/models.py:2260 +#: common/models.py:2230 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2266 +#: common/models.py:2236 msgid "Default label printer" msgstr "" -#: common/models.py:2268 +#: common/models.py:2238 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2274 +#: common/models.py:2244 msgid "Inline report display" msgstr "" -#: common/models.py:2276 +#: common/models.py:2246 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2282 +#: common/models.py:2252 msgid "Search Parts" msgstr "" -#: common/models.py:2283 +#: common/models.py:2253 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2288 +#: common/models.py:2258 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2289 +#: common/models.py:2259 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2294 +#: common/models.py:2264 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2295 +#: common/models.py:2265 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2300 +#: common/models.py:2270 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2301 +#: common/models.py:2271 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2306 +#: common/models.py:2276 msgid "Search Categories" msgstr "" -#: common/models.py:2307 +#: common/models.py:2277 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2312 +#: common/models.py:2282 msgid "Search Stock" msgstr "" -#: common/models.py:2313 +#: common/models.py:2283 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2318 +#: common/models.py:2288 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2320 +#: common/models.py:2290 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2326 +#: common/models.py:2296 msgid "Search Locations" msgstr "" -#: common/models.py:2327 +#: common/models.py:2297 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2332 +#: common/models.py:2302 msgid "Search Companies" msgstr "" -#: common/models.py:2333 +#: common/models.py:2303 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2338 +#: common/models.py:2308 msgid "Search Build Orders" msgstr "" -#: common/models.py:2339 +#: common/models.py:2309 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2344 +#: common/models.py:2314 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2345 +#: common/models.py:2315 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2350 +#: common/models.py:2320 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2352 +#: common/models.py:2322 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2358 +#: common/models.py:2328 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2359 +#: common/models.py:2329 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2364 +#: common/models.py:2334 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2366 +#: common/models.py:2336 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2372 +#: common/models.py:2342 msgid "Search Return Orders" msgstr "" -#: common/models.py:2373 +#: common/models.py:2343 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2378 +#: common/models.py:2348 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2380 +#: common/models.py:2350 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2386 +#: common/models.py:2356 msgid "Search Preview Results" msgstr "" -#: common/models.py:2388 +#: common/models.py:2358 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2394 +#: common/models.py:2364 msgid "Regex Search" msgstr "" -#: common/models.py:2395 +#: common/models.py:2365 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2400 +#: common/models.py:2370 msgid "Whole Word Search" msgstr "" -#: common/models.py:2401 +#: common/models.py:2371 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2406 +#: common/models.py:2376 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2407 +#: common/models.py:2377 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2412 +#: common/models.py:2382 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2413 +#: common/models.py:2383 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2418 +#: common/models.py:2388 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2419 +#: common/models.py:2389 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2424 +#: common/models.py:2394 msgid "Date Format" msgstr "" -#: common/models.py:2425 +#: common/models.py:2395 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2438 part/templates/part/detail.html:41 +#: common/models.py:2408 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2439 +#: common/models.py:2409 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2444 part/templates/part/detail.html:62 +#: common/models.py:2414 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2446 +#: common/models.py:2416 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2452 +#: common/models.py:2422 msgid "Table String Length" msgstr "" -#: common/models.py:2454 +#: common/models.py:2424 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2460 +#: common/models.py:2430 msgid "Default part label template" msgstr "" -#: common/models.py:2461 +#: common/models.py:2431 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2466 +#: common/models.py:2436 msgid "Default stock item template" msgstr "" -#: common/models.py:2468 +#: common/models.py:2438 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2474 +#: common/models.py:2444 msgid "Default stock location label template" msgstr "" -#: common/models.py:2476 +#: common/models.py:2446 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2482 +#: common/models.py:2452 msgid "Default build line label template" msgstr "" -#: common/models.py:2484 +#: common/models.py:2454 msgid "The build line label template to be automatically selected" msgstr "" -#: common/models.py:2490 +#: common/models.py:2460 msgid "Receive error reports" msgstr "" -#: common/models.py:2491 +#: common/models.py:2461 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2496 +#: common/models.py:2466 msgid "Last used printing machines" msgstr "" -#: common/models.py:2497 +#: common/models.py:2467 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2540 +#: common/models.py:2487 common/models.py:2488 common/models.py:2636 +#: common/models.py:2637 common/models.py:2882 common/models.py:2883 +#: common/models.py:3193 common/models.py:3194 part/models.py:3193 +#: part/models.py:3280 part/models.py:3353 part/models.py:3381 +#: plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "" + +#: common/models.py:2510 msgid "Price break quantity" msgstr "" -#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1382 order/models.py:2301 -#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 +#: common/models.py:2517 company/serializers.py:472 order/admin.py:42 +#: order/models.py:1346 order/models.py:2265 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1886 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:740 msgid "Price" msgstr "" -#: common/models.py:2548 +#: common/models.py:2518 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2719 common/models.py:2904 +#: common/models.py:2613 common/models.py:2798 msgid "Endpoint" msgstr "" -#: common/models.py:2720 +#: common/models.py:2614 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2730 +#: common/models.py:2624 msgid "Name for this webhook" msgstr "" -#: common/models.py:2734 company/models.py:160 company/models.py:814 -#: machine/models.py:39 part/admin.py:88 part/models.py:1088 -#: plugin/models.py:65 templates/js/translated/company.js:523 +#: common/models.py:2628 company/models.py:163 company/models.py:782 +#: machine/models.py:39 part/admin.py:88 part/models.py:1081 +#: plugin/models.py:66 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3463,101 +3409,118 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2734 +#: common/models.py:2628 msgid "Is this webhook active" msgstr "" -#: common/models.py:2750 users/models.py:159 +#: common/models.py:2644 users/models.py:159 msgid "Token" msgstr "" -#: common/models.py:2751 +#: common/models.py:2645 msgid "Token for access" msgstr "" -#: common/models.py:2759 +#: common/models.py:2653 msgid "Secret" msgstr "" -#: common/models.py:2760 +#: common/models.py:2654 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2868 +#: common/models.py:2762 msgid "Message ID" msgstr "" -#: common/models.py:2869 +#: common/models.py:2763 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2877 +#: common/models.py:2771 msgid "Host" msgstr "" -#: common/models.py:2878 +#: common/models.py:2772 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2886 +#: common/models.py:2780 msgid "Header" msgstr "" -#: common/models.py:2887 +#: common/models.py:2781 msgid "Header of this message" msgstr "" -#: common/models.py:2894 +#: common/models.py:2788 msgid "Body" msgstr "" -#: common/models.py:2895 +#: common/models.py:2789 msgid "Body of this message" msgstr "" -#: common/models.py:2905 +#: common/models.py:2799 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2910 +#: common/models.py:2804 msgid "Worked on" msgstr "" -#: common/models.py:2911 +#: common/models.py:2805 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:3037 +#: common/models.py:2931 msgid "Id" msgstr "" -#: common/models.py:3039 templates/js/translated/company.js:965 +#: common/models.py:2933 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:3043 templates/js/translated/news.js:60 +#: common/models.py:2935 common/models.py:3177 company/models.py:149 +#: company/models.py:440 company/models.py:500 company/models.py:799 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +#: part/admin.py:55 part/models.py:955 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "" + +#: common/models.py:2937 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:3045 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2939 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:3047 templates/js/translated/news.js:52 +#: common/models.py:2941 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Read" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Was this news item read?" msgstr "" -#: common/models.py:3067 company/models.py:156 part/models.py:972 +#: common/models.py:2961 company/models.py:159 part/models.py:965 #: 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.html:35 @@ -3567,34 +3530,89 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:3067 +#: common/models.py:2961 msgid "Image file" msgstr "" -#: common/models.py:3109 +#: common/models.py:2973 common/models.py:3161 +msgid "Target model type for this image" +msgstr "" + +#: common/models.py:2977 +msgid "Target model ID for this image" +msgstr "" + +#: common/models.py:3018 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3128 +#: common/models.py:3037 msgid "Unit name" msgstr "" -#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3044 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3136 +#: common/models.py:3045 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3052 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3144 +#: common/models.py:3053 msgid "Unit definition" msgstr "" +#: common/models.py:3111 common/models.py:3168 stock/models.py:2426 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "" + +#: common/models.py:3123 +msgid "Missing file" +msgstr "" + +#: common/models.py:3124 +msgid "Missing external link" +msgstr "" + +#: common/models.py:3169 +msgid "Select file to attach" +msgstr "" + +#: common/models.py:3184 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "" + +#: common/models.py:3185 +msgid "Attachment comment" +msgstr "" + +#: common/models.py:3201 +msgid "Upload date" +msgstr "" + +#: common/models.py:3202 +msgid "Date the file was uploaded" +msgstr "" + +#: common/models.py:3206 +msgid "File size" +msgstr "" + +#: common/models.py:3206 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3244 common/serializers.py:553 +msgid "Invalid model type specified for attachment" +msgstr "" + #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" @@ -3629,66 +3647,103 @@ msgstr "" msgid "Error raised by plugin" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:371 msgid "Is Running" msgstr "" -#: common/serializers.py:372 +#: common/serializers.py:377 msgid "Pending Tasks" msgstr "" -#: common/serializers.py:378 +#: common/serializers.py:383 msgid "Scheduled Tasks" msgstr "" -#: common/serializers.py:384 +#: common/serializers.py:389 msgid "Failed Tasks" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Task ID" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Unique task ID" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock time" msgstr "" -#: common/serializers.py:403 +#: common/serializers.py:408 msgid "Task name" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function name" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Arguments" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Task arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Keyword Arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Task keyword arguments" msgstr "" +#: common/serializers.py:525 +msgid "Filename" +msgstr "" + +#: common/serializers.py:532 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: common/serializers.py:559 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "" + +#: common/validators.py:33 +msgid "No attachment model type provided" +msgstr "" + +#: common/validators.py:39 +msgid "Invalid attachment model type" +msgstr "" + +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "" + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +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 @@ -3727,210 +3782,222 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/api.py:164 +#: company/api.py:144 msgid "Part is Active" msgstr "" -#: company/api.py:168 +#: company/api.py:148 msgid "Manufacturer is Active" msgstr "" -#: company/api.py:317 +#: company/api.py:281 msgid "Supplier Part is Active" msgstr "" -#: company/api.py:321 +#: company/api.py:285 msgid "Internal Part is Active" msgstr "" -#: company/api.py:325 +#: company/api.py:289 msgid "Supplier is Active" msgstr "" -#: company/models.py:114 +#: company/models.py:100 company/models.py:365 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:822 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "" + +#: company/models.py:117 msgid "Company description" msgstr "" -#: company/models.py:115 +#: company/models.py:118 msgid "Description of the company" msgstr "" -#: company/models.py:120 company/templates/company/company_base.html:106 +#: company/models.py:123 company/templates/company/company_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:532 msgid "Website" msgstr "" -#: company/models.py:120 +#: company/models.py:123 msgid "Company website URL" msgstr "" -#: company/models.py:125 +#: company/models.py:128 msgid "Phone number" msgstr "" -#: company/models.py:127 +#: company/models.py:130 msgid "Contact phone number" msgstr "" -#: company/models.py:134 +#: company/models.py:137 msgid "Contact email address" msgstr "" -#: company/models.py:139 company/templates/company/company_base.html:145 +#: company/models.py:142 company/templates/company/company_base.html:145 #: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "" -#: company/models.py:141 +#: company/models.py:144 msgid "Point of contact" msgstr "" -#: company/models.py:147 +#: company/models.py:150 msgid "Link to external company information" msgstr "" -#: company/models.py:160 +#: company/models.py:163 msgid "Is this company active?" msgstr "" -#: company/models.py:165 +#: company/models.py:168 msgid "is customer" msgstr "" -#: company/models.py:166 +#: company/models.py:169 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:171 +#: company/models.py:174 msgid "is supplier" msgstr "" -#: company/models.py:172 +#: company/models.py:175 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:177 +#: company/models.py:180 msgid "is manufacturer" msgstr "" -#: company/models.py:178 +#: company/models.py:181 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:186 +#: company/models.py:189 msgid "Default currency used for this company" msgstr "" -#: company/models.py:273 company/models.py:382 -#: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:812 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 -msgid "Company" -msgstr "" - -#: company/models.py:383 +#: company/models.py:366 msgid "Select company" msgstr "" -#: company/models.py:388 +#: company/models.py:371 msgid "Address title" msgstr "" -#: company/models.py:389 +#: company/models.py:372 msgid "Title describing the address entry" msgstr "" -#: company/models.py:395 +#: company/models.py:378 msgid "Primary address" msgstr "" -#: company/models.py:396 +#: company/models.py:379 msgid "Set as primary address" msgstr "" -#: company/models.py:401 templates/js/translated/company.js:914 +#: company/models.py:384 templates/js/translated/company.js:914 #: templates/js/translated/company.js:971 msgid "Line 1" msgstr "" -#: company/models.py:402 +#: company/models.py:385 msgid "Address line 1" msgstr "" -#: company/models.py:408 templates/js/translated/company.js:915 +#: company/models.py:391 templates/js/translated/company.js:915 #: templates/js/translated/company.js:977 msgid "Line 2" msgstr "" -#: company/models.py:409 +#: company/models.py:392 msgid "Address line 2" msgstr "" -#: company/models.py:415 company/models.py:416 +#: company/models.py:398 company/models.py:399 #: templates/js/translated/company.js:983 msgid "Postal code" msgstr "" -#: company/models.py:422 +#: company/models.py:405 msgid "City/Region" msgstr "" -#: company/models.py:423 +#: company/models.py:406 msgid "Postal code city/region" msgstr "" -#: company/models.py:429 +#: company/models.py:412 msgid "State/Province" msgstr "" -#: company/models.py:430 +#: company/models.py:413 msgid "State or province" msgstr "" -#: company/models.py:436 templates/js/translated/company.js:1001 +#: company/models.py:419 templates/js/translated/company.js:1001 msgid "Country" msgstr "" -#: company/models.py:437 +#: company/models.py:420 msgid "Address country" msgstr "" -#: company/models.py:443 +#: company/models.py:426 msgid "Courier shipping notes" msgstr "" -#: company/models.py:444 +#: company/models.py:427 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:450 +#: company/models.py:433 msgid "Internal shipping notes" msgstr "" -#: company/models.py:451 +#: company/models.py:434 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:458 +#: company/models.py:441 msgid "Link to address information (external)" msgstr "" -#: company/models.py:489 company/models.py:792 stock/models.py:768 -#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 +#: company/models.py:463 company/models.py:574 company/models.py:792 +#: 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:475 company/models.py:760 stock/models.py:766 +#: stock/serializers.py:422 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:491 company/models.py:794 +#: company/models.py:477 company/models.py:762 msgid "Select part" msgstr "" -#: company/models.py:500 company/templates/company/company_base.html:82 +#: company/models.py:486 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:530 +#: company/templates/company/supplier_part.html:145 part/serializers.py:525 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -3940,152 +4007,154 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:501 +#: company/models.py:487 msgid "Select manufacturer" msgstr "" -#: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:540 +#: company/models.py:493 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:535 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 -#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1801 #: templates/js/translated/purchase_order.js:1851 #: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "" -#: company/models.py:508 +#: company/models.py:494 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:515 +#: company/models.py:501 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:524 +#: company/models.py:510 msgid "Manufacturer part description" msgstr "" -#: company/models.py:581 company/models.py:608 company/models.py:824 -#: 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:615 +#: company/models.py:581 msgid "Parameter name" msgstr "" -#: company/models.py:621 report/templates/report/inventree_test_report.html:104 -#: stock/models.py:2429 templates/js/translated/company.js:1166 -#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 +#: company/models.py:587 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2418 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1493 #: templates/js/translated/stock.js:1522 msgid "Value" msgstr "" -#: company/models.py:622 +#: company/models.py:588 msgid "Parameter value" msgstr "" -#: company/models.py:629 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1052 part/models.py:3666 +#: company/models.py:595 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1045 part/models.py:3646 #: part/templates/part/part_base.html:284 -#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1512 +#: templates/js/translated/part.js:1616 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:630 +#: company/models.py:596 msgid "Parameter units" msgstr "" -#: company/models.py:732 +#: company/models.py:648 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:777 stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "" + +#: company/models.py:700 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:739 +#: company/models.py:707 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:753 +#: company/models.py:721 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/models.py:770 company/templates/company/company_base.html:87 #: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:514 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:509 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:511 -#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1769 #: templates/js/translated/pricing.js:498 #: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "" -#: company/models.py:803 +#: company/models.py:771 msgid "Select supplier" msgstr "" -#: company/models.py:809 part/serializers.py:525 +#: company/models.py:777 part/serializers.py:520 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:815 +#: company/models.py:783 msgid "Is this supplier part active?" msgstr "" -#: company/models.py:825 +#: company/models.py:793 msgid "Select manufacturer part" msgstr "" -#: company/models.py:832 +#: company/models.py:800 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:841 +#: company/models.py:809 msgid "Supplier part description" msgstr "" -#: company/models.py:848 company/templates/company/supplier_part.html:187 -#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 +#: company/models.py:816 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4093 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_purchase_order_report.html:32 #: report/templates/report/inventree_return_order_report.html:27 #: report/templates/report/inventree_sales_order_report.html:32 #: report/templates/report/inventree_stock_location_report.html:105 -#: stock/serializers.py:708 +#: stock/serializers.py:710 msgid "Note" msgstr "" -#: company/models.py:857 part/models.py:2010 +#: company/models.py:825 part/models.py:2003 msgid "base cost" msgstr "" -#: company/models.py:858 part/models.py:2011 +#: company/models.py:826 part/models.py:2004 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:865 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 +#: company/models.py:833 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:797 stock/serializers.py:1475 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 #: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "" -#: company/models.py:866 +#: company/models.py:834 msgid "Part packaging" msgstr "" -#: company/models.py:871 templates/js/translated/company.js:1651 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: company/models.py:839 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:311 #: templates/js/translated/purchase_order.js:841 #: templates/js/translated/purchase_order.js:1103 @@ -4094,35 +4163,35 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:873 +#: company/models.py:841 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:892 part/models.py:2017 +#: company/models.py:860 part/models.py:2010 msgid "multiple" msgstr "" -#: company/models.py:893 +#: company/models.py:861 msgid "Order multiple" msgstr "" -#: company/models.py:905 +#: company/models.py:873 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:911 +#: company/models.py:879 msgid "Availability Updated" msgstr "" -#: company/models.py:912 +#: company/models.py:880 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:163 +#: company/serializers.py:161 msgid "Default currency used for this supplier" msgstr "" -#: company/serializers.py:381 part/admin.py:126 +#: company/serializers.py:357 part/admin.py:126 #: part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1689 #: templates/js/translated/table_filters.js:355 @@ -4134,7 +4203,7 @@ msgstr "" #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 #: templates/js/translated/model_renderers.js:312 -#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +#: templates/js/translated/part.js:815 templates/js/translated/part.js:1219 msgid "Inactive" msgstr "" @@ -4173,7 +4242,7 @@ msgstr "" #: report/templates/report/inventree_purchase_order_report.html:40 #: report/templates/report/inventree_sales_order_report.html:40 #: report/templates/report/inventree_test_report.html:84 -#: report/templates/report/inventree_test_report.html:163 +#: report/templates/report/inventree_test_report.html:162 msgid "Part image" msgstr "" @@ -4192,10 +4261,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:92 order/models.py:940 -#: order/models.py:2068 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:148 stock/models.py:821 -#: stock/models.py:822 stock/serializers.py:1229 +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2032 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:819 +#: stock/models.py:820 stock/serializers.py:1225 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 @@ -4406,7 +4475,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:836 +#: part/admin.py:122 part/serializers.py:832 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4426,8 +4495,8 @@ msgstr "" msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:206 -#: templates/js/translated/part.js:1422 +#: company/templates/company/manufacturer_part.html:196 +#: templates/js/translated/part.js:1423 msgid "Add Parameter" msgstr "" @@ -4455,15 +4524,6 @@ msgstr "" msgid "Addresses" msgstr "" -#: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:452 -#: stock/models.py:779 stock/templates/stock/item_base.html:233 -#: templates/js/translated/company.js:1600 -#: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2280 -msgid "Supplier Part" -msgstr "" - #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1526 msgid "Supplier part actions" @@ -4506,8 +4566,8 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:524 -#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: part/bom.py:311 part/serializers.py:519 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1787 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1850 #: templates/js/translated/purchase_order.js:2028 @@ -4519,12 +4579,12 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:207 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" @@ -4556,15 +4616,15 @@ msgid "Update Part Availability" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:835 part/stocktake.py:223 +#: part/serializers.py:831 part/stocktake.py:224 #: part/templates/part/category.html:183 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:916 stock/serializers.py:1080 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:918 stock/serializers.py:1091 #: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:191 #: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1061 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:206 msgid "Stock Items" @@ -4591,10 +4651,6 @@ msgstr "" 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 "" @@ -4615,7 +4671,7 @@ msgstr "" msgid "Connected" msgstr "" -#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: machine/machine_types/label_printer.py:235 order/api.py:1467 #: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "" @@ -4704,7 +4760,7 @@ msgstr "" msgid "Config type" msgstr "" -#: order/admin.py:30 order/models.py:89 +#: order/admin.py:30 order/models.py:90 #: report/templates/report/inventree_purchase_order_report.html:31 #: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 @@ -4713,30 +4769,30 @@ msgstr "" msgid "Total Price" msgstr "" -#: order/api.py:161 order/serializers.py:91 +#: order/api.py:157 order/serializers.py:90 #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "" -#: order/api.py:165 templates/js/translated/table_filters.js:194 +#: order/api.py:161 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "" -#: order/api.py:240 +#: order/api.py:236 msgid "No matching purchase order found" msgstr "" -#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 -#: order/models.py:1586 order/models.py:1700 order/models.py:1854 -#: order/models.py:2267 order/models.py:2318 +#: order/api.py:435 order/api.py:801 order/models.py:1395 order/models.py:1504 +#: order/models.py:1550 order/models.py:1664 order/models.py:1818 +#: order/models.py:2231 order/models.py:2282 #: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "" -#: order/api.py:441 order/api.py:838 +#: order/api.py:439 order/api.py:822 msgid "Order Complete" msgstr "" @@ -4744,13 +4800,13 @@ msgstr "" msgid "Order Pending" msgstr "" -#: order/api.py:1509 order/models.py:380 order/models.py:1432 -#: order/models.py:1541 order/templates/order/order_base.html:9 +#: order/api.py:1461 order/models.py:380 order/models.py:1396 +#: order/models.py:1505 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_purchase_order_report.html:14 -#: stock/serializers.py:119 stock/templates/stock/item_base.html:176 +#: stock/serializers.py:118 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/part.js:1746 templates/js/translated/pricing.js:804 #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1673 @@ -4758,8 +4814,8 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1513 order/models.py:2017 order/models.py:2268 -#: order/models.py:2319 order/templates/order/return_order_base.html:9 +#: order/api.py:1465 order/models.py:1981 order/models.py:2232 +#: order/models.py:2283 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report.html:13 #: templates/js/translated/return_order.js:280 @@ -4767,15 +4823,15 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/models.py:90 +#: order/models.py:91 msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:71 +#: order/models.py:96 order/serializers.py:70 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:72 +#: order/models.py:99 order/serializers.py:71 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -4791,7 +4847,7 @@ msgstr "" msgid "Select project code for this order" msgstr "" -#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 msgid "Link to external page" msgstr "" @@ -4815,11 +4871,11 @@ msgstr "" msgid "Company address for this order" msgstr "" -#: order/models.py:464 order/models.py:929 +#: order/models.py:464 order/models.py:927 msgid "Order reference" msgstr "" -#: order/models.py:472 order/models.py:953 +#: order/models.py:472 order/models.py:951 msgid "Purchase order status" msgstr "" @@ -4840,15 +4896,15 @@ msgstr "" msgid "received by" msgstr "" -#: order/models.py:514 order/models.py:2094 +#: order/models.py:514 order/models.py:2058 msgid "Issue Date" msgstr "" -#: order/models.py:515 order/models.py:2095 +#: order/models.py:515 order/models.py:2059 msgid "Date order was issued" msgstr "" -#: order/models.py:522 order/models.py:2102 +#: order/models.py:522 order/models.py:2066 msgid "Date order was completed" msgstr "" @@ -4860,94 +4916,94 @@ msgstr "" msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:941 +#: order/models.py:939 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:964 order/models.py:2087 +#: order/models.py:962 order/models.py:2051 msgid "Customer Reference " msgstr "" -#: order/models.py:965 order/models.py:2088 +#: order/models.py:963 order/models.py:2052 msgid "Customer order reference code" msgstr "" -#: order/models.py:969 order/models.py:1707 +#: order/models.py:967 order/models.py:1671 #: templates/js/translated/sales_order.js:879 #: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "" -#: order/models.py:978 +#: order/models.py:976 msgid "shipped by" msgstr "" -#: order/models.py:1027 +#: order/models.py:1025 msgid "Order is already complete" msgstr "" -#: order/models.py:1030 +#: order/models.py:1028 msgid "Order is already cancelled" msgstr "" -#: order/models.py:1034 +#: order/models.py:1032 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:1038 +#: order/models.py:1036 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:1043 +#: order/models.py:1041 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1309 +#: order/models.py:1273 msgid "Item quantity" msgstr "" -#: order/models.py:1326 +#: order/models.py:1290 msgid "Line item reference" msgstr "" -#: order/models.py:1333 +#: order/models.py:1297 msgid "Line item notes" msgstr "" -#: order/models.py:1345 +#: order/models.py:1309 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1366 +#: order/models.py:1330 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1372 +#: order/models.py:1336 msgid "Context" msgstr "" -#: order/models.py:1373 +#: order/models.py:1337 msgid "Additional context for this line" msgstr "" -#: order/models.py:1383 +#: order/models.py:1347 msgid "Unit price" msgstr "" -#: order/models.py:1416 +#: order/models.py:1380 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1423 +#: order/models.py:1387 msgid "deleted" msgstr "" -#: order/models.py:1451 +#: order/models.py:1415 msgid "Supplier part" msgstr "" -#: order/models.py:1458 order/templates/order/order_base.html:196 -#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: order/models.py:1422 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1870 templates/js/translated/part.js:1902 #: templates/js/translated/purchase_order.js:1306 #: templates/js/translated/purchase_order.js:2169 #: templates/js/translated/return_order.js:763 @@ -4956,196 +5012,196 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1459 +#: order/models.py:1423 msgid "Number of items received" msgstr "" -#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 +#: order/models.py:1431 stock/models.py:938 stock/serializers.py:556 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "" -#: order/models.py:1468 +#: order/models.py:1432 msgid "Unit purchase price" msgstr "" -#: order/models.py:1483 +#: order/models.py:1447 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1574 +#: order/models.py:1538 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1579 +#: order/models.py:1543 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1605 part/templates/part/part_pricing.html:107 +#: order/models.py:1569 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:1606 +#: order/models.py:1570 msgid "Unit sale price" msgstr "" -#: order/models.py:1615 order/status_codes.py:43 +#: order/models.py:1579 order/status_codes.py:43 #: templates/js/translated/sales_order.js:1559 #: templates/js/translated/sales_order.js:1680 #: templates/js/translated/sales_order.js:1993 msgid "Shipped" msgstr "" -#: order/models.py:1616 +#: order/models.py:1580 msgid "Shipped quantity" msgstr "" -#: order/models.py:1708 +#: order/models.py:1672 msgid "Date of shipment" msgstr "" -#: order/models.py:1714 templates/js/translated/sales_order.js:1072 +#: order/models.py:1678 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "" -#: order/models.py:1715 +#: order/models.py:1679 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1723 +#: order/models.py:1687 msgid "Checked By" msgstr "" -#: order/models.py:1724 +#: order/models.py:1688 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 -#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 +#: order/models.py:1695 order/models.py:1908 order/serializers.py:1342 +#: order/serializers.py:1452 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "" -#: order/models.py:1732 +#: order/models.py:1696 msgid "Shipment number" msgstr "" -#: order/models.py:1740 +#: order/models.py:1704 msgid "Tracking Number" msgstr "" -#: order/models.py:1741 +#: order/models.py:1705 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1748 +#: order/models.py:1712 msgid "Invoice Number" msgstr "" -#: order/models.py:1749 +#: order/models.py:1713 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1769 +#: order/models.py:1733 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1772 +#: order/models.py:1736 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1890 order/models.py:1892 +#: order/models.py:1854 order/models.py:1856 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1899 +#: order/models.py:1863 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1902 +#: order/models.py:1866 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1905 +#: order/models.py:1869 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1924 order/serializers.py:1231 +#: order/models.py:1888 order/serializers.py:1219 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1927 +#: order/models.py:1891 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1928 plugin/base/barcodes/api.py:481 +#: order/models.py:1892 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1936 +#: order/models.py:1900 msgid "Line" msgstr "" -#: order/models.py:1945 +#: order/models.py:1909 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1958 order/models.py:2275 +#: order/models.py:1922 order/models.py:2239 #: templates/js/translated/return_order.js:721 msgid "Item" msgstr "" -#: order/models.py:1959 +#: order/models.py:1923 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1968 +#: order/models.py:1932 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:2057 +#: order/models.py:2021 msgid "Return Order reference" msgstr "" -#: order/models.py:2069 +#: order/models.py:2033 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:2081 +#: order/models.py:2045 msgid "Return order status" msgstr "" -#: order/models.py:2260 +#: order/models.py:2224 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2276 +#: order/models.py:2240 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2282 +#: order/models.py:2246 msgid "Received Date" msgstr "" -#: order/models.py:2283 +#: order/models.py:2247 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2294 templates/js/translated/return_order.js:732 +#: order/models.py:2258 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2295 +#: order/models.py:2259 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2302 +#: order/models.py:2266 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/serializers.py:79 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_purchase_order_report.html:22 @@ -5154,163 +5210,163 @@ msgstr "" msgid "Line Items" msgstr "" -#: order/serializers.py:84 +#: order/serializers.py:83 msgid "Completed Lines" msgstr "" -#: order/serializers.py:287 +#: order/serializers.py:286 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:302 order/serializers.py:1247 +#: order/serializers.py:301 order/serializers.py:1235 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:312 order/serializers.py:1257 +#: order/serializers.py:311 order/serializers.py:1245 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:440 +#: order/serializers.py:439 msgid "Order is not open" msgstr "" -#: order/serializers.py:461 +#: order/serializers.py:460 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:463 +#: order/serializers.py:462 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:473 +#: order/serializers.py:472 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:478 msgid "Merge Items" msgstr "" -#: order/serializers.py:481 +#: order/serializers.py:480 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:499 +#: order/serializers.py:498 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:502 +#: order/serializers.py:501 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:510 +#: order/serializers.py:509 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:511 +#: order/serializers.py:510 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:550 order/serializers.py:1325 +#: order/serializers.py:549 order/serializers.py:1313 msgid "Line Item" msgstr "" -#: order/serializers.py:556 +#: order/serializers.py:555 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1657 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:581 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:589 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:601 templates/js/translated/barcode.js:52 +#: order/serializers.py:600 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:602 +#: order/serializers.py:601 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:618 +#: order/serializers.py:617 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:642 +#: order/serializers.py:641 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:690 order/serializers.py:1696 +#: order/serializers.py:689 order/serializers.py:1673 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:706 +#: order/serializers.py:705 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:717 +#: order/serializers.py:716 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1074 +#: order/serializers.py:1062 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1134 +#: order/serializers.py:1122 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1195 order/serializers.py:1334 +#: order/serializers.py:1183 order/serializers.py:1322 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1214 +#: order/serializers.py:1202 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1344 +#: order/serializers.py:1332 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1366 order/serializers.py:1472 +#: order/serializers.py:1354 order/serializers.py:1460 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1369 order/serializers.py:1475 +#: order/serializers.py:1357 order/serializers.py:1463 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1416 +#: order/serializers.py:1404 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1423 +#: order/serializers.py:1411 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1650 +#: order/serializers.py:1627 msgid "Return order line item" msgstr "" -#: order/serializers.py:1656 +#: order/serializers.py:1633 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1659 +#: order/serializers.py:1636 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1688 +#: order/serializers.py:1665 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1766 +#: order/serializers.py:1743 msgid "Line price currency" msgstr "" @@ -5640,7 +5696,7 @@ msgstr "" #: 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/part.js:1073 #: templates/js/translated/purchase_order.js:1752 #: templates/js/translated/return_order.js:380 #: templates/js/translated/sales_order.js:891 @@ -5736,34 +5792,34 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:406 part/models.py:3964 part/stocktake.py:218 -#: stock/admin.py:153 +#: part/admin.py:39 part/admin.py:398 part/models.py:3944 part/stocktake.py:219 +#: stock/admin.py:152 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 -#: stock/admin.py:157 +#: part/admin.py:41 part/admin.py:405 part/models.py:3945 part/stocktake.py:220 +#: stock/admin.py:156 msgid "Part Name" msgstr "" -#: part/admin.py:45 part/stocktake.py:220 +#: part/admin.py:45 part/stocktake.py:221 msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:940 part/templates/part/part_base.html:269 #: report/templates/report/inventree_stock_location_report.html:103 -#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/part.js:1227 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 -#: report/models.py:161 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2346 +#: part/admin.py:50 part/models.py:949 part/templates/part/part_base.html:277 +#: report/models.py:162 templates/js/translated/part.js:1232 +#: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:319 part/models.py:929 +#: part/admin.py:53 part/admin.py:319 part/models.py:922 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5772,11 +5828,11 @@ msgstr "" msgid "Part Image" msgstr "" -#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:222 msgid "Category ID" msgstr "" -#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:223 msgid "Category Name" msgstr "" @@ -5788,11 +5844,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:908 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1036 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5800,26 +5856,26 @@ msgstr "" 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 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:235 +#: templates/js/translated/part.js:715 templates/js/translated/part.js:2153 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3123 part/models.py:3137 -#: templates/js/translated/part.js:969 +#: part/admin.py:155 part/models.py:3088 part/models.py:3102 +#: templates/js/translated/part.js:970 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3130 part/models.py:3144 -#: templates/js/translated/part.js:979 +#: part/admin.py:158 part/models.py:3095 part/models.py:3109 +#: templates/js/translated/part.js:980 msgid "Maximum Cost" msgstr "" -#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 msgid "Parent ID" msgstr "" -#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 msgid "Parent Name" msgstr "" @@ -5828,141 +5884,149 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:325 part/models.py:393 part/serializers.py:117 -#: part/serializers.py:272 part/serializers.py:391 +#: part/admin.py:325 part/models.py:396 part/serializers.py:124 +#: part/serializers.py:267 part/serializers.py:386 #: 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:2803 templates/js/translated/search.js:130 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "" -#: part/admin.py:386 +#: part/admin.py:378 msgid "BOM Level" msgstr "" -#: part/admin.py:389 +#: part/admin.py:381 msgid "BOM Item ID" msgstr "" -#: part/admin.py:399 +#: part/admin.py:391 msgid "Parent IPN" msgstr "" -#: part/admin.py:410 part/models.py:3966 +#: part/admin.py:402 part/models.py:3946 msgid "Part IPN" msgstr "" -#: part/admin.py:423 part/serializers.py:1278 +#: part/admin.py:415 part/serializers.py:1274 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:428 part/serializers.py:1293 +#: part/admin.py:420 part/serializers.py:1289 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:110 +#: part/api.py:104 msgid "Starred" msgstr "" -#: part/api.py:112 +#: part/api.py:106 msgid "Filter by starred categories" msgstr "" -#: part/api.py:129 stock/api.py:318 +#: part/api.py:123 stock/api.py:312 msgid "Depth" msgstr "" -#: part/api.py:129 +#: part/api.py:123 msgid "Filter by category depth" msgstr "" -#: part/api.py:147 stock/api.py:336 +#: part/api.py:141 stock/api.py:330 +msgid "Top Level" +msgstr "" + +#: part/api.py:143 +msgid "Filter by top-level categories" +msgstr "" + +#: part/api.py:156 stock/api.py:345 msgid "Cascade" msgstr "" -#: part/api.py:149 +#: part/api.py:158 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:169 +#: part/api.py:179 templates/js/translated/part.js:308 msgid "Parent" msgstr "" -#: part/api.py:171 +#: part/api.py:181 msgid "Filter by parent category" msgstr "" -#: part/api.py:204 +#: part/api.py:214 msgid "Exclude Tree" msgstr "" -#: part/api.py:206 +#: part/api.py:216 msgid "Exclude sub-categories under the specified category" msgstr "" -#: part/api.py:455 +#: part/api.py:449 msgid "Has Results" msgstr "" -#: part/api.py:622 +#: part/api.py:616 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:640 +#: part/api.py:634 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:656 +#: part/api.py:650 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:740 +#: part/api.py:734 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:887 +#: part/api.py:881 msgid "Valid" msgstr "" -#: part/api.py:888 +#: part/api.py:882 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:894 +#: part/api.py:888 msgid "This option must be selected" msgstr "" -#: part/api.py:1111 +#: part/api.py:1105 msgid "BOM Valid" msgstr "" -#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 -#: part/serializers.py:406 part/serializers.py:1134 -#: part/templates/part/part_base.html:260 stock/api.py:781 +#: part/api.py:1508 part/models.py:932 part/models.py:3374 part/models.py:3889 +#: part/serializers.py:401 part/serializers.py:1130 +#: part/templates/part/part_base.html:260 stock/api.py:791 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2376 +#: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/api.py:1803 +#: part/api.py:1796 msgid "Uses" msgstr "" -#: part/bom.py:170 part/models.py:102 part/models.py:982 +#: part/bom.py:170 part/models.py:104 part/models.py:975 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 part/serializers.py:837 +#: part/bom.py:171 part/serializers.py:833 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5971,1054 +6035,1066 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 +#: part/models.py:85 part/models.py:3890 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:84 part/templates/part/category.html:136 +#: part/models.py:86 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "" -#: part/models.py:103 +#: part/models.py:105 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 +#: part/models.py:110 stock/models.py:174 templates/js/translated/part.js:2810 #: templates/js/translated/stock.js:2772 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:110 +#: part/models.py:112 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:119 +#: part/models.py:121 msgid "Default keywords" msgstr "" -#: part/models.py:120 +#: part/models.py:122 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 stock/models.py:85 stock/models.py:156 +#: part/models.py:128 stock/models.py:86 stock/models.py:157 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:127 stock/models.py:157 +#: part/models.py:129 stock/models.py:158 msgid "Icon (optional)" msgstr "" -#: part/models.py:149 +#: part/models.py:151 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:482 +#: part/models.py:485 msgid "Cannot delete this part as it is still active" msgstr "" -#: part/models.py:489 +#: part/models.py:490 msgid "Cannot delete this part as it is used in an assembly" msgstr "" -#: part/models.py:527 +#: part/models.py:528 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:575 part/models.py:582 +#: part/models.py:576 part/models.py:583 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:594 +#: part/models.py:595 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:659 +#: part/models.py:658 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:739 +#: part/models.py:736 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:844 +#: part/models.py:837 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:854 +#: part/models.py:847 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:869 +#: part/models.py:862 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:898 part/models.py:3965 +#: part/models.py:891 part/models.py:3945 msgid "Part name" msgstr "" -#: part/models.py:903 +#: part/models.py:896 msgid "Is Template" msgstr "" -#: part/models.py:904 +#: part/models.py:897 msgid "Is this part a template part?" msgstr "" -#: part/models.py:914 +#: part/models.py:907 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:922 +#: part/models.py:915 msgid "Part description (optional)" msgstr "" -#: part/models.py:930 +#: part/models.py:923 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:940 +#: part/models.py:933 msgid "Part category" msgstr "" -#: part/models.py:948 +#: part/models.py:941 msgid "Internal Part Number" msgstr "" -#: part/models.py:955 +#: part/models.py:948 msgid "Part revision or version number" msgstr "" -#: part/models.py:980 +#: part/models.py:973 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:1026 part/templates/part/part_base.html:376 +#: part/models.py:1019 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:1027 +#: part/models.py:1020 msgid "Default supplier part" msgstr "" -#: part/models.py:1034 +#: part/models.py:1027 msgid "Default Expiry" msgstr "" -#: part/models.py:1035 +#: part/models.py:1028 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:1044 +#: part/models.py:1037 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:1053 +#: part/models.py:1046 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1060 +#: part/models.py:1053 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1066 +#: part/models.py:1059 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1072 +#: part/models.py:1065 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1078 +#: part/models.py:1071 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1084 +#: part/models.py:1077 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1088 +#: part/models.py:1081 msgid "Is this part active?" msgstr "" -#: part/models.py:1094 +#: part/models.py:1087 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1100 +#: part/models.py:1093 msgid "BOM checksum" msgstr "" -#: part/models.py:1101 +#: part/models.py:1094 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1109 +#: part/models.py:1102 msgid "BOM checked by" msgstr "" -#: part/models.py:1114 +#: part/models.py:1107 msgid "BOM checked date" msgstr "" -#: part/models.py:1130 +#: part/models.py:1123 msgid "Creation User" msgstr "" -#: part/models.py:1140 +#: part/models.py:1133 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1145 part/templates/part/part_base.html:339 +#: part/models.py:1138 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2470 +#: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:2018 +#: part/models.py:2011 msgid "Sell multiple" msgstr "" -#: part/models.py:3037 +#: part/models.py:3002 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:3053 +#: part/models.py:3018 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:3054 +#: part/models.py:3019 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:3060 +#: part/models.py:3025 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3026 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:3067 +#: part/models.py:3032 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3033 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3074 +#: part/models.py:3039 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3040 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3046 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3047 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3053 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3054 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3060 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3096 +#: part/models.py:3061 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3102 +#: part/models.py:3067 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3103 +#: part/models.py:3068 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3109 +#: part/models.py:3074 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3110 +#: part/models.py:3075 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3116 +#: part/models.py:3081 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3117 +#: part/models.py:3082 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3124 +#: part/models.py:3089 msgid "Override minimum cost" msgstr "" -#: part/models.py:3131 +#: part/models.py:3096 msgid "Override maximum cost" msgstr "" -#: part/models.py:3138 +#: part/models.py:3103 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3145 +#: part/models.py:3110 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3151 +#: part/models.py:3116 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3152 +#: part/models.py:3117 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3158 +#: part/models.py:3123 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3159 +#: part/models.py:3124 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3165 +#: part/models.py:3130 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3131 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3172 +#: part/models.py:3137 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3138 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3192 +#: part/models.py:3157 msgid "Part for stocktake" msgstr "" -#: part/models.py:3197 +#: part/models.py:3162 msgid "Item Count" msgstr "" -#: part/models.py:3198 +#: part/models.py:3163 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3206 +#: part/models.py:3171 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3210 part/models.py:3293 +#: part/models.py:3175 part/models.py:3258 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report.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/part.js:1086 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" -#: part/models.py:3211 +#: part/models.py:3176 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3219 +#: part/models.py:3184 msgid "Additional notes" msgstr "" -#: part/models.py:3229 +#: part/models.py:3194 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3235 +#: part/models.py:3200 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3236 +#: part/models.py:3201 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3242 +#: part/models.py:3207 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3243 +#: part/models.py:3208 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3264 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3300 +#: part/models.py:3265 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3270 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3306 +#: part/models.py:3271 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3316 +#: part/models.py:3281 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3478 +#: part/models.py:3423 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3489 +#: part/models.py:3444 part/models.py:3608 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3455 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3500 +#: part/models.py:3466 msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3517 templates/js/translated/part.js:2878 +#: part/models.py:3483 templates/js/translated/part.js:2880 msgid "Test Name" msgstr "" -#: part/models.py:3518 +#: part/models.py:3484 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3524 +#: part/models.py:3490 msgid "Test Key" msgstr "" -#: part/models.py:3525 +#: part/models.py:3491 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3532 +#: part/models.py:3498 msgid "Test Description" msgstr "" -#: part/models.py:3533 +#: part/models.py:3499 msgid "Enter description for this test" msgstr "" -#: part/models.py:3537 report/models.py:208 -#: templates/js/translated/part.js:2899 +#: part/models.py:3503 report/models.py:209 +#: templates/js/translated/part.js:2901 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" -#: part/models.py:3537 +#: part/models.py:3503 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3542 templates/js/translated/part.js:2907 +#: part/models.py:3508 templates/js/translated/part.js:2909 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3543 +#: part/models.py:3509 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3548 templates/js/translated/part.js:2915 +#: part/models.py:3514 templates/js/translated/part.js:2917 msgid "Requires Value" msgstr "" -#: part/models.py:3549 +#: part/models.py:3515 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3554 templates/js/translated/part.js:2922 +#: part/models.py:3520 templates/js/translated/part.js:2924 msgid "Requires Attachment" msgstr "" -#: part/models.py:3556 +#: part/models.py:3522 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3603 +#: part/models.py:3528 part/models.py:3667 templates/js/translated/part.js:1637 +msgid "Choices" +msgstr "" + +#: part/models.py:3529 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3583 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3608 +#: part/models.py:3588 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3628 -msgid "Choices must be unique" -msgstr "" - -#: part/models.py:3645 +#: part/models.py:3625 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3660 +#: part/models.py:3640 msgid "Parameter Name" msgstr "" -#: part/models.py:3667 +#: part/models.py:3647 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3675 +#: part/models.py:3655 msgid "Parameter description" msgstr "" -#: part/models.py:3681 templates/js/translated/part.js:1627 +#: part/models.py:3661 templates/js/translated/part.js:1628 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "" -#: part/models.py:3682 +#: part/models.py:3662 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3687 templates/js/translated/part.js:1636 -msgid "Choices" -msgstr "" - -#: part/models.py:3688 +#: part/models.py:3668 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3765 +#: part/models.py:3745 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3808 +#: part/models.py:3788 msgid "Parent Part" msgstr "" -#: part/models.py:3816 part/models.py:3917 part/models.py:3918 +#: part/models.py:3796 part/models.py:3897 part/models.py:3898 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3821 +#: part/models.py:3801 msgid "Data" msgstr "" -#: part/models.py:3822 +#: part/models.py:3802 msgid "Parameter Value" msgstr "" -#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3904 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3925 +#: part/models.py:3905 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3963 +#: part/models.py:3943 msgid "Part ID or part name" msgstr "" -#: part/models.py:3964 +#: part/models.py:3944 msgid "Unique part ID value" msgstr "" -#: part/models.py:3966 +#: part/models.py:3946 msgid "Part IPN value" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "Level" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "BOM level" msgstr "" -#: part/models.py:4057 +#: part/models.py:4037 msgid "Select parent part" msgstr "" -#: part/models.py:4067 +#: part/models.py:4047 msgid "Sub part" msgstr "" -#: part/models.py:4068 +#: part/models.py:4048 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4079 +#: part/models.py:4059 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4085 +#: part/models.py:4065 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4091 +#: part/models.py:4071 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4098 part/templates/part/upload_bom.html:55 +#: part/models.py:4078 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4099 +#: part/models.py:4079 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4106 +#: part/models.py:4086 msgid "BOM item reference" msgstr "" -#: part/models.py:4114 +#: part/models.py:4094 msgid "BOM item notes" msgstr "" -#: part/models.py:4120 +#: part/models.py:4100 msgid "Checksum" msgstr "" -#: part/models.py:4121 +#: part/models.py:4101 msgid "BOM line checksum" msgstr "" -#: part/models.py:4126 templates/js/translated/table_filters.js:174 +#: part/models.py:4106 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4127 +#: part/models.py:4107 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4132 part/templates/part/upload_bom.html:57 +#: part/models.py:4112 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:4133 +#: part/models.py:4113 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4138 part/templates/part/upload_bom.html:56 +#: part/models.py:4118 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4139 +#: part/models.py:4119 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4224 stock/models.py:664 +#: part/models.py:4204 stock/models.py:662 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4234 part/models.py:4236 +#: part/models.py:4214 part/models.py:4216 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4376 +#: part/models.py:4354 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4397 +#: part/models.py:4375 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4410 +#: part/models.py:4388 msgid "Parent BOM item" msgstr "" -#: part/models.py:4418 +#: part/models.py:4396 msgid "Substitute part" msgstr "" -#: part/models.py:4434 +#: part/models.py:4412 msgid "Part 1" msgstr "" -#: part/models.py:4442 +#: part/models.py:4420 msgid "Part 2" msgstr "" -#: part/models.py:4443 +#: part/models.py:4421 msgid "Select Related Part" msgstr "" -#: part/models.py:4462 +#: part/models.py:4440 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4467 +#: part/models.py:4445 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:119 part/serializers.py:141 +#: part/serializers.py:118 +msgid "Parent Category" +msgstr "" + +#: part/serializers.py:119 templates/js/translated/part.js:309 +msgid "Parent part category" +msgstr "" + +#: part/serializers.py:126 part/serializers.py:148 #: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/serializers.py:185 +#: part/serializers.py:180 msgid "Results" msgstr "" -#: part/serializers.py:186 +#: part/serializers.py:181 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 +#: part/serializers.py:205 part/serializers.py:223 stock/serializers.py:562 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:273 +#: part/serializers.py:268 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:397 +#: part/serializers.py:392 msgid "No parts selected" msgstr "" -#: part/serializers.py:407 +#: part/serializers.py:402 msgid "Select category" msgstr "" -#: part/serializers.py:442 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:443 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:448 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:449 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:455 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:456 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:463 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:488 +#: part/serializers.py:483 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:490 +#: part/serializers.py:485 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:497 +#: part/serializers.py:492 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:493 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:510 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:531 +#: part/serializers.py:526 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:541 +#: part/serializers.py:536 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:548 +#: part/serializers.py:543 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:557 +#: part/serializers.py:552 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:568 +#: part/serializers.py:563 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:575 +#: part/serializers.py:570 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:834 msgid "External Stock" msgstr "" -#: part/serializers.py:840 +#: part/serializers.py:836 msgid "Unallocated Stock" msgstr "" -#: part/serializers.py:843 +#: part/serializers.py:839 msgid "Variant Stock" msgstr "" -#: part/serializers.py:873 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:471 +#: part/serializers.py:869 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:472 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:870 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:880 templates/js/translated/part.js:102 +#: part/serializers.py:876 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:881 +#: part/serializers.py:877 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:887 +#: part/serializers.py:883 msgid "Supplier Information" msgstr "" -#: part/serializers.py:888 +#: part/serializers.py:884 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:896 +#: part/serializers.py:892 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:897 +#: part/serializers.py:893 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:902 +#: part/serializers.py:898 msgid "Existing Image" msgstr "" -#: part/serializers.py:903 +#: part/serializers.py:899 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:920 +#: part/serializers.py:916 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1126 +#: part/serializers.py:1122 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1136 +#: part/serializers.py:1132 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1146 +#: part/serializers.py:1142 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1152 +#: part/serializers.py:1148 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1153 +#: part/serializers.py:1149 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1158 +#: part/serializers.py:1154 msgid "Generate Report" msgstr "" -#: part/serializers.py:1159 +#: part/serializers.py:1155 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1164 +#: part/serializers.py:1160 msgid "Update Parts" msgstr "" -#: part/serializers.py:1165 +#: part/serializers.py:1161 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1173 +#: part/serializers.py:1169 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1279 +#: part/serializers.py:1275 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1286 +#: part/serializers.py:1282 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1294 +#: part/serializers.py:1290 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1301 +#: part/serializers.py:1297 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1330 +#: part/serializers.py:1326 msgid "Update" msgstr "" -#: part/serializers.py:1331 +#: part/serializers.py:1327 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1354 +#: part/serializers.py:1350 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1361 +#: part/serializers.py:1357 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1364 +#: part/serializers.py:1360 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1727 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1739 +#: part/serializers.py:1735 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1740 +#: part/serializers.py:1736 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1745 +#: part/serializers.py:1741 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1746 +#: part/serializers.py:1742 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1747 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1752 +#: part/serializers.py:1748 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1757 +#: part/serializers.py:1753 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1758 +#: part/serializers.py:1754 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1792 +#: part/serializers.py:1788 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1793 +#: part/serializers.py:1789 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1823 +#: part/serializers.py:1819 msgid "No part column specified" msgstr "" -#: part/serializers.py:1867 +#: part/serializers.py:1863 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1870 +#: part/serializers.py:1866 msgid "No matching part found" msgstr "" -#: part/serializers.py:1873 +#: part/serializers.py:1869 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1882 +#: part/serializers.py:1878 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1890 +#: part/serializers.py:1886 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1911 +#: part/serializers.py:1907 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 +#: part/stocktake.py:225 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "" -#: part/stocktake.py:225 +#: part/stocktake.py:226 msgid "Total Cost Min" msgstr "" -#: part/stocktake.py:226 +#: part/stocktake.py:227 msgid "Total Cost Max" msgstr "" -#: part/stocktake.py:284 +#: part/stocktake.py:285 msgid "Stocktake Report Available" msgstr "" -#: part/stocktake.py:285 +#: part/stocktake.py:286 msgid "A new stocktake report is available for download" msgstr "" @@ -7152,7 +7228,7 @@ 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 +#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" @@ -7252,15 +7328,15 @@ msgstr "" msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:655 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:663 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:748 +#: part/templates/part/detail.html:750 msgid "Add Test Result Template" msgstr "" @@ -7341,7 +7417,7 @@ msgstr "" msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" msgstr "" @@ -7413,7 +7489,7 @@ 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:2443 +#: templates/js/translated/part.js:1265 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7506,8 +7582,8 @@ msgstr "" #: 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:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/part.js:1243 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 #: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7550,7 +7626,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:247 +#: part/templates/part/prices.html:28 stock/admin.py:251 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 @@ -7627,8 +7703,8 @@ msgstr "" #: part/templates/part/stock_count.html:7 #: templates/js/translated/model_renderers.js:227 -#: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 -#: templates/js/translated/part.js:2142 +#: templates/js/translated/part.js:705 templates/js/translated/part.js:2141 +#: templates/js/translated/part.js:2143 msgid "No Stock" msgstr "" @@ -8000,7 +8076,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:308 msgid "Landscape" msgstr "" @@ -8113,62 +8189,62 @@ msgstr "" msgid "Uninstalled plugin successfully" msgstr "" -#: plugin/models.py:35 +#: plugin/models.py:36 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:36 +#: plugin/models.py:37 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:42 users/models.py:100 +#: plugin/models.py:43 users/models.py:100 msgid "Key" msgstr "" -#: plugin/models.py:43 +#: plugin/models.py:44 msgid "Key of plugin" msgstr "" -#: plugin/models.py:51 +#: plugin/models.py:52 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:58 plugin/serializers.py:90 +#: plugin/models.py:59 plugin/serializers.py:90 msgid "Package Name" msgstr "" -#: plugin/models.py:60 +#: plugin/models.py:61 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:65 +#: plugin/models.py:66 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:156 templates/js/translated/table_filters.js:370 +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "" -#: plugin/models.py:165 +#: plugin/models.py:166 msgid "Sample plugin" msgstr "" -#: plugin/models.py:173 +#: plugin/models.py:174 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:181 +#: plugin/models.py:182 msgid "Package Plugin" msgstr "" -#: plugin/models.py:205 report/models.py:474 +#: plugin/models.py:220 report/models.py:475 #: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:252 +#: plugin/models.py:267 msgid "Method" msgstr "" @@ -8176,17 +8252,17 @@ msgstr "" msgid "No author found" msgstr "" -#: plugin/registry.py:597 +#: plugin/registry.py:534 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:600 +#: plugin/registry.py:537 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:602 +#: plugin/registry.py:539 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -8301,23 +8377,19 @@ msgstr "" msgid "Activate this plugin" msgstr "" -#: plugin/serializers.py:234 +#: plugin/serializers.py:226 msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:235 +#: plugin/serializers.py:227 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:77 +#: report/api.py:88 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:89 report/serializers.py:53 -msgid "Model Type" -msgstr "" - -#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/api.py:103 report/models.py:439 report/serializers.py:98 #: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 #: templates/js/translated/return_order.js:353 #: templates/js/translated/sales_order.js:887 @@ -8325,176 +8397,176 @@ msgstr "" msgid "Items" msgstr "" -#: report/api.py:168 +#: report/api.py:180 msgid "Plugin not found" msgstr "" -#: report/api.py:170 +#: report/api.py:182 msgid "Plugin is not active" msgstr "" -#: report/api.py:172 +#: report/api.py:184 msgid "Plugin does not support label printing" msgstr "" -#: report/api.py:221 +#: report/api.py:233 msgid "Invalid label dimensions" msgstr "" -#: report/api.py:236 report/api.py:316 +#: report/api.py:248 report/api.py:329 msgid "No valid items provided to template" msgstr "" -#: report/api.py:271 +#: report/api.py:283 msgid "Error printing label" msgstr "" -#: report/api.py:362 report/api.py:398 +#: report/api.py:375 report/api.py:411 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/helpers.py:41 +#: report/helpers.py:43 msgid "A4" msgstr "" -#: report/helpers.py:42 +#: report/helpers.py:44 msgid "A3" msgstr "" -#: report/helpers.py:43 +#: report/helpers.py:45 msgid "Legal" msgstr "" -#: report/helpers.py:44 +#: report/helpers.py:46 msgid "Letter" msgstr "" -#: report/models.py:118 +#: report/models.py:119 msgid "Template file with this name already exists" msgstr "" -#: report/models.py:150 +#: report/models.py:151 msgid "Template name" msgstr "" -#: report/models.py:156 +#: report/models.py:157 msgid "Template description" msgstr "" -#: report/models.py:162 +#: report/models.py:163 msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Filename Pattern" msgstr "" -#: report/models.py:203 +#: report/models.py:204 msgid "Pattern for generating filenames" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Template is enabled" msgstr "" -#: report/models.py:214 +#: report/models.py:215 msgid "Target model type for template" msgstr "" -#: report/models.py:234 +#: report/models.py:235 msgid "Filters" msgstr "" -#: report/models.py:235 +#: report/models.py:236 msgid "Template query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:294 report/models.py:361 +#: report/models.py:295 report/models.py:362 msgid "Template file" msgstr "" -#: report/models.py:302 +#: report/models.py:303 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:308 +#: report/models.py:309 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:367 +#: report/models.py:368 msgid "Width [mm]" msgstr "" -#: report/models.py:368 +#: report/models.py:369 msgid "Label width, specified in mm" msgstr "" -#: report/models.py:374 +#: report/models.py:375 msgid "Height [mm]" msgstr "" -#: report/models.py:375 +#: report/models.py:376 msgid "Label height, specified in mm" msgstr "" -#: report/models.py:438 +#: report/models.py:439 msgid "Number of items to process" msgstr "" -#: report/models.py:444 +#: report/models.py:445 msgid "Report generation is complete" msgstr "" -#: report/models.py:448 templates/js/translated/build.js:2177 +#: report/models.py:449 templates/js/translated/build.js:2177 msgid "Progress" msgstr "" -#: report/models.py:448 +#: report/models.py:449 msgid "Report generation progress" msgstr "" -#: report/models.py:456 +#: report/models.py:457 msgid "Report Template" msgstr "" -#: report/models.py:463 report/models.py:486 +#: report/models.py:464 report/models.py:487 msgid "Output File" msgstr "" -#: report/models.py:464 report/models.py:487 +#: report/models.py:465 report/models.py:488 msgid "Generated output file" msgstr "" -#: report/models.py:475 +#: report/models.py:476 msgid "Label output plugin" msgstr "" -#: report/models.py:479 +#: report/models.py:480 msgid "Label Template" msgstr "" -#: report/models.py:502 +#: report/models.py:503 msgid "Snippet" msgstr "" -#: report/models.py:503 +#: report/models.py:504 msgid "Report snippet file" msgstr "" -#: report/models.py:510 +#: report/models.py:511 msgid "Snippet file description" msgstr "" -#: report/models.py:528 +#: report/models.py:529 msgid "Asset" msgstr "" -#: report/models.py:529 +#: report/models.py:530 msgid "Report asset file" msgstr "" -#: report/models.py:536 +#: report/models.py:537 msgid "Asset file description" msgstr "" @@ -8567,8 +8639,8 @@ msgid "Total" msgstr "" #: report/templates/report/inventree_return_order_report.html:25 -#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 -#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:824 +#: stock/serializers.py:149 stock/templates/stock/item_base.html:311 #: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 #: templates/js/translated/build.js:2355 #: templates/js/translated/model_renderers.js:230 @@ -8598,32 +8670,32 @@ msgstr "" msgid "Test" msgstr "" -#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2412 msgid "Result" msgstr "" -#: report/templates/report/inventree_test_report.html:130 +#: report/templates/report/inventree_test_report.html:129 msgid "Pass" msgstr "" -#: report/templates/report/inventree_test_report.html:132 +#: report/templates/report/inventree_test_report.html:131 msgid "Fail" msgstr "" -#: report/templates/report/inventree_test_report.html:139 +#: report/templates/report/inventree_test_report.html:138 msgid "No result (required)" msgstr "" -#: report/templates/report/inventree_test_report.html:141 +#: report/templates/report/inventree_test_report.html:140 msgid "No result" msgstr "" -#: report/templates/report/inventree_test_report.html:154 +#: report/templates/report/inventree_test_report.html:153 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "" -#: report/templates/report/inventree_test_report.html:168 stock/admin.py:162 +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 #: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 #: templates/js/translated/stock.js:3110 msgid "Serial" @@ -8645,654 +8717,670 @@ msgstr "" msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:172 +#: stock/admin.py:51 stock/admin.py:171 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:176 +#: stock/admin.py:53 stock/admin.py:175 msgid "Location Name" msgstr "" -#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/admin.py:63 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:149 +#: stock/admin.py:148 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:168 +#: stock/admin.py:167 msgid "Status Code" msgstr "" -#: stock/admin.py:180 +#: stock/admin.py:179 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:185 +#: stock/admin.py:184 +msgid "Supplier Part SKU" +msgstr "" + +#: stock/admin.py:189 msgid "Supplier ID" msgstr "" -#: stock/admin.py:191 +#: stock/admin.py:195 msgid "Supplier Name" msgstr "" -#: stock/admin.py:196 +#: stock/admin.py:200 msgid "Customer ID" msgstr "" -#: stock/admin.py:201 stock/models.py:806 +#: stock/admin.py:205 stock/models.py:804 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:206 +#: stock/admin.py:210 msgid "Build ID" msgstr "" -#: stock/admin.py:216 +#: stock/admin.py:220 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:221 +#: stock/admin.py:225 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:236 +#: stock/admin.py:240 msgid "Review Needed" msgstr "" -#: stock/admin.py:241 +#: stock/admin.py:245 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:256 stock/models.py:900 +#: stock/admin.py:260 stock/models.py:898 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "" -#: stock/api.py:318 +#: stock/api.py:312 msgid "Filter by location depth" msgstr "" -#: stock/api.py:338 +#: stock/api.py:332 +msgid "Filter by top-level locations" +msgstr "" + +#: stock/api.py:347 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:359 +#: stock/api.py:369 stock/serializers.py:1085 msgid "Parent Location" msgstr "" -#: stock/api.py:360 +#: stock/api.py:370 msgid "Filter by parent location" msgstr "" -#: stock/api.py:615 templates/js/translated/table_filters.js:427 +#: stock/api.py:625 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:803 +#: stock/api.py:813 msgid "Part Tree" msgstr "" -#: stock/api.py:833 +#: stock/api.py:843 msgid "Expiry date before" msgstr "" -#: stock/api.py:837 +#: stock/api.py:847 msgid "Expiry date after" msgstr "" -#: stock/api.py:840 stock/templates/stock/item_base.html:439 +#: stock/api.py:850 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:927 +#: stock/api.py:937 msgid "Quantity is required" msgstr "" -#: stock/api.py:933 +#: stock/api.py:943 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:964 +#: stock/api.py:974 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:974 +#: stock/api.py:984 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:1005 +#: stock/api.py:1015 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:59 +#: stock/models.py:60 msgid "Stock Location type" msgstr "" -#: stock/models.py:60 +#: stock/models.py:61 msgid "Stock Location types" msgstr "" -#: stock/models.py:86 +#: stock/models.py:87 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:123 stock/models.py:788 +#: stock/models.py:124 stock/models.py:786 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:124 stock/templates/stock/location.html:186 +#: stock/models.py:125 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "" -#: stock/models.py:166 stock/models.py:949 +#: stock/models.py:167 stock/models.py:947 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:167 stock/models.py:950 +#: stock/models.py:168 stock/models.py:948 msgid "Select Owner" msgstr "" -#: stock/models.py:175 +#: stock/models.py:176 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:182 templates/js/translated/stock.js:2781 +#: stock/models.py:183 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:183 +#: stock/models.py:184 msgid "This is an external stock location" msgstr "" -#: stock/models.py:189 templates/js/translated/stock.js:2790 +#: stock/models.py:190 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" -#: stock/models.py:193 +#: stock/models.py:194 msgid "Stock location type of this location" msgstr "" -#: stock/models.py:262 +#: stock/models.py:261 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:643 +#: stock/models.py:641 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:670 stock/serializers.py:419 +#: stock/models.py:668 stock/serializers.py:446 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:687 +#: stock/models.py:685 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:697 stock/models.py:710 +#: stock/models.py:695 stock/models.py:708 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:700 +#: stock/models.py:698 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:724 +#: stock/models.py:722 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:729 +#: stock/models.py:727 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:742 +#: stock/models.py:740 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:758 +#: stock/models.py:756 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:770 +#: stock/models.py:768 msgid "Base part" msgstr "" -#: stock/models.py:780 +#: stock/models.py:778 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:792 +#: stock/models.py:790 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:800 stock/serializers.py:1480 +#: stock/models.py:798 stock/serializers.py:1476 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:811 +#: stock/models.py:809 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:830 +#: stock/models.py:828 msgid "Serial number for this item" msgstr "" -#: stock/models.py:844 stock/serializers.py:1463 +#: stock/models.py:842 stock/serializers.py:1459 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:849 +#: stock/models.py:847 msgid "Stock Quantity" msgstr "" -#: stock/models.py:859 +#: stock/models.py:857 msgid "Source Build" msgstr "" -#: stock/models.py:862 +#: stock/models.py:860 msgid "Build for this stock item" msgstr "" -#: stock/models.py:869 stock/templates/stock/item_base.html:363 +#: stock/models.py:867 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:872 +#: stock/models.py:870 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:881 +#: stock/models.py:879 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:885 +#: stock/models.py:883 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:891 +#: stock/models.py:889 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:902 +#: stock/models.py:900 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:920 +#: stock/models.py:918 msgid "Delete on deplete" msgstr "" -#: stock/models.py:921 +#: stock/models.py:919 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:941 +#: stock/models.py:939 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:972 +#: stock/models.py:970 msgid "Converted to part" msgstr "" -#: stock/models.py:1490 +#: stock/models.py:1486 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1496 +#: stock/models.py:1492 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1500 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1510 +#: stock/models.py:1506 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1515 +#: stock/models.py:1511 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1523 stock/serializers.py:658 +#: stock/models.py:1519 stock/serializers.py:660 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1620 +#: stock/models.py:1616 msgid "Test template does not exist" msgstr "" -#: stock/models.py:1638 +#: stock/models.py:1634 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1642 +#: stock/models.py:1638 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1645 +#: stock/models.py:1641 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1648 +#: stock/models.py:1644 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1651 +#: stock/models.py:1647 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1654 +#: stock/models.py:1650 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1661 stock/serializers.py:1369 +#: stock/models.py:1657 stock/serializers.py:1365 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1665 +#: stock/models.py:1661 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1673 +#: stock/models.py:1669 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1678 +#: stock/models.py:1674 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1905 +#: stock/models.py:1901 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2310 msgid "Entry notes" msgstr "" -#: stock/models.py:2391 +#: stock/models.py:2378 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2396 +#: stock/models.py:2383 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2423 +#: stock/models.py:2388 +msgid "Invalid value for this test" +msgstr "" + +#: stock/models.py:2412 msgid "Test result" msgstr "" -#: stock/models.py:2430 +#: stock/models.py:2419 msgid "Test output value" msgstr "" -#: stock/models.py:2438 +#: stock/models.py:2427 msgid "Test result attachment" msgstr "" -#: stock/models.py:2442 +#: stock/models.py:2431 msgid "Test notes" msgstr "" -#: stock/models.py:2450 templates/js/translated/stock.js:1548 +#: stock/models.py:2439 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2440 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2457 +#: stock/models.py:2446 msgid "Started" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2447 msgid "The timestamp of the test start" msgstr "" -#: stock/models.py:2464 +#: stock/models.py:2453 msgid "Finished" msgstr "" -#: stock/models.py:2465 +#: stock/models.py:2454 msgid "The timestamp of the test finish" msgstr "" -#: stock/serializers.py:75 +#: stock/serializers.py:74 msgid "Generated batch code" msgstr "" -#: stock/serializers.py:84 +#: stock/serializers.py:83 msgid "Select build order" msgstr "" -#: stock/serializers.py:93 +#: stock/serializers.py:92 msgid "Select stock item to generate batch code for" msgstr "" -#: stock/serializers.py:102 +#: stock/serializers.py:101 msgid "Select location to generate batch code for" msgstr "" -#: stock/serializers.py:111 +#: stock/serializers.py:110 msgid "Select part to generate batch code for" msgstr "" -#: stock/serializers.py:120 +#: stock/serializers.py:119 msgid "Select purchase order" msgstr "" -#: stock/serializers.py:127 +#: stock/serializers.py:126 msgid "Enter quantity for batch code" msgstr "" -#: stock/serializers.py:150 +#: stock/serializers.py:149 msgid "Generated serial number" msgstr "" -#: stock/serializers.py:159 +#: stock/serializers.py:158 msgid "Select part to generate serial number for" msgstr "" -#: stock/serializers.py:167 +#: stock/serializers.py:166 msgid "Quantity of serial numbers to generate" msgstr "" -#: stock/serializers.py:229 +#: stock/serializers.py:228 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:248 +#: stock/serializers.py:247 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:280 +#: stock/serializers.py:279 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:313 +#: stock/serializers.py:315 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:411 +#: stock/serializers.py:438 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:531 +#: stock/serializers.py:558 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:595 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:606 +#: stock/serializers.py:608 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:613 +#: stock/serializers.py:615 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 +#: stock/serializers.py:626 stock/serializers.py:1322 stock/serializers.py:1578 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:631 +#: stock/serializers.py:633 msgid "Optional note field" msgstr "" -#: stock/serializers.py:641 +#: stock/serializers.py:643 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:696 +#: stock/serializers.py:698 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:703 +#: stock/serializers.py:705 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:704 +#: stock/serializers.py:706 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 -#: stock/serializers.py:935 +#: stock/serializers.py:711 stock/serializers.py:791 stock/serializers.py:887 +#: stock/serializers.py:937 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:719 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:725 +#: stock/serializers.py:727 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:736 +#: stock/serializers.py:738 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:749 +#: stock/serializers.py:751 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:784 +#: stock/serializers.py:786 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:819 +#: stock/serializers.py:821 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:834 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:849 +#: stock/serializers.py:851 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:880 +#: stock/serializers.py:882 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:917 +#: stock/serializers.py:919 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:923 +#: stock/serializers.py:925 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:1019 stock/serializers.py:1082 +#: stock/serializers.py:1021 stock/serializers.py:1093 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:220 +#: stock/templates/stock/location.html:222 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1198 +#: stock/serializers.py:1086 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: stock/serializers.py:1194 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1202 +#: stock/serializers.py:1198 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1206 +#: stock/serializers.py:1202 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1230 +#: stock/serializers.py:1226 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1236 +#: stock/serializers.py:1232 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1244 +#: stock/serializers.py:1240 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1254 stock/serializers.py:1508 +#: stock/serializers.py:1250 stock/serializers.py:1504 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1333 +#: stock/serializers.py:1329 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1338 +#: stock/serializers.py:1334 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1339 +#: stock/serializers.py:1335 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1344 +#: stock/serializers.py:1340 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1345 +#: stock/serializers.py:1341 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1355 +#: stock/serializers.py:1351 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1422 +#: stock/serializers.py:1418 msgid "No Change" msgstr "" -#: stock/serializers.py:1451 +#: stock/serializers.py:1447 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1470 +#: stock/serializers.py:1466 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1498 +#: stock/serializers.py:1494 msgid "Stock transaction notes" msgstr "" @@ -9445,7 +9533,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276 msgid "Delete Test Data" msgstr "" @@ -9465,11 +9553,11 @@ msgstr "" msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:272 +#: stock/templates/stock/item.html:264 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "" @@ -9755,28 +9843,28 @@ msgstr "" msgid "Location Type" msgstr "" -#: stock/templates/stock/location.html:224 +#: stock/templates/stock/location.html:226 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:225 +#: stock/templates/stock/location.html:227 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:295 +#: stock/templates/stock/location.html:299 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:317 +#: stock/templates/stock/location.html:321 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:390 +#: stock/templates/stock/location.html:394 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:401 +#: stock/templates/stock/location.html:405 msgid "Link Barcode to Stock Location" msgstr "" @@ -10200,20 +10288,20 @@ msgstr "" msgid "Pricing Settings" msgstr "" -#: templates/InvenTree/settings/pricing.html:34 +#: templates/InvenTree/settings/pricing.html:35 msgid "Exchange Rates" msgstr "" -#: templates/InvenTree/settings/pricing.html:38 +#: templates/InvenTree/settings/pricing.html:39 msgid "Update Now" msgstr "" -#: templates/InvenTree/settings/pricing.html:46 -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 msgid "Last Update" msgstr "" -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:51 msgid "Never" msgstr "" @@ -10270,8 +10358,8 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:547 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 +#: templates/js/translated/part.js:393 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:402 msgid "Delete" msgstr "" @@ -10311,12 +10399,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 -#: templates/js/translated/part.js:1645 +#: templates/js/translated/part.js:1646 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 -#: templates/js/translated/part.js:1646 +#: templates/js/translated/part.js:1647 msgid "Delete Template" msgstr "" @@ -10706,7 +10794,7 @@ msgid "Submit Bug Report" msgstr "" #: templates/about.html:91 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 +#: templates/js/translated/helpers.js:589 msgid "copy to clipboard" msgstr "" @@ -10770,7 +10858,7 @@ 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 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45 msgid "Return to Site" msgstr "" @@ -10884,15 +10972,19 @@ msgstr "" msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "" -#: templates/allauth_2fa/setup.html:23 +#: templates/allauth_2fa/setup.html:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 msgid "Step 2" msgstr "" -#: templates/allauth_2fa/setup.html:27 +#: templates/allauth_2fa/setup.html:28 msgid "Input a token generated by the app:" msgstr "" -#: templates/allauth_2fa/setup.html:37 +#: templates/allauth_2fa/setup.html:38 msgid "Verify" msgstr "" @@ -10971,7 +11063,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3217 +#: templates/js/translated/part.js:3219 msgid "Minimum Quantity" msgstr "" @@ -11059,27 +11151,27 @@ msgstr "" msgid "Delete attachments" msgstr "" -#: templates/js/translated/attachment.js:253 +#: templates/js/translated/attachment.js:260 msgid "Attachment actions" msgstr "" -#: templates/js/translated/attachment.js:275 +#: templates/js/translated/attachment.js:294 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:315 +#: templates/js/translated/attachment.js:334 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:365 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:366 +#: templates/js/translated/attachment.js:385 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:374 +#: templates/js/translated/attachment.js:393 msgid "Delete attachment" msgstr "" @@ -11360,7 +11452,7 @@ msgid "Includes variant and substitute stock" msgstr "" #: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 -#: templates/js/translated/part.js:1256 +#: templates/js/translated/part.js:1257 #: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" @@ -11687,7 +11779,7 @@ msgstr "" #: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 #: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 -#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11730,8 +11822,8 @@ msgstr "" msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 -#: templates/js/translated/part.js:1202 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:791 +#: templates/js/translated/part.js:1203 msgid "Trackable part" msgstr "" @@ -11917,7 +12009,7 @@ msgid "Delete Parameters" msgstr "" #: templates/js/translated/company.js:1191 -#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2244 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2245 msgid "Order parts" msgstr "" @@ -11934,34 +12026,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:1279 -#: templates/js/translated/company.js:1567 templates/js/translated/part.js:798 -#: templates/js/translated/part.js:1210 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Template part" msgstr "" #: templates/js/translated/company.js:1283 -#: templates/js/translated/company.js:1571 templates/js/translated/part.js:802 -#: templates/js/translated/part.js:1214 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:803 +#: templates/js/translated/part.js:1215 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1464 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1465 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1527 +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1528 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1528 +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1529 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1433 +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1434 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1549 +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1550 msgid "Delete Parameter" msgstr "" @@ -12095,23 +12187,23 @@ msgstr "" msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2499 +#: templates/js/translated/forms.js:2500 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3113 +#: templates/js/translated/forms.js:3114 msgid "Select Columns" msgstr "" @@ -12212,7 +12304,7 @@ msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 -#: templates/js/translated/part.js:1604 +#: templates/js/translated/part.js:1605 msgid "ID" msgstr "" @@ -12293,347 +12385,343 @@ msgstr "" 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 +#: templates/js/translated/part.js:333 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:355 +#: templates/js/translated/part.js:356 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:356 +#: templates/js/translated/part.js:357 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:370 +#: templates/js/translated/part.js:371 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:383 +#: templates/js/translated/part.js:384 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:388 +#: templates/js/translated/part.js:389 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:397 +#: templates/js/translated/part.js:398 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:401 +#: templates/js/translated/part.js:402 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:406 +#: templates/js/translated/part.js:407 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:430 +#: templates/js/translated/part.js:431 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:432 +#: templates/js/translated/part.js:433 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:433 +#: templates/js/translated/part.js:434 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:462 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:463 +#: templates/js/translated/part.js:464 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:474 +#: templates/js/translated/part.js:475 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:531 +#: templates/js/translated/part.js:532 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:532 +#: templates/js/translated/part.js:533 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:546 +#: templates/js/translated/part.js:547 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:548 +#: templates/js/translated/part.js:549 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:549 +#: templates/js/translated/part.js:550 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:550 +#: templates/js/translated/part.js:551 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:557 +#: templates/js/translated/part.js:558 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:593 +#: templates/js/translated/part.js:594 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:595 +#: templates/js/translated/part.js:596 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:600 +#: templates/js/translated/part.js:601 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:602 +#: templates/js/translated/part.js:603 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:619 +#: templates/js/translated/part.js:620 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:629 +#: templates/js/translated/part.js:630 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:632 +#: templates/js/translated/part.js:633 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:657 +#: templates/js/translated/part.js:658 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:685 +#: templates/js/translated/part.js:686 #: templates/js/translated/table_filters.js:747 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:688 +#: templates/js/translated/part.js:689 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:748 +#: templates/js/translated/part.js:749 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:771 +#: templates/js/translated/part.js:772 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +#: templates/js/translated/part.js:795 templates/js/translated/part.js:1207 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:806 +#: templates/js/translated/part.js:807 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:810 +#: templates/js/translated/part.js:811 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:897 +#: templates/js/translated/part.js:898 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:901 +#: templates/js/translated/part.js:902 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1050 +#: templates/js/translated/part.js:1051 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1145 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +#: templates/js/translated/part.js:1113 templates/js/translated/part.js:1155 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1281 +#: templates/js/translated/part.js:1282 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1599 +#: templates/js/translated/part.js:1600 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1662 +#: templates/js/translated/part.js:1663 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1674 +#: templates/js/translated/part.js:1675 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1682 +#: templates/js/translated/part.js:1683 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1716 +#: templates/js/translated/part.js:1717 #: templates/js/translated/purchase_order.js:1654 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1860 +#: templates/js/translated/part.js:1861 #: templates/js/translated/purchase_order.js:2153 #: templates/js/translated/return_order.js:755 #: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1906 +#: templates/js/translated/part.js:1907 #: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1970 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1991 +#: templates/js/translated/part.js:1992 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 +#: templates/js/translated/part.js:2080 templates/js/translated/part.js:2506 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2200 +#: templates/js/translated/part.js:2201 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2205 +#: templates/js/translated/part.js:2206 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2235 +#: templates/js/translated/part.js:2236 msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2286 +#: templates/js/translated/part.js:2287 msgid "part" msgstr "" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2288 msgid "parts" msgstr "" -#: templates/js/translated/part.js:2383 +#: templates/js/translated/part.js:2384 msgid "No category" msgstr "" -#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2546 +#: templates/js/translated/part.js:2547 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2644 +#: templates/js/translated/part.js:2645 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2760 +#: templates/js/translated/part.js:2761 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2776 +#: templates/js/translated/part.js:2777 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2865 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2887 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/part.js:2938 templates/js/translated/stock.js:1457 #: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2940 +#: templates/js/translated/part.js:2942 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2956 +#: templates/js/translated/part.js:2958 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2970 +#: templates/js/translated/part.js:2972 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3051 templates/js/translated/part.js:3052 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3052 +#: templates/js/translated/part.js:3054 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3058 +#: templates/js/translated/part.js:3060 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3108 +#: templates/js/translated/part.js:3110 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3114 +#: templates/js/translated/part.js:3116 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3210 +#: templates/js/translated/part.js:3212 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3226 +#: templates/js/translated/part.js:3228 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3271 +#: templates/js/translated/part.js:3273 msgid "Minimum Stock Level" msgstr "" @@ -13241,10 +13329,6 @@ msgstr "" 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 "" @@ -13413,7 +13497,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:401 +#: templates/js/translated/stock.js:1042 users/models.py:392 msgid "Add" msgstr "" @@ -14304,34 +14388,34 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:384 +#: users/models.py:375 msgid "Permission set" msgstr "" -#: users/models.py:393 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "View" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "Permission to view items" msgstr "" -#: users/models.py:401 +#: users/models.py:392 msgid "Permission to add items" msgstr "" -#: users/models.py:405 +#: users/models.py:396 msgid "Change" msgstr "" -#: users/models.py:407 +#: users/models.py:398 msgid "Permissions to edit items" msgstr "" -#: users/models.py:413 +#: users/models.py:404 msgid "Permission to delete items" msgstr "" diff --git a/src/backend/InvenTree/locale/es/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/es/LC_MESSAGES/django.po index 0a915caca9..ba6bc4aa5d 100644 --- a/src/backend/InvenTree/locale/es/LC_MESSAGES/django.po +++ b/src/backend/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-05-31 07:08+0000\n" -"PO-Revision-Date: 2024-05-27 11:55\n" +"POT-Creation-Date: 2024-06-26 03:18+0000\n" +"PO-Revision-Date: 2024-06-26 06:05\n" "Last-Translator: \n" "Language-Team: Spanish, Mexico\n" "Language: es_MX\n" @@ -21,7 +21,7 @@ msgstr "" msgid "API endpoint not found" msgstr "Endpoint de API no encontrado" -#: InvenTree/api.py:536 +#: InvenTree/api.py:520 msgid "User does not have permission to view this model" msgstr "El usuario no tiene permiso para ver este modelo" @@ -52,25 +52,25 @@ msgstr "La cantidad suministrada es inválida ({exc})" msgid "Error details can be found in the admin panel" msgstr "Detalles del error pueden encontrarse en el panel de administración" -#: InvenTree/fields.py:139 +#: InvenTree/fields.py:136 msgid "Enter date" msgstr "Ingrese la fecha" -#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 -#: build/serializers.py:531 build/templates/build/sidebar.html:21 -#: company/models.py:849 company/templates/company/sidebar.html:37 -#: order/models.py:1332 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:205 InvenTree/models.py:918 build/serializers.py:452 +#: build/serializers.py:530 build/templates/build/sidebar.html:21 +#: company/models.py:817 company/templates/company/sidebar.html:37 +#: order/models.py:1296 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:3218 part/templates/part/part_sidebar.html:63 +#: part/models.py:3183 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_report.html:172 -#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 -#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 -#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 -#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:230 stock/models.py:2309 stock/models.py:2431 +#: stock/serializers.py:632 stock/serializers.py:790 stock/serializers.py:886 +#: stock/serializers.py:936 stock/serializers.py:1239 stock/serializers.py:1328 +#: stock/serializers.py:1493 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1080 +#: templates/js/translated/part.js:1081 #: templates/js/translated/purchase_order.js:2200 #: templates/js/translated/return_order.js:775 #: templates/js/translated/sales_order.js:1103 @@ -120,15 +120,15 @@ msgstr "Confirmación de correo electrónico" msgid "You must type the same email each time." msgstr "El correo electrónico debe coincidir." -#: InvenTree/forms.py:253 InvenTree/forms.py:261 +#: InvenTree/forms.py:248 InvenTree/forms.py:256 msgid "The provided primary email address is not valid." msgstr "La dirección de correo electrónico principal proporcionada no es válida." -#: InvenTree/forms.py:268 +#: InvenTree/forms.py:263 msgid "The provided email domain is not approved." msgstr "El dominio de correo electrónico proporcionado no está aprobado." -#: InvenTree/forms.py:395 +#: InvenTree/forms.py:390 msgid "Registration is disabled." msgstr "El registro ha sido desactivado." @@ -171,35 +171,35 @@ msgstr "Los números de serie únicos ({len(serials)}) deben coincidir con la ca msgid "Remove HTML tags from this value" msgstr "Elimine etiquetas HTML de este valor" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Connection error" msgstr "Error de conexión" -#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 msgid "Server responded with invalid status code" msgstr "El servidor respondió con un código de estado no válido" -#: InvenTree/helpers_model.py:158 +#: InvenTree/helpers_model.py:148 msgid "Exception occurred" msgstr "Se ha producido una excepción" -#: InvenTree/helpers_model.py:168 +#: InvenTree/helpers_model.py:158 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:171 +#: InvenTree/helpers_model.py:161 msgid "Image size is too large" msgstr "El tamaño de la imagen es demasiado grande" -#: InvenTree/helpers_model.py:183 +#: InvenTree/helpers_model.py:173 msgid "Image download exceeded maximum size" msgstr "La imagen descargada exedió el tamaño máximo" -#: InvenTree/helpers_model.py:188 +#: InvenTree/helpers_model.py:178 msgid "Remote server returned empty response" msgstr "El servidor remoto devolvió una respuesta vacía" -#: InvenTree/helpers_model.py:196 +#: InvenTree/helpers_model.py:186 msgid "Supplied URL is not a valid image file" msgstr "La URL proporcionada no es un archivo de imagen válido" @@ -296,46 +296,50 @@ msgid "Portuguese (Brazilian)" msgstr "Portugués (Brasileño)" #: InvenTree/locales.py:41 +msgid "Romanian" +msgstr "" + +#: InvenTree/locales.py:42 msgid "Russian" msgstr "Ruso" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:43 msgid "Slovak" msgstr "Eslovaco" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:44 msgid "Slovenian" msgstr "Esloveno" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:45 msgid "Serbian" msgstr "Serbio" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:46 msgid "Swedish" msgstr "Sueco" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:47 msgid "Thai" msgstr "Tailandés" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:48 msgid "Turkish" msgstr "Turco" -#: InvenTree/locales.py:48 +#: InvenTree/locales.py:49 msgid "Ukrainian" msgstr "Ucraniano" -#: InvenTree/locales.py:49 +#: InvenTree/locales.py:50 msgid "Vietnamese" msgstr "Vietnamita" -#: InvenTree/locales.py:50 +#: InvenTree/locales.py:51 msgid "Chinese (Simplified)" msgstr "Chino (Simplificado)" -#: InvenTree/locales.py:51 +#: InvenTree/locales.py:52 msgid "Chinese (Traditional)" msgstr "Chino (Tradicional)" @@ -344,153 +348,65 @@ msgstr "Chino (Tradicional)" msgid "[{site_name}] Log in to the app" msgstr "[{site_name}] Iniciar sesión en la aplicación" -#: InvenTree/magic_login.py:38 company/models.py:133 +#: InvenTree/magic_login.py:38 company/models.py:136 #: company/templates/company/company_base.html:138 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:677 msgid "Email" msgstr "Correo electrónico" -#: InvenTree/models.py:107 +#: InvenTree/models.py:105 msgid "Error running plugin validation" msgstr "Error al ejecutar la validación del plugin" -#: InvenTree/models.py:176 +#: InvenTree/models.py:174 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:182 +#: InvenTree/models.py:180 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:183 +#: InvenTree/models.py:181 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:413 +#: InvenTree/models.py:408 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:420 +#: InvenTree/models.py:415 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:426 +#: InvenTree/models.py:421 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:437 +#: InvenTree/models.py:432 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:445 +#: InvenTree/models.py:440 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:476 +#: InvenTree/models.py:471 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:550 -msgid "Missing file" -msgstr "" - -#: InvenTree/models.py:551 -msgid "Missing external link" -msgstr "" - -#: InvenTree/models.py:572 stock/models.py:2437 -#: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:326 -msgid "Attachment" -msgstr "" - -#: InvenTree/models.py:573 -msgid "Select file to attach" -msgstr "" - -#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:831 -#: order/models.py:303 order/models.py:1337 order/models.py:1753 -#: part/admin.py:55 part/models.py:962 -#: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_report.html:164 -#: stock/admin.py:225 templates/js/translated/company.js:1319 -#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2455 -#: templates/js/translated/purchase_order.js:2040 -#: templates/js/translated/purchase_order.js:2204 -#: templates/js/translated/return_order.js:779 -#: templates/js/translated/sales_order.js:1092 -#: templates/js/translated/sales_order.js:2023 -msgid "Link" -msgstr "" - -#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 -#: stock/models.py:836 -msgid "Link to external URL" -msgstr "" - -#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:341 -msgid "Comment" -msgstr "" - -#: InvenTree/models.py:589 -msgid "File comment" -msgstr "" - -#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 -#: common/models.py:2518 common/models.py:2742 common/models.py:2743 -#: common/models.py:2988 common/models.py:2989 part/models.py:3228 -#: part/models.py:3315 part/models.py:3408 part/models.py:3436 -#: plugin/models.py:259 plugin/models.py:260 -#: report/templates/report/inventree_test_report.html:105 -#: templates/js/translated/stock.js:3036 users/models.py:111 -msgid "User" -msgstr "" - -#: InvenTree/models.py:602 -msgid "upload date" -msgstr "" - -#: InvenTree/models.py:624 -msgid "Filename must not be empty" -msgstr "" - -#: InvenTree/models.py:635 -msgid "Invalid attachment directory" -msgstr "" - -#: InvenTree/models.py:665 -#, python-brace-format -msgid "Filename contains illegal character '{c}'" -msgstr "" - -#: InvenTree/models.py:668 -msgid "Filename missing extension" -msgstr "" - -#: InvenTree/models.py:677 -msgid "Attachment with this filename already exists" -msgstr "" - -#: InvenTree/models.py:684 -msgid "Error renaming file" -msgstr "Error al cambiar el nombre del archivo" - -#: InvenTree/models.py:860 +#: InvenTree/models.py:719 msgid "Duplicate names cannot exist under the same parent" msgstr "Los nombres duplicados no pueden existir bajo el mismo padre" -#: InvenTree/models.py:877 +#: InvenTree/models.py:736 msgid "Invalid choice" msgstr "Selección no válida" -#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 -#: common/serializers.py:403 company/models.py:614 machine/models.py:24 -#: part/models.py:898 part/models.py:3659 plugin/models.py:50 -#: report/models.py:149 stock/models.py:72 +#: InvenTree/models.py:766 common/models.py:2623 common/models.py:3036 +#: common/serializers.py:408 company/models.py:580 machine/models.py:24 +#: part/models.py:891 part/models.py:3639 plugin/models.py:51 +#: report/models.py:150 stock/models.py:73 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:83 @@ -501,25 +417,25 @@ msgstr "Selección no válida" #: templates/js/translated/company.js:724 #: templates/js/translated/company.js:913 #: templates/js/translated/company.js:1165 -#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 -#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1187 +#: templates/js/translated/part.js:1475 templates/js/translated/part.js:1611 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Nombre" -#: InvenTree/models.py:913 build/models.py:218 -#: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:523 company/models.py:840 +#: InvenTree/models.py:772 build/models.py:220 +#: build/templates/build/detail.html:24 common/models.py:138 +#: company/models.py:509 company/models.py:808 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 order/models.py:289 -#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 -#: part/models.py:3674 part/templates/part/category.html:82 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:914 +#: part/models.py:3654 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:155 -#: report/models.py:509 report/models.py:535 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 #: report/templates/report/inventree_build_order_report.html:117 -#: stock/admin.py:55 stock/models.py:78 stock/templates/stock/location.html:125 +#: stock/admin.py:54 stock/models.py:79 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 @@ -528,10 +444,10 @@ msgstr "Nombre" #: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 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:2354 -#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1239 +#: templates/js/translated/part.js:1484 templates/js/translated/part.js:1622 +#: templates/js/translated/part.js:1959 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2897 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1706 #: templates/js/translated/purchase_order.js:1849 @@ -544,149 +460,141 @@ msgstr "Nombre" msgid "Description" msgstr "Descripción" -#: InvenTree/models.py:914 stock/models.py:79 +#: InvenTree/models.py:773 stock/models.py:80 msgid "Description (optional)" msgstr "Descripción (opcional)" -#: InvenTree/models.py:923 -msgid "parent" -msgstr "padre" - -#: InvenTree/models.py:929 templates/js/translated/part.js:2793 +#: InvenTree/models.py:788 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Ruta" -#: InvenTree/models.py:1035 +#: InvenTree/models.py:918 msgid "Markdown notes (optional)" msgstr "Notas (opcional)" -#: InvenTree/models.py:1064 +#: InvenTree/models.py:947 msgid "Barcode Data" msgstr "Datos de código de barras" -#: InvenTree/models.py:1065 +#: InvenTree/models.py:948 msgid "Third party barcode data" msgstr "Datos de código de barras de terceros" -#: InvenTree/models.py:1071 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "Hash del Código de barras" -#: InvenTree/models.py:1072 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "Hash único de datos de código de barras" -#: InvenTree/models.py:1125 +#: InvenTree/models.py:1008 msgid "Existing barcode found" msgstr "Código de barras existente encontrado" -#: InvenTree/models.py:1168 +#: InvenTree/models.py:1051 msgid "Server Error" msgstr "Error de servidor" -#: InvenTree/models.py:1169 +#: InvenTree/models.py:1052 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:62 part/models.py:4212 +#: InvenTree/serializers.py:63 part/models.py:4192 msgid "Must be a valid number" msgstr "" -#: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:3036 +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3001 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "" -#: InvenTree/serializers.py:102 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:441 +#: InvenTree/serializers.py:442 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:453 +#: InvenTree/serializers.py:454 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:472 +#: InvenTree/serializers.py:473 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:474 +#: InvenTree/serializers.py:475 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:481 +#: InvenTree/serializers.py:482 msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:542 -msgid "Filename" -msgstr "" - -#: InvenTree/serializers.py:576 +#: InvenTree/serializers.py:540 msgid "Invalid value" msgstr "" -#: InvenTree/serializers.py:596 +#: InvenTree/serializers.py:560 msgid "Data File" msgstr "" -#: InvenTree/serializers.py:597 +#: InvenTree/serializers.py:561 msgid "Select data file for upload" msgstr "" -#: InvenTree/serializers.py:614 +#: InvenTree/serializers.py:578 msgid "Unsupported file type" msgstr "" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:584 msgid "File is too large" msgstr "" -#: InvenTree/serializers.py:641 +#: InvenTree/serializers.py:605 msgid "No columns found in file" msgstr "" -#: InvenTree/serializers.py:644 +#: InvenTree/serializers.py:608 msgid "No data rows found in file" msgstr "" -#: InvenTree/serializers.py:757 +#: InvenTree/serializers.py:721 msgid "No data rows provided" msgstr "" -#: InvenTree/serializers.py:760 +#: InvenTree/serializers.py:724 msgid "No data columns supplied" msgstr "" -#: InvenTree/serializers.py:827 +#: InvenTree/serializers.py:791 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "" -#: InvenTree/serializers.py:836 +#: InvenTree/serializers.py:800 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/serializers.py:859 +#: InvenTree/serializers.py:840 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:860 +#: InvenTree/serializers.py:841 msgid "URL of remote image file" msgstr "" -#: InvenTree/serializers.py:878 +#: InvenTree/serializers.py:859 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/status.py:66 part/serializers.py:1178 +#: InvenTree/status.py:66 part/serializers.py:1174 msgid "Background worker check failed" msgstr "" @@ -698,27 +606,27 @@ msgstr "" msgid "InvenTree system health checks failed" msgstr "" -#: InvenTree/templatetags/inventree_extras.py:183 +#: InvenTree/templatetags/inventree_extras.py:184 msgid "Unknown database" msgstr "" -#: InvenTree/validators.py:31 InvenTree/validators.py:33 +#: InvenTree/validators.py:32 InvenTree/validators.py:34 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:39 +#: InvenTree/validators.py:40 msgid "Not a valid currency code" msgstr "" -#: InvenTree/validators.py:121 InvenTree/validators.py:137 +#: InvenTree/validators.py:118 InvenTree/validators.py:134 msgid "Overage value must not be negative" msgstr "" -#: InvenTree/validators.py:139 +#: InvenTree/validators.py:136 msgid "Overage must not exceed 100%" msgstr "" -#: InvenTree/validators.py:145 +#: InvenTree/validators.py:142 msgid "Invalid value for overage" msgstr "" @@ -750,14 +658,14 @@ msgstr "" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: build/api.py:299 part/models.py:4070 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:300 part/models.py:4084 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4064 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2529 #: templates/js/translated/table_filters.js:186 @@ -778,30 +686,30 @@ msgstr "" msgid "Allocated" msgstr "" -#: build/api.py:311 company/models.py:904 company/serializers.py:383 +#: build/api.py:311 company/models.py:872 company/serializers.py:359 #: 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:2561 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:234 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 -#: templates/js/translated/part.js:699 +#: templates/js/translated/part.js:693 templates/js/translated/part.js:695 +#: templates/js/translated/part.js:700 #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:575 msgid "Available" msgstr "" -#: build/models.py:83 build/templates/build/build_base.html:9 +#: build/models.py:85 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_report.html:105 -#: stock/serializers.py:83 templates/email/build_order_completed.html:16 +#: stock/serializers.py:82 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:2892 msgid "Build Order" msgstr "" -#: build/models.py:84 build/templates/build/build_base.html:13 +#: build/models.py:86 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 @@ -812,25 +720,25 @@ msgstr "" msgid "Build Orders" msgstr "" -#: build/models.py:131 +#: build/models.py:133 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:142 order/models.py:240 +#: build/models.py:144 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "" -#: build/models.py:148 +#: build/models.py:150 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:209 +#: build/models.py:211 msgid "Build Order Reference" msgstr "" -#: build/models.py:210 order/models.py:463 order/models.py:928 -#: order/models.py:1325 order/models.py:2056 part/admin.py:419 -#: part/models.py:4105 part/templates/part/upload_bom.html:54 +#: build/models.py:212 order/models.py:463 order/models.py:926 +#: order/models.py:1289 order/models.py:2020 part/admin.py:411 +#: part/models.py:4085 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_purchase_order_report.html:28 #: report/templates/report/inventree_return_order_report.html:26 @@ -844,27 +752,27 @@ msgstr "" msgid "Reference" msgstr "" -#: build/models.py:221 +#: build/models.py:223 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:229 build/templates/build/build_base.html:183 +#: build/models.py:231 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:230 +#: build/models.py:232 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:235 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 -#: order/models.py:1450 order/models.py:1595 order/models.py:1596 -#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 -#: part/models.py:3191 part/models.py:3335 part/models.py:3358 -#: part/models.py:3379 part/models.py:3401 part/models.py:3511 -#: part/models.py:3807 part/models.py:3963 part/models.py:4056 -#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 +#: build/models.py:237 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1026 order/api.py:805 +#: order/models.py:1414 order/models.py:1559 order/models.py:1560 +#: part/api.py:1494 part/api.py:1788 part/models.py:395 part/models.py:3012 +#: part/models.py:3156 part/models.py:3303 part/models.py:3324 +#: part/models.py:3346 part/models.py:3477 part/models.py:3787 +#: part/models.py:3943 part/models.py:4036 part/models.py:4395 +#: part/serializers.py:1120 part/serializers.py:1726 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -875,8 +783,8 @@ msgstr "" #: report/templates/report/inventree_return_order_report.html:24 #: report/templates/report/inventree_sales_order_report.html:27 #: report/templates/report/inventree_stock_location_report.html:102 -#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 -#: stock/serializers.py:818 templates/InvenTree/search.html:82 +#: stock/serializers.py:109 stock/serializers.py:157 stock/serializers.py:423 +#: stock/serializers.py:820 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 @@ -889,8 +797,8 @@ msgstr "" #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 -#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2323 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:1944 templates/js/translated/part.js:2016 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 #: templates/js/translated/purchase_order.js:751 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1848 @@ -908,107 +816,107 @@ msgstr "" msgid "Part" msgstr "" -#: build/models.py:243 +#: build/models.py:245 msgid "Select part to build" msgstr "" -#: build/models.py:248 +#: build/models.py:250 msgid "Sales Order Reference" msgstr "" -#: build/models.py:252 +#: build/models.py:254 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:257 build/serializers.py:1000 +#: build/models.py:259 build/serializers.py:999 #: templates/js/translated/build.js:1731 #: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "" -#: build/models.py:261 +#: build/models.py:263 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:266 +#: build/models.py:268 msgid "Destination Location" msgstr "" -#: build/models.py:270 +#: build/models.py:272 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:274 +#: build/models.py:276 msgid "Build Quantity" msgstr "" -#: build/models.py:277 +#: build/models.py:279 msgid "Number of stock items to build" msgstr "" -#: build/models.py:281 +#: build/models.py:283 msgid "Completed items" msgstr "" -#: build/models.py:283 +#: build/models.py:285 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:287 +#: build/models.py:289 msgid "Build Status" msgstr "" -#: build/models.py:291 +#: build/models.py:293 msgid "Build status code" msgstr "" -#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 -#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 +#: build/models.py:302 build/serializers.py:286 order/serializers.py:580 +#: stock/models.py:838 stock/serializers.py:74 stock/serializers.py:1458 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "" -#: build/models.py:304 build/serializers.py:288 +#: build/models.py:306 build/serializers.py:287 msgid "Batch code for this build output" msgstr "" -#: build/models.py:307 order/models.py:316 order/serializers.py:120 -#: part/models.py:1122 part/templates/part/part_base.html:310 +#: build/models.py:309 order/models.py:316 order/serializers.py:119 +#: part/models.py:1115 part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:338 #: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "" -#: build/models.py:311 +#: build/models.py:313 msgid "Target completion date" msgstr "" -#: build/models.py:312 +#: build/models.py:314 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:315 order/models.py:521 order/models.py:2101 +#: build/models.py:317 order/models.py:521 order/models.py:2065 #: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "" -#: build/models.py:321 +#: build/models.py:323 msgid "completed by" msgstr "" -#: build/models.py:329 templates/js/translated/build.js:2207 +#: build/models.py:331 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "" -#: build/models.py:330 +#: build/models.py:332 msgid "User who issued this build order" msgstr "" -#: build/models.py:338 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:145 +#: build/models.py:340 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:147 #: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:232 part/models.py:1139 +#: order/templates/order/sales_order_base.html:232 part/models.py:1132 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_report.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 @@ -1019,31 +927,36 @@ msgstr "" msgid "Responsible" msgstr "" -#: build/models.py:339 +#: build/models.py:341 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:344 build/templates/build/detail.html:108 +#: build/models.py:346 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:184 -#: part/templates/part/part_base.html:383 stock/models.py:836 +#: part/templates/part/part_base.html:383 stock/models.py:834 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "" -#: build/models.py:349 +#: build/models.py:347 common/models.py:3178 part/models.py:956 +#: stock/models.py:834 +msgid "Link to external URL" +msgstr "" + +#: build/models.py:351 msgid "Build Priority" msgstr "" -#: build/models.py:352 +#: build/models.py:354 msgid "Priority of this build order" msgstr "" -#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: build/models.py:361 common/models.py:131 order/admin.py:18 #: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 #: templates/js/translated/build.js:2144 #: templates/js/translated/purchase_order.js:1710 @@ -1054,65 +967,65 @@ msgstr "" msgid "Project Code" msgstr "" -#: build/models.py:360 +#: build/models.py:362 msgid "Project code for this build order" msgstr "" -#: build/models.py:593 build/models.py:658 +#: build/models.py:595 build/models.py:660 msgid "Failed to offload task to complete build allocations" msgstr "" -#: build/models.py:615 +#: build/models.py:617 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:621 +#: build/models.py:623 msgid "A build order has been completed" msgstr "" -#: build/models.py:847 build/models.py:932 +#: build/models.py:849 build/models.py:934 msgid "No build output specified" msgstr "" -#: build/models.py:850 +#: build/models.py:852 msgid "Build output is already completed" msgstr "" -#: build/models.py:853 +#: build/models.py:855 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 -#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 -#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 -#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 +#: build/models.py:938 build/serializers.py:219 build/serializers.py:268 +#: build/serializers.py:866 order/models.py:559 order/serializers.py:432 +#: order/serializers.py:575 part/serializers.py:1484 part/serializers.py:1884 +#: stock/models.py:677 stock/models.py:1495 stock/serializers.py:603 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:941 build/serializers.py:225 +#: build/models.py:943 build/serializers.py:224 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1001 build/serializers.py:548 +#: build/models.py:1003 build/serializers.py:547 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1352 +#: build/models.py:1344 msgid "Build Order Line Item" msgstr "" -#: build/models.py:1377 +#: build/models.py:1369 msgid "Build object" msgstr "" -#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 -#: build/serializers.py:254 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2539 -#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 -#: part/forms.py:48 part/models.py:3205 part/models.py:4078 +#: build/models.py:1383 build/models.py:1639 build/serializers.py:206 +#: build/serializers.py:253 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2509 +#: order/models.py:1272 order/models.py:1931 order/serializers.py:1327 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3170 part/models.py:4058 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1121,8 +1034,8 @@ msgstr "" #: report/templates/report/inventree_sales_order_report.html:29 #: report/templates/report/inventree_stock_location_report.html:104 #: report/templates/report/inventree_test_report.html:90 -#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 -#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:125 stock/serializers.py:165 stock/serializers.py:594 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1133,8 +1046,8 @@ msgstr "" #: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 #: templates/js/translated/model_renderers.js:236 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:962 +#: templates/js/translated/part.js:1812 templates/js/translated/part.js:3342 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1154,38 +1067,38 @@ msgstr "" msgid "Quantity" msgstr "" -#: build/models.py:1392 +#: build/models.py:1384 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1472 +#: build/models.py:1464 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1481 +#: build/models.py:1473 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1491 order/models.py:1918 +#: build/models.py:1483 order/models.py:1882 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1497 order/models.py:1921 +#: build/models.py:1489 order/models.py:1885 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1503 +#: build/models.py:1495 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1562 +#: build/models.py:1554 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 -#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 -#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: build/models.py:1626 build/serializers.py:846 order/serializers.py:1171 +#: order/serializers.py:1192 stock/models.py:358 stock/serializers.py:91 +#: stock/serializers.py:697 stock/serializers.py:1177 stock/serializers.py:1289 #: stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 @@ -1201,70 +1114,70 @@ msgstr "" msgid "Stock Item" msgstr "" -#: build/models.py:1635 +#: build/models.py:1627 msgid "Source stock item" msgstr "" -#: build/models.py:1648 +#: build/models.py:1640 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1656 +#: build/models.py:1648 msgid "Install into" msgstr "" -#: build/models.py:1657 +#: build/models.py:1649 msgid "Destination stock item" msgstr "" -#: build/serializers.py:157 build/serializers.py:876 +#: build/serializers.py:156 build/serializers.py:875 #: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "" -#: build/serializers.py:169 +#: build/serializers.py:168 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:173 +#: build/serializers.py:172 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:177 +#: build/serializers.py:176 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:188 +#: build/serializers.py:187 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:208 build/serializers.py:255 +#: build/serializers.py:207 build/serializers.py:254 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:276 +#: build/serializers.py:275 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:279 +#: build/serializers.py:278 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:294 order/serializers.py:589 order/serializers.py:1343 -#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:293 order/serializers.py:588 order/serializers.py:1331 +#: stock/serializers.py:614 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:295 +#: build/serializers.py:294 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 -#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 -#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 -#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 -#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 +#: build/serializers.py:299 build/serializers.py:440 build/serializers.py:512 +#: order/serializers.py:564 order/serializers.py:672 order/serializers.py:1656 +#: part/serializers.py:1140 stock/serializers.py:100 stock/serializers.py:625 +#: stock/serializers.py:785 stock/serializers.py:881 stock/serializers.py:1321 +#: stock/serializers.py:1577 stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:1001 #: templates/js/translated/build.js:2372 @@ -1280,54 +1193,54 @@ msgstr "" msgid "Location" msgstr "" -#: build/serializers.py:301 +#: build/serializers.py:300 msgid "Stock location for build output" msgstr "" -#: build/serializers.py:315 +#: build/serializers.py:314 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:316 +#: build/serializers.py:315 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:331 +#: build/serializers.py:330 msgid "Serial numbers must be provided for trackable parts" msgstr "" -#: build/serializers.py:356 stock/api.py:1031 +#: build/serializers.py:355 stock/api.py:1041 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:403 build/serializers.py:465 build/serializers.py:554 +#: build/serializers.py:402 build/serializers.py:464 build/serializers.py:553 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:442 +#: build/serializers.py:441 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:448 +#: build/serializers.py:447 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:449 +#: build/serializers.py:448 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:454 +#: build/serializers.py:453 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:514 +#: build/serializers.py:513 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:520 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:952 -#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 -#: stock/serializers.py:930 stock/serializers.py:1469 +#: build/serializers.py:519 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2044 order/serializers.py:596 stock/admin.py:164 +#: stock/serializers.py:932 stock/serializers.py:1465 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 @@ -1339,188 +1252,188 @@ msgstr "" msgid "Status" msgstr "" -#: build/serializers.py:526 +#: build/serializers.py:525 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:527 +#: build/serializers.py:526 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:611 msgid "Consume Allocated Stock" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:612 msgid "Consume any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:619 +#: build/serializers.py:618 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:620 +#: build/serializers.py:619 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:646 msgid "Not permitted" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:647 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:648 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:679 +#: build/serializers.py:678 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:681 +#: build/serializers.py:680 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:691 +#: build/serializers.py:690 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:696 +#: build/serializers.py:695 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:697 +#: build/serializers.py:696 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:707 templates/js/translated/build.js:315 +#: build/serializers.py:706 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:712 order/serializers.py:301 order/serializers.py:1246 +#: build/serializers.py:711 order/serializers.py:300 order/serializers.py:1234 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:713 +#: build/serializers.py:712 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:723 templates/js/translated/build.js:319 +#: build/serializers.py:722 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:732 templates/js/translated/build.js:303 +#: build/serializers.py:731 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:770 +#: build/serializers.py:769 msgid "Build Line" msgstr "" -#: build/serializers.py:780 +#: build/serializers.py:779 msgid "Build output" msgstr "" -#: build/serializers.py:788 +#: build/serializers.py:787 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:824 +#: build/serializers.py:823 msgid "Build Line Item" msgstr "" -#: build/serializers.py:838 +#: build/serializers.py:837 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:853 stock/serializers.py:1194 +#: build/serializers.py:852 stock/serializers.py:1190 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:901 order/serializers.py:1237 +#: build/serializers.py:900 order/serializers.py:1225 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:907 +#: build/serializers.py:906 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:914 +#: build/serializers.py:913 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:938 order/serializers.py:1489 +#: build/serializers.py:937 order/serializers.py:1477 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:1001 +#: build/serializers.py:1000 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:1009 +#: build/serializers.py:1008 msgid "Exclude Location" msgstr "" -#: build/serializers.py:1010 +#: build/serializers.py:1009 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:1015 +#: build/serializers.py:1014 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:1016 +#: build/serializers.py:1015 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:1021 +#: build/serializers.py:1020 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:1022 +#: build/serializers.py:1021 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:1027 +#: build/serializers.py:1026 msgid "Optional Items" msgstr "" -#: build/serializers.py:1028 +#: build/serializers.py:1027 msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1050 +#: build/serializers.py:1049 msgid "Failed to start auto-allocation task" msgstr "" -#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 -#: stock/api.py:794 +#: build/serializers.py:1139 part/models.py:3953 part/models.py:4387 +#: stock/api.py:804 msgid "BOM Item" msgstr "" -#: build/serializers.py:1149 templates/js/translated/index.js:130 +#: build/serializers.py:1148 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:832 part/serializers.py:1506 +#: build/serializers.py:1153 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:828 part/serializers.py:1502 #: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 -#: templates/js/translated/build.js:2613 templates/js/translated/part.js:709 -#: templates/js/translated/part.js:2148 +#: templates/js/translated/build.js:2613 templates/js/translated/part.js:710 +#: templates/js/translated/part.js:2149 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1159 part/serializers.py:1508 +#: build/serializers.py:1158 part/serializers.py:1504 #: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 +#: build/serializers.py:1163 part/bom.py:172 part/serializers.py:1527 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1929 msgid "Available Stock" @@ -1544,7 +1457,7 @@ msgstr "" #: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 #: order/status_codes.py:44 order/status_codes.py:69 #: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:165 report/models.py:443 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 msgid "Complete" msgstr "" @@ -1674,11 +1587,11 @@ msgstr "" #: build/templates/build/build_base.html:160 #: build/templates/build/detail.html:138 order/models.py:309 -#: order/models.py:1343 order/templates/order/order_base.html:186 +#: order/models.py:1307 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:196 #: report/templates/report/inventree_build_order_report.html:125 -#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1831 #: templates/js/translated/purchase_order.js:1739 #: templates/js/translated/purchase_order.js:2147 #: templates/js/translated/return_order.js:346 @@ -1711,8 +1624,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 -#: order/models.py:1587 order/models.py:1701 order/models.py:1855 +#: build/templates/build/detail.html:101 order/api.py:1463 order/models.py:845 +#: order/models.py:1551 order/models.py:1665 order/models.py:1819 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_report.html:135 @@ -1762,7 +1675,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1479 +#: build/templates/build/detail.html:49 order/models.py:1443 #: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "" @@ -1775,7 +1688,7 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:163 +#: build/templates/build/detail.html:80 stock/admin.py:162 #: stock/templates/stock/item_base.html:162 #: templates/js/translated/build.js:1380 #: templates/js/translated/model_renderers.js:241 @@ -1894,11 +1807,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:436 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -1914,6 +1827,34 @@ msgstr "" msgid "Incomplete Outputs" msgstr "" +#: common/api.py:689 +msgid "Is Link" +msgstr "" + +#: common/api.py:697 +msgid "Is File" +msgstr "" + +#: common/api.py:739 +msgid "User does not have permission to delete this attachment" +msgstr "" + +#: common/currency.py:130 +msgid "Invalid currency code" +msgstr "" + +#: common/currency.py:132 +msgid "Duplicate currency code" +msgstr "" + +#: common/currency.py:137 +msgid "No valid currency codes provided" +msgstr "" + +#: common/currency.py:154 +msgid "No plugin" +msgstr "" + #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1952,1507 +1893,1512 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:71 +#: common/models.py:73 msgid "Updated" msgstr "" -#: common/models.py:72 +#: common/models.py:74 msgid "Timestamp of last update" msgstr "" -#: common/models.py:105 +#: common/models.py:107 msgid "Site URL is locked by configuration" msgstr "" -#: common/models.py:130 +#: common/models.py:132 msgid "Unique project code" msgstr "" -#: common/models.py:137 +#: common/models.py:139 msgid "Project description" msgstr "" -#: common/models.py:146 +#: common/models.py:148 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:766 +#: common/models.py:765 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:770 +#: common/models.py:769 msgid "Settings value" msgstr "" -#: common/models.py:822 +#: common/models.py:821 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:838 +#: common/models.py:837 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:846 +#: common/models.py:845 msgid "Value must be an integer value" msgstr "" -#: common/models.py:883 +#: common/models.py:882 msgid "Key string must be unique" msgstr "" -#: common/models.py:1115 +#: common/models.py:1114 msgid "No group" msgstr "" -#: common/models.py:1158 -msgid "An empty domain is not allowed." -msgstr "" - -#: common/models.py:1160 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "" - -#: common/models.py:1172 -msgid "No plugin" -msgstr "" - -#: common/models.py:1260 +#: common/models.py:1213 msgid "Restart required" msgstr "" -#: common/models.py:1262 +#: common/models.py:1215 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1269 +#: common/models.py:1222 msgid "Pending migrations" msgstr "" -#: common/models.py:1270 +#: common/models.py:1223 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1275 +#: common/models.py:1228 msgid "Server Instance Name" msgstr "" -#: common/models.py:1277 +#: common/models.py:1230 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1281 +#: common/models.py:1234 msgid "Use instance name" msgstr "" -#: common/models.py:1282 +#: common/models.py:1235 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1287 +#: common/models.py:1240 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1288 +#: common/models.py:1241 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1293 company/models.py:108 company/models.py:109 +#: common/models.py:1246 company/models.py:111 company/models.py:112 msgid "Company name" msgstr "" -#: common/models.py:1294 +#: common/models.py:1247 msgid "Internal company name" msgstr "" -#: common/models.py:1298 +#: common/models.py:1251 msgid "Base URL" msgstr "" -#: common/models.py:1299 +#: common/models.py:1252 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1305 +#: common/models.py:1258 msgid "Default Currency" msgstr "" -#: common/models.py:1306 +#: common/models.py:1259 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1312 +#: common/models.py:1265 +msgid "Supported Currencies" +msgstr "" + +#: common/models.py:1266 +msgid "List of supported currency codes" +msgstr "" + +#: common/models.py:1272 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1314 +#: common/models.py:1274 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1317 common/models.py:1373 common/models.py:1386 -#: common/models.py:1394 common/models.py:1403 common/models.py:1412 -#: common/models.py:1620 common/models.py:1642 common/models.py:1757 -#: common/models.py:2076 +#: common/models.py:1277 common/models.py:1333 common/models.py:1346 +#: common/models.py:1354 common/models.py:1363 common/models.py:1372 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:2046 msgid "days" msgstr "" -#: common/models.py:1321 +#: common/models.py:1281 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1322 +#: common/models.py:1282 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1327 +#: common/models.py:1287 msgid "Download from URL" msgstr "" -#: common/models.py:1329 +#: common/models.py:1289 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1335 +#: common/models.py:1295 msgid "Download Size Limit" msgstr "" -#: common/models.py:1336 +#: common/models.py:1296 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1342 +#: common/models.py:1302 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1344 +#: common/models.py:1304 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:1349 +#: common/models.py:1309 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1350 +#: common/models.py:1310 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1355 +#: common/models.py:1315 msgid "Require confirm" msgstr "" -#: common/models.py:1356 +#: common/models.py:1316 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1361 +#: common/models.py:1321 msgid "Tree Depth" msgstr "" -#: common/models.py:1363 +#: common/models.py:1323 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1369 +#: common/models.py:1329 msgid "Update Check Interval" msgstr "" -#: common/models.py:1370 +#: common/models.py:1330 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1376 +#: common/models.py:1336 msgid "Automatic Backup" msgstr "" -#: common/models.py:1377 +#: common/models.py:1337 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1382 +#: common/models.py:1342 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1383 +#: common/models.py:1343 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1389 +#: common/models.py:1349 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1391 +#: common/models.py:1351 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1398 +#: common/models.py:1358 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1400 +#: common/models.py:1360 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1407 +#: common/models.py:1367 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1409 +#: common/models.py:1369 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1416 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1376 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1417 +#: common/models.py:1377 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1422 +#: common/models.py:1382 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1423 +#: common/models.py:1383 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1429 +#: common/models.py:1389 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1430 +#: common/models.py:1390 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1435 +#: common/models.py:1395 msgid "Part Revisions" msgstr "" -#: common/models.py:1436 +#: common/models.py:1396 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1441 +#: common/models.py:1401 msgid "Allow Deletion from Assembly" msgstr "" -#: common/models.py:1442 +#: common/models.py:1402 msgid "Allow deletion of parts which are used in an assembly" msgstr "" -#: common/models.py:1447 +#: common/models.py:1407 msgid "IPN Regex" msgstr "" -#: common/models.py:1448 +#: common/models.py:1408 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1451 +#: common/models.py:1411 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1452 +#: common/models.py:1412 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1457 +#: common/models.py:1417 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1458 +#: common/models.py:1418 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1463 +#: common/models.py:1423 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1464 +#: common/models.py:1424 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1469 +#: common/models.py:1429 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1470 +#: common/models.py:1430 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1475 +#: common/models.py:1435 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1476 +#: common/models.py:1436 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1481 +#: common/models.py:1441 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1482 +#: common/models.py:1442 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1487 part/admin.py:108 part/models.py:3815 -#: report/models.py:293 report/models.py:360 report/serializers.py:90 -#: report/serializers.py:131 stock/serializers.py:228 +#: common/models.py:1447 part/admin.py:108 part/models.py:3795 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:227 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1488 +#: common/models.py:1448 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 +#: common/models.py:1453 part/admin.py:91 part/admin.py:425 part/models.py:1052 #: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" msgstr "" -#: common/models.py:1494 +#: common/models.py:1454 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1499 part/admin.py:95 part/models.py:1065 +#: common/models.py:1459 part/admin.py:95 part/models.py:1058 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1500 +#: common/models.py:1460 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1505 part/admin.py:100 part/models.py:1077 +#: common/models.py:1465 part/admin.py:100 part/models.py:1070 msgid "Purchaseable" msgstr "" -#: common/models.py:1506 +#: common/models.py:1466 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1511 part/admin.py:104 part/models.py:1083 +#: common/models.py:1471 part/admin.py:104 part/models.py:1076 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1512 +#: common/models.py:1472 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1517 part/admin.py:113 part/models.py:1071 +#: common/models.py:1477 part/admin.py:113 part/models.py:1064 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" msgstr "" -#: common/models.py:1518 +#: common/models.py:1478 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1523 part/admin.py:117 part/models.py:1093 +#: common/models.py:1483 part/admin.py:117 part/models.py:1086 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" msgstr "" -#: common/models.py:1524 +#: common/models.py:1484 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1529 +#: common/models.py:1489 msgid "Show Import in Views" msgstr "" -#: common/models.py:1530 +#: common/models.py:1490 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1535 +#: common/models.py:1495 msgid "Show related parts" msgstr "" -#: common/models.py:1536 +#: common/models.py:1496 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1541 +#: common/models.py:1501 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1542 +#: common/models.py:1502 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1547 templates/js/translated/part.js:107 +#: common/models.py:1507 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1549 +#: common/models.py:1509 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1555 +#: common/models.py:1515 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1556 +#: common/models.py:1516 msgid "Format to display the part name" msgstr "" -#: common/models.py:1562 +#: common/models.py:1522 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1563 +#: common/models.py:1523 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1567 +#: common/models.py:1527 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1569 +#: common/models.py:1529 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1575 +#: common/models.py:1535 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1577 +#: common/models.py:1537 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1583 +#: common/models.py:1548 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1585 +#: common/models.py:1550 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1591 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1593 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1599 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1601 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1607 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1609 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1615 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1617 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1630 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1632 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1638 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1640 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1647 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1648 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1653 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1655 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1661 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1662 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1667 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1669 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1675 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1676 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1681 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1682 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1687 +#: common/models.py:1657 msgid "Log Report Errors" msgstr "" -#: common/models.py:1688 +#: common/models.py:1658 msgid "Log errors which occur when generating reports" msgstr "" -#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:301 +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:302 msgid "Page Size" msgstr "" -#: common/models.py:1694 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1699 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1700 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1705 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1707 +#: common/models.py:1677 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1713 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1714 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1719 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1720 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1725 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1727 +#: common/models.py:1697 msgid "Determines default behavior when a stock item is depleted" msgstr "" -#: common/models.py:1733 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1735 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1740 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1741 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1746 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1747 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1752 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1754 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1761 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1762 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1767 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1768 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1773 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1774 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1778 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1779 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1784 +#: common/models.py:1754 msgid "Check BOM when installing items" msgstr "" -#: common/models.py:1786 +#: common/models.py:1756 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "" -#: common/models.py:1792 +#: common/models.py:1762 msgid "Allow Out of Stock Transfer" msgstr "" -#: common/models.py:1794 +#: common/models.py:1764 msgid "Allow stock items which are not in stock to be transferred between stock locations" msgstr "" -#: common/models.py:1800 +#: common/models.py:1770 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1802 +#: common/models.py:1772 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1808 common/models.py:1836 common/models.py:1858 -#: common/models.py:1894 +#: common/models.py:1778 common/models.py:1806 common/models.py:1828 +#: common/models.py:1864 msgid "Require Responsible Owner" msgstr "" -#: common/models.py:1809 common/models.py:1837 common/models.py:1859 -#: common/models.py:1895 +#: common/models.py:1779 common/models.py:1807 common/models.py:1829 +#: common/models.py:1865 msgid "A responsible owner must be assigned to each order" msgstr "" -#: common/models.py:1814 +#: common/models.py:1784 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1816 +#: common/models.py:1786 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:1822 +#: common/models.py:1792 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1823 +#: common/models.py:1793 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1828 +#: common/models.py:1798 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1830 +#: common/models.py:1800 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1842 +#: common/models.py:1812 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1844 +#: common/models.py:1814 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1850 +#: common/models.py:1820 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1852 +#: common/models.py:1822 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1864 +#: common/models.py:1834 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1865 +#: common/models.py:1835 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1870 +#: common/models.py:1840 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1872 +#: common/models.py:1842 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1878 +#: common/models.py:1848 msgid "Mark Shipped Orders as Complete" msgstr "" -#: common/models.py:1880 +#: common/models.py:1850 msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" msgstr "" -#: common/models.py:1886 +#: common/models.py:1856 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1888 +#: common/models.py:1858 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1900 +#: common/models.py:1870 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1902 +#: common/models.py:1872 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1908 +#: common/models.py:1878 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1910 +#: common/models.py:1880 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1917 +#: common/models.py:1887 msgid "Enable password forgot" msgstr "" -#: common/models.py:1918 +#: common/models.py:1888 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1923 +#: common/models.py:1893 msgid "Enable registration" msgstr "" -#: common/models.py:1924 +#: common/models.py:1894 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1929 +#: common/models.py:1899 msgid "Enable SSO" msgstr "" -#: common/models.py:1930 +#: common/models.py:1900 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1935 +#: common/models.py:1905 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1937 +#: common/models.py:1907 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1943 +#: common/models.py:1913 msgid "Email required" msgstr "" -#: common/models.py:1944 +#: common/models.py:1914 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1949 +#: common/models.py:1919 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1951 +#: common/models.py:1921 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1957 +#: common/models.py:1927 msgid "Mail twice" msgstr "" -#: common/models.py:1958 +#: common/models.py:1928 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1963 +#: common/models.py:1933 msgid "Password twice" msgstr "" -#: common/models.py:1964 +#: common/models.py:1934 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1969 +#: common/models.py:1939 msgid "Allowed domains" msgstr "" -#: common/models.py:1971 +#: common/models.py:1941 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1977 +#: common/models.py:1947 msgid "Group on signup" msgstr "" -#: common/models.py:1978 +#: common/models.py:1948 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1983 +#: common/models.py:1953 msgid "Enforce MFA" msgstr "" -#: common/models.py:1984 +#: common/models.py:1954 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1989 +#: common/models.py:1959 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1991 +#: common/models.py:1961 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1999 +#: common/models.py:1969 msgid "Check for plugin updates" msgstr "" -#: common/models.py:2000 +#: common/models.py:1970 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:2006 +#: common/models.py:1976 msgid "Enable URL integration" msgstr "" -#: common/models.py:2007 +#: common/models.py:1977 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:2013 +#: common/models.py:1983 msgid "Enable navigation integration" msgstr "" -#: common/models.py:2014 +#: common/models.py:1984 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:2020 +#: common/models.py:1990 msgid "Enable app integration" msgstr "" -#: common/models.py:2021 +#: common/models.py:1991 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:2027 +#: common/models.py:1997 msgid "Enable schedule integration" msgstr "" -#: common/models.py:2028 +#: common/models.py:1998 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:2034 +#: common/models.py:2004 msgid "Enable event integration" msgstr "" -#: common/models.py:2035 +#: common/models.py:2005 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:2041 +#: common/models.py:2011 msgid "Enable project codes" msgstr "" -#: common/models.py:2042 +#: common/models.py:2012 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:2047 +#: common/models.py:2017 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:2049 +#: common/models.py:2019 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:2055 +#: common/models.py:2025 msgid "Exclude External Locations" msgstr "" -#: common/models.py:2057 +#: common/models.py:2027 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:2063 +#: common/models.py:2033 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:2065 +#: common/models.py:2035 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:2071 +#: common/models.py:2041 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:2073 +#: common/models.py:2043 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:2080 +#: common/models.py:2050 msgid "Display Users full names" msgstr "" -#: common/models.py:2081 +#: common/models.py:2051 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:2086 +#: common/models.py:2056 msgid "Enable Test Station Data" msgstr "" -#: common/models.py:2087 +#: common/models.py:2057 msgid "Enable test station data collection for test results" msgstr "" -#: common/models.py:2099 common/models.py:2509 +#: common/models.py:2069 common/models.py:2479 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2142 +#: common/models.py:2112 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2144 +#: common/models.py:2114 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2150 +#: common/models.py:2120 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2151 +#: common/models.py:2121 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2156 +#: common/models.py:2126 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2157 +#: common/models.py:2127 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2162 +#: common/models.py:2132 msgid "Show latest parts" msgstr "" -#: common/models.py:2163 +#: common/models.py:2133 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2168 +#: common/models.py:2138 msgid "Show invalid BOMs" msgstr "" -#: common/models.py:2169 +#: common/models.py:2139 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2174 +#: common/models.py:2144 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2175 +#: common/models.py:2145 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2180 +#: common/models.py:2150 msgid "Show low stock" msgstr "" -#: common/models.py:2181 +#: common/models.py:2151 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2186 +#: common/models.py:2156 msgid "Show depleted stock" msgstr "" -#: common/models.py:2187 +#: common/models.py:2157 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2192 +#: common/models.py:2162 msgid "Show needed stock" msgstr "" -#: common/models.py:2193 +#: common/models.py:2163 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2198 +#: common/models.py:2168 msgid "Show expired stock" msgstr "" -#: common/models.py:2199 +#: common/models.py:2169 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2204 +#: common/models.py:2174 msgid "Show stale stock" msgstr "" -#: common/models.py:2205 +#: common/models.py:2175 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2210 +#: common/models.py:2180 msgid "Show pending builds" msgstr "" -#: common/models.py:2211 +#: common/models.py:2181 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2216 +#: common/models.py:2186 msgid "Show overdue builds" msgstr "" -#: common/models.py:2217 +#: common/models.py:2187 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2222 +#: common/models.py:2192 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2223 +#: common/models.py:2193 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2228 +#: common/models.py:2198 msgid "Show overdue POs" msgstr "" -#: common/models.py:2229 +#: common/models.py:2199 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2234 +#: common/models.py:2204 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2235 +#: common/models.py:2205 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2240 +#: common/models.py:2210 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2241 +#: common/models.py:2211 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2246 +#: common/models.py:2216 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2247 +#: common/models.py:2217 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2252 +#: common/models.py:2222 msgid "Show News" msgstr "" -#: common/models.py:2253 +#: common/models.py:2223 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2258 +#: common/models.py:2228 msgid "Inline label display" msgstr "" -#: common/models.py:2260 +#: common/models.py:2230 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2266 +#: common/models.py:2236 msgid "Default label printer" msgstr "" -#: common/models.py:2268 +#: common/models.py:2238 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2274 +#: common/models.py:2244 msgid "Inline report display" msgstr "" -#: common/models.py:2276 +#: common/models.py:2246 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2282 +#: common/models.py:2252 msgid "Search Parts" msgstr "" -#: common/models.py:2283 +#: common/models.py:2253 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2288 +#: common/models.py:2258 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2289 +#: common/models.py:2259 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2294 +#: common/models.py:2264 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2295 +#: common/models.py:2265 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2300 +#: common/models.py:2270 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2301 +#: common/models.py:2271 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2306 +#: common/models.py:2276 msgid "Search Categories" msgstr "" -#: common/models.py:2307 +#: common/models.py:2277 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2312 +#: common/models.py:2282 msgid "Search Stock" msgstr "" -#: common/models.py:2313 +#: common/models.py:2283 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2318 +#: common/models.py:2288 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2320 +#: common/models.py:2290 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2326 +#: common/models.py:2296 msgid "Search Locations" msgstr "" -#: common/models.py:2327 +#: common/models.py:2297 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2332 +#: common/models.py:2302 msgid "Search Companies" msgstr "" -#: common/models.py:2333 +#: common/models.py:2303 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2338 +#: common/models.py:2308 msgid "Search Build Orders" msgstr "" -#: common/models.py:2339 +#: common/models.py:2309 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2344 +#: common/models.py:2314 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2345 +#: common/models.py:2315 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2350 +#: common/models.py:2320 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2352 +#: common/models.py:2322 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2358 +#: common/models.py:2328 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2359 +#: common/models.py:2329 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2364 +#: common/models.py:2334 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2366 +#: common/models.py:2336 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2372 +#: common/models.py:2342 msgid "Search Return Orders" msgstr "" -#: common/models.py:2373 +#: common/models.py:2343 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2378 +#: common/models.py:2348 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2380 +#: common/models.py:2350 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2386 +#: common/models.py:2356 msgid "Search Preview Results" msgstr "" -#: common/models.py:2388 +#: common/models.py:2358 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2394 +#: common/models.py:2364 msgid "Regex Search" msgstr "" -#: common/models.py:2395 +#: common/models.py:2365 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2400 +#: common/models.py:2370 msgid "Whole Word Search" msgstr "" -#: common/models.py:2401 +#: common/models.py:2371 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2406 +#: common/models.py:2376 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2407 +#: common/models.py:2377 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2412 +#: common/models.py:2382 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2413 +#: common/models.py:2383 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2418 +#: common/models.py:2388 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2419 +#: common/models.py:2389 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2424 +#: common/models.py:2394 msgid "Date Format" msgstr "" -#: common/models.py:2425 +#: common/models.py:2395 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2438 part/templates/part/detail.html:41 +#: common/models.py:2408 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2439 +#: common/models.py:2409 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2444 part/templates/part/detail.html:62 +#: common/models.py:2414 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2446 +#: common/models.py:2416 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2452 +#: common/models.py:2422 msgid "Table String Length" msgstr "" -#: common/models.py:2454 +#: common/models.py:2424 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2460 +#: common/models.py:2430 msgid "Default part label template" msgstr "" -#: common/models.py:2461 +#: common/models.py:2431 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2466 +#: common/models.py:2436 msgid "Default stock item template" msgstr "" -#: common/models.py:2468 +#: common/models.py:2438 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2474 +#: common/models.py:2444 msgid "Default stock location label template" msgstr "" -#: common/models.py:2476 +#: common/models.py:2446 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2482 +#: common/models.py:2452 msgid "Default build line label template" msgstr "" -#: common/models.py:2484 +#: common/models.py:2454 msgid "The build line label template to be automatically selected" msgstr "" -#: common/models.py:2490 +#: common/models.py:2460 msgid "Receive error reports" msgstr "" -#: common/models.py:2491 +#: common/models.py:2461 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2496 +#: common/models.py:2466 msgid "Last used printing machines" msgstr "" -#: common/models.py:2497 +#: common/models.py:2467 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2540 +#: common/models.py:2487 common/models.py:2488 common/models.py:2636 +#: common/models.py:2637 common/models.py:2882 common/models.py:2883 +#: common/models.py:3193 common/models.py:3194 part/models.py:3193 +#: part/models.py:3280 part/models.py:3353 part/models.py:3381 +#: plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "" + +#: common/models.py:2510 msgid "Price break quantity" msgstr "" -#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1382 order/models.py:2301 -#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 +#: common/models.py:2517 company/serializers.py:472 order/admin.py:42 +#: order/models.py:1346 order/models.py:2265 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1886 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:740 msgid "Price" msgstr "" -#: common/models.py:2548 +#: common/models.py:2518 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2719 common/models.py:2904 +#: common/models.py:2613 common/models.py:2798 msgid "Endpoint" msgstr "" -#: common/models.py:2720 +#: common/models.py:2614 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2730 +#: common/models.py:2624 msgid "Name for this webhook" msgstr "" -#: common/models.py:2734 company/models.py:160 company/models.py:814 -#: machine/models.py:39 part/admin.py:88 part/models.py:1088 -#: plugin/models.py:65 templates/js/translated/company.js:523 +#: common/models.py:2628 company/models.py:163 company/models.py:782 +#: machine/models.py:39 part/admin.py:88 part/models.py:1081 +#: plugin/models.py:66 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3462,101 +3408,118 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2734 +#: common/models.py:2628 msgid "Is this webhook active" msgstr "" -#: common/models.py:2750 users/models.py:159 +#: common/models.py:2644 users/models.py:159 msgid "Token" msgstr "" -#: common/models.py:2751 +#: common/models.py:2645 msgid "Token for access" msgstr "" -#: common/models.py:2759 +#: common/models.py:2653 msgid "Secret" msgstr "" -#: common/models.py:2760 +#: common/models.py:2654 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2868 +#: common/models.py:2762 msgid "Message ID" msgstr "" -#: common/models.py:2869 +#: common/models.py:2763 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2877 +#: common/models.py:2771 msgid "Host" msgstr "" -#: common/models.py:2878 +#: common/models.py:2772 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2886 +#: common/models.py:2780 msgid "Header" msgstr "" -#: common/models.py:2887 +#: common/models.py:2781 msgid "Header of this message" msgstr "" -#: common/models.py:2894 +#: common/models.py:2788 msgid "Body" msgstr "" -#: common/models.py:2895 +#: common/models.py:2789 msgid "Body of this message" msgstr "" -#: common/models.py:2905 +#: common/models.py:2799 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2910 +#: common/models.py:2804 msgid "Worked on" msgstr "" -#: common/models.py:2911 +#: common/models.py:2805 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:3037 +#: common/models.py:2931 msgid "Id" msgstr "" -#: common/models.py:3039 templates/js/translated/company.js:965 +#: common/models.py:2933 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:3043 templates/js/translated/news.js:60 +#: common/models.py:2935 common/models.py:3177 company/models.py:149 +#: company/models.py:440 company/models.py:500 company/models.py:799 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +#: part/admin.py:55 part/models.py:955 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "" + +#: common/models.py:2937 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:3045 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2939 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:3047 templates/js/translated/news.js:52 +#: common/models.py:2941 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Read" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Was this news item read?" msgstr "" -#: common/models.py:3067 company/models.py:156 part/models.py:972 +#: common/models.py:2961 company/models.py:159 part/models.py:965 #: 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.html:35 @@ -3566,34 +3529,89 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:3067 +#: common/models.py:2961 msgid "Image file" msgstr "" -#: common/models.py:3109 +#: common/models.py:2973 common/models.py:3161 +msgid "Target model type for this image" +msgstr "" + +#: common/models.py:2977 +msgid "Target model ID for this image" +msgstr "" + +#: common/models.py:3018 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3128 +#: common/models.py:3037 msgid "Unit name" msgstr "" -#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3044 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3136 +#: common/models.py:3045 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3052 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3144 +#: common/models.py:3053 msgid "Unit definition" msgstr "" +#: common/models.py:3111 common/models.py:3168 stock/models.py:2426 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "" + +#: common/models.py:3123 +msgid "Missing file" +msgstr "" + +#: common/models.py:3124 +msgid "Missing external link" +msgstr "" + +#: common/models.py:3169 +msgid "Select file to attach" +msgstr "" + +#: common/models.py:3184 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "" + +#: common/models.py:3185 +msgid "Attachment comment" +msgstr "" + +#: common/models.py:3201 +msgid "Upload date" +msgstr "" + +#: common/models.py:3202 +msgid "Date the file was uploaded" +msgstr "" + +#: common/models.py:3206 +msgid "File size" +msgstr "" + +#: common/models.py:3206 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3244 common/serializers.py:553 +msgid "Invalid model type specified for attachment" +msgstr "" + #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" @@ -3628,66 +3646,103 @@ msgstr "" msgid "Error raised by plugin" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:371 msgid "Is Running" msgstr "" -#: common/serializers.py:372 +#: common/serializers.py:377 msgid "Pending Tasks" msgstr "" -#: common/serializers.py:378 +#: common/serializers.py:383 msgid "Scheduled Tasks" msgstr "" -#: common/serializers.py:384 +#: common/serializers.py:389 msgid "Failed Tasks" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Task ID" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Unique task ID" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock time" msgstr "" -#: common/serializers.py:403 +#: common/serializers.py:408 msgid "Task name" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function name" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Arguments" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Task arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Keyword Arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Task keyword arguments" msgstr "" +#: common/serializers.py:525 +msgid "Filename" +msgstr "" + +#: common/serializers.py:532 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: common/serializers.py:559 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "" + +#: common/validators.py:33 +msgid "No attachment model type provided" +msgstr "" + +#: common/validators.py:39 +msgid "Invalid attachment model type" +msgstr "" + +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "" + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +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 @@ -3726,210 +3781,222 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/api.py:164 +#: company/api.py:144 msgid "Part is Active" msgstr "" -#: company/api.py:168 +#: company/api.py:148 msgid "Manufacturer is Active" msgstr "" -#: company/api.py:317 +#: company/api.py:281 msgid "Supplier Part is Active" msgstr "" -#: company/api.py:321 +#: company/api.py:285 msgid "Internal Part is Active" msgstr "" -#: company/api.py:325 +#: company/api.py:289 msgid "Supplier is Active" msgstr "" -#: company/models.py:114 +#: company/models.py:100 company/models.py:365 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:822 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "" + +#: company/models.py:117 msgid "Company description" msgstr "" -#: company/models.py:115 +#: company/models.py:118 msgid "Description of the company" msgstr "" -#: company/models.py:120 company/templates/company/company_base.html:106 +#: company/models.py:123 company/templates/company/company_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:532 msgid "Website" msgstr "" -#: company/models.py:120 +#: company/models.py:123 msgid "Company website URL" msgstr "" -#: company/models.py:125 +#: company/models.py:128 msgid "Phone number" msgstr "" -#: company/models.py:127 +#: company/models.py:130 msgid "Contact phone number" msgstr "" -#: company/models.py:134 +#: company/models.py:137 msgid "Contact email address" msgstr "" -#: company/models.py:139 company/templates/company/company_base.html:145 +#: company/models.py:142 company/templates/company/company_base.html:145 #: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "" -#: company/models.py:141 +#: company/models.py:144 msgid "Point of contact" msgstr "" -#: company/models.py:147 +#: company/models.py:150 msgid "Link to external company information" msgstr "" -#: company/models.py:160 +#: company/models.py:163 msgid "Is this company active?" msgstr "" -#: company/models.py:165 +#: company/models.py:168 msgid "is customer" msgstr "" -#: company/models.py:166 +#: company/models.py:169 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:171 +#: company/models.py:174 msgid "is supplier" msgstr "" -#: company/models.py:172 +#: company/models.py:175 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:177 +#: company/models.py:180 msgid "is manufacturer" msgstr "" -#: company/models.py:178 +#: company/models.py:181 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:186 +#: company/models.py:189 msgid "Default currency used for this company" msgstr "" -#: company/models.py:273 company/models.py:382 -#: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:812 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 -msgid "Company" -msgstr "" - -#: company/models.py:383 +#: company/models.py:366 msgid "Select company" msgstr "" -#: company/models.py:388 +#: company/models.py:371 msgid "Address title" msgstr "" -#: company/models.py:389 +#: company/models.py:372 msgid "Title describing the address entry" msgstr "" -#: company/models.py:395 +#: company/models.py:378 msgid "Primary address" msgstr "" -#: company/models.py:396 +#: company/models.py:379 msgid "Set as primary address" msgstr "" -#: company/models.py:401 templates/js/translated/company.js:914 +#: company/models.py:384 templates/js/translated/company.js:914 #: templates/js/translated/company.js:971 msgid "Line 1" msgstr "" -#: company/models.py:402 +#: company/models.py:385 msgid "Address line 1" msgstr "" -#: company/models.py:408 templates/js/translated/company.js:915 +#: company/models.py:391 templates/js/translated/company.js:915 #: templates/js/translated/company.js:977 msgid "Line 2" msgstr "" -#: company/models.py:409 +#: company/models.py:392 msgid "Address line 2" msgstr "" -#: company/models.py:415 company/models.py:416 +#: company/models.py:398 company/models.py:399 #: templates/js/translated/company.js:983 msgid "Postal code" msgstr "" -#: company/models.py:422 +#: company/models.py:405 msgid "City/Region" msgstr "" -#: company/models.py:423 +#: company/models.py:406 msgid "Postal code city/region" msgstr "" -#: company/models.py:429 +#: company/models.py:412 msgid "State/Province" msgstr "" -#: company/models.py:430 +#: company/models.py:413 msgid "State or province" msgstr "" -#: company/models.py:436 templates/js/translated/company.js:1001 +#: company/models.py:419 templates/js/translated/company.js:1001 msgid "Country" msgstr "" -#: company/models.py:437 +#: company/models.py:420 msgid "Address country" msgstr "" -#: company/models.py:443 +#: company/models.py:426 msgid "Courier shipping notes" msgstr "" -#: company/models.py:444 +#: company/models.py:427 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:450 +#: company/models.py:433 msgid "Internal shipping notes" msgstr "" -#: company/models.py:451 +#: company/models.py:434 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:458 +#: company/models.py:441 msgid "Link to address information (external)" msgstr "" -#: company/models.py:489 company/models.py:792 stock/models.py:768 -#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 +#: company/models.py:463 company/models.py:574 company/models.py:792 +#: 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:475 company/models.py:760 stock/models.py:766 +#: stock/serializers.py:422 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:491 company/models.py:794 +#: company/models.py:477 company/models.py:762 msgid "Select part" msgstr "" -#: company/models.py:500 company/templates/company/company_base.html:82 +#: company/models.py:486 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:530 +#: company/templates/company/supplier_part.html:145 part/serializers.py:525 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -3939,152 +4006,154 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:501 +#: company/models.py:487 msgid "Select manufacturer" msgstr "" -#: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:540 +#: company/models.py:493 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:535 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 -#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1801 #: templates/js/translated/purchase_order.js:1851 #: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "" -#: company/models.py:508 +#: company/models.py:494 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:515 +#: company/models.py:501 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:524 +#: company/models.py:510 msgid "Manufacturer part description" msgstr "" -#: company/models.py:581 company/models.py:608 company/models.py:824 -#: 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:615 +#: company/models.py:581 msgid "Parameter name" msgstr "" -#: company/models.py:621 report/templates/report/inventree_test_report.html:104 -#: stock/models.py:2429 templates/js/translated/company.js:1166 -#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 +#: company/models.py:587 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2418 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1493 #: templates/js/translated/stock.js:1522 msgid "Value" msgstr "" -#: company/models.py:622 +#: company/models.py:588 msgid "Parameter value" msgstr "" -#: company/models.py:629 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1052 part/models.py:3666 +#: company/models.py:595 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1045 part/models.py:3646 #: part/templates/part/part_base.html:284 -#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1512 +#: templates/js/translated/part.js:1616 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:630 +#: company/models.py:596 msgid "Parameter units" msgstr "" -#: company/models.py:732 +#: company/models.py:648 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:777 stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "" + +#: company/models.py:700 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:739 +#: company/models.py:707 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:753 +#: company/models.py:721 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/models.py:770 company/templates/company/company_base.html:87 #: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:514 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:509 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:511 -#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1769 #: templates/js/translated/pricing.js:498 #: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "" -#: company/models.py:803 +#: company/models.py:771 msgid "Select supplier" msgstr "" -#: company/models.py:809 part/serializers.py:525 +#: company/models.py:777 part/serializers.py:520 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:815 +#: company/models.py:783 msgid "Is this supplier part active?" msgstr "" -#: company/models.py:825 +#: company/models.py:793 msgid "Select manufacturer part" msgstr "" -#: company/models.py:832 +#: company/models.py:800 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:841 +#: company/models.py:809 msgid "Supplier part description" msgstr "" -#: company/models.py:848 company/templates/company/supplier_part.html:187 -#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 +#: company/models.py:816 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4093 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_purchase_order_report.html:32 #: report/templates/report/inventree_return_order_report.html:27 #: report/templates/report/inventree_sales_order_report.html:32 #: report/templates/report/inventree_stock_location_report.html:105 -#: stock/serializers.py:708 +#: stock/serializers.py:710 msgid "Note" msgstr "" -#: company/models.py:857 part/models.py:2010 +#: company/models.py:825 part/models.py:2003 msgid "base cost" msgstr "" -#: company/models.py:858 part/models.py:2011 +#: company/models.py:826 part/models.py:2004 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:865 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 +#: company/models.py:833 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:797 stock/serializers.py:1475 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 #: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "" -#: company/models.py:866 +#: company/models.py:834 msgid "Part packaging" msgstr "" -#: company/models.py:871 templates/js/translated/company.js:1651 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: company/models.py:839 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:311 #: templates/js/translated/purchase_order.js:841 #: templates/js/translated/purchase_order.js:1103 @@ -4093,35 +4162,35 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:873 +#: company/models.py:841 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:892 part/models.py:2017 +#: company/models.py:860 part/models.py:2010 msgid "multiple" msgstr "" -#: company/models.py:893 +#: company/models.py:861 msgid "Order multiple" msgstr "" -#: company/models.py:905 +#: company/models.py:873 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:911 +#: company/models.py:879 msgid "Availability Updated" msgstr "" -#: company/models.py:912 +#: company/models.py:880 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:163 +#: company/serializers.py:161 msgid "Default currency used for this supplier" msgstr "" -#: company/serializers.py:381 part/admin.py:126 +#: company/serializers.py:357 part/admin.py:126 #: part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1689 #: templates/js/translated/table_filters.js:355 @@ -4133,7 +4202,7 @@ msgstr "" #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 #: templates/js/translated/model_renderers.js:312 -#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +#: templates/js/translated/part.js:815 templates/js/translated/part.js:1219 msgid "Inactive" msgstr "" @@ -4172,7 +4241,7 @@ msgstr "" #: report/templates/report/inventree_purchase_order_report.html:40 #: report/templates/report/inventree_sales_order_report.html:40 #: report/templates/report/inventree_test_report.html:84 -#: report/templates/report/inventree_test_report.html:163 +#: report/templates/report/inventree_test_report.html:162 msgid "Part image" msgstr "" @@ -4191,10 +4260,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:92 order/models.py:940 -#: order/models.py:2068 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:148 stock/models.py:821 -#: stock/models.py:822 stock/serializers.py:1229 +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2032 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:819 +#: stock/models.py:820 stock/serializers.py:1225 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 @@ -4405,7 +4474,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:836 +#: part/admin.py:122 part/serializers.py:832 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4425,8 +4494,8 @@ msgstr "" msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:206 -#: templates/js/translated/part.js:1422 +#: company/templates/company/manufacturer_part.html:196 +#: templates/js/translated/part.js:1423 msgid "Add Parameter" msgstr "" @@ -4454,15 +4523,6 @@ msgstr "" msgid "Addresses" msgstr "" -#: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:452 -#: stock/models.py:779 stock/templates/stock/item_base.html:233 -#: templates/js/translated/company.js:1600 -#: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2280 -msgid "Supplier Part" -msgstr "" - #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1526 msgid "Supplier part actions" @@ -4505,8 +4565,8 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:524 -#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: part/bom.py:311 part/serializers.py:519 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1787 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1850 #: templates/js/translated/purchase_order.js:2028 @@ -4518,12 +4578,12 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:207 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" @@ -4555,15 +4615,15 @@ msgid "Update Part Availability" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:835 part/stocktake.py:223 +#: part/serializers.py:831 part/stocktake.py:224 #: part/templates/part/category.html:183 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:916 stock/serializers.py:1080 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:918 stock/serializers.py:1091 #: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:191 #: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1061 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:206 msgid "Stock Items" @@ -4590,10 +4650,6 @@ msgstr "" 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 "" @@ -4614,7 +4670,7 @@ msgstr "" msgid "Connected" msgstr "" -#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: machine/machine_types/label_printer.py:235 order/api.py:1467 #: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "" @@ -4703,7 +4759,7 @@ msgstr "" msgid "Config type" msgstr "" -#: order/admin.py:30 order/models.py:89 +#: order/admin.py:30 order/models.py:90 #: report/templates/report/inventree_purchase_order_report.html:31 #: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 @@ -4712,30 +4768,30 @@ msgstr "" msgid "Total Price" msgstr "" -#: order/api.py:161 order/serializers.py:91 +#: order/api.py:157 order/serializers.py:90 #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "" -#: order/api.py:165 templates/js/translated/table_filters.js:194 +#: order/api.py:161 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "" -#: order/api.py:240 +#: order/api.py:236 msgid "No matching purchase order found" msgstr "" -#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 -#: order/models.py:1586 order/models.py:1700 order/models.py:1854 -#: order/models.py:2267 order/models.py:2318 +#: order/api.py:435 order/api.py:801 order/models.py:1395 order/models.py:1504 +#: order/models.py:1550 order/models.py:1664 order/models.py:1818 +#: order/models.py:2231 order/models.py:2282 #: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "" -#: order/api.py:441 order/api.py:838 +#: order/api.py:439 order/api.py:822 msgid "Order Complete" msgstr "" @@ -4743,13 +4799,13 @@ msgstr "" msgid "Order Pending" msgstr "" -#: order/api.py:1509 order/models.py:380 order/models.py:1432 -#: order/models.py:1541 order/templates/order/order_base.html:9 +#: order/api.py:1461 order/models.py:380 order/models.py:1396 +#: order/models.py:1505 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_purchase_order_report.html:14 -#: stock/serializers.py:119 stock/templates/stock/item_base.html:176 +#: stock/serializers.py:118 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/part.js:1746 templates/js/translated/pricing.js:804 #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1673 @@ -4757,8 +4813,8 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1513 order/models.py:2017 order/models.py:2268 -#: order/models.py:2319 order/templates/order/return_order_base.html:9 +#: order/api.py:1465 order/models.py:1981 order/models.py:2232 +#: order/models.py:2283 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report.html:13 #: templates/js/translated/return_order.js:280 @@ -4766,15 +4822,15 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/models.py:90 +#: order/models.py:91 msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:71 +#: order/models.py:96 order/serializers.py:70 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:72 +#: order/models.py:99 order/serializers.py:71 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -4790,7 +4846,7 @@ msgstr "" msgid "Select project code for this order" msgstr "" -#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 msgid "Link to external page" msgstr "" @@ -4814,11 +4870,11 @@ msgstr "" msgid "Company address for this order" msgstr "" -#: order/models.py:464 order/models.py:929 +#: order/models.py:464 order/models.py:927 msgid "Order reference" msgstr "" -#: order/models.py:472 order/models.py:953 +#: order/models.py:472 order/models.py:951 msgid "Purchase order status" msgstr "" @@ -4839,15 +4895,15 @@ msgstr "" msgid "received by" msgstr "" -#: order/models.py:514 order/models.py:2094 +#: order/models.py:514 order/models.py:2058 msgid "Issue Date" msgstr "" -#: order/models.py:515 order/models.py:2095 +#: order/models.py:515 order/models.py:2059 msgid "Date order was issued" msgstr "" -#: order/models.py:522 order/models.py:2102 +#: order/models.py:522 order/models.py:2066 msgid "Date order was completed" msgstr "" @@ -4859,94 +4915,94 @@ msgstr "" msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:941 +#: order/models.py:939 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:964 order/models.py:2087 +#: order/models.py:962 order/models.py:2051 msgid "Customer Reference " msgstr "" -#: order/models.py:965 order/models.py:2088 +#: order/models.py:963 order/models.py:2052 msgid "Customer order reference code" msgstr "" -#: order/models.py:969 order/models.py:1707 +#: order/models.py:967 order/models.py:1671 #: templates/js/translated/sales_order.js:879 #: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "" -#: order/models.py:978 +#: order/models.py:976 msgid "shipped by" msgstr "" -#: order/models.py:1027 +#: order/models.py:1025 msgid "Order is already complete" msgstr "" -#: order/models.py:1030 +#: order/models.py:1028 msgid "Order is already cancelled" msgstr "" -#: order/models.py:1034 +#: order/models.py:1032 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:1038 +#: order/models.py:1036 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:1043 +#: order/models.py:1041 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1309 +#: order/models.py:1273 msgid "Item quantity" msgstr "" -#: order/models.py:1326 +#: order/models.py:1290 msgid "Line item reference" msgstr "" -#: order/models.py:1333 +#: order/models.py:1297 msgid "Line item notes" msgstr "" -#: order/models.py:1345 +#: order/models.py:1309 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1366 +#: order/models.py:1330 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1372 +#: order/models.py:1336 msgid "Context" msgstr "" -#: order/models.py:1373 +#: order/models.py:1337 msgid "Additional context for this line" msgstr "" -#: order/models.py:1383 +#: order/models.py:1347 msgid "Unit price" msgstr "" -#: order/models.py:1416 +#: order/models.py:1380 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1423 +#: order/models.py:1387 msgid "deleted" msgstr "" -#: order/models.py:1451 +#: order/models.py:1415 msgid "Supplier part" msgstr "" -#: order/models.py:1458 order/templates/order/order_base.html:196 -#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: order/models.py:1422 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1870 templates/js/translated/part.js:1902 #: templates/js/translated/purchase_order.js:1306 #: templates/js/translated/purchase_order.js:2169 #: templates/js/translated/return_order.js:763 @@ -4955,196 +5011,196 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1459 +#: order/models.py:1423 msgid "Number of items received" msgstr "" -#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 +#: order/models.py:1431 stock/models.py:938 stock/serializers.py:556 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "" -#: order/models.py:1468 +#: order/models.py:1432 msgid "Unit purchase price" msgstr "" -#: order/models.py:1483 +#: order/models.py:1447 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1574 +#: order/models.py:1538 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1579 +#: order/models.py:1543 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1605 part/templates/part/part_pricing.html:107 +#: order/models.py:1569 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:1606 +#: order/models.py:1570 msgid "Unit sale price" msgstr "" -#: order/models.py:1615 order/status_codes.py:43 +#: order/models.py:1579 order/status_codes.py:43 #: templates/js/translated/sales_order.js:1559 #: templates/js/translated/sales_order.js:1680 #: templates/js/translated/sales_order.js:1993 msgid "Shipped" msgstr "" -#: order/models.py:1616 +#: order/models.py:1580 msgid "Shipped quantity" msgstr "" -#: order/models.py:1708 +#: order/models.py:1672 msgid "Date of shipment" msgstr "" -#: order/models.py:1714 templates/js/translated/sales_order.js:1072 +#: order/models.py:1678 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "" -#: order/models.py:1715 +#: order/models.py:1679 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1723 +#: order/models.py:1687 msgid "Checked By" msgstr "" -#: order/models.py:1724 +#: order/models.py:1688 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 -#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 +#: order/models.py:1695 order/models.py:1908 order/serializers.py:1342 +#: order/serializers.py:1452 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "" -#: order/models.py:1732 +#: order/models.py:1696 msgid "Shipment number" msgstr "" -#: order/models.py:1740 +#: order/models.py:1704 msgid "Tracking Number" msgstr "" -#: order/models.py:1741 +#: order/models.py:1705 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1748 +#: order/models.py:1712 msgid "Invoice Number" msgstr "" -#: order/models.py:1749 +#: order/models.py:1713 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1769 +#: order/models.py:1733 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1772 +#: order/models.py:1736 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1890 order/models.py:1892 +#: order/models.py:1854 order/models.py:1856 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1899 +#: order/models.py:1863 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1902 +#: order/models.py:1866 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1905 +#: order/models.py:1869 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1924 order/serializers.py:1231 +#: order/models.py:1888 order/serializers.py:1219 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1927 +#: order/models.py:1891 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1928 plugin/base/barcodes/api.py:481 +#: order/models.py:1892 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1936 +#: order/models.py:1900 msgid "Line" msgstr "" -#: order/models.py:1945 +#: order/models.py:1909 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1958 order/models.py:2275 +#: order/models.py:1922 order/models.py:2239 #: templates/js/translated/return_order.js:721 msgid "Item" msgstr "" -#: order/models.py:1959 +#: order/models.py:1923 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1968 +#: order/models.py:1932 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:2057 +#: order/models.py:2021 msgid "Return Order reference" msgstr "" -#: order/models.py:2069 +#: order/models.py:2033 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:2081 +#: order/models.py:2045 msgid "Return order status" msgstr "" -#: order/models.py:2260 +#: order/models.py:2224 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2276 +#: order/models.py:2240 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2282 +#: order/models.py:2246 msgid "Received Date" msgstr "" -#: order/models.py:2283 +#: order/models.py:2247 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2294 templates/js/translated/return_order.js:732 +#: order/models.py:2258 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2295 +#: order/models.py:2259 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2302 +#: order/models.py:2266 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/serializers.py:79 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_purchase_order_report.html:22 @@ -5153,163 +5209,163 @@ msgstr "" msgid "Line Items" msgstr "" -#: order/serializers.py:84 +#: order/serializers.py:83 msgid "Completed Lines" msgstr "" -#: order/serializers.py:287 +#: order/serializers.py:286 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:302 order/serializers.py:1247 +#: order/serializers.py:301 order/serializers.py:1235 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:312 order/serializers.py:1257 +#: order/serializers.py:311 order/serializers.py:1245 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:440 +#: order/serializers.py:439 msgid "Order is not open" msgstr "" -#: order/serializers.py:461 +#: order/serializers.py:460 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:463 +#: order/serializers.py:462 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:473 +#: order/serializers.py:472 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:478 msgid "Merge Items" msgstr "" -#: order/serializers.py:481 +#: order/serializers.py:480 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:499 +#: order/serializers.py:498 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:502 +#: order/serializers.py:501 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:510 +#: order/serializers.py:509 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:511 +#: order/serializers.py:510 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:550 order/serializers.py:1325 +#: order/serializers.py:549 order/serializers.py:1313 msgid "Line Item" msgstr "" -#: order/serializers.py:556 +#: order/serializers.py:555 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1657 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:581 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:589 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:601 templates/js/translated/barcode.js:52 +#: order/serializers.py:600 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:602 +#: order/serializers.py:601 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:618 +#: order/serializers.py:617 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:642 +#: order/serializers.py:641 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:690 order/serializers.py:1696 +#: order/serializers.py:689 order/serializers.py:1673 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:706 +#: order/serializers.py:705 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:717 +#: order/serializers.py:716 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1074 +#: order/serializers.py:1062 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1134 +#: order/serializers.py:1122 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1195 order/serializers.py:1334 +#: order/serializers.py:1183 order/serializers.py:1322 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1214 +#: order/serializers.py:1202 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1344 +#: order/serializers.py:1332 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1366 order/serializers.py:1472 +#: order/serializers.py:1354 order/serializers.py:1460 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1369 order/serializers.py:1475 +#: order/serializers.py:1357 order/serializers.py:1463 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1416 +#: order/serializers.py:1404 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1423 +#: order/serializers.py:1411 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1650 +#: order/serializers.py:1627 msgid "Return order line item" msgstr "" -#: order/serializers.py:1656 +#: order/serializers.py:1633 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1659 +#: order/serializers.py:1636 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1688 +#: order/serializers.py:1665 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1766 +#: order/serializers.py:1743 msgid "Line price currency" msgstr "" @@ -5639,7 +5695,7 @@ msgstr "" #: 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/part.js:1073 #: templates/js/translated/purchase_order.js:1752 #: templates/js/translated/return_order.js:380 #: templates/js/translated/sales_order.js:891 @@ -5735,34 +5791,34 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:406 part/models.py:3964 part/stocktake.py:218 -#: stock/admin.py:153 +#: part/admin.py:39 part/admin.py:398 part/models.py:3944 part/stocktake.py:219 +#: stock/admin.py:152 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 -#: stock/admin.py:157 +#: part/admin.py:41 part/admin.py:405 part/models.py:3945 part/stocktake.py:220 +#: stock/admin.py:156 msgid "Part Name" msgstr "" -#: part/admin.py:45 part/stocktake.py:220 +#: part/admin.py:45 part/stocktake.py:221 msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:940 part/templates/part/part_base.html:269 #: report/templates/report/inventree_stock_location_report.html:103 -#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/part.js:1227 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 -#: report/models.py:161 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2346 +#: part/admin.py:50 part/models.py:949 part/templates/part/part_base.html:277 +#: report/models.py:162 templates/js/translated/part.js:1232 +#: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:319 part/models.py:929 +#: part/admin.py:53 part/admin.py:319 part/models.py:922 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5771,11 +5827,11 @@ msgstr "" msgid "Part Image" msgstr "" -#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:222 msgid "Category ID" msgstr "" -#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:223 msgid "Category Name" msgstr "" @@ -5787,11 +5843,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:908 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1036 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5799,26 +5855,26 @@ msgstr "" 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 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:235 +#: templates/js/translated/part.js:715 templates/js/translated/part.js:2153 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3123 part/models.py:3137 -#: templates/js/translated/part.js:969 +#: part/admin.py:155 part/models.py:3088 part/models.py:3102 +#: templates/js/translated/part.js:970 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3130 part/models.py:3144 -#: templates/js/translated/part.js:979 +#: part/admin.py:158 part/models.py:3095 part/models.py:3109 +#: templates/js/translated/part.js:980 msgid "Maximum Cost" msgstr "" -#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 msgid "Parent ID" msgstr "" -#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 msgid "Parent Name" msgstr "" @@ -5827,141 +5883,149 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:325 part/models.py:393 part/serializers.py:117 -#: part/serializers.py:272 part/serializers.py:391 +#: part/admin.py:325 part/models.py:396 part/serializers.py:124 +#: part/serializers.py:267 part/serializers.py:386 #: 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:2803 templates/js/translated/search.js:130 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "" -#: part/admin.py:386 +#: part/admin.py:378 msgid "BOM Level" msgstr "" -#: part/admin.py:389 +#: part/admin.py:381 msgid "BOM Item ID" msgstr "" -#: part/admin.py:399 +#: part/admin.py:391 msgid "Parent IPN" msgstr "" -#: part/admin.py:410 part/models.py:3966 +#: part/admin.py:402 part/models.py:3946 msgid "Part IPN" msgstr "" -#: part/admin.py:423 part/serializers.py:1278 +#: part/admin.py:415 part/serializers.py:1274 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:428 part/serializers.py:1293 +#: part/admin.py:420 part/serializers.py:1289 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:110 +#: part/api.py:104 msgid "Starred" msgstr "" -#: part/api.py:112 +#: part/api.py:106 msgid "Filter by starred categories" msgstr "" -#: part/api.py:129 stock/api.py:318 +#: part/api.py:123 stock/api.py:312 msgid "Depth" msgstr "" -#: part/api.py:129 +#: part/api.py:123 msgid "Filter by category depth" msgstr "" -#: part/api.py:147 stock/api.py:336 +#: part/api.py:141 stock/api.py:330 +msgid "Top Level" +msgstr "" + +#: part/api.py:143 +msgid "Filter by top-level categories" +msgstr "" + +#: part/api.py:156 stock/api.py:345 msgid "Cascade" msgstr "" -#: part/api.py:149 +#: part/api.py:158 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:169 +#: part/api.py:179 templates/js/translated/part.js:308 msgid "Parent" msgstr "" -#: part/api.py:171 +#: part/api.py:181 msgid "Filter by parent category" msgstr "" -#: part/api.py:204 +#: part/api.py:214 msgid "Exclude Tree" msgstr "" -#: part/api.py:206 +#: part/api.py:216 msgid "Exclude sub-categories under the specified category" msgstr "" -#: part/api.py:455 +#: part/api.py:449 msgid "Has Results" msgstr "" -#: part/api.py:622 +#: part/api.py:616 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:640 +#: part/api.py:634 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:656 +#: part/api.py:650 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:740 +#: part/api.py:734 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:887 +#: part/api.py:881 msgid "Valid" msgstr "" -#: part/api.py:888 +#: part/api.py:882 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:894 +#: part/api.py:888 msgid "This option must be selected" msgstr "" -#: part/api.py:1111 +#: part/api.py:1105 msgid "BOM Valid" msgstr "" -#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 -#: part/serializers.py:406 part/serializers.py:1134 -#: part/templates/part/part_base.html:260 stock/api.py:781 +#: part/api.py:1508 part/models.py:932 part/models.py:3374 part/models.py:3889 +#: part/serializers.py:401 part/serializers.py:1130 +#: part/templates/part/part_base.html:260 stock/api.py:791 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2376 +#: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/api.py:1803 +#: part/api.py:1796 msgid "Uses" msgstr "" -#: part/bom.py:170 part/models.py:102 part/models.py:982 +#: part/bom.py:170 part/models.py:104 part/models.py:975 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 part/serializers.py:837 +#: part/bom.py:171 part/serializers.py:833 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5970,1054 +6034,1066 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 +#: part/models.py:85 part/models.py:3890 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:84 part/templates/part/category.html:136 +#: part/models.py:86 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "" -#: part/models.py:103 +#: part/models.py:105 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 +#: part/models.py:110 stock/models.py:174 templates/js/translated/part.js:2810 #: templates/js/translated/stock.js:2772 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:110 +#: part/models.py:112 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:119 +#: part/models.py:121 msgid "Default keywords" msgstr "" -#: part/models.py:120 +#: part/models.py:122 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 stock/models.py:85 stock/models.py:156 +#: part/models.py:128 stock/models.py:86 stock/models.py:157 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:127 stock/models.py:157 +#: part/models.py:129 stock/models.py:158 msgid "Icon (optional)" msgstr "" -#: part/models.py:149 +#: part/models.py:151 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:482 +#: part/models.py:485 msgid "Cannot delete this part as it is still active" msgstr "" -#: part/models.py:489 +#: part/models.py:490 msgid "Cannot delete this part as it is used in an assembly" msgstr "" -#: part/models.py:527 +#: part/models.py:528 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:575 part/models.py:582 +#: part/models.py:576 part/models.py:583 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:594 +#: part/models.py:595 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:659 +#: part/models.py:658 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:739 +#: part/models.py:736 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:844 +#: part/models.py:837 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:854 +#: part/models.py:847 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:869 +#: part/models.py:862 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:898 part/models.py:3965 +#: part/models.py:891 part/models.py:3945 msgid "Part name" msgstr "" -#: part/models.py:903 +#: part/models.py:896 msgid "Is Template" msgstr "" -#: part/models.py:904 +#: part/models.py:897 msgid "Is this part a template part?" msgstr "" -#: part/models.py:914 +#: part/models.py:907 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:922 +#: part/models.py:915 msgid "Part description (optional)" msgstr "" -#: part/models.py:930 +#: part/models.py:923 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:940 +#: part/models.py:933 msgid "Part category" msgstr "" -#: part/models.py:948 +#: part/models.py:941 msgid "Internal Part Number" msgstr "" -#: part/models.py:955 +#: part/models.py:948 msgid "Part revision or version number" msgstr "" -#: part/models.py:980 +#: part/models.py:973 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:1026 part/templates/part/part_base.html:376 +#: part/models.py:1019 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:1027 +#: part/models.py:1020 msgid "Default supplier part" msgstr "" -#: part/models.py:1034 +#: part/models.py:1027 msgid "Default Expiry" msgstr "" -#: part/models.py:1035 +#: part/models.py:1028 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:1044 +#: part/models.py:1037 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:1053 +#: part/models.py:1046 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1060 +#: part/models.py:1053 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1066 +#: part/models.py:1059 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1072 +#: part/models.py:1065 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1078 +#: part/models.py:1071 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1084 +#: part/models.py:1077 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1088 +#: part/models.py:1081 msgid "Is this part active?" msgstr "" -#: part/models.py:1094 +#: part/models.py:1087 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1100 +#: part/models.py:1093 msgid "BOM checksum" msgstr "" -#: part/models.py:1101 +#: part/models.py:1094 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1109 +#: part/models.py:1102 msgid "BOM checked by" msgstr "" -#: part/models.py:1114 +#: part/models.py:1107 msgid "BOM checked date" msgstr "" -#: part/models.py:1130 +#: part/models.py:1123 msgid "Creation User" msgstr "" -#: part/models.py:1140 +#: part/models.py:1133 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1145 part/templates/part/part_base.html:339 +#: part/models.py:1138 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2470 +#: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:2018 +#: part/models.py:2011 msgid "Sell multiple" msgstr "" -#: part/models.py:3037 +#: part/models.py:3002 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:3053 +#: part/models.py:3018 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:3054 +#: part/models.py:3019 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:3060 +#: part/models.py:3025 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3026 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:3067 +#: part/models.py:3032 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3033 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3074 +#: part/models.py:3039 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3040 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3046 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3047 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3053 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3054 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3060 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3096 +#: part/models.py:3061 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3102 +#: part/models.py:3067 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3103 +#: part/models.py:3068 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3109 +#: part/models.py:3074 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3110 +#: part/models.py:3075 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3116 +#: part/models.py:3081 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3117 +#: part/models.py:3082 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3124 +#: part/models.py:3089 msgid "Override minimum cost" msgstr "" -#: part/models.py:3131 +#: part/models.py:3096 msgid "Override maximum cost" msgstr "" -#: part/models.py:3138 +#: part/models.py:3103 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3145 +#: part/models.py:3110 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3151 +#: part/models.py:3116 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3152 +#: part/models.py:3117 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3158 +#: part/models.py:3123 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3159 +#: part/models.py:3124 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3165 +#: part/models.py:3130 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3131 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3172 +#: part/models.py:3137 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3138 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3192 +#: part/models.py:3157 msgid "Part for stocktake" msgstr "" -#: part/models.py:3197 +#: part/models.py:3162 msgid "Item Count" msgstr "" -#: part/models.py:3198 +#: part/models.py:3163 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3206 +#: part/models.py:3171 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3210 part/models.py:3293 +#: part/models.py:3175 part/models.py:3258 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report.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/part.js:1086 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" -#: part/models.py:3211 +#: part/models.py:3176 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3219 +#: part/models.py:3184 msgid "Additional notes" msgstr "" -#: part/models.py:3229 +#: part/models.py:3194 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3235 +#: part/models.py:3200 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3236 +#: part/models.py:3201 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3242 +#: part/models.py:3207 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3243 +#: part/models.py:3208 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3264 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3300 +#: part/models.py:3265 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3270 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3306 +#: part/models.py:3271 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3316 +#: part/models.py:3281 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3478 +#: part/models.py:3423 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3489 +#: part/models.py:3444 part/models.py:3608 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3455 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3500 +#: part/models.py:3466 msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3517 templates/js/translated/part.js:2878 +#: part/models.py:3483 templates/js/translated/part.js:2880 msgid "Test Name" msgstr "" -#: part/models.py:3518 +#: part/models.py:3484 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3524 +#: part/models.py:3490 msgid "Test Key" msgstr "" -#: part/models.py:3525 +#: part/models.py:3491 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3532 +#: part/models.py:3498 msgid "Test Description" msgstr "" -#: part/models.py:3533 +#: part/models.py:3499 msgid "Enter description for this test" msgstr "" -#: part/models.py:3537 report/models.py:208 -#: templates/js/translated/part.js:2899 +#: part/models.py:3503 report/models.py:209 +#: templates/js/translated/part.js:2901 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" -#: part/models.py:3537 +#: part/models.py:3503 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3542 templates/js/translated/part.js:2907 +#: part/models.py:3508 templates/js/translated/part.js:2909 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3543 +#: part/models.py:3509 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3548 templates/js/translated/part.js:2915 +#: part/models.py:3514 templates/js/translated/part.js:2917 msgid "Requires Value" msgstr "" -#: part/models.py:3549 +#: part/models.py:3515 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3554 templates/js/translated/part.js:2922 +#: part/models.py:3520 templates/js/translated/part.js:2924 msgid "Requires Attachment" msgstr "" -#: part/models.py:3556 +#: part/models.py:3522 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3603 +#: part/models.py:3528 part/models.py:3667 templates/js/translated/part.js:1637 +msgid "Choices" +msgstr "" + +#: part/models.py:3529 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3583 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3608 +#: part/models.py:3588 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3628 -msgid "Choices must be unique" -msgstr "" - -#: part/models.py:3645 +#: part/models.py:3625 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3660 +#: part/models.py:3640 msgid "Parameter Name" msgstr "" -#: part/models.py:3667 +#: part/models.py:3647 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3675 +#: part/models.py:3655 msgid "Parameter description" msgstr "" -#: part/models.py:3681 templates/js/translated/part.js:1627 +#: part/models.py:3661 templates/js/translated/part.js:1628 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "" -#: part/models.py:3682 +#: part/models.py:3662 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3687 templates/js/translated/part.js:1636 -msgid "Choices" -msgstr "" - -#: part/models.py:3688 +#: part/models.py:3668 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3765 +#: part/models.py:3745 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3808 +#: part/models.py:3788 msgid "Parent Part" msgstr "" -#: part/models.py:3816 part/models.py:3917 part/models.py:3918 +#: part/models.py:3796 part/models.py:3897 part/models.py:3898 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3821 +#: part/models.py:3801 msgid "Data" msgstr "" -#: part/models.py:3822 +#: part/models.py:3802 msgid "Parameter Value" msgstr "" -#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3904 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3925 +#: part/models.py:3905 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3963 +#: part/models.py:3943 msgid "Part ID or part name" msgstr "" -#: part/models.py:3964 +#: part/models.py:3944 msgid "Unique part ID value" msgstr "" -#: part/models.py:3966 +#: part/models.py:3946 msgid "Part IPN value" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "Level" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "BOM level" msgstr "" -#: part/models.py:4057 +#: part/models.py:4037 msgid "Select parent part" msgstr "" -#: part/models.py:4067 +#: part/models.py:4047 msgid "Sub part" msgstr "" -#: part/models.py:4068 +#: part/models.py:4048 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4079 +#: part/models.py:4059 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4085 +#: part/models.py:4065 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4091 +#: part/models.py:4071 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4098 part/templates/part/upload_bom.html:55 +#: part/models.py:4078 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4099 +#: part/models.py:4079 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4106 +#: part/models.py:4086 msgid "BOM item reference" msgstr "" -#: part/models.py:4114 +#: part/models.py:4094 msgid "BOM item notes" msgstr "" -#: part/models.py:4120 +#: part/models.py:4100 msgid "Checksum" msgstr "" -#: part/models.py:4121 +#: part/models.py:4101 msgid "BOM line checksum" msgstr "" -#: part/models.py:4126 templates/js/translated/table_filters.js:174 +#: part/models.py:4106 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4127 +#: part/models.py:4107 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4132 part/templates/part/upload_bom.html:57 +#: part/models.py:4112 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:4133 +#: part/models.py:4113 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4138 part/templates/part/upload_bom.html:56 +#: part/models.py:4118 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4139 +#: part/models.py:4119 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4224 stock/models.py:664 +#: part/models.py:4204 stock/models.py:662 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4234 part/models.py:4236 +#: part/models.py:4214 part/models.py:4216 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4376 +#: part/models.py:4354 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4397 +#: part/models.py:4375 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4410 +#: part/models.py:4388 msgid "Parent BOM item" msgstr "" -#: part/models.py:4418 +#: part/models.py:4396 msgid "Substitute part" msgstr "" -#: part/models.py:4434 +#: part/models.py:4412 msgid "Part 1" msgstr "" -#: part/models.py:4442 +#: part/models.py:4420 msgid "Part 2" msgstr "" -#: part/models.py:4443 +#: part/models.py:4421 msgid "Select Related Part" msgstr "" -#: part/models.py:4462 +#: part/models.py:4440 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4467 +#: part/models.py:4445 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:119 part/serializers.py:141 +#: part/serializers.py:118 +msgid "Parent Category" +msgstr "" + +#: part/serializers.py:119 templates/js/translated/part.js:309 +msgid "Parent part category" +msgstr "" + +#: part/serializers.py:126 part/serializers.py:148 #: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/serializers.py:185 +#: part/serializers.py:180 msgid "Results" msgstr "" -#: part/serializers.py:186 +#: part/serializers.py:181 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 +#: part/serializers.py:205 part/serializers.py:223 stock/serializers.py:562 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:273 +#: part/serializers.py:268 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:397 +#: part/serializers.py:392 msgid "No parts selected" msgstr "" -#: part/serializers.py:407 +#: part/serializers.py:402 msgid "Select category" msgstr "" -#: part/serializers.py:442 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:443 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:448 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:449 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:455 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:456 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:463 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:488 +#: part/serializers.py:483 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:490 +#: part/serializers.py:485 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:497 +#: part/serializers.py:492 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:493 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:510 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:531 +#: part/serializers.py:526 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:541 +#: part/serializers.py:536 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:548 +#: part/serializers.py:543 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:557 +#: part/serializers.py:552 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:568 +#: part/serializers.py:563 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:575 +#: part/serializers.py:570 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:834 msgid "External Stock" msgstr "" -#: part/serializers.py:840 +#: part/serializers.py:836 msgid "Unallocated Stock" msgstr "" -#: part/serializers.py:843 +#: part/serializers.py:839 msgid "Variant Stock" msgstr "" -#: part/serializers.py:873 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:471 +#: part/serializers.py:869 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:472 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:870 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:880 templates/js/translated/part.js:102 +#: part/serializers.py:876 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:881 +#: part/serializers.py:877 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:887 +#: part/serializers.py:883 msgid "Supplier Information" msgstr "" -#: part/serializers.py:888 +#: part/serializers.py:884 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:896 +#: part/serializers.py:892 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:897 +#: part/serializers.py:893 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:902 +#: part/serializers.py:898 msgid "Existing Image" msgstr "" -#: part/serializers.py:903 +#: part/serializers.py:899 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:920 +#: part/serializers.py:916 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1126 +#: part/serializers.py:1122 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1136 +#: part/serializers.py:1132 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1146 +#: part/serializers.py:1142 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1152 +#: part/serializers.py:1148 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1153 +#: part/serializers.py:1149 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1158 +#: part/serializers.py:1154 msgid "Generate Report" msgstr "" -#: part/serializers.py:1159 +#: part/serializers.py:1155 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1164 +#: part/serializers.py:1160 msgid "Update Parts" msgstr "" -#: part/serializers.py:1165 +#: part/serializers.py:1161 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1173 +#: part/serializers.py:1169 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1279 +#: part/serializers.py:1275 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1286 +#: part/serializers.py:1282 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1294 +#: part/serializers.py:1290 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1301 +#: part/serializers.py:1297 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1330 +#: part/serializers.py:1326 msgid "Update" msgstr "" -#: part/serializers.py:1331 +#: part/serializers.py:1327 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1354 +#: part/serializers.py:1350 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1361 +#: part/serializers.py:1357 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1364 +#: part/serializers.py:1360 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1727 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1739 +#: part/serializers.py:1735 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1740 +#: part/serializers.py:1736 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1745 +#: part/serializers.py:1741 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1746 +#: part/serializers.py:1742 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1747 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1752 +#: part/serializers.py:1748 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1757 +#: part/serializers.py:1753 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1758 +#: part/serializers.py:1754 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1792 +#: part/serializers.py:1788 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1793 +#: part/serializers.py:1789 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1823 +#: part/serializers.py:1819 msgid "No part column specified" msgstr "" -#: part/serializers.py:1867 +#: part/serializers.py:1863 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1870 +#: part/serializers.py:1866 msgid "No matching part found" msgstr "" -#: part/serializers.py:1873 +#: part/serializers.py:1869 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1882 +#: part/serializers.py:1878 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1890 +#: part/serializers.py:1886 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1911 +#: part/serializers.py:1907 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 +#: part/stocktake.py:225 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "" -#: part/stocktake.py:225 +#: part/stocktake.py:226 msgid "Total Cost Min" msgstr "" -#: part/stocktake.py:226 +#: part/stocktake.py:227 msgid "Total Cost Max" msgstr "" -#: part/stocktake.py:284 +#: part/stocktake.py:285 msgid "Stocktake Report Available" msgstr "" -#: part/stocktake.py:285 +#: part/stocktake.py:286 msgid "A new stocktake report is available for download" msgstr "" @@ -7151,7 +7227,7 @@ 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 +#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" @@ -7251,15 +7327,15 @@ msgstr "" msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:655 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:663 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:748 +#: part/templates/part/detail.html:750 msgid "Add Test Result Template" msgstr "" @@ -7340,7 +7416,7 @@ msgstr "" msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" msgstr "" @@ -7412,7 +7488,7 @@ 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:2443 +#: templates/js/translated/part.js:1265 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7505,8 +7581,8 @@ msgstr "" #: 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:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/part.js:1243 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 #: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7549,7 +7625,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:247 +#: part/templates/part/prices.html:28 stock/admin.py:251 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 @@ -7626,8 +7702,8 @@ msgstr "" #: part/templates/part/stock_count.html:7 #: templates/js/translated/model_renderers.js:227 -#: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 -#: templates/js/translated/part.js:2142 +#: templates/js/translated/part.js:705 templates/js/translated/part.js:2141 +#: templates/js/translated/part.js:2143 msgid "No Stock" msgstr "" @@ -7999,7 +8075,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:308 msgid "Landscape" msgstr "" @@ -8112,62 +8188,62 @@ msgstr "" msgid "Uninstalled plugin successfully" msgstr "" -#: plugin/models.py:35 +#: plugin/models.py:36 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:36 +#: plugin/models.py:37 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:42 users/models.py:100 +#: plugin/models.py:43 users/models.py:100 msgid "Key" msgstr "" -#: plugin/models.py:43 +#: plugin/models.py:44 msgid "Key of plugin" msgstr "" -#: plugin/models.py:51 +#: plugin/models.py:52 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:58 plugin/serializers.py:90 +#: plugin/models.py:59 plugin/serializers.py:90 msgid "Package Name" msgstr "" -#: plugin/models.py:60 +#: plugin/models.py:61 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:65 +#: plugin/models.py:66 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:156 templates/js/translated/table_filters.js:370 +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "" -#: plugin/models.py:165 +#: plugin/models.py:166 msgid "Sample plugin" msgstr "" -#: plugin/models.py:173 +#: plugin/models.py:174 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:181 +#: plugin/models.py:182 msgid "Package Plugin" msgstr "" -#: plugin/models.py:205 report/models.py:474 +#: plugin/models.py:220 report/models.py:475 #: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:252 +#: plugin/models.py:267 msgid "Method" msgstr "" @@ -8175,17 +8251,17 @@ msgstr "" msgid "No author found" msgstr "" -#: plugin/registry.py:597 +#: plugin/registry.py:534 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:600 +#: plugin/registry.py:537 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:602 +#: plugin/registry.py:539 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -8300,23 +8376,19 @@ msgstr "" msgid "Activate this plugin" msgstr "" -#: plugin/serializers.py:234 +#: plugin/serializers.py:226 msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:235 +#: plugin/serializers.py:227 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:77 +#: report/api.py:88 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:89 report/serializers.py:53 -msgid "Model Type" -msgstr "" - -#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/api.py:103 report/models.py:439 report/serializers.py:98 #: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 #: templates/js/translated/return_order.js:353 #: templates/js/translated/sales_order.js:887 @@ -8324,176 +8396,176 @@ msgstr "" msgid "Items" msgstr "" -#: report/api.py:168 +#: report/api.py:180 msgid "Plugin not found" msgstr "" -#: report/api.py:170 +#: report/api.py:182 msgid "Plugin is not active" msgstr "" -#: report/api.py:172 +#: report/api.py:184 msgid "Plugin does not support label printing" msgstr "" -#: report/api.py:221 +#: report/api.py:233 msgid "Invalid label dimensions" msgstr "" -#: report/api.py:236 report/api.py:316 +#: report/api.py:248 report/api.py:329 msgid "No valid items provided to template" msgstr "" -#: report/api.py:271 +#: report/api.py:283 msgid "Error printing label" msgstr "" -#: report/api.py:362 report/api.py:398 +#: report/api.py:375 report/api.py:411 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/helpers.py:41 +#: report/helpers.py:43 msgid "A4" msgstr "" -#: report/helpers.py:42 +#: report/helpers.py:44 msgid "A3" msgstr "" -#: report/helpers.py:43 +#: report/helpers.py:45 msgid "Legal" msgstr "" -#: report/helpers.py:44 +#: report/helpers.py:46 msgid "Letter" msgstr "" -#: report/models.py:118 +#: report/models.py:119 msgid "Template file with this name already exists" msgstr "" -#: report/models.py:150 +#: report/models.py:151 msgid "Template name" msgstr "" -#: report/models.py:156 +#: report/models.py:157 msgid "Template description" msgstr "" -#: report/models.py:162 +#: report/models.py:163 msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Filename Pattern" msgstr "" -#: report/models.py:203 +#: report/models.py:204 msgid "Pattern for generating filenames" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Template is enabled" msgstr "" -#: report/models.py:214 +#: report/models.py:215 msgid "Target model type for template" msgstr "" -#: report/models.py:234 +#: report/models.py:235 msgid "Filters" msgstr "" -#: report/models.py:235 +#: report/models.py:236 msgid "Template query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:294 report/models.py:361 +#: report/models.py:295 report/models.py:362 msgid "Template file" msgstr "" -#: report/models.py:302 +#: report/models.py:303 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:308 +#: report/models.py:309 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:367 +#: report/models.py:368 msgid "Width [mm]" msgstr "" -#: report/models.py:368 +#: report/models.py:369 msgid "Label width, specified in mm" msgstr "" -#: report/models.py:374 +#: report/models.py:375 msgid "Height [mm]" msgstr "" -#: report/models.py:375 +#: report/models.py:376 msgid "Label height, specified in mm" msgstr "" -#: report/models.py:438 +#: report/models.py:439 msgid "Number of items to process" msgstr "" -#: report/models.py:444 +#: report/models.py:445 msgid "Report generation is complete" msgstr "" -#: report/models.py:448 templates/js/translated/build.js:2177 +#: report/models.py:449 templates/js/translated/build.js:2177 msgid "Progress" msgstr "" -#: report/models.py:448 +#: report/models.py:449 msgid "Report generation progress" msgstr "" -#: report/models.py:456 +#: report/models.py:457 msgid "Report Template" msgstr "" -#: report/models.py:463 report/models.py:486 +#: report/models.py:464 report/models.py:487 msgid "Output File" msgstr "" -#: report/models.py:464 report/models.py:487 +#: report/models.py:465 report/models.py:488 msgid "Generated output file" msgstr "" -#: report/models.py:475 +#: report/models.py:476 msgid "Label output plugin" msgstr "" -#: report/models.py:479 +#: report/models.py:480 msgid "Label Template" msgstr "" -#: report/models.py:502 +#: report/models.py:503 msgid "Snippet" msgstr "" -#: report/models.py:503 +#: report/models.py:504 msgid "Report snippet file" msgstr "" -#: report/models.py:510 +#: report/models.py:511 msgid "Snippet file description" msgstr "" -#: report/models.py:528 +#: report/models.py:529 msgid "Asset" msgstr "" -#: report/models.py:529 +#: report/models.py:530 msgid "Report asset file" msgstr "" -#: report/models.py:536 +#: report/models.py:537 msgid "Asset file description" msgstr "" @@ -8566,8 +8638,8 @@ msgid "Total" msgstr "" #: report/templates/report/inventree_return_order_report.html:25 -#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 -#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:824 +#: stock/serializers.py:149 stock/templates/stock/item_base.html:311 #: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 #: templates/js/translated/build.js:2355 #: templates/js/translated/model_renderers.js:230 @@ -8597,32 +8669,32 @@ msgstr "" msgid "Test" msgstr "" -#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2412 msgid "Result" msgstr "" -#: report/templates/report/inventree_test_report.html:130 +#: report/templates/report/inventree_test_report.html:129 msgid "Pass" msgstr "" -#: report/templates/report/inventree_test_report.html:132 +#: report/templates/report/inventree_test_report.html:131 msgid "Fail" msgstr "" -#: report/templates/report/inventree_test_report.html:139 +#: report/templates/report/inventree_test_report.html:138 msgid "No result (required)" msgstr "" -#: report/templates/report/inventree_test_report.html:141 +#: report/templates/report/inventree_test_report.html:140 msgid "No result" msgstr "" -#: report/templates/report/inventree_test_report.html:154 +#: report/templates/report/inventree_test_report.html:153 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "" -#: report/templates/report/inventree_test_report.html:168 stock/admin.py:162 +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 #: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 #: templates/js/translated/stock.js:3110 msgid "Serial" @@ -8644,654 +8716,670 @@ msgstr "" msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:172 +#: stock/admin.py:51 stock/admin.py:171 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:176 +#: stock/admin.py:53 stock/admin.py:175 msgid "Location Name" msgstr "" -#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/admin.py:63 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:149 +#: stock/admin.py:148 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:168 +#: stock/admin.py:167 msgid "Status Code" msgstr "" -#: stock/admin.py:180 +#: stock/admin.py:179 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:185 +#: stock/admin.py:184 +msgid "Supplier Part SKU" +msgstr "" + +#: stock/admin.py:189 msgid "Supplier ID" msgstr "" -#: stock/admin.py:191 +#: stock/admin.py:195 msgid "Supplier Name" msgstr "" -#: stock/admin.py:196 +#: stock/admin.py:200 msgid "Customer ID" msgstr "" -#: stock/admin.py:201 stock/models.py:806 +#: stock/admin.py:205 stock/models.py:804 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:206 +#: stock/admin.py:210 msgid "Build ID" msgstr "" -#: stock/admin.py:216 +#: stock/admin.py:220 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:221 +#: stock/admin.py:225 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:236 +#: stock/admin.py:240 msgid "Review Needed" msgstr "" -#: stock/admin.py:241 +#: stock/admin.py:245 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:256 stock/models.py:900 +#: stock/admin.py:260 stock/models.py:898 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "" -#: stock/api.py:318 +#: stock/api.py:312 msgid "Filter by location depth" msgstr "" -#: stock/api.py:338 +#: stock/api.py:332 +msgid "Filter by top-level locations" +msgstr "" + +#: stock/api.py:347 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:359 +#: stock/api.py:369 stock/serializers.py:1085 msgid "Parent Location" msgstr "" -#: stock/api.py:360 +#: stock/api.py:370 msgid "Filter by parent location" msgstr "" -#: stock/api.py:615 templates/js/translated/table_filters.js:427 +#: stock/api.py:625 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:803 +#: stock/api.py:813 msgid "Part Tree" msgstr "" -#: stock/api.py:833 +#: stock/api.py:843 msgid "Expiry date before" msgstr "" -#: stock/api.py:837 +#: stock/api.py:847 msgid "Expiry date after" msgstr "" -#: stock/api.py:840 stock/templates/stock/item_base.html:439 +#: stock/api.py:850 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:927 +#: stock/api.py:937 msgid "Quantity is required" msgstr "" -#: stock/api.py:933 +#: stock/api.py:943 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:964 +#: stock/api.py:974 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:974 +#: stock/api.py:984 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:1005 +#: stock/api.py:1015 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:59 +#: stock/models.py:60 msgid "Stock Location type" msgstr "" -#: stock/models.py:60 +#: stock/models.py:61 msgid "Stock Location types" msgstr "" -#: stock/models.py:86 +#: stock/models.py:87 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:123 stock/models.py:788 +#: stock/models.py:124 stock/models.py:786 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:124 stock/templates/stock/location.html:186 +#: stock/models.py:125 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "" -#: stock/models.py:166 stock/models.py:949 +#: stock/models.py:167 stock/models.py:947 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:167 stock/models.py:950 +#: stock/models.py:168 stock/models.py:948 msgid "Select Owner" msgstr "" -#: stock/models.py:175 +#: stock/models.py:176 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:182 templates/js/translated/stock.js:2781 +#: stock/models.py:183 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:183 +#: stock/models.py:184 msgid "This is an external stock location" msgstr "" -#: stock/models.py:189 templates/js/translated/stock.js:2790 +#: stock/models.py:190 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" -#: stock/models.py:193 +#: stock/models.py:194 msgid "Stock location type of this location" msgstr "" -#: stock/models.py:262 +#: stock/models.py:261 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:643 +#: stock/models.py:641 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:670 stock/serializers.py:419 +#: stock/models.py:668 stock/serializers.py:446 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:687 +#: stock/models.py:685 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:697 stock/models.py:710 +#: stock/models.py:695 stock/models.py:708 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:700 +#: stock/models.py:698 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:724 +#: stock/models.py:722 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:729 +#: stock/models.py:727 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:742 +#: stock/models.py:740 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:758 +#: stock/models.py:756 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:770 +#: stock/models.py:768 msgid "Base part" msgstr "" -#: stock/models.py:780 +#: stock/models.py:778 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:792 +#: stock/models.py:790 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:800 stock/serializers.py:1480 +#: stock/models.py:798 stock/serializers.py:1476 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:811 +#: stock/models.py:809 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:830 +#: stock/models.py:828 msgid "Serial number for this item" msgstr "" -#: stock/models.py:844 stock/serializers.py:1463 +#: stock/models.py:842 stock/serializers.py:1459 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:849 +#: stock/models.py:847 msgid "Stock Quantity" msgstr "" -#: stock/models.py:859 +#: stock/models.py:857 msgid "Source Build" msgstr "" -#: stock/models.py:862 +#: stock/models.py:860 msgid "Build for this stock item" msgstr "" -#: stock/models.py:869 stock/templates/stock/item_base.html:363 +#: stock/models.py:867 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:872 +#: stock/models.py:870 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:881 +#: stock/models.py:879 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:885 +#: stock/models.py:883 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:891 +#: stock/models.py:889 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:902 +#: stock/models.py:900 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:920 +#: stock/models.py:918 msgid "Delete on deplete" msgstr "" -#: stock/models.py:921 +#: stock/models.py:919 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:941 +#: stock/models.py:939 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:972 +#: stock/models.py:970 msgid "Converted to part" msgstr "" -#: stock/models.py:1490 +#: stock/models.py:1486 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1496 +#: stock/models.py:1492 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1500 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1510 +#: stock/models.py:1506 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1515 +#: stock/models.py:1511 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1523 stock/serializers.py:658 +#: stock/models.py:1519 stock/serializers.py:660 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1620 +#: stock/models.py:1616 msgid "Test template does not exist" msgstr "" -#: stock/models.py:1638 +#: stock/models.py:1634 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1642 +#: stock/models.py:1638 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1645 +#: stock/models.py:1641 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1648 +#: stock/models.py:1644 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1651 +#: stock/models.py:1647 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1654 +#: stock/models.py:1650 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1661 stock/serializers.py:1369 +#: stock/models.py:1657 stock/serializers.py:1365 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1665 +#: stock/models.py:1661 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1673 +#: stock/models.py:1669 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1678 +#: stock/models.py:1674 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1905 +#: stock/models.py:1901 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2310 msgid "Entry notes" msgstr "" -#: stock/models.py:2391 +#: stock/models.py:2378 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2396 +#: stock/models.py:2383 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2423 +#: stock/models.py:2388 +msgid "Invalid value for this test" +msgstr "" + +#: stock/models.py:2412 msgid "Test result" msgstr "" -#: stock/models.py:2430 +#: stock/models.py:2419 msgid "Test output value" msgstr "" -#: stock/models.py:2438 +#: stock/models.py:2427 msgid "Test result attachment" msgstr "" -#: stock/models.py:2442 +#: stock/models.py:2431 msgid "Test notes" msgstr "" -#: stock/models.py:2450 templates/js/translated/stock.js:1548 +#: stock/models.py:2439 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2440 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2457 +#: stock/models.py:2446 msgid "Started" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2447 msgid "The timestamp of the test start" msgstr "" -#: stock/models.py:2464 +#: stock/models.py:2453 msgid "Finished" msgstr "" -#: stock/models.py:2465 +#: stock/models.py:2454 msgid "The timestamp of the test finish" msgstr "" -#: stock/serializers.py:75 +#: stock/serializers.py:74 msgid "Generated batch code" msgstr "" -#: stock/serializers.py:84 +#: stock/serializers.py:83 msgid "Select build order" msgstr "" -#: stock/serializers.py:93 +#: stock/serializers.py:92 msgid "Select stock item to generate batch code for" msgstr "" -#: stock/serializers.py:102 +#: stock/serializers.py:101 msgid "Select location to generate batch code for" msgstr "" -#: stock/serializers.py:111 +#: stock/serializers.py:110 msgid "Select part to generate batch code for" msgstr "" -#: stock/serializers.py:120 +#: stock/serializers.py:119 msgid "Select purchase order" msgstr "" -#: stock/serializers.py:127 +#: stock/serializers.py:126 msgid "Enter quantity for batch code" msgstr "" -#: stock/serializers.py:150 +#: stock/serializers.py:149 msgid "Generated serial number" msgstr "" -#: stock/serializers.py:159 +#: stock/serializers.py:158 msgid "Select part to generate serial number for" msgstr "" -#: stock/serializers.py:167 +#: stock/serializers.py:166 msgid "Quantity of serial numbers to generate" msgstr "" -#: stock/serializers.py:229 +#: stock/serializers.py:228 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:248 +#: stock/serializers.py:247 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:280 +#: stock/serializers.py:279 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:313 +#: stock/serializers.py:315 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:411 +#: stock/serializers.py:438 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:531 +#: stock/serializers.py:558 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:595 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:606 +#: stock/serializers.py:608 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:613 +#: stock/serializers.py:615 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 +#: stock/serializers.py:626 stock/serializers.py:1322 stock/serializers.py:1578 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:631 +#: stock/serializers.py:633 msgid "Optional note field" msgstr "" -#: stock/serializers.py:641 +#: stock/serializers.py:643 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:696 +#: stock/serializers.py:698 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:703 +#: stock/serializers.py:705 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:704 +#: stock/serializers.py:706 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 -#: stock/serializers.py:935 +#: stock/serializers.py:711 stock/serializers.py:791 stock/serializers.py:887 +#: stock/serializers.py:937 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:719 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:725 +#: stock/serializers.py:727 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:736 +#: stock/serializers.py:738 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:749 +#: stock/serializers.py:751 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:784 +#: stock/serializers.py:786 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:819 +#: stock/serializers.py:821 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:834 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:849 +#: stock/serializers.py:851 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:880 +#: stock/serializers.py:882 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:917 +#: stock/serializers.py:919 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:923 +#: stock/serializers.py:925 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:1019 stock/serializers.py:1082 +#: stock/serializers.py:1021 stock/serializers.py:1093 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:220 +#: stock/templates/stock/location.html:222 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1198 +#: stock/serializers.py:1086 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: stock/serializers.py:1194 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1202 +#: stock/serializers.py:1198 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1206 +#: stock/serializers.py:1202 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1230 +#: stock/serializers.py:1226 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1236 +#: stock/serializers.py:1232 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1244 +#: stock/serializers.py:1240 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1254 stock/serializers.py:1508 +#: stock/serializers.py:1250 stock/serializers.py:1504 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1333 +#: stock/serializers.py:1329 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1338 +#: stock/serializers.py:1334 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1339 +#: stock/serializers.py:1335 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1344 +#: stock/serializers.py:1340 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1345 +#: stock/serializers.py:1341 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1355 +#: stock/serializers.py:1351 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1422 +#: stock/serializers.py:1418 msgid "No Change" msgstr "" -#: stock/serializers.py:1451 +#: stock/serializers.py:1447 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1470 +#: stock/serializers.py:1466 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1498 +#: stock/serializers.py:1494 msgid "Stock transaction notes" msgstr "" @@ -9444,7 +9532,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276 msgid "Delete Test Data" msgstr "" @@ -9464,11 +9552,11 @@ msgstr "" msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:272 +#: stock/templates/stock/item.html:264 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "" @@ -9754,28 +9842,28 @@ msgstr "" msgid "Location Type" msgstr "" -#: stock/templates/stock/location.html:224 +#: stock/templates/stock/location.html:226 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:225 +#: stock/templates/stock/location.html:227 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:295 +#: stock/templates/stock/location.html:299 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:317 +#: stock/templates/stock/location.html:321 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:390 +#: stock/templates/stock/location.html:394 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:401 +#: stock/templates/stock/location.html:405 msgid "Link Barcode to Stock Location" msgstr "" @@ -10199,20 +10287,20 @@ msgstr "" msgid "Pricing Settings" msgstr "" -#: templates/InvenTree/settings/pricing.html:34 +#: templates/InvenTree/settings/pricing.html:35 msgid "Exchange Rates" msgstr "" -#: templates/InvenTree/settings/pricing.html:38 +#: templates/InvenTree/settings/pricing.html:39 msgid "Update Now" msgstr "" -#: templates/InvenTree/settings/pricing.html:46 -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 msgid "Last Update" msgstr "" -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:51 msgid "Never" msgstr "" @@ -10269,8 +10357,8 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:547 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 +#: templates/js/translated/part.js:393 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:402 msgid "Delete" msgstr "" @@ -10310,12 +10398,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 -#: templates/js/translated/part.js:1645 +#: templates/js/translated/part.js:1646 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 -#: templates/js/translated/part.js:1646 +#: templates/js/translated/part.js:1647 msgid "Delete Template" msgstr "" @@ -10705,7 +10793,7 @@ msgid "Submit Bug Report" msgstr "" #: templates/about.html:91 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 +#: templates/js/translated/helpers.js:589 msgid "copy to clipboard" msgstr "" @@ -10769,7 +10857,7 @@ 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 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45 msgid "Return to Site" msgstr "" @@ -10883,15 +10971,19 @@ msgstr "" msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "" -#: templates/allauth_2fa/setup.html:23 +#: templates/allauth_2fa/setup.html:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 msgid "Step 2" msgstr "" -#: templates/allauth_2fa/setup.html:27 +#: templates/allauth_2fa/setup.html:28 msgid "Input a token generated by the app:" msgstr "" -#: templates/allauth_2fa/setup.html:37 +#: templates/allauth_2fa/setup.html:38 msgid "Verify" msgstr "" @@ -10970,7 +11062,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3217 +#: templates/js/translated/part.js:3219 msgid "Minimum Quantity" msgstr "" @@ -11058,27 +11150,27 @@ msgstr "" msgid "Delete attachments" msgstr "" -#: templates/js/translated/attachment.js:253 +#: templates/js/translated/attachment.js:260 msgid "Attachment actions" msgstr "" -#: templates/js/translated/attachment.js:275 +#: templates/js/translated/attachment.js:294 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:315 +#: templates/js/translated/attachment.js:334 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:365 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:366 +#: templates/js/translated/attachment.js:385 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:374 +#: templates/js/translated/attachment.js:393 msgid "Delete attachment" msgstr "" @@ -11359,7 +11451,7 @@ msgid "Includes variant and substitute stock" msgstr "" #: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 -#: templates/js/translated/part.js:1256 +#: templates/js/translated/part.js:1257 #: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" @@ -11686,7 +11778,7 @@ msgstr "" #: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 #: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 -#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11729,8 +11821,8 @@ msgstr "" msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 -#: templates/js/translated/part.js:1202 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:791 +#: templates/js/translated/part.js:1203 msgid "Trackable part" msgstr "" @@ -11916,7 +12008,7 @@ msgid "Delete Parameters" msgstr "" #: templates/js/translated/company.js:1191 -#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2244 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2245 msgid "Order parts" msgstr "" @@ -11933,34 +12025,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:1279 -#: templates/js/translated/company.js:1567 templates/js/translated/part.js:798 -#: templates/js/translated/part.js:1210 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Template part" msgstr "" #: templates/js/translated/company.js:1283 -#: templates/js/translated/company.js:1571 templates/js/translated/part.js:802 -#: templates/js/translated/part.js:1214 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:803 +#: templates/js/translated/part.js:1215 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1464 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1465 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1527 +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1528 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1528 +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1529 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1433 +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1434 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1549 +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1550 msgid "Delete Parameter" msgstr "" @@ -12094,23 +12186,23 @@ msgstr "" msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2499 +#: templates/js/translated/forms.js:2500 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3113 +#: templates/js/translated/forms.js:3114 msgid "Select Columns" msgstr "" @@ -12211,7 +12303,7 @@ msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 -#: templates/js/translated/part.js:1604 +#: templates/js/translated/part.js:1605 msgid "ID" msgstr "" @@ -12292,347 +12384,343 @@ msgstr "" 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 +#: templates/js/translated/part.js:333 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:355 +#: templates/js/translated/part.js:356 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:356 +#: templates/js/translated/part.js:357 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:370 +#: templates/js/translated/part.js:371 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:383 +#: templates/js/translated/part.js:384 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:388 +#: templates/js/translated/part.js:389 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:397 +#: templates/js/translated/part.js:398 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:401 +#: templates/js/translated/part.js:402 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:406 +#: templates/js/translated/part.js:407 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:430 +#: templates/js/translated/part.js:431 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:432 +#: templates/js/translated/part.js:433 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:433 +#: templates/js/translated/part.js:434 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:462 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:463 +#: templates/js/translated/part.js:464 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:474 +#: templates/js/translated/part.js:475 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:531 +#: templates/js/translated/part.js:532 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:532 +#: templates/js/translated/part.js:533 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:546 +#: templates/js/translated/part.js:547 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:548 +#: templates/js/translated/part.js:549 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:549 +#: templates/js/translated/part.js:550 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:550 +#: templates/js/translated/part.js:551 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:557 +#: templates/js/translated/part.js:558 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:593 +#: templates/js/translated/part.js:594 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:595 +#: templates/js/translated/part.js:596 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:600 +#: templates/js/translated/part.js:601 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:602 +#: templates/js/translated/part.js:603 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:619 +#: templates/js/translated/part.js:620 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:629 +#: templates/js/translated/part.js:630 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:632 +#: templates/js/translated/part.js:633 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:657 +#: templates/js/translated/part.js:658 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:685 +#: templates/js/translated/part.js:686 #: templates/js/translated/table_filters.js:747 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:688 +#: templates/js/translated/part.js:689 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:748 +#: templates/js/translated/part.js:749 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:771 +#: templates/js/translated/part.js:772 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +#: templates/js/translated/part.js:795 templates/js/translated/part.js:1207 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:806 +#: templates/js/translated/part.js:807 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:810 +#: templates/js/translated/part.js:811 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:897 +#: templates/js/translated/part.js:898 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:901 +#: templates/js/translated/part.js:902 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1050 +#: templates/js/translated/part.js:1051 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1145 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +#: templates/js/translated/part.js:1113 templates/js/translated/part.js:1155 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1281 +#: templates/js/translated/part.js:1282 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1599 +#: templates/js/translated/part.js:1600 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1662 +#: templates/js/translated/part.js:1663 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1674 +#: templates/js/translated/part.js:1675 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1682 +#: templates/js/translated/part.js:1683 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1716 +#: templates/js/translated/part.js:1717 #: templates/js/translated/purchase_order.js:1654 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1860 +#: templates/js/translated/part.js:1861 #: templates/js/translated/purchase_order.js:2153 #: templates/js/translated/return_order.js:755 #: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1906 +#: templates/js/translated/part.js:1907 #: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1970 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1991 +#: templates/js/translated/part.js:1992 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 +#: templates/js/translated/part.js:2080 templates/js/translated/part.js:2506 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2200 +#: templates/js/translated/part.js:2201 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2205 +#: templates/js/translated/part.js:2206 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2235 +#: templates/js/translated/part.js:2236 msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2286 +#: templates/js/translated/part.js:2287 msgid "part" msgstr "" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2288 msgid "parts" msgstr "" -#: templates/js/translated/part.js:2383 +#: templates/js/translated/part.js:2384 msgid "No category" msgstr "" -#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2546 +#: templates/js/translated/part.js:2547 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2644 +#: templates/js/translated/part.js:2645 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2760 +#: templates/js/translated/part.js:2761 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2776 +#: templates/js/translated/part.js:2777 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2865 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2887 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/part.js:2938 templates/js/translated/stock.js:1457 #: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2940 +#: templates/js/translated/part.js:2942 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2956 +#: templates/js/translated/part.js:2958 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2970 +#: templates/js/translated/part.js:2972 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3051 templates/js/translated/part.js:3052 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3052 +#: templates/js/translated/part.js:3054 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3058 +#: templates/js/translated/part.js:3060 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3108 +#: templates/js/translated/part.js:3110 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3114 +#: templates/js/translated/part.js:3116 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3210 +#: templates/js/translated/part.js:3212 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3226 +#: templates/js/translated/part.js:3228 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3271 +#: templates/js/translated/part.js:3273 msgid "Minimum Stock Level" msgstr "" @@ -13240,10 +13328,6 @@ msgstr "" 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 "" @@ -13412,7 +13496,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:401 +#: templates/js/translated/stock.js:1042 users/models.py:392 msgid "Add" msgstr "" @@ -14303,34 +14387,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:384 +#: users/models.py:375 msgid "Permission set" msgstr "" -#: users/models.py:393 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "View" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "Permission to view items" msgstr "" -#: users/models.py:401 +#: users/models.py:392 msgid "Permission to add items" msgstr "" -#: users/models.py:405 +#: users/models.py:396 msgid "Change" msgstr "" -#: users/models.py:407 +#: users/models.py:398 msgid "Permissions to edit items" msgstr "" -#: users/models.py:413 +#: users/models.py:404 msgid "Permission to delete items" msgstr "" + diff --git a/src/backend/InvenTree/locale/es_MX/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/es_MX/LC_MESSAGES/django.po index be983506d7..f0ebeec87a 100644 --- a/src/backend/InvenTree/locale/es_MX/LC_MESSAGES/django.po +++ b/src/backend/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-05-31 07:08+0000\n" +"POT-Creation-Date: 2024-06-26 03:18+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,7 +22,7 @@ msgstr "" msgid "API endpoint not found" msgstr "" -#: InvenTree/api.py:536 +#: InvenTree/api.py:520 msgid "User does not have permission to view this model" msgstr "" @@ -53,25 +53,25 @@ msgstr "" msgid "Error details can be found in the admin panel" msgstr "" -#: InvenTree/fields.py:139 +#: InvenTree/fields.py:136 msgid "Enter date" msgstr "" -#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 -#: build/serializers.py:531 build/templates/build/sidebar.html:21 -#: company/models.py:849 company/templates/company/sidebar.html:37 -#: order/models.py:1332 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:205 InvenTree/models.py:918 build/serializers.py:452 +#: build/serializers.py:530 build/templates/build/sidebar.html:21 +#: company/models.py:817 company/templates/company/sidebar.html:37 +#: order/models.py:1296 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:3218 part/templates/part/part_sidebar.html:63 +#: part/models.py:3183 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_report.html:172 -#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 -#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 -#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 -#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:230 stock/models.py:2309 stock/models.py:2431 +#: stock/serializers.py:632 stock/serializers.py:790 stock/serializers.py:886 +#: stock/serializers.py:936 stock/serializers.py:1239 stock/serializers.py:1328 +#: stock/serializers.py:1493 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1080 +#: templates/js/translated/part.js:1081 #: templates/js/translated/purchase_order.js:2200 #: templates/js/translated/return_order.js:775 #: templates/js/translated/sales_order.js:1103 @@ -121,15 +121,15 @@ msgstr "" msgid "You must type the same email each time." msgstr "" -#: InvenTree/forms.py:253 InvenTree/forms.py:261 +#: InvenTree/forms.py:248 InvenTree/forms.py:256 msgid "The provided primary email address is not valid." msgstr "" -#: InvenTree/forms.py:268 +#: InvenTree/forms.py:263 msgid "The provided email domain is not approved." msgstr "" -#: InvenTree/forms.py:395 +#: InvenTree/forms.py:390 msgid "Registration is disabled." msgstr "" @@ -172,35 +172,35 @@ msgstr "" msgid "Remove HTML tags from this value" msgstr "" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Connection error" msgstr "" -#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 msgid "Server responded with invalid status code" msgstr "" -#: InvenTree/helpers_model.py:158 +#: InvenTree/helpers_model.py:148 msgid "Exception occurred" msgstr "" -#: InvenTree/helpers_model.py:168 +#: InvenTree/helpers_model.py:158 msgid "Server responded with invalid Content-Length value" msgstr "" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:161 msgid "Image size is too large" msgstr "" -#: InvenTree/helpers_model.py:183 +#: InvenTree/helpers_model.py:173 msgid "Image download exceeded maximum size" msgstr "" -#: InvenTree/helpers_model.py:188 +#: InvenTree/helpers_model.py:178 msgid "Remote server returned empty response" msgstr "" -#: InvenTree/helpers_model.py:196 +#: InvenTree/helpers_model.py:186 msgid "Supplied URL is not a valid image file" msgstr "" @@ -297,46 +297,50 @@ msgid "Portuguese (Brazilian)" msgstr "" #: InvenTree/locales.py:41 -msgid "Russian" +msgid "Romanian" msgstr "" #: InvenTree/locales.py:42 -msgid "Slovak" +msgid "Russian" msgstr "" #: InvenTree/locales.py:43 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: InvenTree/locales.py:44 -msgid "Serbian" +msgid "Slovenian" msgstr "" #: InvenTree/locales.py:45 -msgid "Swedish" +msgid "Serbian" msgstr "" #: InvenTree/locales.py:46 -msgid "Thai" +msgid "Swedish" msgstr "" #: InvenTree/locales.py:47 -msgid "Turkish" +msgid "Thai" msgstr "" #: InvenTree/locales.py:48 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: InvenTree/locales.py:49 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: InvenTree/locales.py:50 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: InvenTree/locales.py:51 +msgid "Chinese (Simplified)" +msgstr "" + +#: InvenTree/locales.py:52 msgid "Chinese (Traditional)" msgstr "" @@ -345,153 +349,65 @@ msgstr "" msgid "[{site_name}] Log in to the app" msgstr "" -#: InvenTree/magic_login.py:38 company/models.py:133 +#: InvenTree/magic_login.py:38 company/models.py:136 #: company/templates/company/company_base.html:138 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:677 msgid "Email" msgstr "" -#: InvenTree/models.py:107 +#: InvenTree/models.py:105 msgid "Error running plugin validation" msgstr "" -#: InvenTree/models.py:176 +#: InvenTree/models.py:174 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:182 +#: InvenTree/models.py:180 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:183 +#: InvenTree/models.py:181 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:413 +#: InvenTree/models.py:408 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:420 +#: InvenTree/models.py:415 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:426 +#: InvenTree/models.py:421 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:437 +#: InvenTree/models.py:432 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:445 +#: InvenTree/models.py:440 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:476 +#: InvenTree/models.py:471 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:550 -msgid "Missing file" -msgstr "" - -#: InvenTree/models.py:551 -msgid "Missing external link" -msgstr "" - -#: InvenTree/models.py:572 stock/models.py:2437 -#: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:326 -msgid "Attachment" -msgstr "" - -#: InvenTree/models.py:573 -msgid "Select file to attach" -msgstr "" - -#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:831 -#: order/models.py:303 order/models.py:1337 order/models.py:1753 -#: part/admin.py:55 part/models.py:962 -#: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_report.html:164 -#: stock/admin.py:225 templates/js/translated/company.js:1319 -#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2455 -#: templates/js/translated/purchase_order.js:2040 -#: templates/js/translated/purchase_order.js:2204 -#: templates/js/translated/return_order.js:779 -#: templates/js/translated/sales_order.js:1092 -#: templates/js/translated/sales_order.js:2023 -msgid "Link" -msgstr "" - -#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 -#: stock/models.py:836 -msgid "Link to external URL" -msgstr "" - -#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:341 -msgid "Comment" -msgstr "" - -#: InvenTree/models.py:589 -msgid "File comment" -msgstr "" - -#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 -#: common/models.py:2518 common/models.py:2742 common/models.py:2743 -#: common/models.py:2988 common/models.py:2989 part/models.py:3228 -#: part/models.py:3315 part/models.py:3408 part/models.py:3436 -#: plugin/models.py:259 plugin/models.py:260 -#: report/templates/report/inventree_test_report.html:105 -#: templates/js/translated/stock.js:3036 users/models.py:111 -msgid "User" -msgstr "" - -#: InvenTree/models.py:602 -msgid "upload date" -msgstr "" - -#: InvenTree/models.py:624 -msgid "Filename must not be empty" -msgstr "" - -#: InvenTree/models.py:635 -msgid "Invalid attachment directory" -msgstr "" - -#: InvenTree/models.py:665 -#, python-brace-format -msgid "Filename contains illegal character '{c}'" -msgstr "" - -#: InvenTree/models.py:668 -msgid "Filename missing extension" -msgstr "" - -#: InvenTree/models.py:677 -msgid "Attachment with this filename already exists" -msgstr "" - -#: InvenTree/models.py:684 -msgid "Error renaming file" -msgstr "" - -#: InvenTree/models.py:860 +#: InvenTree/models.py:719 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:877 +#: InvenTree/models.py:736 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 -#: common/serializers.py:403 company/models.py:614 machine/models.py:24 -#: part/models.py:898 part/models.py:3659 plugin/models.py:50 -#: report/models.py:149 stock/models.py:72 +#: InvenTree/models.py:766 common/models.py:2623 common/models.py:3036 +#: common/serializers.py:408 company/models.py:580 machine/models.py:24 +#: part/models.py:891 part/models.py:3639 plugin/models.py:51 +#: report/models.py:150 stock/models.py:73 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:83 @@ -502,25 +418,25 @@ msgstr "" #: templates/js/translated/company.js:724 #: templates/js/translated/company.js:913 #: templates/js/translated/company.js:1165 -#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 -#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1187 +#: templates/js/translated/part.js:1475 templates/js/translated/part.js:1611 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "" -#: InvenTree/models.py:913 build/models.py:218 -#: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:523 company/models.py:840 +#: InvenTree/models.py:772 build/models.py:220 +#: build/templates/build/detail.html:24 common/models.py:138 +#: company/models.py:509 company/models.py:808 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 order/models.py:289 -#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 -#: part/models.py:3674 part/templates/part/category.html:82 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:914 +#: part/models.py:3654 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:155 -#: report/models.py:509 report/models.py:535 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 #: report/templates/report/inventree_build_order_report.html:117 -#: stock/admin.py:55 stock/models.py:78 stock/templates/stock/location.html:125 +#: stock/admin.py:54 stock/models.py:79 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 @@ -529,10 +445,10 @@ msgstr "" #: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 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:2354 -#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1239 +#: templates/js/translated/part.js:1484 templates/js/translated/part.js:1622 +#: templates/js/translated/part.js:1959 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2897 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1706 #: templates/js/translated/purchase_order.js:1849 @@ -545,149 +461,141 @@ msgstr "" msgid "Description" msgstr "" -#: InvenTree/models.py:914 stock/models.py:79 +#: InvenTree/models.py:773 stock/models.py:80 msgid "Description (optional)" msgstr "" -#: InvenTree/models.py:923 -msgid "parent" -msgstr "" - -#: InvenTree/models.py:929 templates/js/translated/part.js:2793 +#: InvenTree/models.py:788 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "" -#: InvenTree/models.py:1035 +#: InvenTree/models.py:918 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:1064 +#: InvenTree/models.py:947 msgid "Barcode Data" msgstr "" -#: InvenTree/models.py:1065 +#: InvenTree/models.py:948 msgid "Third party barcode data" msgstr "" -#: InvenTree/models.py:1071 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:1072 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:1125 +#: InvenTree/models.py:1008 msgid "Existing barcode found" msgstr "" -#: InvenTree/models.py:1168 +#: InvenTree/models.py:1051 msgid "Server Error" msgstr "" -#: InvenTree/models.py:1169 +#: InvenTree/models.py:1052 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:62 part/models.py:4212 +#: InvenTree/serializers.py:63 part/models.py:4192 msgid "Must be a valid number" msgstr "" -#: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:3036 +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3001 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "" -#: InvenTree/serializers.py:102 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:441 +#: InvenTree/serializers.py:442 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:453 +#: InvenTree/serializers.py:454 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:472 +#: InvenTree/serializers.py:473 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:474 +#: InvenTree/serializers.py:475 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:481 +#: InvenTree/serializers.py:482 msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:542 -msgid "Filename" -msgstr "" - -#: InvenTree/serializers.py:576 +#: InvenTree/serializers.py:540 msgid "Invalid value" msgstr "" -#: InvenTree/serializers.py:596 +#: InvenTree/serializers.py:560 msgid "Data File" msgstr "" -#: InvenTree/serializers.py:597 +#: InvenTree/serializers.py:561 msgid "Select data file for upload" msgstr "" -#: InvenTree/serializers.py:614 +#: InvenTree/serializers.py:578 msgid "Unsupported file type" msgstr "" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:584 msgid "File is too large" msgstr "" -#: InvenTree/serializers.py:641 +#: InvenTree/serializers.py:605 msgid "No columns found in file" msgstr "" -#: InvenTree/serializers.py:644 +#: InvenTree/serializers.py:608 msgid "No data rows found in file" msgstr "" -#: InvenTree/serializers.py:757 +#: InvenTree/serializers.py:721 msgid "No data rows provided" msgstr "" -#: InvenTree/serializers.py:760 +#: InvenTree/serializers.py:724 msgid "No data columns supplied" msgstr "" -#: InvenTree/serializers.py:827 +#: InvenTree/serializers.py:791 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "" -#: InvenTree/serializers.py:836 +#: InvenTree/serializers.py:800 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/serializers.py:859 +#: InvenTree/serializers.py:840 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:860 +#: InvenTree/serializers.py:841 msgid "URL of remote image file" msgstr "" -#: InvenTree/serializers.py:878 +#: InvenTree/serializers.py:859 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/status.py:66 part/serializers.py:1178 +#: InvenTree/status.py:66 part/serializers.py:1174 msgid "Background worker check failed" msgstr "" @@ -699,27 +607,27 @@ msgstr "" msgid "InvenTree system health checks failed" msgstr "" -#: InvenTree/templatetags/inventree_extras.py:183 +#: InvenTree/templatetags/inventree_extras.py:184 msgid "Unknown database" msgstr "" -#: InvenTree/validators.py:31 InvenTree/validators.py:33 +#: InvenTree/validators.py:32 InvenTree/validators.py:34 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:39 +#: InvenTree/validators.py:40 msgid "Not a valid currency code" msgstr "" -#: InvenTree/validators.py:121 InvenTree/validators.py:137 +#: InvenTree/validators.py:118 InvenTree/validators.py:134 msgid "Overage value must not be negative" msgstr "" -#: InvenTree/validators.py:139 +#: InvenTree/validators.py:136 msgid "Overage must not exceed 100%" msgstr "" -#: InvenTree/validators.py:145 +#: InvenTree/validators.py:142 msgid "Invalid value for overage" msgstr "" @@ -751,14 +659,14 @@ msgstr "" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: build/api.py:299 part/models.py:4070 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:300 part/models.py:4084 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4064 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2529 #: templates/js/translated/table_filters.js:186 @@ -779,30 +687,30 @@ msgstr "" msgid "Allocated" msgstr "" -#: build/api.py:311 company/models.py:904 company/serializers.py:383 +#: build/api.py:311 company/models.py:872 company/serializers.py:359 #: 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:2561 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:234 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 -#: templates/js/translated/part.js:699 +#: templates/js/translated/part.js:693 templates/js/translated/part.js:695 +#: templates/js/translated/part.js:700 #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:575 msgid "Available" msgstr "" -#: build/models.py:83 build/templates/build/build_base.html:9 +#: build/models.py:85 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_report.html:105 -#: stock/serializers.py:83 templates/email/build_order_completed.html:16 +#: stock/serializers.py:82 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:2892 msgid "Build Order" msgstr "" -#: build/models.py:84 build/templates/build/build_base.html:13 +#: build/models.py:86 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 @@ -813,25 +721,25 @@ msgstr "" msgid "Build Orders" msgstr "" -#: build/models.py:131 +#: build/models.py:133 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:142 order/models.py:240 +#: build/models.py:144 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "" -#: build/models.py:148 +#: build/models.py:150 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:209 +#: build/models.py:211 msgid "Build Order Reference" msgstr "" -#: build/models.py:210 order/models.py:463 order/models.py:928 -#: order/models.py:1325 order/models.py:2056 part/admin.py:419 -#: part/models.py:4105 part/templates/part/upload_bom.html:54 +#: build/models.py:212 order/models.py:463 order/models.py:926 +#: order/models.py:1289 order/models.py:2020 part/admin.py:411 +#: part/models.py:4085 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_purchase_order_report.html:28 #: report/templates/report/inventree_return_order_report.html:26 @@ -845,27 +753,27 @@ msgstr "" msgid "Reference" msgstr "" -#: build/models.py:221 +#: build/models.py:223 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:229 build/templates/build/build_base.html:183 +#: build/models.py:231 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:230 +#: build/models.py:232 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:235 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 -#: order/models.py:1450 order/models.py:1595 order/models.py:1596 -#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 -#: part/models.py:3191 part/models.py:3335 part/models.py:3358 -#: part/models.py:3379 part/models.py:3401 part/models.py:3511 -#: part/models.py:3807 part/models.py:3963 part/models.py:4056 -#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 +#: build/models.py:237 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1026 order/api.py:805 +#: order/models.py:1414 order/models.py:1559 order/models.py:1560 +#: part/api.py:1494 part/api.py:1788 part/models.py:395 part/models.py:3012 +#: part/models.py:3156 part/models.py:3303 part/models.py:3324 +#: part/models.py:3346 part/models.py:3477 part/models.py:3787 +#: part/models.py:3943 part/models.py:4036 part/models.py:4395 +#: part/serializers.py:1120 part/serializers.py:1726 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -876,8 +784,8 @@ msgstr "" #: report/templates/report/inventree_return_order_report.html:24 #: report/templates/report/inventree_sales_order_report.html:27 #: report/templates/report/inventree_stock_location_report.html:102 -#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 -#: stock/serializers.py:818 templates/InvenTree/search.html:82 +#: stock/serializers.py:109 stock/serializers.py:157 stock/serializers.py:423 +#: stock/serializers.py:820 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 @@ -890,8 +798,8 @@ msgstr "" #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 -#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2323 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:1944 templates/js/translated/part.js:2016 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 #: templates/js/translated/purchase_order.js:751 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1848 @@ -909,107 +817,107 @@ msgstr "" msgid "Part" msgstr "" -#: build/models.py:243 +#: build/models.py:245 msgid "Select part to build" msgstr "" -#: build/models.py:248 +#: build/models.py:250 msgid "Sales Order Reference" msgstr "" -#: build/models.py:252 +#: build/models.py:254 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:257 build/serializers.py:1000 +#: build/models.py:259 build/serializers.py:999 #: templates/js/translated/build.js:1731 #: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "" -#: build/models.py:261 +#: build/models.py:263 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:266 +#: build/models.py:268 msgid "Destination Location" msgstr "" -#: build/models.py:270 +#: build/models.py:272 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:274 +#: build/models.py:276 msgid "Build Quantity" msgstr "" -#: build/models.py:277 +#: build/models.py:279 msgid "Number of stock items to build" msgstr "" -#: build/models.py:281 +#: build/models.py:283 msgid "Completed items" msgstr "" -#: build/models.py:283 +#: build/models.py:285 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:287 +#: build/models.py:289 msgid "Build Status" msgstr "" -#: build/models.py:291 +#: build/models.py:293 msgid "Build status code" msgstr "" -#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 -#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 +#: build/models.py:302 build/serializers.py:286 order/serializers.py:580 +#: stock/models.py:838 stock/serializers.py:74 stock/serializers.py:1458 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "" -#: build/models.py:304 build/serializers.py:288 +#: build/models.py:306 build/serializers.py:287 msgid "Batch code for this build output" msgstr "" -#: build/models.py:307 order/models.py:316 order/serializers.py:120 -#: part/models.py:1122 part/templates/part/part_base.html:310 +#: build/models.py:309 order/models.py:316 order/serializers.py:119 +#: part/models.py:1115 part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:338 #: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "" -#: build/models.py:311 +#: build/models.py:313 msgid "Target completion date" msgstr "" -#: build/models.py:312 +#: build/models.py:314 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:315 order/models.py:521 order/models.py:2101 +#: build/models.py:317 order/models.py:521 order/models.py:2065 #: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "" -#: build/models.py:321 +#: build/models.py:323 msgid "completed by" msgstr "" -#: build/models.py:329 templates/js/translated/build.js:2207 +#: build/models.py:331 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "" -#: build/models.py:330 +#: build/models.py:332 msgid "User who issued this build order" msgstr "" -#: build/models.py:338 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:145 +#: build/models.py:340 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:147 #: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:232 part/models.py:1139 +#: order/templates/order/sales_order_base.html:232 part/models.py:1132 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_report.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 @@ -1020,31 +928,36 @@ msgstr "" msgid "Responsible" msgstr "" -#: build/models.py:339 +#: build/models.py:341 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:344 build/templates/build/detail.html:108 +#: build/models.py:346 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:184 -#: part/templates/part/part_base.html:383 stock/models.py:836 +#: part/templates/part/part_base.html:383 stock/models.py:834 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "" -#: build/models.py:349 +#: build/models.py:347 common/models.py:3178 part/models.py:956 +#: stock/models.py:834 +msgid "Link to external URL" +msgstr "" + +#: build/models.py:351 msgid "Build Priority" msgstr "" -#: build/models.py:352 +#: build/models.py:354 msgid "Priority of this build order" msgstr "" -#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: build/models.py:361 common/models.py:131 order/admin.py:18 #: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 #: templates/js/translated/build.js:2144 #: templates/js/translated/purchase_order.js:1710 @@ -1055,65 +968,65 @@ msgstr "" msgid "Project Code" msgstr "" -#: build/models.py:360 +#: build/models.py:362 msgid "Project code for this build order" msgstr "" -#: build/models.py:593 build/models.py:658 +#: build/models.py:595 build/models.py:660 msgid "Failed to offload task to complete build allocations" msgstr "" -#: build/models.py:615 +#: build/models.py:617 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:621 +#: build/models.py:623 msgid "A build order has been completed" msgstr "" -#: build/models.py:847 build/models.py:932 +#: build/models.py:849 build/models.py:934 msgid "No build output specified" msgstr "" -#: build/models.py:850 +#: build/models.py:852 msgid "Build output is already completed" msgstr "" -#: build/models.py:853 +#: build/models.py:855 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 -#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 -#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 -#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 +#: build/models.py:938 build/serializers.py:219 build/serializers.py:268 +#: build/serializers.py:866 order/models.py:559 order/serializers.py:432 +#: order/serializers.py:575 part/serializers.py:1484 part/serializers.py:1884 +#: stock/models.py:677 stock/models.py:1495 stock/serializers.py:603 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:941 build/serializers.py:225 +#: build/models.py:943 build/serializers.py:224 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1001 build/serializers.py:548 +#: build/models.py:1003 build/serializers.py:547 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1352 +#: build/models.py:1344 msgid "Build Order Line Item" msgstr "" -#: build/models.py:1377 +#: build/models.py:1369 msgid "Build object" msgstr "" -#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 -#: build/serializers.py:254 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2539 -#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 -#: part/forms.py:48 part/models.py:3205 part/models.py:4078 +#: build/models.py:1383 build/models.py:1639 build/serializers.py:206 +#: build/serializers.py:253 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2509 +#: order/models.py:1272 order/models.py:1931 order/serializers.py:1327 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3170 part/models.py:4058 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1122,8 +1035,8 @@ msgstr "" #: report/templates/report/inventree_sales_order_report.html:29 #: report/templates/report/inventree_stock_location_report.html:104 #: report/templates/report/inventree_test_report.html:90 -#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 -#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:125 stock/serializers.py:165 stock/serializers.py:594 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1134,8 +1047,8 @@ msgstr "" #: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 #: templates/js/translated/model_renderers.js:236 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:962 +#: templates/js/translated/part.js:1812 templates/js/translated/part.js:3342 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1155,38 +1068,38 @@ msgstr "" msgid "Quantity" msgstr "" -#: build/models.py:1392 +#: build/models.py:1384 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1472 +#: build/models.py:1464 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1481 +#: build/models.py:1473 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1491 order/models.py:1918 +#: build/models.py:1483 order/models.py:1882 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1497 order/models.py:1921 +#: build/models.py:1489 order/models.py:1885 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1503 +#: build/models.py:1495 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1562 +#: build/models.py:1554 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 -#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 -#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: build/models.py:1626 build/serializers.py:846 order/serializers.py:1171 +#: order/serializers.py:1192 stock/models.py:358 stock/serializers.py:91 +#: stock/serializers.py:697 stock/serializers.py:1177 stock/serializers.py:1289 #: stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 @@ -1202,70 +1115,70 @@ msgstr "" msgid "Stock Item" msgstr "" -#: build/models.py:1635 +#: build/models.py:1627 msgid "Source stock item" msgstr "" -#: build/models.py:1648 +#: build/models.py:1640 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1656 +#: build/models.py:1648 msgid "Install into" msgstr "" -#: build/models.py:1657 +#: build/models.py:1649 msgid "Destination stock item" msgstr "" -#: build/serializers.py:157 build/serializers.py:876 +#: build/serializers.py:156 build/serializers.py:875 #: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "" -#: build/serializers.py:169 +#: build/serializers.py:168 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:173 +#: build/serializers.py:172 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:177 +#: build/serializers.py:176 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:188 +#: build/serializers.py:187 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:208 build/serializers.py:255 +#: build/serializers.py:207 build/serializers.py:254 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:276 +#: build/serializers.py:275 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:279 +#: build/serializers.py:278 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:294 order/serializers.py:589 order/serializers.py:1343 -#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:293 order/serializers.py:588 order/serializers.py:1331 +#: stock/serializers.py:614 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:295 +#: build/serializers.py:294 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 -#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 -#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 -#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 -#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 +#: build/serializers.py:299 build/serializers.py:440 build/serializers.py:512 +#: order/serializers.py:564 order/serializers.py:672 order/serializers.py:1656 +#: part/serializers.py:1140 stock/serializers.py:100 stock/serializers.py:625 +#: stock/serializers.py:785 stock/serializers.py:881 stock/serializers.py:1321 +#: stock/serializers.py:1577 stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:1001 #: templates/js/translated/build.js:2372 @@ -1281,54 +1194,54 @@ msgstr "" msgid "Location" msgstr "" -#: build/serializers.py:301 +#: build/serializers.py:300 msgid "Stock location for build output" msgstr "" -#: build/serializers.py:315 +#: build/serializers.py:314 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:316 +#: build/serializers.py:315 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:331 +#: build/serializers.py:330 msgid "Serial numbers must be provided for trackable parts" msgstr "" -#: build/serializers.py:356 stock/api.py:1031 +#: build/serializers.py:355 stock/api.py:1041 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:403 build/serializers.py:465 build/serializers.py:554 +#: build/serializers.py:402 build/serializers.py:464 build/serializers.py:553 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:442 +#: build/serializers.py:441 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:448 +#: build/serializers.py:447 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:449 +#: build/serializers.py:448 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:454 +#: build/serializers.py:453 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:514 +#: build/serializers.py:513 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:520 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:952 -#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 -#: stock/serializers.py:930 stock/serializers.py:1469 +#: build/serializers.py:519 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2044 order/serializers.py:596 stock/admin.py:164 +#: stock/serializers.py:932 stock/serializers.py:1465 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 @@ -1340,188 +1253,188 @@ msgstr "" msgid "Status" msgstr "" -#: build/serializers.py:526 +#: build/serializers.py:525 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:527 +#: build/serializers.py:526 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:611 msgid "Consume Allocated Stock" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:612 msgid "Consume any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:619 +#: build/serializers.py:618 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:620 +#: build/serializers.py:619 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:646 msgid "Not permitted" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:647 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:648 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:679 +#: build/serializers.py:678 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:681 +#: build/serializers.py:680 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:691 +#: build/serializers.py:690 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:696 +#: build/serializers.py:695 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:697 +#: build/serializers.py:696 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:707 templates/js/translated/build.js:315 +#: build/serializers.py:706 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:712 order/serializers.py:301 order/serializers.py:1246 +#: build/serializers.py:711 order/serializers.py:300 order/serializers.py:1234 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:713 +#: build/serializers.py:712 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:723 templates/js/translated/build.js:319 +#: build/serializers.py:722 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:732 templates/js/translated/build.js:303 +#: build/serializers.py:731 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:770 +#: build/serializers.py:769 msgid "Build Line" msgstr "" -#: build/serializers.py:780 +#: build/serializers.py:779 msgid "Build output" msgstr "" -#: build/serializers.py:788 +#: build/serializers.py:787 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:824 +#: build/serializers.py:823 msgid "Build Line Item" msgstr "" -#: build/serializers.py:838 +#: build/serializers.py:837 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:853 stock/serializers.py:1194 +#: build/serializers.py:852 stock/serializers.py:1190 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:901 order/serializers.py:1237 +#: build/serializers.py:900 order/serializers.py:1225 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:907 +#: build/serializers.py:906 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:914 +#: build/serializers.py:913 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:938 order/serializers.py:1489 +#: build/serializers.py:937 order/serializers.py:1477 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:1001 +#: build/serializers.py:1000 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:1009 +#: build/serializers.py:1008 msgid "Exclude Location" msgstr "" -#: build/serializers.py:1010 +#: build/serializers.py:1009 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:1015 +#: build/serializers.py:1014 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:1016 +#: build/serializers.py:1015 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:1021 +#: build/serializers.py:1020 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:1022 +#: build/serializers.py:1021 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:1027 +#: build/serializers.py:1026 msgid "Optional Items" msgstr "" -#: build/serializers.py:1028 +#: build/serializers.py:1027 msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1050 +#: build/serializers.py:1049 msgid "Failed to start auto-allocation task" msgstr "" -#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 -#: stock/api.py:794 +#: build/serializers.py:1139 part/models.py:3953 part/models.py:4387 +#: stock/api.py:804 msgid "BOM Item" msgstr "" -#: build/serializers.py:1149 templates/js/translated/index.js:130 +#: build/serializers.py:1148 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:832 part/serializers.py:1506 +#: build/serializers.py:1153 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:828 part/serializers.py:1502 #: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 -#: templates/js/translated/build.js:2613 templates/js/translated/part.js:709 -#: templates/js/translated/part.js:2148 +#: templates/js/translated/build.js:2613 templates/js/translated/part.js:710 +#: templates/js/translated/part.js:2149 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1159 part/serializers.py:1508 +#: build/serializers.py:1158 part/serializers.py:1504 #: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 +#: build/serializers.py:1163 part/bom.py:172 part/serializers.py:1527 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1929 msgid "Available Stock" @@ -1545,7 +1458,7 @@ msgstr "" #: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 #: order/status_codes.py:44 order/status_codes.py:69 #: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:165 report/models.py:443 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 msgid "Complete" msgstr "" @@ -1675,11 +1588,11 @@ msgstr "" #: build/templates/build/build_base.html:160 #: build/templates/build/detail.html:138 order/models.py:309 -#: order/models.py:1343 order/templates/order/order_base.html:186 +#: order/models.py:1307 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:196 #: report/templates/report/inventree_build_order_report.html:125 -#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1831 #: templates/js/translated/purchase_order.js:1739 #: templates/js/translated/purchase_order.js:2147 #: templates/js/translated/return_order.js:346 @@ -1712,8 +1625,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 -#: order/models.py:1587 order/models.py:1701 order/models.py:1855 +#: build/templates/build/detail.html:101 order/api.py:1463 order/models.py:845 +#: order/models.py:1551 order/models.py:1665 order/models.py:1819 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_report.html:135 @@ -1763,7 +1676,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1479 +#: build/templates/build/detail.html:49 order/models.py:1443 #: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "" @@ -1776,7 +1689,7 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:163 +#: build/templates/build/detail.html:80 stock/admin.py:162 #: stock/templates/stock/item_base.html:162 #: templates/js/translated/build.js:1380 #: templates/js/translated/model_renderers.js:241 @@ -1895,11 +1808,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:436 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -1915,6 +1828,34 @@ msgstr "" msgid "Incomplete Outputs" msgstr "" +#: common/api.py:689 +msgid "Is Link" +msgstr "" + +#: common/api.py:697 +msgid "Is File" +msgstr "" + +#: common/api.py:739 +msgid "User does not have permission to delete this attachment" +msgstr "" + +#: common/currency.py:130 +msgid "Invalid currency code" +msgstr "" + +#: common/currency.py:132 +msgid "Duplicate currency code" +msgstr "" + +#: common/currency.py:137 +msgid "No valid currency codes provided" +msgstr "" + +#: common/currency.py:154 +msgid "No plugin" +msgstr "" + #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1953,1507 +1894,1512 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:71 +#: common/models.py:73 msgid "Updated" msgstr "" -#: common/models.py:72 +#: common/models.py:74 msgid "Timestamp of last update" msgstr "" -#: common/models.py:105 +#: common/models.py:107 msgid "Site URL is locked by configuration" msgstr "" -#: common/models.py:130 +#: common/models.py:132 msgid "Unique project code" msgstr "" -#: common/models.py:137 +#: common/models.py:139 msgid "Project description" msgstr "" -#: common/models.py:146 +#: common/models.py:148 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:766 +#: common/models.py:765 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:770 +#: common/models.py:769 msgid "Settings value" msgstr "" -#: common/models.py:822 +#: common/models.py:821 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:838 +#: common/models.py:837 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:846 +#: common/models.py:845 msgid "Value must be an integer value" msgstr "" -#: common/models.py:883 +#: common/models.py:882 msgid "Key string must be unique" msgstr "" -#: common/models.py:1115 +#: common/models.py:1114 msgid "No group" msgstr "" -#: common/models.py:1158 -msgid "An empty domain is not allowed." -msgstr "" - -#: common/models.py:1160 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "" - -#: common/models.py:1172 -msgid "No plugin" -msgstr "" - -#: common/models.py:1260 +#: common/models.py:1213 msgid "Restart required" msgstr "" -#: common/models.py:1262 +#: common/models.py:1215 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1269 +#: common/models.py:1222 msgid "Pending migrations" msgstr "" -#: common/models.py:1270 +#: common/models.py:1223 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1275 +#: common/models.py:1228 msgid "Server Instance Name" msgstr "" -#: common/models.py:1277 +#: common/models.py:1230 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1281 +#: common/models.py:1234 msgid "Use instance name" msgstr "" -#: common/models.py:1282 +#: common/models.py:1235 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1287 +#: common/models.py:1240 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1288 +#: common/models.py:1241 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1293 company/models.py:108 company/models.py:109 +#: common/models.py:1246 company/models.py:111 company/models.py:112 msgid "Company name" msgstr "" -#: common/models.py:1294 +#: common/models.py:1247 msgid "Internal company name" msgstr "" -#: common/models.py:1298 +#: common/models.py:1251 msgid "Base URL" msgstr "" -#: common/models.py:1299 +#: common/models.py:1252 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1305 +#: common/models.py:1258 msgid "Default Currency" msgstr "" -#: common/models.py:1306 +#: common/models.py:1259 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1312 +#: common/models.py:1265 +msgid "Supported Currencies" +msgstr "" + +#: common/models.py:1266 +msgid "List of supported currency codes" +msgstr "" + +#: common/models.py:1272 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1314 +#: common/models.py:1274 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1317 common/models.py:1373 common/models.py:1386 -#: common/models.py:1394 common/models.py:1403 common/models.py:1412 -#: common/models.py:1620 common/models.py:1642 common/models.py:1757 -#: common/models.py:2076 +#: common/models.py:1277 common/models.py:1333 common/models.py:1346 +#: common/models.py:1354 common/models.py:1363 common/models.py:1372 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:2046 msgid "days" msgstr "" -#: common/models.py:1321 +#: common/models.py:1281 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1322 +#: common/models.py:1282 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1327 +#: common/models.py:1287 msgid "Download from URL" msgstr "" -#: common/models.py:1329 +#: common/models.py:1289 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1335 +#: common/models.py:1295 msgid "Download Size Limit" msgstr "" -#: common/models.py:1336 +#: common/models.py:1296 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1342 +#: common/models.py:1302 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1344 +#: common/models.py:1304 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:1349 +#: common/models.py:1309 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1350 +#: common/models.py:1310 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1355 +#: common/models.py:1315 msgid "Require confirm" msgstr "" -#: common/models.py:1356 +#: common/models.py:1316 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1361 +#: common/models.py:1321 msgid "Tree Depth" msgstr "" -#: common/models.py:1363 +#: common/models.py:1323 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1369 +#: common/models.py:1329 msgid "Update Check Interval" msgstr "" -#: common/models.py:1370 +#: common/models.py:1330 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1376 +#: common/models.py:1336 msgid "Automatic Backup" msgstr "" -#: common/models.py:1377 +#: common/models.py:1337 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1382 +#: common/models.py:1342 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1383 +#: common/models.py:1343 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1389 +#: common/models.py:1349 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1391 +#: common/models.py:1351 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1398 +#: common/models.py:1358 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1400 +#: common/models.py:1360 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1407 +#: common/models.py:1367 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1409 +#: common/models.py:1369 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1416 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1376 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1417 +#: common/models.py:1377 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1422 +#: common/models.py:1382 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1423 +#: common/models.py:1383 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1429 +#: common/models.py:1389 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1430 +#: common/models.py:1390 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1435 +#: common/models.py:1395 msgid "Part Revisions" msgstr "" -#: common/models.py:1436 +#: common/models.py:1396 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1441 +#: common/models.py:1401 msgid "Allow Deletion from Assembly" msgstr "" -#: common/models.py:1442 +#: common/models.py:1402 msgid "Allow deletion of parts which are used in an assembly" msgstr "" -#: common/models.py:1447 +#: common/models.py:1407 msgid "IPN Regex" msgstr "" -#: common/models.py:1448 +#: common/models.py:1408 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1451 +#: common/models.py:1411 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1452 +#: common/models.py:1412 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1457 +#: common/models.py:1417 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1458 +#: common/models.py:1418 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1463 +#: common/models.py:1423 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1464 +#: common/models.py:1424 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1469 +#: common/models.py:1429 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1470 +#: common/models.py:1430 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1475 +#: common/models.py:1435 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1476 +#: common/models.py:1436 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1481 +#: common/models.py:1441 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1482 +#: common/models.py:1442 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1487 part/admin.py:108 part/models.py:3815 -#: report/models.py:293 report/models.py:360 report/serializers.py:90 -#: report/serializers.py:131 stock/serializers.py:228 +#: common/models.py:1447 part/admin.py:108 part/models.py:3795 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:227 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1488 +#: common/models.py:1448 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 +#: common/models.py:1453 part/admin.py:91 part/admin.py:425 part/models.py:1052 #: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" msgstr "" -#: common/models.py:1494 +#: common/models.py:1454 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1499 part/admin.py:95 part/models.py:1065 +#: common/models.py:1459 part/admin.py:95 part/models.py:1058 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1500 +#: common/models.py:1460 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1505 part/admin.py:100 part/models.py:1077 +#: common/models.py:1465 part/admin.py:100 part/models.py:1070 msgid "Purchaseable" msgstr "" -#: common/models.py:1506 +#: common/models.py:1466 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1511 part/admin.py:104 part/models.py:1083 +#: common/models.py:1471 part/admin.py:104 part/models.py:1076 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1512 +#: common/models.py:1472 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1517 part/admin.py:113 part/models.py:1071 +#: common/models.py:1477 part/admin.py:113 part/models.py:1064 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" msgstr "" -#: common/models.py:1518 +#: common/models.py:1478 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1523 part/admin.py:117 part/models.py:1093 +#: common/models.py:1483 part/admin.py:117 part/models.py:1086 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" msgstr "" -#: common/models.py:1524 +#: common/models.py:1484 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1529 +#: common/models.py:1489 msgid "Show Import in Views" msgstr "" -#: common/models.py:1530 +#: common/models.py:1490 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1535 +#: common/models.py:1495 msgid "Show related parts" msgstr "" -#: common/models.py:1536 +#: common/models.py:1496 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1541 +#: common/models.py:1501 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1542 +#: common/models.py:1502 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1547 templates/js/translated/part.js:107 +#: common/models.py:1507 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1549 +#: common/models.py:1509 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1555 +#: common/models.py:1515 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1556 +#: common/models.py:1516 msgid "Format to display the part name" msgstr "" -#: common/models.py:1562 +#: common/models.py:1522 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1563 +#: common/models.py:1523 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1567 +#: common/models.py:1527 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1569 +#: common/models.py:1529 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1575 +#: common/models.py:1535 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1577 +#: common/models.py:1537 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1583 +#: common/models.py:1548 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1585 +#: common/models.py:1550 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1591 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1593 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1599 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1601 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1607 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1609 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1615 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1617 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1630 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1632 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1638 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1640 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1647 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1648 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1653 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1655 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1661 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1662 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1667 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1669 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1675 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1676 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1681 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1682 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1687 +#: common/models.py:1657 msgid "Log Report Errors" msgstr "" -#: common/models.py:1688 +#: common/models.py:1658 msgid "Log errors which occur when generating reports" msgstr "" -#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:301 +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:302 msgid "Page Size" msgstr "" -#: common/models.py:1694 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1699 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1700 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1705 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1707 +#: common/models.py:1677 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1713 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1714 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1719 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1720 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1725 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1727 +#: common/models.py:1697 msgid "Determines default behavior when a stock item is depleted" msgstr "" -#: common/models.py:1733 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1735 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1740 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1741 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1746 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1747 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1752 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1754 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1761 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1762 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1767 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1768 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1773 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1774 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1778 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1779 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1784 +#: common/models.py:1754 msgid "Check BOM when installing items" msgstr "" -#: common/models.py:1786 +#: common/models.py:1756 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "" -#: common/models.py:1792 +#: common/models.py:1762 msgid "Allow Out of Stock Transfer" msgstr "" -#: common/models.py:1794 +#: common/models.py:1764 msgid "Allow stock items which are not in stock to be transferred between stock locations" msgstr "" -#: common/models.py:1800 +#: common/models.py:1770 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1802 +#: common/models.py:1772 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1808 common/models.py:1836 common/models.py:1858 -#: common/models.py:1894 +#: common/models.py:1778 common/models.py:1806 common/models.py:1828 +#: common/models.py:1864 msgid "Require Responsible Owner" msgstr "" -#: common/models.py:1809 common/models.py:1837 common/models.py:1859 -#: common/models.py:1895 +#: common/models.py:1779 common/models.py:1807 common/models.py:1829 +#: common/models.py:1865 msgid "A responsible owner must be assigned to each order" msgstr "" -#: common/models.py:1814 +#: common/models.py:1784 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1816 +#: common/models.py:1786 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:1822 +#: common/models.py:1792 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1823 +#: common/models.py:1793 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1828 +#: common/models.py:1798 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1830 +#: common/models.py:1800 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1842 +#: common/models.py:1812 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1844 +#: common/models.py:1814 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1850 +#: common/models.py:1820 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1852 +#: common/models.py:1822 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1864 +#: common/models.py:1834 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1865 +#: common/models.py:1835 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1870 +#: common/models.py:1840 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1872 +#: common/models.py:1842 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1878 +#: common/models.py:1848 msgid "Mark Shipped Orders as Complete" msgstr "" -#: common/models.py:1880 +#: common/models.py:1850 msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" msgstr "" -#: common/models.py:1886 +#: common/models.py:1856 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1888 +#: common/models.py:1858 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1900 +#: common/models.py:1870 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1902 +#: common/models.py:1872 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1908 +#: common/models.py:1878 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1910 +#: common/models.py:1880 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1917 +#: common/models.py:1887 msgid "Enable password forgot" msgstr "" -#: common/models.py:1918 +#: common/models.py:1888 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1923 +#: common/models.py:1893 msgid "Enable registration" msgstr "" -#: common/models.py:1924 +#: common/models.py:1894 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1929 +#: common/models.py:1899 msgid "Enable SSO" msgstr "" -#: common/models.py:1930 +#: common/models.py:1900 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1935 +#: common/models.py:1905 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1937 +#: common/models.py:1907 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1943 +#: common/models.py:1913 msgid "Email required" msgstr "" -#: common/models.py:1944 +#: common/models.py:1914 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1949 +#: common/models.py:1919 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1951 +#: common/models.py:1921 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1957 +#: common/models.py:1927 msgid "Mail twice" msgstr "" -#: common/models.py:1958 +#: common/models.py:1928 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1963 +#: common/models.py:1933 msgid "Password twice" msgstr "" -#: common/models.py:1964 +#: common/models.py:1934 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1969 +#: common/models.py:1939 msgid "Allowed domains" msgstr "" -#: common/models.py:1971 +#: common/models.py:1941 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1977 +#: common/models.py:1947 msgid "Group on signup" msgstr "" -#: common/models.py:1978 +#: common/models.py:1948 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1983 +#: common/models.py:1953 msgid "Enforce MFA" msgstr "" -#: common/models.py:1984 +#: common/models.py:1954 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1989 +#: common/models.py:1959 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1991 +#: common/models.py:1961 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1999 +#: common/models.py:1969 msgid "Check for plugin updates" msgstr "" -#: common/models.py:2000 +#: common/models.py:1970 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:2006 +#: common/models.py:1976 msgid "Enable URL integration" msgstr "" -#: common/models.py:2007 +#: common/models.py:1977 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:2013 +#: common/models.py:1983 msgid "Enable navigation integration" msgstr "" -#: common/models.py:2014 +#: common/models.py:1984 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:2020 +#: common/models.py:1990 msgid "Enable app integration" msgstr "" -#: common/models.py:2021 +#: common/models.py:1991 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:2027 +#: common/models.py:1997 msgid "Enable schedule integration" msgstr "" -#: common/models.py:2028 +#: common/models.py:1998 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:2034 +#: common/models.py:2004 msgid "Enable event integration" msgstr "" -#: common/models.py:2035 +#: common/models.py:2005 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:2041 +#: common/models.py:2011 msgid "Enable project codes" msgstr "" -#: common/models.py:2042 +#: common/models.py:2012 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:2047 +#: common/models.py:2017 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:2049 +#: common/models.py:2019 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:2055 +#: common/models.py:2025 msgid "Exclude External Locations" msgstr "" -#: common/models.py:2057 +#: common/models.py:2027 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:2063 +#: common/models.py:2033 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:2065 +#: common/models.py:2035 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:2071 +#: common/models.py:2041 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:2073 +#: common/models.py:2043 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:2080 +#: common/models.py:2050 msgid "Display Users full names" msgstr "" -#: common/models.py:2081 +#: common/models.py:2051 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:2086 +#: common/models.py:2056 msgid "Enable Test Station Data" msgstr "" -#: common/models.py:2087 +#: common/models.py:2057 msgid "Enable test station data collection for test results" msgstr "" -#: common/models.py:2099 common/models.py:2509 +#: common/models.py:2069 common/models.py:2479 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2142 +#: common/models.py:2112 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2144 +#: common/models.py:2114 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2150 +#: common/models.py:2120 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2151 +#: common/models.py:2121 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2156 +#: common/models.py:2126 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2157 +#: common/models.py:2127 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2162 +#: common/models.py:2132 msgid "Show latest parts" msgstr "" -#: common/models.py:2163 +#: common/models.py:2133 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2168 +#: common/models.py:2138 msgid "Show invalid BOMs" msgstr "" -#: common/models.py:2169 +#: common/models.py:2139 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2174 +#: common/models.py:2144 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2175 +#: common/models.py:2145 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2180 +#: common/models.py:2150 msgid "Show low stock" msgstr "" -#: common/models.py:2181 +#: common/models.py:2151 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2186 +#: common/models.py:2156 msgid "Show depleted stock" msgstr "" -#: common/models.py:2187 +#: common/models.py:2157 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2192 +#: common/models.py:2162 msgid "Show needed stock" msgstr "" -#: common/models.py:2193 +#: common/models.py:2163 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2198 +#: common/models.py:2168 msgid "Show expired stock" msgstr "" -#: common/models.py:2199 +#: common/models.py:2169 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2204 +#: common/models.py:2174 msgid "Show stale stock" msgstr "" -#: common/models.py:2205 +#: common/models.py:2175 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2210 +#: common/models.py:2180 msgid "Show pending builds" msgstr "" -#: common/models.py:2211 +#: common/models.py:2181 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2216 +#: common/models.py:2186 msgid "Show overdue builds" msgstr "" -#: common/models.py:2217 +#: common/models.py:2187 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2222 +#: common/models.py:2192 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2223 +#: common/models.py:2193 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2228 +#: common/models.py:2198 msgid "Show overdue POs" msgstr "" -#: common/models.py:2229 +#: common/models.py:2199 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2234 +#: common/models.py:2204 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2235 +#: common/models.py:2205 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2240 +#: common/models.py:2210 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2241 +#: common/models.py:2211 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2246 +#: common/models.py:2216 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2247 +#: common/models.py:2217 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2252 +#: common/models.py:2222 msgid "Show News" msgstr "" -#: common/models.py:2253 +#: common/models.py:2223 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2258 +#: common/models.py:2228 msgid "Inline label display" msgstr "" -#: common/models.py:2260 +#: common/models.py:2230 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2266 +#: common/models.py:2236 msgid "Default label printer" msgstr "" -#: common/models.py:2268 +#: common/models.py:2238 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2274 +#: common/models.py:2244 msgid "Inline report display" msgstr "" -#: common/models.py:2276 +#: common/models.py:2246 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2282 +#: common/models.py:2252 msgid "Search Parts" msgstr "" -#: common/models.py:2283 +#: common/models.py:2253 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2288 +#: common/models.py:2258 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2289 +#: common/models.py:2259 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2294 +#: common/models.py:2264 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2295 +#: common/models.py:2265 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2300 +#: common/models.py:2270 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2301 +#: common/models.py:2271 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2306 +#: common/models.py:2276 msgid "Search Categories" msgstr "" -#: common/models.py:2307 +#: common/models.py:2277 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2312 +#: common/models.py:2282 msgid "Search Stock" msgstr "" -#: common/models.py:2313 +#: common/models.py:2283 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2318 +#: common/models.py:2288 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2320 +#: common/models.py:2290 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2326 +#: common/models.py:2296 msgid "Search Locations" msgstr "" -#: common/models.py:2327 +#: common/models.py:2297 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2332 +#: common/models.py:2302 msgid "Search Companies" msgstr "" -#: common/models.py:2333 +#: common/models.py:2303 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2338 +#: common/models.py:2308 msgid "Search Build Orders" msgstr "" -#: common/models.py:2339 +#: common/models.py:2309 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2344 +#: common/models.py:2314 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2345 +#: common/models.py:2315 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2350 +#: common/models.py:2320 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2352 +#: common/models.py:2322 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2358 +#: common/models.py:2328 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2359 +#: common/models.py:2329 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2364 +#: common/models.py:2334 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2366 +#: common/models.py:2336 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2372 +#: common/models.py:2342 msgid "Search Return Orders" msgstr "" -#: common/models.py:2373 +#: common/models.py:2343 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2378 +#: common/models.py:2348 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2380 +#: common/models.py:2350 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2386 +#: common/models.py:2356 msgid "Search Preview Results" msgstr "" -#: common/models.py:2388 +#: common/models.py:2358 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2394 +#: common/models.py:2364 msgid "Regex Search" msgstr "" -#: common/models.py:2395 +#: common/models.py:2365 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2400 +#: common/models.py:2370 msgid "Whole Word Search" msgstr "" -#: common/models.py:2401 +#: common/models.py:2371 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2406 +#: common/models.py:2376 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2407 +#: common/models.py:2377 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2412 +#: common/models.py:2382 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2413 +#: common/models.py:2383 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2418 +#: common/models.py:2388 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2419 +#: common/models.py:2389 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2424 +#: common/models.py:2394 msgid "Date Format" msgstr "" -#: common/models.py:2425 +#: common/models.py:2395 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2438 part/templates/part/detail.html:41 +#: common/models.py:2408 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2439 +#: common/models.py:2409 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2444 part/templates/part/detail.html:62 +#: common/models.py:2414 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2446 +#: common/models.py:2416 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2452 +#: common/models.py:2422 msgid "Table String Length" msgstr "" -#: common/models.py:2454 +#: common/models.py:2424 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2460 +#: common/models.py:2430 msgid "Default part label template" msgstr "" -#: common/models.py:2461 +#: common/models.py:2431 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2466 +#: common/models.py:2436 msgid "Default stock item template" msgstr "" -#: common/models.py:2468 +#: common/models.py:2438 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2474 +#: common/models.py:2444 msgid "Default stock location label template" msgstr "" -#: common/models.py:2476 +#: common/models.py:2446 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2482 +#: common/models.py:2452 msgid "Default build line label template" msgstr "" -#: common/models.py:2484 +#: common/models.py:2454 msgid "The build line label template to be automatically selected" msgstr "" -#: common/models.py:2490 +#: common/models.py:2460 msgid "Receive error reports" msgstr "" -#: common/models.py:2491 +#: common/models.py:2461 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2496 +#: common/models.py:2466 msgid "Last used printing machines" msgstr "" -#: common/models.py:2497 +#: common/models.py:2467 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2540 +#: common/models.py:2487 common/models.py:2488 common/models.py:2636 +#: common/models.py:2637 common/models.py:2882 common/models.py:2883 +#: common/models.py:3193 common/models.py:3194 part/models.py:3193 +#: part/models.py:3280 part/models.py:3353 part/models.py:3381 +#: plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "" + +#: common/models.py:2510 msgid "Price break quantity" msgstr "" -#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1382 order/models.py:2301 -#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 +#: common/models.py:2517 company/serializers.py:472 order/admin.py:42 +#: order/models.py:1346 order/models.py:2265 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1886 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:740 msgid "Price" msgstr "" -#: common/models.py:2548 +#: common/models.py:2518 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2719 common/models.py:2904 +#: common/models.py:2613 common/models.py:2798 msgid "Endpoint" msgstr "" -#: common/models.py:2720 +#: common/models.py:2614 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2730 +#: common/models.py:2624 msgid "Name for this webhook" msgstr "" -#: common/models.py:2734 company/models.py:160 company/models.py:814 -#: machine/models.py:39 part/admin.py:88 part/models.py:1088 -#: plugin/models.py:65 templates/js/translated/company.js:523 +#: common/models.py:2628 company/models.py:163 company/models.py:782 +#: machine/models.py:39 part/admin.py:88 part/models.py:1081 +#: plugin/models.py:66 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3463,101 +3409,118 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2734 +#: common/models.py:2628 msgid "Is this webhook active" msgstr "" -#: common/models.py:2750 users/models.py:159 +#: common/models.py:2644 users/models.py:159 msgid "Token" msgstr "" -#: common/models.py:2751 +#: common/models.py:2645 msgid "Token for access" msgstr "" -#: common/models.py:2759 +#: common/models.py:2653 msgid "Secret" msgstr "" -#: common/models.py:2760 +#: common/models.py:2654 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2868 +#: common/models.py:2762 msgid "Message ID" msgstr "" -#: common/models.py:2869 +#: common/models.py:2763 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2877 +#: common/models.py:2771 msgid "Host" msgstr "" -#: common/models.py:2878 +#: common/models.py:2772 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2886 +#: common/models.py:2780 msgid "Header" msgstr "" -#: common/models.py:2887 +#: common/models.py:2781 msgid "Header of this message" msgstr "" -#: common/models.py:2894 +#: common/models.py:2788 msgid "Body" msgstr "" -#: common/models.py:2895 +#: common/models.py:2789 msgid "Body of this message" msgstr "" -#: common/models.py:2905 +#: common/models.py:2799 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2910 +#: common/models.py:2804 msgid "Worked on" msgstr "" -#: common/models.py:2911 +#: common/models.py:2805 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:3037 +#: common/models.py:2931 msgid "Id" msgstr "" -#: common/models.py:3039 templates/js/translated/company.js:965 +#: common/models.py:2933 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:3043 templates/js/translated/news.js:60 +#: common/models.py:2935 common/models.py:3177 company/models.py:149 +#: company/models.py:440 company/models.py:500 company/models.py:799 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +#: part/admin.py:55 part/models.py:955 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "" + +#: common/models.py:2937 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:3045 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2939 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:3047 templates/js/translated/news.js:52 +#: common/models.py:2941 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Read" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Was this news item read?" msgstr "" -#: common/models.py:3067 company/models.py:156 part/models.py:972 +#: common/models.py:2961 company/models.py:159 part/models.py:965 #: 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.html:35 @@ -3567,34 +3530,89 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:3067 +#: common/models.py:2961 msgid "Image file" msgstr "" -#: common/models.py:3109 +#: common/models.py:2973 common/models.py:3161 +msgid "Target model type for this image" +msgstr "" + +#: common/models.py:2977 +msgid "Target model ID for this image" +msgstr "" + +#: common/models.py:3018 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3128 +#: common/models.py:3037 msgid "Unit name" msgstr "" -#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3044 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3136 +#: common/models.py:3045 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3052 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3144 +#: common/models.py:3053 msgid "Unit definition" msgstr "" +#: common/models.py:3111 common/models.py:3168 stock/models.py:2426 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "" + +#: common/models.py:3123 +msgid "Missing file" +msgstr "" + +#: common/models.py:3124 +msgid "Missing external link" +msgstr "" + +#: common/models.py:3169 +msgid "Select file to attach" +msgstr "" + +#: common/models.py:3184 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "" + +#: common/models.py:3185 +msgid "Attachment comment" +msgstr "" + +#: common/models.py:3201 +msgid "Upload date" +msgstr "" + +#: common/models.py:3202 +msgid "Date the file was uploaded" +msgstr "" + +#: common/models.py:3206 +msgid "File size" +msgstr "" + +#: common/models.py:3206 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3244 common/serializers.py:553 +msgid "Invalid model type specified for attachment" +msgstr "" + #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" @@ -3629,66 +3647,103 @@ msgstr "" msgid "Error raised by plugin" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:371 msgid "Is Running" msgstr "" -#: common/serializers.py:372 +#: common/serializers.py:377 msgid "Pending Tasks" msgstr "" -#: common/serializers.py:378 +#: common/serializers.py:383 msgid "Scheduled Tasks" msgstr "" -#: common/serializers.py:384 +#: common/serializers.py:389 msgid "Failed Tasks" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Task ID" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Unique task ID" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock time" msgstr "" -#: common/serializers.py:403 +#: common/serializers.py:408 msgid "Task name" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function name" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Arguments" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Task arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Keyword Arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Task keyword arguments" msgstr "" +#: common/serializers.py:525 +msgid "Filename" +msgstr "" + +#: common/serializers.py:532 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: common/serializers.py:559 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "" + +#: common/validators.py:33 +msgid "No attachment model type provided" +msgstr "" + +#: common/validators.py:39 +msgid "Invalid attachment model type" +msgstr "" + +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "" + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +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 @@ -3727,210 +3782,222 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/api.py:164 +#: company/api.py:144 msgid "Part is Active" msgstr "" -#: company/api.py:168 +#: company/api.py:148 msgid "Manufacturer is Active" msgstr "" -#: company/api.py:317 +#: company/api.py:281 msgid "Supplier Part is Active" msgstr "" -#: company/api.py:321 +#: company/api.py:285 msgid "Internal Part is Active" msgstr "" -#: company/api.py:325 +#: company/api.py:289 msgid "Supplier is Active" msgstr "" -#: company/models.py:114 +#: company/models.py:100 company/models.py:365 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:822 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "" + +#: company/models.py:117 msgid "Company description" msgstr "" -#: company/models.py:115 +#: company/models.py:118 msgid "Description of the company" msgstr "" -#: company/models.py:120 company/templates/company/company_base.html:106 +#: company/models.py:123 company/templates/company/company_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:532 msgid "Website" msgstr "" -#: company/models.py:120 +#: company/models.py:123 msgid "Company website URL" msgstr "" -#: company/models.py:125 +#: company/models.py:128 msgid "Phone number" msgstr "" -#: company/models.py:127 +#: company/models.py:130 msgid "Contact phone number" msgstr "" -#: company/models.py:134 +#: company/models.py:137 msgid "Contact email address" msgstr "" -#: company/models.py:139 company/templates/company/company_base.html:145 +#: company/models.py:142 company/templates/company/company_base.html:145 #: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "" -#: company/models.py:141 +#: company/models.py:144 msgid "Point of contact" msgstr "" -#: company/models.py:147 +#: company/models.py:150 msgid "Link to external company information" msgstr "" -#: company/models.py:160 +#: company/models.py:163 msgid "Is this company active?" msgstr "" -#: company/models.py:165 +#: company/models.py:168 msgid "is customer" msgstr "" -#: company/models.py:166 +#: company/models.py:169 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:171 +#: company/models.py:174 msgid "is supplier" msgstr "" -#: company/models.py:172 +#: company/models.py:175 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:177 +#: company/models.py:180 msgid "is manufacturer" msgstr "" -#: company/models.py:178 +#: company/models.py:181 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:186 +#: company/models.py:189 msgid "Default currency used for this company" msgstr "" -#: company/models.py:273 company/models.py:382 -#: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:812 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 -msgid "Company" -msgstr "" - -#: company/models.py:383 +#: company/models.py:366 msgid "Select company" msgstr "" -#: company/models.py:388 +#: company/models.py:371 msgid "Address title" msgstr "" -#: company/models.py:389 +#: company/models.py:372 msgid "Title describing the address entry" msgstr "" -#: company/models.py:395 +#: company/models.py:378 msgid "Primary address" msgstr "" -#: company/models.py:396 +#: company/models.py:379 msgid "Set as primary address" msgstr "" -#: company/models.py:401 templates/js/translated/company.js:914 +#: company/models.py:384 templates/js/translated/company.js:914 #: templates/js/translated/company.js:971 msgid "Line 1" msgstr "" -#: company/models.py:402 +#: company/models.py:385 msgid "Address line 1" msgstr "" -#: company/models.py:408 templates/js/translated/company.js:915 +#: company/models.py:391 templates/js/translated/company.js:915 #: templates/js/translated/company.js:977 msgid "Line 2" msgstr "" -#: company/models.py:409 +#: company/models.py:392 msgid "Address line 2" msgstr "" -#: company/models.py:415 company/models.py:416 +#: company/models.py:398 company/models.py:399 #: templates/js/translated/company.js:983 msgid "Postal code" msgstr "" -#: company/models.py:422 +#: company/models.py:405 msgid "City/Region" msgstr "" -#: company/models.py:423 +#: company/models.py:406 msgid "Postal code city/region" msgstr "" -#: company/models.py:429 +#: company/models.py:412 msgid "State/Province" msgstr "" -#: company/models.py:430 +#: company/models.py:413 msgid "State or province" msgstr "" -#: company/models.py:436 templates/js/translated/company.js:1001 +#: company/models.py:419 templates/js/translated/company.js:1001 msgid "Country" msgstr "" -#: company/models.py:437 +#: company/models.py:420 msgid "Address country" msgstr "" -#: company/models.py:443 +#: company/models.py:426 msgid "Courier shipping notes" msgstr "" -#: company/models.py:444 +#: company/models.py:427 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:450 +#: company/models.py:433 msgid "Internal shipping notes" msgstr "" -#: company/models.py:451 +#: company/models.py:434 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:458 +#: company/models.py:441 msgid "Link to address information (external)" msgstr "" -#: company/models.py:489 company/models.py:792 stock/models.py:768 -#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 +#: company/models.py:463 company/models.py:574 company/models.py:792 +#: 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:475 company/models.py:760 stock/models.py:766 +#: stock/serializers.py:422 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:491 company/models.py:794 +#: company/models.py:477 company/models.py:762 msgid "Select part" msgstr "" -#: company/models.py:500 company/templates/company/company_base.html:82 +#: company/models.py:486 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:530 +#: company/templates/company/supplier_part.html:145 part/serializers.py:525 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -3940,152 +4007,154 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:501 +#: company/models.py:487 msgid "Select manufacturer" msgstr "" -#: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:540 +#: company/models.py:493 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:535 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 -#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1801 #: templates/js/translated/purchase_order.js:1851 #: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "" -#: company/models.py:508 +#: company/models.py:494 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:515 +#: company/models.py:501 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:524 +#: company/models.py:510 msgid "Manufacturer part description" msgstr "" -#: company/models.py:581 company/models.py:608 company/models.py:824 -#: 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:615 +#: company/models.py:581 msgid "Parameter name" msgstr "" -#: company/models.py:621 report/templates/report/inventree_test_report.html:104 -#: stock/models.py:2429 templates/js/translated/company.js:1166 -#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 +#: company/models.py:587 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2418 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1493 #: templates/js/translated/stock.js:1522 msgid "Value" msgstr "" -#: company/models.py:622 +#: company/models.py:588 msgid "Parameter value" msgstr "" -#: company/models.py:629 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1052 part/models.py:3666 +#: company/models.py:595 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1045 part/models.py:3646 #: part/templates/part/part_base.html:284 -#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1512 +#: templates/js/translated/part.js:1616 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:630 +#: company/models.py:596 msgid "Parameter units" msgstr "" -#: company/models.py:732 +#: company/models.py:648 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:777 stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "" + +#: company/models.py:700 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:739 +#: company/models.py:707 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:753 +#: company/models.py:721 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/models.py:770 company/templates/company/company_base.html:87 #: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:514 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:509 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:511 -#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1769 #: templates/js/translated/pricing.js:498 #: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "" -#: company/models.py:803 +#: company/models.py:771 msgid "Select supplier" msgstr "" -#: company/models.py:809 part/serializers.py:525 +#: company/models.py:777 part/serializers.py:520 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:815 +#: company/models.py:783 msgid "Is this supplier part active?" msgstr "" -#: company/models.py:825 +#: company/models.py:793 msgid "Select manufacturer part" msgstr "" -#: company/models.py:832 +#: company/models.py:800 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:841 +#: company/models.py:809 msgid "Supplier part description" msgstr "" -#: company/models.py:848 company/templates/company/supplier_part.html:187 -#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 +#: company/models.py:816 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4093 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_purchase_order_report.html:32 #: report/templates/report/inventree_return_order_report.html:27 #: report/templates/report/inventree_sales_order_report.html:32 #: report/templates/report/inventree_stock_location_report.html:105 -#: stock/serializers.py:708 +#: stock/serializers.py:710 msgid "Note" msgstr "" -#: company/models.py:857 part/models.py:2010 +#: company/models.py:825 part/models.py:2003 msgid "base cost" msgstr "" -#: company/models.py:858 part/models.py:2011 +#: company/models.py:826 part/models.py:2004 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:865 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 +#: company/models.py:833 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:797 stock/serializers.py:1475 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 #: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "" -#: company/models.py:866 +#: company/models.py:834 msgid "Part packaging" msgstr "" -#: company/models.py:871 templates/js/translated/company.js:1651 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: company/models.py:839 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:311 #: templates/js/translated/purchase_order.js:841 #: templates/js/translated/purchase_order.js:1103 @@ -4094,35 +4163,35 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:873 +#: company/models.py:841 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:892 part/models.py:2017 +#: company/models.py:860 part/models.py:2010 msgid "multiple" msgstr "" -#: company/models.py:893 +#: company/models.py:861 msgid "Order multiple" msgstr "" -#: company/models.py:905 +#: company/models.py:873 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:911 +#: company/models.py:879 msgid "Availability Updated" msgstr "" -#: company/models.py:912 +#: company/models.py:880 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:163 +#: company/serializers.py:161 msgid "Default currency used for this supplier" msgstr "" -#: company/serializers.py:381 part/admin.py:126 +#: company/serializers.py:357 part/admin.py:126 #: part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1689 #: templates/js/translated/table_filters.js:355 @@ -4134,7 +4203,7 @@ msgstr "" #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 #: templates/js/translated/model_renderers.js:312 -#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +#: templates/js/translated/part.js:815 templates/js/translated/part.js:1219 msgid "Inactive" msgstr "" @@ -4173,7 +4242,7 @@ msgstr "" #: report/templates/report/inventree_purchase_order_report.html:40 #: report/templates/report/inventree_sales_order_report.html:40 #: report/templates/report/inventree_test_report.html:84 -#: report/templates/report/inventree_test_report.html:163 +#: report/templates/report/inventree_test_report.html:162 msgid "Part image" msgstr "" @@ -4192,10 +4261,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:92 order/models.py:940 -#: order/models.py:2068 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:148 stock/models.py:821 -#: stock/models.py:822 stock/serializers.py:1229 +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2032 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:819 +#: stock/models.py:820 stock/serializers.py:1225 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 @@ -4406,7 +4475,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:836 +#: part/admin.py:122 part/serializers.py:832 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4426,8 +4495,8 @@ msgstr "" msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:206 -#: templates/js/translated/part.js:1422 +#: company/templates/company/manufacturer_part.html:196 +#: templates/js/translated/part.js:1423 msgid "Add Parameter" msgstr "" @@ -4455,15 +4524,6 @@ msgstr "" msgid "Addresses" msgstr "" -#: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:452 -#: stock/models.py:779 stock/templates/stock/item_base.html:233 -#: templates/js/translated/company.js:1600 -#: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2280 -msgid "Supplier Part" -msgstr "" - #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1526 msgid "Supplier part actions" @@ -4506,8 +4566,8 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:524 -#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: part/bom.py:311 part/serializers.py:519 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1787 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1850 #: templates/js/translated/purchase_order.js:2028 @@ -4519,12 +4579,12 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:207 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" @@ -4556,15 +4616,15 @@ msgid "Update Part Availability" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:835 part/stocktake.py:223 +#: part/serializers.py:831 part/stocktake.py:224 #: part/templates/part/category.html:183 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:916 stock/serializers.py:1080 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:918 stock/serializers.py:1091 #: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:191 #: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1061 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:206 msgid "Stock Items" @@ -4591,10 +4651,6 @@ msgstr "" 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 "" @@ -4615,7 +4671,7 @@ msgstr "" msgid "Connected" msgstr "" -#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: machine/machine_types/label_printer.py:235 order/api.py:1467 #: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "" @@ -4704,7 +4760,7 @@ msgstr "" msgid "Config type" msgstr "" -#: order/admin.py:30 order/models.py:89 +#: order/admin.py:30 order/models.py:90 #: report/templates/report/inventree_purchase_order_report.html:31 #: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 @@ -4713,30 +4769,30 @@ msgstr "" msgid "Total Price" msgstr "" -#: order/api.py:161 order/serializers.py:91 +#: order/api.py:157 order/serializers.py:90 #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "" -#: order/api.py:165 templates/js/translated/table_filters.js:194 +#: order/api.py:161 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "" -#: order/api.py:240 +#: order/api.py:236 msgid "No matching purchase order found" msgstr "" -#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 -#: order/models.py:1586 order/models.py:1700 order/models.py:1854 -#: order/models.py:2267 order/models.py:2318 +#: order/api.py:435 order/api.py:801 order/models.py:1395 order/models.py:1504 +#: order/models.py:1550 order/models.py:1664 order/models.py:1818 +#: order/models.py:2231 order/models.py:2282 #: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "" -#: order/api.py:441 order/api.py:838 +#: order/api.py:439 order/api.py:822 msgid "Order Complete" msgstr "" @@ -4744,13 +4800,13 @@ msgstr "" msgid "Order Pending" msgstr "" -#: order/api.py:1509 order/models.py:380 order/models.py:1432 -#: order/models.py:1541 order/templates/order/order_base.html:9 +#: order/api.py:1461 order/models.py:380 order/models.py:1396 +#: order/models.py:1505 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_purchase_order_report.html:14 -#: stock/serializers.py:119 stock/templates/stock/item_base.html:176 +#: stock/serializers.py:118 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/part.js:1746 templates/js/translated/pricing.js:804 #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1673 @@ -4758,8 +4814,8 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1513 order/models.py:2017 order/models.py:2268 -#: order/models.py:2319 order/templates/order/return_order_base.html:9 +#: order/api.py:1465 order/models.py:1981 order/models.py:2232 +#: order/models.py:2283 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report.html:13 #: templates/js/translated/return_order.js:280 @@ -4767,15 +4823,15 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/models.py:90 +#: order/models.py:91 msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:71 +#: order/models.py:96 order/serializers.py:70 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:72 +#: order/models.py:99 order/serializers.py:71 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -4791,7 +4847,7 @@ msgstr "" msgid "Select project code for this order" msgstr "" -#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 msgid "Link to external page" msgstr "" @@ -4815,11 +4871,11 @@ msgstr "" msgid "Company address for this order" msgstr "" -#: order/models.py:464 order/models.py:929 +#: order/models.py:464 order/models.py:927 msgid "Order reference" msgstr "" -#: order/models.py:472 order/models.py:953 +#: order/models.py:472 order/models.py:951 msgid "Purchase order status" msgstr "" @@ -4840,15 +4896,15 @@ msgstr "" msgid "received by" msgstr "" -#: order/models.py:514 order/models.py:2094 +#: order/models.py:514 order/models.py:2058 msgid "Issue Date" msgstr "" -#: order/models.py:515 order/models.py:2095 +#: order/models.py:515 order/models.py:2059 msgid "Date order was issued" msgstr "" -#: order/models.py:522 order/models.py:2102 +#: order/models.py:522 order/models.py:2066 msgid "Date order was completed" msgstr "" @@ -4860,94 +4916,94 @@ msgstr "" msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:941 +#: order/models.py:939 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:964 order/models.py:2087 +#: order/models.py:962 order/models.py:2051 msgid "Customer Reference " msgstr "" -#: order/models.py:965 order/models.py:2088 +#: order/models.py:963 order/models.py:2052 msgid "Customer order reference code" msgstr "" -#: order/models.py:969 order/models.py:1707 +#: order/models.py:967 order/models.py:1671 #: templates/js/translated/sales_order.js:879 #: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "" -#: order/models.py:978 +#: order/models.py:976 msgid "shipped by" msgstr "" -#: order/models.py:1027 +#: order/models.py:1025 msgid "Order is already complete" msgstr "" -#: order/models.py:1030 +#: order/models.py:1028 msgid "Order is already cancelled" msgstr "" -#: order/models.py:1034 +#: order/models.py:1032 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:1038 +#: order/models.py:1036 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:1043 +#: order/models.py:1041 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1309 +#: order/models.py:1273 msgid "Item quantity" msgstr "" -#: order/models.py:1326 +#: order/models.py:1290 msgid "Line item reference" msgstr "" -#: order/models.py:1333 +#: order/models.py:1297 msgid "Line item notes" msgstr "" -#: order/models.py:1345 +#: order/models.py:1309 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1366 +#: order/models.py:1330 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1372 +#: order/models.py:1336 msgid "Context" msgstr "" -#: order/models.py:1373 +#: order/models.py:1337 msgid "Additional context for this line" msgstr "" -#: order/models.py:1383 +#: order/models.py:1347 msgid "Unit price" msgstr "" -#: order/models.py:1416 +#: order/models.py:1380 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1423 +#: order/models.py:1387 msgid "deleted" msgstr "" -#: order/models.py:1451 +#: order/models.py:1415 msgid "Supplier part" msgstr "" -#: order/models.py:1458 order/templates/order/order_base.html:196 -#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: order/models.py:1422 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1870 templates/js/translated/part.js:1902 #: templates/js/translated/purchase_order.js:1306 #: templates/js/translated/purchase_order.js:2169 #: templates/js/translated/return_order.js:763 @@ -4956,196 +5012,196 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1459 +#: order/models.py:1423 msgid "Number of items received" msgstr "" -#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 +#: order/models.py:1431 stock/models.py:938 stock/serializers.py:556 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "" -#: order/models.py:1468 +#: order/models.py:1432 msgid "Unit purchase price" msgstr "" -#: order/models.py:1483 +#: order/models.py:1447 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1574 +#: order/models.py:1538 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1579 +#: order/models.py:1543 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1605 part/templates/part/part_pricing.html:107 +#: order/models.py:1569 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:1606 +#: order/models.py:1570 msgid "Unit sale price" msgstr "" -#: order/models.py:1615 order/status_codes.py:43 +#: order/models.py:1579 order/status_codes.py:43 #: templates/js/translated/sales_order.js:1559 #: templates/js/translated/sales_order.js:1680 #: templates/js/translated/sales_order.js:1993 msgid "Shipped" msgstr "" -#: order/models.py:1616 +#: order/models.py:1580 msgid "Shipped quantity" msgstr "" -#: order/models.py:1708 +#: order/models.py:1672 msgid "Date of shipment" msgstr "" -#: order/models.py:1714 templates/js/translated/sales_order.js:1072 +#: order/models.py:1678 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "" -#: order/models.py:1715 +#: order/models.py:1679 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1723 +#: order/models.py:1687 msgid "Checked By" msgstr "" -#: order/models.py:1724 +#: order/models.py:1688 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 -#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 +#: order/models.py:1695 order/models.py:1908 order/serializers.py:1342 +#: order/serializers.py:1452 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "" -#: order/models.py:1732 +#: order/models.py:1696 msgid "Shipment number" msgstr "" -#: order/models.py:1740 +#: order/models.py:1704 msgid "Tracking Number" msgstr "" -#: order/models.py:1741 +#: order/models.py:1705 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1748 +#: order/models.py:1712 msgid "Invoice Number" msgstr "" -#: order/models.py:1749 +#: order/models.py:1713 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1769 +#: order/models.py:1733 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1772 +#: order/models.py:1736 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1890 order/models.py:1892 +#: order/models.py:1854 order/models.py:1856 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1899 +#: order/models.py:1863 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1902 +#: order/models.py:1866 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1905 +#: order/models.py:1869 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1924 order/serializers.py:1231 +#: order/models.py:1888 order/serializers.py:1219 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1927 +#: order/models.py:1891 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1928 plugin/base/barcodes/api.py:481 +#: order/models.py:1892 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1936 +#: order/models.py:1900 msgid "Line" msgstr "" -#: order/models.py:1945 +#: order/models.py:1909 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1958 order/models.py:2275 +#: order/models.py:1922 order/models.py:2239 #: templates/js/translated/return_order.js:721 msgid "Item" msgstr "" -#: order/models.py:1959 +#: order/models.py:1923 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1968 +#: order/models.py:1932 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:2057 +#: order/models.py:2021 msgid "Return Order reference" msgstr "" -#: order/models.py:2069 +#: order/models.py:2033 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:2081 +#: order/models.py:2045 msgid "Return order status" msgstr "" -#: order/models.py:2260 +#: order/models.py:2224 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2276 +#: order/models.py:2240 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2282 +#: order/models.py:2246 msgid "Received Date" msgstr "" -#: order/models.py:2283 +#: order/models.py:2247 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2294 templates/js/translated/return_order.js:732 +#: order/models.py:2258 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2295 +#: order/models.py:2259 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2302 +#: order/models.py:2266 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/serializers.py:79 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_purchase_order_report.html:22 @@ -5154,163 +5210,163 @@ msgstr "" msgid "Line Items" msgstr "" -#: order/serializers.py:84 +#: order/serializers.py:83 msgid "Completed Lines" msgstr "" -#: order/serializers.py:287 +#: order/serializers.py:286 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:302 order/serializers.py:1247 +#: order/serializers.py:301 order/serializers.py:1235 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:312 order/serializers.py:1257 +#: order/serializers.py:311 order/serializers.py:1245 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:440 +#: order/serializers.py:439 msgid "Order is not open" msgstr "" -#: order/serializers.py:461 +#: order/serializers.py:460 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:463 +#: order/serializers.py:462 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:473 +#: order/serializers.py:472 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:478 msgid "Merge Items" msgstr "" -#: order/serializers.py:481 +#: order/serializers.py:480 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:499 +#: order/serializers.py:498 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:502 +#: order/serializers.py:501 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:510 +#: order/serializers.py:509 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:511 +#: order/serializers.py:510 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:550 order/serializers.py:1325 +#: order/serializers.py:549 order/serializers.py:1313 msgid "Line Item" msgstr "" -#: order/serializers.py:556 +#: order/serializers.py:555 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1657 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:581 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:589 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:601 templates/js/translated/barcode.js:52 +#: order/serializers.py:600 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:602 +#: order/serializers.py:601 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:618 +#: order/serializers.py:617 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:642 +#: order/serializers.py:641 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:690 order/serializers.py:1696 +#: order/serializers.py:689 order/serializers.py:1673 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:706 +#: order/serializers.py:705 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:717 +#: order/serializers.py:716 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1074 +#: order/serializers.py:1062 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1134 +#: order/serializers.py:1122 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1195 order/serializers.py:1334 +#: order/serializers.py:1183 order/serializers.py:1322 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1214 +#: order/serializers.py:1202 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1344 +#: order/serializers.py:1332 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1366 order/serializers.py:1472 +#: order/serializers.py:1354 order/serializers.py:1460 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1369 order/serializers.py:1475 +#: order/serializers.py:1357 order/serializers.py:1463 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1416 +#: order/serializers.py:1404 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1423 +#: order/serializers.py:1411 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1650 +#: order/serializers.py:1627 msgid "Return order line item" msgstr "" -#: order/serializers.py:1656 +#: order/serializers.py:1633 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1659 +#: order/serializers.py:1636 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1688 +#: order/serializers.py:1665 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1766 +#: order/serializers.py:1743 msgid "Line price currency" msgstr "" @@ -5640,7 +5696,7 @@ msgstr "" #: 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/part.js:1073 #: templates/js/translated/purchase_order.js:1752 #: templates/js/translated/return_order.js:380 #: templates/js/translated/sales_order.js:891 @@ -5736,34 +5792,34 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:406 part/models.py:3964 part/stocktake.py:218 -#: stock/admin.py:153 +#: part/admin.py:39 part/admin.py:398 part/models.py:3944 part/stocktake.py:219 +#: stock/admin.py:152 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 -#: stock/admin.py:157 +#: part/admin.py:41 part/admin.py:405 part/models.py:3945 part/stocktake.py:220 +#: stock/admin.py:156 msgid "Part Name" msgstr "" -#: part/admin.py:45 part/stocktake.py:220 +#: part/admin.py:45 part/stocktake.py:221 msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:940 part/templates/part/part_base.html:269 #: report/templates/report/inventree_stock_location_report.html:103 -#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/part.js:1227 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 -#: report/models.py:161 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2346 +#: part/admin.py:50 part/models.py:949 part/templates/part/part_base.html:277 +#: report/models.py:162 templates/js/translated/part.js:1232 +#: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:319 part/models.py:929 +#: part/admin.py:53 part/admin.py:319 part/models.py:922 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5772,11 +5828,11 @@ msgstr "" msgid "Part Image" msgstr "" -#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:222 msgid "Category ID" msgstr "" -#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:223 msgid "Category Name" msgstr "" @@ -5788,11 +5844,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:908 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1036 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5800,26 +5856,26 @@ msgstr "" 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 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:235 +#: templates/js/translated/part.js:715 templates/js/translated/part.js:2153 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3123 part/models.py:3137 -#: templates/js/translated/part.js:969 +#: part/admin.py:155 part/models.py:3088 part/models.py:3102 +#: templates/js/translated/part.js:970 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3130 part/models.py:3144 -#: templates/js/translated/part.js:979 +#: part/admin.py:158 part/models.py:3095 part/models.py:3109 +#: templates/js/translated/part.js:980 msgid "Maximum Cost" msgstr "" -#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 msgid "Parent ID" msgstr "" -#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 msgid "Parent Name" msgstr "" @@ -5828,141 +5884,149 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:325 part/models.py:393 part/serializers.py:117 -#: part/serializers.py:272 part/serializers.py:391 +#: part/admin.py:325 part/models.py:396 part/serializers.py:124 +#: part/serializers.py:267 part/serializers.py:386 #: 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:2803 templates/js/translated/search.js:130 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "" -#: part/admin.py:386 +#: part/admin.py:378 msgid "BOM Level" msgstr "" -#: part/admin.py:389 +#: part/admin.py:381 msgid "BOM Item ID" msgstr "" -#: part/admin.py:399 +#: part/admin.py:391 msgid "Parent IPN" msgstr "" -#: part/admin.py:410 part/models.py:3966 +#: part/admin.py:402 part/models.py:3946 msgid "Part IPN" msgstr "" -#: part/admin.py:423 part/serializers.py:1278 +#: part/admin.py:415 part/serializers.py:1274 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:428 part/serializers.py:1293 +#: part/admin.py:420 part/serializers.py:1289 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:110 +#: part/api.py:104 msgid "Starred" msgstr "" -#: part/api.py:112 +#: part/api.py:106 msgid "Filter by starred categories" msgstr "" -#: part/api.py:129 stock/api.py:318 +#: part/api.py:123 stock/api.py:312 msgid "Depth" msgstr "" -#: part/api.py:129 +#: part/api.py:123 msgid "Filter by category depth" msgstr "" -#: part/api.py:147 stock/api.py:336 +#: part/api.py:141 stock/api.py:330 +msgid "Top Level" +msgstr "" + +#: part/api.py:143 +msgid "Filter by top-level categories" +msgstr "" + +#: part/api.py:156 stock/api.py:345 msgid "Cascade" msgstr "" -#: part/api.py:149 +#: part/api.py:158 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:169 +#: part/api.py:179 templates/js/translated/part.js:308 msgid "Parent" msgstr "" -#: part/api.py:171 +#: part/api.py:181 msgid "Filter by parent category" msgstr "" -#: part/api.py:204 +#: part/api.py:214 msgid "Exclude Tree" msgstr "" -#: part/api.py:206 +#: part/api.py:216 msgid "Exclude sub-categories under the specified category" msgstr "" -#: part/api.py:455 +#: part/api.py:449 msgid "Has Results" msgstr "" -#: part/api.py:622 +#: part/api.py:616 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:640 +#: part/api.py:634 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:656 +#: part/api.py:650 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:740 +#: part/api.py:734 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:887 +#: part/api.py:881 msgid "Valid" msgstr "" -#: part/api.py:888 +#: part/api.py:882 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:894 +#: part/api.py:888 msgid "This option must be selected" msgstr "" -#: part/api.py:1111 +#: part/api.py:1105 msgid "BOM Valid" msgstr "" -#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 -#: part/serializers.py:406 part/serializers.py:1134 -#: part/templates/part/part_base.html:260 stock/api.py:781 +#: part/api.py:1508 part/models.py:932 part/models.py:3374 part/models.py:3889 +#: part/serializers.py:401 part/serializers.py:1130 +#: part/templates/part/part_base.html:260 stock/api.py:791 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2376 +#: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/api.py:1803 +#: part/api.py:1796 msgid "Uses" msgstr "" -#: part/bom.py:170 part/models.py:102 part/models.py:982 +#: part/bom.py:170 part/models.py:104 part/models.py:975 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 part/serializers.py:837 +#: part/bom.py:171 part/serializers.py:833 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5971,1054 +6035,1066 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 +#: part/models.py:85 part/models.py:3890 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:84 part/templates/part/category.html:136 +#: part/models.py:86 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "" -#: part/models.py:103 +#: part/models.py:105 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 +#: part/models.py:110 stock/models.py:174 templates/js/translated/part.js:2810 #: templates/js/translated/stock.js:2772 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:110 +#: part/models.py:112 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:119 +#: part/models.py:121 msgid "Default keywords" msgstr "" -#: part/models.py:120 +#: part/models.py:122 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 stock/models.py:85 stock/models.py:156 +#: part/models.py:128 stock/models.py:86 stock/models.py:157 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:127 stock/models.py:157 +#: part/models.py:129 stock/models.py:158 msgid "Icon (optional)" msgstr "" -#: part/models.py:149 +#: part/models.py:151 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:482 +#: part/models.py:485 msgid "Cannot delete this part as it is still active" msgstr "" -#: part/models.py:489 +#: part/models.py:490 msgid "Cannot delete this part as it is used in an assembly" msgstr "" -#: part/models.py:527 +#: part/models.py:528 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:575 part/models.py:582 +#: part/models.py:576 part/models.py:583 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:594 +#: part/models.py:595 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:659 +#: part/models.py:658 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:739 +#: part/models.py:736 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:844 +#: part/models.py:837 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:854 +#: part/models.py:847 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:869 +#: part/models.py:862 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:898 part/models.py:3965 +#: part/models.py:891 part/models.py:3945 msgid "Part name" msgstr "" -#: part/models.py:903 +#: part/models.py:896 msgid "Is Template" msgstr "" -#: part/models.py:904 +#: part/models.py:897 msgid "Is this part a template part?" msgstr "" -#: part/models.py:914 +#: part/models.py:907 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:922 +#: part/models.py:915 msgid "Part description (optional)" msgstr "" -#: part/models.py:930 +#: part/models.py:923 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:940 +#: part/models.py:933 msgid "Part category" msgstr "" -#: part/models.py:948 +#: part/models.py:941 msgid "Internal Part Number" msgstr "" -#: part/models.py:955 +#: part/models.py:948 msgid "Part revision or version number" msgstr "" -#: part/models.py:980 +#: part/models.py:973 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:1026 part/templates/part/part_base.html:376 +#: part/models.py:1019 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:1027 +#: part/models.py:1020 msgid "Default supplier part" msgstr "" -#: part/models.py:1034 +#: part/models.py:1027 msgid "Default Expiry" msgstr "" -#: part/models.py:1035 +#: part/models.py:1028 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:1044 +#: part/models.py:1037 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:1053 +#: part/models.py:1046 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1060 +#: part/models.py:1053 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1066 +#: part/models.py:1059 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1072 +#: part/models.py:1065 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1078 +#: part/models.py:1071 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1084 +#: part/models.py:1077 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1088 +#: part/models.py:1081 msgid "Is this part active?" msgstr "" -#: part/models.py:1094 +#: part/models.py:1087 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1100 +#: part/models.py:1093 msgid "BOM checksum" msgstr "" -#: part/models.py:1101 +#: part/models.py:1094 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1109 +#: part/models.py:1102 msgid "BOM checked by" msgstr "" -#: part/models.py:1114 +#: part/models.py:1107 msgid "BOM checked date" msgstr "" -#: part/models.py:1130 +#: part/models.py:1123 msgid "Creation User" msgstr "" -#: part/models.py:1140 +#: part/models.py:1133 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1145 part/templates/part/part_base.html:339 +#: part/models.py:1138 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2470 +#: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:2018 +#: part/models.py:2011 msgid "Sell multiple" msgstr "" -#: part/models.py:3037 +#: part/models.py:3002 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:3053 +#: part/models.py:3018 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:3054 +#: part/models.py:3019 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:3060 +#: part/models.py:3025 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3026 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:3067 +#: part/models.py:3032 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3033 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3074 +#: part/models.py:3039 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3040 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3046 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3047 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3053 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3054 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3060 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3096 +#: part/models.py:3061 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3102 +#: part/models.py:3067 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3103 +#: part/models.py:3068 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3109 +#: part/models.py:3074 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3110 +#: part/models.py:3075 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3116 +#: part/models.py:3081 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3117 +#: part/models.py:3082 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3124 +#: part/models.py:3089 msgid "Override minimum cost" msgstr "" -#: part/models.py:3131 +#: part/models.py:3096 msgid "Override maximum cost" msgstr "" -#: part/models.py:3138 +#: part/models.py:3103 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3145 +#: part/models.py:3110 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3151 +#: part/models.py:3116 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3152 +#: part/models.py:3117 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3158 +#: part/models.py:3123 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3159 +#: part/models.py:3124 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3165 +#: part/models.py:3130 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3131 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3172 +#: part/models.py:3137 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3138 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3192 +#: part/models.py:3157 msgid "Part for stocktake" msgstr "" -#: part/models.py:3197 +#: part/models.py:3162 msgid "Item Count" msgstr "" -#: part/models.py:3198 +#: part/models.py:3163 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3206 +#: part/models.py:3171 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3210 part/models.py:3293 +#: part/models.py:3175 part/models.py:3258 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report.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/part.js:1086 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" -#: part/models.py:3211 +#: part/models.py:3176 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3219 +#: part/models.py:3184 msgid "Additional notes" msgstr "" -#: part/models.py:3229 +#: part/models.py:3194 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3235 +#: part/models.py:3200 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3236 +#: part/models.py:3201 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3242 +#: part/models.py:3207 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3243 +#: part/models.py:3208 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3264 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3300 +#: part/models.py:3265 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3270 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3306 +#: part/models.py:3271 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3316 +#: part/models.py:3281 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3478 +#: part/models.py:3423 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3489 +#: part/models.py:3444 part/models.py:3608 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3455 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3500 +#: part/models.py:3466 msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3517 templates/js/translated/part.js:2878 +#: part/models.py:3483 templates/js/translated/part.js:2880 msgid "Test Name" msgstr "" -#: part/models.py:3518 +#: part/models.py:3484 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3524 +#: part/models.py:3490 msgid "Test Key" msgstr "" -#: part/models.py:3525 +#: part/models.py:3491 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3532 +#: part/models.py:3498 msgid "Test Description" msgstr "" -#: part/models.py:3533 +#: part/models.py:3499 msgid "Enter description for this test" msgstr "" -#: part/models.py:3537 report/models.py:208 -#: templates/js/translated/part.js:2899 +#: part/models.py:3503 report/models.py:209 +#: templates/js/translated/part.js:2901 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" -#: part/models.py:3537 +#: part/models.py:3503 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3542 templates/js/translated/part.js:2907 +#: part/models.py:3508 templates/js/translated/part.js:2909 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3543 +#: part/models.py:3509 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3548 templates/js/translated/part.js:2915 +#: part/models.py:3514 templates/js/translated/part.js:2917 msgid "Requires Value" msgstr "" -#: part/models.py:3549 +#: part/models.py:3515 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3554 templates/js/translated/part.js:2922 +#: part/models.py:3520 templates/js/translated/part.js:2924 msgid "Requires Attachment" msgstr "" -#: part/models.py:3556 +#: part/models.py:3522 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3603 +#: part/models.py:3528 part/models.py:3667 templates/js/translated/part.js:1637 +msgid "Choices" +msgstr "" + +#: part/models.py:3529 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3583 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3608 +#: part/models.py:3588 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3628 -msgid "Choices must be unique" -msgstr "" - -#: part/models.py:3645 +#: part/models.py:3625 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3660 +#: part/models.py:3640 msgid "Parameter Name" msgstr "" -#: part/models.py:3667 +#: part/models.py:3647 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3675 +#: part/models.py:3655 msgid "Parameter description" msgstr "" -#: part/models.py:3681 templates/js/translated/part.js:1627 +#: part/models.py:3661 templates/js/translated/part.js:1628 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "" -#: part/models.py:3682 +#: part/models.py:3662 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3687 templates/js/translated/part.js:1636 -msgid "Choices" -msgstr "" - -#: part/models.py:3688 +#: part/models.py:3668 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3765 +#: part/models.py:3745 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3808 +#: part/models.py:3788 msgid "Parent Part" msgstr "" -#: part/models.py:3816 part/models.py:3917 part/models.py:3918 +#: part/models.py:3796 part/models.py:3897 part/models.py:3898 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3821 +#: part/models.py:3801 msgid "Data" msgstr "" -#: part/models.py:3822 +#: part/models.py:3802 msgid "Parameter Value" msgstr "" -#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3904 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3925 +#: part/models.py:3905 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3963 +#: part/models.py:3943 msgid "Part ID or part name" msgstr "" -#: part/models.py:3964 +#: part/models.py:3944 msgid "Unique part ID value" msgstr "" -#: part/models.py:3966 +#: part/models.py:3946 msgid "Part IPN value" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "Level" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "BOM level" msgstr "" -#: part/models.py:4057 +#: part/models.py:4037 msgid "Select parent part" msgstr "" -#: part/models.py:4067 +#: part/models.py:4047 msgid "Sub part" msgstr "" -#: part/models.py:4068 +#: part/models.py:4048 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4079 +#: part/models.py:4059 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4085 +#: part/models.py:4065 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4091 +#: part/models.py:4071 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4098 part/templates/part/upload_bom.html:55 +#: part/models.py:4078 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4099 +#: part/models.py:4079 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4106 +#: part/models.py:4086 msgid "BOM item reference" msgstr "" -#: part/models.py:4114 +#: part/models.py:4094 msgid "BOM item notes" msgstr "" -#: part/models.py:4120 +#: part/models.py:4100 msgid "Checksum" msgstr "" -#: part/models.py:4121 +#: part/models.py:4101 msgid "BOM line checksum" msgstr "" -#: part/models.py:4126 templates/js/translated/table_filters.js:174 +#: part/models.py:4106 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4127 +#: part/models.py:4107 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4132 part/templates/part/upload_bom.html:57 +#: part/models.py:4112 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:4133 +#: part/models.py:4113 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4138 part/templates/part/upload_bom.html:56 +#: part/models.py:4118 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4139 +#: part/models.py:4119 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4224 stock/models.py:664 +#: part/models.py:4204 stock/models.py:662 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4234 part/models.py:4236 +#: part/models.py:4214 part/models.py:4216 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4376 +#: part/models.py:4354 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4397 +#: part/models.py:4375 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4410 +#: part/models.py:4388 msgid "Parent BOM item" msgstr "" -#: part/models.py:4418 +#: part/models.py:4396 msgid "Substitute part" msgstr "" -#: part/models.py:4434 +#: part/models.py:4412 msgid "Part 1" msgstr "" -#: part/models.py:4442 +#: part/models.py:4420 msgid "Part 2" msgstr "" -#: part/models.py:4443 +#: part/models.py:4421 msgid "Select Related Part" msgstr "" -#: part/models.py:4462 +#: part/models.py:4440 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4467 +#: part/models.py:4445 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:119 part/serializers.py:141 +#: part/serializers.py:118 +msgid "Parent Category" +msgstr "" + +#: part/serializers.py:119 templates/js/translated/part.js:309 +msgid "Parent part category" +msgstr "" + +#: part/serializers.py:126 part/serializers.py:148 #: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/serializers.py:185 +#: part/serializers.py:180 msgid "Results" msgstr "" -#: part/serializers.py:186 +#: part/serializers.py:181 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 +#: part/serializers.py:205 part/serializers.py:223 stock/serializers.py:562 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:273 +#: part/serializers.py:268 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:397 +#: part/serializers.py:392 msgid "No parts selected" msgstr "" -#: part/serializers.py:407 +#: part/serializers.py:402 msgid "Select category" msgstr "" -#: part/serializers.py:442 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:443 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:448 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:449 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:455 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:456 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:463 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:488 +#: part/serializers.py:483 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:490 +#: part/serializers.py:485 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:497 +#: part/serializers.py:492 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:493 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:510 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:531 +#: part/serializers.py:526 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:541 +#: part/serializers.py:536 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:548 +#: part/serializers.py:543 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:557 +#: part/serializers.py:552 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:568 +#: part/serializers.py:563 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:575 +#: part/serializers.py:570 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:834 msgid "External Stock" msgstr "" -#: part/serializers.py:840 +#: part/serializers.py:836 msgid "Unallocated Stock" msgstr "" -#: part/serializers.py:843 +#: part/serializers.py:839 msgid "Variant Stock" msgstr "" -#: part/serializers.py:873 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:471 +#: part/serializers.py:869 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:472 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:870 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:880 templates/js/translated/part.js:102 +#: part/serializers.py:876 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:881 +#: part/serializers.py:877 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:887 +#: part/serializers.py:883 msgid "Supplier Information" msgstr "" -#: part/serializers.py:888 +#: part/serializers.py:884 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:896 +#: part/serializers.py:892 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:897 +#: part/serializers.py:893 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:902 +#: part/serializers.py:898 msgid "Existing Image" msgstr "" -#: part/serializers.py:903 +#: part/serializers.py:899 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:920 +#: part/serializers.py:916 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1126 +#: part/serializers.py:1122 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1136 +#: part/serializers.py:1132 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1146 +#: part/serializers.py:1142 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1152 +#: part/serializers.py:1148 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1153 +#: part/serializers.py:1149 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1158 +#: part/serializers.py:1154 msgid "Generate Report" msgstr "" -#: part/serializers.py:1159 +#: part/serializers.py:1155 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1164 +#: part/serializers.py:1160 msgid "Update Parts" msgstr "" -#: part/serializers.py:1165 +#: part/serializers.py:1161 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1173 +#: part/serializers.py:1169 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1279 +#: part/serializers.py:1275 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1286 +#: part/serializers.py:1282 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1294 +#: part/serializers.py:1290 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1301 +#: part/serializers.py:1297 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1330 +#: part/serializers.py:1326 msgid "Update" msgstr "" -#: part/serializers.py:1331 +#: part/serializers.py:1327 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1354 +#: part/serializers.py:1350 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1361 +#: part/serializers.py:1357 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1364 +#: part/serializers.py:1360 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1727 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1739 +#: part/serializers.py:1735 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1740 +#: part/serializers.py:1736 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1745 +#: part/serializers.py:1741 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1746 +#: part/serializers.py:1742 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1747 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1752 +#: part/serializers.py:1748 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1757 +#: part/serializers.py:1753 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1758 +#: part/serializers.py:1754 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1792 +#: part/serializers.py:1788 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1793 +#: part/serializers.py:1789 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1823 +#: part/serializers.py:1819 msgid "No part column specified" msgstr "" -#: part/serializers.py:1867 +#: part/serializers.py:1863 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1870 +#: part/serializers.py:1866 msgid "No matching part found" msgstr "" -#: part/serializers.py:1873 +#: part/serializers.py:1869 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1882 +#: part/serializers.py:1878 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1890 +#: part/serializers.py:1886 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1911 +#: part/serializers.py:1907 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 +#: part/stocktake.py:225 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "" -#: part/stocktake.py:225 +#: part/stocktake.py:226 msgid "Total Cost Min" msgstr "" -#: part/stocktake.py:226 +#: part/stocktake.py:227 msgid "Total Cost Max" msgstr "" -#: part/stocktake.py:284 +#: part/stocktake.py:285 msgid "Stocktake Report Available" msgstr "" -#: part/stocktake.py:285 +#: part/stocktake.py:286 msgid "A new stocktake report is available for download" msgstr "" @@ -7152,7 +7228,7 @@ 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 +#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" @@ -7252,15 +7328,15 @@ msgstr "" msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:655 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:663 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:748 +#: part/templates/part/detail.html:750 msgid "Add Test Result Template" msgstr "" @@ -7341,7 +7417,7 @@ msgstr "" msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" msgstr "" @@ -7413,7 +7489,7 @@ 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:2443 +#: templates/js/translated/part.js:1265 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7506,8 +7582,8 @@ msgstr "" #: 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:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/part.js:1243 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 #: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7550,7 +7626,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:247 +#: part/templates/part/prices.html:28 stock/admin.py:251 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 @@ -7627,8 +7703,8 @@ msgstr "" #: part/templates/part/stock_count.html:7 #: templates/js/translated/model_renderers.js:227 -#: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 -#: templates/js/translated/part.js:2142 +#: templates/js/translated/part.js:705 templates/js/translated/part.js:2141 +#: templates/js/translated/part.js:2143 msgid "No Stock" msgstr "" @@ -8000,7 +8076,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:308 msgid "Landscape" msgstr "" @@ -8113,62 +8189,62 @@ msgstr "" msgid "Uninstalled plugin successfully" msgstr "" -#: plugin/models.py:35 +#: plugin/models.py:36 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:36 +#: plugin/models.py:37 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:42 users/models.py:100 +#: plugin/models.py:43 users/models.py:100 msgid "Key" msgstr "" -#: plugin/models.py:43 +#: plugin/models.py:44 msgid "Key of plugin" msgstr "" -#: plugin/models.py:51 +#: plugin/models.py:52 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:58 plugin/serializers.py:90 +#: plugin/models.py:59 plugin/serializers.py:90 msgid "Package Name" msgstr "" -#: plugin/models.py:60 +#: plugin/models.py:61 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:65 +#: plugin/models.py:66 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:156 templates/js/translated/table_filters.js:370 +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "" -#: plugin/models.py:165 +#: plugin/models.py:166 msgid "Sample plugin" msgstr "" -#: plugin/models.py:173 +#: plugin/models.py:174 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:181 +#: plugin/models.py:182 msgid "Package Plugin" msgstr "" -#: plugin/models.py:205 report/models.py:474 +#: plugin/models.py:220 report/models.py:475 #: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:252 +#: plugin/models.py:267 msgid "Method" msgstr "" @@ -8176,17 +8252,17 @@ msgstr "" msgid "No author found" msgstr "" -#: plugin/registry.py:597 +#: plugin/registry.py:534 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:600 +#: plugin/registry.py:537 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:602 +#: plugin/registry.py:539 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -8301,23 +8377,19 @@ msgstr "" msgid "Activate this plugin" msgstr "" -#: plugin/serializers.py:234 +#: plugin/serializers.py:226 msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:235 +#: plugin/serializers.py:227 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:77 +#: report/api.py:88 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:89 report/serializers.py:53 -msgid "Model Type" -msgstr "" - -#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/api.py:103 report/models.py:439 report/serializers.py:98 #: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 #: templates/js/translated/return_order.js:353 #: templates/js/translated/sales_order.js:887 @@ -8325,176 +8397,176 @@ msgstr "" msgid "Items" msgstr "" -#: report/api.py:168 +#: report/api.py:180 msgid "Plugin not found" msgstr "" -#: report/api.py:170 +#: report/api.py:182 msgid "Plugin is not active" msgstr "" -#: report/api.py:172 +#: report/api.py:184 msgid "Plugin does not support label printing" msgstr "" -#: report/api.py:221 +#: report/api.py:233 msgid "Invalid label dimensions" msgstr "" -#: report/api.py:236 report/api.py:316 +#: report/api.py:248 report/api.py:329 msgid "No valid items provided to template" msgstr "" -#: report/api.py:271 +#: report/api.py:283 msgid "Error printing label" msgstr "" -#: report/api.py:362 report/api.py:398 +#: report/api.py:375 report/api.py:411 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/helpers.py:41 +#: report/helpers.py:43 msgid "A4" msgstr "" -#: report/helpers.py:42 +#: report/helpers.py:44 msgid "A3" msgstr "" -#: report/helpers.py:43 +#: report/helpers.py:45 msgid "Legal" msgstr "" -#: report/helpers.py:44 +#: report/helpers.py:46 msgid "Letter" msgstr "" -#: report/models.py:118 +#: report/models.py:119 msgid "Template file with this name already exists" msgstr "" -#: report/models.py:150 +#: report/models.py:151 msgid "Template name" msgstr "" -#: report/models.py:156 +#: report/models.py:157 msgid "Template description" msgstr "" -#: report/models.py:162 +#: report/models.py:163 msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Filename Pattern" msgstr "" -#: report/models.py:203 +#: report/models.py:204 msgid "Pattern for generating filenames" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Template is enabled" msgstr "" -#: report/models.py:214 +#: report/models.py:215 msgid "Target model type for template" msgstr "" -#: report/models.py:234 +#: report/models.py:235 msgid "Filters" msgstr "" -#: report/models.py:235 +#: report/models.py:236 msgid "Template query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:294 report/models.py:361 +#: report/models.py:295 report/models.py:362 msgid "Template file" msgstr "" -#: report/models.py:302 +#: report/models.py:303 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:308 +#: report/models.py:309 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:367 +#: report/models.py:368 msgid "Width [mm]" msgstr "" -#: report/models.py:368 +#: report/models.py:369 msgid "Label width, specified in mm" msgstr "" -#: report/models.py:374 +#: report/models.py:375 msgid "Height [mm]" msgstr "" -#: report/models.py:375 +#: report/models.py:376 msgid "Label height, specified in mm" msgstr "" -#: report/models.py:438 +#: report/models.py:439 msgid "Number of items to process" msgstr "" -#: report/models.py:444 +#: report/models.py:445 msgid "Report generation is complete" msgstr "" -#: report/models.py:448 templates/js/translated/build.js:2177 +#: report/models.py:449 templates/js/translated/build.js:2177 msgid "Progress" msgstr "" -#: report/models.py:448 +#: report/models.py:449 msgid "Report generation progress" msgstr "" -#: report/models.py:456 +#: report/models.py:457 msgid "Report Template" msgstr "" -#: report/models.py:463 report/models.py:486 +#: report/models.py:464 report/models.py:487 msgid "Output File" msgstr "" -#: report/models.py:464 report/models.py:487 +#: report/models.py:465 report/models.py:488 msgid "Generated output file" msgstr "" -#: report/models.py:475 +#: report/models.py:476 msgid "Label output plugin" msgstr "" -#: report/models.py:479 +#: report/models.py:480 msgid "Label Template" msgstr "" -#: report/models.py:502 +#: report/models.py:503 msgid "Snippet" msgstr "" -#: report/models.py:503 +#: report/models.py:504 msgid "Report snippet file" msgstr "" -#: report/models.py:510 +#: report/models.py:511 msgid "Snippet file description" msgstr "" -#: report/models.py:528 +#: report/models.py:529 msgid "Asset" msgstr "" -#: report/models.py:529 +#: report/models.py:530 msgid "Report asset file" msgstr "" -#: report/models.py:536 +#: report/models.py:537 msgid "Asset file description" msgstr "" @@ -8567,8 +8639,8 @@ msgid "Total" msgstr "" #: report/templates/report/inventree_return_order_report.html:25 -#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 -#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:824 +#: stock/serializers.py:149 stock/templates/stock/item_base.html:311 #: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 #: templates/js/translated/build.js:2355 #: templates/js/translated/model_renderers.js:230 @@ -8598,32 +8670,32 @@ msgstr "" msgid "Test" msgstr "" -#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2412 msgid "Result" msgstr "" -#: report/templates/report/inventree_test_report.html:130 +#: report/templates/report/inventree_test_report.html:129 msgid "Pass" msgstr "" -#: report/templates/report/inventree_test_report.html:132 +#: report/templates/report/inventree_test_report.html:131 msgid "Fail" msgstr "" -#: report/templates/report/inventree_test_report.html:139 +#: report/templates/report/inventree_test_report.html:138 msgid "No result (required)" msgstr "" -#: report/templates/report/inventree_test_report.html:141 +#: report/templates/report/inventree_test_report.html:140 msgid "No result" msgstr "" -#: report/templates/report/inventree_test_report.html:154 +#: report/templates/report/inventree_test_report.html:153 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "" -#: report/templates/report/inventree_test_report.html:168 stock/admin.py:162 +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 #: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 #: templates/js/translated/stock.js:3110 msgid "Serial" @@ -8645,654 +8717,670 @@ msgstr "" msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:172 +#: stock/admin.py:51 stock/admin.py:171 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:176 +#: stock/admin.py:53 stock/admin.py:175 msgid "Location Name" msgstr "" -#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/admin.py:63 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:149 +#: stock/admin.py:148 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:168 +#: stock/admin.py:167 msgid "Status Code" msgstr "" -#: stock/admin.py:180 +#: stock/admin.py:179 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:185 +#: stock/admin.py:184 +msgid "Supplier Part SKU" +msgstr "" + +#: stock/admin.py:189 msgid "Supplier ID" msgstr "" -#: stock/admin.py:191 +#: stock/admin.py:195 msgid "Supplier Name" msgstr "" -#: stock/admin.py:196 +#: stock/admin.py:200 msgid "Customer ID" msgstr "" -#: stock/admin.py:201 stock/models.py:806 +#: stock/admin.py:205 stock/models.py:804 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:206 +#: stock/admin.py:210 msgid "Build ID" msgstr "" -#: stock/admin.py:216 +#: stock/admin.py:220 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:221 +#: stock/admin.py:225 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:236 +#: stock/admin.py:240 msgid "Review Needed" msgstr "" -#: stock/admin.py:241 +#: stock/admin.py:245 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:256 stock/models.py:900 +#: stock/admin.py:260 stock/models.py:898 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "" -#: stock/api.py:318 +#: stock/api.py:312 msgid "Filter by location depth" msgstr "" -#: stock/api.py:338 +#: stock/api.py:332 +msgid "Filter by top-level locations" +msgstr "" + +#: stock/api.py:347 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:359 +#: stock/api.py:369 stock/serializers.py:1085 msgid "Parent Location" msgstr "" -#: stock/api.py:360 +#: stock/api.py:370 msgid "Filter by parent location" msgstr "" -#: stock/api.py:615 templates/js/translated/table_filters.js:427 +#: stock/api.py:625 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:803 +#: stock/api.py:813 msgid "Part Tree" msgstr "" -#: stock/api.py:833 +#: stock/api.py:843 msgid "Expiry date before" msgstr "" -#: stock/api.py:837 +#: stock/api.py:847 msgid "Expiry date after" msgstr "" -#: stock/api.py:840 stock/templates/stock/item_base.html:439 +#: stock/api.py:850 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:927 +#: stock/api.py:937 msgid "Quantity is required" msgstr "" -#: stock/api.py:933 +#: stock/api.py:943 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:964 +#: stock/api.py:974 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:974 +#: stock/api.py:984 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:1005 +#: stock/api.py:1015 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:59 +#: stock/models.py:60 msgid "Stock Location type" msgstr "" -#: stock/models.py:60 +#: stock/models.py:61 msgid "Stock Location types" msgstr "" -#: stock/models.py:86 +#: stock/models.py:87 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:123 stock/models.py:788 +#: stock/models.py:124 stock/models.py:786 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:124 stock/templates/stock/location.html:186 +#: stock/models.py:125 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "" -#: stock/models.py:166 stock/models.py:949 +#: stock/models.py:167 stock/models.py:947 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:167 stock/models.py:950 +#: stock/models.py:168 stock/models.py:948 msgid "Select Owner" msgstr "" -#: stock/models.py:175 +#: stock/models.py:176 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:182 templates/js/translated/stock.js:2781 +#: stock/models.py:183 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:183 +#: stock/models.py:184 msgid "This is an external stock location" msgstr "" -#: stock/models.py:189 templates/js/translated/stock.js:2790 +#: stock/models.py:190 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" -#: stock/models.py:193 +#: stock/models.py:194 msgid "Stock location type of this location" msgstr "" -#: stock/models.py:262 +#: stock/models.py:261 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:643 +#: stock/models.py:641 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:670 stock/serializers.py:419 +#: stock/models.py:668 stock/serializers.py:446 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:687 +#: stock/models.py:685 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:697 stock/models.py:710 +#: stock/models.py:695 stock/models.py:708 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:700 +#: stock/models.py:698 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:724 +#: stock/models.py:722 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:729 +#: stock/models.py:727 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:742 +#: stock/models.py:740 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:758 +#: stock/models.py:756 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:770 +#: stock/models.py:768 msgid "Base part" msgstr "" -#: stock/models.py:780 +#: stock/models.py:778 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:792 +#: stock/models.py:790 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:800 stock/serializers.py:1480 +#: stock/models.py:798 stock/serializers.py:1476 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:811 +#: stock/models.py:809 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:830 +#: stock/models.py:828 msgid "Serial number for this item" msgstr "" -#: stock/models.py:844 stock/serializers.py:1463 +#: stock/models.py:842 stock/serializers.py:1459 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:849 +#: stock/models.py:847 msgid "Stock Quantity" msgstr "" -#: stock/models.py:859 +#: stock/models.py:857 msgid "Source Build" msgstr "" -#: stock/models.py:862 +#: stock/models.py:860 msgid "Build for this stock item" msgstr "" -#: stock/models.py:869 stock/templates/stock/item_base.html:363 +#: stock/models.py:867 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:872 +#: stock/models.py:870 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:881 +#: stock/models.py:879 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:885 +#: stock/models.py:883 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:891 +#: stock/models.py:889 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:902 +#: stock/models.py:900 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:920 +#: stock/models.py:918 msgid "Delete on deplete" msgstr "" -#: stock/models.py:921 +#: stock/models.py:919 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:941 +#: stock/models.py:939 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:972 +#: stock/models.py:970 msgid "Converted to part" msgstr "" -#: stock/models.py:1490 +#: stock/models.py:1486 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1496 +#: stock/models.py:1492 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1500 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1510 +#: stock/models.py:1506 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1515 +#: stock/models.py:1511 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1523 stock/serializers.py:658 +#: stock/models.py:1519 stock/serializers.py:660 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1620 +#: stock/models.py:1616 msgid "Test template does not exist" msgstr "" -#: stock/models.py:1638 +#: stock/models.py:1634 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1642 +#: stock/models.py:1638 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1645 +#: stock/models.py:1641 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1648 +#: stock/models.py:1644 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1651 +#: stock/models.py:1647 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1654 +#: stock/models.py:1650 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1661 stock/serializers.py:1369 +#: stock/models.py:1657 stock/serializers.py:1365 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1665 +#: stock/models.py:1661 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1673 +#: stock/models.py:1669 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1678 +#: stock/models.py:1674 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1905 +#: stock/models.py:1901 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2310 msgid "Entry notes" msgstr "" -#: stock/models.py:2391 +#: stock/models.py:2378 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2396 +#: stock/models.py:2383 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2423 +#: stock/models.py:2388 +msgid "Invalid value for this test" +msgstr "" + +#: stock/models.py:2412 msgid "Test result" msgstr "" -#: stock/models.py:2430 +#: stock/models.py:2419 msgid "Test output value" msgstr "" -#: stock/models.py:2438 +#: stock/models.py:2427 msgid "Test result attachment" msgstr "" -#: stock/models.py:2442 +#: stock/models.py:2431 msgid "Test notes" msgstr "" -#: stock/models.py:2450 templates/js/translated/stock.js:1548 +#: stock/models.py:2439 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2440 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2457 +#: stock/models.py:2446 msgid "Started" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2447 msgid "The timestamp of the test start" msgstr "" -#: stock/models.py:2464 +#: stock/models.py:2453 msgid "Finished" msgstr "" -#: stock/models.py:2465 +#: stock/models.py:2454 msgid "The timestamp of the test finish" msgstr "" -#: stock/serializers.py:75 +#: stock/serializers.py:74 msgid "Generated batch code" msgstr "" -#: stock/serializers.py:84 +#: stock/serializers.py:83 msgid "Select build order" msgstr "" -#: stock/serializers.py:93 +#: stock/serializers.py:92 msgid "Select stock item to generate batch code for" msgstr "" -#: stock/serializers.py:102 +#: stock/serializers.py:101 msgid "Select location to generate batch code for" msgstr "" -#: stock/serializers.py:111 +#: stock/serializers.py:110 msgid "Select part to generate batch code for" msgstr "" -#: stock/serializers.py:120 +#: stock/serializers.py:119 msgid "Select purchase order" msgstr "" -#: stock/serializers.py:127 +#: stock/serializers.py:126 msgid "Enter quantity for batch code" msgstr "" -#: stock/serializers.py:150 +#: stock/serializers.py:149 msgid "Generated serial number" msgstr "" -#: stock/serializers.py:159 +#: stock/serializers.py:158 msgid "Select part to generate serial number for" msgstr "" -#: stock/serializers.py:167 +#: stock/serializers.py:166 msgid "Quantity of serial numbers to generate" msgstr "" -#: stock/serializers.py:229 +#: stock/serializers.py:228 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:248 +#: stock/serializers.py:247 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:280 +#: stock/serializers.py:279 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:313 +#: stock/serializers.py:315 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:411 +#: stock/serializers.py:438 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:531 +#: stock/serializers.py:558 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:595 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:606 +#: stock/serializers.py:608 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:613 +#: stock/serializers.py:615 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 +#: stock/serializers.py:626 stock/serializers.py:1322 stock/serializers.py:1578 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:631 +#: stock/serializers.py:633 msgid "Optional note field" msgstr "" -#: stock/serializers.py:641 +#: stock/serializers.py:643 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:696 +#: stock/serializers.py:698 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:703 +#: stock/serializers.py:705 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:704 +#: stock/serializers.py:706 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 -#: stock/serializers.py:935 +#: stock/serializers.py:711 stock/serializers.py:791 stock/serializers.py:887 +#: stock/serializers.py:937 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:719 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:725 +#: stock/serializers.py:727 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:736 +#: stock/serializers.py:738 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:749 +#: stock/serializers.py:751 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:784 +#: stock/serializers.py:786 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:819 +#: stock/serializers.py:821 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:834 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:849 +#: stock/serializers.py:851 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:880 +#: stock/serializers.py:882 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:917 +#: stock/serializers.py:919 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:923 +#: stock/serializers.py:925 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:1019 stock/serializers.py:1082 +#: stock/serializers.py:1021 stock/serializers.py:1093 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:220 +#: stock/templates/stock/location.html:222 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1198 +#: stock/serializers.py:1086 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: stock/serializers.py:1194 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1202 +#: stock/serializers.py:1198 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1206 +#: stock/serializers.py:1202 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1230 +#: stock/serializers.py:1226 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1236 +#: stock/serializers.py:1232 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1244 +#: stock/serializers.py:1240 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1254 stock/serializers.py:1508 +#: stock/serializers.py:1250 stock/serializers.py:1504 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1333 +#: stock/serializers.py:1329 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1338 +#: stock/serializers.py:1334 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1339 +#: stock/serializers.py:1335 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1344 +#: stock/serializers.py:1340 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1345 +#: stock/serializers.py:1341 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1355 +#: stock/serializers.py:1351 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1422 +#: stock/serializers.py:1418 msgid "No Change" msgstr "" -#: stock/serializers.py:1451 +#: stock/serializers.py:1447 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1470 +#: stock/serializers.py:1466 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1498 +#: stock/serializers.py:1494 msgid "Stock transaction notes" msgstr "" @@ -9445,7 +9533,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276 msgid "Delete Test Data" msgstr "" @@ -9465,11 +9553,11 @@ msgstr "" msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:272 +#: stock/templates/stock/item.html:264 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "" @@ -9755,28 +9843,28 @@ msgstr "" msgid "Location Type" msgstr "" -#: stock/templates/stock/location.html:224 +#: stock/templates/stock/location.html:226 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:225 +#: stock/templates/stock/location.html:227 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:295 +#: stock/templates/stock/location.html:299 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:317 +#: stock/templates/stock/location.html:321 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:390 +#: stock/templates/stock/location.html:394 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:401 +#: stock/templates/stock/location.html:405 msgid "Link Barcode to Stock Location" msgstr "" @@ -10200,20 +10288,20 @@ msgstr "" msgid "Pricing Settings" msgstr "" -#: templates/InvenTree/settings/pricing.html:34 +#: templates/InvenTree/settings/pricing.html:35 msgid "Exchange Rates" msgstr "" -#: templates/InvenTree/settings/pricing.html:38 +#: templates/InvenTree/settings/pricing.html:39 msgid "Update Now" msgstr "" -#: templates/InvenTree/settings/pricing.html:46 -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 msgid "Last Update" msgstr "" -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:51 msgid "Never" msgstr "" @@ -10270,8 +10358,8 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:547 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 +#: templates/js/translated/part.js:393 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:402 msgid "Delete" msgstr "" @@ -10311,12 +10399,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 -#: templates/js/translated/part.js:1645 +#: templates/js/translated/part.js:1646 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 -#: templates/js/translated/part.js:1646 +#: templates/js/translated/part.js:1647 msgid "Delete Template" msgstr "" @@ -10706,7 +10794,7 @@ msgid "Submit Bug Report" msgstr "" #: templates/about.html:91 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 +#: templates/js/translated/helpers.js:589 msgid "copy to clipboard" msgstr "" @@ -10770,7 +10858,7 @@ 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 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45 msgid "Return to Site" msgstr "" @@ -10884,15 +10972,19 @@ msgstr "" msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "" -#: templates/allauth_2fa/setup.html:23 +#: templates/allauth_2fa/setup.html:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 msgid "Step 2" msgstr "" -#: templates/allauth_2fa/setup.html:27 +#: templates/allauth_2fa/setup.html:28 msgid "Input a token generated by the app:" msgstr "" -#: templates/allauth_2fa/setup.html:37 +#: templates/allauth_2fa/setup.html:38 msgid "Verify" msgstr "" @@ -10971,7 +11063,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3217 +#: templates/js/translated/part.js:3219 msgid "Minimum Quantity" msgstr "" @@ -11059,27 +11151,27 @@ msgstr "" msgid "Delete attachments" msgstr "" -#: templates/js/translated/attachment.js:253 +#: templates/js/translated/attachment.js:260 msgid "Attachment actions" msgstr "" -#: templates/js/translated/attachment.js:275 +#: templates/js/translated/attachment.js:294 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:315 +#: templates/js/translated/attachment.js:334 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:365 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:366 +#: templates/js/translated/attachment.js:385 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:374 +#: templates/js/translated/attachment.js:393 msgid "Delete attachment" msgstr "" @@ -11360,7 +11452,7 @@ msgid "Includes variant and substitute stock" msgstr "" #: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 -#: templates/js/translated/part.js:1256 +#: templates/js/translated/part.js:1257 #: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" @@ -11687,7 +11779,7 @@ msgstr "" #: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 #: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 -#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11730,8 +11822,8 @@ msgstr "" msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 -#: templates/js/translated/part.js:1202 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:791 +#: templates/js/translated/part.js:1203 msgid "Trackable part" msgstr "" @@ -11917,7 +12009,7 @@ msgid "Delete Parameters" msgstr "" #: templates/js/translated/company.js:1191 -#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2244 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2245 msgid "Order parts" msgstr "" @@ -11934,34 +12026,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:1279 -#: templates/js/translated/company.js:1567 templates/js/translated/part.js:798 -#: templates/js/translated/part.js:1210 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Template part" msgstr "" #: templates/js/translated/company.js:1283 -#: templates/js/translated/company.js:1571 templates/js/translated/part.js:802 -#: templates/js/translated/part.js:1214 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:803 +#: templates/js/translated/part.js:1215 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1464 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1465 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1527 +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1528 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1528 +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1529 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1433 +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1434 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1549 +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1550 msgid "Delete Parameter" msgstr "" @@ -12095,23 +12187,23 @@ msgstr "" msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2499 +#: templates/js/translated/forms.js:2500 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3113 +#: templates/js/translated/forms.js:3114 msgid "Select Columns" msgstr "" @@ -12212,7 +12304,7 @@ msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 -#: templates/js/translated/part.js:1604 +#: templates/js/translated/part.js:1605 msgid "ID" msgstr "" @@ -12293,347 +12385,343 @@ msgstr "" 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 +#: templates/js/translated/part.js:333 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:355 +#: templates/js/translated/part.js:356 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:356 +#: templates/js/translated/part.js:357 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:370 +#: templates/js/translated/part.js:371 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:383 +#: templates/js/translated/part.js:384 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:388 +#: templates/js/translated/part.js:389 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:397 +#: templates/js/translated/part.js:398 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:401 +#: templates/js/translated/part.js:402 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:406 +#: templates/js/translated/part.js:407 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:430 +#: templates/js/translated/part.js:431 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:432 +#: templates/js/translated/part.js:433 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:433 +#: templates/js/translated/part.js:434 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:462 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:463 +#: templates/js/translated/part.js:464 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:474 +#: templates/js/translated/part.js:475 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:531 +#: templates/js/translated/part.js:532 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:532 +#: templates/js/translated/part.js:533 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:546 +#: templates/js/translated/part.js:547 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:548 +#: templates/js/translated/part.js:549 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:549 +#: templates/js/translated/part.js:550 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:550 +#: templates/js/translated/part.js:551 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:557 +#: templates/js/translated/part.js:558 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:593 +#: templates/js/translated/part.js:594 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:595 +#: templates/js/translated/part.js:596 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:600 +#: templates/js/translated/part.js:601 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:602 +#: templates/js/translated/part.js:603 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:619 +#: templates/js/translated/part.js:620 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:629 +#: templates/js/translated/part.js:630 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:632 +#: templates/js/translated/part.js:633 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:657 +#: templates/js/translated/part.js:658 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:685 +#: templates/js/translated/part.js:686 #: templates/js/translated/table_filters.js:747 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:688 +#: templates/js/translated/part.js:689 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:748 +#: templates/js/translated/part.js:749 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:771 +#: templates/js/translated/part.js:772 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +#: templates/js/translated/part.js:795 templates/js/translated/part.js:1207 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:806 +#: templates/js/translated/part.js:807 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:810 +#: templates/js/translated/part.js:811 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:897 +#: templates/js/translated/part.js:898 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:901 +#: templates/js/translated/part.js:902 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1050 +#: templates/js/translated/part.js:1051 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1145 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +#: templates/js/translated/part.js:1113 templates/js/translated/part.js:1155 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1281 +#: templates/js/translated/part.js:1282 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1599 +#: templates/js/translated/part.js:1600 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1662 +#: templates/js/translated/part.js:1663 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1674 +#: templates/js/translated/part.js:1675 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1682 +#: templates/js/translated/part.js:1683 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1716 +#: templates/js/translated/part.js:1717 #: templates/js/translated/purchase_order.js:1654 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1860 +#: templates/js/translated/part.js:1861 #: templates/js/translated/purchase_order.js:2153 #: templates/js/translated/return_order.js:755 #: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1906 +#: templates/js/translated/part.js:1907 #: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1970 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1991 +#: templates/js/translated/part.js:1992 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 +#: templates/js/translated/part.js:2080 templates/js/translated/part.js:2506 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2200 +#: templates/js/translated/part.js:2201 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2205 +#: templates/js/translated/part.js:2206 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2235 +#: templates/js/translated/part.js:2236 msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2286 +#: templates/js/translated/part.js:2287 msgid "part" msgstr "" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2288 msgid "parts" msgstr "" -#: templates/js/translated/part.js:2383 +#: templates/js/translated/part.js:2384 msgid "No category" msgstr "" -#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2546 +#: templates/js/translated/part.js:2547 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2644 +#: templates/js/translated/part.js:2645 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2760 +#: templates/js/translated/part.js:2761 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2776 +#: templates/js/translated/part.js:2777 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2865 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2887 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/part.js:2938 templates/js/translated/stock.js:1457 #: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2940 +#: templates/js/translated/part.js:2942 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2956 +#: templates/js/translated/part.js:2958 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2970 +#: templates/js/translated/part.js:2972 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3051 templates/js/translated/part.js:3052 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3052 +#: templates/js/translated/part.js:3054 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3058 +#: templates/js/translated/part.js:3060 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3108 +#: templates/js/translated/part.js:3110 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3114 +#: templates/js/translated/part.js:3116 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3210 +#: templates/js/translated/part.js:3212 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3226 +#: templates/js/translated/part.js:3228 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3271 +#: templates/js/translated/part.js:3273 msgid "Minimum Stock Level" msgstr "" @@ -13241,10 +13329,6 @@ msgstr "" 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 "" @@ -13413,7 +13497,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:401 +#: templates/js/translated/stock.js:1042 users/models.py:392 msgid "Add" msgstr "" @@ -14304,34 +14388,34 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:384 +#: users/models.py:375 msgid "Permission set" msgstr "" -#: users/models.py:393 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "View" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "Permission to view items" msgstr "" -#: users/models.py:401 +#: users/models.py:392 msgid "Permission to add items" msgstr "" -#: users/models.py:405 +#: users/models.py:396 msgid "Change" msgstr "" -#: users/models.py:407 +#: users/models.py:398 msgid "Permissions to edit items" msgstr "" -#: users/models.py:413 +#: users/models.py:404 msgid "Permission to delete items" msgstr "" diff --git a/src/backend/InvenTree/locale/fa/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/fa/LC_MESSAGES/django.po index 8bf4af893b..d552c5246b 100644 --- a/src/backend/InvenTree/locale/fa/LC_MESSAGES/django.po +++ b/src/backend/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-05-31 07:08+0000\n" -"PO-Revision-Date: 2024-05-27 11:55\n" +"POT-Creation-Date: 2024-06-26 03:18+0000\n" +"PO-Revision-Date: 2024-06-26 06:05\n" "Last-Translator: \n" "Language-Team: Persian\n" "Language: fa_IR\n" @@ -21,7 +21,7 @@ msgstr "" msgid "API endpoint not found" msgstr "Address e API peida nashod" -#: InvenTree/api.py:536 +#: InvenTree/api.py:520 msgid "User does not have permission to view this model" msgstr "کاربر سطح دسترسی نمایش این مدل را ندارد" @@ -52,25 +52,25 @@ msgstr "" msgid "Error details can be found in the admin panel" msgstr "جزئیات خطا را می توان در پنل مدیریت پیدا کرد" -#: InvenTree/fields.py:139 +#: InvenTree/fields.py:136 msgid "Enter date" msgstr "تاریخ را وارد کنید" -#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 -#: build/serializers.py:531 build/templates/build/sidebar.html:21 -#: company/models.py:849 company/templates/company/sidebar.html:37 -#: order/models.py:1332 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:205 InvenTree/models.py:918 build/serializers.py:452 +#: build/serializers.py:530 build/templates/build/sidebar.html:21 +#: company/models.py:817 company/templates/company/sidebar.html:37 +#: order/models.py:1296 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:3218 part/templates/part/part_sidebar.html:63 +#: part/models.py:3183 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_report.html:172 -#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 -#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 -#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 -#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:230 stock/models.py:2309 stock/models.py:2431 +#: stock/serializers.py:632 stock/serializers.py:790 stock/serializers.py:886 +#: stock/serializers.py:936 stock/serializers.py:1239 stock/serializers.py:1328 +#: stock/serializers.py:1493 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1080 +#: templates/js/translated/part.js:1081 #: templates/js/translated/purchase_order.js:2200 #: templates/js/translated/return_order.js:775 #: templates/js/translated/sales_order.js:1103 @@ -120,15 +120,15 @@ msgstr "تایید آدرس ایمیل" msgid "You must type the same email each time." msgstr "هر بار باید همان ایمیل را تایپ کنید." -#: InvenTree/forms.py:253 InvenTree/forms.py:261 +#: InvenTree/forms.py:248 InvenTree/forms.py:256 msgid "The provided primary email address is not valid." msgstr "آدرس ایمیل اصلی ارائه شده معتبر نیست." -#: InvenTree/forms.py:268 +#: InvenTree/forms.py:263 msgid "The provided email domain is not approved." msgstr "دامنه ایمیل ارائه شده تایید نشده است." -#: InvenTree/forms.py:395 +#: InvenTree/forms.py:390 msgid "Registration is disabled." msgstr "" @@ -171,35 +171,35 @@ msgstr "" msgid "Remove HTML tags from this value" msgstr "" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Connection error" msgstr "خطا در اتصال" -#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 msgid "Server responded with invalid status code" msgstr "سرور با کد وضعیت نامعتبر پاسخ داد" -#: InvenTree/helpers_model.py:158 +#: InvenTree/helpers_model.py:148 msgid "Exception occurred" msgstr "یک استثنا رخ داده است" -#: InvenTree/helpers_model.py:168 +#: InvenTree/helpers_model.py:158 msgid "Server responded with invalid Content-Length value" msgstr "سرور با مقدار طول محتوا نامعتبر پاسخ داد" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:161 msgid "Image size is too large" msgstr "اندازه عکس بسیار بزرگ است" -#: InvenTree/helpers_model.py:183 +#: InvenTree/helpers_model.py:173 msgid "Image download exceeded maximum size" msgstr "" -#: InvenTree/helpers_model.py:188 +#: InvenTree/helpers_model.py:178 msgid "Remote server returned empty response" msgstr "" -#: InvenTree/helpers_model.py:196 +#: InvenTree/helpers_model.py:186 msgid "Supplied URL is not a valid image file" msgstr "" @@ -296,46 +296,50 @@ msgid "Portuguese (Brazilian)" msgstr "" #: InvenTree/locales.py:41 -msgid "Russian" +msgid "Romanian" msgstr "" #: InvenTree/locales.py:42 -msgid "Slovak" +msgid "Russian" msgstr "" #: InvenTree/locales.py:43 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: InvenTree/locales.py:44 -msgid "Serbian" +msgid "Slovenian" msgstr "" #: InvenTree/locales.py:45 -msgid "Swedish" +msgid "Serbian" msgstr "" #: InvenTree/locales.py:46 -msgid "Thai" +msgid "Swedish" msgstr "" #: InvenTree/locales.py:47 -msgid "Turkish" +msgid "Thai" msgstr "" #: InvenTree/locales.py:48 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: InvenTree/locales.py:49 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: InvenTree/locales.py:50 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: InvenTree/locales.py:51 +msgid "Chinese (Simplified)" +msgstr "" + +#: InvenTree/locales.py:52 msgid "Chinese (Traditional)" msgstr "" @@ -344,153 +348,65 @@ msgstr "" msgid "[{site_name}] Log in to the app" msgstr "" -#: InvenTree/magic_login.py:38 company/models.py:133 +#: InvenTree/magic_login.py:38 company/models.py:136 #: company/templates/company/company_base.html:138 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:677 msgid "Email" msgstr "" -#: InvenTree/models.py:107 +#: InvenTree/models.py:105 msgid "Error running plugin validation" msgstr "" -#: InvenTree/models.py:176 +#: InvenTree/models.py:174 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:182 +#: InvenTree/models.py:180 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:183 +#: InvenTree/models.py:181 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:413 +#: InvenTree/models.py:408 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:420 +#: InvenTree/models.py:415 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:426 +#: InvenTree/models.py:421 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:437 +#: InvenTree/models.py:432 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:445 +#: InvenTree/models.py:440 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:476 +#: InvenTree/models.py:471 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:550 -msgid "Missing file" -msgstr "" - -#: InvenTree/models.py:551 -msgid "Missing external link" -msgstr "" - -#: InvenTree/models.py:572 stock/models.py:2437 -#: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:326 -msgid "Attachment" -msgstr "" - -#: InvenTree/models.py:573 -msgid "Select file to attach" -msgstr "" - -#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:831 -#: order/models.py:303 order/models.py:1337 order/models.py:1753 -#: part/admin.py:55 part/models.py:962 -#: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_report.html:164 -#: stock/admin.py:225 templates/js/translated/company.js:1319 -#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2455 -#: templates/js/translated/purchase_order.js:2040 -#: templates/js/translated/purchase_order.js:2204 -#: templates/js/translated/return_order.js:779 -#: templates/js/translated/sales_order.js:1092 -#: templates/js/translated/sales_order.js:2023 -msgid "Link" -msgstr "" - -#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 -#: stock/models.py:836 -msgid "Link to external URL" -msgstr "" - -#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:341 -msgid "Comment" -msgstr "" - -#: InvenTree/models.py:589 -msgid "File comment" -msgstr "" - -#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 -#: common/models.py:2518 common/models.py:2742 common/models.py:2743 -#: common/models.py:2988 common/models.py:2989 part/models.py:3228 -#: part/models.py:3315 part/models.py:3408 part/models.py:3436 -#: plugin/models.py:259 plugin/models.py:260 -#: report/templates/report/inventree_test_report.html:105 -#: templates/js/translated/stock.js:3036 users/models.py:111 -msgid "User" -msgstr "" - -#: InvenTree/models.py:602 -msgid "upload date" -msgstr "" - -#: InvenTree/models.py:624 -msgid "Filename must not be empty" -msgstr "" - -#: InvenTree/models.py:635 -msgid "Invalid attachment directory" -msgstr "" - -#: InvenTree/models.py:665 -#, python-brace-format -msgid "Filename contains illegal character '{c}'" -msgstr "" - -#: InvenTree/models.py:668 -msgid "Filename missing extension" -msgstr "" - -#: InvenTree/models.py:677 -msgid "Attachment with this filename already exists" -msgstr "" - -#: InvenTree/models.py:684 -msgid "Error renaming file" -msgstr "" - -#: InvenTree/models.py:860 +#: InvenTree/models.py:719 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:877 +#: InvenTree/models.py:736 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 -#: common/serializers.py:403 company/models.py:614 machine/models.py:24 -#: part/models.py:898 part/models.py:3659 plugin/models.py:50 -#: report/models.py:149 stock/models.py:72 +#: InvenTree/models.py:766 common/models.py:2623 common/models.py:3036 +#: common/serializers.py:408 company/models.py:580 machine/models.py:24 +#: part/models.py:891 part/models.py:3639 plugin/models.py:51 +#: report/models.py:150 stock/models.py:73 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:83 @@ -501,25 +417,25 @@ msgstr "" #: templates/js/translated/company.js:724 #: templates/js/translated/company.js:913 #: templates/js/translated/company.js:1165 -#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 -#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1187 +#: templates/js/translated/part.js:1475 templates/js/translated/part.js:1611 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "" -#: InvenTree/models.py:913 build/models.py:218 -#: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:523 company/models.py:840 +#: InvenTree/models.py:772 build/models.py:220 +#: build/templates/build/detail.html:24 common/models.py:138 +#: company/models.py:509 company/models.py:808 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 order/models.py:289 -#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 -#: part/models.py:3674 part/templates/part/category.html:82 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:914 +#: part/models.py:3654 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:155 -#: report/models.py:509 report/models.py:535 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 #: report/templates/report/inventree_build_order_report.html:117 -#: stock/admin.py:55 stock/models.py:78 stock/templates/stock/location.html:125 +#: stock/admin.py:54 stock/models.py:79 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 @@ -528,10 +444,10 @@ msgstr "" #: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 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:2354 -#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1239 +#: templates/js/translated/part.js:1484 templates/js/translated/part.js:1622 +#: templates/js/translated/part.js:1959 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2897 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1706 #: templates/js/translated/purchase_order.js:1849 @@ -544,149 +460,141 @@ msgstr "" msgid "Description" msgstr "" -#: InvenTree/models.py:914 stock/models.py:79 +#: InvenTree/models.py:773 stock/models.py:80 msgid "Description (optional)" msgstr "" -#: InvenTree/models.py:923 -msgid "parent" -msgstr "" - -#: InvenTree/models.py:929 templates/js/translated/part.js:2793 +#: InvenTree/models.py:788 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "" -#: InvenTree/models.py:1035 +#: InvenTree/models.py:918 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:1064 +#: InvenTree/models.py:947 msgid "Barcode Data" msgstr "" -#: InvenTree/models.py:1065 +#: InvenTree/models.py:948 msgid "Third party barcode data" msgstr "" -#: InvenTree/models.py:1071 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:1072 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:1125 +#: InvenTree/models.py:1008 msgid "Existing barcode found" msgstr "" -#: InvenTree/models.py:1168 +#: InvenTree/models.py:1051 msgid "Server Error" msgstr "" -#: InvenTree/models.py:1169 +#: InvenTree/models.py:1052 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:62 part/models.py:4212 +#: InvenTree/serializers.py:63 part/models.py:4192 msgid "Must be a valid number" msgstr "" -#: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:3036 +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3001 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "" -#: InvenTree/serializers.py:102 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:441 +#: InvenTree/serializers.py:442 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:453 +#: InvenTree/serializers.py:454 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:472 +#: InvenTree/serializers.py:473 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:474 +#: InvenTree/serializers.py:475 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:481 +#: InvenTree/serializers.py:482 msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:542 -msgid "Filename" -msgstr "" - -#: InvenTree/serializers.py:576 +#: InvenTree/serializers.py:540 msgid "Invalid value" msgstr "" -#: InvenTree/serializers.py:596 +#: InvenTree/serializers.py:560 msgid "Data File" msgstr "فایل‌های داده" -#: InvenTree/serializers.py:597 +#: InvenTree/serializers.py:561 msgid "Select data file for upload" msgstr "فایل را برای بارگذاری انتخاب کنید" -#: InvenTree/serializers.py:614 +#: InvenTree/serializers.py:578 msgid "Unsupported file type" msgstr "این نوع فایل پشتیبانی نمی‌شود" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:584 msgid "File is too large" msgstr "حجم فایل خیلی بزرگ است" -#: InvenTree/serializers.py:641 +#: InvenTree/serializers.py:605 msgid "No columns found in file" msgstr "هیچ ستونی در فایل یافت نشد" -#: InvenTree/serializers.py:644 +#: InvenTree/serializers.py:608 msgid "No data rows found in file" msgstr "هیچ ردیف داده ای در فایل یافت نشد" -#: InvenTree/serializers.py:757 +#: InvenTree/serializers.py:721 msgid "No data rows provided" msgstr "هیچ ردیف داده ای ارائه نشده است" -#: InvenTree/serializers.py:760 +#: InvenTree/serializers.py:724 msgid "No data columns supplied" msgstr "هیچ ستون داده ای ارائه نشده است" -#: InvenTree/serializers.py:827 +#: InvenTree/serializers.py:791 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "ستون مورد نیاز وجود ندارد: \"{name}\"" -#: InvenTree/serializers.py:836 +#: InvenTree/serializers.py:800 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "ستون تکراری: '{col}'" -#: InvenTree/serializers.py:859 +#: InvenTree/serializers.py:840 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:860 +#: InvenTree/serializers.py:841 msgid "URL of remote image file" msgstr "آدرس فایل تصویری از راه دور" -#: InvenTree/serializers.py:878 +#: InvenTree/serializers.py:859 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/status.py:66 part/serializers.py:1178 +#: InvenTree/status.py:66 part/serializers.py:1174 msgid "Background worker check failed" msgstr "" @@ -698,27 +606,27 @@ msgstr "" msgid "InvenTree system health checks failed" msgstr "" -#: InvenTree/templatetags/inventree_extras.py:183 +#: InvenTree/templatetags/inventree_extras.py:184 msgid "Unknown database" msgstr "" -#: InvenTree/validators.py:31 InvenTree/validators.py:33 +#: InvenTree/validators.py:32 InvenTree/validators.py:34 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:39 +#: InvenTree/validators.py:40 msgid "Not a valid currency code" msgstr "" -#: InvenTree/validators.py:121 InvenTree/validators.py:137 +#: InvenTree/validators.py:118 InvenTree/validators.py:134 msgid "Overage value must not be negative" msgstr "" -#: InvenTree/validators.py:139 +#: InvenTree/validators.py:136 msgid "Overage must not exceed 100%" msgstr "" -#: InvenTree/validators.py:145 +#: InvenTree/validators.py:142 msgid "Invalid value for overage" msgstr "" @@ -750,14 +658,14 @@ msgstr "" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: build/api.py:299 part/models.py:4070 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:300 part/models.py:4084 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4064 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2529 #: templates/js/translated/table_filters.js:186 @@ -778,30 +686,30 @@ msgstr "" msgid "Allocated" msgstr "" -#: build/api.py:311 company/models.py:904 company/serializers.py:383 +#: build/api.py:311 company/models.py:872 company/serializers.py:359 #: 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:2561 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:234 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 -#: templates/js/translated/part.js:699 +#: templates/js/translated/part.js:693 templates/js/translated/part.js:695 +#: templates/js/translated/part.js:700 #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:575 msgid "Available" msgstr "" -#: build/models.py:83 build/templates/build/build_base.html:9 +#: build/models.py:85 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_report.html:105 -#: stock/serializers.py:83 templates/email/build_order_completed.html:16 +#: stock/serializers.py:82 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:2892 msgid "Build Order" msgstr "" -#: build/models.py:84 build/templates/build/build_base.html:13 +#: build/models.py:86 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 @@ -812,25 +720,25 @@ msgstr "" msgid "Build Orders" msgstr "" -#: build/models.py:131 +#: build/models.py:133 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:142 order/models.py:240 +#: build/models.py:144 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "" -#: build/models.py:148 +#: build/models.py:150 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:209 +#: build/models.py:211 msgid "Build Order Reference" msgstr "" -#: build/models.py:210 order/models.py:463 order/models.py:928 -#: order/models.py:1325 order/models.py:2056 part/admin.py:419 -#: part/models.py:4105 part/templates/part/upload_bom.html:54 +#: build/models.py:212 order/models.py:463 order/models.py:926 +#: order/models.py:1289 order/models.py:2020 part/admin.py:411 +#: part/models.py:4085 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_purchase_order_report.html:28 #: report/templates/report/inventree_return_order_report.html:26 @@ -844,27 +752,27 @@ msgstr "" msgid "Reference" msgstr "" -#: build/models.py:221 +#: build/models.py:223 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:229 build/templates/build/build_base.html:183 +#: build/models.py:231 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:230 +#: build/models.py:232 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:235 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 -#: order/models.py:1450 order/models.py:1595 order/models.py:1596 -#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 -#: part/models.py:3191 part/models.py:3335 part/models.py:3358 -#: part/models.py:3379 part/models.py:3401 part/models.py:3511 -#: part/models.py:3807 part/models.py:3963 part/models.py:4056 -#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 +#: build/models.py:237 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1026 order/api.py:805 +#: order/models.py:1414 order/models.py:1559 order/models.py:1560 +#: part/api.py:1494 part/api.py:1788 part/models.py:395 part/models.py:3012 +#: part/models.py:3156 part/models.py:3303 part/models.py:3324 +#: part/models.py:3346 part/models.py:3477 part/models.py:3787 +#: part/models.py:3943 part/models.py:4036 part/models.py:4395 +#: part/serializers.py:1120 part/serializers.py:1726 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -875,8 +783,8 @@ msgstr "" #: report/templates/report/inventree_return_order_report.html:24 #: report/templates/report/inventree_sales_order_report.html:27 #: report/templates/report/inventree_stock_location_report.html:102 -#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 -#: stock/serializers.py:818 templates/InvenTree/search.html:82 +#: stock/serializers.py:109 stock/serializers.py:157 stock/serializers.py:423 +#: stock/serializers.py:820 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 @@ -889,8 +797,8 @@ msgstr "" #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 -#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2323 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:1944 templates/js/translated/part.js:2016 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 #: templates/js/translated/purchase_order.js:751 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1848 @@ -908,107 +816,107 @@ msgstr "" msgid "Part" msgstr "" -#: build/models.py:243 +#: build/models.py:245 msgid "Select part to build" msgstr "" -#: build/models.py:248 +#: build/models.py:250 msgid "Sales Order Reference" msgstr "مرجع سفارش فروش" -#: build/models.py:252 +#: build/models.py:254 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:257 build/serializers.py:1000 +#: build/models.py:259 build/serializers.py:999 #: templates/js/translated/build.js:1731 #: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "منبع محل" -#: build/models.py:261 +#: build/models.py:263 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:266 +#: build/models.py:268 msgid "Destination Location" msgstr "مقصد" -#: build/models.py:270 +#: build/models.py:272 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:274 +#: build/models.py:276 msgid "Build Quantity" msgstr "" -#: build/models.py:277 +#: build/models.py:279 msgid "Number of stock items to build" msgstr "" -#: build/models.py:281 +#: build/models.py:283 msgid "Completed items" msgstr "" -#: build/models.py:283 +#: build/models.py:285 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:287 +#: build/models.py:289 msgid "Build Status" msgstr "" -#: build/models.py:291 +#: build/models.py:293 msgid "Build status code" msgstr "" -#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 -#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 +#: build/models.py:302 build/serializers.py:286 order/serializers.py:580 +#: stock/models.py:838 stock/serializers.py:74 stock/serializers.py:1458 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "" -#: build/models.py:304 build/serializers.py:288 +#: build/models.py:306 build/serializers.py:287 msgid "Batch code for this build output" msgstr "" -#: build/models.py:307 order/models.py:316 order/serializers.py:120 -#: part/models.py:1122 part/templates/part/part_base.html:310 +#: build/models.py:309 order/models.py:316 order/serializers.py:119 +#: part/models.py:1115 part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:338 #: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "" -#: build/models.py:311 +#: build/models.py:313 msgid "Target completion date" msgstr "" -#: build/models.py:312 +#: build/models.py:314 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:315 order/models.py:521 order/models.py:2101 +#: build/models.py:317 order/models.py:521 order/models.py:2065 #: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "" -#: build/models.py:321 +#: build/models.py:323 msgid "completed by" msgstr "" -#: build/models.py:329 templates/js/translated/build.js:2207 +#: build/models.py:331 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "" -#: build/models.py:330 +#: build/models.py:332 msgid "User who issued this build order" msgstr "" -#: build/models.py:338 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:145 +#: build/models.py:340 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:147 #: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:232 part/models.py:1139 +#: order/templates/order/sales_order_base.html:232 part/models.py:1132 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_report.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 @@ -1019,31 +927,36 @@ msgstr "" msgid "Responsible" msgstr "" -#: build/models.py:339 +#: build/models.py:341 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:344 build/templates/build/detail.html:108 +#: build/models.py:346 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:184 -#: part/templates/part/part_base.html:383 stock/models.py:836 +#: part/templates/part/part_base.html:383 stock/models.py:834 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "" -#: build/models.py:349 +#: build/models.py:347 common/models.py:3178 part/models.py:956 +#: stock/models.py:834 +msgid "Link to external URL" +msgstr "" + +#: build/models.py:351 msgid "Build Priority" msgstr "" -#: build/models.py:352 +#: build/models.py:354 msgid "Priority of this build order" msgstr "" -#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: build/models.py:361 common/models.py:131 order/admin.py:18 #: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 #: templates/js/translated/build.js:2144 #: templates/js/translated/purchase_order.js:1710 @@ -1054,65 +967,65 @@ msgstr "" msgid "Project Code" msgstr "" -#: build/models.py:360 +#: build/models.py:362 msgid "Project code for this build order" msgstr "" -#: build/models.py:593 build/models.py:658 +#: build/models.py:595 build/models.py:660 msgid "Failed to offload task to complete build allocations" msgstr "" -#: build/models.py:615 +#: build/models.py:617 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:621 +#: build/models.py:623 msgid "A build order has been completed" msgstr "" -#: build/models.py:847 build/models.py:932 +#: build/models.py:849 build/models.py:934 msgid "No build output specified" msgstr "" -#: build/models.py:850 +#: build/models.py:852 msgid "Build output is already completed" msgstr "" -#: build/models.py:853 +#: build/models.py:855 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 -#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 -#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 -#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 +#: build/models.py:938 build/serializers.py:219 build/serializers.py:268 +#: build/serializers.py:866 order/models.py:559 order/serializers.py:432 +#: order/serializers.py:575 part/serializers.py:1484 part/serializers.py:1884 +#: stock/models.py:677 stock/models.py:1495 stock/serializers.py:603 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:941 build/serializers.py:225 +#: build/models.py:943 build/serializers.py:224 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1001 build/serializers.py:548 +#: build/models.py:1003 build/serializers.py:547 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1352 +#: build/models.py:1344 msgid "Build Order Line Item" msgstr "" -#: build/models.py:1377 +#: build/models.py:1369 msgid "Build object" msgstr "" -#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 -#: build/serializers.py:254 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2539 -#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 -#: part/forms.py:48 part/models.py:3205 part/models.py:4078 +#: build/models.py:1383 build/models.py:1639 build/serializers.py:206 +#: build/serializers.py:253 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2509 +#: order/models.py:1272 order/models.py:1931 order/serializers.py:1327 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3170 part/models.py:4058 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1121,8 +1034,8 @@ msgstr "" #: report/templates/report/inventree_sales_order_report.html:29 #: report/templates/report/inventree_stock_location_report.html:104 #: report/templates/report/inventree_test_report.html:90 -#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 -#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:125 stock/serializers.py:165 stock/serializers.py:594 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1133,8 +1046,8 @@ msgstr "" #: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 #: templates/js/translated/model_renderers.js:236 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:962 +#: templates/js/translated/part.js:1812 templates/js/translated/part.js:3342 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1154,38 +1067,38 @@ msgstr "" msgid "Quantity" msgstr "" -#: build/models.py:1392 +#: build/models.py:1384 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1472 +#: build/models.py:1464 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1481 +#: build/models.py:1473 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1491 order/models.py:1918 +#: build/models.py:1483 order/models.py:1882 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1497 order/models.py:1921 +#: build/models.py:1489 order/models.py:1885 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1503 +#: build/models.py:1495 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1562 +#: build/models.py:1554 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 -#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 -#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: build/models.py:1626 build/serializers.py:846 order/serializers.py:1171 +#: order/serializers.py:1192 stock/models.py:358 stock/serializers.py:91 +#: stock/serializers.py:697 stock/serializers.py:1177 stock/serializers.py:1289 #: stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 @@ -1201,70 +1114,70 @@ msgstr "" msgid "Stock Item" msgstr "" -#: build/models.py:1635 +#: build/models.py:1627 msgid "Source stock item" msgstr "" -#: build/models.py:1648 +#: build/models.py:1640 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1656 +#: build/models.py:1648 msgid "Install into" msgstr "" -#: build/models.py:1657 +#: build/models.py:1649 msgid "Destination stock item" msgstr "" -#: build/serializers.py:157 build/serializers.py:876 +#: build/serializers.py:156 build/serializers.py:875 #: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "" -#: build/serializers.py:169 +#: build/serializers.py:168 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:173 +#: build/serializers.py:172 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:177 +#: build/serializers.py:176 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:188 +#: build/serializers.py:187 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:208 build/serializers.py:255 +#: build/serializers.py:207 build/serializers.py:254 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:276 +#: build/serializers.py:275 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:279 +#: build/serializers.py:278 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:294 order/serializers.py:589 order/serializers.py:1343 -#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:293 order/serializers.py:588 order/serializers.py:1331 +#: stock/serializers.py:614 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:295 +#: build/serializers.py:294 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 -#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 -#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 -#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 -#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 +#: build/serializers.py:299 build/serializers.py:440 build/serializers.py:512 +#: order/serializers.py:564 order/serializers.py:672 order/serializers.py:1656 +#: part/serializers.py:1140 stock/serializers.py:100 stock/serializers.py:625 +#: stock/serializers.py:785 stock/serializers.py:881 stock/serializers.py:1321 +#: stock/serializers.py:1577 stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:1001 #: templates/js/translated/build.js:2372 @@ -1280,54 +1193,54 @@ msgstr "" msgid "Location" msgstr "" -#: build/serializers.py:301 +#: build/serializers.py:300 msgid "Stock location for build output" msgstr "" -#: build/serializers.py:315 +#: build/serializers.py:314 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:316 +#: build/serializers.py:315 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:331 +#: build/serializers.py:330 msgid "Serial numbers must be provided for trackable parts" msgstr "" -#: build/serializers.py:356 stock/api.py:1031 +#: build/serializers.py:355 stock/api.py:1041 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:403 build/serializers.py:465 build/serializers.py:554 +#: build/serializers.py:402 build/serializers.py:464 build/serializers.py:553 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:442 +#: build/serializers.py:441 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:448 +#: build/serializers.py:447 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:449 +#: build/serializers.py:448 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:454 +#: build/serializers.py:453 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:514 +#: build/serializers.py:513 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:520 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:952 -#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 -#: stock/serializers.py:930 stock/serializers.py:1469 +#: build/serializers.py:519 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2044 order/serializers.py:596 stock/admin.py:164 +#: stock/serializers.py:932 stock/serializers.py:1465 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 @@ -1339,188 +1252,188 @@ msgstr "" msgid "Status" msgstr "" -#: build/serializers.py:526 +#: build/serializers.py:525 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:527 +#: build/serializers.py:526 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:611 msgid "Consume Allocated Stock" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:612 msgid "Consume any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:619 +#: build/serializers.py:618 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:620 +#: build/serializers.py:619 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:646 msgid "Not permitted" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:647 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:648 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:679 +#: build/serializers.py:678 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:681 +#: build/serializers.py:680 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:691 +#: build/serializers.py:690 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:696 +#: build/serializers.py:695 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:697 +#: build/serializers.py:696 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:707 templates/js/translated/build.js:315 +#: build/serializers.py:706 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:712 order/serializers.py:301 order/serializers.py:1246 +#: build/serializers.py:711 order/serializers.py:300 order/serializers.py:1234 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:713 +#: build/serializers.py:712 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:723 templates/js/translated/build.js:319 +#: build/serializers.py:722 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:732 templates/js/translated/build.js:303 +#: build/serializers.py:731 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:770 +#: build/serializers.py:769 msgid "Build Line" msgstr "" -#: build/serializers.py:780 +#: build/serializers.py:779 msgid "Build output" msgstr "" -#: build/serializers.py:788 +#: build/serializers.py:787 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:824 +#: build/serializers.py:823 msgid "Build Line Item" msgstr "" -#: build/serializers.py:838 +#: build/serializers.py:837 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:853 stock/serializers.py:1194 +#: build/serializers.py:852 stock/serializers.py:1190 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:901 order/serializers.py:1237 +#: build/serializers.py:900 order/serializers.py:1225 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:907 +#: build/serializers.py:906 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:914 +#: build/serializers.py:913 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:938 order/serializers.py:1489 +#: build/serializers.py:937 order/serializers.py:1477 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:1001 +#: build/serializers.py:1000 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:1009 +#: build/serializers.py:1008 msgid "Exclude Location" msgstr "" -#: build/serializers.py:1010 +#: build/serializers.py:1009 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:1015 +#: build/serializers.py:1014 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:1016 +#: build/serializers.py:1015 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:1021 +#: build/serializers.py:1020 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:1022 +#: build/serializers.py:1021 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:1027 +#: build/serializers.py:1026 msgid "Optional Items" msgstr "" -#: build/serializers.py:1028 +#: build/serializers.py:1027 msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1050 +#: build/serializers.py:1049 msgid "Failed to start auto-allocation task" msgstr "" -#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 -#: stock/api.py:794 +#: build/serializers.py:1139 part/models.py:3953 part/models.py:4387 +#: stock/api.py:804 msgid "BOM Item" msgstr "" -#: build/serializers.py:1149 templates/js/translated/index.js:130 +#: build/serializers.py:1148 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:832 part/serializers.py:1506 +#: build/serializers.py:1153 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:828 part/serializers.py:1502 #: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 -#: templates/js/translated/build.js:2613 templates/js/translated/part.js:709 -#: templates/js/translated/part.js:2148 +#: templates/js/translated/build.js:2613 templates/js/translated/part.js:710 +#: templates/js/translated/part.js:2149 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1159 part/serializers.py:1508 +#: build/serializers.py:1158 part/serializers.py:1504 #: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 +#: build/serializers.py:1163 part/bom.py:172 part/serializers.py:1527 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1929 msgid "Available Stock" @@ -1544,7 +1457,7 @@ msgstr "" #: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 #: order/status_codes.py:44 order/status_codes.py:69 #: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:165 report/models.py:443 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 msgid "Complete" msgstr "" @@ -1674,11 +1587,11 @@ msgstr "" #: build/templates/build/build_base.html:160 #: build/templates/build/detail.html:138 order/models.py:309 -#: order/models.py:1343 order/templates/order/order_base.html:186 +#: order/models.py:1307 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:196 #: report/templates/report/inventree_build_order_report.html:125 -#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1831 #: templates/js/translated/purchase_order.js:1739 #: templates/js/translated/purchase_order.js:2147 #: templates/js/translated/return_order.js:346 @@ -1711,8 +1624,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 -#: order/models.py:1587 order/models.py:1701 order/models.py:1855 +#: build/templates/build/detail.html:101 order/api.py:1463 order/models.py:845 +#: order/models.py:1551 order/models.py:1665 order/models.py:1819 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_report.html:135 @@ -1762,7 +1675,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1479 +#: build/templates/build/detail.html:49 order/models.py:1443 #: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "" @@ -1775,7 +1688,7 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:163 +#: build/templates/build/detail.html:80 stock/admin.py:162 #: stock/templates/stock/item_base.html:162 #: templates/js/translated/build.js:1380 #: templates/js/translated/model_renderers.js:241 @@ -1894,11 +1807,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:436 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -1914,6 +1827,34 @@ msgstr "" msgid "Incomplete Outputs" msgstr "" +#: common/api.py:689 +msgid "Is Link" +msgstr "" + +#: common/api.py:697 +msgid "Is File" +msgstr "" + +#: common/api.py:739 +msgid "User does not have permission to delete this attachment" +msgstr "" + +#: common/currency.py:130 +msgid "Invalid currency code" +msgstr "" + +#: common/currency.py:132 +msgid "Duplicate currency code" +msgstr "" + +#: common/currency.py:137 +msgid "No valid currency codes provided" +msgstr "" + +#: common/currency.py:154 +msgid "No plugin" +msgstr "" + #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1952,1507 +1893,1512 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:71 +#: common/models.py:73 msgid "Updated" msgstr "" -#: common/models.py:72 +#: common/models.py:74 msgid "Timestamp of last update" msgstr "" -#: common/models.py:105 +#: common/models.py:107 msgid "Site URL is locked by configuration" msgstr "" -#: common/models.py:130 +#: common/models.py:132 msgid "Unique project code" msgstr "" -#: common/models.py:137 +#: common/models.py:139 msgid "Project description" msgstr "" -#: common/models.py:146 +#: common/models.py:148 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:766 +#: common/models.py:765 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:770 +#: common/models.py:769 msgid "Settings value" msgstr "" -#: common/models.py:822 +#: common/models.py:821 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:838 +#: common/models.py:837 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:846 +#: common/models.py:845 msgid "Value must be an integer value" msgstr "" -#: common/models.py:883 +#: common/models.py:882 msgid "Key string must be unique" msgstr "" -#: common/models.py:1115 +#: common/models.py:1114 msgid "No group" msgstr "" -#: common/models.py:1158 -msgid "An empty domain is not allowed." -msgstr "" - -#: common/models.py:1160 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "" - -#: common/models.py:1172 -msgid "No plugin" -msgstr "" - -#: common/models.py:1260 +#: common/models.py:1213 msgid "Restart required" msgstr "" -#: common/models.py:1262 +#: common/models.py:1215 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1269 +#: common/models.py:1222 msgid "Pending migrations" msgstr "" -#: common/models.py:1270 +#: common/models.py:1223 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1275 +#: common/models.py:1228 msgid "Server Instance Name" msgstr "" -#: common/models.py:1277 +#: common/models.py:1230 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1281 +#: common/models.py:1234 msgid "Use instance name" msgstr "" -#: common/models.py:1282 +#: common/models.py:1235 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1287 +#: common/models.py:1240 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1288 +#: common/models.py:1241 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1293 company/models.py:108 company/models.py:109 +#: common/models.py:1246 company/models.py:111 company/models.py:112 msgid "Company name" msgstr "" -#: common/models.py:1294 +#: common/models.py:1247 msgid "Internal company name" msgstr "" -#: common/models.py:1298 +#: common/models.py:1251 msgid "Base URL" msgstr "" -#: common/models.py:1299 +#: common/models.py:1252 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1305 +#: common/models.py:1258 msgid "Default Currency" msgstr "" -#: common/models.py:1306 +#: common/models.py:1259 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1312 +#: common/models.py:1265 +msgid "Supported Currencies" +msgstr "" + +#: common/models.py:1266 +msgid "List of supported currency codes" +msgstr "" + +#: common/models.py:1272 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1314 +#: common/models.py:1274 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1317 common/models.py:1373 common/models.py:1386 -#: common/models.py:1394 common/models.py:1403 common/models.py:1412 -#: common/models.py:1620 common/models.py:1642 common/models.py:1757 -#: common/models.py:2076 +#: common/models.py:1277 common/models.py:1333 common/models.py:1346 +#: common/models.py:1354 common/models.py:1363 common/models.py:1372 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:2046 msgid "days" msgstr "" -#: common/models.py:1321 +#: common/models.py:1281 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1322 +#: common/models.py:1282 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1327 +#: common/models.py:1287 msgid "Download from URL" msgstr "" -#: common/models.py:1329 +#: common/models.py:1289 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1335 +#: common/models.py:1295 msgid "Download Size Limit" msgstr "" -#: common/models.py:1336 +#: common/models.py:1296 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1342 +#: common/models.py:1302 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1344 +#: common/models.py:1304 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:1349 +#: common/models.py:1309 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1350 +#: common/models.py:1310 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1355 +#: common/models.py:1315 msgid "Require confirm" msgstr "" -#: common/models.py:1356 +#: common/models.py:1316 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1361 +#: common/models.py:1321 msgid "Tree Depth" msgstr "" -#: common/models.py:1363 +#: common/models.py:1323 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1369 +#: common/models.py:1329 msgid "Update Check Interval" msgstr "" -#: common/models.py:1370 +#: common/models.py:1330 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1376 +#: common/models.py:1336 msgid "Automatic Backup" msgstr "" -#: common/models.py:1377 +#: common/models.py:1337 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1382 +#: common/models.py:1342 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1383 +#: common/models.py:1343 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1389 +#: common/models.py:1349 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1391 +#: common/models.py:1351 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1398 +#: common/models.py:1358 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1400 +#: common/models.py:1360 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1407 +#: common/models.py:1367 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1409 +#: common/models.py:1369 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1416 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1376 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1417 +#: common/models.py:1377 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1422 +#: common/models.py:1382 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1423 +#: common/models.py:1383 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1429 +#: common/models.py:1389 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1430 +#: common/models.py:1390 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1435 +#: common/models.py:1395 msgid "Part Revisions" msgstr "" -#: common/models.py:1436 +#: common/models.py:1396 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1441 +#: common/models.py:1401 msgid "Allow Deletion from Assembly" msgstr "" -#: common/models.py:1442 +#: common/models.py:1402 msgid "Allow deletion of parts which are used in an assembly" msgstr "" -#: common/models.py:1447 +#: common/models.py:1407 msgid "IPN Regex" msgstr "" -#: common/models.py:1448 +#: common/models.py:1408 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1451 +#: common/models.py:1411 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1452 +#: common/models.py:1412 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1457 +#: common/models.py:1417 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1458 +#: common/models.py:1418 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1463 +#: common/models.py:1423 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1464 +#: common/models.py:1424 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1469 +#: common/models.py:1429 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1470 +#: common/models.py:1430 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1475 +#: common/models.py:1435 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1476 +#: common/models.py:1436 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1481 +#: common/models.py:1441 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1482 +#: common/models.py:1442 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1487 part/admin.py:108 part/models.py:3815 -#: report/models.py:293 report/models.py:360 report/serializers.py:90 -#: report/serializers.py:131 stock/serializers.py:228 +#: common/models.py:1447 part/admin.py:108 part/models.py:3795 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:227 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1488 +#: common/models.py:1448 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 +#: common/models.py:1453 part/admin.py:91 part/admin.py:425 part/models.py:1052 #: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" msgstr "" -#: common/models.py:1494 +#: common/models.py:1454 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1499 part/admin.py:95 part/models.py:1065 +#: common/models.py:1459 part/admin.py:95 part/models.py:1058 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1500 +#: common/models.py:1460 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1505 part/admin.py:100 part/models.py:1077 +#: common/models.py:1465 part/admin.py:100 part/models.py:1070 msgid "Purchaseable" msgstr "" -#: common/models.py:1506 +#: common/models.py:1466 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1511 part/admin.py:104 part/models.py:1083 +#: common/models.py:1471 part/admin.py:104 part/models.py:1076 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1512 +#: common/models.py:1472 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1517 part/admin.py:113 part/models.py:1071 +#: common/models.py:1477 part/admin.py:113 part/models.py:1064 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" msgstr "" -#: common/models.py:1518 +#: common/models.py:1478 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1523 part/admin.py:117 part/models.py:1093 +#: common/models.py:1483 part/admin.py:117 part/models.py:1086 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" msgstr "" -#: common/models.py:1524 +#: common/models.py:1484 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1529 +#: common/models.py:1489 msgid "Show Import in Views" msgstr "" -#: common/models.py:1530 +#: common/models.py:1490 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1535 +#: common/models.py:1495 msgid "Show related parts" msgstr "" -#: common/models.py:1536 +#: common/models.py:1496 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1541 +#: common/models.py:1501 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1542 +#: common/models.py:1502 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1547 templates/js/translated/part.js:107 +#: common/models.py:1507 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1549 +#: common/models.py:1509 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1555 +#: common/models.py:1515 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1556 +#: common/models.py:1516 msgid "Format to display the part name" msgstr "" -#: common/models.py:1562 +#: common/models.py:1522 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1563 +#: common/models.py:1523 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1567 +#: common/models.py:1527 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1569 +#: common/models.py:1529 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1575 +#: common/models.py:1535 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1577 +#: common/models.py:1537 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1583 +#: common/models.py:1548 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1585 +#: common/models.py:1550 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1591 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1593 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1599 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1601 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1607 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1609 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1615 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1617 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1630 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1632 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1638 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1640 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1647 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1648 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1653 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1655 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1661 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1662 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1667 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1669 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1675 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1676 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1681 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1682 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1687 +#: common/models.py:1657 msgid "Log Report Errors" msgstr "" -#: common/models.py:1688 +#: common/models.py:1658 msgid "Log errors which occur when generating reports" msgstr "" -#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:301 +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:302 msgid "Page Size" msgstr "" -#: common/models.py:1694 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1699 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1700 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1705 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1707 +#: common/models.py:1677 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1713 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1714 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1719 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1720 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1725 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1727 +#: common/models.py:1697 msgid "Determines default behavior when a stock item is depleted" msgstr "" -#: common/models.py:1733 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1735 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1740 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1741 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1746 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1747 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1752 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1754 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1761 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1762 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1767 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1768 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1773 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1774 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1778 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1779 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1784 +#: common/models.py:1754 msgid "Check BOM when installing items" msgstr "" -#: common/models.py:1786 +#: common/models.py:1756 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "" -#: common/models.py:1792 +#: common/models.py:1762 msgid "Allow Out of Stock Transfer" msgstr "" -#: common/models.py:1794 +#: common/models.py:1764 msgid "Allow stock items which are not in stock to be transferred between stock locations" msgstr "" -#: common/models.py:1800 +#: common/models.py:1770 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1802 +#: common/models.py:1772 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1808 common/models.py:1836 common/models.py:1858 -#: common/models.py:1894 +#: common/models.py:1778 common/models.py:1806 common/models.py:1828 +#: common/models.py:1864 msgid "Require Responsible Owner" msgstr "" -#: common/models.py:1809 common/models.py:1837 common/models.py:1859 -#: common/models.py:1895 +#: common/models.py:1779 common/models.py:1807 common/models.py:1829 +#: common/models.py:1865 msgid "A responsible owner must be assigned to each order" msgstr "" -#: common/models.py:1814 +#: common/models.py:1784 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1816 +#: common/models.py:1786 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:1822 +#: common/models.py:1792 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1823 +#: common/models.py:1793 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1828 +#: common/models.py:1798 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1830 +#: common/models.py:1800 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1842 +#: common/models.py:1812 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1844 +#: common/models.py:1814 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1850 +#: common/models.py:1820 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1852 +#: common/models.py:1822 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1864 +#: common/models.py:1834 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1865 +#: common/models.py:1835 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1870 +#: common/models.py:1840 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1872 +#: common/models.py:1842 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1878 +#: common/models.py:1848 msgid "Mark Shipped Orders as Complete" msgstr "" -#: common/models.py:1880 +#: common/models.py:1850 msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" msgstr "" -#: common/models.py:1886 +#: common/models.py:1856 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1888 +#: common/models.py:1858 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1900 +#: common/models.py:1870 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1902 +#: common/models.py:1872 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1908 +#: common/models.py:1878 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1910 +#: common/models.py:1880 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1917 +#: common/models.py:1887 msgid "Enable password forgot" msgstr "" -#: common/models.py:1918 +#: common/models.py:1888 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1923 +#: common/models.py:1893 msgid "Enable registration" msgstr "" -#: common/models.py:1924 +#: common/models.py:1894 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1929 +#: common/models.py:1899 msgid "Enable SSO" msgstr "" -#: common/models.py:1930 +#: common/models.py:1900 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1935 +#: common/models.py:1905 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1937 +#: common/models.py:1907 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1943 +#: common/models.py:1913 msgid "Email required" msgstr "" -#: common/models.py:1944 +#: common/models.py:1914 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1949 +#: common/models.py:1919 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1951 +#: common/models.py:1921 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1957 +#: common/models.py:1927 msgid "Mail twice" msgstr "" -#: common/models.py:1958 +#: common/models.py:1928 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1963 +#: common/models.py:1933 msgid "Password twice" msgstr "" -#: common/models.py:1964 +#: common/models.py:1934 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1969 +#: common/models.py:1939 msgid "Allowed domains" msgstr "" -#: common/models.py:1971 +#: common/models.py:1941 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1977 +#: common/models.py:1947 msgid "Group on signup" msgstr "" -#: common/models.py:1978 +#: common/models.py:1948 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1983 +#: common/models.py:1953 msgid "Enforce MFA" msgstr "" -#: common/models.py:1984 +#: common/models.py:1954 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1989 +#: common/models.py:1959 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1991 +#: common/models.py:1961 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1999 +#: common/models.py:1969 msgid "Check for plugin updates" msgstr "" -#: common/models.py:2000 +#: common/models.py:1970 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:2006 +#: common/models.py:1976 msgid "Enable URL integration" msgstr "" -#: common/models.py:2007 +#: common/models.py:1977 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:2013 +#: common/models.py:1983 msgid "Enable navigation integration" msgstr "" -#: common/models.py:2014 +#: common/models.py:1984 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:2020 +#: common/models.py:1990 msgid "Enable app integration" msgstr "" -#: common/models.py:2021 +#: common/models.py:1991 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:2027 +#: common/models.py:1997 msgid "Enable schedule integration" msgstr "" -#: common/models.py:2028 +#: common/models.py:1998 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:2034 +#: common/models.py:2004 msgid "Enable event integration" msgstr "" -#: common/models.py:2035 +#: common/models.py:2005 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:2041 +#: common/models.py:2011 msgid "Enable project codes" msgstr "" -#: common/models.py:2042 +#: common/models.py:2012 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:2047 +#: common/models.py:2017 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:2049 +#: common/models.py:2019 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:2055 +#: common/models.py:2025 msgid "Exclude External Locations" msgstr "" -#: common/models.py:2057 +#: common/models.py:2027 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:2063 +#: common/models.py:2033 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:2065 +#: common/models.py:2035 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:2071 +#: common/models.py:2041 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:2073 +#: common/models.py:2043 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:2080 +#: common/models.py:2050 msgid "Display Users full names" msgstr "" -#: common/models.py:2081 +#: common/models.py:2051 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:2086 +#: common/models.py:2056 msgid "Enable Test Station Data" msgstr "" -#: common/models.py:2087 +#: common/models.py:2057 msgid "Enable test station data collection for test results" msgstr "" -#: common/models.py:2099 common/models.py:2509 +#: common/models.py:2069 common/models.py:2479 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2142 +#: common/models.py:2112 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2144 +#: common/models.py:2114 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2150 +#: common/models.py:2120 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2151 +#: common/models.py:2121 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2156 +#: common/models.py:2126 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2157 +#: common/models.py:2127 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2162 +#: common/models.py:2132 msgid "Show latest parts" msgstr "" -#: common/models.py:2163 +#: common/models.py:2133 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2168 +#: common/models.py:2138 msgid "Show invalid BOMs" msgstr "" -#: common/models.py:2169 +#: common/models.py:2139 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2174 +#: common/models.py:2144 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2175 +#: common/models.py:2145 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2180 +#: common/models.py:2150 msgid "Show low stock" msgstr "" -#: common/models.py:2181 +#: common/models.py:2151 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2186 +#: common/models.py:2156 msgid "Show depleted stock" msgstr "" -#: common/models.py:2187 +#: common/models.py:2157 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2192 +#: common/models.py:2162 msgid "Show needed stock" msgstr "" -#: common/models.py:2193 +#: common/models.py:2163 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2198 +#: common/models.py:2168 msgid "Show expired stock" msgstr "" -#: common/models.py:2199 +#: common/models.py:2169 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2204 +#: common/models.py:2174 msgid "Show stale stock" msgstr "" -#: common/models.py:2205 +#: common/models.py:2175 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2210 +#: common/models.py:2180 msgid "Show pending builds" msgstr "" -#: common/models.py:2211 +#: common/models.py:2181 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2216 +#: common/models.py:2186 msgid "Show overdue builds" msgstr "" -#: common/models.py:2217 +#: common/models.py:2187 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2222 +#: common/models.py:2192 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2223 +#: common/models.py:2193 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2228 +#: common/models.py:2198 msgid "Show overdue POs" msgstr "" -#: common/models.py:2229 +#: common/models.py:2199 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2234 +#: common/models.py:2204 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2235 +#: common/models.py:2205 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2240 +#: common/models.py:2210 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2241 +#: common/models.py:2211 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2246 +#: common/models.py:2216 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2247 +#: common/models.py:2217 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2252 +#: common/models.py:2222 msgid "Show News" msgstr "" -#: common/models.py:2253 +#: common/models.py:2223 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2258 +#: common/models.py:2228 msgid "Inline label display" msgstr "" -#: common/models.py:2260 +#: common/models.py:2230 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2266 +#: common/models.py:2236 msgid "Default label printer" msgstr "" -#: common/models.py:2268 +#: common/models.py:2238 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2274 +#: common/models.py:2244 msgid "Inline report display" msgstr "" -#: common/models.py:2276 +#: common/models.py:2246 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2282 +#: common/models.py:2252 msgid "Search Parts" msgstr "" -#: common/models.py:2283 +#: common/models.py:2253 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2288 +#: common/models.py:2258 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2289 +#: common/models.py:2259 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2294 +#: common/models.py:2264 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2295 +#: common/models.py:2265 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2300 +#: common/models.py:2270 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2301 +#: common/models.py:2271 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2306 +#: common/models.py:2276 msgid "Search Categories" msgstr "" -#: common/models.py:2307 +#: common/models.py:2277 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2312 +#: common/models.py:2282 msgid "Search Stock" msgstr "" -#: common/models.py:2313 +#: common/models.py:2283 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2318 +#: common/models.py:2288 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2320 +#: common/models.py:2290 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2326 +#: common/models.py:2296 msgid "Search Locations" msgstr "" -#: common/models.py:2327 +#: common/models.py:2297 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2332 +#: common/models.py:2302 msgid "Search Companies" msgstr "" -#: common/models.py:2333 +#: common/models.py:2303 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2338 +#: common/models.py:2308 msgid "Search Build Orders" msgstr "" -#: common/models.py:2339 +#: common/models.py:2309 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2344 +#: common/models.py:2314 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2345 +#: common/models.py:2315 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2350 +#: common/models.py:2320 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2352 +#: common/models.py:2322 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2358 +#: common/models.py:2328 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2359 +#: common/models.py:2329 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2364 +#: common/models.py:2334 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2366 +#: common/models.py:2336 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2372 +#: common/models.py:2342 msgid "Search Return Orders" msgstr "" -#: common/models.py:2373 +#: common/models.py:2343 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2378 +#: common/models.py:2348 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2380 +#: common/models.py:2350 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2386 +#: common/models.py:2356 msgid "Search Preview Results" msgstr "" -#: common/models.py:2388 +#: common/models.py:2358 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2394 +#: common/models.py:2364 msgid "Regex Search" msgstr "" -#: common/models.py:2395 +#: common/models.py:2365 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2400 +#: common/models.py:2370 msgid "Whole Word Search" msgstr "" -#: common/models.py:2401 +#: common/models.py:2371 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2406 +#: common/models.py:2376 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2407 +#: common/models.py:2377 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2412 +#: common/models.py:2382 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2413 +#: common/models.py:2383 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2418 +#: common/models.py:2388 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2419 +#: common/models.py:2389 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2424 +#: common/models.py:2394 msgid "Date Format" msgstr "" -#: common/models.py:2425 +#: common/models.py:2395 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2438 part/templates/part/detail.html:41 +#: common/models.py:2408 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2439 +#: common/models.py:2409 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2444 part/templates/part/detail.html:62 +#: common/models.py:2414 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2446 +#: common/models.py:2416 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2452 +#: common/models.py:2422 msgid "Table String Length" msgstr "" -#: common/models.py:2454 +#: common/models.py:2424 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2460 +#: common/models.py:2430 msgid "Default part label template" msgstr "" -#: common/models.py:2461 +#: common/models.py:2431 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2466 +#: common/models.py:2436 msgid "Default stock item template" msgstr "" -#: common/models.py:2468 +#: common/models.py:2438 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2474 +#: common/models.py:2444 msgid "Default stock location label template" msgstr "" -#: common/models.py:2476 +#: common/models.py:2446 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2482 +#: common/models.py:2452 msgid "Default build line label template" msgstr "" -#: common/models.py:2484 +#: common/models.py:2454 msgid "The build line label template to be automatically selected" msgstr "" -#: common/models.py:2490 +#: common/models.py:2460 msgid "Receive error reports" msgstr "" -#: common/models.py:2491 +#: common/models.py:2461 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2496 +#: common/models.py:2466 msgid "Last used printing machines" msgstr "" -#: common/models.py:2497 +#: common/models.py:2467 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2540 +#: common/models.py:2487 common/models.py:2488 common/models.py:2636 +#: common/models.py:2637 common/models.py:2882 common/models.py:2883 +#: common/models.py:3193 common/models.py:3194 part/models.py:3193 +#: part/models.py:3280 part/models.py:3353 part/models.py:3381 +#: plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "" + +#: common/models.py:2510 msgid "Price break quantity" msgstr "" -#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1382 order/models.py:2301 -#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 +#: common/models.py:2517 company/serializers.py:472 order/admin.py:42 +#: order/models.py:1346 order/models.py:2265 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1886 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:740 msgid "Price" msgstr "" -#: common/models.py:2548 +#: common/models.py:2518 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2719 common/models.py:2904 +#: common/models.py:2613 common/models.py:2798 msgid "Endpoint" msgstr "" -#: common/models.py:2720 +#: common/models.py:2614 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2730 +#: common/models.py:2624 msgid "Name for this webhook" msgstr "" -#: common/models.py:2734 company/models.py:160 company/models.py:814 -#: machine/models.py:39 part/admin.py:88 part/models.py:1088 -#: plugin/models.py:65 templates/js/translated/company.js:523 +#: common/models.py:2628 company/models.py:163 company/models.py:782 +#: machine/models.py:39 part/admin.py:88 part/models.py:1081 +#: plugin/models.py:66 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3462,101 +3408,118 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2734 +#: common/models.py:2628 msgid "Is this webhook active" msgstr "" -#: common/models.py:2750 users/models.py:159 +#: common/models.py:2644 users/models.py:159 msgid "Token" msgstr "" -#: common/models.py:2751 +#: common/models.py:2645 msgid "Token for access" msgstr "" -#: common/models.py:2759 +#: common/models.py:2653 msgid "Secret" msgstr "" -#: common/models.py:2760 +#: common/models.py:2654 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2868 +#: common/models.py:2762 msgid "Message ID" msgstr "" -#: common/models.py:2869 +#: common/models.py:2763 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2877 +#: common/models.py:2771 msgid "Host" msgstr "" -#: common/models.py:2878 +#: common/models.py:2772 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2886 +#: common/models.py:2780 msgid "Header" msgstr "" -#: common/models.py:2887 +#: common/models.py:2781 msgid "Header of this message" msgstr "" -#: common/models.py:2894 +#: common/models.py:2788 msgid "Body" msgstr "" -#: common/models.py:2895 +#: common/models.py:2789 msgid "Body of this message" msgstr "" -#: common/models.py:2905 +#: common/models.py:2799 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2910 +#: common/models.py:2804 msgid "Worked on" msgstr "" -#: common/models.py:2911 +#: common/models.py:2805 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:3037 +#: common/models.py:2931 msgid "Id" msgstr "" -#: common/models.py:3039 templates/js/translated/company.js:965 +#: common/models.py:2933 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:3043 templates/js/translated/news.js:60 +#: common/models.py:2935 common/models.py:3177 company/models.py:149 +#: company/models.py:440 company/models.py:500 company/models.py:799 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +#: part/admin.py:55 part/models.py:955 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "" + +#: common/models.py:2937 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:3045 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2939 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:3047 templates/js/translated/news.js:52 +#: common/models.py:2941 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Read" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Was this news item read?" msgstr "" -#: common/models.py:3067 company/models.py:156 part/models.py:972 +#: common/models.py:2961 company/models.py:159 part/models.py:965 #: 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.html:35 @@ -3566,34 +3529,89 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:3067 +#: common/models.py:2961 msgid "Image file" msgstr "" -#: common/models.py:3109 +#: common/models.py:2973 common/models.py:3161 +msgid "Target model type for this image" +msgstr "" + +#: common/models.py:2977 +msgid "Target model ID for this image" +msgstr "" + +#: common/models.py:3018 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3128 +#: common/models.py:3037 msgid "Unit name" msgstr "" -#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3044 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3136 +#: common/models.py:3045 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3052 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3144 +#: common/models.py:3053 msgid "Unit definition" msgstr "" +#: common/models.py:3111 common/models.py:3168 stock/models.py:2426 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "" + +#: common/models.py:3123 +msgid "Missing file" +msgstr "" + +#: common/models.py:3124 +msgid "Missing external link" +msgstr "" + +#: common/models.py:3169 +msgid "Select file to attach" +msgstr "" + +#: common/models.py:3184 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "" + +#: common/models.py:3185 +msgid "Attachment comment" +msgstr "" + +#: common/models.py:3201 +msgid "Upload date" +msgstr "" + +#: common/models.py:3202 +msgid "Date the file was uploaded" +msgstr "" + +#: common/models.py:3206 +msgid "File size" +msgstr "" + +#: common/models.py:3206 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3244 common/serializers.py:553 +msgid "Invalid model type specified for attachment" +msgstr "" + #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" @@ -3628,66 +3646,103 @@ msgstr "" msgid "Error raised by plugin" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:371 msgid "Is Running" msgstr "" -#: common/serializers.py:372 +#: common/serializers.py:377 msgid "Pending Tasks" msgstr "" -#: common/serializers.py:378 +#: common/serializers.py:383 msgid "Scheduled Tasks" msgstr "" -#: common/serializers.py:384 +#: common/serializers.py:389 msgid "Failed Tasks" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Task ID" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Unique task ID" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock time" msgstr "" -#: common/serializers.py:403 +#: common/serializers.py:408 msgid "Task name" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function name" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Arguments" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Task arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Keyword Arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Task keyword arguments" msgstr "" +#: common/serializers.py:525 +msgid "Filename" +msgstr "" + +#: common/serializers.py:532 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: common/serializers.py:559 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "" + +#: common/validators.py:33 +msgid "No attachment model type provided" +msgstr "" + +#: common/validators.py:39 +msgid "Invalid attachment model type" +msgstr "" + +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "" + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +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 @@ -3726,210 +3781,222 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/api.py:164 +#: company/api.py:144 msgid "Part is Active" msgstr "" -#: company/api.py:168 +#: company/api.py:148 msgid "Manufacturer is Active" msgstr "" -#: company/api.py:317 +#: company/api.py:281 msgid "Supplier Part is Active" msgstr "" -#: company/api.py:321 +#: company/api.py:285 msgid "Internal Part is Active" msgstr "" -#: company/api.py:325 +#: company/api.py:289 msgid "Supplier is Active" msgstr "" -#: company/models.py:114 +#: company/models.py:100 company/models.py:365 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:822 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "" + +#: company/models.py:117 msgid "Company description" msgstr "" -#: company/models.py:115 +#: company/models.py:118 msgid "Description of the company" msgstr "" -#: company/models.py:120 company/templates/company/company_base.html:106 +#: company/models.py:123 company/templates/company/company_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:532 msgid "Website" msgstr "" -#: company/models.py:120 +#: company/models.py:123 msgid "Company website URL" msgstr "" -#: company/models.py:125 +#: company/models.py:128 msgid "Phone number" msgstr "" -#: company/models.py:127 +#: company/models.py:130 msgid "Contact phone number" msgstr "" -#: company/models.py:134 +#: company/models.py:137 msgid "Contact email address" msgstr "" -#: company/models.py:139 company/templates/company/company_base.html:145 +#: company/models.py:142 company/templates/company/company_base.html:145 #: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "" -#: company/models.py:141 +#: company/models.py:144 msgid "Point of contact" msgstr "" -#: company/models.py:147 +#: company/models.py:150 msgid "Link to external company information" msgstr "" -#: company/models.py:160 +#: company/models.py:163 msgid "Is this company active?" msgstr "" -#: company/models.py:165 +#: company/models.py:168 msgid "is customer" msgstr "" -#: company/models.py:166 +#: company/models.py:169 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:171 +#: company/models.py:174 msgid "is supplier" msgstr "" -#: company/models.py:172 +#: company/models.py:175 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:177 +#: company/models.py:180 msgid "is manufacturer" msgstr "" -#: company/models.py:178 +#: company/models.py:181 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:186 +#: company/models.py:189 msgid "Default currency used for this company" msgstr "" -#: company/models.py:273 company/models.py:382 -#: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:812 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 -msgid "Company" -msgstr "" - -#: company/models.py:383 +#: company/models.py:366 msgid "Select company" msgstr "" -#: company/models.py:388 +#: company/models.py:371 msgid "Address title" msgstr "" -#: company/models.py:389 +#: company/models.py:372 msgid "Title describing the address entry" msgstr "" -#: company/models.py:395 +#: company/models.py:378 msgid "Primary address" msgstr "" -#: company/models.py:396 +#: company/models.py:379 msgid "Set as primary address" msgstr "" -#: company/models.py:401 templates/js/translated/company.js:914 +#: company/models.py:384 templates/js/translated/company.js:914 #: templates/js/translated/company.js:971 msgid "Line 1" msgstr "" -#: company/models.py:402 +#: company/models.py:385 msgid "Address line 1" msgstr "" -#: company/models.py:408 templates/js/translated/company.js:915 +#: company/models.py:391 templates/js/translated/company.js:915 #: templates/js/translated/company.js:977 msgid "Line 2" msgstr "" -#: company/models.py:409 +#: company/models.py:392 msgid "Address line 2" msgstr "" -#: company/models.py:415 company/models.py:416 +#: company/models.py:398 company/models.py:399 #: templates/js/translated/company.js:983 msgid "Postal code" msgstr "" -#: company/models.py:422 +#: company/models.py:405 msgid "City/Region" msgstr "" -#: company/models.py:423 +#: company/models.py:406 msgid "Postal code city/region" msgstr "" -#: company/models.py:429 +#: company/models.py:412 msgid "State/Province" msgstr "" -#: company/models.py:430 +#: company/models.py:413 msgid "State or province" msgstr "" -#: company/models.py:436 templates/js/translated/company.js:1001 +#: company/models.py:419 templates/js/translated/company.js:1001 msgid "Country" msgstr "" -#: company/models.py:437 +#: company/models.py:420 msgid "Address country" msgstr "" -#: company/models.py:443 +#: company/models.py:426 msgid "Courier shipping notes" msgstr "" -#: company/models.py:444 +#: company/models.py:427 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:450 +#: company/models.py:433 msgid "Internal shipping notes" msgstr "" -#: company/models.py:451 +#: company/models.py:434 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:458 +#: company/models.py:441 msgid "Link to address information (external)" msgstr "" -#: company/models.py:489 company/models.py:792 stock/models.py:768 -#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 +#: company/models.py:463 company/models.py:574 company/models.py:792 +#: 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:475 company/models.py:760 stock/models.py:766 +#: stock/serializers.py:422 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:491 company/models.py:794 +#: company/models.py:477 company/models.py:762 msgid "Select part" msgstr "" -#: company/models.py:500 company/templates/company/company_base.html:82 +#: company/models.py:486 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:530 +#: company/templates/company/supplier_part.html:145 part/serializers.py:525 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -3939,152 +4006,154 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:501 +#: company/models.py:487 msgid "Select manufacturer" msgstr "" -#: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:540 +#: company/models.py:493 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:535 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 -#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1801 #: templates/js/translated/purchase_order.js:1851 #: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "" -#: company/models.py:508 +#: company/models.py:494 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:515 +#: company/models.py:501 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:524 +#: company/models.py:510 msgid "Manufacturer part description" msgstr "" -#: company/models.py:581 company/models.py:608 company/models.py:824 -#: 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:615 +#: company/models.py:581 msgid "Parameter name" msgstr "" -#: company/models.py:621 report/templates/report/inventree_test_report.html:104 -#: stock/models.py:2429 templates/js/translated/company.js:1166 -#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 +#: company/models.py:587 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2418 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1493 #: templates/js/translated/stock.js:1522 msgid "Value" msgstr "" -#: company/models.py:622 +#: company/models.py:588 msgid "Parameter value" msgstr "" -#: company/models.py:629 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1052 part/models.py:3666 +#: company/models.py:595 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1045 part/models.py:3646 #: part/templates/part/part_base.html:284 -#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1512 +#: templates/js/translated/part.js:1616 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:630 +#: company/models.py:596 msgid "Parameter units" msgstr "" -#: company/models.py:732 +#: company/models.py:648 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:777 stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "" + +#: company/models.py:700 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:739 +#: company/models.py:707 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:753 +#: company/models.py:721 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/models.py:770 company/templates/company/company_base.html:87 #: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:514 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:509 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:511 -#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1769 #: templates/js/translated/pricing.js:498 #: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "" -#: company/models.py:803 +#: company/models.py:771 msgid "Select supplier" msgstr "" -#: company/models.py:809 part/serializers.py:525 +#: company/models.py:777 part/serializers.py:520 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:815 +#: company/models.py:783 msgid "Is this supplier part active?" msgstr "" -#: company/models.py:825 +#: company/models.py:793 msgid "Select manufacturer part" msgstr "" -#: company/models.py:832 +#: company/models.py:800 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:841 +#: company/models.py:809 msgid "Supplier part description" msgstr "" -#: company/models.py:848 company/templates/company/supplier_part.html:187 -#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 +#: company/models.py:816 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4093 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_purchase_order_report.html:32 #: report/templates/report/inventree_return_order_report.html:27 #: report/templates/report/inventree_sales_order_report.html:32 #: report/templates/report/inventree_stock_location_report.html:105 -#: stock/serializers.py:708 +#: stock/serializers.py:710 msgid "Note" msgstr "" -#: company/models.py:857 part/models.py:2010 +#: company/models.py:825 part/models.py:2003 msgid "base cost" msgstr "" -#: company/models.py:858 part/models.py:2011 +#: company/models.py:826 part/models.py:2004 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:865 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 +#: company/models.py:833 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:797 stock/serializers.py:1475 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 #: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "" -#: company/models.py:866 +#: company/models.py:834 msgid "Part packaging" msgstr "" -#: company/models.py:871 templates/js/translated/company.js:1651 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: company/models.py:839 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:311 #: templates/js/translated/purchase_order.js:841 #: templates/js/translated/purchase_order.js:1103 @@ -4093,35 +4162,35 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:873 +#: company/models.py:841 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:892 part/models.py:2017 +#: company/models.py:860 part/models.py:2010 msgid "multiple" msgstr "" -#: company/models.py:893 +#: company/models.py:861 msgid "Order multiple" msgstr "" -#: company/models.py:905 +#: company/models.py:873 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:911 +#: company/models.py:879 msgid "Availability Updated" msgstr "" -#: company/models.py:912 +#: company/models.py:880 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:163 +#: company/serializers.py:161 msgid "Default currency used for this supplier" msgstr "" -#: company/serializers.py:381 part/admin.py:126 +#: company/serializers.py:357 part/admin.py:126 #: part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1689 #: templates/js/translated/table_filters.js:355 @@ -4133,7 +4202,7 @@ msgstr "" #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 #: templates/js/translated/model_renderers.js:312 -#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +#: templates/js/translated/part.js:815 templates/js/translated/part.js:1219 msgid "Inactive" msgstr "" @@ -4172,7 +4241,7 @@ msgstr "" #: report/templates/report/inventree_purchase_order_report.html:40 #: report/templates/report/inventree_sales_order_report.html:40 #: report/templates/report/inventree_test_report.html:84 -#: report/templates/report/inventree_test_report.html:163 +#: report/templates/report/inventree_test_report.html:162 msgid "Part image" msgstr "" @@ -4191,10 +4260,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:92 order/models.py:940 -#: order/models.py:2068 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:148 stock/models.py:821 -#: stock/models.py:822 stock/serializers.py:1229 +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2032 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:819 +#: stock/models.py:820 stock/serializers.py:1225 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 @@ -4405,7 +4474,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:836 +#: part/admin.py:122 part/serializers.py:832 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4425,8 +4494,8 @@ msgstr "" msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:206 -#: templates/js/translated/part.js:1422 +#: company/templates/company/manufacturer_part.html:196 +#: templates/js/translated/part.js:1423 msgid "Add Parameter" msgstr "" @@ -4454,15 +4523,6 @@ msgstr "" msgid "Addresses" msgstr "" -#: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:452 -#: stock/models.py:779 stock/templates/stock/item_base.html:233 -#: templates/js/translated/company.js:1600 -#: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2280 -msgid "Supplier Part" -msgstr "" - #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1526 msgid "Supplier part actions" @@ -4505,8 +4565,8 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:524 -#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: part/bom.py:311 part/serializers.py:519 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1787 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1850 #: templates/js/translated/purchase_order.js:2028 @@ -4518,12 +4578,12 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:207 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" @@ -4555,15 +4615,15 @@ msgid "Update Part Availability" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:835 part/stocktake.py:223 +#: part/serializers.py:831 part/stocktake.py:224 #: part/templates/part/category.html:183 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:916 stock/serializers.py:1080 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:918 stock/serializers.py:1091 #: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:191 #: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1061 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:206 msgid "Stock Items" @@ -4590,10 +4650,6 @@ msgstr "" 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 "" @@ -4614,7 +4670,7 @@ msgstr "" msgid "Connected" msgstr "" -#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: machine/machine_types/label_printer.py:235 order/api.py:1467 #: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "" @@ -4703,7 +4759,7 @@ msgstr "" msgid "Config type" msgstr "" -#: order/admin.py:30 order/models.py:89 +#: order/admin.py:30 order/models.py:90 #: report/templates/report/inventree_purchase_order_report.html:31 #: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 @@ -4712,30 +4768,30 @@ msgstr "" msgid "Total Price" msgstr "" -#: order/api.py:161 order/serializers.py:91 +#: order/api.py:157 order/serializers.py:90 #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "" -#: order/api.py:165 templates/js/translated/table_filters.js:194 +#: order/api.py:161 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "" -#: order/api.py:240 +#: order/api.py:236 msgid "No matching purchase order found" msgstr "" -#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 -#: order/models.py:1586 order/models.py:1700 order/models.py:1854 -#: order/models.py:2267 order/models.py:2318 +#: order/api.py:435 order/api.py:801 order/models.py:1395 order/models.py:1504 +#: order/models.py:1550 order/models.py:1664 order/models.py:1818 +#: order/models.py:2231 order/models.py:2282 #: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "" -#: order/api.py:441 order/api.py:838 +#: order/api.py:439 order/api.py:822 msgid "Order Complete" msgstr "" @@ -4743,13 +4799,13 @@ msgstr "" msgid "Order Pending" msgstr "" -#: order/api.py:1509 order/models.py:380 order/models.py:1432 -#: order/models.py:1541 order/templates/order/order_base.html:9 +#: order/api.py:1461 order/models.py:380 order/models.py:1396 +#: order/models.py:1505 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_purchase_order_report.html:14 -#: stock/serializers.py:119 stock/templates/stock/item_base.html:176 +#: stock/serializers.py:118 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/part.js:1746 templates/js/translated/pricing.js:804 #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1673 @@ -4757,8 +4813,8 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1513 order/models.py:2017 order/models.py:2268 -#: order/models.py:2319 order/templates/order/return_order_base.html:9 +#: order/api.py:1465 order/models.py:1981 order/models.py:2232 +#: order/models.py:2283 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report.html:13 #: templates/js/translated/return_order.js:280 @@ -4766,15 +4822,15 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/models.py:90 +#: order/models.py:91 msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:71 +#: order/models.py:96 order/serializers.py:70 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:72 +#: order/models.py:99 order/serializers.py:71 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -4790,7 +4846,7 @@ msgstr "" msgid "Select project code for this order" msgstr "" -#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 msgid "Link to external page" msgstr "" @@ -4814,11 +4870,11 @@ msgstr "" msgid "Company address for this order" msgstr "" -#: order/models.py:464 order/models.py:929 +#: order/models.py:464 order/models.py:927 msgid "Order reference" msgstr "" -#: order/models.py:472 order/models.py:953 +#: order/models.py:472 order/models.py:951 msgid "Purchase order status" msgstr "" @@ -4839,15 +4895,15 @@ msgstr "" msgid "received by" msgstr "" -#: order/models.py:514 order/models.py:2094 +#: order/models.py:514 order/models.py:2058 msgid "Issue Date" msgstr "" -#: order/models.py:515 order/models.py:2095 +#: order/models.py:515 order/models.py:2059 msgid "Date order was issued" msgstr "" -#: order/models.py:522 order/models.py:2102 +#: order/models.py:522 order/models.py:2066 msgid "Date order was completed" msgstr "" @@ -4859,94 +4915,94 @@ msgstr "" msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:941 +#: order/models.py:939 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:964 order/models.py:2087 +#: order/models.py:962 order/models.py:2051 msgid "Customer Reference " msgstr "" -#: order/models.py:965 order/models.py:2088 +#: order/models.py:963 order/models.py:2052 msgid "Customer order reference code" msgstr "" -#: order/models.py:969 order/models.py:1707 +#: order/models.py:967 order/models.py:1671 #: templates/js/translated/sales_order.js:879 #: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "" -#: order/models.py:978 +#: order/models.py:976 msgid "shipped by" msgstr "" -#: order/models.py:1027 +#: order/models.py:1025 msgid "Order is already complete" msgstr "" -#: order/models.py:1030 +#: order/models.py:1028 msgid "Order is already cancelled" msgstr "" -#: order/models.py:1034 +#: order/models.py:1032 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:1038 +#: order/models.py:1036 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:1043 +#: order/models.py:1041 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1309 +#: order/models.py:1273 msgid "Item quantity" msgstr "" -#: order/models.py:1326 +#: order/models.py:1290 msgid "Line item reference" msgstr "" -#: order/models.py:1333 +#: order/models.py:1297 msgid "Line item notes" msgstr "" -#: order/models.py:1345 +#: order/models.py:1309 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1366 +#: order/models.py:1330 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1372 +#: order/models.py:1336 msgid "Context" msgstr "" -#: order/models.py:1373 +#: order/models.py:1337 msgid "Additional context for this line" msgstr "" -#: order/models.py:1383 +#: order/models.py:1347 msgid "Unit price" msgstr "" -#: order/models.py:1416 +#: order/models.py:1380 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1423 +#: order/models.py:1387 msgid "deleted" msgstr "" -#: order/models.py:1451 +#: order/models.py:1415 msgid "Supplier part" msgstr "" -#: order/models.py:1458 order/templates/order/order_base.html:196 -#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: order/models.py:1422 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1870 templates/js/translated/part.js:1902 #: templates/js/translated/purchase_order.js:1306 #: templates/js/translated/purchase_order.js:2169 #: templates/js/translated/return_order.js:763 @@ -4955,196 +5011,196 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1459 +#: order/models.py:1423 msgid "Number of items received" msgstr "" -#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 +#: order/models.py:1431 stock/models.py:938 stock/serializers.py:556 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "" -#: order/models.py:1468 +#: order/models.py:1432 msgid "Unit purchase price" msgstr "" -#: order/models.py:1483 +#: order/models.py:1447 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1574 +#: order/models.py:1538 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1579 +#: order/models.py:1543 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1605 part/templates/part/part_pricing.html:107 +#: order/models.py:1569 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:1606 +#: order/models.py:1570 msgid "Unit sale price" msgstr "" -#: order/models.py:1615 order/status_codes.py:43 +#: order/models.py:1579 order/status_codes.py:43 #: templates/js/translated/sales_order.js:1559 #: templates/js/translated/sales_order.js:1680 #: templates/js/translated/sales_order.js:1993 msgid "Shipped" msgstr "" -#: order/models.py:1616 +#: order/models.py:1580 msgid "Shipped quantity" msgstr "" -#: order/models.py:1708 +#: order/models.py:1672 msgid "Date of shipment" msgstr "" -#: order/models.py:1714 templates/js/translated/sales_order.js:1072 +#: order/models.py:1678 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "" -#: order/models.py:1715 +#: order/models.py:1679 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1723 +#: order/models.py:1687 msgid "Checked By" msgstr "" -#: order/models.py:1724 +#: order/models.py:1688 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 -#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 +#: order/models.py:1695 order/models.py:1908 order/serializers.py:1342 +#: order/serializers.py:1452 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "" -#: order/models.py:1732 +#: order/models.py:1696 msgid "Shipment number" msgstr "" -#: order/models.py:1740 +#: order/models.py:1704 msgid "Tracking Number" msgstr "" -#: order/models.py:1741 +#: order/models.py:1705 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1748 +#: order/models.py:1712 msgid "Invoice Number" msgstr "" -#: order/models.py:1749 +#: order/models.py:1713 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1769 +#: order/models.py:1733 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1772 +#: order/models.py:1736 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1890 order/models.py:1892 +#: order/models.py:1854 order/models.py:1856 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1899 +#: order/models.py:1863 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1902 +#: order/models.py:1866 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1905 +#: order/models.py:1869 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1924 order/serializers.py:1231 +#: order/models.py:1888 order/serializers.py:1219 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1927 +#: order/models.py:1891 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1928 plugin/base/barcodes/api.py:481 +#: order/models.py:1892 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1936 +#: order/models.py:1900 msgid "Line" msgstr "" -#: order/models.py:1945 +#: order/models.py:1909 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1958 order/models.py:2275 +#: order/models.py:1922 order/models.py:2239 #: templates/js/translated/return_order.js:721 msgid "Item" msgstr "" -#: order/models.py:1959 +#: order/models.py:1923 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1968 +#: order/models.py:1932 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:2057 +#: order/models.py:2021 msgid "Return Order reference" msgstr "" -#: order/models.py:2069 +#: order/models.py:2033 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:2081 +#: order/models.py:2045 msgid "Return order status" msgstr "" -#: order/models.py:2260 +#: order/models.py:2224 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2276 +#: order/models.py:2240 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2282 +#: order/models.py:2246 msgid "Received Date" msgstr "" -#: order/models.py:2283 +#: order/models.py:2247 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2294 templates/js/translated/return_order.js:732 +#: order/models.py:2258 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2295 +#: order/models.py:2259 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2302 +#: order/models.py:2266 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/serializers.py:79 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_purchase_order_report.html:22 @@ -5153,163 +5209,163 @@ msgstr "" msgid "Line Items" msgstr "" -#: order/serializers.py:84 +#: order/serializers.py:83 msgid "Completed Lines" msgstr "" -#: order/serializers.py:287 +#: order/serializers.py:286 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:302 order/serializers.py:1247 +#: order/serializers.py:301 order/serializers.py:1235 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:312 order/serializers.py:1257 +#: order/serializers.py:311 order/serializers.py:1245 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:440 +#: order/serializers.py:439 msgid "Order is not open" msgstr "" -#: order/serializers.py:461 +#: order/serializers.py:460 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:463 +#: order/serializers.py:462 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:473 +#: order/serializers.py:472 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:478 msgid "Merge Items" msgstr "" -#: order/serializers.py:481 +#: order/serializers.py:480 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:499 +#: order/serializers.py:498 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:502 +#: order/serializers.py:501 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:510 +#: order/serializers.py:509 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:511 +#: order/serializers.py:510 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:550 order/serializers.py:1325 +#: order/serializers.py:549 order/serializers.py:1313 msgid "Line Item" msgstr "" -#: order/serializers.py:556 +#: order/serializers.py:555 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1657 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:581 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:589 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:601 templates/js/translated/barcode.js:52 +#: order/serializers.py:600 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:602 +#: order/serializers.py:601 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:618 +#: order/serializers.py:617 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:642 +#: order/serializers.py:641 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:690 order/serializers.py:1696 +#: order/serializers.py:689 order/serializers.py:1673 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:706 +#: order/serializers.py:705 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:717 +#: order/serializers.py:716 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1074 +#: order/serializers.py:1062 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1134 +#: order/serializers.py:1122 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1195 order/serializers.py:1334 +#: order/serializers.py:1183 order/serializers.py:1322 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1214 +#: order/serializers.py:1202 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1344 +#: order/serializers.py:1332 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1366 order/serializers.py:1472 +#: order/serializers.py:1354 order/serializers.py:1460 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1369 order/serializers.py:1475 +#: order/serializers.py:1357 order/serializers.py:1463 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1416 +#: order/serializers.py:1404 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1423 +#: order/serializers.py:1411 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1650 +#: order/serializers.py:1627 msgid "Return order line item" msgstr "" -#: order/serializers.py:1656 +#: order/serializers.py:1633 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1659 +#: order/serializers.py:1636 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1688 +#: order/serializers.py:1665 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1766 +#: order/serializers.py:1743 msgid "Line price currency" msgstr "" @@ -5639,7 +5695,7 @@ msgstr "" #: 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/part.js:1073 #: templates/js/translated/purchase_order.js:1752 #: templates/js/translated/return_order.js:380 #: templates/js/translated/sales_order.js:891 @@ -5735,34 +5791,34 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:406 part/models.py:3964 part/stocktake.py:218 -#: stock/admin.py:153 +#: part/admin.py:39 part/admin.py:398 part/models.py:3944 part/stocktake.py:219 +#: stock/admin.py:152 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 -#: stock/admin.py:157 +#: part/admin.py:41 part/admin.py:405 part/models.py:3945 part/stocktake.py:220 +#: stock/admin.py:156 msgid "Part Name" msgstr "" -#: part/admin.py:45 part/stocktake.py:220 +#: part/admin.py:45 part/stocktake.py:221 msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:940 part/templates/part/part_base.html:269 #: report/templates/report/inventree_stock_location_report.html:103 -#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/part.js:1227 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 -#: report/models.py:161 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2346 +#: part/admin.py:50 part/models.py:949 part/templates/part/part_base.html:277 +#: report/models.py:162 templates/js/translated/part.js:1232 +#: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:319 part/models.py:929 +#: part/admin.py:53 part/admin.py:319 part/models.py:922 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5771,11 +5827,11 @@ msgstr "" msgid "Part Image" msgstr "" -#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:222 msgid "Category ID" msgstr "" -#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:223 msgid "Category Name" msgstr "" @@ -5787,11 +5843,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:908 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1036 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5799,26 +5855,26 @@ msgstr "" 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 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:235 +#: templates/js/translated/part.js:715 templates/js/translated/part.js:2153 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3123 part/models.py:3137 -#: templates/js/translated/part.js:969 +#: part/admin.py:155 part/models.py:3088 part/models.py:3102 +#: templates/js/translated/part.js:970 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3130 part/models.py:3144 -#: templates/js/translated/part.js:979 +#: part/admin.py:158 part/models.py:3095 part/models.py:3109 +#: templates/js/translated/part.js:980 msgid "Maximum Cost" msgstr "" -#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 msgid "Parent ID" msgstr "" -#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 msgid "Parent Name" msgstr "" @@ -5827,141 +5883,149 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:325 part/models.py:393 part/serializers.py:117 -#: part/serializers.py:272 part/serializers.py:391 +#: part/admin.py:325 part/models.py:396 part/serializers.py:124 +#: part/serializers.py:267 part/serializers.py:386 #: 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:2803 templates/js/translated/search.js:130 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "" -#: part/admin.py:386 +#: part/admin.py:378 msgid "BOM Level" msgstr "" -#: part/admin.py:389 +#: part/admin.py:381 msgid "BOM Item ID" msgstr "" -#: part/admin.py:399 +#: part/admin.py:391 msgid "Parent IPN" msgstr "" -#: part/admin.py:410 part/models.py:3966 +#: part/admin.py:402 part/models.py:3946 msgid "Part IPN" msgstr "" -#: part/admin.py:423 part/serializers.py:1278 +#: part/admin.py:415 part/serializers.py:1274 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:428 part/serializers.py:1293 +#: part/admin.py:420 part/serializers.py:1289 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:110 +#: part/api.py:104 msgid "Starred" msgstr "" -#: part/api.py:112 +#: part/api.py:106 msgid "Filter by starred categories" msgstr "" -#: part/api.py:129 stock/api.py:318 +#: part/api.py:123 stock/api.py:312 msgid "Depth" msgstr "" -#: part/api.py:129 +#: part/api.py:123 msgid "Filter by category depth" msgstr "" -#: part/api.py:147 stock/api.py:336 +#: part/api.py:141 stock/api.py:330 +msgid "Top Level" +msgstr "" + +#: part/api.py:143 +msgid "Filter by top-level categories" +msgstr "" + +#: part/api.py:156 stock/api.py:345 msgid "Cascade" msgstr "" -#: part/api.py:149 +#: part/api.py:158 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:169 +#: part/api.py:179 templates/js/translated/part.js:308 msgid "Parent" msgstr "" -#: part/api.py:171 +#: part/api.py:181 msgid "Filter by parent category" msgstr "" -#: part/api.py:204 +#: part/api.py:214 msgid "Exclude Tree" msgstr "" -#: part/api.py:206 +#: part/api.py:216 msgid "Exclude sub-categories under the specified category" msgstr "" -#: part/api.py:455 +#: part/api.py:449 msgid "Has Results" msgstr "" -#: part/api.py:622 +#: part/api.py:616 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:640 +#: part/api.py:634 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:656 +#: part/api.py:650 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:740 +#: part/api.py:734 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:887 +#: part/api.py:881 msgid "Valid" msgstr "" -#: part/api.py:888 +#: part/api.py:882 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:894 +#: part/api.py:888 msgid "This option must be selected" msgstr "" -#: part/api.py:1111 +#: part/api.py:1105 msgid "BOM Valid" msgstr "" -#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 -#: part/serializers.py:406 part/serializers.py:1134 -#: part/templates/part/part_base.html:260 stock/api.py:781 +#: part/api.py:1508 part/models.py:932 part/models.py:3374 part/models.py:3889 +#: part/serializers.py:401 part/serializers.py:1130 +#: part/templates/part/part_base.html:260 stock/api.py:791 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2376 +#: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/api.py:1803 +#: part/api.py:1796 msgid "Uses" msgstr "" -#: part/bom.py:170 part/models.py:102 part/models.py:982 +#: part/bom.py:170 part/models.py:104 part/models.py:975 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 part/serializers.py:837 +#: part/bom.py:171 part/serializers.py:833 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5970,1054 +6034,1066 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 +#: part/models.py:85 part/models.py:3890 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:84 part/templates/part/category.html:136 +#: part/models.py:86 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "" -#: part/models.py:103 +#: part/models.py:105 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 +#: part/models.py:110 stock/models.py:174 templates/js/translated/part.js:2810 #: templates/js/translated/stock.js:2772 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:110 +#: part/models.py:112 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:119 +#: part/models.py:121 msgid "Default keywords" msgstr "" -#: part/models.py:120 +#: part/models.py:122 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 stock/models.py:85 stock/models.py:156 +#: part/models.py:128 stock/models.py:86 stock/models.py:157 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:127 stock/models.py:157 +#: part/models.py:129 stock/models.py:158 msgid "Icon (optional)" msgstr "" -#: part/models.py:149 +#: part/models.py:151 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:482 +#: part/models.py:485 msgid "Cannot delete this part as it is still active" msgstr "" -#: part/models.py:489 +#: part/models.py:490 msgid "Cannot delete this part as it is used in an assembly" msgstr "" -#: part/models.py:527 +#: part/models.py:528 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:575 part/models.py:582 +#: part/models.py:576 part/models.py:583 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:594 +#: part/models.py:595 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:659 +#: part/models.py:658 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:739 +#: part/models.py:736 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:844 +#: part/models.py:837 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:854 +#: part/models.py:847 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:869 +#: part/models.py:862 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:898 part/models.py:3965 +#: part/models.py:891 part/models.py:3945 msgid "Part name" msgstr "" -#: part/models.py:903 +#: part/models.py:896 msgid "Is Template" msgstr "" -#: part/models.py:904 +#: part/models.py:897 msgid "Is this part a template part?" msgstr "" -#: part/models.py:914 +#: part/models.py:907 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:922 +#: part/models.py:915 msgid "Part description (optional)" msgstr "" -#: part/models.py:930 +#: part/models.py:923 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:940 +#: part/models.py:933 msgid "Part category" msgstr "" -#: part/models.py:948 +#: part/models.py:941 msgid "Internal Part Number" msgstr "" -#: part/models.py:955 +#: part/models.py:948 msgid "Part revision or version number" msgstr "" -#: part/models.py:980 +#: part/models.py:973 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:1026 part/templates/part/part_base.html:376 +#: part/models.py:1019 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:1027 +#: part/models.py:1020 msgid "Default supplier part" msgstr "" -#: part/models.py:1034 +#: part/models.py:1027 msgid "Default Expiry" msgstr "" -#: part/models.py:1035 +#: part/models.py:1028 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:1044 +#: part/models.py:1037 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:1053 +#: part/models.py:1046 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1060 +#: part/models.py:1053 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1066 +#: part/models.py:1059 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1072 +#: part/models.py:1065 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1078 +#: part/models.py:1071 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1084 +#: part/models.py:1077 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1088 +#: part/models.py:1081 msgid "Is this part active?" msgstr "" -#: part/models.py:1094 +#: part/models.py:1087 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1100 +#: part/models.py:1093 msgid "BOM checksum" msgstr "" -#: part/models.py:1101 +#: part/models.py:1094 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1109 +#: part/models.py:1102 msgid "BOM checked by" msgstr "" -#: part/models.py:1114 +#: part/models.py:1107 msgid "BOM checked date" msgstr "" -#: part/models.py:1130 +#: part/models.py:1123 msgid "Creation User" msgstr "" -#: part/models.py:1140 +#: part/models.py:1133 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1145 part/templates/part/part_base.html:339 +#: part/models.py:1138 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2470 +#: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:2018 +#: part/models.py:2011 msgid "Sell multiple" msgstr "" -#: part/models.py:3037 +#: part/models.py:3002 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:3053 +#: part/models.py:3018 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:3054 +#: part/models.py:3019 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:3060 +#: part/models.py:3025 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3026 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:3067 +#: part/models.py:3032 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3033 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3074 +#: part/models.py:3039 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3040 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3046 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3047 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3053 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3054 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3060 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3096 +#: part/models.py:3061 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3102 +#: part/models.py:3067 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3103 +#: part/models.py:3068 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3109 +#: part/models.py:3074 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3110 +#: part/models.py:3075 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3116 +#: part/models.py:3081 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3117 +#: part/models.py:3082 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3124 +#: part/models.py:3089 msgid "Override minimum cost" msgstr "" -#: part/models.py:3131 +#: part/models.py:3096 msgid "Override maximum cost" msgstr "" -#: part/models.py:3138 +#: part/models.py:3103 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3145 +#: part/models.py:3110 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3151 +#: part/models.py:3116 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3152 +#: part/models.py:3117 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3158 +#: part/models.py:3123 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3159 +#: part/models.py:3124 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3165 +#: part/models.py:3130 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3131 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3172 +#: part/models.py:3137 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3138 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3192 +#: part/models.py:3157 msgid "Part for stocktake" msgstr "" -#: part/models.py:3197 +#: part/models.py:3162 msgid "Item Count" msgstr "" -#: part/models.py:3198 +#: part/models.py:3163 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3206 +#: part/models.py:3171 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3210 part/models.py:3293 +#: part/models.py:3175 part/models.py:3258 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report.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/part.js:1086 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" -#: part/models.py:3211 +#: part/models.py:3176 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3219 +#: part/models.py:3184 msgid "Additional notes" msgstr "" -#: part/models.py:3229 +#: part/models.py:3194 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3235 +#: part/models.py:3200 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3236 +#: part/models.py:3201 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3242 +#: part/models.py:3207 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3243 +#: part/models.py:3208 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3264 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3300 +#: part/models.py:3265 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3270 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3306 +#: part/models.py:3271 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3316 +#: part/models.py:3281 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3478 +#: part/models.py:3423 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3489 +#: part/models.py:3444 part/models.py:3608 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3455 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3500 +#: part/models.py:3466 msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3517 templates/js/translated/part.js:2878 +#: part/models.py:3483 templates/js/translated/part.js:2880 msgid "Test Name" msgstr "" -#: part/models.py:3518 +#: part/models.py:3484 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3524 +#: part/models.py:3490 msgid "Test Key" msgstr "" -#: part/models.py:3525 +#: part/models.py:3491 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3532 +#: part/models.py:3498 msgid "Test Description" msgstr "" -#: part/models.py:3533 +#: part/models.py:3499 msgid "Enter description for this test" msgstr "" -#: part/models.py:3537 report/models.py:208 -#: templates/js/translated/part.js:2899 +#: part/models.py:3503 report/models.py:209 +#: templates/js/translated/part.js:2901 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" -#: part/models.py:3537 +#: part/models.py:3503 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3542 templates/js/translated/part.js:2907 +#: part/models.py:3508 templates/js/translated/part.js:2909 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3543 +#: part/models.py:3509 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3548 templates/js/translated/part.js:2915 +#: part/models.py:3514 templates/js/translated/part.js:2917 msgid "Requires Value" msgstr "" -#: part/models.py:3549 +#: part/models.py:3515 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3554 templates/js/translated/part.js:2922 +#: part/models.py:3520 templates/js/translated/part.js:2924 msgid "Requires Attachment" msgstr "" -#: part/models.py:3556 +#: part/models.py:3522 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3603 +#: part/models.py:3528 part/models.py:3667 templates/js/translated/part.js:1637 +msgid "Choices" +msgstr "" + +#: part/models.py:3529 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3583 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3608 +#: part/models.py:3588 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3628 -msgid "Choices must be unique" -msgstr "" - -#: part/models.py:3645 +#: part/models.py:3625 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3660 +#: part/models.py:3640 msgid "Parameter Name" msgstr "" -#: part/models.py:3667 +#: part/models.py:3647 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3675 +#: part/models.py:3655 msgid "Parameter description" msgstr "" -#: part/models.py:3681 templates/js/translated/part.js:1627 +#: part/models.py:3661 templates/js/translated/part.js:1628 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "" -#: part/models.py:3682 +#: part/models.py:3662 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3687 templates/js/translated/part.js:1636 -msgid "Choices" -msgstr "" - -#: part/models.py:3688 +#: part/models.py:3668 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3765 +#: part/models.py:3745 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3808 +#: part/models.py:3788 msgid "Parent Part" msgstr "" -#: part/models.py:3816 part/models.py:3917 part/models.py:3918 +#: part/models.py:3796 part/models.py:3897 part/models.py:3898 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3821 +#: part/models.py:3801 msgid "Data" msgstr "" -#: part/models.py:3822 +#: part/models.py:3802 msgid "Parameter Value" msgstr "" -#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3904 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3925 +#: part/models.py:3905 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3963 +#: part/models.py:3943 msgid "Part ID or part name" msgstr "" -#: part/models.py:3964 +#: part/models.py:3944 msgid "Unique part ID value" msgstr "" -#: part/models.py:3966 +#: part/models.py:3946 msgid "Part IPN value" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "Level" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "BOM level" msgstr "" -#: part/models.py:4057 +#: part/models.py:4037 msgid "Select parent part" msgstr "" -#: part/models.py:4067 +#: part/models.py:4047 msgid "Sub part" msgstr "" -#: part/models.py:4068 +#: part/models.py:4048 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4079 +#: part/models.py:4059 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4085 +#: part/models.py:4065 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4091 +#: part/models.py:4071 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4098 part/templates/part/upload_bom.html:55 +#: part/models.py:4078 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4099 +#: part/models.py:4079 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4106 +#: part/models.py:4086 msgid "BOM item reference" msgstr "" -#: part/models.py:4114 +#: part/models.py:4094 msgid "BOM item notes" msgstr "" -#: part/models.py:4120 +#: part/models.py:4100 msgid "Checksum" msgstr "" -#: part/models.py:4121 +#: part/models.py:4101 msgid "BOM line checksum" msgstr "" -#: part/models.py:4126 templates/js/translated/table_filters.js:174 +#: part/models.py:4106 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4127 +#: part/models.py:4107 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4132 part/templates/part/upload_bom.html:57 +#: part/models.py:4112 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:4133 +#: part/models.py:4113 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4138 part/templates/part/upload_bom.html:56 +#: part/models.py:4118 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4139 +#: part/models.py:4119 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4224 stock/models.py:664 +#: part/models.py:4204 stock/models.py:662 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4234 part/models.py:4236 +#: part/models.py:4214 part/models.py:4216 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4376 +#: part/models.py:4354 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4397 +#: part/models.py:4375 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4410 +#: part/models.py:4388 msgid "Parent BOM item" msgstr "" -#: part/models.py:4418 +#: part/models.py:4396 msgid "Substitute part" msgstr "" -#: part/models.py:4434 +#: part/models.py:4412 msgid "Part 1" msgstr "" -#: part/models.py:4442 +#: part/models.py:4420 msgid "Part 2" msgstr "" -#: part/models.py:4443 +#: part/models.py:4421 msgid "Select Related Part" msgstr "" -#: part/models.py:4462 +#: part/models.py:4440 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4467 +#: part/models.py:4445 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:119 part/serializers.py:141 +#: part/serializers.py:118 +msgid "Parent Category" +msgstr "" + +#: part/serializers.py:119 templates/js/translated/part.js:309 +msgid "Parent part category" +msgstr "" + +#: part/serializers.py:126 part/serializers.py:148 #: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/serializers.py:185 +#: part/serializers.py:180 msgid "Results" msgstr "" -#: part/serializers.py:186 +#: part/serializers.py:181 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 +#: part/serializers.py:205 part/serializers.py:223 stock/serializers.py:562 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:273 +#: part/serializers.py:268 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:397 +#: part/serializers.py:392 msgid "No parts selected" msgstr "" -#: part/serializers.py:407 +#: part/serializers.py:402 msgid "Select category" msgstr "" -#: part/serializers.py:442 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:443 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:448 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:449 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:455 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:456 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:463 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:488 +#: part/serializers.py:483 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:490 +#: part/serializers.py:485 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:497 +#: part/serializers.py:492 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:493 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:510 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:531 +#: part/serializers.py:526 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:541 +#: part/serializers.py:536 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:548 +#: part/serializers.py:543 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:557 +#: part/serializers.py:552 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:568 +#: part/serializers.py:563 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:575 +#: part/serializers.py:570 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:834 msgid "External Stock" msgstr "" -#: part/serializers.py:840 +#: part/serializers.py:836 msgid "Unallocated Stock" msgstr "" -#: part/serializers.py:843 +#: part/serializers.py:839 msgid "Variant Stock" msgstr "" -#: part/serializers.py:873 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:471 +#: part/serializers.py:869 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:472 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:870 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:880 templates/js/translated/part.js:102 +#: part/serializers.py:876 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:881 +#: part/serializers.py:877 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:887 +#: part/serializers.py:883 msgid "Supplier Information" msgstr "" -#: part/serializers.py:888 +#: part/serializers.py:884 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:896 +#: part/serializers.py:892 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:897 +#: part/serializers.py:893 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:902 +#: part/serializers.py:898 msgid "Existing Image" msgstr "" -#: part/serializers.py:903 +#: part/serializers.py:899 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:920 +#: part/serializers.py:916 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1126 +#: part/serializers.py:1122 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1136 +#: part/serializers.py:1132 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1146 +#: part/serializers.py:1142 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1152 +#: part/serializers.py:1148 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1153 +#: part/serializers.py:1149 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1158 +#: part/serializers.py:1154 msgid "Generate Report" msgstr "" -#: part/serializers.py:1159 +#: part/serializers.py:1155 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1164 +#: part/serializers.py:1160 msgid "Update Parts" msgstr "" -#: part/serializers.py:1165 +#: part/serializers.py:1161 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1173 +#: part/serializers.py:1169 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1279 +#: part/serializers.py:1275 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1286 +#: part/serializers.py:1282 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1294 +#: part/serializers.py:1290 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1301 +#: part/serializers.py:1297 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1330 +#: part/serializers.py:1326 msgid "Update" msgstr "" -#: part/serializers.py:1331 +#: part/serializers.py:1327 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1354 +#: part/serializers.py:1350 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1361 +#: part/serializers.py:1357 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1364 +#: part/serializers.py:1360 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1727 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1739 +#: part/serializers.py:1735 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1740 +#: part/serializers.py:1736 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1745 +#: part/serializers.py:1741 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1746 +#: part/serializers.py:1742 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1747 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1752 +#: part/serializers.py:1748 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1757 +#: part/serializers.py:1753 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1758 +#: part/serializers.py:1754 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1792 +#: part/serializers.py:1788 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1793 +#: part/serializers.py:1789 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1823 +#: part/serializers.py:1819 msgid "No part column specified" msgstr "" -#: part/serializers.py:1867 +#: part/serializers.py:1863 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1870 +#: part/serializers.py:1866 msgid "No matching part found" msgstr "" -#: part/serializers.py:1873 +#: part/serializers.py:1869 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1882 +#: part/serializers.py:1878 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1890 +#: part/serializers.py:1886 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1911 +#: part/serializers.py:1907 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 +#: part/stocktake.py:225 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "" -#: part/stocktake.py:225 +#: part/stocktake.py:226 msgid "Total Cost Min" msgstr "" -#: part/stocktake.py:226 +#: part/stocktake.py:227 msgid "Total Cost Max" msgstr "" -#: part/stocktake.py:284 +#: part/stocktake.py:285 msgid "Stocktake Report Available" msgstr "" -#: part/stocktake.py:285 +#: part/stocktake.py:286 msgid "A new stocktake report is available for download" msgstr "" @@ -7151,7 +7227,7 @@ 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 +#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" @@ -7251,15 +7327,15 @@ msgstr "" msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:655 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:663 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:748 +#: part/templates/part/detail.html:750 msgid "Add Test Result Template" msgstr "" @@ -7340,7 +7416,7 @@ msgstr "" msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" msgstr "" @@ -7412,7 +7488,7 @@ 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:2443 +#: templates/js/translated/part.js:1265 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7505,8 +7581,8 @@ msgstr "" #: 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:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/part.js:1243 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 #: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7549,7 +7625,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:247 +#: part/templates/part/prices.html:28 stock/admin.py:251 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 @@ -7626,8 +7702,8 @@ msgstr "" #: part/templates/part/stock_count.html:7 #: templates/js/translated/model_renderers.js:227 -#: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 -#: templates/js/translated/part.js:2142 +#: templates/js/translated/part.js:705 templates/js/translated/part.js:2141 +#: templates/js/translated/part.js:2143 msgid "No Stock" msgstr "" @@ -7999,7 +8075,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:308 msgid "Landscape" msgstr "" @@ -8112,62 +8188,62 @@ msgstr "" msgid "Uninstalled plugin successfully" msgstr "" -#: plugin/models.py:35 +#: plugin/models.py:36 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:36 +#: plugin/models.py:37 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:42 users/models.py:100 +#: plugin/models.py:43 users/models.py:100 msgid "Key" msgstr "" -#: plugin/models.py:43 +#: plugin/models.py:44 msgid "Key of plugin" msgstr "" -#: plugin/models.py:51 +#: plugin/models.py:52 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:58 plugin/serializers.py:90 +#: plugin/models.py:59 plugin/serializers.py:90 msgid "Package Name" msgstr "" -#: plugin/models.py:60 +#: plugin/models.py:61 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:65 +#: plugin/models.py:66 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:156 templates/js/translated/table_filters.js:370 +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "" -#: plugin/models.py:165 +#: plugin/models.py:166 msgid "Sample plugin" msgstr "" -#: plugin/models.py:173 +#: plugin/models.py:174 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:181 +#: plugin/models.py:182 msgid "Package Plugin" msgstr "" -#: plugin/models.py:205 report/models.py:474 +#: plugin/models.py:220 report/models.py:475 #: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:252 +#: plugin/models.py:267 msgid "Method" msgstr "" @@ -8175,17 +8251,17 @@ msgstr "" msgid "No author found" msgstr "" -#: plugin/registry.py:597 +#: plugin/registry.py:534 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:600 +#: plugin/registry.py:537 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:602 +#: plugin/registry.py:539 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -8300,23 +8376,19 @@ msgstr "" msgid "Activate this plugin" msgstr "" -#: plugin/serializers.py:234 +#: plugin/serializers.py:226 msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:235 +#: plugin/serializers.py:227 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:77 +#: report/api.py:88 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:89 report/serializers.py:53 -msgid "Model Type" -msgstr "" - -#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/api.py:103 report/models.py:439 report/serializers.py:98 #: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 #: templates/js/translated/return_order.js:353 #: templates/js/translated/sales_order.js:887 @@ -8324,176 +8396,176 @@ msgstr "" msgid "Items" msgstr "" -#: report/api.py:168 +#: report/api.py:180 msgid "Plugin not found" msgstr "" -#: report/api.py:170 +#: report/api.py:182 msgid "Plugin is not active" msgstr "" -#: report/api.py:172 +#: report/api.py:184 msgid "Plugin does not support label printing" msgstr "" -#: report/api.py:221 +#: report/api.py:233 msgid "Invalid label dimensions" msgstr "" -#: report/api.py:236 report/api.py:316 +#: report/api.py:248 report/api.py:329 msgid "No valid items provided to template" msgstr "" -#: report/api.py:271 +#: report/api.py:283 msgid "Error printing label" msgstr "" -#: report/api.py:362 report/api.py:398 +#: report/api.py:375 report/api.py:411 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/helpers.py:41 +#: report/helpers.py:43 msgid "A4" msgstr "" -#: report/helpers.py:42 +#: report/helpers.py:44 msgid "A3" msgstr "" -#: report/helpers.py:43 +#: report/helpers.py:45 msgid "Legal" msgstr "" -#: report/helpers.py:44 +#: report/helpers.py:46 msgid "Letter" msgstr "" -#: report/models.py:118 +#: report/models.py:119 msgid "Template file with this name already exists" msgstr "" -#: report/models.py:150 +#: report/models.py:151 msgid "Template name" msgstr "" -#: report/models.py:156 +#: report/models.py:157 msgid "Template description" msgstr "" -#: report/models.py:162 +#: report/models.py:163 msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Filename Pattern" msgstr "" -#: report/models.py:203 +#: report/models.py:204 msgid "Pattern for generating filenames" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Template is enabled" msgstr "" -#: report/models.py:214 +#: report/models.py:215 msgid "Target model type for template" msgstr "" -#: report/models.py:234 +#: report/models.py:235 msgid "Filters" msgstr "" -#: report/models.py:235 +#: report/models.py:236 msgid "Template query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:294 report/models.py:361 +#: report/models.py:295 report/models.py:362 msgid "Template file" msgstr "" -#: report/models.py:302 +#: report/models.py:303 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:308 +#: report/models.py:309 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:367 +#: report/models.py:368 msgid "Width [mm]" msgstr "" -#: report/models.py:368 +#: report/models.py:369 msgid "Label width, specified in mm" msgstr "" -#: report/models.py:374 +#: report/models.py:375 msgid "Height [mm]" msgstr "" -#: report/models.py:375 +#: report/models.py:376 msgid "Label height, specified in mm" msgstr "" -#: report/models.py:438 +#: report/models.py:439 msgid "Number of items to process" msgstr "" -#: report/models.py:444 +#: report/models.py:445 msgid "Report generation is complete" msgstr "" -#: report/models.py:448 templates/js/translated/build.js:2177 +#: report/models.py:449 templates/js/translated/build.js:2177 msgid "Progress" msgstr "" -#: report/models.py:448 +#: report/models.py:449 msgid "Report generation progress" msgstr "" -#: report/models.py:456 +#: report/models.py:457 msgid "Report Template" msgstr "" -#: report/models.py:463 report/models.py:486 +#: report/models.py:464 report/models.py:487 msgid "Output File" msgstr "" -#: report/models.py:464 report/models.py:487 +#: report/models.py:465 report/models.py:488 msgid "Generated output file" msgstr "" -#: report/models.py:475 +#: report/models.py:476 msgid "Label output plugin" msgstr "" -#: report/models.py:479 +#: report/models.py:480 msgid "Label Template" msgstr "" -#: report/models.py:502 +#: report/models.py:503 msgid "Snippet" msgstr "" -#: report/models.py:503 +#: report/models.py:504 msgid "Report snippet file" msgstr "" -#: report/models.py:510 +#: report/models.py:511 msgid "Snippet file description" msgstr "" -#: report/models.py:528 +#: report/models.py:529 msgid "Asset" msgstr "" -#: report/models.py:529 +#: report/models.py:530 msgid "Report asset file" msgstr "" -#: report/models.py:536 +#: report/models.py:537 msgid "Asset file description" msgstr "" @@ -8566,8 +8638,8 @@ msgid "Total" msgstr "" #: report/templates/report/inventree_return_order_report.html:25 -#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 -#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:824 +#: stock/serializers.py:149 stock/templates/stock/item_base.html:311 #: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 #: templates/js/translated/build.js:2355 #: templates/js/translated/model_renderers.js:230 @@ -8597,32 +8669,32 @@ msgstr "" msgid "Test" msgstr "" -#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2412 msgid "Result" msgstr "" -#: report/templates/report/inventree_test_report.html:130 +#: report/templates/report/inventree_test_report.html:129 msgid "Pass" msgstr "" -#: report/templates/report/inventree_test_report.html:132 +#: report/templates/report/inventree_test_report.html:131 msgid "Fail" msgstr "" -#: report/templates/report/inventree_test_report.html:139 +#: report/templates/report/inventree_test_report.html:138 msgid "No result (required)" msgstr "" -#: report/templates/report/inventree_test_report.html:141 +#: report/templates/report/inventree_test_report.html:140 msgid "No result" msgstr "" -#: report/templates/report/inventree_test_report.html:154 +#: report/templates/report/inventree_test_report.html:153 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "" -#: report/templates/report/inventree_test_report.html:168 stock/admin.py:162 +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 #: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 #: templates/js/translated/stock.js:3110 msgid "Serial" @@ -8644,654 +8716,670 @@ msgstr "" msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:172 +#: stock/admin.py:51 stock/admin.py:171 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:176 +#: stock/admin.py:53 stock/admin.py:175 msgid "Location Name" msgstr "" -#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/admin.py:63 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:149 +#: stock/admin.py:148 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:168 +#: stock/admin.py:167 msgid "Status Code" msgstr "" -#: stock/admin.py:180 +#: stock/admin.py:179 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:185 +#: stock/admin.py:184 +msgid "Supplier Part SKU" +msgstr "" + +#: stock/admin.py:189 msgid "Supplier ID" msgstr "" -#: stock/admin.py:191 +#: stock/admin.py:195 msgid "Supplier Name" msgstr "" -#: stock/admin.py:196 +#: stock/admin.py:200 msgid "Customer ID" msgstr "" -#: stock/admin.py:201 stock/models.py:806 +#: stock/admin.py:205 stock/models.py:804 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:206 +#: stock/admin.py:210 msgid "Build ID" msgstr "" -#: stock/admin.py:216 +#: stock/admin.py:220 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:221 +#: stock/admin.py:225 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:236 +#: stock/admin.py:240 msgid "Review Needed" msgstr "" -#: stock/admin.py:241 +#: stock/admin.py:245 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:256 stock/models.py:900 +#: stock/admin.py:260 stock/models.py:898 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "" -#: stock/api.py:318 +#: stock/api.py:312 msgid "Filter by location depth" msgstr "" -#: stock/api.py:338 +#: stock/api.py:332 +msgid "Filter by top-level locations" +msgstr "" + +#: stock/api.py:347 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:359 +#: stock/api.py:369 stock/serializers.py:1085 msgid "Parent Location" msgstr "" -#: stock/api.py:360 +#: stock/api.py:370 msgid "Filter by parent location" msgstr "" -#: stock/api.py:615 templates/js/translated/table_filters.js:427 +#: stock/api.py:625 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:803 +#: stock/api.py:813 msgid "Part Tree" msgstr "" -#: stock/api.py:833 +#: stock/api.py:843 msgid "Expiry date before" msgstr "" -#: stock/api.py:837 +#: stock/api.py:847 msgid "Expiry date after" msgstr "" -#: stock/api.py:840 stock/templates/stock/item_base.html:439 +#: stock/api.py:850 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:927 +#: stock/api.py:937 msgid "Quantity is required" msgstr "" -#: stock/api.py:933 +#: stock/api.py:943 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:964 +#: stock/api.py:974 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:974 +#: stock/api.py:984 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:1005 +#: stock/api.py:1015 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:59 +#: stock/models.py:60 msgid "Stock Location type" msgstr "" -#: stock/models.py:60 +#: stock/models.py:61 msgid "Stock Location types" msgstr "" -#: stock/models.py:86 +#: stock/models.py:87 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:123 stock/models.py:788 +#: stock/models.py:124 stock/models.py:786 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:124 stock/templates/stock/location.html:186 +#: stock/models.py:125 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "" -#: stock/models.py:166 stock/models.py:949 +#: stock/models.py:167 stock/models.py:947 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:167 stock/models.py:950 +#: stock/models.py:168 stock/models.py:948 msgid "Select Owner" msgstr "" -#: stock/models.py:175 +#: stock/models.py:176 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:182 templates/js/translated/stock.js:2781 +#: stock/models.py:183 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:183 +#: stock/models.py:184 msgid "This is an external stock location" msgstr "" -#: stock/models.py:189 templates/js/translated/stock.js:2790 +#: stock/models.py:190 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" -#: stock/models.py:193 +#: stock/models.py:194 msgid "Stock location type of this location" msgstr "" -#: stock/models.py:262 +#: stock/models.py:261 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:643 +#: stock/models.py:641 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:670 stock/serializers.py:419 +#: stock/models.py:668 stock/serializers.py:446 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:687 +#: stock/models.py:685 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:697 stock/models.py:710 +#: stock/models.py:695 stock/models.py:708 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:700 +#: stock/models.py:698 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:724 +#: stock/models.py:722 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:729 +#: stock/models.py:727 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:742 +#: stock/models.py:740 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:758 +#: stock/models.py:756 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:770 +#: stock/models.py:768 msgid "Base part" msgstr "" -#: stock/models.py:780 +#: stock/models.py:778 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:792 +#: stock/models.py:790 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:800 stock/serializers.py:1480 +#: stock/models.py:798 stock/serializers.py:1476 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:811 +#: stock/models.py:809 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:830 +#: stock/models.py:828 msgid "Serial number for this item" msgstr "" -#: stock/models.py:844 stock/serializers.py:1463 +#: stock/models.py:842 stock/serializers.py:1459 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:849 +#: stock/models.py:847 msgid "Stock Quantity" msgstr "" -#: stock/models.py:859 +#: stock/models.py:857 msgid "Source Build" msgstr "" -#: stock/models.py:862 +#: stock/models.py:860 msgid "Build for this stock item" msgstr "" -#: stock/models.py:869 stock/templates/stock/item_base.html:363 +#: stock/models.py:867 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:872 +#: stock/models.py:870 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:881 +#: stock/models.py:879 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:885 +#: stock/models.py:883 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:891 +#: stock/models.py:889 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:902 +#: stock/models.py:900 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:920 +#: stock/models.py:918 msgid "Delete on deplete" msgstr "" -#: stock/models.py:921 +#: stock/models.py:919 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:941 +#: stock/models.py:939 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:972 +#: stock/models.py:970 msgid "Converted to part" msgstr "" -#: stock/models.py:1490 +#: stock/models.py:1486 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1496 +#: stock/models.py:1492 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1500 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1510 +#: stock/models.py:1506 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1515 +#: stock/models.py:1511 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1523 stock/serializers.py:658 +#: stock/models.py:1519 stock/serializers.py:660 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1620 +#: stock/models.py:1616 msgid "Test template does not exist" msgstr "" -#: stock/models.py:1638 +#: stock/models.py:1634 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1642 +#: stock/models.py:1638 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1645 +#: stock/models.py:1641 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1648 +#: stock/models.py:1644 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1651 +#: stock/models.py:1647 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1654 +#: stock/models.py:1650 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1661 stock/serializers.py:1369 +#: stock/models.py:1657 stock/serializers.py:1365 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1665 +#: stock/models.py:1661 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1673 +#: stock/models.py:1669 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1678 +#: stock/models.py:1674 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1905 +#: stock/models.py:1901 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2310 msgid "Entry notes" msgstr "" -#: stock/models.py:2391 +#: stock/models.py:2378 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2396 +#: stock/models.py:2383 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2423 +#: stock/models.py:2388 +msgid "Invalid value for this test" +msgstr "" + +#: stock/models.py:2412 msgid "Test result" msgstr "" -#: stock/models.py:2430 +#: stock/models.py:2419 msgid "Test output value" msgstr "" -#: stock/models.py:2438 +#: stock/models.py:2427 msgid "Test result attachment" msgstr "" -#: stock/models.py:2442 +#: stock/models.py:2431 msgid "Test notes" msgstr "" -#: stock/models.py:2450 templates/js/translated/stock.js:1548 +#: stock/models.py:2439 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2440 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2457 +#: stock/models.py:2446 msgid "Started" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2447 msgid "The timestamp of the test start" msgstr "" -#: stock/models.py:2464 +#: stock/models.py:2453 msgid "Finished" msgstr "" -#: stock/models.py:2465 +#: stock/models.py:2454 msgid "The timestamp of the test finish" msgstr "" -#: stock/serializers.py:75 +#: stock/serializers.py:74 msgid "Generated batch code" msgstr "" -#: stock/serializers.py:84 +#: stock/serializers.py:83 msgid "Select build order" msgstr "" -#: stock/serializers.py:93 +#: stock/serializers.py:92 msgid "Select stock item to generate batch code for" msgstr "" -#: stock/serializers.py:102 +#: stock/serializers.py:101 msgid "Select location to generate batch code for" msgstr "" -#: stock/serializers.py:111 +#: stock/serializers.py:110 msgid "Select part to generate batch code for" msgstr "" -#: stock/serializers.py:120 +#: stock/serializers.py:119 msgid "Select purchase order" msgstr "" -#: stock/serializers.py:127 +#: stock/serializers.py:126 msgid "Enter quantity for batch code" msgstr "" -#: stock/serializers.py:150 +#: stock/serializers.py:149 msgid "Generated serial number" msgstr "" -#: stock/serializers.py:159 +#: stock/serializers.py:158 msgid "Select part to generate serial number for" msgstr "" -#: stock/serializers.py:167 +#: stock/serializers.py:166 msgid "Quantity of serial numbers to generate" msgstr "" -#: stock/serializers.py:229 +#: stock/serializers.py:228 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:248 +#: stock/serializers.py:247 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:280 +#: stock/serializers.py:279 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:313 +#: stock/serializers.py:315 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:411 +#: stock/serializers.py:438 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:531 +#: stock/serializers.py:558 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:595 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:606 +#: stock/serializers.py:608 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:613 +#: stock/serializers.py:615 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 +#: stock/serializers.py:626 stock/serializers.py:1322 stock/serializers.py:1578 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:631 +#: stock/serializers.py:633 msgid "Optional note field" msgstr "" -#: stock/serializers.py:641 +#: stock/serializers.py:643 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:696 +#: stock/serializers.py:698 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:703 +#: stock/serializers.py:705 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:704 +#: stock/serializers.py:706 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 -#: stock/serializers.py:935 +#: stock/serializers.py:711 stock/serializers.py:791 stock/serializers.py:887 +#: stock/serializers.py:937 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:719 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:725 +#: stock/serializers.py:727 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:736 +#: stock/serializers.py:738 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:749 +#: stock/serializers.py:751 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:784 +#: stock/serializers.py:786 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:819 +#: stock/serializers.py:821 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:834 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:849 +#: stock/serializers.py:851 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:880 +#: stock/serializers.py:882 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:917 +#: stock/serializers.py:919 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:923 +#: stock/serializers.py:925 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:1019 stock/serializers.py:1082 +#: stock/serializers.py:1021 stock/serializers.py:1093 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:220 +#: stock/templates/stock/location.html:222 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1198 +#: stock/serializers.py:1086 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: stock/serializers.py:1194 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1202 +#: stock/serializers.py:1198 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1206 +#: stock/serializers.py:1202 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1230 +#: stock/serializers.py:1226 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1236 +#: stock/serializers.py:1232 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1244 +#: stock/serializers.py:1240 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1254 stock/serializers.py:1508 +#: stock/serializers.py:1250 stock/serializers.py:1504 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1333 +#: stock/serializers.py:1329 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1338 +#: stock/serializers.py:1334 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1339 +#: stock/serializers.py:1335 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1344 +#: stock/serializers.py:1340 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1345 +#: stock/serializers.py:1341 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1355 +#: stock/serializers.py:1351 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1422 +#: stock/serializers.py:1418 msgid "No Change" msgstr "" -#: stock/serializers.py:1451 +#: stock/serializers.py:1447 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1470 +#: stock/serializers.py:1466 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1498 +#: stock/serializers.py:1494 msgid "Stock transaction notes" msgstr "" @@ -9444,7 +9532,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276 msgid "Delete Test Data" msgstr "" @@ -9464,11 +9552,11 @@ msgstr "" msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:272 +#: stock/templates/stock/item.html:264 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "" @@ -9754,28 +9842,28 @@ msgstr "" msgid "Location Type" msgstr "" -#: stock/templates/stock/location.html:224 +#: stock/templates/stock/location.html:226 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:225 +#: stock/templates/stock/location.html:227 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:295 +#: stock/templates/stock/location.html:299 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:317 +#: stock/templates/stock/location.html:321 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:390 +#: stock/templates/stock/location.html:394 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:401 +#: stock/templates/stock/location.html:405 msgid "Link Barcode to Stock Location" msgstr "" @@ -10199,20 +10287,20 @@ msgstr "" msgid "Pricing Settings" msgstr "" -#: templates/InvenTree/settings/pricing.html:34 +#: templates/InvenTree/settings/pricing.html:35 msgid "Exchange Rates" msgstr "" -#: templates/InvenTree/settings/pricing.html:38 +#: templates/InvenTree/settings/pricing.html:39 msgid "Update Now" msgstr "" -#: templates/InvenTree/settings/pricing.html:46 -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 msgid "Last Update" msgstr "" -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:51 msgid "Never" msgstr "" @@ -10269,8 +10357,8 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:547 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 +#: templates/js/translated/part.js:393 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:402 msgid "Delete" msgstr "" @@ -10310,12 +10398,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 -#: templates/js/translated/part.js:1645 +#: templates/js/translated/part.js:1646 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 -#: templates/js/translated/part.js:1646 +#: templates/js/translated/part.js:1647 msgid "Delete Template" msgstr "" @@ -10705,7 +10793,7 @@ msgid "Submit Bug Report" msgstr "" #: templates/about.html:91 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 +#: templates/js/translated/helpers.js:589 msgid "copy to clipboard" msgstr "" @@ -10769,7 +10857,7 @@ 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 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45 msgid "Return to Site" msgstr "" @@ -10883,15 +10971,19 @@ msgstr "" msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "" -#: templates/allauth_2fa/setup.html:23 +#: templates/allauth_2fa/setup.html:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 msgid "Step 2" msgstr "" -#: templates/allauth_2fa/setup.html:27 +#: templates/allauth_2fa/setup.html:28 msgid "Input a token generated by the app:" msgstr "" -#: templates/allauth_2fa/setup.html:37 +#: templates/allauth_2fa/setup.html:38 msgid "Verify" msgstr "" @@ -10970,7 +11062,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3217 +#: templates/js/translated/part.js:3219 msgid "Minimum Quantity" msgstr "" @@ -11058,27 +11150,27 @@ msgstr "" msgid "Delete attachments" msgstr "" -#: templates/js/translated/attachment.js:253 +#: templates/js/translated/attachment.js:260 msgid "Attachment actions" msgstr "" -#: templates/js/translated/attachment.js:275 +#: templates/js/translated/attachment.js:294 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:315 +#: templates/js/translated/attachment.js:334 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:365 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:366 +#: templates/js/translated/attachment.js:385 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:374 +#: templates/js/translated/attachment.js:393 msgid "Delete attachment" msgstr "" @@ -11359,7 +11451,7 @@ msgid "Includes variant and substitute stock" msgstr "" #: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 -#: templates/js/translated/part.js:1256 +#: templates/js/translated/part.js:1257 #: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" @@ -11686,7 +11778,7 @@ msgstr "" #: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 #: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 -#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11729,8 +11821,8 @@ msgstr "" msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 -#: templates/js/translated/part.js:1202 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:791 +#: templates/js/translated/part.js:1203 msgid "Trackable part" msgstr "" @@ -11916,7 +12008,7 @@ msgid "Delete Parameters" msgstr "" #: templates/js/translated/company.js:1191 -#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2244 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2245 msgid "Order parts" msgstr "" @@ -11933,34 +12025,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:1279 -#: templates/js/translated/company.js:1567 templates/js/translated/part.js:798 -#: templates/js/translated/part.js:1210 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Template part" msgstr "" #: templates/js/translated/company.js:1283 -#: templates/js/translated/company.js:1571 templates/js/translated/part.js:802 -#: templates/js/translated/part.js:1214 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:803 +#: templates/js/translated/part.js:1215 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1464 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1465 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1527 +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1528 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1528 +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1529 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1433 +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1434 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1549 +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1550 msgid "Delete Parameter" msgstr "" @@ -12094,23 +12186,23 @@ msgstr "" msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2499 +#: templates/js/translated/forms.js:2500 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3113 +#: templates/js/translated/forms.js:3114 msgid "Select Columns" msgstr "" @@ -12211,7 +12303,7 @@ msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 -#: templates/js/translated/part.js:1604 +#: templates/js/translated/part.js:1605 msgid "ID" msgstr "" @@ -12292,347 +12384,343 @@ msgstr "" 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 +#: templates/js/translated/part.js:333 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:355 +#: templates/js/translated/part.js:356 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:356 +#: templates/js/translated/part.js:357 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:370 +#: templates/js/translated/part.js:371 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:383 +#: templates/js/translated/part.js:384 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:388 +#: templates/js/translated/part.js:389 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:397 +#: templates/js/translated/part.js:398 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:401 +#: templates/js/translated/part.js:402 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:406 +#: templates/js/translated/part.js:407 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:430 +#: templates/js/translated/part.js:431 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:432 +#: templates/js/translated/part.js:433 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:433 +#: templates/js/translated/part.js:434 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:462 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:463 +#: templates/js/translated/part.js:464 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:474 +#: templates/js/translated/part.js:475 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:531 +#: templates/js/translated/part.js:532 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:532 +#: templates/js/translated/part.js:533 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:546 +#: templates/js/translated/part.js:547 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:548 +#: templates/js/translated/part.js:549 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:549 +#: templates/js/translated/part.js:550 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:550 +#: templates/js/translated/part.js:551 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:557 +#: templates/js/translated/part.js:558 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:593 +#: templates/js/translated/part.js:594 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:595 +#: templates/js/translated/part.js:596 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:600 +#: templates/js/translated/part.js:601 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:602 +#: templates/js/translated/part.js:603 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:619 +#: templates/js/translated/part.js:620 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:629 +#: templates/js/translated/part.js:630 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:632 +#: templates/js/translated/part.js:633 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:657 +#: templates/js/translated/part.js:658 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:685 +#: templates/js/translated/part.js:686 #: templates/js/translated/table_filters.js:747 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:688 +#: templates/js/translated/part.js:689 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:748 +#: templates/js/translated/part.js:749 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:771 +#: templates/js/translated/part.js:772 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +#: templates/js/translated/part.js:795 templates/js/translated/part.js:1207 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:806 +#: templates/js/translated/part.js:807 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:810 +#: templates/js/translated/part.js:811 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:897 +#: templates/js/translated/part.js:898 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:901 +#: templates/js/translated/part.js:902 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1050 +#: templates/js/translated/part.js:1051 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1145 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +#: templates/js/translated/part.js:1113 templates/js/translated/part.js:1155 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1281 +#: templates/js/translated/part.js:1282 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1599 +#: templates/js/translated/part.js:1600 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1662 +#: templates/js/translated/part.js:1663 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1674 +#: templates/js/translated/part.js:1675 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1682 +#: templates/js/translated/part.js:1683 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1716 +#: templates/js/translated/part.js:1717 #: templates/js/translated/purchase_order.js:1654 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1860 +#: templates/js/translated/part.js:1861 #: templates/js/translated/purchase_order.js:2153 #: templates/js/translated/return_order.js:755 #: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1906 +#: templates/js/translated/part.js:1907 #: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1970 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1991 +#: templates/js/translated/part.js:1992 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 +#: templates/js/translated/part.js:2080 templates/js/translated/part.js:2506 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2200 +#: templates/js/translated/part.js:2201 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2205 +#: templates/js/translated/part.js:2206 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2235 +#: templates/js/translated/part.js:2236 msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2286 +#: templates/js/translated/part.js:2287 msgid "part" msgstr "" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2288 msgid "parts" msgstr "" -#: templates/js/translated/part.js:2383 +#: templates/js/translated/part.js:2384 msgid "No category" msgstr "" -#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2546 +#: templates/js/translated/part.js:2547 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2644 +#: templates/js/translated/part.js:2645 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2760 +#: templates/js/translated/part.js:2761 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2776 +#: templates/js/translated/part.js:2777 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2865 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2887 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/part.js:2938 templates/js/translated/stock.js:1457 #: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2940 +#: templates/js/translated/part.js:2942 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2956 +#: templates/js/translated/part.js:2958 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2970 +#: templates/js/translated/part.js:2972 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3051 templates/js/translated/part.js:3052 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3052 +#: templates/js/translated/part.js:3054 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3058 +#: templates/js/translated/part.js:3060 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3108 +#: templates/js/translated/part.js:3110 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3114 +#: templates/js/translated/part.js:3116 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3210 +#: templates/js/translated/part.js:3212 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3226 +#: templates/js/translated/part.js:3228 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3271 +#: templates/js/translated/part.js:3273 msgid "Minimum Stock Level" msgstr "" @@ -13240,10 +13328,6 @@ msgstr "" 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 "" @@ -13412,7 +13496,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:401 +#: templates/js/translated/stock.js:1042 users/models.py:392 msgid "Add" msgstr "" @@ -14303,34 +14387,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:384 +#: users/models.py:375 msgid "Permission set" msgstr "" -#: users/models.py:393 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "View" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "Permission to view items" msgstr "" -#: users/models.py:401 +#: users/models.py:392 msgid "Permission to add items" msgstr "" -#: users/models.py:405 +#: users/models.py:396 msgid "Change" msgstr "" -#: users/models.py:407 +#: users/models.py:398 msgid "Permissions to edit items" msgstr "" -#: users/models.py:413 +#: users/models.py:404 msgid "Permission to delete items" msgstr "" + diff --git a/src/backend/InvenTree/locale/fi/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/fi/LC_MESSAGES/django.po index fda464f2eb..9495f6c527 100644 --- a/src/backend/InvenTree/locale/fi/LC_MESSAGES/django.po +++ b/src/backend/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-05-31 07:08+0000\n" -"PO-Revision-Date: 2024-05-27 11:54\n" +"POT-Creation-Date: 2024-06-26 03:18+0000\n" +"PO-Revision-Date: 2024-06-26 06:04\n" "Last-Translator: \n" "Language-Team: Finnish\n" "Language: fi_FI\n" @@ -21,7 +21,7 @@ msgstr "" msgid "API endpoint not found" msgstr "API-rajapintaa ei löydy" -#: InvenTree/api.py:536 +#: InvenTree/api.py:520 msgid "User does not have permission to view this model" msgstr "Käyttäjän oikeudet eivät riitä kohteen tarkastelemiseen" @@ -52,25 +52,25 @@ msgstr "" msgid "Error details can be found in the admin panel" msgstr "Virheen tiedot löytyvät hallintapaneelista" -#: InvenTree/fields.py:139 +#: InvenTree/fields.py:136 msgid "Enter date" msgstr "Anna päivämäärä" -#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 -#: build/serializers.py:531 build/templates/build/sidebar.html:21 -#: company/models.py:849 company/templates/company/sidebar.html:37 -#: order/models.py:1332 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:205 InvenTree/models.py:918 build/serializers.py:452 +#: build/serializers.py:530 build/templates/build/sidebar.html:21 +#: company/models.py:817 company/templates/company/sidebar.html:37 +#: order/models.py:1296 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:3218 part/templates/part/part_sidebar.html:63 +#: part/models.py:3183 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_report.html:172 -#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 -#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 -#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 -#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:230 stock/models.py:2309 stock/models.py:2431 +#: stock/serializers.py:632 stock/serializers.py:790 stock/serializers.py:886 +#: stock/serializers.py:936 stock/serializers.py:1239 stock/serializers.py:1328 +#: stock/serializers.py:1493 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1080 +#: templates/js/translated/part.js:1081 #: templates/js/translated/purchase_order.js:2200 #: templates/js/translated/return_order.js:775 #: templates/js/translated/sales_order.js:1103 @@ -120,15 +120,15 @@ msgstr "Sähköpostiosoitteen vahvistus" msgid "You must type the same email each time." msgstr "Sinun täytyy kirjoittaa sama sähköposti joka kerta." -#: InvenTree/forms.py:253 InvenTree/forms.py:261 +#: InvenTree/forms.py:248 InvenTree/forms.py:256 msgid "The provided primary email address is not valid." msgstr "Annettu ensisijainen sähköpostiosoite ei kelpaa." -#: InvenTree/forms.py:268 +#: InvenTree/forms.py:263 msgid "The provided email domain is not approved." msgstr "Annetun sähköpostiosoitteen verkkotunnusta ei hyväksytä." -#: InvenTree/forms.py:395 +#: InvenTree/forms.py:390 msgid "Registration is disabled." msgstr "" @@ -171,35 +171,35 @@ msgstr "" msgid "Remove HTML tags from this value" msgstr "" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Connection error" msgstr "Yhteysvirhe" -#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 msgid "Server responded with invalid status code" msgstr "Palvelin vastasi virheellisellä tilakoodilla" -#: InvenTree/helpers_model.py:158 +#: InvenTree/helpers_model.py:148 msgid "Exception occurred" msgstr "" -#: InvenTree/helpers_model.py:168 +#: InvenTree/helpers_model.py:158 msgid "Server responded with invalid Content-Length value" msgstr "" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:161 msgid "Image size is too large" msgstr "Kuva on liian iso" -#: InvenTree/helpers_model.py:183 +#: InvenTree/helpers_model.py:173 msgid "Image download exceeded maximum size" msgstr "Kuvan lataus ylitti enimmäiskoon" -#: InvenTree/helpers_model.py:188 +#: InvenTree/helpers_model.py:178 msgid "Remote server returned empty response" msgstr "Etäpalvelin palautti tyhjän vastauksen" -#: InvenTree/helpers_model.py:196 +#: InvenTree/helpers_model.py:186 msgid "Supplied URL is not a valid image file" msgstr "Annettu URL ei ole kelvollinen kuvatiedosto" @@ -296,46 +296,50 @@ msgid "Portuguese (Brazilian)" msgstr "portugali (Brasilia)" #: InvenTree/locales.py:41 +msgid "Romanian" +msgstr "" + +#: InvenTree/locales.py:42 msgid "Russian" msgstr "venäjä" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:43 msgid "Slovak" msgstr "" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:44 msgid "Slovenian" msgstr "slovenia" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:45 msgid "Serbian" msgstr "" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:46 msgid "Swedish" msgstr "ruotsi" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:47 msgid "Thai" msgstr "thai" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:48 msgid "Turkish" msgstr "turkki" -#: InvenTree/locales.py:48 +#: InvenTree/locales.py:49 msgid "Ukrainian" msgstr "" -#: InvenTree/locales.py:49 +#: InvenTree/locales.py:50 msgid "Vietnamese" msgstr "vietnam" -#: InvenTree/locales.py:50 +#: InvenTree/locales.py:51 msgid "Chinese (Simplified)" msgstr "" -#: InvenTree/locales.py:51 +#: InvenTree/locales.py:52 msgid "Chinese (Traditional)" msgstr "" @@ -344,153 +348,65 @@ msgstr "" msgid "[{site_name}] Log in to the app" msgstr "" -#: InvenTree/magic_login.py:38 company/models.py:133 +#: InvenTree/magic_login.py:38 company/models.py:136 #: company/templates/company/company_base.html:138 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:677 msgid "Email" msgstr "Sähköposti" -#: InvenTree/models.py:107 +#: InvenTree/models.py:105 msgid "Error running plugin validation" msgstr "" -#: InvenTree/models.py:176 +#: InvenTree/models.py:174 msgid "Metadata must be a python dict object" msgstr "Metatietojen tulee olla python dict objekti" -#: InvenTree/models.py:182 +#: InvenTree/models.py:180 msgid "Plugin Metadata" msgstr "Liitännäisen metadata" -#: InvenTree/models.py:183 +#: InvenTree/models.py:181 msgid "JSON metadata field, for use by external plugins" msgstr "JSON metadatakenttä, ulkoisten liitännäisten käyttöön" -#: InvenTree/models.py:413 +#: InvenTree/models.py:408 msgid "Improperly formatted pattern" msgstr "Virheellisesti muotoiltu malli" -#: InvenTree/models.py:420 +#: InvenTree/models.py:415 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:426 +#: InvenTree/models.py:421 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:437 +#: InvenTree/models.py:432 msgid "Reference field cannot be empty" msgstr "Viitekenttä ei voi olla tyhjä" -#: InvenTree/models.py:445 +#: InvenTree/models.py:440 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:476 +#: InvenTree/models.py:471 msgid "Reference number is too large" msgstr "Viitenumero on liian suuri" -#: InvenTree/models.py:550 -msgid "Missing file" -msgstr "Puuttuva tiedosto" - -#: InvenTree/models.py:551 -msgid "Missing external link" -msgstr "Puuttuva ulkoinen linkki" - -#: InvenTree/models.py:572 stock/models.py:2437 -#: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:326 -msgid "Attachment" -msgstr "Liite" - -#: InvenTree/models.py:573 -msgid "Select file to attach" -msgstr "Valitse liitettävä tiedosto" - -#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:831 -#: order/models.py:303 order/models.py:1337 order/models.py:1753 -#: part/admin.py:55 part/models.py:962 -#: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_report.html:164 -#: stock/admin.py:225 templates/js/translated/company.js:1319 -#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2455 -#: templates/js/translated/purchase_order.js:2040 -#: templates/js/translated/purchase_order.js:2204 -#: templates/js/translated/return_order.js:779 -#: templates/js/translated/sales_order.js:1092 -#: templates/js/translated/sales_order.js:2023 -msgid "Link" -msgstr "Linkki" - -#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 -#: stock/models.py:836 -msgid "Link to external URL" -msgstr "Linkki ulkoiseen URLiin" - -#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:341 -msgid "Comment" -msgstr "Kommentti" - -#: InvenTree/models.py:589 -msgid "File comment" -msgstr "Tiedoston kommentti" - -#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 -#: common/models.py:2518 common/models.py:2742 common/models.py:2743 -#: common/models.py:2988 common/models.py:2989 part/models.py:3228 -#: part/models.py:3315 part/models.py:3408 part/models.py:3436 -#: plugin/models.py:259 plugin/models.py:260 -#: report/templates/report/inventree_test_report.html:105 -#: templates/js/translated/stock.js:3036 users/models.py:111 -msgid "User" -msgstr "Käyttäjä" - -#: InvenTree/models.py:602 -msgid "upload date" -msgstr "latauspäivä" - -#: InvenTree/models.py:624 -msgid "Filename must not be empty" -msgstr "Tiedoston nimi ei saa olla tyhjä" - -#: InvenTree/models.py:635 -msgid "Invalid attachment directory" -msgstr "Virheellinen liitteen hakemisto" - -#: InvenTree/models.py:665 -#, python-brace-format -msgid "Filename contains illegal character '{c}'" -msgstr "Tiedostonimi sisältää kielletyn merkin '{c}'" - -#: InvenTree/models.py:668 -msgid "Filename missing extension" -msgstr "Tiedostonimen pääte puuttuu" - -#: InvenTree/models.py:677 -msgid "Attachment with this filename already exists" -msgstr "Samanniminen liite on jo olemassa" - -#: InvenTree/models.py:684 -msgid "Error renaming file" -msgstr "Virhe tiedoston uudelleennimeämisessä" - -#: InvenTree/models.py:860 +#: InvenTree/models.py:719 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:877 +#: InvenTree/models.py:736 msgid "Invalid choice" msgstr "Virheellinen valinta" -#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 -#: common/serializers.py:403 company/models.py:614 machine/models.py:24 -#: part/models.py:898 part/models.py:3659 plugin/models.py:50 -#: report/models.py:149 stock/models.py:72 +#: InvenTree/models.py:766 common/models.py:2623 common/models.py:3036 +#: common/serializers.py:408 company/models.py:580 machine/models.py:24 +#: part/models.py:891 part/models.py:3639 plugin/models.py:51 +#: report/models.py:150 stock/models.py:73 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:83 @@ -501,25 +417,25 @@ msgstr "Virheellinen valinta" #: templates/js/translated/company.js:724 #: templates/js/translated/company.js:913 #: templates/js/translated/company.js:1165 -#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 -#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1187 +#: templates/js/translated/part.js:1475 templates/js/translated/part.js:1611 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Nimi" -#: InvenTree/models.py:913 build/models.py:218 -#: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:523 company/models.py:840 +#: InvenTree/models.py:772 build/models.py:220 +#: build/templates/build/detail.html:24 common/models.py:138 +#: company/models.py:509 company/models.py:808 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 order/models.py:289 -#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 -#: part/models.py:3674 part/templates/part/category.html:82 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:914 +#: part/models.py:3654 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:155 -#: report/models.py:509 report/models.py:535 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 #: report/templates/report/inventree_build_order_report.html:117 -#: stock/admin.py:55 stock/models.py:78 stock/templates/stock/location.html:125 +#: stock/admin.py:54 stock/models.py:79 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 @@ -528,10 +444,10 @@ msgstr "Nimi" #: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 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:2354 -#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1239 +#: templates/js/translated/part.js:1484 templates/js/translated/part.js:1622 +#: templates/js/translated/part.js:1959 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2897 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1706 #: templates/js/translated/purchase_order.js:1849 @@ -544,149 +460,141 @@ msgstr "Nimi" msgid "Description" msgstr "Kuvaus" -#: InvenTree/models.py:914 stock/models.py:79 +#: InvenTree/models.py:773 stock/models.py:80 msgid "Description (optional)" msgstr "Kuvaus (valinnainen)" -#: InvenTree/models.py:923 -msgid "parent" -msgstr "" - -#: InvenTree/models.py:929 templates/js/translated/part.js:2793 +#: InvenTree/models.py:788 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Polku" -#: InvenTree/models.py:1035 +#: InvenTree/models.py:918 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:1064 +#: InvenTree/models.py:947 msgid "Barcode Data" msgstr "Viivakoodin Tiedot" -#: InvenTree/models.py:1065 +#: InvenTree/models.py:948 msgid "Third party barcode data" msgstr "" -#: InvenTree/models.py:1071 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:1072 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:1125 +#: InvenTree/models.py:1008 msgid "Existing barcode found" msgstr "" -#: InvenTree/models.py:1168 +#: InvenTree/models.py:1051 msgid "Server Error" msgstr "Palvelinvirhe" -#: InvenTree/models.py:1169 +#: InvenTree/models.py:1052 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:62 part/models.py:4212 +#: InvenTree/serializers.py:63 part/models.py:4192 msgid "Must be a valid number" msgstr "Täytyy olla kelvollinen luku" -#: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:3036 +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3001 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Valuutta" -#: InvenTree/serializers.py:102 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "Valitse valuutta käytettävissä olevista vaihtoehdoista" -#: InvenTree/serializers.py:441 +#: InvenTree/serializers.py:442 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:453 +#: InvenTree/serializers.py:454 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:472 +#: InvenTree/serializers.py:473 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:474 +#: InvenTree/serializers.py:475 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:481 +#: InvenTree/serializers.py:482 msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:542 -msgid "Filename" -msgstr "Tiedostonimi" - -#: InvenTree/serializers.py:576 +#: InvenTree/serializers.py:540 msgid "Invalid value" msgstr "Virheellinen arvo" -#: InvenTree/serializers.py:596 +#: InvenTree/serializers.py:560 msgid "Data File" msgstr "Datatiedosto" -#: InvenTree/serializers.py:597 +#: InvenTree/serializers.py:561 msgid "Select data file for upload" msgstr "Valitse lähetettävä datatiedosto" -#: InvenTree/serializers.py:614 +#: InvenTree/serializers.py:578 msgid "Unsupported file type" msgstr "Tiedostotyyppiä ei tueta" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:584 msgid "File is too large" msgstr "Tiedosto on liian suuri" -#: InvenTree/serializers.py:641 +#: InvenTree/serializers.py:605 msgid "No columns found in file" msgstr "" -#: InvenTree/serializers.py:644 +#: InvenTree/serializers.py:608 msgid "No data rows found in file" msgstr "" -#: InvenTree/serializers.py:757 +#: InvenTree/serializers.py:721 msgid "No data rows provided" msgstr "Datarivejä ei annettu" -#: InvenTree/serializers.py:760 +#: InvenTree/serializers.py:724 msgid "No data columns supplied" msgstr "Datasarakkeita ei annettu" -#: InvenTree/serializers.py:827 +#: InvenTree/serializers.py:791 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Vaadittu sarake puuttuu: '{name}'" -#: InvenTree/serializers.py:836 +#: InvenTree/serializers.py:800 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Duplikaatti sarake: '{col}'" -#: InvenTree/serializers.py:859 +#: InvenTree/serializers.py:840 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:860 +#: InvenTree/serializers.py:841 msgid "URL of remote image file" msgstr "Kuvatiedoston URL" -#: InvenTree/serializers.py:878 +#: InvenTree/serializers.py:859 msgid "Downloading images from remote URL is not enabled" msgstr "Kuvien lataaminen ei ole käytössä" -#: InvenTree/status.py:66 part/serializers.py:1178 +#: InvenTree/status.py:66 part/serializers.py:1174 msgid "Background worker check failed" msgstr "" @@ -698,27 +606,27 @@ msgstr "" msgid "InvenTree system health checks failed" msgstr "InvenTree järjestelmän terveystarkastukset epäonnistui" -#: InvenTree/templatetags/inventree_extras.py:183 +#: InvenTree/templatetags/inventree_extras.py:184 msgid "Unknown database" msgstr "" -#: InvenTree/validators.py:31 InvenTree/validators.py:33 +#: InvenTree/validators.py:32 InvenTree/validators.py:34 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:39 +#: InvenTree/validators.py:40 msgid "Not a valid currency code" msgstr "" -#: InvenTree/validators.py:121 InvenTree/validators.py:137 +#: InvenTree/validators.py:118 InvenTree/validators.py:134 msgid "Overage value must not be negative" msgstr "" -#: InvenTree/validators.py:139 +#: InvenTree/validators.py:136 msgid "Overage must not exceed 100%" msgstr "" -#: InvenTree/validators.py:145 +#: InvenTree/validators.py:142 msgid "Invalid value for overage" msgstr "" @@ -750,14 +658,14 @@ msgstr "Tietoja InvenTree:stä" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: build/api.py:299 part/models.py:4070 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:300 part/models.py:4084 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4064 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2529 #: templates/js/translated/table_filters.js:186 @@ -778,30 +686,30 @@ msgstr "" msgid "Allocated" msgstr "" -#: build/api.py:311 company/models.py:904 company/serializers.py:383 +#: build/api.py:311 company/models.py:872 company/serializers.py:359 #: 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:2561 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:234 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 -#: templates/js/translated/part.js:699 +#: templates/js/translated/part.js:693 templates/js/translated/part.js:695 +#: templates/js/translated/part.js:700 #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:575 msgid "Available" msgstr "Saatavilla" -#: build/models.py:83 build/templates/build/build_base.html:9 +#: build/models.py:85 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_report.html:105 -#: stock/serializers.py:83 templates/email/build_order_completed.html:16 +#: stock/serializers.py:82 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:2892 msgid "Build Order" msgstr "" -#: build/models.py:84 build/templates/build/build_base.html:13 +#: build/models.py:86 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 @@ -812,25 +720,25 @@ msgstr "" msgid "Build Orders" msgstr "" -#: build/models.py:131 +#: build/models.py:133 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:142 order/models.py:240 +#: build/models.py:144 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "" -#: build/models.py:148 +#: build/models.py:150 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:209 +#: build/models.py:211 msgid "Build Order Reference" msgstr "" -#: build/models.py:210 order/models.py:463 order/models.py:928 -#: order/models.py:1325 order/models.py:2056 part/admin.py:419 -#: part/models.py:4105 part/templates/part/upload_bom.html:54 +#: build/models.py:212 order/models.py:463 order/models.py:926 +#: order/models.py:1289 order/models.py:2020 part/admin.py:411 +#: part/models.py:4085 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_purchase_order_report.html:28 #: report/templates/report/inventree_return_order_report.html:26 @@ -844,27 +752,27 @@ msgstr "" msgid "Reference" msgstr "" -#: build/models.py:221 +#: build/models.py:223 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:229 build/templates/build/build_base.html:183 +#: build/models.py:231 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:230 +#: build/models.py:232 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:235 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 -#: order/models.py:1450 order/models.py:1595 order/models.py:1596 -#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 -#: part/models.py:3191 part/models.py:3335 part/models.py:3358 -#: part/models.py:3379 part/models.py:3401 part/models.py:3511 -#: part/models.py:3807 part/models.py:3963 part/models.py:4056 -#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 +#: build/models.py:237 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1026 order/api.py:805 +#: order/models.py:1414 order/models.py:1559 order/models.py:1560 +#: part/api.py:1494 part/api.py:1788 part/models.py:395 part/models.py:3012 +#: part/models.py:3156 part/models.py:3303 part/models.py:3324 +#: part/models.py:3346 part/models.py:3477 part/models.py:3787 +#: part/models.py:3943 part/models.py:4036 part/models.py:4395 +#: part/serializers.py:1120 part/serializers.py:1726 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -875,8 +783,8 @@ msgstr "" #: report/templates/report/inventree_return_order_report.html:24 #: report/templates/report/inventree_sales_order_report.html:27 #: report/templates/report/inventree_stock_location_report.html:102 -#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 -#: stock/serializers.py:818 templates/InvenTree/search.html:82 +#: stock/serializers.py:109 stock/serializers.py:157 stock/serializers.py:423 +#: stock/serializers.py:820 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 @@ -889,8 +797,8 @@ msgstr "" #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 -#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2323 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:1944 templates/js/translated/part.js:2016 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 #: templates/js/translated/purchase_order.js:751 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1848 @@ -908,107 +816,107 @@ msgstr "" msgid "Part" msgstr "Osa" -#: build/models.py:243 +#: build/models.py:245 msgid "Select part to build" msgstr "" -#: build/models.py:248 +#: build/models.py:250 msgid "Sales Order Reference" msgstr "" -#: build/models.py:252 +#: build/models.py:254 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:257 build/serializers.py:1000 +#: build/models.py:259 build/serializers.py:999 #: templates/js/translated/build.js:1731 #: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "" -#: build/models.py:261 +#: build/models.py:263 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:266 +#: build/models.py:268 msgid "Destination Location" msgstr "" -#: build/models.py:270 +#: build/models.py:272 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:274 +#: build/models.py:276 msgid "Build Quantity" msgstr "" -#: build/models.py:277 +#: build/models.py:279 msgid "Number of stock items to build" msgstr "" -#: build/models.py:281 +#: build/models.py:283 msgid "Completed items" msgstr "" -#: build/models.py:283 +#: build/models.py:285 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:287 +#: build/models.py:289 msgid "Build Status" msgstr "" -#: build/models.py:291 +#: build/models.py:293 msgid "Build status code" msgstr "" -#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 -#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 +#: build/models.py:302 build/serializers.py:286 order/serializers.py:580 +#: stock/models.py:838 stock/serializers.py:74 stock/serializers.py:1458 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "" -#: build/models.py:304 build/serializers.py:288 +#: build/models.py:306 build/serializers.py:287 msgid "Batch code for this build output" msgstr "" -#: build/models.py:307 order/models.py:316 order/serializers.py:120 -#: part/models.py:1122 part/templates/part/part_base.html:310 +#: build/models.py:309 order/models.py:316 order/serializers.py:119 +#: part/models.py:1115 part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:338 #: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "" -#: build/models.py:311 +#: build/models.py:313 msgid "Target completion date" msgstr "" -#: build/models.py:312 +#: build/models.py:314 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:315 order/models.py:521 order/models.py:2101 +#: build/models.py:317 order/models.py:521 order/models.py:2065 #: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "" -#: build/models.py:321 +#: build/models.py:323 msgid "completed by" msgstr "" -#: build/models.py:329 templates/js/translated/build.js:2207 +#: build/models.py:331 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "" -#: build/models.py:330 +#: build/models.py:332 msgid "User who issued this build order" msgstr "" -#: build/models.py:338 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:145 +#: build/models.py:340 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:147 #: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:232 part/models.py:1139 +#: order/templates/order/sales_order_base.html:232 part/models.py:1132 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_report.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 @@ -1019,31 +927,36 @@ msgstr "" msgid "Responsible" msgstr "" -#: build/models.py:339 +#: build/models.py:341 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:344 build/templates/build/detail.html:108 +#: build/models.py:346 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:184 -#: part/templates/part/part_base.html:383 stock/models.py:836 +#: part/templates/part/part_base.html:383 stock/models.py:834 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "Ulkoinen linkki" -#: build/models.py:349 +#: build/models.py:347 common/models.py:3178 part/models.py:956 +#: stock/models.py:834 +msgid "Link to external URL" +msgstr "Linkki ulkoiseen URLiin" + +#: build/models.py:351 msgid "Build Priority" msgstr "" -#: build/models.py:352 +#: build/models.py:354 msgid "Priority of this build order" msgstr "" -#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: build/models.py:361 common/models.py:131 order/admin.py:18 #: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 #: templates/js/translated/build.js:2144 #: templates/js/translated/purchase_order.js:1710 @@ -1054,65 +967,65 @@ msgstr "" msgid "Project Code" msgstr "" -#: build/models.py:360 +#: build/models.py:362 msgid "Project code for this build order" msgstr "" -#: build/models.py:593 build/models.py:658 +#: build/models.py:595 build/models.py:660 msgid "Failed to offload task to complete build allocations" msgstr "" -#: build/models.py:615 +#: build/models.py:617 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:621 +#: build/models.py:623 msgid "A build order has been completed" msgstr "" -#: build/models.py:847 build/models.py:932 +#: build/models.py:849 build/models.py:934 msgid "No build output specified" msgstr "" -#: build/models.py:850 +#: build/models.py:852 msgid "Build output is already completed" msgstr "" -#: build/models.py:853 +#: build/models.py:855 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 -#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 -#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 -#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 +#: build/models.py:938 build/serializers.py:219 build/serializers.py:268 +#: build/serializers.py:866 order/models.py:559 order/serializers.py:432 +#: order/serializers.py:575 part/serializers.py:1484 part/serializers.py:1884 +#: stock/models.py:677 stock/models.py:1495 stock/serializers.py:603 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:941 build/serializers.py:225 +#: build/models.py:943 build/serializers.py:224 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1001 build/serializers.py:548 +#: build/models.py:1003 build/serializers.py:547 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1352 +#: build/models.py:1344 msgid "Build Order Line Item" msgstr "" -#: build/models.py:1377 +#: build/models.py:1369 msgid "Build object" msgstr "" -#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 -#: build/serializers.py:254 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2539 -#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 -#: part/forms.py:48 part/models.py:3205 part/models.py:4078 +#: build/models.py:1383 build/models.py:1639 build/serializers.py:206 +#: build/serializers.py:253 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2509 +#: order/models.py:1272 order/models.py:1931 order/serializers.py:1327 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3170 part/models.py:4058 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1121,8 +1034,8 @@ msgstr "" #: report/templates/report/inventree_sales_order_report.html:29 #: report/templates/report/inventree_stock_location_report.html:104 #: report/templates/report/inventree_test_report.html:90 -#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 -#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:125 stock/serializers.py:165 stock/serializers.py:594 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1133,8 +1046,8 @@ msgstr "" #: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 #: templates/js/translated/model_renderers.js:236 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:962 +#: templates/js/translated/part.js:1812 templates/js/translated/part.js:3342 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1154,38 +1067,38 @@ msgstr "" msgid "Quantity" msgstr "Määrä" -#: build/models.py:1392 +#: build/models.py:1384 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1472 +#: build/models.py:1464 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1481 +#: build/models.py:1473 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1491 order/models.py:1918 +#: build/models.py:1483 order/models.py:1882 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1497 order/models.py:1921 +#: build/models.py:1489 order/models.py:1885 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1503 +#: build/models.py:1495 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1562 +#: build/models.py:1554 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 -#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 -#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: build/models.py:1626 build/serializers.py:846 order/serializers.py:1171 +#: order/serializers.py:1192 stock/models.py:358 stock/serializers.py:91 +#: stock/serializers.py:697 stock/serializers.py:1177 stock/serializers.py:1289 #: stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 @@ -1201,70 +1114,70 @@ msgstr "" msgid "Stock Item" msgstr "Varastotuote" -#: build/models.py:1635 +#: build/models.py:1627 msgid "Source stock item" msgstr "" -#: build/models.py:1648 +#: build/models.py:1640 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1656 +#: build/models.py:1648 msgid "Install into" msgstr "" -#: build/models.py:1657 +#: build/models.py:1649 msgid "Destination stock item" msgstr "" -#: build/serializers.py:157 build/serializers.py:876 +#: build/serializers.py:156 build/serializers.py:875 #: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "" -#: build/serializers.py:169 +#: build/serializers.py:168 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:173 +#: build/serializers.py:172 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:177 +#: build/serializers.py:176 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:188 +#: build/serializers.py:187 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:208 build/serializers.py:255 +#: build/serializers.py:207 build/serializers.py:254 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:276 +#: build/serializers.py:275 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:279 +#: build/serializers.py:278 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:294 order/serializers.py:589 order/serializers.py:1343 -#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:293 order/serializers.py:588 order/serializers.py:1331 +#: stock/serializers.py:614 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Sarjanumerot" -#: build/serializers.py:295 +#: build/serializers.py:294 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 -#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 -#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 -#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 -#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 +#: build/serializers.py:299 build/serializers.py:440 build/serializers.py:512 +#: order/serializers.py:564 order/serializers.py:672 order/serializers.py:1656 +#: part/serializers.py:1140 stock/serializers.py:100 stock/serializers.py:625 +#: stock/serializers.py:785 stock/serializers.py:881 stock/serializers.py:1321 +#: stock/serializers.py:1577 stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:1001 #: templates/js/translated/build.js:2372 @@ -1280,54 +1193,54 @@ msgstr "" msgid "Location" msgstr "Sijainti" -#: build/serializers.py:301 +#: build/serializers.py:300 msgid "Stock location for build output" msgstr "" -#: build/serializers.py:315 +#: build/serializers.py:314 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:316 +#: build/serializers.py:315 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:331 +#: build/serializers.py:330 msgid "Serial numbers must be provided for trackable parts" msgstr "" -#: build/serializers.py:356 stock/api.py:1031 +#: build/serializers.py:355 stock/api.py:1041 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:403 build/serializers.py:465 build/serializers.py:554 +#: build/serializers.py:402 build/serializers.py:464 build/serializers.py:553 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:442 +#: build/serializers.py:441 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:448 +#: build/serializers.py:447 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:449 +#: build/serializers.py:448 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:454 +#: build/serializers.py:453 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:514 +#: build/serializers.py:513 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:520 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:952 -#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 -#: stock/serializers.py:930 stock/serializers.py:1469 +#: build/serializers.py:519 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2044 order/serializers.py:596 stock/admin.py:164 +#: stock/serializers.py:932 stock/serializers.py:1465 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 @@ -1339,188 +1252,188 @@ msgstr "" msgid "Status" msgstr "Tila" -#: build/serializers.py:526 +#: build/serializers.py:525 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:527 +#: build/serializers.py:526 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:611 msgid "Consume Allocated Stock" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:612 msgid "Consume any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:619 +#: build/serializers.py:618 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:620 +#: build/serializers.py:619 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:646 msgid "Not permitted" msgstr "Ei sallittu" -#: build/serializers.py:648 +#: build/serializers.py:647 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:648 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:679 +#: build/serializers.py:678 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:681 +#: build/serializers.py:680 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:691 +#: build/serializers.py:690 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:696 +#: build/serializers.py:695 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:697 +#: build/serializers.py:696 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:707 templates/js/translated/build.js:315 +#: build/serializers.py:706 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:712 order/serializers.py:301 order/serializers.py:1246 +#: build/serializers.py:711 order/serializers.py:300 order/serializers.py:1234 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:713 +#: build/serializers.py:712 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:723 templates/js/translated/build.js:319 +#: build/serializers.py:722 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:732 templates/js/translated/build.js:303 +#: build/serializers.py:731 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:770 +#: build/serializers.py:769 msgid "Build Line" msgstr "" -#: build/serializers.py:780 +#: build/serializers.py:779 msgid "Build output" msgstr "" -#: build/serializers.py:788 +#: build/serializers.py:787 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:824 +#: build/serializers.py:823 msgid "Build Line Item" msgstr "" -#: build/serializers.py:838 +#: build/serializers.py:837 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:853 stock/serializers.py:1194 +#: build/serializers.py:852 stock/serializers.py:1190 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:901 order/serializers.py:1237 +#: build/serializers.py:900 order/serializers.py:1225 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:907 +#: build/serializers.py:906 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:914 +#: build/serializers.py:913 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:938 order/serializers.py:1489 +#: build/serializers.py:937 order/serializers.py:1477 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:1001 +#: build/serializers.py:1000 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:1009 +#: build/serializers.py:1008 msgid "Exclude Location" msgstr "" -#: build/serializers.py:1010 +#: build/serializers.py:1009 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:1015 +#: build/serializers.py:1014 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:1016 +#: build/serializers.py:1015 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:1021 +#: build/serializers.py:1020 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:1022 +#: build/serializers.py:1021 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:1027 +#: build/serializers.py:1026 msgid "Optional Items" msgstr "" -#: build/serializers.py:1028 +#: build/serializers.py:1027 msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1050 +#: build/serializers.py:1049 msgid "Failed to start auto-allocation task" msgstr "" -#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 -#: stock/api.py:794 +#: build/serializers.py:1139 part/models.py:3953 part/models.py:4387 +#: stock/api.py:804 msgid "BOM Item" msgstr "" -#: build/serializers.py:1149 templates/js/translated/index.js:130 +#: build/serializers.py:1148 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:832 part/serializers.py:1506 +#: build/serializers.py:1153 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:828 part/serializers.py:1502 #: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 -#: templates/js/translated/build.js:2613 templates/js/translated/part.js:709 -#: templates/js/translated/part.js:2148 +#: templates/js/translated/build.js:2613 templates/js/translated/part.js:710 +#: templates/js/translated/part.js:2149 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1159 part/serializers.py:1508 +#: build/serializers.py:1158 part/serializers.py:1504 #: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 +#: build/serializers.py:1163 part/bom.py:172 part/serializers.py:1527 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1929 msgid "Available Stock" @@ -1544,7 +1457,7 @@ msgstr "Peruttu" #: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 #: order/status_codes.py:44 order/status_codes.py:69 #: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:165 report/models.py:443 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 msgid "Complete" msgstr "Valmis" @@ -1674,11 +1587,11 @@ msgstr "" #: build/templates/build/build_base.html:160 #: build/templates/build/detail.html:138 order/models.py:309 -#: order/models.py:1343 order/templates/order/order_base.html:186 +#: order/models.py:1307 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:196 #: report/templates/report/inventree_build_order_report.html:125 -#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1831 #: templates/js/translated/purchase_order.js:1739 #: templates/js/translated/purchase_order.js:2147 #: templates/js/translated/return_order.js:346 @@ -1711,8 +1624,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 -#: order/models.py:1587 order/models.py:1701 order/models.py:1855 +#: build/templates/build/detail.html:101 order/api.py:1463 order/models.py:845 +#: order/models.py:1551 order/models.py:1665 order/models.py:1819 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_report.html:135 @@ -1762,7 +1675,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1479 +#: build/templates/build/detail.html:49 order/models.py:1443 #: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "" @@ -1775,7 +1688,7 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:163 +#: build/templates/build/detail.html:80 stock/admin.py:162 #: stock/templates/stock/item_base.html:162 #: templates/js/translated/build.js:1380 #: templates/js/translated/model_renderers.js:241 @@ -1894,11 +1807,11 @@ msgstr "Liitteet" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:436 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -1914,6 +1827,34 @@ msgstr "" msgid "Incomplete Outputs" msgstr "" +#: common/api.py:689 +msgid "Is Link" +msgstr "" + +#: common/api.py:697 +msgid "Is File" +msgstr "" + +#: common/api.py:739 +msgid "User does not have permission to delete this attachment" +msgstr "" + +#: common/currency.py:130 +msgid "Invalid currency code" +msgstr "" + +#: common/currency.py:132 +msgid "Duplicate currency code" +msgstr "" + +#: common/currency.py:137 +msgid "No valid currency codes provided" +msgstr "" + +#: common/currency.py:154 +msgid "No plugin" +msgstr "" + #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1952,1507 +1893,1512 @@ msgstr "{name.title()} Tiedosto" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:71 +#: common/models.py:73 msgid "Updated" msgstr "Päivitetty" -#: common/models.py:72 +#: common/models.py:74 msgid "Timestamp of last update" msgstr "Viimeisimmän päivityksen aikaleima" -#: common/models.py:105 +#: common/models.py:107 msgid "Site URL is locked by configuration" msgstr "" -#: common/models.py:130 +#: common/models.py:132 msgid "Unique project code" msgstr "" -#: common/models.py:137 +#: common/models.py:139 msgid "Project description" msgstr "" -#: common/models.py:146 +#: common/models.py:148 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:766 +#: common/models.py:765 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:770 +#: common/models.py:769 msgid "Settings value" msgstr "" -#: common/models.py:822 +#: common/models.py:821 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:838 +#: common/models.py:837 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:846 +#: common/models.py:845 msgid "Value must be an integer value" msgstr "" -#: common/models.py:883 +#: common/models.py:882 msgid "Key string must be unique" msgstr "" -#: common/models.py:1115 +#: common/models.py:1114 msgid "No group" msgstr "Ei ryhmää" -#: common/models.py:1158 -msgid "An empty domain is not allowed." -msgstr "Verkkotunnus ei saa olla tyhjä." - -#: common/models.py:1160 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "Virheellinen verkkotunnus: {domain}" - -#: common/models.py:1172 -msgid "No plugin" -msgstr "" - -#: common/models.py:1260 +#: common/models.py:1213 msgid "Restart required" msgstr "Uudelleenkäynnistys vaaditaan" -#: common/models.py:1262 +#: common/models.py:1215 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1269 +#: common/models.py:1222 msgid "Pending migrations" msgstr "" -#: common/models.py:1270 +#: common/models.py:1223 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1275 +#: common/models.py:1228 msgid "Server Instance Name" msgstr "" -#: common/models.py:1277 +#: common/models.py:1230 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1281 +#: common/models.py:1234 msgid "Use instance name" msgstr "" -#: common/models.py:1282 +#: common/models.py:1235 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1287 +#: common/models.py:1240 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1288 +#: common/models.py:1241 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1293 company/models.py:108 company/models.py:109 +#: common/models.py:1246 company/models.py:111 company/models.py:112 msgid "Company name" msgstr "Yrityksen nimi" -#: common/models.py:1294 +#: common/models.py:1247 msgid "Internal company name" msgstr "Yrityksen sisäinen nimi" -#: common/models.py:1298 +#: common/models.py:1251 msgid "Base URL" msgstr "" -#: common/models.py:1299 +#: common/models.py:1252 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1305 +#: common/models.py:1258 msgid "Default Currency" msgstr "Oletusvaluutta" -#: common/models.py:1306 +#: common/models.py:1259 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1312 +#: common/models.py:1265 +msgid "Supported Currencies" +msgstr "" + +#: common/models.py:1266 +msgid "List of supported currency codes" +msgstr "" + +#: common/models.py:1272 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1314 +#: common/models.py:1274 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1317 common/models.py:1373 common/models.py:1386 -#: common/models.py:1394 common/models.py:1403 common/models.py:1412 -#: common/models.py:1620 common/models.py:1642 common/models.py:1757 -#: common/models.py:2076 +#: common/models.py:1277 common/models.py:1333 common/models.py:1346 +#: common/models.py:1354 common/models.py:1363 common/models.py:1372 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:2046 msgid "days" msgstr "päivää" -#: common/models.py:1321 +#: common/models.py:1281 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1322 +#: common/models.py:1282 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1327 +#: common/models.py:1287 msgid "Download from URL" msgstr "" -#: common/models.py:1329 +#: common/models.py:1289 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1335 +#: common/models.py:1295 msgid "Download Size Limit" msgstr "" -#: common/models.py:1336 +#: common/models.py:1296 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1342 +#: common/models.py:1302 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1344 +#: common/models.py:1304 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:1349 +#: common/models.py:1309 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1350 +#: common/models.py:1310 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1355 +#: common/models.py:1315 msgid "Require confirm" msgstr "" -#: common/models.py:1356 +#: common/models.py:1316 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1361 +#: common/models.py:1321 msgid "Tree Depth" msgstr "" -#: common/models.py:1363 +#: common/models.py:1323 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1369 +#: common/models.py:1329 msgid "Update Check Interval" msgstr "" -#: common/models.py:1370 +#: common/models.py:1330 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1376 +#: common/models.py:1336 msgid "Automatic Backup" msgstr "Automaattinen varmuuskopionti" -#: common/models.py:1377 +#: common/models.py:1337 msgid "Enable automatic backup of database and media files" msgstr "Ota käyttöön tietokannan ja mediatiedostojen automaattinen varmuuskopiointi" -#: common/models.py:1382 +#: common/models.py:1342 msgid "Auto Backup Interval" msgstr "Automaattisen varmuuskopioinnin aikaväli" -#: common/models.py:1383 +#: common/models.py:1343 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1389 +#: common/models.py:1349 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1391 +#: common/models.py:1351 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1398 +#: common/models.py:1358 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1400 +#: common/models.py:1360 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1407 +#: common/models.py:1367 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1409 +#: common/models.py:1369 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1416 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1376 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Viivakoodituki" -#: common/models.py:1417 +#: common/models.py:1377 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1422 +#: common/models.py:1382 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1423 +#: common/models.py:1383 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1429 +#: common/models.py:1389 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1430 +#: common/models.py:1390 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1435 +#: common/models.py:1395 msgid "Part Revisions" msgstr "" -#: common/models.py:1436 +#: common/models.py:1396 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1441 +#: common/models.py:1401 msgid "Allow Deletion from Assembly" msgstr "" -#: common/models.py:1442 +#: common/models.py:1402 msgid "Allow deletion of parts which are used in an assembly" msgstr "" -#: common/models.py:1447 +#: common/models.py:1407 msgid "IPN Regex" msgstr "" -#: common/models.py:1448 +#: common/models.py:1408 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1451 +#: common/models.py:1411 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1452 +#: common/models.py:1412 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1457 +#: common/models.py:1417 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1458 +#: common/models.py:1418 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1463 +#: common/models.py:1423 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1464 +#: common/models.py:1424 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1469 +#: common/models.py:1429 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1470 +#: common/models.py:1430 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1475 +#: common/models.py:1435 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1476 +#: common/models.py:1436 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1481 +#: common/models.py:1441 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1482 +#: common/models.py:1442 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1487 part/admin.py:108 part/models.py:3815 -#: report/models.py:293 report/models.py:360 report/serializers.py:90 -#: report/serializers.py:131 stock/serializers.py:228 +#: common/models.py:1447 part/admin.py:108 part/models.py:3795 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:227 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1488 +#: common/models.py:1448 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 +#: common/models.py:1453 part/admin.py:91 part/admin.py:425 part/models.py:1052 #: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" msgstr "" -#: common/models.py:1494 +#: common/models.py:1454 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1499 part/admin.py:95 part/models.py:1065 +#: common/models.py:1459 part/admin.py:95 part/models.py:1058 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "Komponentti" -#: common/models.py:1500 +#: common/models.py:1460 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1505 part/admin.py:100 part/models.py:1077 +#: common/models.py:1465 part/admin.py:100 part/models.py:1070 msgid "Purchaseable" msgstr "Ostettavissa" -#: common/models.py:1506 +#: common/models.py:1466 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1511 part/admin.py:104 part/models.py:1083 +#: common/models.py:1471 part/admin.py:104 part/models.py:1076 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1512 +#: common/models.py:1472 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1517 part/admin.py:113 part/models.py:1071 +#: common/models.py:1477 part/admin.py:113 part/models.py:1064 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" msgstr "Seurattavissa" -#: common/models.py:1518 +#: common/models.py:1478 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1523 part/admin.py:117 part/models.py:1093 +#: common/models.py:1483 part/admin.py:117 part/models.py:1086 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" msgstr "" -#: common/models.py:1524 +#: common/models.py:1484 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1529 +#: common/models.py:1489 msgid "Show Import in Views" msgstr "" -#: common/models.py:1530 +#: common/models.py:1490 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1535 +#: common/models.py:1495 msgid "Show related parts" msgstr "" -#: common/models.py:1536 +#: common/models.py:1496 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1541 +#: common/models.py:1501 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1542 +#: common/models.py:1502 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1547 templates/js/translated/part.js:107 +#: common/models.py:1507 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1549 +#: common/models.py:1509 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1555 +#: common/models.py:1515 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1556 +#: common/models.py:1516 msgid "Format to display the part name" msgstr "" -#: common/models.py:1562 +#: common/models.py:1522 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1563 +#: common/models.py:1523 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1567 +#: common/models.py:1527 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1569 +#: common/models.py:1529 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1575 +#: common/models.py:1535 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1577 +#: common/models.py:1537 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1583 +#: common/models.py:1548 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1585 +#: common/models.py:1550 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1591 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1593 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1599 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1601 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1607 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1609 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1615 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1617 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1630 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1632 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1638 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1640 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1647 +#: common/models.py:1617 msgid "Internal Prices" msgstr "Sisäiset hinnat" -#: common/models.py:1648 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1653 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "Sisäisen hinnan ohitus" -#: common/models.py:1655 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1661 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1662 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1667 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1669 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1675 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1676 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1681 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1682 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1687 +#: common/models.py:1657 msgid "Log Report Errors" msgstr "" -#: common/models.py:1688 +#: common/models.py:1658 msgid "Log errors which occur when generating reports" msgstr "" -#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:301 +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:302 msgid "Page Size" msgstr "Sivun koko" -#: common/models.py:1694 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1699 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1700 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1705 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1707 +#: common/models.py:1677 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1713 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1714 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1719 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "Täytä sarjanumerot automaattisesti" -#: common/models.py:1720 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1725 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1727 +#: common/models.py:1697 msgid "Determines default behavior when a stock item is depleted" msgstr "" -#: common/models.py:1733 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1735 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1740 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1741 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1746 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1747 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1752 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1754 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1761 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1762 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1767 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1768 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1773 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1774 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1778 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1779 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1784 +#: common/models.py:1754 msgid "Check BOM when installing items" msgstr "" -#: common/models.py:1786 +#: common/models.py:1756 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "" -#: common/models.py:1792 +#: common/models.py:1762 msgid "Allow Out of Stock Transfer" msgstr "" -#: common/models.py:1794 +#: common/models.py:1764 msgid "Allow stock items which are not in stock to be transferred between stock locations" msgstr "" -#: common/models.py:1800 +#: common/models.py:1770 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1802 +#: common/models.py:1772 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1808 common/models.py:1836 common/models.py:1858 -#: common/models.py:1894 +#: common/models.py:1778 common/models.py:1806 common/models.py:1828 +#: common/models.py:1864 msgid "Require Responsible Owner" msgstr "" -#: common/models.py:1809 common/models.py:1837 common/models.py:1859 -#: common/models.py:1895 +#: common/models.py:1779 common/models.py:1807 common/models.py:1829 +#: common/models.py:1865 msgid "A responsible owner must be assigned to each order" msgstr "" -#: common/models.py:1814 +#: common/models.py:1784 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1816 +#: common/models.py:1786 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:1822 +#: common/models.py:1792 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1823 +#: common/models.py:1793 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1828 +#: common/models.py:1798 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1830 +#: common/models.py:1800 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1842 +#: common/models.py:1812 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1844 +#: common/models.py:1814 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1850 +#: common/models.py:1820 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1852 +#: common/models.py:1822 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1864 +#: common/models.py:1834 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1865 +#: common/models.py:1835 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1870 +#: common/models.py:1840 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1872 +#: common/models.py:1842 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1878 +#: common/models.py:1848 msgid "Mark Shipped Orders as Complete" msgstr "" -#: common/models.py:1880 +#: common/models.py:1850 msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" msgstr "" -#: common/models.py:1886 +#: common/models.py:1856 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1888 +#: common/models.py:1858 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1900 +#: common/models.py:1870 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1902 +#: common/models.py:1872 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1908 +#: common/models.py:1878 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1910 +#: common/models.py:1880 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1917 +#: common/models.py:1887 msgid "Enable password forgot" msgstr "Salli salasananpalautus" -#: common/models.py:1918 +#: common/models.py:1888 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1923 +#: common/models.py:1893 msgid "Enable registration" msgstr "Salli rekisteröinti" -#: common/models.py:1924 +#: common/models.py:1894 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1929 +#: common/models.py:1899 msgid "Enable SSO" msgstr "Salli SSO" -#: common/models.py:1930 +#: common/models.py:1900 msgid "Enable SSO on the login pages" msgstr "Salli SSO kirjautumissivuilla" -#: common/models.py:1935 +#: common/models.py:1905 msgid "Enable SSO registration" msgstr "Salli SSO rekisteröinti" -#: common/models.py:1937 +#: common/models.py:1907 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1943 +#: common/models.py:1913 msgid "Email required" msgstr "Sähköposti vaaditaan" -#: common/models.py:1944 +#: common/models.py:1914 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1949 +#: common/models.py:1919 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1951 +#: common/models.py:1921 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1957 +#: common/models.py:1927 msgid "Mail twice" msgstr "Sähköpostiosoite kahdesti" -#: common/models.py:1958 +#: common/models.py:1928 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1963 +#: common/models.py:1933 msgid "Password twice" msgstr "Salasana kahdesti" -#: common/models.py:1964 +#: common/models.py:1934 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1969 +#: common/models.py:1939 msgid "Allowed domains" msgstr "Sallitut verkkotunnukset" -#: common/models.py:1971 +#: common/models.py:1941 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1977 +#: common/models.py:1947 msgid "Group on signup" msgstr "" -#: common/models.py:1978 +#: common/models.py:1948 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1983 +#: common/models.py:1953 msgid "Enforce MFA" msgstr "Pakota MFA" -#: common/models.py:1984 +#: common/models.py:1954 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1989 +#: common/models.py:1959 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1991 +#: common/models.py:1961 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1999 +#: common/models.py:1969 msgid "Check for plugin updates" msgstr "" -#: common/models.py:2000 +#: common/models.py:1970 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:2006 +#: common/models.py:1976 msgid "Enable URL integration" msgstr "" -#: common/models.py:2007 +#: common/models.py:1977 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:2013 +#: common/models.py:1983 msgid "Enable navigation integration" msgstr "" -#: common/models.py:2014 +#: common/models.py:1984 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:2020 +#: common/models.py:1990 msgid "Enable app integration" msgstr "" -#: common/models.py:2021 +#: common/models.py:1991 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:2027 +#: common/models.py:1997 msgid "Enable schedule integration" msgstr "" -#: common/models.py:2028 +#: common/models.py:1998 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:2034 +#: common/models.py:2004 msgid "Enable event integration" msgstr "" -#: common/models.py:2035 +#: common/models.py:2005 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:2041 +#: common/models.py:2011 msgid "Enable project codes" msgstr "" -#: common/models.py:2042 +#: common/models.py:2012 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:2047 +#: common/models.py:2017 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:2049 +#: common/models.py:2019 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:2055 +#: common/models.py:2025 msgid "Exclude External Locations" msgstr "" -#: common/models.py:2057 +#: common/models.py:2027 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:2063 +#: common/models.py:2033 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:2065 +#: common/models.py:2035 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:2071 +#: common/models.py:2041 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:2073 +#: common/models.py:2043 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:2080 +#: common/models.py:2050 msgid "Display Users full names" msgstr "" -#: common/models.py:2081 +#: common/models.py:2051 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:2086 +#: common/models.py:2056 msgid "Enable Test Station Data" msgstr "" -#: common/models.py:2087 +#: common/models.py:2057 msgid "Enable test station data collection for test results" msgstr "" -#: common/models.py:2099 common/models.py:2509 +#: common/models.py:2069 common/models.py:2479 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2142 +#: common/models.py:2112 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2144 +#: common/models.py:2114 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2150 +#: common/models.py:2120 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2151 +#: common/models.py:2121 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2156 +#: common/models.py:2126 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2157 +#: common/models.py:2127 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2162 +#: common/models.py:2132 msgid "Show latest parts" msgstr "" -#: common/models.py:2163 +#: common/models.py:2133 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2168 +#: common/models.py:2138 msgid "Show invalid BOMs" msgstr "" -#: common/models.py:2169 +#: common/models.py:2139 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2174 +#: common/models.py:2144 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2175 +#: common/models.py:2145 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2180 +#: common/models.py:2150 msgid "Show low stock" msgstr "" -#: common/models.py:2181 +#: common/models.py:2151 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2186 +#: common/models.py:2156 msgid "Show depleted stock" msgstr "" -#: common/models.py:2187 +#: common/models.py:2157 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2192 +#: common/models.py:2162 msgid "Show needed stock" msgstr "" -#: common/models.py:2193 +#: common/models.py:2163 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2198 +#: common/models.py:2168 msgid "Show expired stock" msgstr "" -#: common/models.py:2199 +#: common/models.py:2169 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2204 +#: common/models.py:2174 msgid "Show stale stock" msgstr "" -#: common/models.py:2205 +#: common/models.py:2175 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2210 +#: common/models.py:2180 msgid "Show pending builds" msgstr "" -#: common/models.py:2211 +#: common/models.py:2181 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2216 +#: common/models.py:2186 msgid "Show overdue builds" msgstr "" -#: common/models.py:2217 +#: common/models.py:2187 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2222 +#: common/models.py:2192 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2223 +#: common/models.py:2193 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2228 +#: common/models.py:2198 msgid "Show overdue POs" msgstr "" -#: common/models.py:2229 +#: common/models.py:2199 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2234 +#: common/models.py:2204 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2235 +#: common/models.py:2205 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2240 +#: common/models.py:2210 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2241 +#: common/models.py:2211 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2246 +#: common/models.py:2216 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2247 +#: common/models.py:2217 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2252 +#: common/models.py:2222 msgid "Show News" msgstr "Näytä uutiset" -#: common/models.py:2253 +#: common/models.py:2223 msgid "Show news on the homepage" msgstr "Näytä uutiset kotisivulla" -#: common/models.py:2258 +#: common/models.py:2228 msgid "Inline label display" msgstr "" -#: common/models.py:2260 +#: common/models.py:2230 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2266 +#: common/models.py:2236 msgid "Default label printer" msgstr "" -#: common/models.py:2268 +#: common/models.py:2238 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2274 +#: common/models.py:2244 msgid "Inline report display" msgstr "" -#: common/models.py:2276 +#: common/models.py:2246 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2282 +#: common/models.py:2252 msgid "Search Parts" msgstr "" -#: common/models.py:2283 +#: common/models.py:2253 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2288 +#: common/models.py:2258 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2289 +#: common/models.py:2259 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2294 +#: common/models.py:2264 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2295 +#: common/models.py:2265 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2300 +#: common/models.py:2270 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2301 +#: common/models.py:2271 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2306 +#: common/models.py:2276 msgid "Search Categories" msgstr "" -#: common/models.py:2307 +#: common/models.py:2277 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2312 +#: common/models.py:2282 msgid "Search Stock" msgstr "" -#: common/models.py:2313 +#: common/models.py:2283 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2318 +#: common/models.py:2288 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2320 +#: common/models.py:2290 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2326 +#: common/models.py:2296 msgid "Search Locations" msgstr "" -#: common/models.py:2327 +#: common/models.py:2297 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2332 +#: common/models.py:2302 msgid "Search Companies" msgstr "" -#: common/models.py:2333 +#: common/models.py:2303 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2338 +#: common/models.py:2308 msgid "Search Build Orders" msgstr "" -#: common/models.py:2339 +#: common/models.py:2309 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2344 +#: common/models.py:2314 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2345 +#: common/models.py:2315 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2350 +#: common/models.py:2320 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2352 +#: common/models.py:2322 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2358 +#: common/models.py:2328 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2359 +#: common/models.py:2329 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2364 +#: common/models.py:2334 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2366 +#: common/models.py:2336 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2372 +#: common/models.py:2342 msgid "Search Return Orders" msgstr "" -#: common/models.py:2373 +#: common/models.py:2343 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2378 +#: common/models.py:2348 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2380 +#: common/models.py:2350 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2386 +#: common/models.py:2356 msgid "Search Preview Results" msgstr "" -#: common/models.py:2388 +#: common/models.py:2358 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2394 +#: common/models.py:2364 msgid "Regex Search" msgstr "" -#: common/models.py:2395 +#: common/models.py:2365 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2400 +#: common/models.py:2370 msgid "Whole Word Search" msgstr "" -#: common/models.py:2401 +#: common/models.py:2371 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2406 +#: common/models.py:2376 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2407 +#: common/models.py:2377 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2412 +#: common/models.py:2382 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2413 +#: common/models.py:2383 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2418 +#: common/models.py:2388 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2419 +#: common/models.py:2389 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2424 +#: common/models.py:2394 msgid "Date Format" msgstr "" -#: common/models.py:2425 +#: common/models.py:2395 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2438 part/templates/part/detail.html:41 +#: common/models.py:2408 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2439 +#: common/models.py:2409 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2444 part/templates/part/detail.html:62 +#: common/models.py:2414 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2446 +#: common/models.py:2416 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2452 +#: common/models.py:2422 msgid "Table String Length" msgstr "" -#: common/models.py:2454 +#: common/models.py:2424 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2460 +#: common/models.py:2430 msgid "Default part label template" msgstr "" -#: common/models.py:2461 +#: common/models.py:2431 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2466 +#: common/models.py:2436 msgid "Default stock item template" msgstr "" -#: common/models.py:2468 +#: common/models.py:2438 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2474 +#: common/models.py:2444 msgid "Default stock location label template" msgstr "" -#: common/models.py:2476 +#: common/models.py:2446 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2482 +#: common/models.py:2452 msgid "Default build line label template" msgstr "" -#: common/models.py:2484 +#: common/models.py:2454 msgid "The build line label template to be automatically selected" msgstr "" -#: common/models.py:2490 +#: common/models.py:2460 msgid "Receive error reports" msgstr "" -#: common/models.py:2491 +#: common/models.py:2461 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2496 +#: common/models.py:2466 msgid "Last used printing machines" msgstr "" -#: common/models.py:2497 +#: common/models.py:2467 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2540 +#: common/models.py:2487 common/models.py:2488 common/models.py:2636 +#: common/models.py:2637 common/models.py:2882 common/models.py:2883 +#: common/models.py:3193 common/models.py:3194 part/models.py:3193 +#: part/models.py:3280 part/models.py:3353 part/models.py:3381 +#: plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "Käyttäjä" + +#: common/models.py:2510 msgid "Price break quantity" msgstr "" -#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1382 order/models.py:2301 -#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 +#: common/models.py:2517 company/serializers.py:472 order/admin.py:42 +#: order/models.py:1346 order/models.py:2265 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1886 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:740 msgid "Price" msgstr "Hinta" -#: common/models.py:2548 +#: common/models.py:2518 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2719 common/models.py:2904 +#: common/models.py:2613 common/models.py:2798 msgid "Endpoint" msgstr "" -#: common/models.py:2720 +#: common/models.py:2614 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2730 +#: common/models.py:2624 msgid "Name for this webhook" msgstr "" -#: common/models.py:2734 company/models.py:160 company/models.py:814 -#: machine/models.py:39 part/admin.py:88 part/models.py:1088 -#: plugin/models.py:65 templates/js/translated/company.js:523 +#: common/models.py:2628 company/models.py:163 company/models.py:782 +#: machine/models.py:39 part/admin.py:88 part/models.py:1081 +#: plugin/models.py:66 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3462,101 +3408,118 @@ msgstr "" msgid "Active" msgstr "Aktiivinen" -#: common/models.py:2734 +#: common/models.py:2628 msgid "Is this webhook active" msgstr "" -#: common/models.py:2750 users/models.py:159 +#: common/models.py:2644 users/models.py:159 msgid "Token" msgstr "" -#: common/models.py:2751 +#: common/models.py:2645 msgid "Token for access" msgstr "" -#: common/models.py:2759 +#: common/models.py:2653 msgid "Secret" msgstr "Salaisuus" -#: common/models.py:2760 +#: common/models.py:2654 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2868 +#: common/models.py:2762 msgid "Message ID" msgstr "" -#: common/models.py:2869 +#: common/models.py:2763 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2877 +#: common/models.py:2771 msgid "Host" msgstr "Isäntä" -#: common/models.py:2878 +#: common/models.py:2772 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2886 +#: common/models.py:2780 msgid "Header" msgstr "" -#: common/models.py:2887 +#: common/models.py:2781 msgid "Header of this message" msgstr "" -#: common/models.py:2894 +#: common/models.py:2788 msgid "Body" msgstr "" -#: common/models.py:2895 +#: common/models.py:2789 msgid "Body of this message" msgstr "" -#: common/models.py:2905 +#: common/models.py:2799 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2910 +#: common/models.py:2804 msgid "Worked on" msgstr "" -#: common/models.py:2911 +#: common/models.py:2805 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:3037 +#: common/models.py:2931 msgid "Id" msgstr "" -#: common/models.py:3039 templates/js/translated/company.js:965 +#: common/models.py:2933 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "Otsikko" -#: common/models.py:3043 templates/js/translated/news.js:60 +#: common/models.py:2935 common/models.py:3177 company/models.py:149 +#: company/models.py:440 company/models.py:500 company/models.py:799 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +#: part/admin.py:55 part/models.py:955 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "Linkki" + +#: common/models.py:2937 templates/js/translated/news.js:60 msgid "Published" msgstr "Julkaistu" -#: common/models.py:3045 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2939 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:3047 templates/js/translated/news.js:52 +#: common/models.py:2941 templates/js/translated/news.js:52 msgid "Summary" msgstr "Yhteenveto" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Read" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Was this news item read?" msgstr "" -#: common/models.py:3067 company/models.py:156 part/models.py:972 +#: common/models.py:2961 company/models.py:159 part/models.py:965 #: 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.html:35 @@ -3566,34 +3529,89 @@ msgstr "" msgid "Image" msgstr "Kuva" -#: common/models.py:3067 +#: common/models.py:2961 msgid "Image file" msgstr "Kuvatiedosto" -#: common/models.py:3109 +#: common/models.py:2973 common/models.py:3161 +msgid "Target model type for this image" +msgstr "" + +#: common/models.py:2977 +msgid "Target model ID for this image" +msgstr "" + +#: common/models.py:3018 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3128 +#: common/models.py:3037 msgid "Unit name" msgstr "" -#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3044 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3136 +#: common/models.py:3045 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3052 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3144 +#: common/models.py:3053 msgid "Unit definition" msgstr "" +#: common/models.py:3111 common/models.py:3168 stock/models.py:2426 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "Liite" + +#: common/models.py:3123 +msgid "Missing file" +msgstr "Puuttuva tiedosto" + +#: common/models.py:3124 +msgid "Missing external link" +msgstr "Puuttuva ulkoinen linkki" + +#: common/models.py:3169 +msgid "Select file to attach" +msgstr "Valitse liitettävä tiedosto" + +#: common/models.py:3184 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "Kommentti" + +#: common/models.py:3185 +msgid "Attachment comment" +msgstr "" + +#: common/models.py:3201 +msgid "Upload date" +msgstr "" + +#: common/models.py:3202 +msgid "Date the file was uploaded" +msgstr "" + +#: common/models.py:3206 +msgid "File size" +msgstr "" + +#: common/models.py:3206 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3244 common/serializers.py:553 +msgid "Invalid model type specified for attachment" +msgstr "" + #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" @@ -3628,66 +3646,103 @@ msgstr "" msgid "Error raised by plugin" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:371 msgid "Is Running" msgstr "" -#: common/serializers.py:372 +#: common/serializers.py:377 msgid "Pending Tasks" msgstr "" -#: common/serializers.py:378 +#: common/serializers.py:383 msgid "Scheduled Tasks" msgstr "" -#: common/serializers.py:384 +#: common/serializers.py:389 msgid "Failed Tasks" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Task ID" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Unique task ID" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock time" msgstr "" -#: common/serializers.py:403 +#: common/serializers.py:408 msgid "Task name" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function name" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Arguments" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Task arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Keyword Arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Task keyword arguments" msgstr "" +#: common/serializers.py:525 +msgid "Filename" +msgstr "Tiedostonimi" + +#: common/serializers.py:532 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: common/serializers.py:559 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "" + +#: common/validators.py:33 +msgid "No attachment model type provided" +msgstr "" + +#: common/validators.py:39 +msgid "Invalid attachment model type" +msgstr "" + +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "Verkkotunnus ei saa olla tyhjä." + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +msgstr "Virheellinen verkkotunnus: {domain}" + #: 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 @@ -3726,210 +3781,222 @@ msgstr "" msgid "Previous Step" msgstr "Edellinen vaihe" -#: company/api.py:164 +#: company/api.py:144 msgid "Part is Active" msgstr "" -#: company/api.py:168 +#: company/api.py:148 msgid "Manufacturer is Active" msgstr "" -#: company/api.py:317 +#: company/api.py:281 msgid "Supplier Part is Active" msgstr "" -#: company/api.py:321 +#: company/api.py:285 msgid "Internal Part is Active" msgstr "" -#: company/api.py:325 +#: company/api.py:289 msgid "Supplier is Active" msgstr "" -#: company/models.py:114 +#: company/models.py:100 company/models.py:365 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:822 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "Yritys" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "Yritykset" + +#: company/models.py:117 msgid "Company description" msgstr "Yrityksen kuvaus" -#: company/models.py:115 +#: company/models.py:118 msgid "Description of the company" msgstr "" -#: company/models.py:120 company/templates/company/company_base.html:106 +#: company/models.py:123 company/templates/company/company_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:532 msgid "Website" msgstr "Sivusto" -#: company/models.py:120 +#: company/models.py:123 msgid "Company website URL" msgstr "Yrityksen sivuston URL" -#: company/models.py:125 +#: company/models.py:128 msgid "Phone number" msgstr "Puhelinnumero" -#: company/models.py:127 +#: company/models.py:130 msgid "Contact phone number" msgstr "" -#: company/models.py:134 +#: company/models.py:137 msgid "Contact email address" msgstr "" -#: company/models.py:139 company/templates/company/company_base.html:145 +#: company/models.py:142 company/templates/company/company_base.html:145 #: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "Kontakti" -#: company/models.py:141 +#: company/models.py:144 msgid "Point of contact" msgstr "" -#: company/models.py:147 +#: company/models.py:150 msgid "Link to external company information" msgstr "" -#: company/models.py:160 +#: company/models.py:163 msgid "Is this company active?" msgstr "" -#: company/models.py:165 +#: company/models.py:168 msgid "is customer" msgstr "on asiakas" -#: company/models.py:166 +#: company/models.py:169 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:171 +#: company/models.py:174 msgid "is supplier" msgstr "on toimittaja" -#: company/models.py:172 +#: company/models.py:175 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:177 +#: company/models.py:180 msgid "is manufacturer" msgstr "on valmistaja" -#: company/models.py:178 +#: company/models.py:181 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:186 +#: company/models.py:189 msgid "Default currency used for this company" msgstr "" -#: company/models.py:273 company/models.py:382 -#: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:812 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 -msgid "Company" -msgstr "Yritys" - -#: company/models.py:383 +#: company/models.py:366 msgid "Select company" msgstr "" -#: company/models.py:388 +#: company/models.py:371 msgid "Address title" msgstr "" -#: company/models.py:389 +#: company/models.py:372 msgid "Title describing the address entry" msgstr "" -#: company/models.py:395 +#: company/models.py:378 msgid "Primary address" msgstr "" -#: company/models.py:396 +#: company/models.py:379 msgid "Set as primary address" msgstr "" -#: company/models.py:401 templates/js/translated/company.js:914 +#: company/models.py:384 templates/js/translated/company.js:914 #: templates/js/translated/company.js:971 msgid "Line 1" msgstr "" -#: company/models.py:402 +#: company/models.py:385 msgid "Address line 1" msgstr "" -#: company/models.py:408 templates/js/translated/company.js:915 +#: company/models.py:391 templates/js/translated/company.js:915 #: templates/js/translated/company.js:977 msgid "Line 2" msgstr "" -#: company/models.py:409 +#: company/models.py:392 msgid "Address line 2" msgstr "" -#: company/models.py:415 company/models.py:416 +#: company/models.py:398 company/models.py:399 #: templates/js/translated/company.js:983 msgid "Postal code" msgstr "" -#: company/models.py:422 +#: company/models.py:405 msgid "City/Region" msgstr "" -#: company/models.py:423 +#: company/models.py:406 msgid "Postal code city/region" msgstr "" -#: company/models.py:429 +#: company/models.py:412 msgid "State/Province" msgstr "" -#: company/models.py:430 +#: company/models.py:413 msgid "State or province" msgstr "" -#: company/models.py:436 templates/js/translated/company.js:1001 +#: company/models.py:419 templates/js/translated/company.js:1001 msgid "Country" msgstr "" -#: company/models.py:437 +#: company/models.py:420 msgid "Address country" msgstr "" -#: company/models.py:443 +#: company/models.py:426 msgid "Courier shipping notes" msgstr "" -#: company/models.py:444 +#: company/models.py:427 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:450 +#: company/models.py:433 msgid "Internal shipping notes" msgstr "" -#: company/models.py:451 +#: company/models.py:434 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:458 +#: company/models.py:441 msgid "Link to address information (external)" msgstr "" -#: company/models.py:489 company/models.py:792 stock/models.py:768 -#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 +#: company/models.py:463 company/models.py:574 company/models.py:792 +#: 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:475 company/models.py:760 stock/models.py:766 +#: stock/serializers.py:422 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:491 company/models.py:794 +#: company/models.py:477 company/models.py:762 msgid "Select part" msgstr "" -#: company/models.py:500 company/templates/company/company_base.html:82 +#: company/models.py:486 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:530 +#: company/templates/company/supplier_part.html:145 part/serializers.py:525 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -3939,152 +4006,154 @@ msgstr "" msgid "Manufacturer" msgstr "Valmistaja" -#: company/models.py:501 +#: company/models.py:487 msgid "Select manufacturer" msgstr "Valitse valmistaja" -#: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:540 +#: company/models.py:493 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:535 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 -#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1801 #: templates/js/translated/purchase_order.js:1851 #: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "" -#: company/models.py:508 +#: company/models.py:494 msgid "Manufacturer Part Number" msgstr "Valmistajan osanumero" -#: company/models.py:515 +#: company/models.py:501 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:524 +#: company/models.py:510 msgid "Manufacturer part description" msgstr "" -#: company/models.py:581 company/models.py:608 company/models.py:824 -#: 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:615 +#: company/models.py:581 msgid "Parameter name" msgstr "" -#: company/models.py:621 report/templates/report/inventree_test_report.html:104 -#: stock/models.py:2429 templates/js/translated/company.js:1166 -#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 +#: company/models.py:587 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2418 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1493 #: templates/js/translated/stock.js:1522 msgid "Value" msgstr "Arvo" -#: company/models.py:622 +#: company/models.py:588 msgid "Parameter value" msgstr "" -#: company/models.py:629 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1052 part/models.py:3666 +#: company/models.py:595 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1045 part/models.py:3646 #: part/templates/part/part_base.html:284 -#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1512 +#: templates/js/translated/part.js:1616 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:630 +#: company/models.py:596 msgid "Parameter units" msgstr "" -#: company/models.py:732 +#: company/models.py:648 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:777 stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "" + +#: company/models.py:700 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:739 +#: company/models.py:707 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:753 +#: company/models.py:721 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/models.py:770 company/templates/company/company_base.html:87 #: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:514 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:509 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:511 -#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1769 #: templates/js/translated/pricing.js:498 #: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "Toimittaja" -#: company/models.py:803 +#: company/models.py:771 msgid "Select supplier" msgstr "Valitse toimittaja" -#: company/models.py:809 part/serializers.py:525 +#: company/models.py:777 part/serializers.py:520 msgid "Supplier stock keeping unit" msgstr "Toimittajan varastonimike" -#: company/models.py:815 +#: company/models.py:783 msgid "Is this supplier part active?" msgstr "" -#: company/models.py:825 +#: company/models.py:793 msgid "Select manufacturer part" msgstr "Valitse valmistajan osa" -#: company/models.py:832 +#: company/models.py:800 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:841 +#: company/models.py:809 msgid "Supplier part description" msgstr "" -#: company/models.py:848 company/templates/company/supplier_part.html:187 -#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 +#: company/models.py:816 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4093 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_purchase_order_report.html:32 #: report/templates/report/inventree_return_order_report.html:27 #: report/templates/report/inventree_sales_order_report.html:32 #: report/templates/report/inventree_stock_location_report.html:105 -#: stock/serializers.py:708 +#: stock/serializers.py:710 msgid "Note" msgstr "Muistiinpano" -#: company/models.py:857 part/models.py:2010 +#: company/models.py:825 part/models.py:2003 msgid "base cost" msgstr "" -#: company/models.py:858 part/models.py:2011 +#: company/models.py:826 part/models.py:2004 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:865 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 +#: company/models.py:833 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:797 stock/serializers.py:1475 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 #: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "" -#: company/models.py:866 +#: company/models.py:834 msgid "Part packaging" msgstr "" -#: company/models.py:871 templates/js/translated/company.js:1651 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: company/models.py:839 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:311 #: templates/js/translated/purchase_order.js:841 #: templates/js/translated/purchase_order.js:1103 @@ -4093,35 +4162,35 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:873 +#: company/models.py:841 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:892 part/models.py:2017 +#: company/models.py:860 part/models.py:2010 msgid "multiple" msgstr "" -#: company/models.py:893 +#: company/models.py:861 msgid "Order multiple" msgstr "" -#: company/models.py:905 +#: company/models.py:873 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:911 +#: company/models.py:879 msgid "Availability Updated" msgstr "" -#: company/models.py:912 +#: company/models.py:880 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:163 +#: company/serializers.py:161 msgid "Default currency used for this supplier" msgstr "" -#: company/serializers.py:381 part/admin.py:126 +#: company/serializers.py:357 part/admin.py:126 #: part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1689 #: templates/js/translated/table_filters.js:355 @@ -4133,7 +4202,7 @@ msgstr "" #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 #: templates/js/translated/model_renderers.js:312 -#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +#: templates/js/translated/part.js:815 templates/js/translated/part.js:1219 msgid "Inactive" msgstr "" @@ -4172,7 +4241,7 @@ msgstr "Poista yritys" #: report/templates/report/inventree_purchase_order_report.html:40 #: report/templates/report/inventree_sales_order_report.html:40 #: report/templates/report/inventree_test_report.html:84 -#: report/templates/report/inventree_test_report.html:163 +#: report/templates/report/inventree_test_report.html:162 msgid "Part image" msgstr "Osan kuva" @@ -4191,10 +4260,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:92 order/models.py:940 -#: order/models.py:2068 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:148 stock/models.py:821 -#: stock/models.py:822 stock/serializers.py:1229 +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2032 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:819 +#: stock/models.py:820 stock/serializers.py:1225 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 @@ -4405,7 +4474,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:836 +#: part/admin.py:122 part/serializers.py:832 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4425,8 +4494,8 @@ msgstr "" msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:206 -#: templates/js/translated/part.js:1422 +#: company/templates/company/manufacturer_part.html:196 +#: templates/js/translated/part.js:1423 msgid "Add Parameter" msgstr "" @@ -4454,15 +4523,6 @@ msgstr "" msgid "Addresses" msgstr "" -#: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:452 -#: stock/models.py:779 stock/templates/stock/item_base.html:233 -#: templates/js/translated/company.js:1600 -#: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2280 -msgid "Supplier Part" -msgstr "" - #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1526 msgid "Supplier part actions" @@ -4505,8 +4565,8 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:524 -#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: part/bom.py:311 part/serializers.py:519 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1787 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1850 #: templates/js/translated/purchase_order.js:2028 @@ -4518,12 +4578,12 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:207 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" @@ -4555,15 +4615,15 @@ msgid "Update Part Availability" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:835 part/stocktake.py:223 +#: part/serializers.py:831 part/stocktake.py:224 #: part/templates/part/category.html:183 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:916 stock/serializers.py:1080 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:918 stock/serializers.py:1091 #: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:191 #: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1061 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:206 msgid "Stock Items" @@ -4590,10 +4650,6 @@ msgstr "Asiakkaat" msgid "New Customer" msgstr "Uusi asiakas" -#: company/views.py:51 templates/js/translated/search.js:192 -msgid "Companies" -msgstr "Yritykset" - #: company/views.py:52 msgid "New Company" msgstr "Uusi yritys" @@ -4614,7 +4670,7 @@ msgstr "" msgid "Connected" msgstr "" -#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: machine/machine_types/label_printer.py:235 order/api.py:1467 #: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "" @@ -4703,7 +4759,7 @@ msgstr "" msgid "Config type" msgstr "" -#: order/admin.py:30 order/models.py:89 +#: order/admin.py:30 order/models.py:90 #: report/templates/report/inventree_purchase_order_report.html:31 #: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 @@ -4712,30 +4768,30 @@ msgstr "" msgid "Total Price" msgstr "Hinta yhteensä" -#: order/api.py:161 order/serializers.py:91 +#: order/api.py:157 order/serializers.py:90 #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "" -#: order/api.py:165 templates/js/translated/table_filters.js:194 +#: order/api.py:161 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "" -#: order/api.py:240 +#: order/api.py:236 msgid "No matching purchase order found" msgstr "" -#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 -#: order/models.py:1586 order/models.py:1700 order/models.py:1854 -#: order/models.py:2267 order/models.py:2318 +#: order/api.py:435 order/api.py:801 order/models.py:1395 order/models.py:1504 +#: order/models.py:1550 order/models.py:1664 order/models.py:1818 +#: order/models.py:2231 order/models.py:2282 #: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "" -#: order/api.py:441 order/api.py:838 +#: order/api.py:439 order/api.py:822 msgid "Order Complete" msgstr "" @@ -4743,13 +4799,13 @@ msgstr "" msgid "Order Pending" msgstr "" -#: order/api.py:1509 order/models.py:380 order/models.py:1432 -#: order/models.py:1541 order/templates/order/order_base.html:9 +#: order/api.py:1461 order/models.py:380 order/models.py:1396 +#: order/models.py:1505 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_purchase_order_report.html:14 -#: stock/serializers.py:119 stock/templates/stock/item_base.html:176 +#: stock/serializers.py:118 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/part.js:1746 templates/js/translated/pricing.js:804 #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1673 @@ -4757,8 +4813,8 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1513 order/models.py:2017 order/models.py:2268 -#: order/models.py:2319 order/templates/order/return_order_base.html:9 +#: order/api.py:1465 order/models.py:1981 order/models.py:2232 +#: order/models.py:2283 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report.html:13 #: templates/js/translated/return_order.js:280 @@ -4766,15 +4822,15 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/models.py:90 +#: order/models.py:91 msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:71 +#: order/models.py:96 order/serializers.py:70 msgid "Order Currency" msgstr "Tilauksen valuutta" -#: order/models.py:98 order/serializers.py:72 +#: order/models.py:99 order/serializers.py:71 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -4790,7 +4846,7 @@ msgstr "" msgid "Select project code for this order" msgstr "" -#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 msgid "Link to external page" msgstr "" @@ -4814,11 +4870,11 @@ msgstr "" msgid "Company address for this order" msgstr "" -#: order/models.py:464 order/models.py:929 +#: order/models.py:464 order/models.py:927 msgid "Order reference" msgstr "Tilauksen viite" -#: order/models.py:472 order/models.py:953 +#: order/models.py:472 order/models.py:951 msgid "Purchase order status" msgstr "" @@ -4839,15 +4895,15 @@ msgstr "" msgid "received by" msgstr "" -#: order/models.py:514 order/models.py:2094 +#: order/models.py:514 order/models.py:2058 msgid "Issue Date" msgstr "" -#: order/models.py:515 order/models.py:2095 +#: order/models.py:515 order/models.py:2059 msgid "Date order was issued" msgstr "" -#: order/models.py:522 order/models.py:2102 +#: order/models.py:522 order/models.py:2066 msgid "Date order was completed" msgstr "" @@ -4859,94 +4915,94 @@ msgstr "" msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:941 +#: order/models.py:939 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:964 order/models.py:2087 +#: order/models.py:962 order/models.py:2051 msgid "Customer Reference " msgstr "Asiakkaan viite " -#: order/models.py:965 order/models.py:2088 +#: order/models.py:963 order/models.py:2052 msgid "Customer order reference code" msgstr "" -#: order/models.py:969 order/models.py:1707 +#: order/models.py:967 order/models.py:1671 #: templates/js/translated/sales_order.js:879 #: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "" -#: order/models.py:978 +#: order/models.py:976 msgid "shipped by" msgstr "" -#: order/models.py:1027 +#: order/models.py:1025 msgid "Order is already complete" msgstr "" -#: order/models.py:1030 +#: order/models.py:1028 msgid "Order is already cancelled" msgstr "" -#: order/models.py:1034 +#: order/models.py:1032 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:1038 +#: order/models.py:1036 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:1043 +#: order/models.py:1041 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1309 +#: order/models.py:1273 msgid "Item quantity" msgstr "" -#: order/models.py:1326 +#: order/models.py:1290 msgid "Line item reference" msgstr "" -#: order/models.py:1333 +#: order/models.py:1297 msgid "Line item notes" msgstr "" -#: order/models.py:1345 +#: order/models.py:1309 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1366 +#: order/models.py:1330 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1372 +#: order/models.py:1336 msgid "Context" msgstr "" -#: order/models.py:1373 +#: order/models.py:1337 msgid "Additional context for this line" msgstr "" -#: order/models.py:1383 +#: order/models.py:1347 msgid "Unit price" msgstr "" -#: order/models.py:1416 +#: order/models.py:1380 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1423 +#: order/models.py:1387 msgid "deleted" msgstr "" -#: order/models.py:1451 +#: order/models.py:1415 msgid "Supplier part" msgstr "" -#: order/models.py:1458 order/templates/order/order_base.html:196 -#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: order/models.py:1422 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1870 templates/js/translated/part.js:1902 #: templates/js/translated/purchase_order.js:1306 #: templates/js/translated/purchase_order.js:2169 #: templates/js/translated/return_order.js:763 @@ -4955,196 +5011,196 @@ msgstr "" msgid "Received" msgstr "Vastaanotettu" -#: order/models.py:1459 +#: order/models.py:1423 msgid "Number of items received" msgstr "" -#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 +#: order/models.py:1431 stock/models.py:938 stock/serializers.py:556 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "" -#: order/models.py:1468 +#: order/models.py:1432 msgid "Unit purchase price" msgstr "" -#: order/models.py:1483 +#: order/models.py:1447 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1574 +#: order/models.py:1538 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1579 +#: order/models.py:1543 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1605 part/templates/part/part_pricing.html:107 +#: order/models.py:1569 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:1606 +#: order/models.py:1570 msgid "Unit sale price" msgstr "" -#: order/models.py:1615 order/status_codes.py:43 +#: order/models.py:1579 order/status_codes.py:43 #: templates/js/translated/sales_order.js:1559 #: templates/js/translated/sales_order.js:1680 #: templates/js/translated/sales_order.js:1993 msgid "Shipped" msgstr "Lähetetty" -#: order/models.py:1616 +#: order/models.py:1580 msgid "Shipped quantity" msgstr "" -#: order/models.py:1708 +#: order/models.py:1672 msgid "Date of shipment" msgstr "" -#: order/models.py:1714 templates/js/translated/sales_order.js:1072 +#: order/models.py:1678 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "" -#: order/models.py:1715 +#: order/models.py:1679 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1723 +#: order/models.py:1687 msgid "Checked By" msgstr "" -#: order/models.py:1724 +#: order/models.py:1688 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 -#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 +#: order/models.py:1695 order/models.py:1908 order/serializers.py:1342 +#: order/serializers.py:1452 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "" -#: order/models.py:1732 +#: order/models.py:1696 msgid "Shipment number" msgstr "" -#: order/models.py:1740 +#: order/models.py:1704 msgid "Tracking Number" msgstr "Seurantakoodi" -#: order/models.py:1741 +#: order/models.py:1705 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1748 +#: order/models.py:1712 msgid "Invoice Number" msgstr "Laskunumero" -#: order/models.py:1749 +#: order/models.py:1713 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1769 +#: order/models.py:1733 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1772 +#: order/models.py:1736 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1890 order/models.py:1892 +#: order/models.py:1854 order/models.py:1856 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1899 +#: order/models.py:1863 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1902 +#: order/models.py:1866 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1905 +#: order/models.py:1869 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1924 order/serializers.py:1231 +#: order/models.py:1888 order/serializers.py:1219 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1927 +#: order/models.py:1891 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1928 plugin/base/barcodes/api.py:481 +#: order/models.py:1892 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1936 +#: order/models.py:1900 msgid "Line" msgstr "" -#: order/models.py:1945 +#: order/models.py:1909 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1958 order/models.py:2275 +#: order/models.py:1922 order/models.py:2239 #: templates/js/translated/return_order.js:721 msgid "Item" msgstr "" -#: order/models.py:1959 +#: order/models.py:1923 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1968 +#: order/models.py:1932 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:2057 +#: order/models.py:2021 msgid "Return Order reference" msgstr "" -#: order/models.py:2069 +#: order/models.py:2033 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:2081 +#: order/models.py:2045 msgid "Return order status" msgstr "" -#: order/models.py:2260 +#: order/models.py:2224 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2276 +#: order/models.py:2240 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2282 +#: order/models.py:2246 msgid "Received Date" msgstr "" -#: order/models.py:2283 +#: order/models.py:2247 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2294 templates/js/translated/return_order.js:732 +#: order/models.py:2258 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2295 +#: order/models.py:2259 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2302 +#: order/models.py:2266 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/serializers.py:79 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_purchase_order_report.html:22 @@ -5153,163 +5209,163 @@ msgstr "" msgid "Line Items" msgstr "" -#: order/serializers.py:84 +#: order/serializers.py:83 msgid "Completed Lines" msgstr "" -#: order/serializers.py:287 +#: order/serializers.py:286 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:302 order/serializers.py:1247 +#: order/serializers.py:301 order/serializers.py:1235 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:312 order/serializers.py:1257 +#: order/serializers.py:311 order/serializers.py:1245 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:440 +#: order/serializers.py:439 msgid "Order is not open" msgstr "" -#: order/serializers.py:461 +#: order/serializers.py:460 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:463 +#: order/serializers.py:462 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:473 +#: order/serializers.py:472 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:478 msgid "Merge Items" msgstr "" -#: order/serializers.py:481 +#: order/serializers.py:480 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:499 +#: order/serializers.py:498 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:502 +#: order/serializers.py:501 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:510 +#: order/serializers.py:509 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:511 +#: order/serializers.py:510 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:550 order/serializers.py:1325 +#: order/serializers.py:549 order/serializers.py:1313 msgid "Line Item" msgstr "" -#: order/serializers.py:556 +#: order/serializers.py:555 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1657 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:581 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:589 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:601 templates/js/translated/barcode.js:52 +#: order/serializers.py:600 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Viivakoodi" -#: order/serializers.py:602 +#: order/serializers.py:601 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:618 +#: order/serializers.py:617 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:642 +#: order/serializers.py:641 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:690 order/serializers.py:1696 +#: order/serializers.py:689 order/serializers.py:1673 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:706 +#: order/serializers.py:705 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:717 +#: order/serializers.py:716 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1074 +#: order/serializers.py:1062 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1134 +#: order/serializers.py:1122 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1195 order/serializers.py:1334 +#: order/serializers.py:1183 order/serializers.py:1322 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1214 +#: order/serializers.py:1202 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1344 +#: order/serializers.py:1332 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1366 order/serializers.py:1472 +#: order/serializers.py:1354 order/serializers.py:1460 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1369 order/serializers.py:1475 +#: order/serializers.py:1357 order/serializers.py:1463 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1416 +#: order/serializers.py:1404 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1423 +#: order/serializers.py:1411 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1650 +#: order/serializers.py:1627 msgid "Return order line item" msgstr "" -#: order/serializers.py:1656 +#: order/serializers.py:1633 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1659 +#: order/serializers.py:1636 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1688 +#: order/serializers.py:1665 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1766 +#: order/serializers.py:1743 msgid "Line price currency" msgstr "" @@ -5639,7 +5695,7 @@ msgstr "" #: 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/part.js:1073 #: templates/js/translated/purchase_order.js:1752 #: templates/js/translated/return_order.js:380 #: templates/js/translated/sales_order.js:891 @@ -5735,34 +5791,34 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:406 part/models.py:3964 part/stocktake.py:218 -#: stock/admin.py:153 +#: part/admin.py:39 part/admin.py:398 part/models.py:3944 part/stocktake.py:219 +#: stock/admin.py:152 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 -#: stock/admin.py:157 +#: part/admin.py:41 part/admin.py:405 part/models.py:3945 part/stocktake.py:220 +#: stock/admin.py:156 msgid "Part Name" msgstr "" -#: part/admin.py:45 part/stocktake.py:220 +#: part/admin.py:45 part/stocktake.py:221 msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:940 part/templates/part/part_base.html:269 #: report/templates/report/inventree_stock_location_report.html:103 -#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/part.js:1227 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 -#: report/models.py:161 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2346 +#: part/admin.py:50 part/models.py:949 part/templates/part/part_base.html:277 +#: report/models.py:162 templates/js/translated/part.js:1232 +#: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:319 part/models.py:929 +#: part/admin.py:53 part/admin.py:319 part/models.py:922 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "Avainsanat" @@ -5771,11 +5827,11 @@ msgstr "Avainsanat" msgid "Part Image" msgstr "" -#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:222 msgid "Category ID" msgstr "" -#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:223 msgid "Category Name" msgstr "" @@ -5787,11 +5843,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:908 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1036 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5799,26 +5855,26 @@ msgstr "" 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 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:235 +#: templates/js/translated/part.js:715 templates/js/translated/part.js:2153 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3123 part/models.py:3137 -#: templates/js/translated/part.js:969 +#: part/admin.py:155 part/models.py:3088 part/models.py:3102 +#: templates/js/translated/part.js:970 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3130 part/models.py:3144 -#: templates/js/translated/part.js:979 +#: part/admin.py:158 part/models.py:3095 part/models.py:3109 +#: templates/js/translated/part.js:980 msgid "Maximum Cost" msgstr "" -#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 msgid "Parent ID" msgstr "" -#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 msgid "Parent Name" msgstr "" @@ -5827,141 +5883,149 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:325 part/models.py:393 part/serializers.py:117 -#: part/serializers.py:272 part/serializers.py:391 +#: part/admin.py:325 part/models.py:396 part/serializers.py:124 +#: part/serializers.py:267 part/serializers.py:386 #: 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:2803 templates/js/translated/search.js:130 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "" -#: part/admin.py:386 +#: part/admin.py:378 msgid "BOM Level" msgstr "" -#: part/admin.py:389 +#: part/admin.py:381 msgid "BOM Item ID" msgstr "" -#: part/admin.py:399 +#: part/admin.py:391 msgid "Parent IPN" msgstr "" -#: part/admin.py:410 part/models.py:3966 +#: part/admin.py:402 part/models.py:3946 msgid "Part IPN" msgstr "" -#: part/admin.py:423 part/serializers.py:1278 +#: part/admin.py:415 part/serializers.py:1274 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:428 part/serializers.py:1293 +#: part/admin.py:420 part/serializers.py:1289 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:110 +#: part/api.py:104 msgid "Starred" msgstr "" -#: part/api.py:112 +#: part/api.py:106 msgid "Filter by starred categories" msgstr "" -#: part/api.py:129 stock/api.py:318 +#: part/api.py:123 stock/api.py:312 msgid "Depth" msgstr "" -#: part/api.py:129 +#: part/api.py:123 msgid "Filter by category depth" msgstr "" -#: part/api.py:147 stock/api.py:336 +#: part/api.py:141 stock/api.py:330 +msgid "Top Level" +msgstr "" + +#: part/api.py:143 +msgid "Filter by top-level categories" +msgstr "" + +#: part/api.py:156 stock/api.py:345 msgid "Cascade" msgstr "" -#: part/api.py:149 +#: part/api.py:158 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:169 +#: part/api.py:179 templates/js/translated/part.js:308 msgid "Parent" msgstr "" -#: part/api.py:171 +#: part/api.py:181 msgid "Filter by parent category" msgstr "" -#: part/api.py:204 +#: part/api.py:214 msgid "Exclude Tree" msgstr "" -#: part/api.py:206 +#: part/api.py:216 msgid "Exclude sub-categories under the specified category" msgstr "" -#: part/api.py:455 +#: part/api.py:449 msgid "Has Results" msgstr "" -#: part/api.py:622 +#: part/api.py:616 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:640 +#: part/api.py:634 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:656 +#: part/api.py:650 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:740 +#: part/api.py:734 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:887 +#: part/api.py:881 msgid "Valid" msgstr "" -#: part/api.py:888 +#: part/api.py:882 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:894 +#: part/api.py:888 msgid "This option must be selected" msgstr "" -#: part/api.py:1111 +#: part/api.py:1105 msgid "BOM Valid" msgstr "" -#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 -#: part/serializers.py:406 part/serializers.py:1134 -#: part/templates/part/part_base.html:260 stock/api.py:781 +#: part/api.py:1508 part/models.py:932 part/models.py:3374 part/models.py:3889 +#: part/serializers.py:401 part/serializers.py:1130 +#: part/templates/part/part_base.html:260 stock/api.py:791 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2376 +#: templates/js/translated/part.js:2377 msgid "Category" msgstr "Kategoria" -#: part/api.py:1803 +#: part/api.py:1796 msgid "Uses" msgstr "" -#: part/bom.py:170 part/models.py:102 part/models.py:982 +#: part/bom.py:170 part/models.py:104 part/models.py:975 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 part/serializers.py:837 +#: part/bom.py:171 part/serializers.py:833 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5970,1054 +6034,1066 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 +#: part/models.py:85 part/models.py:3890 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:84 part/templates/part/category.html:136 +#: part/models.py:86 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "" -#: part/models.py:103 +#: part/models.py:105 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 +#: part/models.py:110 stock/models.py:174 templates/js/translated/part.js:2810 #: templates/js/translated/stock.js:2772 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:110 +#: part/models.py:112 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:119 +#: part/models.py:121 msgid "Default keywords" msgstr "Oletus avainsanat" -#: part/models.py:120 +#: part/models.py:122 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 stock/models.py:85 stock/models.py:156 +#: part/models.py:128 stock/models.py:86 stock/models.py:157 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "Kuvake" -#: part/models.py:127 stock/models.py:157 +#: part/models.py:129 stock/models.py:158 msgid "Icon (optional)" msgstr "Kuvake (valinnainen)" -#: part/models.py:149 +#: part/models.py:151 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:482 +#: part/models.py:485 msgid "Cannot delete this part as it is still active" msgstr "" -#: part/models.py:489 +#: part/models.py:490 msgid "Cannot delete this part as it is used in an assembly" msgstr "" -#: part/models.py:527 +#: part/models.py:528 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:575 part/models.py:582 +#: part/models.py:576 part/models.py:583 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:594 +#: part/models.py:595 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:659 +#: part/models.py:658 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:739 +#: part/models.py:736 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:844 +#: part/models.py:837 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:854 +#: part/models.py:847 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:869 +#: part/models.py:862 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:898 part/models.py:3965 +#: part/models.py:891 part/models.py:3945 msgid "Part name" msgstr "" -#: part/models.py:903 +#: part/models.py:896 msgid "Is Template" msgstr "" -#: part/models.py:904 +#: part/models.py:897 msgid "Is this part a template part?" msgstr "" -#: part/models.py:914 +#: part/models.py:907 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:922 +#: part/models.py:915 msgid "Part description (optional)" msgstr "" -#: part/models.py:930 +#: part/models.py:923 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:940 +#: part/models.py:933 msgid "Part category" msgstr "" -#: part/models.py:948 +#: part/models.py:941 msgid "Internal Part Number" msgstr "" -#: part/models.py:955 +#: part/models.py:948 msgid "Part revision or version number" msgstr "" -#: part/models.py:980 +#: part/models.py:973 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:1026 part/templates/part/part_base.html:376 +#: part/models.py:1019 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:1027 +#: part/models.py:1020 msgid "Default supplier part" msgstr "" -#: part/models.py:1034 +#: part/models.py:1027 msgid "Default Expiry" msgstr "" -#: part/models.py:1035 +#: part/models.py:1028 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:1044 +#: part/models.py:1037 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:1053 +#: part/models.py:1046 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1060 +#: part/models.py:1053 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1066 +#: part/models.py:1059 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1072 +#: part/models.py:1065 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1078 +#: part/models.py:1071 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1084 +#: part/models.py:1077 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1088 +#: part/models.py:1081 msgid "Is this part active?" msgstr "" -#: part/models.py:1094 +#: part/models.py:1087 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1100 +#: part/models.py:1093 msgid "BOM checksum" msgstr "" -#: part/models.py:1101 +#: part/models.py:1094 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1109 +#: part/models.py:1102 msgid "BOM checked by" msgstr "" -#: part/models.py:1114 +#: part/models.py:1107 msgid "BOM checked date" msgstr "" -#: part/models.py:1130 +#: part/models.py:1123 msgid "Creation User" msgstr "" -#: part/models.py:1140 +#: part/models.py:1133 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1145 part/templates/part/part_base.html:339 +#: part/models.py:1138 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2470 +#: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:2018 +#: part/models.py:2011 msgid "Sell multiple" msgstr "" -#: part/models.py:3037 +#: part/models.py:3002 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:3053 +#: part/models.py:3018 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:3054 +#: part/models.py:3019 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:3060 +#: part/models.py:3025 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3026 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:3067 +#: part/models.py:3032 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3033 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3074 +#: part/models.py:3039 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3040 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3046 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3047 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3053 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3054 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3060 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3096 +#: part/models.py:3061 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3102 +#: part/models.py:3067 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3103 +#: part/models.py:3068 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3109 +#: part/models.py:3074 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3110 +#: part/models.py:3075 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3116 +#: part/models.py:3081 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3117 +#: part/models.py:3082 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3124 +#: part/models.py:3089 msgid "Override minimum cost" msgstr "" -#: part/models.py:3131 +#: part/models.py:3096 msgid "Override maximum cost" msgstr "" -#: part/models.py:3138 +#: part/models.py:3103 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3145 +#: part/models.py:3110 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3151 +#: part/models.py:3116 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3152 +#: part/models.py:3117 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3158 +#: part/models.py:3123 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3159 +#: part/models.py:3124 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3165 +#: part/models.py:3130 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3131 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3172 +#: part/models.py:3137 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3138 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3192 +#: part/models.py:3157 msgid "Part for stocktake" msgstr "" -#: part/models.py:3197 +#: part/models.py:3162 msgid "Item Count" msgstr "" -#: part/models.py:3198 +#: part/models.py:3163 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3206 +#: part/models.py:3171 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3210 part/models.py:3293 +#: part/models.py:3175 part/models.py:3258 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report.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/part.js:1086 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "Päivämäärä" -#: part/models.py:3211 +#: part/models.py:3176 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3219 +#: part/models.py:3184 msgid "Additional notes" msgstr "Muut merkinnät" -#: part/models.py:3229 +#: part/models.py:3194 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3235 +#: part/models.py:3200 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3236 +#: part/models.py:3201 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3242 +#: part/models.py:3207 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3243 +#: part/models.py:3208 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3264 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "Raportti" -#: part/models.py:3300 +#: part/models.py:3265 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3270 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3306 +#: part/models.py:3271 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3316 +#: part/models.py:3281 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3478 +#: part/models.py:3423 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3489 +#: part/models.py:3444 part/models.py:3608 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3455 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3500 +#: part/models.py:3466 msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3517 templates/js/translated/part.js:2878 +#: part/models.py:3483 templates/js/translated/part.js:2880 msgid "Test Name" msgstr "" -#: part/models.py:3518 +#: part/models.py:3484 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3524 +#: part/models.py:3490 msgid "Test Key" msgstr "" -#: part/models.py:3525 +#: part/models.py:3491 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3532 +#: part/models.py:3498 msgid "Test Description" msgstr "" -#: part/models.py:3533 +#: part/models.py:3499 msgid "Enter description for this test" msgstr "" -#: part/models.py:3537 report/models.py:208 -#: templates/js/translated/part.js:2899 +#: part/models.py:3503 report/models.py:209 +#: templates/js/translated/part.js:2901 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "Käytössä" -#: part/models.py:3537 +#: part/models.py:3503 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3542 templates/js/translated/part.js:2907 +#: part/models.py:3508 templates/js/translated/part.js:2909 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3543 +#: part/models.py:3509 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3548 templates/js/translated/part.js:2915 +#: part/models.py:3514 templates/js/translated/part.js:2917 msgid "Requires Value" msgstr "" -#: part/models.py:3549 +#: part/models.py:3515 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3554 templates/js/translated/part.js:2922 +#: part/models.py:3520 templates/js/translated/part.js:2924 msgid "Requires Attachment" msgstr "" -#: part/models.py:3556 +#: part/models.py:3522 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3603 +#: part/models.py:3528 part/models.py:3667 templates/js/translated/part.js:1637 +msgid "Choices" +msgstr "" + +#: part/models.py:3529 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3583 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3608 +#: part/models.py:3588 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3628 -msgid "Choices must be unique" -msgstr "" - -#: part/models.py:3645 +#: part/models.py:3625 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3660 +#: part/models.py:3640 msgid "Parameter Name" msgstr "" -#: part/models.py:3667 +#: part/models.py:3647 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3675 +#: part/models.py:3655 msgid "Parameter description" msgstr "" -#: part/models.py:3681 templates/js/translated/part.js:1627 +#: part/models.py:3661 templates/js/translated/part.js:1628 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "" -#: part/models.py:3682 +#: part/models.py:3662 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3687 templates/js/translated/part.js:1636 -msgid "Choices" -msgstr "" - -#: part/models.py:3688 +#: part/models.py:3668 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3765 +#: part/models.py:3745 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3808 +#: part/models.py:3788 msgid "Parent Part" msgstr "" -#: part/models.py:3816 part/models.py:3917 part/models.py:3918 +#: part/models.py:3796 part/models.py:3897 part/models.py:3898 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3821 +#: part/models.py:3801 msgid "Data" msgstr "" -#: part/models.py:3822 +#: part/models.py:3802 msgid "Parameter Value" msgstr "" -#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3904 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3925 +#: part/models.py:3905 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3963 +#: part/models.py:3943 msgid "Part ID or part name" msgstr "" -#: part/models.py:3964 +#: part/models.py:3944 msgid "Unique part ID value" msgstr "" -#: part/models.py:3966 +#: part/models.py:3946 msgid "Part IPN value" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "Level" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "BOM level" msgstr "" -#: part/models.py:4057 +#: part/models.py:4037 msgid "Select parent part" msgstr "" -#: part/models.py:4067 +#: part/models.py:4047 msgid "Sub part" msgstr "" -#: part/models.py:4068 +#: part/models.py:4048 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4079 +#: part/models.py:4059 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4085 +#: part/models.py:4065 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4091 +#: part/models.py:4071 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4098 part/templates/part/upload_bom.html:55 +#: part/models.py:4078 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4099 +#: part/models.py:4079 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4106 +#: part/models.py:4086 msgid "BOM item reference" msgstr "" -#: part/models.py:4114 +#: part/models.py:4094 msgid "BOM item notes" msgstr "" -#: part/models.py:4120 +#: part/models.py:4100 msgid "Checksum" msgstr "" -#: part/models.py:4121 +#: part/models.py:4101 msgid "BOM line checksum" msgstr "" -#: part/models.py:4126 templates/js/translated/table_filters.js:174 +#: part/models.py:4106 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4127 +#: part/models.py:4107 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4132 part/templates/part/upload_bom.html:57 +#: part/models.py:4112 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:4133 +#: part/models.py:4113 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4138 part/templates/part/upload_bom.html:56 +#: part/models.py:4118 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4139 +#: part/models.py:4119 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4224 stock/models.py:664 +#: part/models.py:4204 stock/models.py:662 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4234 part/models.py:4236 +#: part/models.py:4214 part/models.py:4216 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4376 +#: part/models.py:4354 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4397 +#: part/models.py:4375 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4410 +#: part/models.py:4388 msgid "Parent BOM item" msgstr "" -#: part/models.py:4418 +#: part/models.py:4396 msgid "Substitute part" msgstr "" -#: part/models.py:4434 +#: part/models.py:4412 msgid "Part 1" msgstr "" -#: part/models.py:4442 +#: part/models.py:4420 msgid "Part 2" msgstr "" -#: part/models.py:4443 +#: part/models.py:4421 msgid "Select Related Part" msgstr "" -#: part/models.py:4462 +#: part/models.py:4440 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4467 +#: part/models.py:4445 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:119 part/serializers.py:141 +#: part/serializers.py:118 +msgid "Parent Category" +msgstr "" + +#: part/serializers.py:119 templates/js/translated/part.js:309 +msgid "Parent part category" +msgstr "" + +#: part/serializers.py:126 part/serializers.py:148 #: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/serializers.py:185 +#: part/serializers.py:180 msgid "Results" msgstr "" -#: part/serializers.py:186 +#: part/serializers.py:181 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 +#: part/serializers.py:205 part/serializers.py:223 stock/serializers.py:562 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:273 +#: part/serializers.py:268 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:397 +#: part/serializers.py:392 msgid "No parts selected" msgstr "" -#: part/serializers.py:407 +#: part/serializers.py:402 msgid "Select category" msgstr "" -#: part/serializers.py:442 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:443 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:448 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:449 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:455 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:456 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:463 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:488 +#: part/serializers.py:483 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:490 +#: part/serializers.py:485 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:497 +#: part/serializers.py:492 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:493 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:510 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:531 +#: part/serializers.py:526 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:541 +#: part/serializers.py:536 msgid "Manufacturer part number" msgstr "Valmistajan osanumero" -#: part/serializers.py:548 +#: part/serializers.py:543 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:557 +#: part/serializers.py:552 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:568 +#: part/serializers.py:563 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:575 +#: part/serializers.py:570 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:834 msgid "External Stock" msgstr "" -#: part/serializers.py:840 +#: part/serializers.py:836 msgid "Unallocated Stock" msgstr "" -#: part/serializers.py:843 +#: part/serializers.py:839 msgid "Variant Stock" msgstr "" -#: part/serializers.py:873 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:471 +#: part/serializers.py:869 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:472 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:870 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:880 templates/js/translated/part.js:102 +#: part/serializers.py:876 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:881 +#: part/serializers.py:877 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:887 +#: part/serializers.py:883 msgid "Supplier Information" msgstr "" -#: part/serializers.py:888 +#: part/serializers.py:884 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:896 +#: part/serializers.py:892 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:897 +#: part/serializers.py:893 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:902 +#: part/serializers.py:898 msgid "Existing Image" msgstr "" -#: part/serializers.py:903 +#: part/serializers.py:899 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:920 +#: part/serializers.py:916 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1126 +#: part/serializers.py:1122 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1136 +#: part/serializers.py:1132 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1146 +#: part/serializers.py:1142 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1152 +#: part/serializers.py:1148 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1153 +#: part/serializers.py:1149 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1158 +#: part/serializers.py:1154 msgid "Generate Report" msgstr "Luo raportti" -#: part/serializers.py:1159 +#: part/serializers.py:1155 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1164 +#: part/serializers.py:1160 msgid "Update Parts" msgstr "" -#: part/serializers.py:1165 +#: part/serializers.py:1161 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1173 +#: part/serializers.py:1169 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1279 +#: part/serializers.py:1275 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1286 +#: part/serializers.py:1282 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1294 +#: part/serializers.py:1290 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1301 +#: part/serializers.py:1297 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1330 +#: part/serializers.py:1326 msgid "Update" msgstr "" -#: part/serializers.py:1331 +#: part/serializers.py:1327 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1354 +#: part/serializers.py:1350 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1361 +#: part/serializers.py:1357 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1364 +#: part/serializers.py:1360 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1727 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1739 +#: part/serializers.py:1735 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1740 +#: part/serializers.py:1736 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1745 +#: part/serializers.py:1741 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1746 +#: part/serializers.py:1742 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1747 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1752 +#: part/serializers.py:1748 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1757 +#: part/serializers.py:1753 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1758 +#: part/serializers.py:1754 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1792 +#: part/serializers.py:1788 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1793 +#: part/serializers.py:1789 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1823 +#: part/serializers.py:1819 msgid "No part column specified" msgstr "" -#: part/serializers.py:1867 +#: part/serializers.py:1863 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1870 +#: part/serializers.py:1866 msgid "No matching part found" msgstr "" -#: part/serializers.py:1873 +#: part/serializers.py:1869 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1882 +#: part/serializers.py:1878 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1890 +#: part/serializers.py:1886 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1911 +#: part/serializers.py:1907 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 +#: part/stocktake.py:225 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "" -#: part/stocktake.py:225 +#: part/stocktake.py:226 msgid "Total Cost Min" msgstr "" -#: part/stocktake.py:226 +#: part/stocktake.py:227 msgid "Total Cost Max" msgstr "" -#: part/stocktake.py:284 +#: part/stocktake.py:285 msgid "Stocktake Report Available" msgstr "" -#: part/stocktake.py:285 +#: part/stocktake.py:286 msgid "A new stocktake report is available for download" msgstr "" @@ -7151,7 +7227,7 @@ 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 +#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" @@ -7251,15 +7327,15 @@ msgstr "" msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:655 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:663 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:748 +#: part/templates/part/detail.html:750 msgid "Add Test Result Template" msgstr "" @@ -7340,7 +7416,7 @@ msgstr "" msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" msgstr "" @@ -7412,7 +7488,7 @@ 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:2443 +#: templates/js/translated/part.js:1265 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7505,8 +7581,8 @@ msgstr "" #: 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:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/part.js:1243 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 #: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7549,7 +7625,7 @@ msgstr "" msgid "Edit" msgstr "Muokkaa" -#: part/templates/part/prices.html:28 stock/admin.py:247 +#: part/templates/part/prices.html:28 stock/admin.py:251 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 @@ -7626,8 +7702,8 @@ msgstr "" #: part/templates/part/stock_count.html:7 #: templates/js/translated/model_renderers.js:227 -#: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 -#: templates/js/translated/part.js:2142 +#: templates/js/translated/part.js:705 templates/js/translated/part.js:2141 +#: templates/js/translated/part.js:2143 msgid "No Stock" msgstr "" @@ -7999,7 +8075,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:308 msgid "Landscape" msgstr "" @@ -8112,62 +8188,62 @@ msgstr "" msgid "Uninstalled plugin successfully" msgstr "" -#: plugin/models.py:35 +#: plugin/models.py:36 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:36 +#: plugin/models.py:37 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:42 users/models.py:100 +#: plugin/models.py:43 users/models.py:100 msgid "Key" msgstr "Avain" -#: plugin/models.py:43 +#: plugin/models.py:44 msgid "Key of plugin" msgstr "" -#: plugin/models.py:51 +#: plugin/models.py:52 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:58 plugin/serializers.py:90 +#: plugin/models.py:59 plugin/serializers.py:90 msgid "Package Name" msgstr "" -#: plugin/models.py:60 +#: plugin/models.py:61 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:65 +#: plugin/models.py:66 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:156 templates/js/translated/table_filters.js:370 +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "" -#: plugin/models.py:165 +#: plugin/models.py:166 msgid "Sample plugin" msgstr "" -#: plugin/models.py:173 +#: plugin/models.py:174 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:181 +#: plugin/models.py:182 msgid "Package Plugin" msgstr "" -#: plugin/models.py:205 report/models.py:474 +#: plugin/models.py:220 report/models.py:475 #: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:252 +#: plugin/models.py:267 msgid "Method" msgstr "" @@ -8175,17 +8251,17 @@ msgstr "" msgid "No author found" msgstr "" -#: plugin/registry.py:597 +#: plugin/registry.py:534 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:600 +#: plugin/registry.py:537 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:602 +#: plugin/registry.py:539 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -8300,23 +8376,19 @@ msgstr "" msgid "Activate this plugin" msgstr "" -#: plugin/serializers.py:234 +#: plugin/serializers.py:226 msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:235 +#: plugin/serializers.py:227 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:77 +#: report/api.py:88 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:89 report/serializers.py:53 -msgid "Model Type" -msgstr "" - -#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/api.py:103 report/models.py:439 report/serializers.py:98 #: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 #: templates/js/translated/return_order.js:353 #: templates/js/translated/sales_order.js:887 @@ -8324,176 +8396,176 @@ msgstr "" msgid "Items" msgstr "" -#: report/api.py:168 +#: report/api.py:180 msgid "Plugin not found" msgstr "" -#: report/api.py:170 +#: report/api.py:182 msgid "Plugin is not active" msgstr "" -#: report/api.py:172 +#: report/api.py:184 msgid "Plugin does not support label printing" msgstr "" -#: report/api.py:221 +#: report/api.py:233 msgid "Invalid label dimensions" msgstr "" -#: report/api.py:236 report/api.py:316 +#: report/api.py:248 report/api.py:329 msgid "No valid items provided to template" msgstr "" -#: report/api.py:271 +#: report/api.py:283 msgid "Error printing label" msgstr "" -#: report/api.py:362 report/api.py:398 +#: report/api.py:375 report/api.py:411 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/helpers.py:41 +#: report/helpers.py:43 msgid "A4" msgstr "" -#: report/helpers.py:42 +#: report/helpers.py:44 msgid "A3" msgstr "" -#: report/helpers.py:43 +#: report/helpers.py:45 msgid "Legal" msgstr "" -#: report/helpers.py:44 +#: report/helpers.py:46 msgid "Letter" msgstr "" -#: report/models.py:118 +#: report/models.py:119 msgid "Template file with this name already exists" msgstr "" -#: report/models.py:150 +#: report/models.py:151 msgid "Template name" msgstr "" -#: report/models.py:156 +#: report/models.py:157 msgid "Template description" msgstr "" -#: report/models.py:162 +#: report/models.py:163 msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Filename Pattern" msgstr "" -#: report/models.py:203 +#: report/models.py:204 msgid "Pattern for generating filenames" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Template is enabled" msgstr "" -#: report/models.py:214 +#: report/models.py:215 msgid "Target model type for template" msgstr "" -#: report/models.py:234 +#: report/models.py:235 msgid "Filters" msgstr "Suodattimet" -#: report/models.py:235 +#: report/models.py:236 msgid "Template query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:294 report/models.py:361 +#: report/models.py:295 report/models.py:362 msgid "Template file" msgstr "" -#: report/models.py:302 +#: report/models.py:303 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:308 +#: report/models.py:309 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:367 +#: report/models.py:368 msgid "Width [mm]" msgstr "Leveys [mm]" -#: report/models.py:368 +#: report/models.py:369 msgid "Label width, specified in mm" msgstr "" -#: report/models.py:374 +#: report/models.py:375 msgid "Height [mm]" msgstr "Korkeus [mm]" -#: report/models.py:375 +#: report/models.py:376 msgid "Label height, specified in mm" msgstr "" -#: report/models.py:438 +#: report/models.py:439 msgid "Number of items to process" msgstr "" -#: report/models.py:444 +#: report/models.py:445 msgid "Report generation is complete" msgstr "" -#: report/models.py:448 templates/js/translated/build.js:2177 +#: report/models.py:449 templates/js/translated/build.js:2177 msgid "Progress" msgstr "" -#: report/models.py:448 +#: report/models.py:449 msgid "Report generation progress" msgstr "" -#: report/models.py:456 +#: report/models.py:457 msgid "Report Template" msgstr "" -#: report/models.py:463 report/models.py:486 +#: report/models.py:464 report/models.py:487 msgid "Output File" msgstr "" -#: report/models.py:464 report/models.py:487 +#: report/models.py:465 report/models.py:488 msgid "Generated output file" msgstr "" -#: report/models.py:475 +#: report/models.py:476 msgid "Label output plugin" msgstr "" -#: report/models.py:479 +#: report/models.py:480 msgid "Label Template" msgstr "" -#: report/models.py:502 +#: report/models.py:503 msgid "Snippet" msgstr "" -#: report/models.py:503 +#: report/models.py:504 msgid "Report snippet file" msgstr "" -#: report/models.py:510 +#: report/models.py:511 msgid "Snippet file description" msgstr "" -#: report/models.py:528 +#: report/models.py:529 msgid "Asset" msgstr "" -#: report/models.py:529 +#: report/models.py:530 msgid "Report asset file" msgstr "" -#: report/models.py:536 +#: report/models.py:537 msgid "Asset file description" msgstr "" @@ -8566,8 +8638,8 @@ msgid "Total" msgstr "" #: report/templates/report/inventree_return_order_report.html:25 -#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 -#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:824 +#: stock/serializers.py:149 stock/templates/stock/item_base.html:311 #: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 #: templates/js/translated/build.js:2355 #: templates/js/translated/model_renderers.js:230 @@ -8597,32 +8669,32 @@ msgstr "" msgid "Test" msgstr "" -#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2412 msgid "Result" msgstr "" -#: report/templates/report/inventree_test_report.html:130 +#: report/templates/report/inventree_test_report.html:129 msgid "Pass" msgstr "" -#: report/templates/report/inventree_test_report.html:132 +#: report/templates/report/inventree_test_report.html:131 msgid "Fail" msgstr "" -#: report/templates/report/inventree_test_report.html:139 +#: report/templates/report/inventree_test_report.html:138 msgid "No result (required)" msgstr "" -#: report/templates/report/inventree_test_report.html:141 +#: report/templates/report/inventree_test_report.html:140 msgid "No result" msgstr "" -#: report/templates/report/inventree_test_report.html:154 +#: report/templates/report/inventree_test_report.html:153 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "" -#: report/templates/report/inventree_test_report.html:168 stock/admin.py:162 +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 #: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 #: templates/js/translated/stock.js:3110 msgid "Serial" @@ -8644,654 +8716,670 @@ msgstr "" msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:172 +#: stock/admin.py:51 stock/admin.py:171 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:176 +#: stock/admin.py:53 stock/admin.py:175 msgid "Location Name" msgstr "" -#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/admin.py:63 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:149 +#: stock/admin.py:148 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:168 +#: stock/admin.py:167 msgid "Status Code" msgstr "" -#: stock/admin.py:180 +#: stock/admin.py:179 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:185 +#: stock/admin.py:184 +msgid "Supplier Part SKU" +msgstr "" + +#: stock/admin.py:189 msgid "Supplier ID" msgstr "" -#: stock/admin.py:191 +#: stock/admin.py:195 msgid "Supplier Name" msgstr "" -#: stock/admin.py:196 +#: stock/admin.py:200 msgid "Customer ID" msgstr "" -#: stock/admin.py:201 stock/models.py:806 +#: stock/admin.py:205 stock/models.py:804 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:206 +#: stock/admin.py:210 msgid "Build ID" msgstr "" -#: stock/admin.py:216 +#: stock/admin.py:220 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:221 +#: stock/admin.py:225 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:236 +#: stock/admin.py:240 msgid "Review Needed" msgstr "" -#: stock/admin.py:241 +#: stock/admin.py:245 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:256 stock/models.py:900 +#: stock/admin.py:260 stock/models.py:898 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "" -#: stock/api.py:318 +#: stock/api.py:312 msgid "Filter by location depth" msgstr "" -#: stock/api.py:338 +#: stock/api.py:332 +msgid "Filter by top-level locations" +msgstr "" + +#: stock/api.py:347 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:359 +#: stock/api.py:369 stock/serializers.py:1085 msgid "Parent Location" msgstr "" -#: stock/api.py:360 +#: stock/api.py:370 msgid "Filter by parent location" msgstr "" -#: stock/api.py:615 templates/js/translated/table_filters.js:427 +#: stock/api.py:625 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:803 +#: stock/api.py:813 msgid "Part Tree" msgstr "" -#: stock/api.py:833 +#: stock/api.py:843 msgid "Expiry date before" msgstr "" -#: stock/api.py:837 +#: stock/api.py:847 msgid "Expiry date after" msgstr "" -#: stock/api.py:840 stock/templates/stock/item_base.html:439 +#: stock/api.py:850 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:927 +#: stock/api.py:937 msgid "Quantity is required" msgstr "" -#: stock/api.py:933 +#: stock/api.py:943 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:964 +#: stock/api.py:974 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:974 +#: stock/api.py:984 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:1005 +#: stock/api.py:1015 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:59 +#: stock/models.py:60 msgid "Stock Location type" msgstr "" -#: stock/models.py:60 +#: stock/models.py:61 msgid "Stock Location types" msgstr "" -#: stock/models.py:86 +#: stock/models.py:87 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:123 stock/models.py:788 +#: stock/models.py:124 stock/models.py:786 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:124 stock/templates/stock/location.html:186 +#: stock/models.py:125 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "" -#: stock/models.py:166 stock/models.py:949 +#: stock/models.py:167 stock/models.py:947 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:167 stock/models.py:950 +#: stock/models.py:168 stock/models.py:948 msgid "Select Owner" msgstr "" -#: stock/models.py:175 +#: stock/models.py:176 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:182 templates/js/translated/stock.js:2781 +#: stock/models.py:183 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:183 +#: stock/models.py:184 msgid "This is an external stock location" msgstr "" -#: stock/models.py:189 templates/js/translated/stock.js:2790 +#: stock/models.py:190 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" -#: stock/models.py:193 +#: stock/models.py:194 msgid "Stock location type of this location" msgstr "" -#: stock/models.py:262 +#: stock/models.py:261 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:643 +#: stock/models.py:641 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:670 stock/serializers.py:419 +#: stock/models.py:668 stock/serializers.py:446 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:687 +#: stock/models.py:685 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:697 stock/models.py:710 +#: stock/models.py:695 stock/models.py:708 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:700 +#: stock/models.py:698 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:724 +#: stock/models.py:722 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:729 +#: stock/models.py:727 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:742 +#: stock/models.py:740 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:758 +#: stock/models.py:756 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:770 +#: stock/models.py:768 msgid "Base part" msgstr "" -#: stock/models.py:780 +#: stock/models.py:778 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:792 +#: stock/models.py:790 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:800 stock/serializers.py:1480 +#: stock/models.py:798 stock/serializers.py:1476 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:811 +#: stock/models.py:809 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:830 +#: stock/models.py:828 msgid "Serial number for this item" msgstr "" -#: stock/models.py:844 stock/serializers.py:1463 +#: stock/models.py:842 stock/serializers.py:1459 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:849 +#: stock/models.py:847 msgid "Stock Quantity" msgstr "" -#: stock/models.py:859 +#: stock/models.py:857 msgid "Source Build" msgstr "" -#: stock/models.py:862 +#: stock/models.py:860 msgid "Build for this stock item" msgstr "" -#: stock/models.py:869 stock/templates/stock/item_base.html:363 +#: stock/models.py:867 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:872 +#: stock/models.py:870 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:881 +#: stock/models.py:879 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:885 +#: stock/models.py:883 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:891 +#: stock/models.py:889 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:902 +#: stock/models.py:900 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:920 +#: stock/models.py:918 msgid "Delete on deplete" msgstr "" -#: stock/models.py:921 +#: stock/models.py:919 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:941 +#: stock/models.py:939 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:972 +#: stock/models.py:970 msgid "Converted to part" msgstr "" -#: stock/models.py:1490 +#: stock/models.py:1486 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1496 +#: stock/models.py:1492 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1500 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1510 +#: stock/models.py:1506 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1515 +#: stock/models.py:1511 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1523 stock/serializers.py:658 +#: stock/models.py:1519 stock/serializers.py:660 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1620 +#: stock/models.py:1616 msgid "Test template does not exist" msgstr "" -#: stock/models.py:1638 +#: stock/models.py:1634 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1642 +#: stock/models.py:1638 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1645 +#: stock/models.py:1641 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1648 +#: stock/models.py:1644 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1651 +#: stock/models.py:1647 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1654 +#: stock/models.py:1650 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1661 stock/serializers.py:1369 +#: stock/models.py:1657 stock/serializers.py:1365 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1665 +#: stock/models.py:1661 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1673 +#: stock/models.py:1669 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1678 +#: stock/models.py:1674 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1905 +#: stock/models.py:1901 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2310 msgid "Entry notes" msgstr "" -#: stock/models.py:2391 +#: stock/models.py:2378 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2396 +#: stock/models.py:2383 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2423 +#: stock/models.py:2388 +msgid "Invalid value for this test" +msgstr "" + +#: stock/models.py:2412 msgid "Test result" msgstr "" -#: stock/models.py:2430 +#: stock/models.py:2419 msgid "Test output value" msgstr "" -#: stock/models.py:2438 +#: stock/models.py:2427 msgid "Test result attachment" msgstr "" -#: stock/models.py:2442 +#: stock/models.py:2431 msgid "Test notes" msgstr "" -#: stock/models.py:2450 templates/js/translated/stock.js:1548 +#: stock/models.py:2439 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2440 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2457 +#: stock/models.py:2446 msgid "Started" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2447 msgid "The timestamp of the test start" msgstr "" -#: stock/models.py:2464 +#: stock/models.py:2453 msgid "Finished" msgstr "" -#: stock/models.py:2465 +#: stock/models.py:2454 msgid "The timestamp of the test finish" msgstr "" -#: stock/serializers.py:75 +#: stock/serializers.py:74 msgid "Generated batch code" msgstr "" -#: stock/serializers.py:84 +#: stock/serializers.py:83 msgid "Select build order" msgstr "" -#: stock/serializers.py:93 +#: stock/serializers.py:92 msgid "Select stock item to generate batch code for" msgstr "" -#: stock/serializers.py:102 +#: stock/serializers.py:101 msgid "Select location to generate batch code for" msgstr "" -#: stock/serializers.py:111 +#: stock/serializers.py:110 msgid "Select part to generate batch code for" msgstr "" -#: stock/serializers.py:120 +#: stock/serializers.py:119 msgid "Select purchase order" msgstr "" -#: stock/serializers.py:127 +#: stock/serializers.py:126 msgid "Enter quantity for batch code" msgstr "" -#: stock/serializers.py:150 +#: stock/serializers.py:149 msgid "Generated serial number" msgstr "" -#: stock/serializers.py:159 +#: stock/serializers.py:158 msgid "Select part to generate serial number for" msgstr "" -#: stock/serializers.py:167 +#: stock/serializers.py:166 msgid "Quantity of serial numbers to generate" msgstr "" -#: stock/serializers.py:229 +#: stock/serializers.py:228 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:248 +#: stock/serializers.py:247 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:280 +#: stock/serializers.py:279 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:313 +#: stock/serializers.py:315 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:411 +#: stock/serializers.py:438 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:531 +#: stock/serializers.py:558 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:595 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:606 +#: stock/serializers.py:608 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:613 +#: stock/serializers.py:615 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 +#: stock/serializers.py:626 stock/serializers.py:1322 stock/serializers.py:1578 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:631 +#: stock/serializers.py:633 msgid "Optional note field" msgstr "" -#: stock/serializers.py:641 +#: stock/serializers.py:643 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:696 +#: stock/serializers.py:698 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:703 +#: stock/serializers.py:705 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:704 +#: stock/serializers.py:706 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 -#: stock/serializers.py:935 +#: stock/serializers.py:711 stock/serializers.py:791 stock/serializers.py:887 +#: stock/serializers.py:937 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:719 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:725 +#: stock/serializers.py:727 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:736 +#: stock/serializers.py:738 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:749 +#: stock/serializers.py:751 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:784 +#: stock/serializers.py:786 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:819 +#: stock/serializers.py:821 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:834 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:849 +#: stock/serializers.py:851 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:880 +#: stock/serializers.py:882 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:917 +#: stock/serializers.py:919 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:923 +#: stock/serializers.py:925 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:1019 stock/serializers.py:1082 +#: stock/serializers.py:1021 stock/serializers.py:1093 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:220 +#: stock/templates/stock/location.html:222 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1198 +#: stock/serializers.py:1086 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: stock/serializers.py:1194 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1202 +#: stock/serializers.py:1198 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1206 +#: stock/serializers.py:1202 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1230 +#: stock/serializers.py:1226 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1236 +#: stock/serializers.py:1232 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1244 +#: stock/serializers.py:1240 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1254 stock/serializers.py:1508 +#: stock/serializers.py:1250 stock/serializers.py:1504 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1333 +#: stock/serializers.py:1329 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1338 +#: stock/serializers.py:1334 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1339 +#: stock/serializers.py:1335 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1344 +#: stock/serializers.py:1340 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1345 +#: stock/serializers.py:1341 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1355 +#: stock/serializers.py:1351 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1422 +#: stock/serializers.py:1418 msgid "No Change" msgstr "" -#: stock/serializers.py:1451 +#: stock/serializers.py:1447 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1470 +#: stock/serializers.py:1466 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1498 +#: stock/serializers.py:1494 msgid "Stock transaction notes" msgstr "" @@ -9444,7 +9532,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276 msgid "Delete Test Data" msgstr "" @@ -9464,11 +9552,11 @@ msgstr "" msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:272 +#: stock/templates/stock/item.html:264 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "" @@ -9754,28 +9842,28 @@ msgstr "" msgid "Location Type" msgstr "" -#: stock/templates/stock/location.html:224 +#: stock/templates/stock/location.html:226 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:225 +#: stock/templates/stock/location.html:227 msgid "New Location" msgstr "Uusi sijainti" -#: stock/templates/stock/location.html:295 +#: stock/templates/stock/location.html:299 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:317 +#: stock/templates/stock/location.html:321 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:390 +#: stock/templates/stock/location.html:394 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:401 +#: stock/templates/stock/location.html:405 msgid "Link Barcode to Stock Location" msgstr "" @@ -10199,20 +10287,20 @@ msgstr "" msgid "Pricing Settings" msgstr "" -#: templates/InvenTree/settings/pricing.html:34 +#: templates/InvenTree/settings/pricing.html:35 msgid "Exchange Rates" msgstr "" -#: templates/InvenTree/settings/pricing.html:38 +#: templates/InvenTree/settings/pricing.html:39 msgid "Update Now" msgstr "" -#: templates/InvenTree/settings/pricing.html:46 -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 msgid "Last Update" msgstr "" -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:51 msgid "Never" msgstr "" @@ -10269,8 +10357,8 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:547 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 +#: templates/js/translated/part.js:393 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:402 msgid "Delete" msgstr "Poista" @@ -10310,12 +10398,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 -#: templates/js/translated/part.js:1645 +#: templates/js/translated/part.js:1646 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 -#: templates/js/translated/part.js:1646 +#: templates/js/translated/part.js:1647 msgid "Delete Template" msgstr "" @@ -10705,7 +10793,7 @@ msgid "Submit Bug Report" msgstr "" #: templates/about.html:91 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 +#: templates/js/translated/helpers.js:589 msgid "copy to clipboard" msgstr "kopioi leikepöydälle" @@ -10769,7 +10857,7 @@ 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 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45 msgid "Return to Site" msgstr "" @@ -10883,15 +10971,19 @@ msgstr "Vaihe 1" msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "" -#: templates/allauth_2fa/setup.html:23 +#: templates/allauth_2fa/setup.html:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 msgid "Step 2" msgstr "Vaihe 2" -#: templates/allauth_2fa/setup.html:27 +#: templates/allauth_2fa/setup.html:28 msgid "Input a token generated by the app:" msgstr "" -#: templates/allauth_2fa/setup.html:37 +#: templates/allauth_2fa/setup.html:38 msgid "Verify" msgstr "" @@ -10970,7 +11062,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3217 +#: templates/js/translated/part.js:3219 msgid "Minimum Quantity" msgstr "" @@ -11058,27 +11150,27 @@ msgstr "" msgid "Delete attachments" msgstr "" -#: templates/js/translated/attachment.js:253 +#: templates/js/translated/attachment.js:260 msgid "Attachment actions" msgstr "" -#: templates/js/translated/attachment.js:275 +#: templates/js/translated/attachment.js:294 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:315 +#: templates/js/translated/attachment.js:334 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:365 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:366 +#: templates/js/translated/attachment.js:385 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:374 +#: templates/js/translated/attachment.js:393 msgid "Delete attachment" msgstr "" @@ -11359,7 +11451,7 @@ msgid "Includes variant and substitute stock" msgstr "" #: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 -#: templates/js/translated/part.js:1256 +#: templates/js/translated/part.js:1257 #: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" @@ -11686,7 +11778,7 @@ msgstr "" #: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 #: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 -#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11729,8 +11821,8 @@ msgstr "" msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 -#: templates/js/translated/part.js:1202 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:791 +#: templates/js/translated/part.js:1203 msgid "Trackable part" msgstr "" @@ -11916,7 +12008,7 @@ msgid "Delete Parameters" msgstr "" #: templates/js/translated/company.js:1191 -#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2244 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2245 msgid "Order parts" msgstr "" @@ -11933,34 +12025,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:1279 -#: templates/js/translated/company.js:1567 templates/js/translated/part.js:798 -#: templates/js/translated/part.js:1210 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Template part" msgstr "" #: templates/js/translated/company.js:1283 -#: templates/js/translated/company.js:1571 templates/js/translated/part.js:802 -#: templates/js/translated/part.js:1214 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:803 +#: templates/js/translated/part.js:1215 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1464 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1465 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1527 +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1528 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1528 +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1529 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1433 +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1434 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1549 +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1550 msgid "Delete Parameter" msgstr "" @@ -12094,23 +12186,23 @@ msgstr "" msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2499 +#: templates/js/translated/forms.js:2500 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3113 +#: templates/js/translated/forms.js:3114 msgid "Select Columns" msgstr "" @@ -12211,7 +12303,7 @@ msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 -#: templates/js/translated/part.js:1604 +#: templates/js/translated/part.js:1605 msgid "ID" msgstr "" @@ -12292,347 +12384,343 @@ msgstr "" 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 +#: templates/js/translated/part.js:333 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:355 +#: templates/js/translated/part.js:356 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:356 +#: templates/js/translated/part.js:357 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:370 +#: templates/js/translated/part.js:371 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:383 +#: templates/js/translated/part.js:384 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:388 +#: templates/js/translated/part.js:389 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:397 +#: templates/js/translated/part.js:398 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:401 +#: templates/js/translated/part.js:402 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:406 +#: templates/js/translated/part.js:407 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:430 +#: templates/js/translated/part.js:431 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:432 +#: templates/js/translated/part.js:433 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:433 +#: templates/js/translated/part.js:434 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:462 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:463 +#: templates/js/translated/part.js:464 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:474 +#: templates/js/translated/part.js:475 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:531 +#: templates/js/translated/part.js:532 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:532 +#: templates/js/translated/part.js:533 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:546 +#: templates/js/translated/part.js:547 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:548 +#: templates/js/translated/part.js:549 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:549 +#: templates/js/translated/part.js:550 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:550 +#: templates/js/translated/part.js:551 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:557 +#: templates/js/translated/part.js:558 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:593 +#: templates/js/translated/part.js:594 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:595 +#: templates/js/translated/part.js:596 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:600 +#: templates/js/translated/part.js:601 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:602 +#: templates/js/translated/part.js:603 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:619 +#: templates/js/translated/part.js:620 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:629 +#: templates/js/translated/part.js:630 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:632 +#: templates/js/translated/part.js:633 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:657 +#: templates/js/translated/part.js:658 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:685 +#: templates/js/translated/part.js:686 #: templates/js/translated/table_filters.js:747 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:688 +#: templates/js/translated/part.js:689 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:748 +#: templates/js/translated/part.js:749 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:771 +#: templates/js/translated/part.js:772 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +#: templates/js/translated/part.js:795 templates/js/translated/part.js:1207 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:806 +#: templates/js/translated/part.js:807 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:810 +#: templates/js/translated/part.js:811 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:897 +#: templates/js/translated/part.js:898 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:901 +#: templates/js/translated/part.js:902 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1050 +#: templates/js/translated/part.js:1051 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1145 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +#: templates/js/translated/part.js:1113 templates/js/translated/part.js:1155 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1281 +#: templates/js/translated/part.js:1282 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1599 +#: templates/js/translated/part.js:1600 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1662 +#: templates/js/translated/part.js:1663 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1674 +#: templates/js/translated/part.js:1675 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1682 +#: templates/js/translated/part.js:1683 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1716 +#: templates/js/translated/part.js:1717 #: templates/js/translated/purchase_order.js:1654 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1860 +#: templates/js/translated/part.js:1861 #: templates/js/translated/purchase_order.js:2153 #: templates/js/translated/return_order.js:755 #: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1906 +#: templates/js/translated/part.js:1907 #: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1970 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1991 +#: templates/js/translated/part.js:1992 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 +#: templates/js/translated/part.js:2080 templates/js/translated/part.js:2506 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2200 +#: templates/js/translated/part.js:2201 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2205 +#: templates/js/translated/part.js:2206 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2235 +#: templates/js/translated/part.js:2236 msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2286 +#: templates/js/translated/part.js:2287 msgid "part" msgstr "" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2288 msgid "parts" msgstr "" -#: templates/js/translated/part.js:2383 +#: templates/js/translated/part.js:2384 msgid "No category" msgstr "" -#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2546 +#: templates/js/translated/part.js:2547 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2644 +#: templates/js/translated/part.js:2645 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2760 +#: templates/js/translated/part.js:2761 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2776 +#: templates/js/translated/part.js:2777 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2865 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2887 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/part.js:2938 templates/js/translated/stock.js:1457 #: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2940 +#: templates/js/translated/part.js:2942 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2956 +#: templates/js/translated/part.js:2958 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2970 +#: templates/js/translated/part.js:2972 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3051 templates/js/translated/part.js:3052 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3052 +#: templates/js/translated/part.js:3054 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3058 +#: templates/js/translated/part.js:3060 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3108 +#: templates/js/translated/part.js:3110 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3114 +#: templates/js/translated/part.js:3116 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3210 +#: templates/js/translated/part.js:3212 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3226 +#: templates/js/translated/part.js:3228 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3271 +#: templates/js/translated/part.js:3273 msgid "Minimum Stock Level" msgstr "" @@ -13240,10 +13328,6 @@ msgstr "" 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 "" @@ -13412,7 +13496,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:401 +#: templates/js/translated/stock.js:1042 users/models.py:392 msgid "Add" msgstr "" @@ -14303,34 +14387,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:384 +#: users/models.py:375 msgid "Permission set" msgstr "" -#: users/models.py:393 +#: users/models.py:384 msgid "Group" msgstr "Ryhmä" -#: users/models.py:397 +#: users/models.py:388 msgid "View" msgstr "Näytä" -#: users/models.py:397 +#: users/models.py:388 msgid "Permission to view items" msgstr "Oikeus tarkastella kohteita" -#: users/models.py:401 +#: users/models.py:392 msgid "Permission to add items" msgstr "Oikeus lisätä kohteita" -#: users/models.py:405 +#: users/models.py:396 msgid "Change" msgstr "Muuta" -#: users/models.py:407 +#: users/models.py:398 msgid "Permissions to edit items" msgstr "Oikeus muokata kohteita" -#: users/models.py:413 +#: users/models.py:404 msgid "Permission to delete items" msgstr "Oikeus poistaa kohteita" + diff --git a/src/backend/InvenTree/locale/fr/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/fr/LC_MESSAGES/django.po index 98e876a5d5..d0fdc77415 100644 --- a/src/backend/InvenTree/locale/fr/LC_MESSAGES/django.po +++ b/src/backend/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-05-31 07:08+0000\n" -"PO-Revision-Date: 2024-05-27 11:54\n" +"POT-Creation-Date: 2024-06-26 03:18+0000\n" +"PO-Revision-Date: 2024-06-26 06:04\n" "Last-Translator: \n" "Language-Team: French\n" "Language: fr_FR\n" @@ -21,7 +21,7 @@ msgstr "" msgid "API endpoint not found" msgstr "Point de terminaison de l'API introuvable" -#: InvenTree/api.py:536 +#: InvenTree/api.py:520 msgid "User does not have permission to view this model" msgstr "L'utilisateur n'a pas la permission de voir ce modèle" @@ -52,25 +52,25 @@ msgstr "Quantité fournie invalide ({exc})" 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" -#: InvenTree/fields.py:139 +#: InvenTree/fields.py:136 msgid "Enter date" msgstr "Entrer la date" -#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 -#: build/serializers.py:531 build/templates/build/sidebar.html:21 -#: company/models.py:849 company/templates/company/sidebar.html:37 -#: order/models.py:1332 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:205 InvenTree/models.py:918 build/serializers.py:452 +#: build/serializers.py:530 build/templates/build/sidebar.html:21 +#: company/models.py:817 company/templates/company/sidebar.html:37 +#: order/models.py:1296 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:3218 part/templates/part/part_sidebar.html:63 +#: part/models.py:3183 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_report.html:172 -#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 -#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 -#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 -#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:230 stock/models.py:2309 stock/models.py:2431 +#: stock/serializers.py:632 stock/serializers.py:790 stock/serializers.py:886 +#: stock/serializers.py:936 stock/serializers.py:1239 stock/serializers.py:1328 +#: stock/serializers.py:1493 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1080 +#: templates/js/translated/part.js:1081 #: templates/js/translated/purchase_order.js:2200 #: templates/js/translated/return_order.js:775 #: templates/js/translated/sales_order.js:1103 @@ -120,15 +120,15 @@ msgstr "Confirmation de l'adresse email" msgid "You must type the same email each time." msgstr "Vous devez taper le même e-mail à chaque fois." -#: InvenTree/forms.py:253 InvenTree/forms.py:261 +#: InvenTree/forms.py:248 InvenTree/forms.py:256 msgid "The provided primary email address is not valid." msgstr "L'adresse e-mail principale fournie n'est pas valide." -#: InvenTree/forms.py:268 +#: InvenTree/forms.py:263 msgid "The provided email domain is not approved." msgstr "Le domaine e-mail fourni n'est pas approuvé." -#: InvenTree/forms.py:395 +#: InvenTree/forms.py:390 msgid "Registration is disabled." msgstr "L'enregistrement est désactivé." @@ -171,35 +171,35 @@ msgstr "Le nombre de numéros de série uniques ({len(serials)}) doit correspond msgid "Remove HTML tags from this value" msgstr "Retirer les balises HTML de cette valeur" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Connection error" msgstr "Erreur de connexion" -#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 msgid "Server responded with invalid status code" msgstr "Le serveur a répondu avec un code de statut invalide" -#: InvenTree/helpers_model.py:158 +#: InvenTree/helpers_model.py:148 msgid "Exception occurred" msgstr "Une erreur est survenue" -#: InvenTree/helpers_model.py:168 +#: InvenTree/helpers_model.py:158 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:171 +#: InvenTree/helpers_model.py:161 msgid "Image size is too large" msgstr "Image trop volumineuse" -#: InvenTree/helpers_model.py:183 +#: InvenTree/helpers_model.py:173 msgid "Image download exceeded maximum size" msgstr "La taille de l'image dépasse la taille maximale autorisée" -#: InvenTree/helpers_model.py:188 +#: InvenTree/helpers_model.py:178 msgid "Remote server returned empty response" msgstr "Le serveur distant a renvoyé une réponse vide" -#: InvenTree/helpers_model.py:196 +#: InvenTree/helpers_model.py:186 msgid "Supplied URL is not a valid image file" msgstr "L'URL fournie n'est pas un fichier image valide" @@ -296,46 +296,50 @@ msgid "Portuguese (Brazilian)" msgstr "Portugais (Brésilien)" #: InvenTree/locales.py:41 +msgid "Romanian" +msgstr "" + +#: InvenTree/locales.py:42 msgid "Russian" msgstr "Russe" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:43 msgid "Slovak" msgstr "Slovaque" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:44 msgid "Slovenian" msgstr "Slovénien" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:45 msgid "Serbian" msgstr "Serbe" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:46 msgid "Swedish" msgstr "Suédois" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:47 msgid "Thai" msgstr "Thaïlandais" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:48 msgid "Turkish" msgstr "Turc" -#: InvenTree/locales.py:48 +#: InvenTree/locales.py:49 msgid "Ukrainian" msgstr "Ukrainien" -#: InvenTree/locales.py:49 +#: InvenTree/locales.py:50 msgid "Vietnamese" msgstr "Vietnamien" -#: InvenTree/locales.py:50 +#: InvenTree/locales.py:51 msgid "Chinese (Simplified)" msgstr "Chinois (Simplifié)" -#: InvenTree/locales.py:51 +#: InvenTree/locales.py:52 msgid "Chinese (Traditional)" msgstr "Chinois (Traditionnel)" @@ -344,153 +348,65 @@ msgstr "Chinois (Traditionnel)" msgid "[{site_name}] Log in to the app" msgstr "[{site_name}] Se connecter à l'application" -#: InvenTree/magic_login.py:38 company/models.py:133 +#: InvenTree/magic_login.py:38 company/models.py:136 #: company/templates/company/company_base.html:138 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:677 msgid "Email" msgstr "E-mail" -#: InvenTree/models.py:107 +#: InvenTree/models.py:105 msgid "Error running plugin validation" msgstr "Erreur lors de l'exécution de la validation du plugin" -#: InvenTree/models.py:176 +#: InvenTree/models.py:174 msgid "Metadata must be a python dict object" msgstr "Les metadata doivent être un objet python de type \"dict\"" -#: InvenTree/models.py:182 +#: InvenTree/models.py:180 msgid "Plugin Metadata" msgstr "Métadonnées de l'Extension" -#: InvenTree/models.py:183 +#: InvenTree/models.py:181 msgid "JSON metadata field, for use by external plugins" msgstr "Champs metadata JSON, pour plugins tiers" -#: InvenTree/models.py:413 +#: InvenTree/models.py:408 msgid "Improperly formatted pattern" msgstr "Modèle mal formaté" -#: InvenTree/models.py:420 +#: InvenTree/models.py:415 msgid "Unknown format key specified" msgstr "Clé de format inconnu spécifiée" -#: InvenTree/models.py:426 +#: InvenTree/models.py:421 msgid "Missing required format key" msgstr "Clé de format requise manquante" -#: InvenTree/models.py:437 +#: InvenTree/models.py:432 msgid "Reference field cannot be empty" msgstr "Le champ de référence ne peut pas être vide" -#: InvenTree/models.py:445 +#: InvenTree/models.py:440 msgid "Reference must match required pattern" msgstr "La référence doit correspondre au modèle requis" -#: InvenTree/models.py:476 +#: InvenTree/models.py:471 msgid "Reference number is too large" msgstr "Le numéro de référence est trop grand" -#: InvenTree/models.py:550 -msgid "Missing file" -msgstr "Fichier manquant" - -#: InvenTree/models.py:551 -msgid "Missing external link" -msgstr "Lien externe manquant" - -#: InvenTree/models.py:572 stock/models.py:2437 -#: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:326 -msgid "Attachment" -msgstr "Pièce jointe" - -#: InvenTree/models.py:573 -msgid "Select file to attach" -msgstr "Sélectionnez un fichier à joindre" - -#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:831 -#: order/models.py:303 order/models.py:1337 order/models.py:1753 -#: part/admin.py:55 part/models.py:962 -#: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_report.html:164 -#: stock/admin.py:225 templates/js/translated/company.js:1319 -#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2455 -#: templates/js/translated/purchase_order.js:2040 -#: templates/js/translated/purchase_order.js:2204 -#: templates/js/translated/return_order.js:779 -#: templates/js/translated/sales_order.js:1092 -#: templates/js/translated/sales_order.js:2023 -msgid "Link" -msgstr "Lien" - -#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 -#: stock/models.py:836 -msgid "Link to external URL" -msgstr "Lien vers une url externe" - -#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:341 -msgid "Comment" -msgstr "Commentaire" - -#: InvenTree/models.py:589 -msgid "File comment" -msgstr "Commentaire du fichier" - -#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 -#: common/models.py:2518 common/models.py:2742 common/models.py:2743 -#: common/models.py:2988 common/models.py:2989 part/models.py:3228 -#: part/models.py:3315 part/models.py:3408 part/models.py:3436 -#: plugin/models.py:259 plugin/models.py:260 -#: report/templates/report/inventree_test_report.html:105 -#: templates/js/translated/stock.js:3036 users/models.py:111 -msgid "User" -msgstr "Utilisateur" - -#: InvenTree/models.py:602 -msgid "upload date" -msgstr "date de chargement" - -#: InvenTree/models.py:624 -msgid "Filename must not be empty" -msgstr "Le nom de fichier ne doit pas être vide" - -#: InvenTree/models.py:635 -msgid "Invalid attachment directory" -msgstr "Répertoire de pièce jointe invalide" - -#: InvenTree/models.py:665 -#, python-brace-format -msgid "Filename contains illegal character '{c}'" -msgstr "Le nom de fichier contient le caractère illégal '{c}'" - -#: InvenTree/models.py:668 -msgid "Filename missing extension" -msgstr "Extension manquante du nom de fichier" - -#: InvenTree/models.py:677 -msgid "Attachment with this filename already exists" -msgstr "Une pièce jointe avec ce nom de fichier existe déjà" - -#: InvenTree/models.py:684 -msgid "Error renaming file" -msgstr "Erreur lors du renommage du fichier" - -#: InvenTree/models.py:860 +#: InvenTree/models.py:719 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:877 +#: InvenTree/models.py:736 msgid "Invalid choice" msgstr "Choix invalide" -#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 -#: common/serializers.py:403 company/models.py:614 machine/models.py:24 -#: part/models.py:898 part/models.py:3659 plugin/models.py:50 -#: report/models.py:149 stock/models.py:72 +#: InvenTree/models.py:766 common/models.py:2623 common/models.py:3036 +#: common/serializers.py:408 company/models.py:580 machine/models.py:24 +#: part/models.py:891 part/models.py:3639 plugin/models.py:51 +#: report/models.py:150 stock/models.py:73 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:83 @@ -501,25 +417,25 @@ msgstr "Choix invalide" #: templates/js/translated/company.js:724 #: templates/js/translated/company.js:913 #: templates/js/translated/company.js:1165 -#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 -#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1187 +#: templates/js/translated/part.js:1475 templates/js/translated/part.js:1611 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Nom" -#: InvenTree/models.py:913 build/models.py:218 -#: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:523 company/models.py:840 +#: InvenTree/models.py:772 build/models.py:220 +#: build/templates/build/detail.html:24 common/models.py:138 +#: company/models.py:509 company/models.py:808 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 order/models.py:289 -#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 -#: part/models.py:3674 part/templates/part/category.html:82 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:914 +#: part/models.py:3654 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:155 -#: report/models.py:509 report/models.py:535 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 #: report/templates/report/inventree_build_order_report.html:117 -#: stock/admin.py:55 stock/models.py:78 stock/templates/stock/location.html:125 +#: stock/admin.py:54 stock/models.py:79 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 @@ -528,10 +444,10 @@ msgstr "Nom" #: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 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:2354 -#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1239 +#: templates/js/translated/part.js:1484 templates/js/translated/part.js:1622 +#: templates/js/translated/part.js:1959 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2897 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1706 #: templates/js/translated/purchase_order.js:1849 @@ -544,149 +460,141 @@ msgstr "Nom" msgid "Description" msgstr "Description" -#: InvenTree/models.py:914 stock/models.py:79 +#: InvenTree/models.py:773 stock/models.py:80 msgid "Description (optional)" msgstr "Description (facultative)" -#: InvenTree/models.py:923 -msgid "parent" -msgstr "parent" - -#: InvenTree/models.py:929 templates/js/translated/part.js:2793 +#: InvenTree/models.py:788 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Chemin d'accès" -#: InvenTree/models.py:1035 +#: InvenTree/models.py:918 msgid "Markdown notes (optional)" msgstr "Notes Markdown (option)" -#: InvenTree/models.py:1064 +#: InvenTree/models.py:947 msgid "Barcode Data" msgstr "Données du code-barres" -#: InvenTree/models.py:1065 +#: InvenTree/models.py:948 msgid "Third party barcode data" msgstr "Données de code-barres tierces" -#: InvenTree/models.py:1071 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "Hash du code-barre" -#: InvenTree/models.py:1072 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "Hachage unique des données du code-barres" -#: InvenTree/models.py:1125 +#: InvenTree/models.py:1008 msgid "Existing barcode found" msgstr "Code-barres existant trouvé" -#: InvenTree/models.py:1168 +#: InvenTree/models.py:1051 msgid "Server Error" msgstr "Erreur serveur" -#: InvenTree/models.py:1169 +#: InvenTree/models.py:1052 msgid "An error has been logged by the server." msgstr "Une erreur a été loguée par le serveur." -#: InvenTree/serializers.py:62 part/models.py:4212 +#: InvenTree/serializers.py:63 part/models.py:4192 msgid "Must be a valid number" msgstr "Doit être un nombre valide" -#: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:3036 +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3001 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Devise" -#: InvenTree/serializers.py:102 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "Sélectionnez la devise à partir des options disponibles" -#: InvenTree/serializers.py:441 +#: InvenTree/serializers.py:442 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:453 +#: InvenTree/serializers.py:454 msgid "Only superusers can create new users" msgstr "Seuls les super-utilisateurs peuvent créer de nouveaux utilisateurs" -#: InvenTree/serializers.py:472 +#: InvenTree/serializers.py:473 msgid "Your account has been created." msgstr "Votre compte a été créé." -#: InvenTree/serializers.py:474 +#: InvenTree/serializers.py:475 msgid "Please use the password reset function to login" msgstr "Veuillez utiliser la fonction de réinitialisation du mot de passe pour vous connecter" -#: InvenTree/serializers.py:481 +#: InvenTree/serializers.py:482 msgid "Welcome to InvenTree" msgstr "Bienvenue dans InvenTree" -#: InvenTree/serializers.py:542 -msgid "Filename" -msgstr "Nom du fichier" - -#: InvenTree/serializers.py:576 +#: InvenTree/serializers.py:540 msgid "Invalid value" msgstr "Valeur non valide" -#: InvenTree/serializers.py:596 +#: InvenTree/serializers.py:560 msgid "Data File" msgstr "Fichier de données" -#: InvenTree/serializers.py:597 +#: InvenTree/serializers.py:561 msgid "Select data file for upload" msgstr "Sélectionnez le fichier de données à envoyer" -#: InvenTree/serializers.py:614 +#: InvenTree/serializers.py:578 msgid "Unsupported file type" msgstr "Format de fichier non supporté" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:584 msgid "File is too large" msgstr "Fichier trop volumineux" -#: InvenTree/serializers.py:641 +#: InvenTree/serializers.py:605 msgid "No columns found in file" msgstr "Pas de colonnes trouvées dans le fichier" -#: InvenTree/serializers.py:644 +#: InvenTree/serializers.py:608 msgid "No data rows found in file" msgstr "Par de lignes de données trouvées dans le fichier" -#: InvenTree/serializers.py:757 +#: InvenTree/serializers.py:721 msgid "No data rows provided" msgstr "Pas de lignes de données fournies" -#: InvenTree/serializers.py:760 +#: InvenTree/serializers.py:724 msgid "No data columns supplied" msgstr "Pas de colonne de données fournie" -#: InvenTree/serializers.py:827 +#: InvenTree/serializers.py:791 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Colonne requise manquante : {name}" -#: InvenTree/serializers.py:836 +#: InvenTree/serializers.py:800 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Colonne duliquée : '{col}'" -#: InvenTree/serializers.py:859 +#: InvenTree/serializers.py:840 msgid "Remote Image" msgstr "Images distantes" -#: InvenTree/serializers.py:860 +#: InvenTree/serializers.py:841 msgid "URL of remote image file" msgstr "URL du fichier image distant" -#: InvenTree/serializers.py:878 +#: InvenTree/serializers.py:859 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/status.py:66 part/serializers.py:1178 +#: InvenTree/status.py:66 part/serializers.py:1174 msgid "Background worker check failed" msgstr "Échec de la vérification du processus d'arrière-plan" @@ -698,27 +606,27 @@ msgstr "Backend d'email non configuré" msgid "InvenTree system health checks failed" msgstr "Échec des contrôles de santé du système" -#: InvenTree/templatetags/inventree_extras.py:183 +#: InvenTree/templatetags/inventree_extras.py:184 msgid "Unknown database" msgstr "Base de données inconnue" -#: InvenTree/validators.py:31 InvenTree/validators.py:33 +#: InvenTree/validators.py:32 InvenTree/validators.py:34 msgid "Invalid physical unit" msgstr "Unité invalide" -#: InvenTree/validators.py:39 +#: InvenTree/validators.py:40 msgid "Not a valid currency code" msgstr "Code de devise invalide" -#: InvenTree/validators.py:121 InvenTree/validators.py:137 +#: InvenTree/validators.py:118 InvenTree/validators.py:134 msgid "Overage value must not be negative" msgstr "La valeur de surplus ne doit pas être négative" -#: InvenTree/validators.py:139 +#: InvenTree/validators.py:136 msgid "Overage must not exceed 100%" msgstr "Le surplus ne doit pas dépasser 100%" -#: InvenTree/validators.py:145 +#: InvenTree/validators.py:142 msgid "Invalid value for overage" msgstr "Valeur invalide pour le dépassement" @@ -750,14 +658,14 @@ 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:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: build/api.py:299 part/models.py:4070 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "Consommable" -#: build/api.py:300 part/models.py:4084 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4064 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2529 #: templates/js/translated/table_filters.js:186 @@ -778,30 +686,30 @@ msgstr "Suivi" msgid "Allocated" msgstr "Allouée" -#: build/api.py:311 company/models.py:904 company/serializers.py:383 +#: build/api.py:311 company/models.py:872 company/serializers.py:359 #: 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:2561 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:234 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 -#: templates/js/translated/part.js:699 +#: templates/js/translated/part.js:693 templates/js/translated/part.js:695 +#: templates/js/translated/part.js:700 #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:575 msgid "Available" msgstr "Disponible" -#: build/models.py:83 build/templates/build/build_base.html:9 +#: build/models.py:85 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_report.html:105 -#: stock/serializers.py:83 templates/email/build_order_completed.html:16 +#: stock/serializers.py:82 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:2892 msgid "Build Order" msgstr "Ordre de Fabrication" -#: build/models.py:84 build/templates/build/build_base.html:13 +#: build/models.py:86 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 @@ -812,25 +720,25 @@ msgstr "Ordre de Fabrication" msgid "Build Orders" msgstr "Ordres de Fabrication" -#: build/models.py:131 +#: build/models.py:133 msgid "Invalid choice for parent build" msgstr "Choix invalide pour la fabrication parente" -#: build/models.py:142 order/models.py:240 +#: build/models.py:144 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "Un utilisateur ou un groupe responsable doit être spécifié" -#: build/models.py:148 +#: build/models.py:150 msgid "Build order part cannot be changed" msgstr "La pièce de commande de construction ne peut pas être changée" -#: build/models.py:209 +#: build/models.py:211 msgid "Build Order Reference" msgstr "Référence de l' Ordre de Fabrication" -#: build/models.py:210 order/models.py:463 order/models.py:928 -#: order/models.py:1325 order/models.py:2056 part/admin.py:419 -#: part/models.py:4105 part/templates/part/upload_bom.html:54 +#: build/models.py:212 order/models.py:463 order/models.py:926 +#: order/models.py:1289 order/models.py:2020 part/admin.py:411 +#: part/models.py:4085 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_purchase_order_report.html:28 #: report/templates/report/inventree_return_order_report.html:26 @@ -844,27 +752,27 @@ msgstr "Référence de l' Ordre de Fabrication" msgid "Reference" msgstr "Référence" -#: build/models.py:221 +#: build/models.py:223 msgid "Brief description of the build (optional)" msgstr "Brève description de la fabrication (optionnel)" -#: build/models.py:229 build/templates/build/build_base.html:183 +#: build/models.py:231 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Fabrication parente" -#: build/models.py:230 +#: build/models.py:232 msgid "BuildOrder to which this build is allocated" msgstr "BuildOrder associé a cette fabrication" -#: build/models.py:235 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 -#: order/models.py:1450 order/models.py:1595 order/models.py:1596 -#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 -#: part/models.py:3191 part/models.py:3335 part/models.py:3358 -#: part/models.py:3379 part/models.py:3401 part/models.py:3511 -#: part/models.py:3807 part/models.py:3963 part/models.py:4056 -#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 +#: build/models.py:237 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1026 order/api.py:805 +#: order/models.py:1414 order/models.py:1559 order/models.py:1560 +#: part/api.py:1494 part/api.py:1788 part/models.py:395 part/models.py:3012 +#: part/models.py:3156 part/models.py:3303 part/models.py:3324 +#: part/models.py:3346 part/models.py:3477 part/models.py:3787 +#: part/models.py:3943 part/models.py:4036 part/models.py:4395 +#: part/serializers.py:1120 part/serializers.py:1726 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -875,8 +783,8 @@ msgstr "BuildOrder associé a cette fabrication" #: report/templates/report/inventree_return_order_report.html:24 #: report/templates/report/inventree_sales_order_report.html:27 #: report/templates/report/inventree_stock_location_report.html:102 -#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 -#: stock/serializers.py:818 templates/InvenTree/search.html:82 +#: stock/serializers.py:109 stock/serializers.py:157 stock/serializers.py:423 +#: stock/serializers.py:820 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 @@ -889,8 +797,8 @@ msgstr "BuildOrder associé a cette fabrication" #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 -#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2323 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:1944 templates/js/translated/part.js:2016 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 #: templates/js/translated/purchase_order.js:751 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1848 @@ -908,107 +816,107 @@ msgstr "BuildOrder associé a cette fabrication" msgid "Part" msgstr "Pièce" -#: build/models.py:243 +#: build/models.py:245 msgid "Select part to build" msgstr "Sélectionnez la pièce à construire" -#: build/models.py:248 +#: build/models.py:250 msgid "Sales Order Reference" msgstr "Bon de commande de référence" -#: build/models.py:252 +#: build/models.py:254 msgid "SalesOrder to which this build is allocated" msgstr "Commande de vente à laquelle cette construction est allouée" -#: build/models.py:257 build/serializers.py:1000 +#: build/models.py:259 build/serializers.py:999 #: templates/js/translated/build.js:1731 #: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "Emplacement d'origine" -#: build/models.py:261 +#: build/models.py:263 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:266 +#: build/models.py:268 msgid "Destination Location" msgstr "Emplacement cible" -#: build/models.py:270 +#: build/models.py:272 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:274 +#: build/models.py:276 msgid "Build Quantity" msgstr "Quantité a fabriquer" -#: build/models.py:277 +#: build/models.py:279 msgid "Number of stock items to build" msgstr "Nombre de stock items à construire" -#: build/models.py:281 +#: build/models.py:283 msgid "Completed items" msgstr "Articles terminés" -#: build/models.py:283 +#: build/models.py:285 msgid "Number of stock items which have been completed" msgstr "Nombre d'articles de stock qui ont été terminés" -#: build/models.py:287 +#: build/models.py:289 msgid "Build Status" msgstr "État de la construction" -#: build/models.py:291 +#: build/models.py:293 msgid "Build status code" msgstr "Code de statut de construction" -#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 -#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 +#: build/models.py:302 build/serializers.py:286 order/serializers.py:580 +#: stock/models.py:838 stock/serializers.py:74 stock/serializers.py:1458 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Code de lot" -#: build/models.py:304 build/serializers.py:288 +#: build/models.py:306 build/serializers.py:287 msgid "Batch code for this build output" msgstr "Code de lot pour ce build output" -#: build/models.py:307 order/models.py:316 order/serializers.py:120 -#: part/models.py:1122 part/templates/part/part_base.html:310 +#: build/models.py:309 order/models.py:316 order/serializers.py:119 +#: part/models.py:1115 part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:338 #: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "Date de création" -#: build/models.py:311 +#: build/models.py:313 msgid "Target completion date" msgstr "Date d'achèvement cible" -#: build/models.py:312 +#: build/models.py:314 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:315 order/models.py:521 order/models.py:2101 +#: build/models.py:317 order/models.py:521 order/models.py:2065 #: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "Date d'achèvement" -#: build/models.py:321 +#: build/models.py:323 msgid "completed by" msgstr "achevé par" -#: build/models.py:329 templates/js/translated/build.js:2207 +#: build/models.py:331 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "Émis par" -#: build/models.py:330 +#: build/models.py:332 msgid "User who issued this build order" msgstr "Utilisateur ayant émis cette commande de construction" -#: build/models.py:338 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:145 +#: build/models.py:340 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:147 #: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:232 part/models.py:1139 +#: order/templates/order/sales_order_base.html:232 part/models.py:1132 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_report.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 @@ -1019,31 +927,36 @@ msgstr "Utilisateur ayant émis cette commande de construction" msgid "Responsible" msgstr "Responsable" -#: build/models.py:339 +#: build/models.py:341 msgid "User or group responsible for this build order" msgstr "Utilisateur ou groupe responsable de cet ordre de construction" -#: build/models.py:344 build/templates/build/detail.html:108 +#: build/models.py:346 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:184 -#: part/templates/part/part_base.html:383 stock/models.py:836 +#: part/templates/part/part_base.html:383 stock/models.py:834 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "Lien Externe" -#: build/models.py:349 +#: build/models.py:347 common/models.py:3178 part/models.py:956 +#: stock/models.py:834 +msgid "Link to external URL" +msgstr "Lien vers une url externe" + +#: build/models.py:351 msgid "Build Priority" msgstr "Priorité de fabrication" -#: build/models.py:352 +#: build/models.py:354 msgid "Priority of this build order" msgstr "Priorité de cet ordre de fabrication" -#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: build/models.py:361 common/models.py:131 order/admin.py:18 #: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 #: templates/js/translated/build.js:2144 #: templates/js/translated/purchase_order.js:1710 @@ -1054,65 +967,65 @@ msgstr "Priorité de cet ordre de fabrication" msgid "Project Code" msgstr "Code du projet" -#: build/models.py:360 +#: build/models.py:362 msgid "Project code for this build order" msgstr "Code de projet pour cet ordre de construction" -#: build/models.py:593 build/models.py:658 +#: build/models.py:595 build/models.py:660 msgid "Failed to offload task to complete build allocations" msgstr "Échec du déchargement de la tâche pour terminer les allocations de construction" -#: build/models.py:615 +#: build/models.py:617 #, python-brace-format msgid "Build order {build} has been completed" msgstr "La commande de construction {build} a été effectuée" -#: build/models.py:621 +#: build/models.py:623 msgid "A build order has been completed" msgstr "Une commande de construction a été effectuée" -#: build/models.py:847 build/models.py:932 +#: build/models.py:849 build/models.py:934 msgid "No build output specified" msgstr "Pas d'ordre de production défini" -#: build/models.py:850 +#: build/models.py:852 msgid "Build output is already completed" msgstr "L'ordre de production a déjà été réalisé" -#: build/models.py:853 +#: build/models.py:855 msgid "Build output does not match Build Order" msgstr "L'ordre de production de correspond pas à l'ordre de commande" -#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 -#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 -#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 -#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 +#: build/models.py:938 build/serializers.py:219 build/serializers.py:268 +#: build/serializers.py:866 order/models.py:559 order/serializers.py:432 +#: order/serializers.py:575 part/serializers.py:1484 part/serializers.py:1884 +#: stock/models.py:677 stock/models.py:1495 stock/serializers.py:603 msgid "Quantity must be greater than zero" msgstr "La quantité doit être supérieure à zéro" -#: build/models.py:941 build/serializers.py:225 +#: build/models.py:943 build/serializers.py:224 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:1001 build/serializers.py:548 +#: build/models.py:1003 build/serializers.py:547 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "La sortie de compilation {serial} n'a pas réussi tous les tests requis" -#: build/models.py:1352 +#: build/models.py:1344 msgid "Build Order Line Item" msgstr "" -#: build/models.py:1377 +#: build/models.py:1369 msgid "Build object" msgstr "Création de l'objet" -#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 -#: build/serializers.py:254 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2539 -#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 -#: part/forms.py:48 part/models.py:3205 part/models.py:4078 +#: build/models.py:1383 build/models.py:1639 build/serializers.py:206 +#: build/serializers.py:253 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2509 +#: order/models.py:1272 order/models.py:1931 order/serializers.py:1327 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3170 part/models.py:4058 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1121,8 +1034,8 @@ msgstr "Création de l'objet" #: report/templates/report/inventree_sales_order_report.html:29 #: report/templates/report/inventree_stock_location_report.html:104 #: report/templates/report/inventree_test_report.html:90 -#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 -#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:125 stock/serializers.py:165 stock/serializers.py:594 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1133,8 +1046,8 @@ msgstr "Création de l'objet" #: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 #: templates/js/translated/model_renderers.js:236 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:962 +#: templates/js/translated/part.js:1812 templates/js/translated/part.js:3342 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1154,38 +1067,38 @@ msgstr "Création de l'objet" msgid "Quantity" msgstr "Quantité" -#: build/models.py:1392 +#: build/models.py:1384 msgid "Required quantity for build order" msgstr "Quantité requise pour la commande de construction" -#: build/models.py:1472 +#: build/models.py:1464 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:1481 +#: build/models.py:1473 #, 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:1491 order/models.py:1918 +#: build/models.py:1483 order/models.py:1882 msgid "Stock item is over-allocated" msgstr "L'article de stock est suralloué" -#: build/models.py:1497 order/models.py:1921 +#: build/models.py:1489 order/models.py:1885 msgid "Allocation quantity must be greater than zero" msgstr "La quantité allouée doit être supérieure à zéro" -#: build/models.py:1503 +#: build/models.py:1495 msgid "Quantity must be 1 for serialized stock" msgstr "La quantité doit être de 1 pour stock sérialisé" -#: build/models.py:1562 +#: build/models.py:1554 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:1634 build/serializers.py:847 order/serializers.py:1183 -#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 -#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: build/models.py:1626 build/serializers.py:846 order/serializers.py:1171 +#: order/serializers.py:1192 stock/models.py:358 stock/serializers.py:91 +#: stock/serializers.py:697 stock/serializers.py:1177 stock/serializers.py:1289 #: stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 @@ -1201,70 +1114,70 @@ msgstr "L'article de stock sélectionné ne correspond pas à la ligne BOM" msgid "Stock Item" msgstr "Article en stock" -#: build/models.py:1635 +#: build/models.py:1627 msgid "Source stock item" msgstr "Stock d'origine de l'article" -#: build/models.py:1648 +#: build/models.py:1640 msgid "Stock quantity to allocate to build" msgstr "Quantité de stock à allouer à la construction" -#: build/models.py:1656 +#: build/models.py:1648 msgid "Install into" msgstr "Installer dans" -#: build/models.py:1657 +#: build/models.py:1649 msgid "Destination stock item" msgstr "Stock de destination de l'article" -#: build/serializers.py:157 build/serializers.py:876 +#: build/serializers.py:156 build/serializers.py:875 #: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "Sortie d'assemblage" -#: build/serializers.py:169 +#: build/serializers.py:168 msgid "Build output does not match the parent build" msgstr "L'ordre de production ne correspond pas à l'ordre parent" -#: build/serializers.py:173 +#: build/serializers.py:172 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:177 +#: build/serializers.py:176 msgid "This build output has already been completed" msgstr "Cet ordre de production a déjà été produit" -#: build/serializers.py:188 +#: build/serializers.py:187 msgid "This build output is not fully allocated" msgstr "Cet ordre de production n'est pas complètement attribué" -#: build/serializers.py:208 build/serializers.py:255 +#: build/serializers.py:207 build/serializers.py:254 msgid "Enter quantity for build output" msgstr "Entrer la quantité désiré pour la fabrication" -#: build/serializers.py:276 +#: build/serializers.py:275 msgid "Integer quantity required for trackable parts" msgstr "Quantité entière requise pour les pièces à suivre" -#: build/serializers.py:279 +#: build/serializers.py:278 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:294 order/serializers.py:589 order/serializers.py:1343 -#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:293 order/serializers.py:588 order/serializers.py:1331 +#: stock/serializers.py:614 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Numéros de série" -#: build/serializers.py:295 +#: build/serializers.py:294 msgid "Enter serial numbers for build outputs" msgstr "Entrer les numéros de séries pour la fabrication" -#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 -#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 -#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 -#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 -#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 +#: build/serializers.py:299 build/serializers.py:440 build/serializers.py:512 +#: order/serializers.py:564 order/serializers.py:672 order/serializers.py:1656 +#: part/serializers.py:1140 stock/serializers.py:100 stock/serializers.py:625 +#: stock/serializers.py:785 stock/serializers.py:881 stock/serializers.py:1321 +#: stock/serializers.py:1577 stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:1001 #: templates/js/translated/build.js:2372 @@ -1280,54 +1193,54 @@ msgstr "Entrer les numéros de séries pour la fabrication" msgid "Location" msgstr "Emplacement" -#: build/serializers.py:301 +#: build/serializers.py:300 msgid "Stock location for build output" msgstr "" -#: build/serializers.py:315 +#: build/serializers.py:314 msgid "Auto Allocate Serial Numbers" msgstr "Allouer automatiquement les numéros de série" -#: build/serializers.py:316 +#: build/serializers.py:315 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:331 +#: build/serializers.py:330 msgid "Serial numbers must be provided for trackable parts" -msgstr "" +msgstr "Les numéros de série doivent être fournis pour les pièces traçables" -#: build/serializers.py:356 stock/api.py:1031 +#: build/serializers.py:355 stock/api.py:1041 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:403 build/serializers.py:465 build/serializers.py:554 +#: build/serializers.py:402 build/serializers.py:464 build/serializers.py:553 msgid "A list of build outputs must be provided" msgstr "Une liste d'ordre de production doit être fourni" -#: build/serializers.py:442 +#: build/serializers.py:441 msgid "Stock location for scrapped outputs" msgstr "Emplacement du stock pour les sorties épuisées" -#: build/serializers.py:448 +#: build/serializers.py:447 msgid "Discard Allocations" msgstr "Ignorer les allocations" -#: build/serializers.py:449 +#: build/serializers.py:448 msgid "Discard any stock allocations for scrapped outputs" msgstr "Abandonner les allocations de stock pour les sorties abandonnées" -#: build/serializers.py:454 +#: build/serializers.py:453 msgid "Reason for scrapping build output(s)" msgstr "Motif de l'élimination des produits de construction(s)" -#: build/serializers.py:514 +#: build/serializers.py:513 msgid "Location for completed build outputs" msgstr "Emplacement des ordres de production achevés" -#: build/serializers.py:520 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:952 -#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 -#: stock/serializers.py:930 stock/serializers.py:1469 +#: build/serializers.py:519 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2044 order/serializers.py:596 stock/admin.py:164 +#: stock/serializers.py:932 stock/serializers.py:1465 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 @@ -1339,188 +1252,188 @@ msgstr "Emplacement des ordres de production achevés" msgid "Status" msgstr "État" -#: build/serializers.py:526 +#: build/serializers.py:525 msgid "Accept Incomplete Allocation" msgstr "Accepter l'allocation incomplète" -#: build/serializers.py:527 +#: build/serializers.py:526 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:612 +#: build/serializers.py:611 msgid "Consume Allocated Stock" msgstr "Consommation du stock alloué" -#: build/serializers.py:613 +#: build/serializers.py:612 msgid "Consume any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:619 +#: build/serializers.py:618 msgid "Remove Incomplete Outputs" msgstr "Retirer les sorties incomplètes" -#: build/serializers.py:620 +#: build/serializers.py:619 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:647 +#: build/serializers.py:646 msgid "Not permitted" msgstr "Non permis" -#: build/serializers.py:648 +#: build/serializers.py:647 msgid "Accept as consumed by this build order" msgstr "Accepter comme consommé par cet ordre de construction" -#: build/serializers.py:649 +#: build/serializers.py:648 msgid "Deallocate before completing this build order" msgstr "Désaffecter avant de terminer cette commande de fabrication" -#: build/serializers.py:679 +#: build/serializers.py:678 msgid "Overallocated Stock" msgstr "Stock suralloué" -#: build/serializers.py:681 +#: build/serializers.py:680 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:691 +#: build/serializers.py:690 msgid "Some stock items have been overallocated" msgstr "Certains articles de stock ont été suralloués" -#: build/serializers.py:696 +#: build/serializers.py:695 msgid "Accept Unallocated" msgstr "Accepter les non-alloués" -#: build/serializers.py:697 +#: build/serializers.py:696 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:707 templates/js/translated/build.js:315 +#: build/serializers.py:706 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:712 order/serializers.py:301 order/serializers.py:1246 +#: build/serializers.py:711 order/serializers.py:300 order/serializers.py:1234 msgid "Accept Incomplete" msgstr "Accepter les incomplèts" -#: build/serializers.py:713 +#: build/serializers.py:712 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:723 templates/js/translated/build.js:319 +#: build/serializers.py:722 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:732 templates/js/translated/build.js:303 +#: build/serializers.py:731 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:770 +#: build/serializers.py:769 msgid "Build Line" msgstr "Chaîne d'assemblage" -#: build/serializers.py:780 +#: build/serializers.py:779 msgid "Build output" msgstr "Sortie d'assemblage" -#: build/serializers.py:788 +#: build/serializers.py:787 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:824 +#: build/serializers.py:823 msgid "Build Line Item" msgstr "Élément de la ligne de construction" -#: build/serializers.py:838 +#: build/serializers.py:837 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:853 stock/serializers.py:1194 +#: build/serializers.py:852 stock/serializers.py:1190 msgid "Item must be in stock" msgstr "L'article doit être en stock" -#: build/serializers.py:901 order/serializers.py:1237 +#: build/serializers.py:900 order/serializers.py:1225 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Quantité disponible ({q}) dépassée" -#: build/serializers.py:907 +#: build/serializers.py:906 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:914 +#: build/serializers.py:913 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:938 order/serializers.py:1489 +#: build/serializers.py:937 order/serializers.py:1477 msgid "Allocation items must be provided" msgstr "Les articles d'allocation doivent être fournis" -#: build/serializers.py:1001 +#: build/serializers.py:1000 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:1009 +#: build/serializers.py:1008 msgid "Exclude Location" msgstr "Emplacements exclus" -#: build/serializers.py:1010 +#: build/serializers.py:1009 msgid "Exclude stock items from this selected location" msgstr "Exclure les articles de stock de cet emplacement sélectionné" -#: build/serializers.py:1015 +#: build/serializers.py:1014 msgid "Interchangeable Stock" msgstr "Stock interchangeable" -#: build/serializers.py:1016 +#: build/serializers.py:1015 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:1021 +#: build/serializers.py:1020 msgid "Substitute Stock" msgstr "Stock de substitution" -#: build/serializers.py:1022 +#: build/serializers.py:1021 msgid "Allow allocation of substitute parts" msgstr "Autoriser l'allocation de pièces de remplacement" -#: build/serializers.py:1027 +#: build/serializers.py:1026 msgid "Optional Items" msgstr "Objets Optionnels" -#: build/serializers.py:1028 +#: build/serializers.py:1027 msgid "Allocate optional BOM items to build order" msgstr "Affecter des éléments de nomenclature facultatifs à l'ordre de fabrication" -#: build/serializers.py:1050 +#: build/serializers.py:1049 msgid "Failed to start auto-allocation task" msgstr "" -#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 -#: stock/api.py:794 +#: build/serializers.py:1139 part/models.py:3953 part/models.py:4387 +#: stock/api.py:804 msgid "BOM Item" msgstr "Article du BOM" -#: build/serializers.py:1149 templates/js/translated/index.js:130 +#: build/serializers.py:1148 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "Stock alloué" -#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:832 part/serializers.py:1506 +#: build/serializers.py:1153 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:828 part/serializers.py:1502 #: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 -#: templates/js/translated/build.js:2613 templates/js/translated/part.js:709 -#: templates/js/translated/part.js:2148 +#: templates/js/translated/build.js:2613 templates/js/translated/part.js:710 +#: templates/js/translated/part.js:2149 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "En Commande" -#: build/serializers.py:1159 part/serializers.py:1508 +#: build/serializers.py:1158 part/serializers.py:1504 #: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "En Production" -#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 +#: build/serializers.py:1163 part/bom.py:172 part/serializers.py:1527 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1929 msgid "Available Stock" @@ -1544,7 +1457,7 @@ msgstr "Annulé" #: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 #: order/status_codes.py:44 order/status_codes.py:69 #: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:165 report/models.py:443 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 msgid "Complete" msgstr "Terminé" @@ -1674,11 +1587,11 @@ 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:309 -#: order/models.py:1343 order/templates/order/order_base.html:186 +#: order/models.py:1307 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:196 #: report/templates/report/inventree_build_order_report.html:125 -#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1831 #: templates/js/translated/purchase_order.js:1739 #: templates/js/translated/purchase_order.js:2147 #: templates/js/translated/return_order.js:346 @@ -1711,8 +1624,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:1511 order/models.py:847 -#: order/models.py:1587 order/models.py:1701 order/models.py:1855 +#: build/templates/build/detail.html:101 order/api.py:1463 order/models.py:845 +#: order/models.py:1551 order/models.py:1665 order/models.py:1819 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_report.html:135 @@ -1762,7 +1675,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:1479 +#: build/templates/build/detail.html:49 order/models.py:1443 #: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "Destination" @@ -1775,7 +1688,7 @@ msgstr "Stockage de destination non défini" msgid "Allocated Parts" msgstr "Pièces allouées" -#: build/templates/build/detail.html:80 stock/admin.py:163 +#: build/templates/build/detail.html:80 stock/admin.py:162 #: stock/templates/stock/item_base.html:162 #: templates/js/translated/build.js:1380 #: templates/js/translated/model_renderers.js:241 @@ -1894,11 +1807,11 @@ msgstr "Pieces jointes" msgid "Build Notes" msgstr "Notes de construction" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "Allocation terminée" -#: build/templates/build/detail.html:436 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "Toutes les lignes ont été entièrement attribuées" @@ -1914,6 +1827,34 @@ msgstr "Détails de la commande de construction" msgid "Incomplete Outputs" msgstr "Sorties incomplètes" +#: common/api.py:689 +msgid "Is Link" +msgstr "" + +#: common/api.py:697 +msgid "Is File" +msgstr "" + +#: common/api.py:739 +msgid "User does not have permission to delete this attachment" +msgstr "" + +#: common/currency.py:130 +msgid "Invalid currency code" +msgstr "Code de devise invalide" + +#: common/currency.py:132 +msgid "Duplicate currency code" +msgstr "Code de devise en double" + +#: common/currency.py:137 +msgid "No valid currency codes provided" +msgstr "Aucun code de devise valide fourni" + +#: common/currency.py:154 +msgid "No plugin" +msgstr "Pas de plugin" + #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1952,1509 +1893,1512 @@ msgstr "{name.title()} Fichier" msgid "Select {name} file to upload" msgstr "Sélectionner le fichier {name} à uploader" -#: common/models.py:71 +#: common/models.py:73 msgid "Updated" msgstr "Mise à jour" -#: common/models.py:72 +#: common/models.py:74 msgid "Timestamp of last update" msgstr "Date de la dernière mise à jour" -#: common/models.py:105 +#: common/models.py:107 msgid "Site URL is locked by configuration" msgstr "L'URL du site est verrouillée par configuration" -#: common/models.py:130 +#: common/models.py:132 msgid "Unique project code" msgstr "Code projet unique" -#: common/models.py:137 +#: common/models.py:139 msgid "Project description" msgstr "Description du projet" -#: common/models.py:146 +#: common/models.py:148 msgid "User or group responsible for this project" msgstr "Utilisateur ou groupe responsable de ce projet" -#: common/models.py:766 +#: common/models.py:765 msgid "Settings key (must be unique - case insensitive)" msgstr "Clé du paramètre (doit être unique - insensible à la casse)" -#: common/models.py:770 +#: common/models.py:769 msgid "Settings value" msgstr "Valeur du paramètre" -#: common/models.py:822 +#: common/models.py:821 msgid "Chosen value is not a valid option" msgstr "La valeur choisie n'est pas une option valide" -#: common/models.py:838 +#: common/models.py:837 msgid "Value must be a boolean value" msgstr "La valeur doit être une valeur booléenne" -#: common/models.py:846 +#: common/models.py:845 msgid "Value must be an integer value" msgstr "La valeur doit être un nombre entier" -#: common/models.py:883 +#: common/models.py:882 msgid "Key string must be unique" msgstr "La chaîne de caractères constituant la clé doit être unique" -#: common/models.py:1115 +#: common/models.py:1114 msgid "No group" msgstr "Pas de groupe" -#: common/models.py:1158 -msgid "An empty domain is not allowed." -msgstr "Un domaine vide n'est pas autorisé." - -#: common/models.py:1160 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "Nom de domaine invalide : {domain}" - -#: common/models.py:1172 -msgid "No plugin" -msgstr "Pas de plugin" - -#: common/models.py:1260 +#: common/models.py:1213 msgid "Restart required" msgstr "Redémarrage nécessaire" -#: common/models.py:1262 +#: common/models.py:1215 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:1269 +#: common/models.py:1222 msgid "Pending migrations" msgstr "Migration en attente" -#: common/models.py:1270 +#: common/models.py:1223 msgid "Number of pending database migrations" msgstr "Nombre de migrations de base de données en attente" -#: common/models.py:1275 +#: common/models.py:1228 msgid "Server Instance Name" msgstr "Nom de l'instance du serveur" -#: common/models.py:1277 +#: common/models.py:1230 msgid "String descriptor for the server instance" msgstr "Chaîne de caractères descriptive pour l'instance serveur" -#: common/models.py:1281 +#: common/models.py:1234 msgid "Use instance name" msgstr "Utiliser le nom de l'instance" -#: common/models.py:1282 +#: common/models.py:1235 msgid "Use the instance name in the title-bar" msgstr "Utiliser le nom de l’instance dans la barre de titre" -#: common/models.py:1287 +#: common/models.py:1240 msgid "Restrict showing `about`" msgstr "Limiter l'affichage de `about`" -#: common/models.py:1288 +#: common/models.py:1241 msgid "Show the `about` modal only to superusers" msgstr "Afficher la modale `about` uniquement aux super-utilisateurs" -#: common/models.py:1293 company/models.py:108 company/models.py:109 +#: common/models.py:1246 company/models.py:111 company/models.py:112 msgid "Company name" msgstr "Nom de la société" -#: common/models.py:1294 +#: common/models.py:1247 msgid "Internal company name" msgstr "Nom de société interne" -#: common/models.py:1298 +#: common/models.py:1251 msgid "Base URL" msgstr "URL de base" -#: common/models.py:1299 +#: common/models.py:1252 msgid "Base URL for server instance" msgstr "URL de base pour l'instance serveur" -#: common/models.py:1305 +#: common/models.py:1258 msgid "Default Currency" msgstr "Devise par défaut" -#: common/models.py:1306 +#: common/models.py:1259 msgid "Select base currency for pricing calculations" msgstr "Sélectionnez la devise de base pour les calculs de prix" -#: common/models.py:1312 +#: common/models.py:1265 +msgid "Supported Currencies" +msgstr "Devises supportées" + +#: common/models.py:1266 +msgid "List of supported currency codes" +msgstr "Liste des codes de devises supportés" + +#: common/models.py:1272 msgid "Currency Update Interval" msgstr "Intervalle de mise à jour des devises" -#: common/models.py:1314 +#: common/models.py:1274 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:1317 common/models.py:1373 common/models.py:1386 -#: common/models.py:1394 common/models.py:1403 common/models.py:1412 -#: common/models.py:1620 common/models.py:1642 common/models.py:1757 -#: common/models.py:2076 +#: common/models.py:1277 common/models.py:1333 common/models.py:1346 +#: common/models.py:1354 common/models.py:1363 common/models.py:1372 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:2046 msgid "days" msgstr "jours" -#: common/models.py:1321 +#: common/models.py:1281 msgid "Currency Update Plugin" msgstr "Plugin de mise à jour de devise" -#: common/models.py:1322 +#: common/models.py:1282 msgid "Currency update plugin to use" msgstr "Plugin de mise à jour des devises à utiliser" -#: common/models.py:1327 +#: common/models.py:1287 msgid "Download from URL" msgstr "Télécharger depuis l'URL" -#: common/models.py:1329 +#: common/models.py:1289 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:1335 +#: common/models.py:1295 msgid "Download Size Limit" msgstr "Limite du volume de téléchargement" -#: common/models.py:1336 +#: common/models.py:1296 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:1342 +#: common/models.py:1302 msgid "User-agent used to download from URL" msgstr "Agent utilisateur utilisé pour télécharger depuis l'URL" -#: common/models.py:1344 +#: common/models.py:1304 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:1349 +#: common/models.py:1309 msgid "Strict URL Validation" msgstr "Validation stricte d'URL" -#: common/models.py:1350 +#: common/models.py:1310 msgid "Require schema specification when validating URLs" msgstr "Spécification du schéma nécessaire lors de la validation des URL" -#: common/models.py:1355 +#: common/models.py:1315 msgid "Require confirm" msgstr "Confirmation requise" -#: common/models.py:1356 +#: common/models.py:1316 msgid "Require explicit user confirmation for certain action." msgstr "Exiger une confirmation explicite de l’utilisateur pour certaines actions." -#: common/models.py:1361 +#: common/models.py:1321 msgid "Tree Depth" msgstr "Profondeur de l'arborescence" -#: common/models.py:1363 +#: common/models.py:1323 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:1369 +#: common/models.py:1329 msgid "Update Check Interval" msgstr "Intervalle de vérification des mises à jour" -#: common/models.py:1370 +#: common/models.py:1330 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:1376 +#: common/models.py:1336 msgid "Automatic Backup" msgstr "Backup automatique" -#: common/models.py:1377 +#: common/models.py:1337 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:1382 +#: common/models.py:1342 msgid "Auto Backup Interval" msgstr "Intervalle de sauvegarde automatique" -#: common/models.py:1383 +#: common/models.py:1343 msgid "Specify number of days between automated backup events" msgstr "Spécifiez le nombre de jours entre les sauvegardes automatique" -#: common/models.py:1389 +#: common/models.py:1349 msgid "Task Deletion Interval" msgstr "Intervalle de suppression des tâches" -#: common/models.py:1391 +#: common/models.py:1351 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:1398 +#: common/models.py:1358 msgid "Error Log Deletion Interval" msgstr "Intervalle de suppression du journal d'erreur" -#: common/models.py:1400 +#: common/models.py:1360 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:1407 +#: common/models.py:1367 msgid "Notification Deletion Interval" msgstr "Intervalle de suppression du journal de notification" -#: common/models.py:1409 +#: common/models.py:1369 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:1416 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1376 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Support des code-barres" -#: common/models.py:1417 +#: common/models.py:1377 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:1422 +#: common/models.py:1382 msgid "Barcode Input Delay" msgstr "Délai d'entrée du code-barres" -#: common/models.py:1423 +#: common/models.py:1383 msgid "Barcode input processing delay time" msgstr "Délai de traitement du code-barres" -#: common/models.py:1429 +#: common/models.py:1389 msgid "Barcode Webcam Support" msgstr "Prise en charge de la webcam code-barres" -#: common/models.py:1430 +#: common/models.py:1390 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:1435 +#: common/models.py:1395 msgid "Part Revisions" msgstr "Modifications de la pièce" -#: common/models.py:1436 +#: common/models.py:1396 msgid "Enable revision field for Part" msgstr "Activer le champ de modification de la pièce" -#: common/models.py:1441 +#: common/models.py:1401 msgid "Allow Deletion from Assembly" msgstr "" -#: common/models.py:1442 +#: common/models.py:1402 msgid "Allow deletion of parts which are used in an assembly" -msgstr "" +msgstr "Permettre la suppression de pièces utilisées dans un assemblage" -#: common/models.py:1447 +#: common/models.py:1407 msgid "IPN Regex" msgstr "Regex IPN" -#: common/models.py:1448 +#: common/models.py:1408 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:1451 +#: common/models.py:1411 msgid "Allow Duplicate IPN" msgstr "Autoriser les IPN dupliqués" -#: common/models.py:1452 +#: common/models.py:1412 msgid "Allow multiple parts to share the same IPN" msgstr "Permettre à plusieurs pièces de partager le même IPN" -#: common/models.py:1457 +#: common/models.py:1417 msgid "Allow Editing IPN" msgstr "Autoriser l'édition de l'IPN" -#: common/models.py:1458 +#: common/models.py:1418 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:1463 +#: common/models.py:1423 msgid "Copy Part BOM Data" msgstr "Copier les données de la pièce" -#: common/models.py:1464 +#: common/models.py:1424 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:1469 +#: common/models.py:1429 msgid "Copy Part Parameter Data" msgstr "Copier les données des paramètres de la pièce" -#: common/models.py:1470 +#: common/models.py:1430 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:1475 +#: common/models.py:1435 msgid "Copy Part Test Data" msgstr "Copier les données de test de la pièce" -#: common/models.py:1476 +#: common/models.py:1436 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:1481 +#: common/models.py:1441 msgid "Copy Category Parameter Templates" msgstr "Copier les templates de paramètres de catégorie" -#: common/models.py:1482 +#: common/models.py:1442 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:1487 part/admin.py:108 part/models.py:3815 -#: report/models.py:293 report/models.py:360 report/serializers.py:90 -#: report/serializers.py:131 stock/serializers.py:228 +#: common/models.py:1447 part/admin.py:108 part/models.py:3795 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:227 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "Modèle" -#: common/models.py:1488 +#: common/models.py:1448 msgid "Parts are templates by default" msgstr "Les pièces sont des templates par défaut" -#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 +#: common/models.py:1453 part/admin.py:91 part/admin.py:425 part/models.py:1052 #: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" msgstr "Assemblage" -#: common/models.py:1494 +#: common/models.py:1454 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:1499 part/admin.py:95 part/models.py:1065 +#: common/models.py:1459 part/admin.py:95 part/models.py:1058 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "Composant" -#: common/models.py:1500 +#: common/models.py:1460 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:1505 part/admin.py:100 part/models.py:1077 +#: common/models.py:1465 part/admin.py:100 part/models.py:1070 msgid "Purchaseable" msgstr "Achetable" -#: common/models.py:1506 +#: common/models.py:1466 msgid "Parts are purchaseable by default" msgstr "Les pièces sont achetables par défaut" -#: common/models.py:1511 part/admin.py:104 part/models.py:1083 +#: common/models.py:1471 part/admin.py:104 part/models.py:1076 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "Vendable" -#: common/models.py:1512 +#: common/models.py:1472 msgid "Parts are salable by default" msgstr "Les pièces sont vendables par défaut" -#: common/models.py:1517 part/admin.py:113 part/models.py:1071 +#: common/models.py:1477 part/admin.py:113 part/models.py:1064 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" msgstr "Traçable" -#: common/models.py:1518 +#: common/models.py:1478 msgid "Parts are trackable by default" msgstr "Les pièces sont traçables par défaut" -#: common/models.py:1523 part/admin.py:117 part/models.py:1093 +#: common/models.py:1483 part/admin.py:117 part/models.py:1086 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" msgstr "Virtuelle" -#: common/models.py:1524 +#: common/models.py:1484 msgid "Parts are virtual by default" msgstr "Les pièces sont virtuelles par défaut" -#: common/models.py:1529 +#: common/models.py:1489 msgid "Show Import in Views" msgstr "Afficher l'import dans les vues" -#: common/models.py:1530 +#: common/models.py:1490 msgid "Display the import wizard in some part views" msgstr "Afficher l'assistant d'importation pour certaine vues de produits" -#: common/models.py:1535 +#: common/models.py:1495 msgid "Show related parts" msgstr "Afficher les pièces connexes" -#: common/models.py:1536 +#: common/models.py:1496 msgid "Display related parts for a part" msgstr "Afficher les pièces connexes à une pièce" -#: common/models.py:1541 +#: common/models.py:1501 msgid "Initial Stock Data" msgstr "Stock initial" -#: common/models.py:1542 +#: common/models.py:1502 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:1547 templates/js/translated/part.js:107 +#: common/models.py:1507 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Données initiales du fournisseur" -#: common/models.py:1549 +#: common/models.py:1509 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:1555 +#: common/models.py:1515 msgid "Part Name Display Format" msgstr "Format d'affichage du nom de la pièce" -#: common/models.py:1556 +#: common/models.py:1516 msgid "Format to display the part name" msgstr "Format pour afficher le nom de la pièce" -#: common/models.py:1562 +#: common/models.py:1522 msgid "Part Category Default Icon" msgstr "Icône de catégorie par défaut" -#: common/models.py:1563 +#: common/models.py:1523 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:1567 +#: common/models.py:1527 msgid "Enforce Parameter Units" msgstr "Renforcer les unités des paramètres" -#: common/models.py:1569 +#: common/models.py:1529 msgid "If units are provided, parameter values must match the specified units" msgstr "Si des unités sont fournies, les valeurs de paramètre doivent correspondre aux unités spécifiées" -#: common/models.py:1575 +#: common/models.py:1535 msgid "Minimum Pricing Decimal Places" msgstr "Nombre minimal de décimales" -#: common/models.py:1577 +#: common/models.py:1537 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "Nombre minimum de décimales à afficher lors de l'affichage des prix" -#: common/models.py:1583 +#: common/models.py:1548 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1585 +#: common/models.py:1550 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1591 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "Utiliser le prix fournisseur" -#: common/models.py:1593 +#: common/models.py:1563 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:1599 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "Remplacer l'historique des achats" -#: common/models.py:1601 +#: common/models.py:1571 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:1607 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "Utiliser les prix des articles en stock" -#: common/models.py:1609 +#: common/models.py:1579 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:1615 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "Âge de tarification des articles de stock" -#: common/models.py:1617 +#: common/models.py:1587 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:1624 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "Utiliser les prix variants" -#: common/models.py:1625 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "Inclure la tarification variante dans le calcul global des prix" -#: common/models.py:1630 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "Variantes actives uniquement" -#: common/models.py:1632 +#: common/models.py:1602 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:1638 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "Intervalle de regénération des prix" -#: common/models.py:1640 +#: common/models.py:1610 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:1647 +#: common/models.py:1617 msgid "Internal Prices" msgstr "Prix internes" -#: common/models.py:1648 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "Activer les prix internes pour les pièces" -#: common/models.py:1653 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "Substitution du prix interne" -#: common/models.py:1655 +#: common/models.py:1625 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:1661 +#: common/models.py:1631 msgid "Enable label printing" msgstr "Activer l'impression d'étiquettes" -#: common/models.py:1662 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "Activer l'impression d'étiquettes depuis l'interface Web" -#: common/models.py:1667 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "Étiquette image DPI" -#: common/models.py:1669 +#: common/models.py:1639 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:1675 +#: common/models.py:1645 msgid "Enable Reports" msgstr "Activer les rapports" -#: common/models.py:1676 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "Activer la génération de rapports" -#: common/models.py:1681 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "Mode Débogage" -#: common/models.py:1682 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "Générer des rapports en mode debug (sortie HTML)" -#: common/models.py:1687 +#: common/models.py:1657 msgid "Log Report Errors" msgstr "Journal des erreurs" -#: common/models.py:1688 +#: common/models.py:1658 msgid "Log errors which occur when generating reports" msgstr "" -#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:301 +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:302 msgid "Page Size" msgstr "Taille de la page" -#: common/models.py:1694 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "Taille de page par défaut pour les rapports PDF" -#: common/models.py:1699 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "Activer les rapports de test" -#: common/models.py:1700 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "Activer la génération de rapports de test" -#: common/models.py:1705 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "Joindre des rapports de test" -#: common/models.py:1707 +#: common/models.py:1677 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:1713 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "Numéro de Série Universellement Unique" -#: common/models.py:1714 +#: common/models.py:1684 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:1719 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "Remplir automatiquement les Numéros de Série" -#: common/models.py:1720 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "Remplir automatiquement les numéros de série dans les formulaires" -#: common/models.py:1725 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "Supprimer le stock épuisé" -#: common/models.py:1727 +#: common/models.py:1697 msgid "Determines default behavior when a stock item is depleted" msgstr "" -#: common/models.py:1733 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "Modèle de code de lot" -#: common/models.py:1735 +#: common/models.py:1705 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:1740 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "Expiration du stock" -#: common/models.py:1741 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "Activer la fonctionnalité d'expiration du stock" -#: common/models.py:1746 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "Vendre le stock expiré" -#: common/models.py:1747 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "Autoriser la vente de stock expiré" -#: common/models.py:1752 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "Délai de péremption du stock" -#: common/models.py:1754 +#: common/models.py:1724 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:1761 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "Construction de stock expirée" -#: common/models.py:1762 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "Autoriser la construction avec un stock expiré" -#: common/models.py:1767 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "Contrôle de la propriété des stocks" -#: common/models.py:1768 +#: common/models.py:1738 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:1773 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "Icône par défaut de l'emplacement du stock" -#: common/models.py:1774 +#: common/models.py:1744 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:1778 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "Afficher les pièces en stock installées" -#: common/models.py:1779 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1784 +#: common/models.py:1754 msgid "Check BOM when installing items" msgstr "" -#: common/models.py:1786 +#: common/models.py:1756 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "" -#: common/models.py:1792 +#: common/models.py:1762 msgid "Allow Out of Stock Transfer" msgstr "" -#: common/models.py:1794 +#: common/models.py:1764 msgid "Allow stock items which are not in stock to be transferred between stock locations" msgstr "" -#: common/models.py:1800 +#: common/models.py:1770 msgid "Build Order Reference Pattern" msgstr "Modèle de référence de commande de construction" -#: common/models.py:1802 +#: common/models.py:1772 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:1808 common/models.py:1836 common/models.py:1858 -#: common/models.py:1894 +#: common/models.py:1778 common/models.py:1806 common/models.py:1828 +#: common/models.py:1864 msgid "Require Responsible Owner" msgstr "" -#: common/models.py:1809 common/models.py:1837 common/models.py:1859 -#: common/models.py:1895 +#: common/models.py:1779 common/models.py:1807 common/models.py:1829 +#: common/models.py:1865 msgid "A responsible owner must be assigned to each order" msgstr "" -#: common/models.py:1814 +#: common/models.py:1784 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1816 +#: common/models.py:1786 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:1822 +#: common/models.py:1792 msgid "Enable Return Orders" msgstr "Activer les retours de commandes" -#: common/models.py:1823 +#: common/models.py:1793 msgid "Enable return order functionality in the user interface" msgstr "Activer la fonctionnalité de retour de commande dans l'interface utilisateur" -#: common/models.py:1828 +#: common/models.py:1798 msgid "Return Order Reference Pattern" msgstr "Modèle de référence de retour de commande" -#: common/models.py:1830 +#: common/models.py:1800 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1842 +#: common/models.py:1812 msgid "Edit Completed Return Orders" msgstr "Modifier les retours de commandes terminées" -#: common/models.py:1844 +#: common/models.py:1814 msgid "Allow editing of return orders after they have been completed" msgstr "Autoriser la modification des retours après leur enregistrement" -#: common/models.py:1850 +#: common/models.py:1820 msgid "Sales Order Reference Pattern" msgstr "Modèle de référence de bon de commande" -#: common/models.py:1852 +#: common/models.py:1822 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:1864 +#: common/models.py:1834 msgid "Sales Order Default Shipment" msgstr "Expédition par défaut du bon de commande" -#: common/models.py:1865 +#: common/models.py:1835 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:1870 +#: common/models.py:1840 msgid "Edit Completed Sales Orders" msgstr "Modifier les commandes de vente terminées" -#: common/models.py:1872 +#: common/models.py:1842 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:1878 -#, fuzzy -#| msgid "Mark order as complete" +#: common/models.py:1848 msgid "Mark Shipped Orders as Complete" -msgstr "Marquer la commande comme complète" +msgstr "" -#: common/models.py:1880 +#: common/models.py:1850 msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" msgstr "" -#: common/models.py:1886 +#: common/models.py:1856 msgid "Purchase Order Reference Pattern" msgstr "Modèle de référence de commande d'achat" -#: common/models.py:1888 +#: common/models.py:1858 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:1900 +#: common/models.py:1870 msgid "Edit Completed Purchase Orders" msgstr "Modifier les bons de commande terminés" -#: common/models.py:1902 +#: common/models.py:1872 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:1908 +#: common/models.py:1878 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1910 +#: common/models.py:1880 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1917 +#: common/models.py:1887 msgid "Enable password forgot" msgstr "Activer les mots de passe oubliés" -#: common/models.py:1918 +#: common/models.py:1888 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:1923 +#: common/models.py:1893 msgid "Enable registration" msgstr "Activer les inscriptions" -#: common/models.py:1924 +#: common/models.py:1894 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:1929 +#: common/models.py:1899 msgid "Enable SSO" msgstr "Activer le SSO" -#: common/models.py:1930 +#: common/models.py:1900 msgid "Enable SSO on the login pages" msgstr "Activer le SSO sur les pages de connexion" -#: common/models.py:1935 +#: common/models.py:1905 msgid "Enable SSO registration" msgstr "Activer l'inscription SSO" -#: common/models.py:1937 +#: common/models.py:1907 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:1943 +#: common/models.py:1913 msgid "Email required" msgstr "Email requis" -#: common/models.py:1944 +#: common/models.py:1914 msgid "Require user to supply mail on signup" msgstr "Exiger que l'utilisateur fournisse un mail lors de l'inscription" -#: common/models.py:1949 +#: common/models.py:1919 msgid "Auto-fill SSO users" msgstr "Saisie automatique des utilisateurs SSO" -#: common/models.py:1951 +#: common/models.py:1921 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:1957 +#: common/models.py:1927 msgid "Mail twice" msgstr "Courriel en double" -#: common/models.py:1958 +#: common/models.py:1928 msgid "On signup ask users twice for their mail" msgstr "Lors de l'inscription, demandez deux fois aux utilisateurs leur mail" -#: common/models.py:1963 +#: common/models.py:1933 msgid "Password twice" msgstr "Mot de passe deux fois" -#: common/models.py:1964 +#: common/models.py:1934 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:1969 +#: common/models.py:1939 msgid "Allowed domains" msgstr "Domaines autorisés" -#: common/models.py:1971 +#: common/models.py:1941 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1977 +#: common/models.py:1947 msgid "Group on signup" msgstr "Grouper sur inscription" -#: common/models.py:1978 +#: common/models.py:1948 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:1983 +#: common/models.py:1953 msgid "Enforce MFA" msgstr "Forcer l'authentification multifacteurs" -#: common/models.py:1984 +#: common/models.py:1954 msgid "Users must use multifactor security." msgstr "Les utilisateurs doivent utiliser l'authentification multifacteurs." -#: common/models.py:1989 +#: common/models.py:1959 msgid "Check plugins on startup" msgstr "Vérifier les plugins au démarrage" -#: common/models.py:1991 +#: common/models.py:1961 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:1999 +#: common/models.py:1969 msgid "Check for plugin updates" msgstr "" -#: common/models.py:2000 +#: common/models.py:1970 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:2006 +#: common/models.py:1976 msgid "Enable URL integration" msgstr "Activer l'intégration d'URL" -#: common/models.py:2007 +#: common/models.py:1977 msgid "Enable plugins to add URL routes" msgstr "Autoriser les plugins à ajouter des chemins URL" -#: common/models.py:2013 +#: common/models.py:1983 msgid "Enable navigation integration" msgstr "Activer l'intégration de navigation" -#: common/models.py:2014 +#: common/models.py:1984 msgid "Enable plugins to integrate into navigation" msgstr "Activer les plugins à s'intégrer dans la navigation" -#: common/models.py:2020 +#: common/models.py:1990 msgid "Enable app integration" msgstr "Activer l'intégration de plugins" -#: common/models.py:2021 +#: common/models.py:1991 msgid "Enable plugins to add apps" msgstr "Activer l'intégration de plugin pour ajouter des apps" -#: common/models.py:2027 +#: common/models.py:1997 msgid "Enable schedule integration" msgstr "Activer l'intégration du planning" -#: common/models.py:2028 +#: common/models.py:1998 msgid "Enable plugins to run scheduled tasks" msgstr "Autoriser les plugins à éxécuter des tâches planifiées" -#: common/models.py:2034 +#: common/models.py:2004 msgid "Enable event integration" msgstr "Activer l'intégration des évènements" -#: common/models.py:2035 +#: common/models.py:2005 msgid "Enable plugins to respond to internal events" msgstr "Autoriser les plugins à répondre aux évènements internes" -#: common/models.py:2041 +#: common/models.py:2011 msgid "Enable project codes" msgstr "Activer les codes projet" -#: common/models.py:2042 +#: common/models.py:2012 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:2047 +#: common/models.py:2017 msgid "Stocktake Functionality" msgstr "Fonctionnalité d'inventaire" -#: common/models.py:2049 +#: common/models.py:2019 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:2055 +#: common/models.py:2025 msgid "Exclude External Locations" msgstr "" -#: common/models.py:2057 +#: common/models.py:2027 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:2063 +#: common/models.py:2033 msgid "Automatic Stocktake Period" msgstr "Période de l'inventaire automatique" -#: common/models.py:2065 +#: common/models.py:2035 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:2071 +#: common/models.py:2041 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:2073 +#: common/models.py:2043 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:2080 +#: common/models.py:2050 msgid "Display Users full names" msgstr "" -#: common/models.py:2081 +#: common/models.py:2051 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:2086 +#: common/models.py:2056 msgid "Enable Test Station Data" msgstr "" -#: common/models.py:2087 +#: common/models.py:2057 msgid "Enable test station data collection for test results" msgstr "" -#: common/models.py:2099 common/models.py:2509 +#: common/models.py:2069 common/models.py:2479 msgid "Settings key (must be unique - case insensitive" msgstr "Clé du paramètre (doit être unique - insensible à la casse)" -#: common/models.py:2142 +#: common/models.py:2112 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2144 +#: common/models.py:2114 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2150 +#: common/models.py:2120 msgid "Show subscribed parts" msgstr "Afficher les composants suivis" -#: common/models.py:2151 +#: common/models.py:2121 msgid "Show subscribed parts on the homepage" msgstr "Afficher les composants suivis sur l'écran d'accueil" -#: common/models.py:2156 +#: common/models.py:2126 msgid "Show subscribed categories" msgstr "Afficher les catégories suivies" -#: common/models.py:2157 +#: common/models.py:2127 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:2162 +#: common/models.py:2132 msgid "Show latest parts" msgstr "Afficher les dernières pièces" -#: common/models.py:2163 +#: common/models.py:2133 msgid "Show latest parts on the homepage" msgstr "Afficher les derniers composants sur la page d'accueil" -#: common/models.py:2168 +#: common/models.py:2138 msgid "Show invalid BOMs" msgstr "" -#: common/models.py:2169 +#: common/models.py:2139 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:2174 +#: common/models.py:2144 msgid "Show recent stock changes" msgstr "Afficher les dernières modifications du stock" -#: common/models.py:2175 +#: common/models.py:2145 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:2180 +#: common/models.py:2150 msgid "Show low stock" msgstr "Afficher le stock faible" -#: common/models.py:2181 +#: common/models.py:2151 msgid "Show low stock items on the homepage" msgstr "Afficher les articles en stock bas sur la page d'accueil" -#: common/models.py:2186 +#: common/models.py:2156 msgid "Show depleted stock" msgstr "Afficher le stock épuisé" -#: common/models.py:2187 +#: common/models.py:2157 msgid "Show depleted stock items on the homepage" msgstr "Afficher les stocks épuisés sur la page d'accueil" -#: common/models.py:2192 +#: common/models.py:2162 msgid "Show needed stock" msgstr "Afficher le stock nécessaire" -#: common/models.py:2193 +#: common/models.py:2163 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:2198 +#: common/models.py:2168 msgid "Show expired stock" msgstr "Afficher le stock expiré" -#: common/models.py:2199 +#: common/models.py:2169 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:2204 +#: common/models.py:2174 msgid "Show stale stock" msgstr "Afficher le stock périmé" -#: common/models.py:2205 +#: common/models.py:2175 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:2210 +#: common/models.py:2180 msgid "Show pending builds" msgstr "Afficher les constructions en attente" -#: common/models.py:2211 +#: common/models.py:2181 msgid "Show pending builds on the homepage" msgstr "Afficher les constructions en attente sur la page d'accueil" -#: common/models.py:2216 +#: common/models.py:2186 msgid "Show overdue builds" msgstr "Afficher les constructions en retard" -#: common/models.py:2217 +#: common/models.py:2187 msgid "Show overdue builds on the homepage" msgstr "Afficher les constructions en retard sur la page d'accueil" -#: common/models.py:2222 +#: common/models.py:2192 msgid "Show outstanding POs" msgstr "Afficher les commandes en suspens" -#: common/models.py:2223 +#: common/models.py:2193 msgid "Show outstanding POs on the homepage" msgstr "Afficher les commandes en suspens sur la page d'accueil" -#: common/models.py:2228 +#: common/models.py:2198 msgid "Show overdue POs" msgstr "Afficher les commandes en retard" -#: common/models.py:2229 +#: common/models.py:2199 msgid "Show overdue POs on the homepage" msgstr "Afficher les commandes en retard sur la page d'accueil" -#: common/models.py:2234 +#: common/models.py:2204 msgid "Show outstanding SOs" msgstr "Afficher les envois en suspens" -#: common/models.py:2235 +#: common/models.py:2205 msgid "Show outstanding SOs on the homepage" msgstr "Afficher les envois en suspens sur la page d'accueil" -#: common/models.py:2240 +#: common/models.py:2210 msgid "Show overdue SOs" msgstr "Afficher les envois en retard" -#: common/models.py:2241 +#: common/models.py:2211 msgid "Show overdue SOs on the homepage" msgstr "Afficher les envois en retard sur la page d'accueil" -#: common/models.py:2246 +#: common/models.py:2216 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2247 +#: common/models.py:2217 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2252 +#: common/models.py:2222 msgid "Show News" msgstr "Afficher les nouvelles" -#: common/models.py:2253 +#: common/models.py:2223 msgid "Show news on the homepage" msgstr "Afficher les nouvelles sur la page d'accueil" -#: common/models.py:2258 +#: common/models.py:2228 msgid "Inline label display" msgstr "Affichage du libellé en ligne" -#: common/models.py:2260 +#: common/models.py:2230 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:2266 +#: common/models.py:2236 msgid "Default label printer" msgstr "Imprimante d'étiquettes par défaut" -#: common/models.py:2268 +#: common/models.py:2238 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:2274 +#: common/models.py:2244 msgid "Inline report display" msgstr "Affichage du rapport en ligne" -#: common/models.py:2276 +#: common/models.py:2246 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:2282 +#: common/models.py:2252 msgid "Search Parts" msgstr "Rechercher de pièces" -#: common/models.py:2283 +#: common/models.py:2253 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:2288 +#: common/models.py:2258 msgid "Search Supplier Parts" msgstr "Recherche du fournisseur de pièces" -#: common/models.py:2289 +#: common/models.py:2259 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:2294 +#: common/models.py:2264 msgid "Search Manufacturer Parts" msgstr "Rechercher les pièces du fabricant" -#: common/models.py:2295 +#: common/models.py:2265 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:2300 +#: common/models.py:2270 msgid "Hide Inactive Parts" msgstr "Masquer les pièces inactives" -#: common/models.py:2301 +#: common/models.py:2271 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:2306 +#: common/models.py:2276 msgid "Search Categories" msgstr "Rechercher des catégories" -#: common/models.py:2307 +#: common/models.py:2277 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:2312 +#: common/models.py:2282 msgid "Search Stock" msgstr "Rechercher dans le stock" -#: common/models.py:2313 +#: common/models.py:2283 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:2318 +#: common/models.py:2288 msgid "Hide Unavailable Stock Items" msgstr "Cacher les pièces indisponibles" -#: common/models.py:2320 +#: common/models.py:2290 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:2326 +#: common/models.py:2296 msgid "Search Locations" msgstr "Chercher des Emplacements" -#: common/models.py:2327 +#: common/models.py:2297 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:2332 +#: common/models.py:2302 msgid "Search Companies" msgstr "Rechercher les entreprises" -#: common/models.py:2333 +#: common/models.py:2303 msgid "Display companies in search preview window" msgstr "Afficher les entreprises dans la fenêtre de prévisualisation de recherche" -#: common/models.py:2338 +#: common/models.py:2308 msgid "Search Build Orders" msgstr "Rechercher les commandes de construction" -#: common/models.py:2339 +#: common/models.py:2309 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:2344 +#: common/models.py:2314 msgid "Search Purchase Orders" msgstr "Rechercher des bons de commande" -#: common/models.py:2345 +#: common/models.py:2315 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:2350 +#: common/models.py:2320 msgid "Exclude Inactive Purchase Orders" msgstr "Exclure les bons de commande inactifs" -#: common/models.py:2352 +#: common/models.py:2322 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:2358 +#: common/models.py:2328 msgid "Search Sales Orders" msgstr "Rechercher les bons de commande" -#: common/models.py:2359 +#: common/models.py:2329 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:2364 +#: common/models.py:2334 msgid "Exclude Inactive Sales Orders" msgstr "Exclure les bons de commande inactives" -#: common/models.py:2366 +#: common/models.py:2336 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:2372 +#: common/models.py:2342 msgid "Search Return Orders" msgstr "Rechercher les commandes retournées" -#: common/models.py:2373 +#: common/models.py:2343 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2378 +#: common/models.py:2348 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2380 +#: common/models.py:2350 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2386 +#: common/models.py:2356 msgid "Search Preview Results" msgstr "Résultats de l'aperçu de la recherche" -#: common/models.py:2388 +#: common/models.py:2358 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:2394 +#: common/models.py:2364 msgid "Regex Search" msgstr "Recherche Regex" -#: common/models.py:2395 +#: common/models.py:2365 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2400 +#: common/models.py:2370 msgid "Whole Word Search" msgstr "" -#: common/models.py:2401 +#: common/models.py:2371 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2406 +#: common/models.py:2376 msgid "Show Quantity in Forms" msgstr "Afficher la quantité dans les formulaires" -#: common/models.py:2407 +#: common/models.py:2377 msgid "Display available part quantity in some forms" msgstr "Afficher la quantité disponible dans certains formulaires" -#: common/models.py:2412 +#: common/models.py:2382 msgid "Escape Key Closes Forms" msgstr "La touche Echap ferme les formulaires" -#: common/models.py:2413 +#: common/models.py:2383 msgid "Use the escape key to close modal forms" msgstr "Utilisez la touche Echap pour fermer les formulaires modaux" -#: common/models.py:2418 +#: common/models.py:2388 msgid "Fixed Navbar" msgstr "Barre de navigation fixe" -#: common/models.py:2419 +#: common/models.py:2389 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:2424 +#: common/models.py:2394 msgid "Date Format" msgstr "Format de date" -#: common/models.py:2425 +#: common/models.py:2395 msgid "Preferred format for displaying dates" msgstr "Format préféré pour l'affichage des dates" -#: common/models.py:2438 part/templates/part/detail.html:41 +#: common/models.py:2408 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Planification des pièces" -#: common/models.py:2439 +#: common/models.py:2409 msgid "Display part scheduling information" msgstr "Afficher les informations de planification des pièces" -#: common/models.py:2444 part/templates/part/detail.html:62 +#: common/models.py:2414 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "Inventaire des pièces" -#: common/models.py:2446 +#: common/models.py:2416 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2452 +#: common/models.py:2422 msgid "Table String Length" msgstr "Longueur de la chaîne dans les Tableau" -#: common/models.py:2454 +#: common/models.py:2424 msgid "Maximum length limit for strings displayed in table views" -msgstr "" +msgstr "Longueur maximale des chaînes affichées dans les tableaux" -#: common/models.py:2460 +#: common/models.py:2430 msgid "Default part label template" msgstr "" -#: common/models.py:2461 +#: common/models.py:2431 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2466 +#: common/models.py:2436 msgid "Default stock item template" msgstr "" -#: common/models.py:2468 +#: common/models.py:2438 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2474 +#: common/models.py:2444 msgid "Default stock location label template" msgstr "" -#: common/models.py:2476 +#: common/models.py:2446 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2482 +#: common/models.py:2452 msgid "Default build line label template" msgstr "" -#: common/models.py:2484 +#: common/models.py:2454 msgid "The build line label template to be automatically selected" msgstr "" -#: common/models.py:2490 +#: common/models.py:2460 msgid "Receive error reports" msgstr "" -#: common/models.py:2491 +#: common/models.py:2461 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2496 +#: common/models.py:2466 msgid "Last used printing machines" msgstr "" -#: common/models.py:2497 +#: common/models.py:2467 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2540 +#: common/models.py:2487 common/models.py:2488 common/models.py:2636 +#: common/models.py:2637 common/models.py:2882 common/models.py:2883 +#: common/models.py:3193 common/models.py:3194 part/models.py:3193 +#: part/models.py:3280 part/models.py:3353 part/models.py:3381 +#: plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "Utilisateur" + +#: common/models.py:2510 msgid "Price break quantity" msgstr "" -#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1382 order/models.py:2301 -#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 +#: common/models.py:2517 company/serializers.py:472 order/admin.py:42 +#: order/models.py:1346 order/models.py:2265 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1886 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:740 msgid "Price" msgstr "Prix" -#: common/models.py:2548 +#: common/models.py:2518 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2719 common/models.py:2904 +#: common/models.py:2613 common/models.py:2798 msgid "Endpoint" msgstr "" -#: common/models.py:2720 +#: common/models.py:2614 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2730 +#: common/models.py:2624 msgid "Name for this webhook" msgstr "" -#: common/models.py:2734 company/models.py:160 company/models.py:814 -#: machine/models.py:39 part/admin.py:88 part/models.py:1088 -#: plugin/models.py:65 templates/js/translated/company.js:523 +#: common/models.py:2628 company/models.py:163 company/models.py:782 +#: machine/models.py:39 part/admin.py:88 part/models.py:1081 +#: plugin/models.py:66 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3464,101 +3408,118 @@ msgstr "" msgid "Active" msgstr "Actif" -#: common/models.py:2734 +#: common/models.py:2628 msgid "Is this webhook active" msgstr "Ce webhook (lien de rappel HTTP) est-il actif" -#: common/models.py:2750 users/models.py:159 +#: common/models.py:2644 users/models.py:159 msgid "Token" msgstr "Jeton" -#: common/models.py:2751 +#: common/models.py:2645 msgid "Token for access" msgstr "Jeton d'accès" -#: common/models.py:2759 +#: common/models.py:2653 msgid "Secret" msgstr "Confidentiel" -#: common/models.py:2760 +#: common/models.py:2654 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2868 +#: common/models.py:2762 msgid "Message ID" msgstr "ID message" -#: common/models.py:2869 +#: common/models.py:2763 msgid "Unique identifier for this message" msgstr "Identifiant unique pour ce message" -#: common/models.py:2877 +#: common/models.py:2771 msgid "Host" msgstr "Hôte" -#: common/models.py:2878 +#: common/models.py:2772 msgid "Host from which this message was received" msgstr "Hôte à partir duquel ce message a été reçu" -#: common/models.py:2886 +#: common/models.py:2780 msgid "Header" msgstr "Entête" -#: common/models.py:2887 +#: common/models.py:2781 msgid "Header of this message" msgstr "En-tête de ce message" -#: common/models.py:2894 +#: common/models.py:2788 msgid "Body" msgstr "Corps" -#: common/models.py:2895 +#: common/models.py:2789 msgid "Body of this message" msgstr "Corps de ce message" -#: common/models.py:2905 +#: common/models.py:2799 msgid "Endpoint on which this message was received" msgstr "Endpoint à partir duquel ce message a été reçu" -#: common/models.py:2910 +#: common/models.py:2804 msgid "Worked on" msgstr "" -#: common/models.py:2911 +#: common/models.py:2805 msgid "Was the work on this message finished?" msgstr "Le travail sur ce message est-il terminé ?" -#: common/models.py:3037 +#: common/models.py:2931 msgid "Id" msgstr "Id" -#: common/models.py:3039 templates/js/translated/company.js:965 +#: common/models.py:2933 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "Titre" -#: common/models.py:3043 templates/js/translated/news.js:60 +#: common/models.py:2935 common/models.py:3177 company/models.py:149 +#: company/models.py:440 company/models.py:500 company/models.py:799 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +#: part/admin.py:55 part/models.py:955 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "Lien" + +#: common/models.py:2937 templates/js/translated/news.js:60 msgid "Published" msgstr "Publié" -#: common/models.py:3045 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2939 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:3047 templates/js/translated/news.js:52 +#: common/models.py:2941 templates/js/translated/news.js:52 msgid "Summary" msgstr "Résumé" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Read" msgstr "Lu" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Was this news item read?" msgstr "Cette nouvelle a-t-elle été lue ?" -#: common/models.py:3067 company/models.py:156 part/models.py:972 +#: common/models.py:2961 company/models.py:159 part/models.py:965 #: 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.html:35 @@ -3568,34 +3529,89 @@ msgstr "Cette nouvelle a-t-elle été lue ?" msgid "Image" msgstr "Image" -#: common/models.py:3067 +#: common/models.py:2961 msgid "Image file" msgstr "Fichier image" -#: common/models.py:3109 +#: common/models.py:2973 common/models.py:3161 +msgid "Target model type for this image" +msgstr "" + +#: common/models.py:2977 +msgid "Target model ID for this image" +msgstr "" + +#: common/models.py:3018 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3128 +#: common/models.py:3037 msgid "Unit name" msgstr "" -#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3044 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "Symbole" -#: common/models.py:3136 +#: common/models.py:3045 msgid "Optional unit symbol" msgstr "Symbole d'unité facultatif" -#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3052 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "Définition" -#: common/models.py:3144 +#: common/models.py:3053 msgid "Unit definition" msgstr "Définition de l'unité" +#: common/models.py:3111 common/models.py:3168 stock/models.py:2426 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "Pièce jointe" + +#: common/models.py:3123 +msgid "Missing file" +msgstr "Fichier manquant" + +#: common/models.py:3124 +msgid "Missing external link" +msgstr "Lien externe manquant" + +#: common/models.py:3169 +msgid "Select file to attach" +msgstr "Sélectionnez un fichier à joindre" + +#: common/models.py:3184 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "Commentaire" + +#: common/models.py:3185 +msgid "Attachment comment" +msgstr "" + +#: common/models.py:3201 +msgid "Upload date" +msgstr "" + +#: common/models.py:3202 +msgid "Date the file was uploaded" +msgstr "" + +#: common/models.py:3206 +msgid "File size" +msgstr "" + +#: common/models.py:3206 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3244 common/serializers.py:553 +msgid "Invalid model type specified for attachment" +msgstr "" + #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" @@ -3630,66 +3646,103 @@ msgstr "" msgid "Error raised by plugin" msgstr "Erreur déclenchée par le plugin" -#: common/serializers.py:366 +#: common/serializers.py:371 msgid "Is Running" msgstr "En cours d'exécution" -#: common/serializers.py:372 +#: common/serializers.py:377 msgid "Pending Tasks" msgstr "Tâches en attente" -#: common/serializers.py:378 +#: common/serializers.py:383 msgid "Scheduled Tasks" msgstr "Tâches planifiées" -#: common/serializers.py:384 +#: common/serializers.py:389 msgid "Failed Tasks" msgstr "Tâches échouées" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Task ID" msgstr "ID de la tâche" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Unique task ID" msgstr "ID unique de la tâche" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock" msgstr "Verrouillé" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock time" msgstr "Heure verrouillé" -#: common/serializers.py:403 +#: common/serializers.py:408 msgid "Task name" msgstr "Nom de la tâche" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function" msgstr "Fonction" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function name" msgstr "Nom de la fonction" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Arguments" msgstr "Arguments" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Task arguments" msgstr "Arguments tâche" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Keyword Arguments" msgstr "Mots-clés Arguments" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Task keyword arguments" msgstr "Mots-clés arguments tâche" +#: common/serializers.py:525 +msgid "Filename" +msgstr "Nom du fichier" + +#: common/serializers.py:532 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: common/serializers.py:559 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "" + +#: common/validators.py:33 +msgid "No attachment model type provided" +msgstr "" + +#: common/validators.py:39 +msgid "Invalid attachment model type" +msgstr "" + +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "Un domaine vide n'est pas autorisé." + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +msgstr "Nom de domaine invalide : {domain}" + #: 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 @@ -3728,210 +3781,222 @@ msgstr "Pièces importées" msgid "Previous Step" msgstr "Étape précédente" -#: company/api.py:164 +#: company/api.py:144 msgid "Part is Active" msgstr "La pièce est active" -#: company/api.py:168 +#: company/api.py:148 msgid "Manufacturer is Active" msgstr "Le fabricant est actif" -#: company/api.py:317 +#: company/api.py:281 msgid "Supplier Part is Active" msgstr "Le fournisseur de la pièce est active" -#: company/api.py:321 +#: company/api.py:285 msgid "Internal Part is Active" msgstr "La pièce interne est active" -#: company/api.py:325 +#: company/api.py:289 msgid "Supplier is Active" msgstr "Le fournisseur est actif" -#: company/models.py:114 +#: company/models.py:100 company/models.py:365 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:822 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "Société" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "Entreprises" + +#: company/models.py:117 msgid "Company description" msgstr "Description de la société" -#: company/models.py:115 +#: company/models.py:118 msgid "Description of the company" msgstr "Description de la société" -#: company/models.py:120 company/templates/company/company_base.html:106 +#: company/models.py:123 company/templates/company/company_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:532 msgid "Website" msgstr "Site web" -#: company/models.py:120 +#: company/models.py:123 msgid "Company website URL" msgstr "Site Web de la société" -#: company/models.py:125 +#: company/models.py:128 msgid "Phone number" msgstr "Numéro de téléphone" -#: company/models.py:127 +#: company/models.py:130 msgid "Contact phone number" msgstr "Numéro de téléphone de contact" -#: company/models.py:134 +#: company/models.py:137 msgid "Contact email address" msgstr "Adresse e-mail de contact" -#: company/models.py:139 company/templates/company/company_base.html:145 +#: company/models.py:142 company/templates/company/company_base.html:145 #: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "Contact" -#: company/models.py:141 +#: company/models.py:144 msgid "Point of contact" msgstr "Point de contact" -#: company/models.py:147 +#: company/models.py:150 msgid "Link to external company information" msgstr "Lien externe vers les informations de l'entreprise" -#: company/models.py:160 +#: company/models.py:163 msgid "Is this company active?" msgstr "Cette entreprise est-elle active ?" -#: company/models.py:165 +#: company/models.py:168 msgid "is customer" msgstr "est client" -#: company/models.py:166 +#: company/models.py:169 msgid "Do you sell items to this company?" msgstr "Vendez-vous des objets à cette entreprise?" -#: company/models.py:171 +#: company/models.py:174 msgid "is supplier" msgstr "est fournisseur" -#: company/models.py:172 +#: company/models.py:175 msgid "Do you purchase items from this company?" msgstr "Est-ce que vous achetez des articles à cette entreprise?" -#: company/models.py:177 +#: company/models.py:180 msgid "is manufacturer" msgstr "est fabricant" -#: company/models.py:178 +#: company/models.py:181 msgid "Does this company manufacture parts?" msgstr "Cette entreprise fabrique-t-elle des pièces?" -#: company/models.py:186 +#: company/models.py:189 msgid "Default currency used for this company" msgstr "Devise par défaut utilisée pour cette entreprise" -#: company/models.py:273 company/models.py:382 -#: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:812 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 -msgid "Company" -msgstr "Société" - -#: company/models.py:383 +#: company/models.py:366 msgid "Select company" msgstr "Sélectionner une entreprise" -#: company/models.py:388 +#: company/models.py:371 msgid "Address title" msgstr "Intitulé de l'adresse" -#: company/models.py:389 +#: company/models.py:372 msgid "Title describing the address entry" msgstr "Titre décrivant la saisie de l'adresse" -#: company/models.py:395 +#: company/models.py:378 msgid "Primary address" msgstr "Adresse principale" -#: company/models.py:396 +#: company/models.py:379 msgid "Set as primary address" msgstr "Sélectionner comme adresse principale" -#: company/models.py:401 templates/js/translated/company.js:914 +#: company/models.py:384 templates/js/translated/company.js:914 #: templates/js/translated/company.js:971 msgid "Line 1" msgstr "Ligne 1" -#: company/models.py:402 +#: company/models.py:385 msgid "Address line 1" msgstr "Adresse" -#: company/models.py:408 templates/js/translated/company.js:915 +#: company/models.py:391 templates/js/translated/company.js:915 #: templates/js/translated/company.js:977 msgid "Line 2" msgstr "Ligne 2" -#: company/models.py:409 +#: company/models.py:392 msgid "Address line 2" msgstr "Seconde ligne d'adresse" -#: company/models.py:415 company/models.py:416 +#: company/models.py:398 company/models.py:399 #: templates/js/translated/company.js:983 msgid "Postal code" msgstr "Code postal" -#: company/models.py:422 +#: company/models.py:405 msgid "City/Region" msgstr "Ville / Région" -#: company/models.py:423 +#: company/models.py:406 msgid "Postal code city/region" msgstr "Code postal Ville / Région" -#: company/models.py:429 +#: company/models.py:412 msgid "State/Province" msgstr "État / Province" -#: company/models.py:430 +#: company/models.py:413 msgid "State or province" msgstr "État ou province" -#: company/models.py:436 templates/js/translated/company.js:1001 +#: company/models.py:419 templates/js/translated/company.js:1001 msgid "Country" msgstr "Pays" -#: company/models.py:437 +#: company/models.py:420 msgid "Address country" msgstr "Pays" -#: company/models.py:443 +#: company/models.py:426 msgid "Courier shipping notes" msgstr "Notes du livreur" -#: company/models.py:444 +#: company/models.py:427 msgid "Notes for shipping courier" msgstr "Instructions pour le livreur" -#: company/models.py:450 +#: company/models.py:433 msgid "Internal shipping notes" msgstr "Notes pour la livraison interne" -#: company/models.py:451 +#: company/models.py:434 msgid "Shipping notes for internal use" msgstr "Notes internes pour la livraison" -#: company/models.py:458 +#: company/models.py:441 msgid "Link to address information (external)" msgstr "Lien vers les informations de l'adresse (externe)" -#: company/models.py:489 company/models.py:792 stock/models.py:768 -#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 +#: company/models.py:463 company/models.py:574 company/models.py:792 +#: 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:475 company/models.py:760 stock/models.py:766 +#: stock/serializers.py:422 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:491 company/models.py:794 +#: company/models.py:477 company/models.py:762 msgid "Select part" msgstr "" -#: company/models.py:500 company/templates/company/company_base.html:82 +#: company/models.py:486 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:530 +#: company/templates/company/supplier_part.html:145 part/serializers.py:525 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -3941,152 +4006,154 @@ msgstr "" msgid "Manufacturer" msgstr "Fabricant" -#: company/models.py:501 +#: company/models.py:487 msgid "Select manufacturer" msgstr "Sélectionner un fabricant" -#: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:540 +#: company/models.py:493 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:535 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 -#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1801 #: templates/js/translated/purchase_order.js:1851 #: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "" -#: company/models.py:508 +#: company/models.py:494 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:515 +#: company/models.py:501 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:524 +#: company/models.py:510 msgid "Manufacturer part description" msgstr "" -#: company/models.py:581 company/models.py:608 company/models.py:824 -#: 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:615 +#: company/models.py:581 msgid "Parameter name" msgstr "Nom du paramètre" -#: company/models.py:621 report/templates/report/inventree_test_report.html:104 -#: stock/models.py:2429 templates/js/translated/company.js:1166 -#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 +#: company/models.py:587 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2418 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1493 #: templates/js/translated/stock.js:1522 msgid "Value" msgstr "Valeur" -#: company/models.py:622 +#: company/models.py:588 msgid "Parameter value" msgstr "Valeur du paramètre" -#: company/models.py:629 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1052 part/models.py:3666 +#: company/models.py:595 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1045 part/models.py:3646 #: part/templates/part/part_base.html:284 -#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1512 +#: templates/js/translated/part.js:1616 templates/js/translated/part.js:2370 msgid "Units" msgstr "Unités" -#: company/models.py:630 +#: company/models.py:596 msgid "Parameter units" msgstr "Unités du paramètre" -#: company/models.py:732 +#: company/models.py:648 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:777 stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "Pièce fournisseur" + +#: company/models.py:700 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:739 +#: company/models.py:707 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:753 +#: company/models.py:721 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:802 company/templates/company/company_base.html:87 +#: company/models.py:770 company/templates/company/company_base.html:87 #: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:514 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:509 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:511 -#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1769 #: templates/js/translated/pricing.js:498 #: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "Fournisseur" -#: company/models.py:803 +#: company/models.py:771 msgid "Select supplier" msgstr "Sélectionner un fournisseur" -#: company/models.py:809 part/serializers.py:525 +#: company/models.py:777 part/serializers.py:520 msgid "Supplier stock keeping unit" msgstr "Unité de gestion des stocks des fournisseurs" -#: company/models.py:815 +#: company/models.py:783 msgid "Is this supplier part active?" msgstr "" -#: company/models.py:825 +#: company/models.py:793 msgid "Select manufacturer part" msgstr "Sélectionner un fabricant" -#: company/models.py:832 +#: company/models.py:800 msgid "URL for external supplier part link" msgstr "Lien de la pièce du fournisseur externe" -#: company/models.py:841 +#: company/models.py:809 msgid "Supplier part description" msgstr "Description de la pièce du fournisseur" -#: company/models.py:848 company/templates/company/supplier_part.html:187 -#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 +#: company/models.py:816 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4093 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_purchase_order_report.html:32 #: report/templates/report/inventree_return_order_report.html:27 #: report/templates/report/inventree_sales_order_report.html:32 #: report/templates/report/inventree_stock_location_report.html:105 -#: stock/serializers.py:708 +#: stock/serializers.py:710 msgid "Note" msgstr "" -#: company/models.py:857 part/models.py:2010 +#: company/models.py:825 part/models.py:2003 msgid "base cost" msgstr "coût de base" -#: company/models.py:858 part/models.py:2011 +#: company/models.py:826 part/models.py:2004 msgid "Minimum charge (e.g. stocking fee)" msgstr "Frais minimums (par exemple frais de stock)" -#: company/models.py:865 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 +#: company/models.py:833 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:797 stock/serializers.py:1475 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 #: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "Conditionnement" -#: company/models.py:866 +#: company/models.py:834 msgid "Part packaging" msgstr "Conditionnement de l'article" -#: company/models.py:871 templates/js/translated/company.js:1651 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: company/models.py:839 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:311 #: templates/js/translated/purchase_order.js:841 #: templates/js/translated/purchase_order.js:1103 @@ -4095,35 +4162,35 @@ msgstr "Conditionnement de l'article" msgid "Pack Quantity" msgstr "Nombre de paquet" -#: company/models.py:873 +#: company/models.py:841 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:892 part/models.py:2017 +#: company/models.py:860 part/models.py:2010 msgid "multiple" msgstr "plusieurs" -#: company/models.py:893 +#: company/models.py:861 msgid "Order multiple" msgstr "Commande multiple" -#: company/models.py:905 +#: company/models.py:873 msgid "Quantity available from supplier" msgstr "Quantité disponible auprès du fournisseur" -#: company/models.py:911 +#: company/models.py:879 msgid "Availability Updated" msgstr "Disponibilité mise à jour" -#: company/models.py:912 +#: company/models.py:880 msgid "Date of last update of availability data" msgstr "Date de dernière mise à jour des données de disponibilité" -#: company/serializers.py:163 +#: company/serializers.py:161 msgid "Default currency used for this supplier" msgstr "Devise par défaut utilisée pour ce fournisseur" -#: company/serializers.py:381 part/admin.py:126 +#: company/serializers.py:357 part/admin.py:126 #: part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1689 #: templates/js/translated/table_filters.js:355 @@ -4135,7 +4202,7 @@ msgstr "En Stock" #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 #: templates/js/translated/model_renderers.js:312 -#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +#: templates/js/translated/part.js:815 templates/js/translated/part.js:1219 msgid "Inactive" msgstr "" @@ -4174,7 +4241,7 @@ msgstr "Supprimer la société" #: report/templates/report/inventree_purchase_order_report.html:40 #: report/templates/report/inventree_sales_order_report.html:40 #: report/templates/report/inventree_test_report.html:84 -#: report/templates/report/inventree_test_report.html:163 +#: report/templates/report/inventree_test_report.html:162 msgid "Part image" msgstr "" @@ -4193,10 +4260,10 @@ msgstr "Télécharger l'image depuis l'URL" msgid "Delete image" msgstr "Supprimer image" -#: company/templates/company/company_base.html:92 order/models.py:940 -#: order/models.py:2068 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:148 stock/models.py:821 -#: stock/models.py:822 stock/serializers.py:1229 +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2032 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:819 +#: stock/models.py:820 stock/serializers.py:1225 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 @@ -4407,7 +4474,7 @@ msgstr "Aucune information sur le fabricant disponible" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:836 +#: part/admin.py:122 part/serializers.py:832 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4427,8 +4494,8 @@ msgstr "Paramètres" msgid "New Parameter" msgstr "Nouveau paramètre" -#: company/templates/company/manufacturer_part.html:206 -#: templates/js/translated/part.js:1422 +#: company/templates/company/manufacturer_part.html:196 +#: templates/js/translated/part.js:1423 msgid "Add Parameter" msgstr "" @@ -4456,15 +4523,6 @@ msgstr "" msgid "Addresses" msgstr "Adresses" -#: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:452 -#: stock/models.py:779 stock/templates/stock/item_base.html:233 -#: templates/js/translated/company.js:1600 -#: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2280 -msgid "Supplier Part" -msgstr "Pièce fournisseur" - #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1526 msgid "Supplier part actions" @@ -4507,8 +4565,8 @@ msgid "No supplier information available" msgstr "Aucune information de fournisseur disponible" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:524 -#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: part/bom.py:311 part/serializers.py:519 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1787 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1850 #: templates/js/translated/purchase_order.js:2028 @@ -4520,12 +4578,12 @@ msgid "Supplier Part Stock" msgstr "Stock de pièces du fournisseur" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:207 msgid "Create new stock item" msgstr "Créer un nouvel article de stock" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "Nouvel article de stock" @@ -4557,15 +4615,15 @@ msgid "Update Part Availability" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:835 part/stocktake.py:223 +#: part/serializers.py:831 part/stocktake.py:224 #: part/templates/part/category.html:183 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:916 stock/serializers.py:1080 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:918 stock/serializers.py:1091 #: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:191 #: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1061 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:206 msgid "Stock Items" @@ -4592,10 +4650,6 @@ msgstr "Clients" msgid "New Customer" msgstr "Nouveaux Clients" -#: company/views.py:51 templates/js/translated/search.js:192 -msgid "Companies" -msgstr "Entreprises" - #: company/views.py:52 msgid "New Company" msgstr "Nouvelle Entreprise" @@ -4616,7 +4670,7 @@ msgstr "" msgid "Connected" msgstr "" -#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: machine/machine_types/label_printer.py:235 order/api.py:1467 #: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "Inconnu" @@ -4705,7 +4759,7 @@ msgstr "Configuration de la machine" msgid "Config type" msgstr "Type de configuration" -#: order/admin.py:30 order/models.py:89 +#: order/admin.py:30 order/models.py:90 #: report/templates/report/inventree_purchase_order_report.html:31 #: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 @@ -4714,30 +4768,30 @@ msgstr "Type de configuration" msgid "Total Price" msgstr "Prix Total" -#: order/api.py:161 order/serializers.py:91 +#: order/api.py:157 order/serializers.py:90 #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "Statut de la commande" -#: order/api.py:165 templates/js/translated/table_filters.js:194 +#: order/api.py:161 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "Possède un Tarif" -#: order/api.py:240 +#: order/api.py:236 msgid "No matching purchase order found" msgstr "Aucun bon de commande correspondant n'a été trouvé" -#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 -#: order/models.py:1586 order/models.py:1700 order/models.py:1854 -#: order/models.py:2267 order/models.py:2318 +#: order/api.py:435 order/api.py:801 order/models.py:1395 order/models.py:1504 +#: order/models.py:1550 order/models.py:1664 order/models.py:1818 +#: order/models.py:2231 order/models.py:2282 #: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "Commande" -#: order/api.py:441 order/api.py:838 +#: order/api.py:439 order/api.py:822 msgid "Order Complete" msgstr "Commande Complétée" @@ -4745,13 +4799,13 @@ msgstr "Commande Complétée" msgid "Order Pending" msgstr "Commande En Attente" -#: order/api.py:1509 order/models.py:380 order/models.py:1432 -#: order/models.py:1541 order/templates/order/order_base.html:9 +#: order/api.py:1461 order/models.py:380 order/models.py:1396 +#: order/models.py:1505 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_purchase_order_report.html:14 -#: stock/serializers.py:119 stock/templates/stock/item_base.html:176 +#: stock/serializers.py:118 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/part.js:1746 templates/js/translated/pricing.js:804 #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1673 @@ -4759,8 +4813,8 @@ msgstr "Commande En Attente" msgid "Purchase Order" msgstr "Commande d’achat" -#: order/api.py:1513 order/models.py:2017 order/models.py:2268 -#: order/models.py:2319 order/templates/order/return_order_base.html:9 +#: order/api.py:1465 order/models.py:1981 order/models.py:2232 +#: order/models.py:2283 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report.html:13 #: templates/js/translated/return_order.js:280 @@ -4768,15 +4822,15 @@ msgstr "Commande d’achat" msgid "Return Order" msgstr "Retour de commande" -#: order/models.py:90 +#: order/models.py:91 msgid "Total price for this order" msgstr "Prix total pour cette commande" -#: order/models.py:95 order/serializers.py:71 +#: order/models.py:96 order/serializers.py:70 msgid "Order Currency" msgstr "Devise de la commande" -#: order/models.py:98 order/serializers.py:72 +#: order/models.py:99 order/serializers.py:71 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -4792,7 +4846,7 @@ msgstr "Description de la commande (facultatif)" msgid "Select project code for this order" msgstr "" -#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 msgid "Link to external page" msgstr "Lien vers une page externe" @@ -4816,11 +4870,11 @@ msgstr "" msgid "Company address for this order" msgstr "Adresse de l'entreprise pour cette commande" -#: order/models.py:464 order/models.py:929 +#: order/models.py:464 order/models.py:927 msgid "Order reference" msgstr "Référence de la commande" -#: order/models.py:472 order/models.py:953 +#: order/models.py:472 order/models.py:951 msgid "Purchase order status" msgstr "Statut de la commande d'achat" @@ -4841,15 +4895,15 @@ msgstr "Code de référence de la commande fournisseur" msgid "received by" msgstr "reçu par" -#: order/models.py:514 order/models.py:2094 +#: order/models.py:514 order/models.py:2058 msgid "Issue Date" msgstr "Date d'émission" -#: order/models.py:515 order/models.py:2095 +#: order/models.py:515 order/models.py:2059 msgid "Date order was issued" msgstr "Date d'émission de la commande" -#: order/models.py:522 order/models.py:2102 +#: order/models.py:522 order/models.py:2066 msgid "Date order was completed" msgstr "Date à laquelle la commande a été complété" @@ -4861,98 +4915,94 @@ msgstr "" msgid "Quantity must be a positive number" msgstr "La quantité doit être un nombre positif" -#: order/models.py:941 +#: order/models.py:939 msgid "Company to which the items are being sold" msgstr "Société à laquelle les articles sont vendus" -#: order/models.py:964 order/models.py:2087 +#: order/models.py:962 order/models.py:2051 msgid "Customer Reference " msgstr "Référence client " -#: order/models.py:965 order/models.py:2088 +#: order/models.py:963 order/models.py:2052 msgid "Customer order reference code" msgstr "" -#: order/models.py:969 order/models.py:1707 +#: order/models.py:967 order/models.py:1671 #: templates/js/translated/sales_order.js:879 #: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "Nom de l’expédition" -#: order/models.py:978 +#: order/models.py:976 msgid "shipped by" msgstr "expédié par" -#: order/models.py:1027 -#, fuzzy -#| msgid "Build output is already completed" +#: order/models.py:1025 msgid "Order is already complete" -msgstr "L'ordre de production a déjà été réalisé" +msgstr "" -#: order/models.py:1030 -#, fuzzy -#| msgid "Order cannot be cancelled" +#: order/models.py:1028 msgid "Order is already cancelled" -msgstr "La commande ne peut pas être annulée" +msgstr "" -#: order/models.py:1034 +#: order/models.py:1032 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:1038 +#: order/models.py:1036 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:1043 +#: order/models.py:1041 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1309 +#: order/models.py:1273 msgid "Item quantity" msgstr "Nombre d'élement" -#: order/models.py:1326 +#: order/models.py:1290 msgid "Line item reference" msgstr "" -#: order/models.py:1333 +#: order/models.py:1297 msgid "Line item notes" msgstr "" -#: order/models.py:1345 +#: order/models.py:1309 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1366 +#: order/models.py:1330 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1372 +#: order/models.py:1336 msgid "Context" msgstr "Contexte" -#: order/models.py:1373 +#: order/models.py:1337 msgid "Additional context for this line" msgstr "" -#: order/models.py:1383 +#: order/models.py:1347 msgid "Unit price" msgstr "Prix unitaire" -#: order/models.py:1416 +#: order/models.py:1380 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1423 +#: order/models.py:1387 msgid "deleted" msgstr "supprimé" -#: order/models.py:1451 +#: order/models.py:1415 msgid "Supplier part" msgstr "Pièce fournisseur" -#: order/models.py:1458 order/templates/order/order_base.html:196 -#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: order/models.py:1422 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1870 templates/js/translated/part.js:1902 #: templates/js/translated/purchase_order.js:1306 #: templates/js/translated/purchase_order.js:2169 #: templates/js/translated/return_order.js:763 @@ -4961,196 +5011,196 @@ msgstr "Pièce fournisseur" msgid "Received" msgstr "Reçu" -#: order/models.py:1459 +#: order/models.py:1423 msgid "Number of items received" msgstr "Nombre d'éléments reçus" -#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 +#: order/models.py:1431 stock/models.py:938 stock/serializers.py:556 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "Prix d'achat" -#: order/models.py:1468 +#: order/models.py:1432 msgid "Unit purchase price" msgstr "Prix d'achat unitaire" -#: order/models.py:1483 +#: order/models.py:1447 msgid "Where does the Purchaser want this item to be stored?" msgstr "Où l'Acheteur veut-il stocker cet article ?" -#: order/models.py:1574 +#: order/models.py:1538 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:1579 +#: order/models.py:1543 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:1605 part/templates/part/part_pricing.html:107 +#: order/models.py:1569 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:1606 +#: order/models.py:1570 msgid "Unit sale price" msgstr "Prix de vente unitaire" -#: order/models.py:1615 order/status_codes.py:43 +#: order/models.py:1579 order/status_codes.py:43 #: templates/js/translated/sales_order.js:1559 #: templates/js/translated/sales_order.js:1680 #: templates/js/translated/sales_order.js:1993 msgid "Shipped" msgstr "Expédié" -#: order/models.py:1616 +#: order/models.py:1580 msgid "Shipped quantity" msgstr "Quantité expédiée" -#: order/models.py:1708 +#: order/models.py:1672 msgid "Date of shipment" msgstr "Date d'expédition" -#: order/models.py:1714 templates/js/translated/sales_order.js:1072 +#: order/models.py:1678 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "Date de Livraison" -#: order/models.py:1715 +#: order/models.py:1679 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1723 +#: order/models.py:1687 msgid "Checked By" msgstr "Vérifié par" -#: order/models.py:1724 +#: order/models.py:1688 msgid "User who checked this shipment" msgstr "Utilisateur qui a vérifié cet envoi" -#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 -#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 +#: order/models.py:1695 order/models.py:1908 order/serializers.py:1342 +#: order/serializers.py:1452 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "Envoi" -#: order/models.py:1732 +#: order/models.py:1696 msgid "Shipment number" msgstr "Numéro d'expédition" -#: order/models.py:1740 +#: order/models.py:1704 msgid "Tracking Number" msgstr "N° de suivi" -#: order/models.py:1741 +#: order/models.py:1705 msgid "Shipment tracking information" msgstr "Information de suivi des colis" -#: order/models.py:1748 +#: order/models.py:1712 msgid "Invoice Number" msgstr "N° de facture" -#: order/models.py:1749 +#: order/models.py:1713 msgid "Reference number for associated invoice" msgstr "Numéro de référence de la facture associée" -#: order/models.py:1769 +#: order/models.py:1733 msgid "Shipment has already been sent" msgstr "Le colis a déjà été envoyé" -#: order/models.py:1772 +#: order/models.py:1736 msgid "Shipment has no allocated stock items" msgstr "L'expédition n'a pas d'articles en stock alloués" -#: order/models.py:1890 order/models.py:1892 +#: order/models.py:1854 order/models.py:1856 msgid "Stock item has not been assigned" msgstr "L'article de stock n'a pas été assigné" -#: order/models.py:1899 +#: order/models.py:1863 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1902 +#: order/models.py:1866 msgid "Cannot allocate stock to a line without a part" msgstr "Impossible d'allouer le stock à une ligne sans pièce" -#: order/models.py:1905 +#: order/models.py:1869 msgid "Allocation quantity cannot exceed stock quantity" msgstr "La quantité d'allocation ne peut pas excéder la quantité en stock" -#: order/models.py:1924 order/serializers.py:1231 +#: order/models.py:1888 order/serializers.py:1219 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1927 +#: order/models.py:1891 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1928 plugin/base/barcodes/api.py:481 +#: order/models.py:1892 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1936 +#: order/models.py:1900 msgid "Line" msgstr "Ligne" -#: order/models.py:1945 +#: order/models.py:1909 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1958 order/models.py:2275 +#: order/models.py:1922 order/models.py:2239 #: templates/js/translated/return_order.js:721 msgid "Item" msgstr "Article" -#: order/models.py:1959 +#: order/models.py:1923 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1968 +#: order/models.py:1932 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:2057 +#: order/models.py:2021 msgid "Return Order reference" msgstr "" -#: order/models.py:2069 +#: order/models.py:2033 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:2081 +#: order/models.py:2045 msgid "Return order status" msgstr "Statut du retour de commande" -#: order/models.py:2260 +#: order/models.py:2224 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2276 +#: order/models.py:2240 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2282 +#: order/models.py:2246 msgid "Received Date" msgstr "" -#: order/models.py:2283 +#: order/models.py:2247 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2294 templates/js/translated/return_order.js:732 +#: order/models.py:2258 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2295 +#: order/models.py:2259 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2302 +#: order/models.py:2266 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/serializers.py:79 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_purchase_order_report.html:22 @@ -5159,163 +5209,163 @@ msgstr "" msgid "Line Items" msgstr "" -#: order/serializers.py:84 +#: order/serializers.py:83 msgid "Completed Lines" msgstr "" -#: order/serializers.py:287 +#: order/serializers.py:286 msgid "Order cannot be cancelled" msgstr "La commande ne peut pas être annulée" -#: order/serializers.py:302 order/serializers.py:1247 +#: order/serializers.py:301 order/serializers.py:1235 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:312 order/serializers.py:1257 +#: order/serializers.py:311 order/serializers.py:1245 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:440 +#: order/serializers.py:439 msgid "Order is not open" msgstr "La commande n'est pas ouverte" -#: order/serializers.py:461 +#: order/serializers.py:460 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:463 +#: order/serializers.py:462 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:473 +#: order/serializers.py:472 msgid "Purchase price currency" msgstr "Devise du prix d'achat" -#: order/serializers.py:479 +#: order/serializers.py:478 msgid "Merge Items" msgstr "" -#: order/serializers.py:481 +#: order/serializers.py:480 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:499 +#: order/serializers.py:498 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:502 +#: order/serializers.py:501 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:510 +#: order/serializers.py:509 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:511 +#: order/serializers.py:510 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:550 order/serializers.py:1325 +#: order/serializers.py:549 order/serializers.py:1313 msgid "Line Item" msgstr "" -#: order/serializers.py:556 +#: order/serializers.py:555 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1657 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:581 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:589 templates/js/translated/purchase_order.js:1154 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:601 templates/js/translated/barcode.js:52 +#: order/serializers.py:600 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Code-barres" -#: order/serializers.py:602 +#: order/serializers.py:601 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:618 +#: order/serializers.py:617 msgid "Barcode is already in use" msgstr "Le code-barres est déjà utilisé" -#: order/serializers.py:642 +#: order/serializers.py:641 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:690 order/serializers.py:1696 +#: order/serializers.py:689 order/serializers.py:1673 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:706 +#: order/serializers.py:705 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:717 +#: order/serializers.py:716 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1074 +#: order/serializers.py:1062 msgid "Sale price currency" msgstr "Devise du prix de vente" -#: order/serializers.py:1134 +#: order/serializers.py:1122 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1195 order/serializers.py:1334 +#: order/serializers.py:1183 order/serializers.py:1322 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1214 +#: order/serializers.py:1202 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1344 +#: order/serializers.py:1332 msgid "Enter serial numbers to allocate" msgstr "Entrez les numéros de série à allouer" -#: order/serializers.py:1366 order/serializers.py:1472 +#: order/serializers.py:1354 order/serializers.py:1460 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1369 order/serializers.py:1475 +#: order/serializers.py:1357 order/serializers.py:1463 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1416 +#: order/serializers.py:1404 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:1423 +#: order/serializers.py:1411 msgid "The following serial numbers are already allocated" msgstr "Les numéros de série suivants sont déjà alloués" -#: order/serializers.py:1650 +#: order/serializers.py:1627 msgid "Return order line item" msgstr "" -#: order/serializers.py:1656 +#: order/serializers.py:1633 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1659 +#: order/serializers.py:1636 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1688 +#: order/serializers.py:1665 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1766 +#: order/serializers.py:1743 msgid "Line price currency" msgstr "" @@ -5645,7 +5695,7 @@ msgstr "Référence client" #: 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/part.js:1073 #: templates/js/translated/purchase_order.js:1752 #: templates/js/translated/return_order.js:380 #: templates/js/translated/sales_order.js:891 @@ -5741,34 +5791,34 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:406 part/models.py:3964 part/stocktake.py:218 -#: stock/admin.py:153 +#: part/admin.py:39 part/admin.py:398 part/models.py:3944 part/stocktake.py:219 +#: stock/admin.py:152 msgid "Part ID" msgstr "ID de composant" -#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 -#: stock/admin.py:157 +#: part/admin.py:41 part/admin.py:405 part/models.py:3945 part/stocktake.py:220 +#: stock/admin.py:156 msgid "Part Name" msgstr "Nom de l'article" -#: part/admin.py:45 part/stocktake.py:220 +#: part/admin.py:45 part/stocktake.py:221 msgid "Part Description" msgstr "Description pièce" -#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:940 part/templates/part/part_base.html:269 #: report/templates/report/inventree_stock_location_report.html:103 -#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/part.js:1227 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 -#: report/models.py:161 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2346 +#: part/admin.py:50 part/models.py:949 part/templates/part/part_base.html:277 +#: report/models.py:162 templates/js/translated/part.js:1232 +#: templates/js/translated/part.js:2347 msgid "Revision" msgstr "Révision" -#: part/admin.py:53 part/admin.py:319 part/models.py:929 +#: part/admin.py:53 part/admin.py:319 part/models.py:922 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "Mots-clés" @@ -5777,11 +5827,11 @@ msgstr "Mots-clés" msgid "Part Image" msgstr "Image pièce" -#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:222 msgid "Category ID" msgstr "ID catégorie" -#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:223 msgid "Category Name" msgstr "Nom catégorie" @@ -5793,11 +5843,11 @@ msgstr "ID Emplacement par défaut" msgid "Default Supplier ID" msgstr "ID Fournisseur par défaut" -#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:908 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "Variante de" -#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1036 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "Stock Minimum" @@ -5805,26 +5855,26 @@ msgstr "Stock Minimum" msgid "Used In" msgstr "Utilisé pour" -#: 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 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:235 +#: templates/js/translated/part.js:715 templates/js/translated/part.js:2153 msgid "Building" msgstr "Construction" -#: part/admin.py:155 part/models.py:3123 part/models.py:3137 -#: templates/js/translated/part.js:969 +#: part/admin.py:155 part/models.py:3088 part/models.py:3102 +#: templates/js/translated/part.js:970 msgid "Minimum Cost" msgstr "Coût minimal" -#: part/admin.py:158 part/models.py:3130 part/models.py:3144 -#: templates/js/translated/part.js:979 +#: part/admin.py:158 part/models.py:3095 part/models.py:3109 +#: templates/js/translated/part.js:980 msgid "Maximum Cost" msgstr "Coût maximal" -#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 msgid "Parent ID" msgstr "" -#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 msgid "Parent Name" msgstr "" @@ -5833,141 +5883,149 @@ msgstr "" msgid "Category Path" msgstr "Chemin catégorie" -#: part/admin.py:325 part/models.py:393 part/serializers.py:117 -#: part/serializers.py:272 part/serializers.py:391 +#: part/admin.py:325 part/models.py:396 part/serializers.py:124 +#: part/serializers.py:267 part/serializers.py:386 #: 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:2803 templates/js/translated/search.js:130 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "Pièces" -#: part/admin.py:386 +#: part/admin.py:378 msgid "BOM Level" msgstr "" -#: part/admin.py:389 +#: part/admin.py:381 msgid "BOM Item ID" msgstr "" -#: part/admin.py:399 +#: part/admin.py:391 msgid "Parent IPN" msgstr "" -#: part/admin.py:410 part/models.py:3966 +#: part/admin.py:402 part/models.py:3946 msgid "Part IPN" msgstr "" -#: part/admin.py:423 part/serializers.py:1278 +#: part/admin.py:415 part/serializers.py:1274 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "Prix Minimum" -#: part/admin.py:428 part/serializers.py:1293 +#: part/admin.py:420 part/serializers.py:1289 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "Prix Maximum" -#: part/api.py:110 +#: part/api.py:104 msgid "Starred" msgstr "" -#: part/api.py:112 +#: part/api.py:106 msgid "Filter by starred categories" msgstr "" -#: part/api.py:129 stock/api.py:318 +#: part/api.py:123 stock/api.py:312 msgid "Depth" msgstr "Profondeur" -#: part/api.py:129 +#: part/api.py:123 msgid "Filter by category depth" msgstr "" -#: part/api.py:147 stock/api.py:336 +#: part/api.py:141 stock/api.py:330 +msgid "Top Level" +msgstr "" + +#: part/api.py:143 +msgid "Filter by top-level categories" +msgstr "" + +#: part/api.py:156 stock/api.py:345 msgid "Cascade" msgstr "" -#: part/api.py:149 +#: part/api.py:158 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:169 +#: part/api.py:179 templates/js/translated/part.js:308 msgid "Parent" msgstr "" -#: part/api.py:171 +#: part/api.py:181 msgid "Filter by parent category" msgstr "" -#: part/api.py:204 +#: part/api.py:214 msgid "Exclude Tree" msgstr "" -#: part/api.py:206 +#: part/api.py:216 msgid "Exclude sub-categories under the specified category" msgstr "" -#: part/api.py:455 +#: part/api.py:449 msgid "Has Results" msgstr "" -#: part/api.py:622 +#: part/api.py:616 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:640 +#: part/api.py:634 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:656 +#: part/api.py:650 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:740 +#: part/api.py:734 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:887 +#: part/api.py:881 msgid "Valid" msgstr "Valide" -#: part/api.py:888 +#: part/api.py:882 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:894 +#: part/api.py:888 msgid "This option must be selected" msgstr "" -#: part/api.py:1111 +#: part/api.py:1105 msgid "BOM Valid" msgstr "" -#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 -#: part/serializers.py:406 part/serializers.py:1134 -#: part/templates/part/part_base.html:260 stock/api.py:781 +#: part/api.py:1508 part/models.py:932 part/models.py:3374 part/models.py:3889 +#: part/serializers.py:401 part/serializers.py:1130 +#: part/templates/part/part_base.html:260 stock/api.py:791 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2376 +#: templates/js/translated/part.js:2377 msgid "Category" msgstr "Catégorie" -#: part/api.py:1803 +#: part/api.py:1796 msgid "Uses" msgstr "Utilise" -#: part/bom.py:170 part/models.py:102 part/models.py:982 +#: part/bom.py:170 part/models.py:104 part/models.py:975 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Emplacement par défaut" -#: part/bom.py:171 part/serializers.py:837 +#: part/bom.py:171 part/serializers.py:833 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "Stock total" @@ -5976,1060 +6034,1072 @@ msgstr "Stock total" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 +#: part/models.py:85 part/models.py:3890 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:84 part/templates/part/category.html:136 +#: part/models.py:86 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "Catégories de composants" -#: part/models.py:103 +#: part/models.py:105 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 +#: part/models.py:110 stock/models.py:174 templates/js/translated/part.js:2810 #: templates/js/translated/stock.js:2772 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "Structurel" -#: part/models.py:110 +#: part/models.py:112 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:119 +#: part/models.py:121 msgid "Default keywords" msgstr "Mots-clés par défaut" -#: part/models.py:120 +#: part/models.py:122 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 stock/models.py:85 stock/models.py:156 +#: part/models.py:128 stock/models.py:86 stock/models.py:157 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:127 stock/models.py:157 +#: part/models.py:129 stock/models.py:158 msgid "Icon (optional)" msgstr "" -#: part/models.py:149 +#: part/models.py:151 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:482 +#: part/models.py:485 msgid "Cannot delete this part as it is still active" msgstr "" -#: part/models.py:489 +#: part/models.py:490 msgid "Cannot delete this part as it is used in an assembly" msgstr "" -#: part/models.py:527 +#: part/models.py:528 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:575 part/models.py:582 +#: part/models.py:576 part/models.py:583 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:594 +#: part/models.py:595 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:659 +#: part/models.py:658 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:739 +#: part/models.py:736 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:844 +#: part/models.py:837 msgid "Duplicate IPN not allowed in part settings" msgstr "IPN dupliqué non autorisé dans les paramètres de la pièce" -#: part/models.py:854 +#: part/models.py:847 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:869 +#: part/models.py:862 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:898 part/models.py:3965 +#: part/models.py:891 part/models.py:3945 msgid "Part name" msgstr "Nom de l'article" -#: part/models.py:903 +#: part/models.py:896 msgid "Is Template" msgstr "" -#: part/models.py:904 +#: part/models.py:897 msgid "Is this part a template part?" msgstr "" -#: part/models.py:914 +#: part/models.py:907 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:922 +#: part/models.py:915 msgid "Part description (optional)" msgstr "" -#: part/models.py:930 +#: part/models.py:923 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:940 +#: part/models.py:933 msgid "Part category" msgstr "Catégorie de la pièce" -#: part/models.py:948 +#: part/models.py:941 msgid "Internal Part Number" msgstr "" -#: part/models.py:955 +#: part/models.py:948 msgid "Part revision or version number" msgstr "" -#: part/models.py:980 +#: part/models.py:973 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:1026 part/templates/part/part_base.html:376 +#: part/models.py:1019 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:1027 +#: part/models.py:1020 msgid "Default supplier part" msgstr "" -#: part/models.py:1034 +#: part/models.py:1027 msgid "Default Expiry" msgstr "" -#: part/models.py:1035 +#: part/models.py:1028 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:1044 +#: part/models.py:1037 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:1053 +#: part/models.py:1046 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1060 +#: part/models.py:1053 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1066 +#: part/models.py:1059 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1072 +#: part/models.py:1065 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1078 +#: part/models.py:1071 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1084 +#: part/models.py:1077 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1088 +#: part/models.py:1081 msgid "Is this part active?" msgstr "Est-ce que cette pièce est active ?" -#: part/models.py:1094 +#: part/models.py:1087 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1100 +#: part/models.py:1093 msgid "BOM checksum" msgstr "" -#: part/models.py:1101 +#: part/models.py:1094 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1109 +#: part/models.py:1102 msgid "BOM checked by" msgstr "" -#: part/models.py:1114 +#: part/models.py:1107 msgid "BOM checked date" msgstr "" -#: part/models.py:1130 +#: part/models.py:1123 msgid "Creation User" msgstr "Création Utilisateur" -#: part/models.py:1140 +#: part/models.py:1133 msgid "Owner responsible for this part" msgstr "Propriétaire responsable de cette pièce" -#: part/models.py:1145 part/templates/part/part_base.html:339 +#: part/models.py:1138 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2470 +#: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:2018 +#: part/models.py:2011 msgid "Sell multiple" msgstr "Ventes multiples" -#: part/models.py:3037 +#: part/models.py:3002 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:3053 +#: part/models.py:3018 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:3054 +#: part/models.py:3019 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:3060 +#: part/models.py:3025 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3026 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:3067 +#: part/models.py:3032 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3033 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3074 +#: part/models.py:3039 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3040 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3046 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3047 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3053 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3054 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3060 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3096 +#: part/models.py:3061 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3102 +#: part/models.py:3067 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3103 +#: part/models.py:3068 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3109 +#: part/models.py:3074 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3110 +#: part/models.py:3075 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3116 +#: part/models.py:3081 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3117 +#: part/models.py:3082 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3124 +#: part/models.py:3089 msgid "Override minimum cost" msgstr "" -#: part/models.py:3131 +#: part/models.py:3096 msgid "Override maximum cost" msgstr "" -#: part/models.py:3138 +#: part/models.py:3103 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3145 +#: part/models.py:3110 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3151 +#: part/models.py:3116 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3152 +#: part/models.py:3117 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3158 +#: part/models.py:3123 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3159 +#: part/models.py:3124 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3165 +#: part/models.py:3130 msgid "Minimum Sale Cost" msgstr "Coût minimum de vente" -#: part/models.py:3166 +#: part/models.py:3131 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3172 +#: part/models.py:3137 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3138 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3192 +#: part/models.py:3157 msgid "Part for stocktake" msgstr "" -#: part/models.py:3197 +#: part/models.py:3162 msgid "Item Count" msgstr "" -#: part/models.py:3198 +#: part/models.py:3163 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3206 +#: part/models.py:3171 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3210 part/models.py:3293 +#: part/models.py:3175 part/models.py:3258 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report.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/part.js:1086 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" -#: part/models.py:3211 +#: part/models.py:3176 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3219 +#: part/models.py:3184 msgid "Additional notes" msgstr "Notes additionnelles" -#: part/models.py:3229 +#: part/models.py:3194 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3235 +#: part/models.py:3200 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3236 +#: part/models.py:3201 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3242 +#: part/models.py:3207 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3243 +#: part/models.py:3208 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3264 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3300 +#: part/models.py:3265 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3270 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3306 +#: part/models.py:3271 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3316 +#: part/models.py:3281 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3478 +#: part/models.py:3423 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3489 +#: part/models.py:3444 part/models.py:3608 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3455 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3500 +#: part/models.py:3466 msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3517 templates/js/translated/part.js:2878 +#: part/models.py:3483 templates/js/translated/part.js:2880 msgid "Test Name" msgstr "Nom de test" -#: part/models.py:3518 +#: part/models.py:3484 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3524 +#: part/models.py:3490 msgid "Test Key" msgstr "" -#: part/models.py:3525 +#: part/models.py:3491 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3532 +#: part/models.py:3498 msgid "Test Description" msgstr "" -#: part/models.py:3533 +#: part/models.py:3499 msgid "Enter description for this test" msgstr "" -#: part/models.py:3537 report/models.py:208 -#: templates/js/translated/part.js:2899 +#: part/models.py:3503 report/models.py:209 +#: templates/js/translated/part.js:2901 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "Activé" -#: part/models.py:3537 +#: part/models.py:3503 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3542 templates/js/translated/part.js:2907 +#: part/models.py:3508 templates/js/translated/part.js:2909 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Requis" -#: part/models.py:3543 +#: part/models.py:3509 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3548 templates/js/translated/part.js:2915 +#: part/models.py:3514 templates/js/translated/part.js:2917 msgid "Requires Value" msgstr "Valeur requise" -#: part/models.py:3549 +#: part/models.py:3515 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3554 templates/js/translated/part.js:2922 +#: part/models.py:3520 templates/js/translated/part.js:2924 msgid "Requires Attachment" msgstr "" -#: part/models.py:3556 +#: part/models.py:3522 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3603 +#: part/models.py:3528 part/models.py:3667 templates/js/translated/part.js:1637 +msgid "Choices" +msgstr "" + +#: part/models.py:3529 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3583 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3608 +#: part/models.py:3588 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3628 -msgid "Choices must be unique" -msgstr "" - -#: part/models.py:3645 +#: part/models.py:3625 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3660 +#: part/models.py:3640 msgid "Parameter Name" msgstr "" -#: part/models.py:3667 +#: part/models.py:3647 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3675 +#: part/models.py:3655 msgid "Parameter description" msgstr "" -#: part/models.py:3681 templates/js/translated/part.js:1627 +#: part/models.py:3661 templates/js/translated/part.js:1628 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "" -#: part/models.py:3682 +#: part/models.py:3662 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3687 templates/js/translated/part.js:1636 -msgid "Choices" -msgstr "" - -#: part/models.py:3688 +#: part/models.py:3668 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3765 +#: part/models.py:3745 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3808 +#: part/models.py:3788 msgid "Parent Part" msgstr "" -#: part/models.py:3816 part/models.py:3917 part/models.py:3918 +#: part/models.py:3796 part/models.py:3897 part/models.py:3898 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3821 +#: part/models.py:3801 msgid "Data" msgstr "Données" -#: part/models.py:3822 +#: part/models.py:3802 msgid "Parameter Value" msgstr "" -#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3904 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "Valeur par Défaut" -#: part/models.py:3925 +#: part/models.py:3905 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3963 +#: part/models.py:3943 msgid "Part ID or part name" msgstr "" -#: part/models.py:3964 +#: part/models.py:3944 msgid "Unique part ID value" msgstr "" -#: part/models.py:3966 +#: part/models.py:3946 msgid "Part IPN value" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "Level" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "BOM level" msgstr "" -#: part/models.py:4057 +#: part/models.py:4037 msgid "Select parent part" msgstr "" -#: part/models.py:4067 +#: part/models.py:4047 msgid "Sub part" msgstr "" -#: part/models.py:4068 +#: part/models.py:4048 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4079 +#: part/models.py:4059 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4085 +#: part/models.py:4065 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4091 +#: part/models.py:4071 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4098 part/templates/part/upload_bom.html:55 +#: part/models.py:4078 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Surplus" -#: part/models.py:4099 +#: part/models.py:4079 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4106 +#: part/models.py:4086 msgid "BOM item reference" msgstr "" -#: part/models.py:4114 +#: part/models.py:4094 msgid "BOM item notes" msgstr "" -#: part/models.py:4120 +#: part/models.py:4100 msgid "Checksum" msgstr "" -#: part/models.py:4121 +#: part/models.py:4101 msgid "BOM line checksum" msgstr "" -#: part/models.py:4126 templates/js/translated/table_filters.js:174 +#: part/models.py:4106 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "Validée" -#: part/models.py:4127 +#: part/models.py:4107 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4132 part/templates/part/upload_bom.html:57 +#: part/models.py:4112 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:4133 +#: part/models.py:4113 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4138 part/templates/part/upload_bom.html:56 +#: part/models.py:4118 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4139 +#: part/models.py:4119 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4224 stock/models.py:664 +#: part/models.py:4204 stock/models.py:662 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4234 part/models.py:4236 +#: part/models.py:4214 part/models.py:4216 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4376 +#: part/models.py:4354 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4397 +#: part/models.py:4375 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4410 +#: part/models.py:4388 msgid "Parent BOM item" msgstr "" -#: part/models.py:4418 +#: part/models.py:4396 msgid "Substitute part" msgstr "" -#: part/models.py:4434 +#: part/models.py:4412 msgid "Part 1" msgstr "" -#: part/models.py:4442 +#: part/models.py:4420 msgid "Part 2" msgstr "" -#: part/models.py:4443 +#: part/models.py:4421 msgid "Select Related Part" msgstr "" -#: part/models.py:4462 +#: part/models.py:4440 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4467 +#: part/models.py:4445 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:119 part/serializers.py:141 +#: part/serializers.py:118 +msgid "Parent Category" +msgstr "" + +#: part/serializers.py:119 templates/js/translated/part.js:309 +msgid "Parent part category" +msgstr "" + +#: part/serializers.py:126 part/serializers.py:148 #: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/serializers.py:185 +#: part/serializers.py:180 msgid "Results" msgstr "" -#: part/serializers.py:186 +#: part/serializers.py:181 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 +#: part/serializers.py:205 part/serializers.py:223 stock/serializers.py:562 msgid "Purchase currency of this stock item" msgstr "Devise d'achat de l'item" -#: part/serializers.py:273 +#: part/serializers.py:268 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:397 +#: part/serializers.py:392 msgid "No parts selected" msgstr "" -#: part/serializers.py:407 +#: part/serializers.py:402 msgid "Select category" msgstr "" -#: part/serializers.py:442 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:443 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:448 +#: part/serializers.py:443 msgid "Copy Image" msgstr "Copier l'image" -#: part/serializers.py:449 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:455 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:456 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "Copier les paramètres" -#: part/serializers.py:463 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:488 +#: part/serializers.py:483 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:490 +#: part/serializers.py:485 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:497 +#: part/serializers.py:492 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:493 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:510 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:531 +#: part/serializers.py:526 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:541 +#: part/serializers.py:536 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:548 +#: part/serializers.py:543 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:557 +#: part/serializers.py:552 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:568 +#: part/serializers.py:563 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:575 +#: part/serializers.py:570 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:834 msgid "External Stock" msgstr "" -#: part/serializers.py:840 +#: part/serializers.py:836 msgid "Unallocated Stock" msgstr "" -#: part/serializers.py:843 +#: part/serializers.py:839 msgid "Variant Stock" msgstr "" -#: part/serializers.py:873 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:471 +#: part/serializers.py:869 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:472 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:870 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:880 templates/js/translated/part.js:102 +#: part/serializers.py:876 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:881 +#: part/serializers.py:877 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:887 +#: part/serializers.py:883 msgid "Supplier Information" msgstr "" -#: part/serializers.py:888 +#: part/serializers.py:884 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:896 +#: part/serializers.py:892 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:897 +#: part/serializers.py:893 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:902 +#: part/serializers.py:898 msgid "Existing Image" msgstr "" -#: part/serializers.py:903 +#: part/serializers.py:899 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:920 +#: part/serializers.py:916 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1126 +#: part/serializers.py:1122 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1136 +#: part/serializers.py:1132 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1146 +#: part/serializers.py:1142 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1152 +#: part/serializers.py:1148 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1153 +#: part/serializers.py:1149 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1158 +#: part/serializers.py:1154 msgid "Generate Report" msgstr "" -#: part/serializers.py:1159 +#: part/serializers.py:1155 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1164 +#: part/serializers.py:1160 msgid "Update Parts" msgstr "" -#: part/serializers.py:1165 +#: part/serializers.py:1161 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1173 +#: part/serializers.py:1169 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1279 +#: part/serializers.py:1275 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1286 +#: part/serializers.py:1282 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1294 +#: part/serializers.py:1290 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1301 +#: part/serializers.py:1297 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1330 +#: part/serializers.py:1326 msgid "Update" msgstr "" -#: part/serializers.py:1331 +#: part/serializers.py:1327 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1354 +#: part/serializers.py:1350 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1361 +#: part/serializers.py:1357 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1364 +#: part/serializers.py:1360 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1727 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1739 +#: part/serializers.py:1735 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1740 +#: part/serializers.py:1736 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1745 +#: part/serializers.py:1741 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1746 +#: part/serializers.py:1742 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1747 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1752 +#: part/serializers.py:1748 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1757 +#: part/serializers.py:1753 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1758 +#: part/serializers.py:1754 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1792 +#: part/serializers.py:1788 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1793 +#: part/serializers.py:1789 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1823 +#: part/serializers.py:1819 msgid "No part column specified" msgstr "" -#: part/serializers.py:1867 +#: part/serializers.py:1863 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1870 +#: part/serializers.py:1866 msgid "No matching part found" msgstr "" -#: part/serializers.py:1873 +#: part/serializers.py:1869 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1882 +#: part/serializers.py:1878 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1890 +#: part/serializers.py:1886 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1911 +#: part/serializers.py:1907 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 +#: part/stocktake.py:225 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "" -#: part/stocktake.py:225 +#: part/stocktake.py:226 msgid "Total Cost Min" msgstr "" -#: part/stocktake.py:226 +#: part/stocktake.py:227 msgid "Total Cost Max" msgstr "" -#: part/stocktake.py:284 +#: part/stocktake.py:285 msgid "Stocktake Report Available" msgstr "" -#: part/stocktake.py:285 +#: part/stocktake.py:286 msgid "A new stocktake report is available for download" msgstr "" #: part/tasks.py:37 msgid "Low stock notification" -msgstr "" +msgstr "Notification de stock faible" #: part/tasks.py:39 #, python-brace-format @@ -7059,11 +7129,11 @@ msgstr "" #: part/templates/part/category.html:41 part/templates/part/category.html:45 msgid "You are subscribed to notifications for this category" -msgstr "" +msgstr "Vous êtes abonné aux notifications pour cette catégorie" #: part/templates/part/category.html:49 msgid "Subscribe to notifications for this category" -msgstr "" +msgstr "S'abonner aux notifications de cette catégorie" #: part/templates/part/category.html:55 msgid "Category Actions" @@ -7157,7 +7227,7 @@ 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 +#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" @@ -7257,15 +7327,15 @@ msgstr "" msgid "Part Manufacturers" msgstr "Fabricants de composants" -#: part/templates/part/detail.html:655 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:663 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:748 +#: part/templates/part/detail.html:750 msgid "Add Test Result Template" msgstr "" @@ -7316,11 +7386,11 @@ msgstr "Liste des composants" #: 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 "Vous êtes abonné aux notifications pour cette pièce" #: part/templates/part/part_base.html:33 msgid "Subscribe to notifications for this part" -msgstr "" +msgstr "S'abonner aux notifications de cette pièce" #: part/templates/part/part_base.html:52 #: stock/templates/stock/item_base.html:62 @@ -7346,7 +7416,7 @@ msgstr "" msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" msgstr "" @@ -7418,7 +7488,7 @@ 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:2443 +#: templates/js/translated/part.js:1265 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7511,8 +7581,8 @@ msgstr "" #: 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:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/part.js:1243 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 #: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7555,7 +7625,7 @@ msgstr "" msgid "Edit" msgstr "Modifier" -#: part/templates/part/prices.html:28 stock/admin.py:247 +#: part/templates/part/prices.html:28 stock/admin.py:251 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 @@ -7632,14 +7702,14 @@ msgstr "" #: part/templates/part/stock_count.html:7 #: templates/js/translated/model_renderers.js:227 -#: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 -#: templates/js/translated/part.js:2142 +#: templates/js/translated/part.js:705 templates/js/translated/part.js:2141 +#: templates/js/translated/part.js:2143 msgid "No Stock" msgstr "" #: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 msgid "Low Stock" -msgstr "" +msgstr "Stock minimum" #: part/templates/part/upload_bom.html:8 msgid "Return to BOM" @@ -8005,7 +8075,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:308 msgid "Landscape" msgstr "" @@ -8118,62 +8188,62 @@ msgstr "" msgid "Uninstalled plugin successfully" msgstr "" -#: plugin/models.py:35 +#: plugin/models.py:36 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:36 +#: plugin/models.py:37 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:42 users/models.py:100 +#: plugin/models.py:43 users/models.py:100 msgid "Key" msgstr "" -#: plugin/models.py:43 +#: plugin/models.py:44 msgid "Key of plugin" msgstr "" -#: plugin/models.py:51 +#: plugin/models.py:52 msgid "PluginName of the plugin" msgstr "Non du Plugin" -#: plugin/models.py:58 plugin/serializers.py:90 +#: plugin/models.py:59 plugin/serializers.py:90 msgid "Package Name" msgstr "" -#: plugin/models.py:60 +#: plugin/models.py:61 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:65 +#: plugin/models.py:66 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:156 templates/js/translated/table_filters.js:370 +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "" -#: plugin/models.py:165 +#: plugin/models.py:166 msgid "Sample plugin" msgstr "" -#: plugin/models.py:173 +#: plugin/models.py:174 msgid "Builtin Plugin" msgstr "Extension Intégrée" -#: plugin/models.py:181 +#: plugin/models.py:182 msgid "Package Plugin" msgstr "" -#: plugin/models.py:205 report/models.py:474 +#: plugin/models.py:220 report/models.py:475 #: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "Extension" -#: plugin/models.py:252 +#: plugin/models.py:267 msgid "Method" msgstr "" @@ -8181,17 +8251,17 @@ msgstr "" msgid "No author found" msgstr "" -#: plugin/registry.py:597 +#: plugin/registry.py:534 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:600 +#: plugin/registry.py:537 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:602 +#: plugin/registry.py:539 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -8256,7 +8326,7 @@ msgstr "" #: plugin/serializers.py:101 msgid "Version specifier for the plugin. Leave blank for latest version." -msgstr "" +msgstr "Identifiant de version du plugin. Laissez vide pour la dernière version." #: plugin/serializers.py:106 msgid "Confirm plugin installation" @@ -8306,23 +8376,19 @@ msgstr "" msgid "Activate this plugin" msgstr "" -#: plugin/serializers.py:234 +#: plugin/serializers.py:226 msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:235 +#: plugin/serializers.py:227 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:77 +#: report/api.py:88 msgid "No valid objects provided to template" msgstr "Aucun objet valide n'a été fourni au modèle" -#: report/api.py:89 report/serializers.py:53 -msgid "Model Type" -msgstr "" - -#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/api.py:103 report/models.py:439 report/serializers.py:98 #: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 #: templates/js/translated/return_order.js:353 #: templates/js/translated/sales_order.js:887 @@ -8330,176 +8396,176 @@ msgstr "" msgid "Items" msgstr "" -#: report/api.py:168 +#: report/api.py:180 msgid "Plugin not found" msgstr "" -#: report/api.py:170 +#: report/api.py:182 msgid "Plugin is not active" msgstr "" -#: report/api.py:172 +#: report/api.py:184 msgid "Plugin does not support label printing" msgstr "" -#: report/api.py:221 +#: report/api.py:233 msgid "Invalid label dimensions" msgstr "" -#: report/api.py:236 report/api.py:316 +#: report/api.py:248 report/api.py:329 msgid "No valid items provided to template" msgstr "" -#: report/api.py:271 +#: report/api.py:283 msgid "Error printing label" msgstr "" -#: report/api.py:362 report/api.py:398 +#: report/api.py:375 report/api.py:411 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/helpers.py:41 +#: report/helpers.py:43 msgid "A4" msgstr "" -#: report/helpers.py:42 +#: report/helpers.py:44 msgid "A3" msgstr "" -#: report/helpers.py:43 +#: report/helpers.py:45 msgid "Legal" msgstr "" -#: report/helpers.py:44 +#: report/helpers.py:46 msgid "Letter" msgstr "" -#: report/models.py:118 +#: report/models.py:119 msgid "Template file with this name already exists" msgstr "" -#: report/models.py:150 +#: report/models.py:151 msgid "Template name" msgstr "Nom du modèle" -#: report/models.py:156 +#: report/models.py:157 msgid "Template description" msgstr "" -#: report/models.py:162 +#: report/models.py:163 msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Filename Pattern" msgstr "Modèle de nom de fichier" -#: report/models.py:203 +#: report/models.py:204 msgid "Pattern for generating filenames" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Template is enabled" msgstr "" -#: report/models.py:214 +#: report/models.py:215 msgid "Target model type for template" msgstr "" -#: report/models.py:234 +#: report/models.py:235 msgid "Filters" msgstr "Filtres" -#: report/models.py:235 +#: report/models.py:236 msgid "Template query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:294 report/models.py:361 +#: report/models.py:295 report/models.py:362 msgid "Template file" msgstr "" -#: report/models.py:302 +#: report/models.py:303 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:308 +#: report/models.py:309 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:367 +#: report/models.py:368 msgid "Width [mm]" msgstr "Largeur [mm]" -#: report/models.py:368 +#: report/models.py:369 msgid "Label width, specified in mm" msgstr "Largeur de l'étiquette, spécifiée en mm" -#: report/models.py:374 +#: report/models.py:375 msgid "Height [mm]" msgstr "Hauteur [mm]" -#: report/models.py:375 +#: report/models.py:376 msgid "Label height, specified in mm" msgstr "Hauteur de l'étiquette, spécifiée en mm" -#: report/models.py:438 +#: report/models.py:439 msgid "Number of items to process" msgstr "" -#: report/models.py:444 +#: report/models.py:445 msgid "Report generation is complete" msgstr "" -#: report/models.py:448 templates/js/translated/build.js:2177 +#: report/models.py:449 templates/js/translated/build.js:2177 msgid "Progress" msgstr "" -#: report/models.py:448 +#: report/models.py:449 msgid "Report generation progress" msgstr "" -#: report/models.py:456 +#: report/models.py:457 msgid "Report Template" msgstr "" -#: report/models.py:463 report/models.py:486 +#: report/models.py:464 report/models.py:487 msgid "Output File" msgstr "" -#: report/models.py:464 report/models.py:487 +#: report/models.py:465 report/models.py:488 msgid "Generated output file" msgstr "" -#: report/models.py:475 +#: report/models.py:476 msgid "Label output plugin" msgstr "" -#: report/models.py:479 +#: report/models.py:480 msgid "Label Template" msgstr "" -#: report/models.py:502 +#: report/models.py:503 msgid "Snippet" msgstr "Extrait " -#: report/models.py:503 +#: report/models.py:504 msgid "Report snippet file" msgstr "" -#: report/models.py:510 +#: report/models.py:511 msgid "Snippet file description" msgstr "" -#: report/models.py:528 +#: report/models.py:529 msgid "Asset" msgstr "Elément" -#: report/models.py:529 +#: report/models.py:530 msgid "Report asset file" msgstr "" -#: report/models.py:536 +#: report/models.py:537 msgid "Asset file description" msgstr "" @@ -8572,8 +8638,8 @@ msgid "Total" msgstr "" #: report/templates/report/inventree_return_order_report.html:25 -#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 -#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:824 +#: stock/serializers.py:149 stock/templates/stock/item_base.html:311 #: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 #: templates/js/translated/build.js:2355 #: templates/js/translated/model_renderers.js:230 @@ -8603,32 +8669,32 @@ msgstr "" msgid "Test" msgstr "" -#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2412 msgid "Result" msgstr "Résultat" -#: report/templates/report/inventree_test_report.html:130 +#: report/templates/report/inventree_test_report.html:129 msgid "Pass" msgstr "" -#: report/templates/report/inventree_test_report.html:132 +#: report/templates/report/inventree_test_report.html:131 msgid "Fail" msgstr "" -#: report/templates/report/inventree_test_report.html:139 +#: report/templates/report/inventree_test_report.html:138 msgid "No result (required)" msgstr "" -#: report/templates/report/inventree_test_report.html:141 +#: report/templates/report/inventree_test_report.html:140 msgid "No result" msgstr "" -#: report/templates/report/inventree_test_report.html:154 +#: report/templates/report/inventree_test_report.html:153 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "" -#: report/templates/report/inventree_test_report.html:168 stock/admin.py:162 +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 #: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 #: templates/js/translated/stock.js:3110 msgid "Serial" @@ -8650,654 +8716,670 @@ msgstr "" msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:172 +#: stock/admin.py:51 stock/admin.py:171 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:176 +#: stock/admin.py:53 stock/admin.py:175 msgid "Location Name" msgstr "" -#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/admin.py:63 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:149 +#: stock/admin.py:148 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:168 +#: stock/admin.py:167 msgid "Status Code" msgstr "" -#: stock/admin.py:180 +#: stock/admin.py:179 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:185 +#: stock/admin.py:184 +msgid "Supplier Part SKU" +msgstr "" + +#: stock/admin.py:189 msgid "Supplier ID" msgstr "" -#: stock/admin.py:191 +#: stock/admin.py:195 msgid "Supplier Name" msgstr "" -#: stock/admin.py:196 +#: stock/admin.py:200 msgid "Customer ID" msgstr "" -#: stock/admin.py:201 stock/models.py:806 +#: stock/admin.py:205 stock/models.py:804 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:206 +#: stock/admin.py:210 msgid "Build ID" msgstr "" -#: stock/admin.py:216 +#: stock/admin.py:220 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:221 +#: stock/admin.py:225 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:236 +#: stock/admin.py:240 msgid "Review Needed" msgstr "" -#: stock/admin.py:241 +#: stock/admin.py:245 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:256 stock/models.py:900 +#: stock/admin.py:260 stock/models.py:898 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "" -#: stock/api.py:318 +#: stock/api.py:312 msgid "Filter by location depth" msgstr "" -#: stock/api.py:338 +#: stock/api.py:332 +msgid "Filter by top-level locations" +msgstr "" + +#: stock/api.py:347 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:359 +#: stock/api.py:369 stock/serializers.py:1085 msgid "Parent Location" msgstr "" -#: stock/api.py:360 +#: stock/api.py:370 msgid "Filter by parent location" msgstr "" -#: stock/api.py:615 templates/js/translated/table_filters.js:427 +#: stock/api.py:625 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:803 +#: stock/api.py:813 msgid "Part Tree" msgstr "" -#: stock/api.py:833 +#: stock/api.py:843 msgid "Expiry date before" msgstr "" -#: stock/api.py:837 +#: stock/api.py:847 msgid "Expiry date after" msgstr "" -#: stock/api.py:840 stock/templates/stock/item_base.html:439 +#: stock/api.py:850 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:927 +#: stock/api.py:937 msgid "Quantity is required" msgstr "" -#: stock/api.py:933 +#: stock/api.py:943 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:964 +#: stock/api.py:974 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:974 +#: stock/api.py:984 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:1005 +#: stock/api.py:1015 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:59 +#: stock/models.py:60 msgid "Stock Location type" msgstr "" -#: stock/models.py:60 +#: stock/models.py:61 msgid "Stock Location types" msgstr "" -#: stock/models.py:86 +#: stock/models.py:87 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:123 stock/models.py:788 +#: stock/models.py:124 stock/models.py:786 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:124 stock/templates/stock/location.html:186 +#: stock/models.py:125 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "" -#: stock/models.py:166 stock/models.py:949 +#: stock/models.py:167 stock/models.py:947 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "Propriétaire" -#: stock/models.py:167 stock/models.py:950 +#: stock/models.py:168 stock/models.py:948 msgid "Select Owner" msgstr "Sélectionner un propriétaire" -#: stock/models.py:175 +#: stock/models.py:176 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:182 templates/js/translated/stock.js:2781 +#: stock/models.py:183 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:183 +#: stock/models.py:184 msgid "This is an external stock location" msgstr "" -#: stock/models.py:189 templates/js/translated/stock.js:2790 +#: stock/models.py:190 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" -#: stock/models.py:193 +#: stock/models.py:194 msgid "Stock location type of this location" msgstr "" -#: stock/models.py:262 +#: stock/models.py:261 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:643 +#: stock/models.py:641 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:670 stock/serializers.py:419 +#: stock/models.py:668 stock/serializers.py:446 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:687 +#: stock/models.py:685 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:697 stock/models.py:710 +#: stock/models.py:695 stock/models.py:708 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:700 +#: stock/models.py:698 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:724 +#: stock/models.py:722 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:729 +#: stock/models.py:727 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:742 +#: stock/models.py:740 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:758 +#: stock/models.py:756 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:770 +#: stock/models.py:768 msgid "Base part" msgstr "" -#: stock/models.py:780 +#: stock/models.py:778 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:792 +#: stock/models.py:790 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:800 stock/serializers.py:1480 +#: stock/models.py:798 stock/serializers.py:1476 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:811 +#: stock/models.py:809 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:830 +#: stock/models.py:828 msgid "Serial number for this item" msgstr "Numéro de série pour cet article" -#: stock/models.py:844 stock/serializers.py:1463 +#: stock/models.py:842 stock/serializers.py:1459 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:849 +#: stock/models.py:847 msgid "Stock Quantity" msgstr "" -#: stock/models.py:859 +#: stock/models.py:857 msgid "Source Build" msgstr "" -#: stock/models.py:862 +#: stock/models.py:860 msgid "Build for this stock item" msgstr "" -#: stock/models.py:869 stock/templates/stock/item_base.html:363 +#: stock/models.py:867 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:872 +#: stock/models.py:870 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:881 +#: stock/models.py:879 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:885 +#: stock/models.py:883 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:891 +#: stock/models.py:889 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:902 +#: stock/models.py:900 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:920 +#: stock/models.py:918 msgid "Delete on deplete" msgstr "" -#: stock/models.py:921 +#: stock/models.py:919 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:941 +#: stock/models.py:939 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:972 +#: stock/models.py:970 msgid "Converted to part" msgstr "" -#: stock/models.py:1490 +#: stock/models.py:1486 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1496 +#: stock/models.py:1492 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1500 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1510 +#: stock/models.py:1506 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:1515 +#: stock/models.py:1511 msgid "Quantity does not match serial numbers" msgstr "La quantité ne correspond pas au nombre de numéros de série" -#: stock/models.py:1523 stock/serializers.py:658 +#: stock/models.py:1519 stock/serializers.py:660 msgid "Serial numbers already exist" msgstr "Les numéros de série existent déjà" -#: stock/models.py:1620 +#: stock/models.py:1616 msgid "Test template does not exist" msgstr "" -#: stock/models.py:1638 +#: stock/models.py:1634 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1642 +#: stock/models.py:1638 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1645 +#: stock/models.py:1641 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1648 +#: stock/models.py:1644 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1651 +#: stock/models.py:1647 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1654 +#: stock/models.py:1650 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1661 stock/serializers.py:1369 +#: stock/models.py:1657 stock/serializers.py:1365 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1665 +#: stock/models.py:1661 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1673 +#: stock/models.py:1669 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1678 +#: stock/models.py:1674 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1905 +#: stock/models.py:1901 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2310 msgid "Entry notes" msgstr "" -#: stock/models.py:2391 +#: stock/models.py:2378 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2396 +#: stock/models.py:2383 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2423 +#: stock/models.py:2388 +msgid "Invalid value for this test" +msgstr "" + +#: stock/models.py:2412 msgid "Test result" msgstr "" -#: stock/models.py:2430 +#: stock/models.py:2419 msgid "Test output value" msgstr "" -#: stock/models.py:2438 +#: stock/models.py:2427 msgid "Test result attachment" msgstr "" -#: stock/models.py:2442 +#: stock/models.py:2431 msgid "Test notes" msgstr "" -#: stock/models.py:2450 templates/js/translated/stock.js:1548 +#: stock/models.py:2439 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2440 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2457 +#: stock/models.py:2446 msgid "Started" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2447 msgid "The timestamp of the test start" msgstr "" -#: stock/models.py:2464 +#: stock/models.py:2453 msgid "Finished" msgstr "" -#: stock/models.py:2465 +#: stock/models.py:2454 msgid "The timestamp of the test finish" msgstr "" -#: stock/serializers.py:75 +#: stock/serializers.py:74 msgid "Generated batch code" msgstr "" -#: stock/serializers.py:84 +#: stock/serializers.py:83 msgid "Select build order" msgstr "" -#: stock/serializers.py:93 +#: stock/serializers.py:92 msgid "Select stock item to generate batch code for" msgstr "" -#: stock/serializers.py:102 +#: stock/serializers.py:101 msgid "Select location to generate batch code for" msgstr "" -#: stock/serializers.py:111 +#: stock/serializers.py:110 msgid "Select part to generate batch code for" msgstr "" -#: stock/serializers.py:120 +#: stock/serializers.py:119 msgid "Select purchase order" msgstr "" -#: stock/serializers.py:127 +#: stock/serializers.py:126 msgid "Enter quantity for batch code" msgstr "" -#: stock/serializers.py:150 +#: stock/serializers.py:149 msgid "Generated serial number" msgstr "" -#: stock/serializers.py:159 +#: stock/serializers.py:158 msgid "Select part to generate serial number for" msgstr "" -#: stock/serializers.py:167 +#: stock/serializers.py:166 msgid "Quantity of serial numbers to generate" msgstr "" -#: stock/serializers.py:229 +#: stock/serializers.py:228 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:248 +#: stock/serializers.py:247 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:280 +#: stock/serializers.py:279 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:313 +#: stock/serializers.py:315 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:411 +#: stock/serializers.py:438 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:531 +#: stock/serializers.py:558 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:595 msgid "Enter number of stock items to serialize" msgstr "Entrez le nombre d'articles en stock à sérialiser" -#: stock/serializers.py:606 +#: stock/serializers.py:608 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:613 +#: stock/serializers.py:615 msgid "Enter serial numbers for new items" msgstr "Entrez les numéros de série pour les nouveaux articles" -#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 +#: stock/serializers.py:626 stock/serializers.py:1322 stock/serializers.py:1578 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:631 +#: stock/serializers.py:633 msgid "Optional note field" msgstr "" -#: stock/serializers.py:641 +#: stock/serializers.py:643 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:696 +#: stock/serializers.py:698 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:703 +#: stock/serializers.py:705 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:704 +#: stock/serializers.py:706 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 -#: stock/serializers.py:935 +#: stock/serializers.py:711 stock/serializers.py:791 stock/serializers.py:887 +#: stock/serializers.py:937 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:719 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:725 +#: stock/serializers.py:727 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:736 +#: stock/serializers.py:738 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:749 +#: stock/serializers.py:751 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:784 +#: stock/serializers.py:786 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:819 +#: stock/serializers.py:821 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:834 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:849 +#: stock/serializers.py:851 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:880 +#: stock/serializers.py:882 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:917 +#: stock/serializers.py:919 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:923 +#: stock/serializers.py:925 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:1019 stock/serializers.py:1082 +#: stock/serializers.py:1021 stock/serializers.py:1093 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:220 +#: stock/templates/stock/location.html:222 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1198 +#: stock/serializers.py:1086 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: stock/serializers.py:1194 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1202 +#: stock/serializers.py:1198 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1206 +#: stock/serializers.py:1202 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1230 +#: stock/serializers.py:1226 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1236 +#: stock/serializers.py:1232 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1244 +#: stock/serializers.py:1240 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1254 stock/serializers.py:1508 +#: stock/serializers.py:1250 stock/serializers.py:1504 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1333 +#: stock/serializers.py:1329 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1338 +#: stock/serializers.py:1334 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1339 +#: stock/serializers.py:1335 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1344 +#: stock/serializers.py:1340 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1345 +#: stock/serializers.py:1341 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1355 +#: stock/serializers.py:1351 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1422 +#: stock/serializers.py:1418 msgid "No Change" msgstr "" -#: stock/serializers.py:1451 +#: stock/serializers.py:1447 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1470 +#: stock/serializers.py:1466 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1498 +#: stock/serializers.py:1494 msgid "Stock transaction notes" msgstr "" @@ -9450,7 +9532,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276 msgid "Delete Test Data" msgstr "" @@ -9470,11 +9552,11 @@ msgstr "" msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:272 +#: stock/templates/stock/item.html:264 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "" @@ -9760,28 +9842,28 @@ msgstr "" msgid "Location Type" msgstr "" -#: stock/templates/stock/location.html:224 +#: stock/templates/stock/location.html:226 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:225 +#: stock/templates/stock/location.html:227 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:295 +#: stock/templates/stock/location.html:299 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:317 +#: stock/templates/stock/location.html:321 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:390 +#: stock/templates/stock/location.html:394 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:401 +#: stock/templates/stock/location.html:405 msgid "Link Barcode to Stock Location" msgstr "" @@ -9857,15 +9939,15 @@ msgstr "" #: templates/InvenTree/index.html:39 msgid "Subscribed Parts" -msgstr "" +msgstr "Pièces suivies" #: templates/InvenTree/index.html:52 msgid "Subscribed Categories" -msgstr "" +msgstr "Catégories favorites" #: templates/InvenTree/index.html:62 msgid "Latest Parts" -msgstr "" +msgstr "Dernières pièces" #: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" @@ -9873,7 +9955,7 @@ msgstr "" #: templates/InvenTree/index.html:106 msgid "Recently Updated" -msgstr "" +msgstr "Mis à jour récemment" #: templates/InvenTree/index.html:134 msgid "Depleted Stock" @@ -10010,7 +10092,7 @@ msgstr "" #: templates/InvenTree/settings/login.html:27 templates/account/signup.html:5 #: templates/socialaccount/signup.html:5 msgid "Signup" -msgstr "" +msgstr "Inscription" #: templates/InvenTree/settings/login.html:36 msgid "Single Sign On" @@ -10205,20 +10287,20 @@ msgstr "" msgid "Pricing Settings" msgstr "" -#: templates/InvenTree/settings/pricing.html:34 +#: templates/InvenTree/settings/pricing.html:35 msgid "Exchange Rates" msgstr "" -#: templates/InvenTree/settings/pricing.html:38 +#: templates/InvenTree/settings/pricing.html:39 msgid "Update Now" msgstr "" -#: templates/InvenTree/settings/pricing.html:46 -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 msgid "Last Update" msgstr "" -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:51 msgid "Never" msgstr "" @@ -10275,8 +10357,8 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:547 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 +#: templates/js/translated/part.js:393 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:402 msgid "Delete" msgstr "Supprimer" @@ -10316,12 +10398,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 -#: templates/js/translated/part.js:1645 +#: templates/js/translated/part.js:1646 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 -#: templates/js/translated/part.js:1646 +#: templates/js/translated/part.js:1647 msgid "Delete Template" msgstr "" @@ -10374,11 +10456,11 @@ msgstr "Paramètres Utilisateur" #: templates/InvenTree/settings/sidebar.html:9 msgid "Account" -msgstr "" +msgstr "Compte" #: templates/InvenTree/settings/sidebar.html:11 msgid "Display" -msgstr "" +msgstr "Affichage" #: templates/InvenTree/settings/sidebar.html:13 msgid "Home Page" @@ -10711,7 +10793,7 @@ msgid "Submit Bug Report" msgstr "" #: templates/about.html:91 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 +#: templates/js/translated/helpers.js:589 msgid "copy to clipboard" msgstr "" @@ -10772,17 +10854,17 @@ msgstr "" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" -msgstr "" +msgstr "Voulez-vous vraiment vous déconnecter ?" #: templates/account/logout.html:27 templates/allauth_2fa/backup_tokens.html:35 -#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:44 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45 msgid "Return to Site" -msgstr "" +msgstr "Retourner au site" #: templates/account/password_reset.html:5 #: templates/account/password_reset.html:12 msgid "Password Reset" -msgstr "" +msgstr "Réinitialisation mot de passe" #: 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." @@ -10790,15 +10872,15 @@ msgstr "" #: templates/account/password_reset.html:23 msgid "Reset My Password" -msgstr "" +msgstr "Réinitialiser mon mot de passe" #: templates/account/password_reset.html:27 templates/account/signup.html:37 msgid "This function is currently disabled. Please contact an administrator." -msgstr "" +msgstr "Cette fonction est actuellement désactivée. Veuillez contacter un administrateur." #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" -msgstr "" +msgstr "Mauvais jeton" #: templates/account/password_reset_from_key.html:11 #, python-format @@ -10807,7 +10889,7 @@ msgstr "" #: templates/account/password_reset_from_key.html:18 msgid "Change password" -msgstr "" +msgstr "Changer de mot de passe" #: templates/account/password_reset_from_key.html:22 msgid "Your password is now changed." @@ -10889,15 +10971,19 @@ msgstr "Étape 1" msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "Scanner le QR code ci-dessous avec un générateur de token de votre choix (par exemple Google Authenticator)." -#: templates/allauth_2fa/setup.html:23 +#: templates/allauth_2fa/setup.html:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 msgid "Step 2" msgstr "Étape 2" -#: templates/allauth_2fa/setup.html:27 +#: templates/allauth_2fa/setup.html:28 msgid "Input a token generated by the app:" msgstr "Entrer un token généré par l'application :" -#: templates/allauth_2fa/setup.html:37 +#: templates/allauth_2fa/setup.html:38 msgid "Verify" msgstr "Vérifier" @@ -10976,7 +11062,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3217 +#: templates/js/translated/part.js:3219 msgid "Minimum Quantity" msgstr "" @@ -11064,27 +11150,27 @@ msgstr "" msgid "Delete attachments" msgstr "" -#: templates/js/translated/attachment.js:253 +#: templates/js/translated/attachment.js:260 msgid "Attachment actions" msgstr "" -#: templates/js/translated/attachment.js:275 +#: templates/js/translated/attachment.js:294 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:315 +#: templates/js/translated/attachment.js:334 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:365 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:366 +#: templates/js/translated/attachment.js:385 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:374 +#: templates/js/translated/attachment.js:393 msgid "Delete attachment" msgstr "" @@ -11365,7 +11451,7 @@ msgid "Includes variant and substitute stock" msgstr "" #: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 -#: templates/js/translated/part.js:1256 +#: templates/js/translated/part.js:1257 #: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" @@ -11462,7 +11548,7 @@ msgstr "" #: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 #: templates/js/translated/stock.js:296 msgid "Latest serial number" -msgstr "" +msgstr "Dernier numéro de série" #: templates/js/translated/build.js:379 msgid "The Bill of Materials contains trackable parts" @@ -11692,7 +11778,7 @@ msgstr "" #: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 #: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 -#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11735,8 +11821,8 @@ msgstr "" msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 -#: templates/js/translated/part.js:1202 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:791 +#: templates/js/translated/part.js:1203 msgid "Trackable part" msgstr "" @@ -11922,7 +12008,7 @@ msgid "Delete Parameters" msgstr "" #: templates/js/translated/company.js:1191 -#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2244 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2245 msgid "Order parts" msgstr "" @@ -11939,34 +12025,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:1279 -#: templates/js/translated/company.js:1567 templates/js/translated/part.js:798 -#: templates/js/translated/part.js:1210 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Template part" msgstr "" #: templates/js/translated/company.js:1283 -#: templates/js/translated/company.js:1571 templates/js/translated/part.js:802 -#: templates/js/translated/part.js:1214 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:803 +#: templates/js/translated/part.js:1215 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1464 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1465 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1527 +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1528 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1528 +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1529 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1433 +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1434 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1549 +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1550 msgid "Delete Parameter" msgstr "" @@ -12100,23 +12186,23 @@ msgstr "" msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2499 +#: templates/js/translated/forms.js:2500 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3113 +#: templates/js/translated/forms.js:3114 msgid "Select Columns" msgstr "" @@ -12217,7 +12303,7 @@ msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 -#: templates/js/translated/part.js:1604 +#: templates/js/translated/part.js:1605 msgid "ID" msgstr "" @@ -12298,347 +12384,343 @@ msgstr "" 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 +#: templates/js/translated/part.js:333 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:355 +#: templates/js/translated/part.js:356 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:356 +#: templates/js/translated/part.js:357 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:370 +#: templates/js/translated/part.js:371 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:383 +#: templates/js/translated/part.js:384 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:388 +#: templates/js/translated/part.js:389 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:397 +#: templates/js/translated/part.js:398 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:401 +#: templates/js/translated/part.js:402 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:406 +#: templates/js/translated/part.js:407 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:430 +#: templates/js/translated/part.js:431 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:432 +#: templates/js/translated/part.js:433 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:433 +#: templates/js/translated/part.js:434 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:462 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:463 +#: templates/js/translated/part.js:464 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:474 +#: templates/js/translated/part.js:475 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:531 +#: templates/js/translated/part.js:532 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:532 +#: templates/js/translated/part.js:533 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:546 +#: templates/js/translated/part.js:547 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:548 +#: templates/js/translated/part.js:549 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:549 +#: templates/js/translated/part.js:550 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:550 +#: templates/js/translated/part.js:551 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:557 +#: templates/js/translated/part.js:558 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:593 +#: templates/js/translated/part.js:594 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:595 +#: templates/js/translated/part.js:596 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:600 +#: templates/js/translated/part.js:601 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:602 +#: templates/js/translated/part.js:603 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:619 +#: templates/js/translated/part.js:620 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:629 +#: templates/js/translated/part.js:630 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:632 +#: templates/js/translated/part.js:633 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:657 +#: templates/js/translated/part.js:658 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:685 +#: templates/js/translated/part.js:686 #: templates/js/translated/table_filters.js:747 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:688 +#: templates/js/translated/part.js:689 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:748 +#: templates/js/translated/part.js:749 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:771 +#: templates/js/translated/part.js:772 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +#: templates/js/translated/part.js:795 templates/js/translated/part.js:1207 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:806 +#: templates/js/translated/part.js:807 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:810 +#: templates/js/translated/part.js:811 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:897 +#: templates/js/translated/part.js:898 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:901 +#: templates/js/translated/part.js:902 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1050 +#: templates/js/translated/part.js:1051 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1145 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +#: templates/js/translated/part.js:1113 templates/js/translated/part.js:1155 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1281 +#: templates/js/translated/part.js:1282 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1599 +#: templates/js/translated/part.js:1600 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1662 +#: templates/js/translated/part.js:1663 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1674 +#: templates/js/translated/part.js:1675 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1682 +#: templates/js/translated/part.js:1683 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1716 +#: templates/js/translated/part.js:1717 #: templates/js/translated/purchase_order.js:1654 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1860 +#: templates/js/translated/part.js:1861 #: templates/js/translated/purchase_order.js:2153 #: templates/js/translated/return_order.js:755 #: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1906 +#: templates/js/translated/part.js:1907 #: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1970 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1991 +#: templates/js/translated/part.js:1992 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 +#: templates/js/translated/part.js:2080 templates/js/translated/part.js:2506 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2200 +#: templates/js/translated/part.js:2201 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2205 +#: templates/js/translated/part.js:2206 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2235 +#: templates/js/translated/part.js:2236 msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2286 +#: templates/js/translated/part.js:2287 msgid "part" msgstr "" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2288 msgid "parts" msgstr "" -#: templates/js/translated/part.js:2383 +#: templates/js/translated/part.js:2384 msgid "No category" msgstr "" -#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2546 +#: templates/js/translated/part.js:2547 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2644 +#: templates/js/translated/part.js:2645 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2760 +#: templates/js/translated/part.js:2761 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2776 +#: templates/js/translated/part.js:2777 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2865 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2887 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/part.js:2938 templates/js/translated/stock.js:1457 #: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2940 +#: templates/js/translated/part.js:2942 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2956 +#: templates/js/translated/part.js:2958 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2970 +#: templates/js/translated/part.js:2972 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3051 templates/js/translated/part.js:3052 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3052 +#: templates/js/translated/part.js:3054 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3058 +#: templates/js/translated/part.js:3060 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3108 +#: templates/js/translated/part.js:3110 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3114 +#: templates/js/translated/part.js:3116 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3210 +#: templates/js/translated/part.js:3212 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3226 +#: templates/js/translated/part.js:3228 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3271 +#: templates/js/translated/part.js:3273 msgid "Minimum Stock Level" msgstr "" @@ -13246,10 +13328,6 @@ msgstr "" 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 "" @@ -13418,7 +13496,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:401 +#: templates/js/translated/stock.js:1042 users/models.py:392 msgid "Add" msgstr "Ajouter" @@ -14150,7 +14228,7 @@ msgstr "" #: templates/socialaccount/login.html:24 msgid "Continue" -msgstr "" +msgstr "Continuer" #: templates/socialaccount/login.html:29 msgid "Invalid SSO Provider" @@ -14309,34 +14387,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:384 +#: users/models.py:375 msgid "Permission set" msgstr "Droit défini" -#: users/models.py:393 +#: users/models.py:384 msgid "Group" msgstr "Groupe" -#: users/models.py:397 +#: users/models.py:388 msgid "View" msgstr "Vue" -#: users/models.py:397 +#: users/models.py:388 msgid "Permission to view items" msgstr "Droit de voir des éléments" -#: users/models.py:401 +#: users/models.py:392 msgid "Permission to add items" msgstr "Droit d'ajouter des éléments" -#: users/models.py:405 +#: users/models.py:396 msgid "Change" msgstr "Modifier" -#: users/models.py:407 +#: users/models.py:398 msgid "Permissions to edit items" msgstr "Droit de modifier des élément" -#: users/models.py:413 +#: users/models.py:404 msgid "Permission to delete items" msgstr "Droit de supprimer des éléments" + diff --git a/src/backend/InvenTree/locale/he/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/he/LC_MESSAGES/django.po index 422c975cbd..7510094408 100644 --- a/src/backend/InvenTree/locale/he/LC_MESSAGES/django.po +++ b/src/backend/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-05-31 07:08+0000\n" -"PO-Revision-Date: 2024-05-27 11:54\n" +"POT-Creation-Date: 2024-06-26 03:18+0000\n" +"PO-Revision-Date: 2024-06-26 06:04\n" "Last-Translator: \n" "Language-Team: Hebrew\n" "Language: he_IL\n" @@ -21,7 +21,7 @@ msgstr "" msgid "API endpoint not found" msgstr "" -#: InvenTree/api.py:536 +#: InvenTree/api.py:520 msgid "User does not have permission to view this model" msgstr "" @@ -52,25 +52,25 @@ msgstr "" msgid "Error details can be found in the admin panel" msgstr "" -#: InvenTree/fields.py:139 +#: InvenTree/fields.py:136 msgid "Enter date" msgstr "הזן תאריך סיום" -#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 -#: build/serializers.py:531 build/templates/build/sidebar.html:21 -#: company/models.py:849 company/templates/company/sidebar.html:37 -#: order/models.py:1332 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:205 InvenTree/models.py:918 build/serializers.py:452 +#: build/serializers.py:530 build/templates/build/sidebar.html:21 +#: company/models.py:817 company/templates/company/sidebar.html:37 +#: order/models.py:1296 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:3218 part/templates/part/part_sidebar.html:63 +#: part/models.py:3183 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_report.html:172 -#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 -#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 -#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 -#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:230 stock/models.py:2309 stock/models.py:2431 +#: stock/serializers.py:632 stock/serializers.py:790 stock/serializers.py:886 +#: stock/serializers.py:936 stock/serializers.py:1239 stock/serializers.py:1328 +#: stock/serializers.py:1493 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1080 +#: templates/js/translated/part.js:1081 #: templates/js/translated/purchase_order.js:2200 #: templates/js/translated/return_order.js:775 #: templates/js/translated/sales_order.js:1103 @@ -120,15 +120,15 @@ msgstr "אישור כתובת אימייל" msgid "You must type the same email each time." msgstr "חובה לרשום את אותו אימייל בכל פעם." -#: InvenTree/forms.py:253 InvenTree/forms.py:261 +#: InvenTree/forms.py:248 InvenTree/forms.py:256 msgid "The provided primary email address is not valid." msgstr "" -#: InvenTree/forms.py:268 +#: InvenTree/forms.py:263 msgid "The provided email domain is not approved." msgstr "" -#: InvenTree/forms.py:395 +#: InvenTree/forms.py:390 msgid "Registration is disabled." msgstr "" @@ -171,35 +171,35 @@ msgstr "" msgid "Remove HTML tags from this value" msgstr "" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Connection error" msgstr "" -#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 msgid "Server responded with invalid status code" msgstr "" -#: InvenTree/helpers_model.py:158 +#: InvenTree/helpers_model.py:148 msgid "Exception occurred" msgstr "" -#: InvenTree/helpers_model.py:168 +#: InvenTree/helpers_model.py:158 msgid "Server responded with invalid Content-Length value" msgstr "" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:161 msgid "Image size is too large" msgstr "" -#: InvenTree/helpers_model.py:183 +#: InvenTree/helpers_model.py:173 msgid "Image download exceeded maximum size" msgstr "" -#: InvenTree/helpers_model.py:188 +#: InvenTree/helpers_model.py:178 msgid "Remote server returned empty response" msgstr "" -#: InvenTree/helpers_model.py:196 +#: InvenTree/helpers_model.py:186 msgid "Supplied URL is not a valid image file" msgstr "" @@ -296,46 +296,50 @@ msgid "Portuguese (Brazilian)" msgstr "" #: InvenTree/locales.py:41 +msgid "Romanian" +msgstr "" + +#: InvenTree/locales.py:42 msgid "Russian" msgstr "רוסית" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:43 msgid "Slovak" msgstr "" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:44 msgid "Slovenian" msgstr "" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:45 msgid "Serbian" msgstr "" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:46 msgid "Swedish" msgstr "שוודית" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:47 msgid "Thai" msgstr "תאילנדית" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:48 msgid "Turkish" msgstr "טורקית" -#: InvenTree/locales.py:48 +#: InvenTree/locales.py:49 msgid "Ukrainian" msgstr "" -#: InvenTree/locales.py:49 +#: InvenTree/locales.py:50 msgid "Vietnamese" msgstr "ווייטנאמית" -#: InvenTree/locales.py:50 +#: InvenTree/locales.py:51 msgid "Chinese (Simplified)" msgstr "" -#: InvenTree/locales.py:51 +#: InvenTree/locales.py:52 msgid "Chinese (Traditional)" msgstr "" @@ -344,153 +348,65 @@ msgstr "" msgid "[{site_name}] Log in to the app" msgstr "" -#: InvenTree/magic_login.py:38 company/models.py:133 +#: InvenTree/magic_login.py:38 company/models.py:136 #: company/templates/company/company_base.html:138 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:677 msgid "Email" msgstr "" -#: InvenTree/models.py:107 +#: InvenTree/models.py:105 msgid "Error running plugin validation" msgstr "" -#: InvenTree/models.py:176 +#: InvenTree/models.py:174 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:182 +#: InvenTree/models.py:180 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:183 +#: InvenTree/models.py:181 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:413 +#: InvenTree/models.py:408 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:420 +#: InvenTree/models.py:415 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:426 +#: InvenTree/models.py:421 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:437 +#: InvenTree/models.py:432 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:445 +#: InvenTree/models.py:440 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:476 +#: InvenTree/models.py:471 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:550 -msgid "Missing file" -msgstr "קובץ חסר" - -#: InvenTree/models.py:551 -msgid "Missing external link" -msgstr "חסר קישור חיצוני" - -#: InvenTree/models.py:572 stock/models.py:2437 -#: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:326 -msgid "Attachment" -msgstr "קובץ מצורף" - -#: InvenTree/models.py:573 -msgid "Select file to attach" -msgstr "בחר קובץ לצירוף" - -#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:831 -#: order/models.py:303 order/models.py:1337 order/models.py:1753 -#: part/admin.py:55 part/models.py:962 -#: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_report.html:164 -#: stock/admin.py:225 templates/js/translated/company.js:1319 -#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2455 -#: templates/js/translated/purchase_order.js:2040 -#: templates/js/translated/purchase_order.js:2204 -#: templates/js/translated/return_order.js:779 -#: templates/js/translated/sales_order.js:1092 -#: templates/js/translated/sales_order.js:2023 -msgid "Link" -msgstr "קישור" - -#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 -#: stock/models.py:836 -msgid "Link to external URL" -msgstr "קישור חיצוני" - -#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:341 -msgid "Comment" -msgstr "הערה" - -#: InvenTree/models.py:589 -msgid "File comment" -msgstr "הערת קובץ" - -#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 -#: common/models.py:2518 common/models.py:2742 common/models.py:2743 -#: common/models.py:2988 common/models.py:2989 part/models.py:3228 -#: part/models.py:3315 part/models.py:3408 part/models.py:3436 -#: plugin/models.py:259 plugin/models.py:260 -#: report/templates/report/inventree_test_report.html:105 -#: templates/js/translated/stock.js:3036 users/models.py:111 -msgid "User" -msgstr "משתמש" - -#: InvenTree/models.py:602 -msgid "upload date" -msgstr "תאריך העלאה" - -#: InvenTree/models.py:624 -msgid "Filename must not be empty" -msgstr "חובה למלא שם קובץ" - -#: InvenTree/models.py:635 -msgid "Invalid attachment directory" -msgstr "תיקיית קובץ שגויה" - -#: InvenTree/models.py:665 -#, python-brace-format -msgid "Filename contains illegal character '{c}'" -msgstr "שם הקובץ מכיל תו '{c}' שאינו חוקי" - -#: InvenTree/models.py:668 -msgid "Filename missing extension" -msgstr "" - -#: InvenTree/models.py:677 -msgid "Attachment with this filename already exists" -msgstr "" - -#: InvenTree/models.py:684 -msgid "Error renaming file" -msgstr "שגיאה בשינוי שם פריט" - -#: InvenTree/models.py:860 +#: InvenTree/models.py:719 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:877 +#: InvenTree/models.py:736 msgid "Invalid choice" msgstr "בחירה שגויה" -#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 -#: common/serializers.py:403 company/models.py:614 machine/models.py:24 -#: part/models.py:898 part/models.py:3659 plugin/models.py:50 -#: report/models.py:149 stock/models.py:72 +#: InvenTree/models.py:766 common/models.py:2623 common/models.py:3036 +#: common/serializers.py:408 company/models.py:580 machine/models.py:24 +#: part/models.py:891 part/models.py:3639 plugin/models.py:51 +#: report/models.py:150 stock/models.py:73 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:83 @@ -501,25 +417,25 @@ msgstr "בחירה שגויה" #: templates/js/translated/company.js:724 #: templates/js/translated/company.js:913 #: templates/js/translated/company.js:1165 -#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 -#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1187 +#: templates/js/translated/part.js:1475 templates/js/translated/part.js:1611 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "שם" -#: InvenTree/models.py:913 build/models.py:218 -#: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:523 company/models.py:840 +#: InvenTree/models.py:772 build/models.py:220 +#: build/templates/build/detail.html:24 common/models.py:138 +#: company/models.py:509 company/models.py:808 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 order/models.py:289 -#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 -#: part/models.py:3674 part/templates/part/category.html:82 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:914 +#: part/models.py:3654 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:155 -#: report/models.py:509 report/models.py:535 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 #: report/templates/report/inventree_build_order_report.html:117 -#: stock/admin.py:55 stock/models.py:78 stock/templates/stock/location.html:125 +#: stock/admin.py:54 stock/models.py:79 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 @@ -528,10 +444,10 @@ msgstr "שם" #: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 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:2354 -#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1239 +#: templates/js/translated/part.js:1484 templates/js/translated/part.js:1622 +#: templates/js/translated/part.js:1959 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2897 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1706 #: templates/js/translated/purchase_order.js:1849 @@ -544,149 +460,141 @@ msgstr "שם" msgid "Description" msgstr "תיאור" -#: InvenTree/models.py:914 stock/models.py:79 +#: InvenTree/models.py:773 stock/models.py:80 msgid "Description (optional)" msgstr "תיאור (לא חובה)" -#: InvenTree/models.py:923 -msgid "parent" -msgstr "מקור" - -#: InvenTree/models.py:929 templates/js/translated/part.js:2793 +#: InvenTree/models.py:788 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "" -#: InvenTree/models.py:1035 +#: InvenTree/models.py:918 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:1064 +#: InvenTree/models.py:947 msgid "Barcode Data" msgstr "" -#: InvenTree/models.py:1065 +#: InvenTree/models.py:948 msgid "Third party barcode data" msgstr "" -#: InvenTree/models.py:1071 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:1072 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:1125 +#: InvenTree/models.py:1008 msgid "Existing barcode found" msgstr "" -#: InvenTree/models.py:1168 +#: InvenTree/models.py:1051 msgid "Server Error" msgstr "" -#: InvenTree/models.py:1169 +#: InvenTree/models.py:1052 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:62 part/models.py:4212 +#: InvenTree/serializers.py:63 part/models.py:4192 msgid "Must be a valid number" msgstr "המספר חייב להיות תקין" -#: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:3036 +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3001 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "" -#: InvenTree/serializers.py:102 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:441 +#: InvenTree/serializers.py:442 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:453 +#: InvenTree/serializers.py:454 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:472 +#: InvenTree/serializers.py:473 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:474 +#: InvenTree/serializers.py:475 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:481 +#: InvenTree/serializers.py:482 msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:542 -msgid "Filename" -msgstr "שם קובץ" - -#: InvenTree/serializers.py:576 +#: InvenTree/serializers.py:540 msgid "Invalid value" msgstr "" -#: InvenTree/serializers.py:596 +#: InvenTree/serializers.py:560 msgid "Data File" msgstr "" -#: InvenTree/serializers.py:597 +#: InvenTree/serializers.py:561 msgid "Select data file for upload" msgstr "" -#: InvenTree/serializers.py:614 +#: InvenTree/serializers.py:578 msgid "Unsupported file type" msgstr "" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:584 msgid "File is too large" msgstr "" -#: InvenTree/serializers.py:641 +#: InvenTree/serializers.py:605 msgid "No columns found in file" msgstr "" -#: InvenTree/serializers.py:644 +#: InvenTree/serializers.py:608 msgid "No data rows found in file" msgstr "" -#: InvenTree/serializers.py:757 +#: InvenTree/serializers.py:721 msgid "No data rows provided" msgstr "" -#: InvenTree/serializers.py:760 +#: InvenTree/serializers.py:724 msgid "No data columns supplied" msgstr "" -#: InvenTree/serializers.py:827 +#: InvenTree/serializers.py:791 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "" -#: InvenTree/serializers.py:836 +#: InvenTree/serializers.py:800 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/serializers.py:859 +#: InvenTree/serializers.py:840 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:860 +#: InvenTree/serializers.py:841 msgid "URL of remote image file" msgstr "" -#: InvenTree/serializers.py:878 +#: InvenTree/serializers.py:859 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/status.py:66 part/serializers.py:1178 +#: InvenTree/status.py:66 part/serializers.py:1174 msgid "Background worker check failed" msgstr "" @@ -698,27 +606,27 @@ msgstr "" msgid "InvenTree system health checks failed" msgstr "" -#: InvenTree/templatetags/inventree_extras.py:183 +#: InvenTree/templatetags/inventree_extras.py:184 msgid "Unknown database" msgstr "" -#: InvenTree/validators.py:31 InvenTree/validators.py:33 +#: InvenTree/validators.py:32 InvenTree/validators.py:34 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:39 +#: InvenTree/validators.py:40 msgid "Not a valid currency code" msgstr "קוד מטבע לא מאושר" -#: InvenTree/validators.py:121 InvenTree/validators.py:137 +#: InvenTree/validators.py:118 InvenTree/validators.py:134 msgid "Overage value must not be negative" msgstr "" -#: InvenTree/validators.py:139 +#: InvenTree/validators.py:136 msgid "Overage must not exceed 100%" msgstr "" -#: InvenTree/validators.py:145 +#: InvenTree/validators.py:142 msgid "Invalid value for overage" msgstr "" @@ -750,14 +658,14 @@ msgstr "" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: build/api.py:299 part/models.py:4070 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:300 part/models.py:4084 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4064 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2529 #: templates/js/translated/table_filters.js:186 @@ -778,30 +686,30 @@ msgstr "" msgid "Allocated" msgstr "" -#: build/api.py:311 company/models.py:904 company/serializers.py:383 +#: build/api.py:311 company/models.py:872 company/serializers.py:359 #: 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:2561 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:234 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 -#: templates/js/translated/part.js:699 +#: templates/js/translated/part.js:693 templates/js/translated/part.js:695 +#: templates/js/translated/part.js:700 #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:575 msgid "Available" msgstr "" -#: build/models.py:83 build/templates/build/build_base.html:9 +#: build/models.py:85 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_report.html:105 -#: stock/serializers.py:83 templates/email/build_order_completed.html:16 +#: stock/serializers.py:82 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:2892 msgid "Build Order" msgstr "" -#: build/models.py:84 build/templates/build/build_base.html:13 +#: build/models.py:86 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 @@ -812,25 +720,25 @@ msgstr "" msgid "Build Orders" msgstr "" -#: build/models.py:131 +#: build/models.py:133 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:142 order/models.py:240 +#: build/models.py:144 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "" -#: build/models.py:148 +#: build/models.py:150 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:209 +#: build/models.py:211 msgid "Build Order Reference" msgstr "" -#: build/models.py:210 order/models.py:463 order/models.py:928 -#: order/models.py:1325 order/models.py:2056 part/admin.py:419 -#: part/models.py:4105 part/templates/part/upload_bom.html:54 +#: build/models.py:212 order/models.py:463 order/models.py:926 +#: order/models.py:1289 order/models.py:2020 part/admin.py:411 +#: part/models.py:4085 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_purchase_order_report.html:28 #: report/templates/report/inventree_return_order_report.html:26 @@ -844,27 +752,27 @@ msgstr "" msgid "Reference" msgstr "מקט" -#: build/models.py:221 +#: build/models.py:223 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:229 build/templates/build/build_base.html:183 +#: build/models.py:231 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "מקור הבנייה" -#: build/models.py:230 +#: build/models.py:232 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:235 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 -#: order/models.py:1450 order/models.py:1595 order/models.py:1596 -#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 -#: part/models.py:3191 part/models.py:3335 part/models.py:3358 -#: part/models.py:3379 part/models.py:3401 part/models.py:3511 -#: part/models.py:3807 part/models.py:3963 part/models.py:4056 -#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 +#: build/models.py:237 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1026 order/api.py:805 +#: order/models.py:1414 order/models.py:1559 order/models.py:1560 +#: part/api.py:1494 part/api.py:1788 part/models.py:395 part/models.py:3012 +#: part/models.py:3156 part/models.py:3303 part/models.py:3324 +#: part/models.py:3346 part/models.py:3477 part/models.py:3787 +#: part/models.py:3943 part/models.py:4036 part/models.py:4395 +#: part/serializers.py:1120 part/serializers.py:1726 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -875,8 +783,8 @@ msgstr "" #: report/templates/report/inventree_return_order_report.html:24 #: report/templates/report/inventree_sales_order_report.html:27 #: report/templates/report/inventree_stock_location_report.html:102 -#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 -#: stock/serializers.py:818 templates/InvenTree/search.html:82 +#: stock/serializers.py:109 stock/serializers.py:157 stock/serializers.py:423 +#: stock/serializers.py:820 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 @@ -889,8 +797,8 @@ msgstr "" #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 -#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2323 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:1944 templates/js/translated/part.js:2016 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 #: templates/js/translated/purchase_order.js:751 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1848 @@ -908,107 +816,107 @@ msgstr "" msgid "Part" msgstr "רכיב" -#: build/models.py:243 +#: build/models.py:245 msgid "Select part to build" msgstr "בחר רכיב לבנייה" -#: build/models.py:248 +#: build/models.py:250 msgid "Sales Order Reference" msgstr "" -#: build/models.py:252 +#: build/models.py:254 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:257 build/serializers.py:1000 +#: build/models.py:259 build/serializers.py:999 #: templates/js/translated/build.js:1731 #: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "" -#: build/models.py:261 +#: build/models.py:263 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:266 +#: build/models.py:268 msgid "Destination Location" msgstr "" -#: build/models.py:270 +#: build/models.py:272 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:274 +#: build/models.py:276 msgid "Build Quantity" msgstr "כמות בניה" -#: build/models.py:277 +#: build/models.py:279 msgid "Number of stock items to build" msgstr "" -#: build/models.py:281 +#: build/models.py:283 msgid "Completed items" msgstr "" -#: build/models.py:283 +#: build/models.py:285 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:287 +#: build/models.py:289 msgid "Build Status" msgstr "" -#: build/models.py:291 +#: build/models.py:293 msgid "Build status code" msgstr "" -#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 -#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 +#: build/models.py:302 build/serializers.py:286 order/serializers.py:580 +#: stock/models.py:838 stock/serializers.py:74 stock/serializers.py:1458 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "" -#: build/models.py:304 build/serializers.py:288 +#: build/models.py:306 build/serializers.py:287 msgid "Batch code for this build output" msgstr "" -#: build/models.py:307 order/models.py:316 order/serializers.py:120 -#: part/models.py:1122 part/templates/part/part_base.html:310 +#: build/models.py:309 order/models.py:316 order/serializers.py:119 +#: part/models.py:1115 part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:338 #: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "" -#: build/models.py:311 +#: build/models.py:313 msgid "Target completion date" msgstr "" -#: build/models.py:312 +#: build/models.py:314 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:315 order/models.py:521 order/models.py:2101 +#: build/models.py:317 order/models.py:521 order/models.py:2065 #: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "" -#: build/models.py:321 +#: build/models.py:323 msgid "completed by" msgstr "" -#: build/models.py:329 templates/js/translated/build.js:2207 +#: build/models.py:331 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "" -#: build/models.py:330 +#: build/models.py:332 msgid "User who issued this build order" msgstr "" -#: build/models.py:338 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:145 +#: build/models.py:340 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:147 #: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:232 part/models.py:1139 +#: order/templates/order/sales_order_base.html:232 part/models.py:1132 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_report.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 @@ -1019,31 +927,36 @@ msgstr "" msgid "Responsible" msgstr "" -#: build/models.py:339 +#: build/models.py:341 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:344 build/templates/build/detail.html:108 +#: build/models.py:346 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:184 -#: part/templates/part/part_base.html:383 stock/models.py:836 +#: part/templates/part/part_base.html:383 stock/models.py:834 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "" -#: build/models.py:349 +#: build/models.py:347 common/models.py:3178 part/models.py:956 +#: stock/models.py:834 +msgid "Link to external URL" +msgstr "קישור חיצוני" + +#: build/models.py:351 msgid "Build Priority" msgstr "" -#: build/models.py:352 +#: build/models.py:354 msgid "Priority of this build order" msgstr "" -#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: build/models.py:361 common/models.py:131 order/admin.py:18 #: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 #: templates/js/translated/build.js:2144 #: templates/js/translated/purchase_order.js:1710 @@ -1054,65 +967,65 @@ msgstr "" msgid "Project Code" msgstr "" -#: build/models.py:360 +#: build/models.py:362 msgid "Project code for this build order" msgstr "" -#: build/models.py:593 build/models.py:658 +#: build/models.py:595 build/models.py:660 msgid "Failed to offload task to complete build allocations" msgstr "" -#: build/models.py:615 +#: build/models.py:617 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:621 +#: build/models.py:623 msgid "A build order has been completed" msgstr "" -#: build/models.py:847 build/models.py:932 +#: build/models.py:849 build/models.py:934 msgid "No build output specified" msgstr "" -#: build/models.py:850 +#: build/models.py:852 msgid "Build output is already completed" msgstr "" -#: build/models.py:853 +#: build/models.py:855 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 -#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 -#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 -#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 +#: build/models.py:938 build/serializers.py:219 build/serializers.py:268 +#: build/serializers.py:866 order/models.py:559 order/serializers.py:432 +#: order/serializers.py:575 part/serializers.py:1484 part/serializers.py:1884 +#: stock/models.py:677 stock/models.py:1495 stock/serializers.py:603 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:941 build/serializers.py:225 +#: build/models.py:943 build/serializers.py:224 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1001 build/serializers.py:548 +#: build/models.py:1003 build/serializers.py:547 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1352 +#: build/models.py:1344 msgid "Build Order Line Item" msgstr "" -#: build/models.py:1377 +#: build/models.py:1369 msgid "Build object" msgstr "" -#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 -#: build/serializers.py:254 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2539 -#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 -#: part/forms.py:48 part/models.py:3205 part/models.py:4078 +#: build/models.py:1383 build/models.py:1639 build/serializers.py:206 +#: build/serializers.py:253 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2509 +#: order/models.py:1272 order/models.py:1931 order/serializers.py:1327 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3170 part/models.py:4058 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1121,8 +1034,8 @@ msgstr "" #: report/templates/report/inventree_sales_order_report.html:29 #: report/templates/report/inventree_stock_location_report.html:104 #: report/templates/report/inventree_test_report.html:90 -#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 -#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:125 stock/serializers.py:165 stock/serializers.py:594 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1133,8 +1046,8 @@ msgstr "" #: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 #: templates/js/translated/model_renderers.js:236 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:962 +#: templates/js/translated/part.js:1812 templates/js/translated/part.js:3342 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1154,38 +1067,38 @@ msgstr "" msgid "Quantity" msgstr "כמות" -#: build/models.py:1392 +#: build/models.py:1384 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1472 +#: build/models.py:1464 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1481 +#: build/models.py:1473 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1491 order/models.py:1918 +#: build/models.py:1483 order/models.py:1882 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1497 order/models.py:1921 +#: build/models.py:1489 order/models.py:1885 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1503 +#: build/models.py:1495 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1562 +#: build/models.py:1554 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 -#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 -#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: build/models.py:1626 build/serializers.py:846 order/serializers.py:1171 +#: order/serializers.py:1192 stock/models.py:358 stock/serializers.py:91 +#: stock/serializers.py:697 stock/serializers.py:1177 stock/serializers.py:1289 #: stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 @@ -1201,70 +1114,70 @@ msgstr "" msgid "Stock Item" msgstr "" -#: build/models.py:1635 +#: build/models.py:1627 msgid "Source stock item" msgstr "" -#: build/models.py:1648 +#: build/models.py:1640 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1656 +#: build/models.py:1648 msgid "Install into" msgstr "" -#: build/models.py:1657 +#: build/models.py:1649 msgid "Destination stock item" msgstr "" -#: build/serializers.py:157 build/serializers.py:876 +#: build/serializers.py:156 build/serializers.py:875 #: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "" -#: build/serializers.py:169 +#: build/serializers.py:168 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:173 +#: build/serializers.py:172 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:177 +#: build/serializers.py:176 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:188 +#: build/serializers.py:187 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:208 build/serializers.py:255 +#: build/serializers.py:207 build/serializers.py:254 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:276 +#: build/serializers.py:275 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:279 +#: build/serializers.py:278 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:294 order/serializers.py:589 order/serializers.py:1343 -#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:293 order/serializers.py:588 order/serializers.py:1331 +#: stock/serializers.py:614 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "מספרים סידוריים" -#: build/serializers.py:295 +#: build/serializers.py:294 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 -#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 -#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 -#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 -#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 +#: build/serializers.py:299 build/serializers.py:440 build/serializers.py:512 +#: order/serializers.py:564 order/serializers.py:672 order/serializers.py:1656 +#: part/serializers.py:1140 stock/serializers.py:100 stock/serializers.py:625 +#: stock/serializers.py:785 stock/serializers.py:881 stock/serializers.py:1321 +#: stock/serializers.py:1577 stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:1001 #: templates/js/translated/build.js:2372 @@ -1280,54 +1193,54 @@ msgstr "" msgid "Location" msgstr "" -#: build/serializers.py:301 +#: build/serializers.py:300 msgid "Stock location for build output" msgstr "" -#: build/serializers.py:315 +#: build/serializers.py:314 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:316 +#: build/serializers.py:315 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:331 +#: build/serializers.py:330 msgid "Serial numbers must be provided for trackable parts" msgstr "" -#: build/serializers.py:356 stock/api.py:1031 +#: build/serializers.py:355 stock/api.py:1041 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:403 build/serializers.py:465 build/serializers.py:554 +#: build/serializers.py:402 build/serializers.py:464 build/serializers.py:553 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:442 +#: build/serializers.py:441 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:448 +#: build/serializers.py:447 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:449 +#: build/serializers.py:448 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:454 +#: build/serializers.py:453 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:514 +#: build/serializers.py:513 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:520 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:952 -#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 -#: stock/serializers.py:930 stock/serializers.py:1469 +#: build/serializers.py:519 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2044 order/serializers.py:596 stock/admin.py:164 +#: stock/serializers.py:932 stock/serializers.py:1465 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 @@ -1339,188 +1252,188 @@ msgstr "" msgid "Status" msgstr "" -#: build/serializers.py:526 +#: build/serializers.py:525 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:527 +#: build/serializers.py:526 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:611 msgid "Consume Allocated Stock" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:612 msgid "Consume any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:619 +#: build/serializers.py:618 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:620 +#: build/serializers.py:619 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:646 msgid "Not permitted" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:647 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:648 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:679 +#: build/serializers.py:678 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:681 +#: build/serializers.py:680 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:691 +#: build/serializers.py:690 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:696 +#: build/serializers.py:695 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:697 +#: build/serializers.py:696 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:707 templates/js/translated/build.js:315 +#: build/serializers.py:706 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:712 order/serializers.py:301 order/serializers.py:1246 +#: build/serializers.py:711 order/serializers.py:300 order/serializers.py:1234 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:713 +#: build/serializers.py:712 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:723 templates/js/translated/build.js:319 +#: build/serializers.py:722 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:732 templates/js/translated/build.js:303 +#: build/serializers.py:731 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:770 +#: build/serializers.py:769 msgid "Build Line" msgstr "" -#: build/serializers.py:780 +#: build/serializers.py:779 msgid "Build output" msgstr "" -#: build/serializers.py:788 +#: build/serializers.py:787 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:824 +#: build/serializers.py:823 msgid "Build Line Item" msgstr "" -#: build/serializers.py:838 +#: build/serializers.py:837 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:853 stock/serializers.py:1194 +#: build/serializers.py:852 stock/serializers.py:1190 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:901 order/serializers.py:1237 +#: build/serializers.py:900 order/serializers.py:1225 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:907 +#: build/serializers.py:906 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:914 +#: build/serializers.py:913 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:938 order/serializers.py:1489 +#: build/serializers.py:937 order/serializers.py:1477 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:1001 +#: build/serializers.py:1000 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:1009 +#: build/serializers.py:1008 msgid "Exclude Location" msgstr "" -#: build/serializers.py:1010 +#: build/serializers.py:1009 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:1015 +#: build/serializers.py:1014 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:1016 +#: build/serializers.py:1015 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:1021 +#: build/serializers.py:1020 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:1022 +#: build/serializers.py:1021 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:1027 +#: build/serializers.py:1026 msgid "Optional Items" msgstr "" -#: build/serializers.py:1028 +#: build/serializers.py:1027 msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1050 +#: build/serializers.py:1049 msgid "Failed to start auto-allocation task" msgstr "" -#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 -#: stock/api.py:794 +#: build/serializers.py:1139 part/models.py:3953 part/models.py:4387 +#: stock/api.py:804 msgid "BOM Item" msgstr "" -#: build/serializers.py:1149 templates/js/translated/index.js:130 +#: build/serializers.py:1148 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:832 part/serializers.py:1506 +#: build/serializers.py:1153 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:828 part/serializers.py:1502 #: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 -#: templates/js/translated/build.js:2613 templates/js/translated/part.js:709 -#: templates/js/translated/part.js:2148 +#: templates/js/translated/build.js:2613 templates/js/translated/part.js:710 +#: templates/js/translated/part.js:2149 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1159 part/serializers.py:1508 +#: build/serializers.py:1158 part/serializers.py:1504 #: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 +#: build/serializers.py:1163 part/bom.py:172 part/serializers.py:1527 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1929 msgid "Available Stock" @@ -1544,7 +1457,7 @@ msgstr "מבוטל" #: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 #: order/status_codes.py:44 order/status_codes.py:69 #: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:165 report/models.py:443 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 msgid "Complete" msgstr "הושלם" @@ -1674,11 +1587,11 @@ msgstr "" #: build/templates/build/build_base.html:160 #: build/templates/build/detail.html:138 order/models.py:309 -#: order/models.py:1343 order/templates/order/order_base.html:186 +#: order/models.py:1307 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:196 #: report/templates/report/inventree_build_order_report.html:125 -#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1831 #: templates/js/translated/purchase_order.js:1739 #: templates/js/translated/purchase_order.js:2147 #: templates/js/translated/return_order.js:346 @@ -1711,8 +1624,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 -#: order/models.py:1587 order/models.py:1701 order/models.py:1855 +#: build/templates/build/detail.html:101 order/api.py:1463 order/models.py:845 +#: order/models.py:1551 order/models.py:1665 order/models.py:1819 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_report.html:135 @@ -1762,7 +1675,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1479 +#: build/templates/build/detail.html:49 order/models.py:1443 #: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "" @@ -1775,7 +1688,7 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:163 +#: build/templates/build/detail.html:80 stock/admin.py:162 #: stock/templates/stock/item_base.html:162 #: templates/js/translated/build.js:1380 #: templates/js/translated/model_renderers.js:241 @@ -1894,11 +1807,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:436 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -1914,6 +1827,34 @@ msgstr "" msgid "Incomplete Outputs" msgstr "" +#: common/api.py:689 +msgid "Is Link" +msgstr "" + +#: common/api.py:697 +msgid "Is File" +msgstr "" + +#: common/api.py:739 +msgid "User does not have permission to delete this attachment" +msgstr "" + +#: common/currency.py:130 +msgid "Invalid currency code" +msgstr "" + +#: common/currency.py:132 +msgid "Duplicate currency code" +msgstr "" + +#: common/currency.py:137 +msgid "No valid currency codes provided" +msgstr "" + +#: common/currency.py:154 +msgid "No plugin" +msgstr "" + #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1952,1507 +1893,1512 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:71 +#: common/models.py:73 msgid "Updated" msgstr "" -#: common/models.py:72 +#: common/models.py:74 msgid "Timestamp of last update" msgstr "" -#: common/models.py:105 +#: common/models.py:107 msgid "Site URL is locked by configuration" msgstr "" -#: common/models.py:130 +#: common/models.py:132 msgid "Unique project code" msgstr "" -#: common/models.py:137 +#: common/models.py:139 msgid "Project description" msgstr "" -#: common/models.py:146 +#: common/models.py:148 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:766 +#: common/models.py:765 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:770 +#: common/models.py:769 msgid "Settings value" msgstr "" -#: common/models.py:822 +#: common/models.py:821 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:838 +#: common/models.py:837 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:846 +#: common/models.py:845 msgid "Value must be an integer value" msgstr "" -#: common/models.py:883 +#: common/models.py:882 msgid "Key string must be unique" msgstr "" -#: common/models.py:1115 +#: common/models.py:1114 msgid "No group" msgstr "" -#: common/models.py:1158 -msgid "An empty domain is not allowed." -msgstr "" - -#: common/models.py:1160 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "" - -#: common/models.py:1172 -msgid "No plugin" -msgstr "" - -#: common/models.py:1260 +#: common/models.py:1213 msgid "Restart required" msgstr "" -#: common/models.py:1262 +#: common/models.py:1215 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1269 +#: common/models.py:1222 msgid "Pending migrations" msgstr "" -#: common/models.py:1270 +#: common/models.py:1223 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1275 +#: common/models.py:1228 msgid "Server Instance Name" msgstr "" -#: common/models.py:1277 +#: common/models.py:1230 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1281 +#: common/models.py:1234 msgid "Use instance name" msgstr "" -#: common/models.py:1282 +#: common/models.py:1235 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1287 +#: common/models.py:1240 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1288 +#: common/models.py:1241 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1293 company/models.py:108 company/models.py:109 +#: common/models.py:1246 company/models.py:111 company/models.py:112 msgid "Company name" msgstr "" -#: common/models.py:1294 +#: common/models.py:1247 msgid "Internal company name" msgstr "" -#: common/models.py:1298 +#: common/models.py:1251 msgid "Base URL" msgstr "" -#: common/models.py:1299 +#: common/models.py:1252 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1305 +#: common/models.py:1258 msgid "Default Currency" msgstr "" -#: common/models.py:1306 +#: common/models.py:1259 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1312 +#: common/models.py:1265 +msgid "Supported Currencies" +msgstr "" + +#: common/models.py:1266 +msgid "List of supported currency codes" +msgstr "" + +#: common/models.py:1272 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1314 +#: common/models.py:1274 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1317 common/models.py:1373 common/models.py:1386 -#: common/models.py:1394 common/models.py:1403 common/models.py:1412 -#: common/models.py:1620 common/models.py:1642 common/models.py:1757 -#: common/models.py:2076 +#: common/models.py:1277 common/models.py:1333 common/models.py:1346 +#: common/models.py:1354 common/models.py:1363 common/models.py:1372 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:2046 msgid "days" msgstr "" -#: common/models.py:1321 +#: common/models.py:1281 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1322 +#: common/models.py:1282 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1327 +#: common/models.py:1287 msgid "Download from URL" msgstr "" -#: common/models.py:1329 +#: common/models.py:1289 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1335 +#: common/models.py:1295 msgid "Download Size Limit" msgstr "" -#: common/models.py:1336 +#: common/models.py:1296 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1342 +#: common/models.py:1302 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1344 +#: common/models.py:1304 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:1349 +#: common/models.py:1309 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1350 +#: common/models.py:1310 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1355 +#: common/models.py:1315 msgid "Require confirm" msgstr "" -#: common/models.py:1356 +#: common/models.py:1316 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1361 +#: common/models.py:1321 msgid "Tree Depth" msgstr "" -#: common/models.py:1363 +#: common/models.py:1323 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1369 +#: common/models.py:1329 msgid "Update Check Interval" msgstr "" -#: common/models.py:1370 +#: common/models.py:1330 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1376 +#: common/models.py:1336 msgid "Automatic Backup" msgstr "" -#: common/models.py:1377 +#: common/models.py:1337 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1382 +#: common/models.py:1342 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1383 +#: common/models.py:1343 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1389 +#: common/models.py:1349 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1391 +#: common/models.py:1351 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1398 +#: common/models.py:1358 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1400 +#: common/models.py:1360 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1407 +#: common/models.py:1367 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1409 +#: common/models.py:1369 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1416 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1376 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1417 +#: common/models.py:1377 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1422 +#: common/models.py:1382 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1423 +#: common/models.py:1383 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1429 +#: common/models.py:1389 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1430 +#: common/models.py:1390 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1435 +#: common/models.py:1395 msgid "Part Revisions" msgstr "" -#: common/models.py:1436 +#: common/models.py:1396 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1441 +#: common/models.py:1401 msgid "Allow Deletion from Assembly" msgstr "" -#: common/models.py:1442 +#: common/models.py:1402 msgid "Allow deletion of parts which are used in an assembly" msgstr "" -#: common/models.py:1447 +#: common/models.py:1407 msgid "IPN Regex" msgstr "" -#: common/models.py:1448 +#: common/models.py:1408 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1451 +#: common/models.py:1411 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1452 +#: common/models.py:1412 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1457 +#: common/models.py:1417 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1458 +#: common/models.py:1418 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1463 +#: common/models.py:1423 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1464 +#: common/models.py:1424 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1469 +#: common/models.py:1429 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1470 +#: common/models.py:1430 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1475 +#: common/models.py:1435 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1476 +#: common/models.py:1436 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1481 +#: common/models.py:1441 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1482 +#: common/models.py:1442 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1487 part/admin.py:108 part/models.py:3815 -#: report/models.py:293 report/models.py:360 report/serializers.py:90 -#: report/serializers.py:131 stock/serializers.py:228 +#: common/models.py:1447 part/admin.py:108 part/models.py:3795 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:227 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1488 +#: common/models.py:1448 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 +#: common/models.py:1453 part/admin.py:91 part/admin.py:425 part/models.py:1052 #: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" msgstr "" -#: common/models.py:1494 +#: common/models.py:1454 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1499 part/admin.py:95 part/models.py:1065 +#: common/models.py:1459 part/admin.py:95 part/models.py:1058 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1500 +#: common/models.py:1460 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1505 part/admin.py:100 part/models.py:1077 +#: common/models.py:1465 part/admin.py:100 part/models.py:1070 msgid "Purchaseable" msgstr "" -#: common/models.py:1506 +#: common/models.py:1466 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1511 part/admin.py:104 part/models.py:1083 +#: common/models.py:1471 part/admin.py:104 part/models.py:1076 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1512 +#: common/models.py:1472 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1517 part/admin.py:113 part/models.py:1071 +#: common/models.py:1477 part/admin.py:113 part/models.py:1064 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" msgstr "" -#: common/models.py:1518 +#: common/models.py:1478 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1523 part/admin.py:117 part/models.py:1093 +#: common/models.py:1483 part/admin.py:117 part/models.py:1086 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" msgstr "" -#: common/models.py:1524 +#: common/models.py:1484 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1529 +#: common/models.py:1489 msgid "Show Import in Views" msgstr "" -#: common/models.py:1530 +#: common/models.py:1490 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1535 +#: common/models.py:1495 msgid "Show related parts" msgstr "" -#: common/models.py:1536 +#: common/models.py:1496 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1541 +#: common/models.py:1501 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1542 +#: common/models.py:1502 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1547 templates/js/translated/part.js:107 +#: common/models.py:1507 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1549 +#: common/models.py:1509 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1555 +#: common/models.py:1515 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1556 +#: common/models.py:1516 msgid "Format to display the part name" msgstr "" -#: common/models.py:1562 +#: common/models.py:1522 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1563 +#: common/models.py:1523 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1567 +#: common/models.py:1527 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1569 +#: common/models.py:1529 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1575 +#: common/models.py:1535 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1577 +#: common/models.py:1537 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1583 +#: common/models.py:1548 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1585 +#: common/models.py:1550 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1591 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1593 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1599 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1601 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1607 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1609 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1615 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1617 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1630 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1632 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1638 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1640 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1647 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1648 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1653 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1655 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1661 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1662 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1667 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1669 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1675 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1676 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1681 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1682 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1687 +#: common/models.py:1657 msgid "Log Report Errors" msgstr "" -#: common/models.py:1688 +#: common/models.py:1658 msgid "Log errors which occur when generating reports" msgstr "" -#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:301 +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:302 msgid "Page Size" msgstr "" -#: common/models.py:1694 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1699 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1700 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1705 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1707 +#: common/models.py:1677 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1713 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1714 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1719 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1720 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1725 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1727 +#: common/models.py:1697 msgid "Determines default behavior when a stock item is depleted" msgstr "" -#: common/models.py:1733 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1735 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1740 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1741 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1746 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1747 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1752 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1754 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1761 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1762 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1767 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1768 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1773 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1774 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1778 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1779 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1784 +#: common/models.py:1754 msgid "Check BOM when installing items" msgstr "" -#: common/models.py:1786 +#: common/models.py:1756 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "" -#: common/models.py:1792 +#: common/models.py:1762 msgid "Allow Out of Stock Transfer" msgstr "" -#: common/models.py:1794 +#: common/models.py:1764 msgid "Allow stock items which are not in stock to be transferred between stock locations" msgstr "" -#: common/models.py:1800 +#: common/models.py:1770 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1802 +#: common/models.py:1772 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1808 common/models.py:1836 common/models.py:1858 -#: common/models.py:1894 +#: common/models.py:1778 common/models.py:1806 common/models.py:1828 +#: common/models.py:1864 msgid "Require Responsible Owner" msgstr "" -#: common/models.py:1809 common/models.py:1837 common/models.py:1859 -#: common/models.py:1895 +#: common/models.py:1779 common/models.py:1807 common/models.py:1829 +#: common/models.py:1865 msgid "A responsible owner must be assigned to each order" msgstr "" -#: common/models.py:1814 +#: common/models.py:1784 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1816 +#: common/models.py:1786 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:1822 +#: common/models.py:1792 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1823 +#: common/models.py:1793 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1828 +#: common/models.py:1798 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1830 +#: common/models.py:1800 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1842 +#: common/models.py:1812 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1844 +#: common/models.py:1814 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1850 +#: common/models.py:1820 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1852 +#: common/models.py:1822 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1864 +#: common/models.py:1834 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1865 +#: common/models.py:1835 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1870 +#: common/models.py:1840 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1872 +#: common/models.py:1842 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1878 +#: common/models.py:1848 msgid "Mark Shipped Orders as Complete" msgstr "" -#: common/models.py:1880 +#: common/models.py:1850 msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" msgstr "" -#: common/models.py:1886 +#: common/models.py:1856 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1888 +#: common/models.py:1858 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1900 +#: common/models.py:1870 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1902 +#: common/models.py:1872 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1908 +#: common/models.py:1878 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1910 +#: common/models.py:1880 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1917 +#: common/models.py:1887 msgid "Enable password forgot" msgstr "" -#: common/models.py:1918 +#: common/models.py:1888 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1923 +#: common/models.py:1893 msgid "Enable registration" msgstr "" -#: common/models.py:1924 +#: common/models.py:1894 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1929 +#: common/models.py:1899 msgid "Enable SSO" msgstr "" -#: common/models.py:1930 +#: common/models.py:1900 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1935 +#: common/models.py:1905 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1937 +#: common/models.py:1907 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1943 +#: common/models.py:1913 msgid "Email required" msgstr "" -#: common/models.py:1944 +#: common/models.py:1914 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1949 +#: common/models.py:1919 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1951 +#: common/models.py:1921 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1957 +#: common/models.py:1927 msgid "Mail twice" msgstr "" -#: common/models.py:1958 +#: common/models.py:1928 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1963 +#: common/models.py:1933 msgid "Password twice" msgstr "" -#: common/models.py:1964 +#: common/models.py:1934 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1969 +#: common/models.py:1939 msgid "Allowed domains" msgstr "" -#: common/models.py:1971 +#: common/models.py:1941 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1977 +#: common/models.py:1947 msgid "Group on signup" msgstr "" -#: common/models.py:1978 +#: common/models.py:1948 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1983 +#: common/models.py:1953 msgid "Enforce MFA" msgstr "" -#: common/models.py:1984 +#: common/models.py:1954 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1989 +#: common/models.py:1959 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1991 +#: common/models.py:1961 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1999 +#: common/models.py:1969 msgid "Check for plugin updates" msgstr "" -#: common/models.py:2000 +#: common/models.py:1970 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:2006 +#: common/models.py:1976 msgid "Enable URL integration" msgstr "" -#: common/models.py:2007 +#: common/models.py:1977 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:2013 +#: common/models.py:1983 msgid "Enable navigation integration" msgstr "" -#: common/models.py:2014 +#: common/models.py:1984 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:2020 +#: common/models.py:1990 msgid "Enable app integration" msgstr "" -#: common/models.py:2021 +#: common/models.py:1991 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:2027 +#: common/models.py:1997 msgid "Enable schedule integration" msgstr "" -#: common/models.py:2028 +#: common/models.py:1998 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:2034 +#: common/models.py:2004 msgid "Enable event integration" msgstr "" -#: common/models.py:2035 +#: common/models.py:2005 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:2041 +#: common/models.py:2011 msgid "Enable project codes" msgstr "" -#: common/models.py:2042 +#: common/models.py:2012 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:2047 +#: common/models.py:2017 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:2049 +#: common/models.py:2019 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:2055 +#: common/models.py:2025 msgid "Exclude External Locations" msgstr "" -#: common/models.py:2057 +#: common/models.py:2027 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:2063 +#: common/models.py:2033 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:2065 +#: common/models.py:2035 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:2071 +#: common/models.py:2041 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:2073 +#: common/models.py:2043 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:2080 +#: common/models.py:2050 msgid "Display Users full names" msgstr "" -#: common/models.py:2081 +#: common/models.py:2051 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:2086 +#: common/models.py:2056 msgid "Enable Test Station Data" msgstr "" -#: common/models.py:2087 +#: common/models.py:2057 msgid "Enable test station data collection for test results" msgstr "" -#: common/models.py:2099 common/models.py:2509 +#: common/models.py:2069 common/models.py:2479 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2142 +#: common/models.py:2112 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2144 +#: common/models.py:2114 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2150 +#: common/models.py:2120 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2151 +#: common/models.py:2121 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2156 +#: common/models.py:2126 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2157 +#: common/models.py:2127 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2162 +#: common/models.py:2132 msgid "Show latest parts" msgstr "" -#: common/models.py:2163 +#: common/models.py:2133 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2168 +#: common/models.py:2138 msgid "Show invalid BOMs" msgstr "" -#: common/models.py:2169 +#: common/models.py:2139 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2174 +#: common/models.py:2144 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2175 +#: common/models.py:2145 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2180 +#: common/models.py:2150 msgid "Show low stock" msgstr "" -#: common/models.py:2181 +#: common/models.py:2151 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2186 +#: common/models.py:2156 msgid "Show depleted stock" msgstr "" -#: common/models.py:2187 +#: common/models.py:2157 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2192 +#: common/models.py:2162 msgid "Show needed stock" msgstr "" -#: common/models.py:2193 +#: common/models.py:2163 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2198 +#: common/models.py:2168 msgid "Show expired stock" msgstr "" -#: common/models.py:2199 +#: common/models.py:2169 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2204 +#: common/models.py:2174 msgid "Show stale stock" msgstr "" -#: common/models.py:2205 +#: common/models.py:2175 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2210 +#: common/models.py:2180 msgid "Show pending builds" msgstr "" -#: common/models.py:2211 +#: common/models.py:2181 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2216 +#: common/models.py:2186 msgid "Show overdue builds" msgstr "" -#: common/models.py:2217 +#: common/models.py:2187 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2222 +#: common/models.py:2192 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2223 +#: common/models.py:2193 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2228 +#: common/models.py:2198 msgid "Show overdue POs" msgstr "" -#: common/models.py:2229 +#: common/models.py:2199 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2234 +#: common/models.py:2204 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2235 +#: common/models.py:2205 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2240 +#: common/models.py:2210 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2241 +#: common/models.py:2211 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2246 +#: common/models.py:2216 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2247 +#: common/models.py:2217 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2252 +#: common/models.py:2222 msgid "Show News" msgstr "" -#: common/models.py:2253 +#: common/models.py:2223 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2258 +#: common/models.py:2228 msgid "Inline label display" msgstr "" -#: common/models.py:2260 +#: common/models.py:2230 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2266 +#: common/models.py:2236 msgid "Default label printer" msgstr "" -#: common/models.py:2268 +#: common/models.py:2238 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2274 +#: common/models.py:2244 msgid "Inline report display" msgstr "" -#: common/models.py:2276 +#: common/models.py:2246 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2282 +#: common/models.py:2252 msgid "Search Parts" msgstr "" -#: common/models.py:2283 +#: common/models.py:2253 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2288 +#: common/models.py:2258 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2289 +#: common/models.py:2259 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2294 +#: common/models.py:2264 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2295 +#: common/models.py:2265 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2300 +#: common/models.py:2270 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2301 +#: common/models.py:2271 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2306 +#: common/models.py:2276 msgid "Search Categories" msgstr "" -#: common/models.py:2307 +#: common/models.py:2277 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2312 +#: common/models.py:2282 msgid "Search Stock" msgstr "" -#: common/models.py:2313 +#: common/models.py:2283 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2318 +#: common/models.py:2288 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2320 +#: common/models.py:2290 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2326 +#: common/models.py:2296 msgid "Search Locations" msgstr "" -#: common/models.py:2327 +#: common/models.py:2297 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2332 +#: common/models.py:2302 msgid "Search Companies" msgstr "" -#: common/models.py:2333 +#: common/models.py:2303 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2338 +#: common/models.py:2308 msgid "Search Build Orders" msgstr "" -#: common/models.py:2339 +#: common/models.py:2309 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2344 +#: common/models.py:2314 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2345 +#: common/models.py:2315 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2350 +#: common/models.py:2320 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2352 +#: common/models.py:2322 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2358 +#: common/models.py:2328 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2359 +#: common/models.py:2329 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2364 +#: common/models.py:2334 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2366 +#: common/models.py:2336 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2372 +#: common/models.py:2342 msgid "Search Return Orders" msgstr "" -#: common/models.py:2373 +#: common/models.py:2343 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2378 +#: common/models.py:2348 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2380 +#: common/models.py:2350 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2386 +#: common/models.py:2356 msgid "Search Preview Results" msgstr "" -#: common/models.py:2388 +#: common/models.py:2358 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2394 +#: common/models.py:2364 msgid "Regex Search" msgstr "" -#: common/models.py:2395 +#: common/models.py:2365 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2400 +#: common/models.py:2370 msgid "Whole Word Search" msgstr "" -#: common/models.py:2401 +#: common/models.py:2371 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2406 +#: common/models.py:2376 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2407 +#: common/models.py:2377 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2412 +#: common/models.py:2382 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2413 +#: common/models.py:2383 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2418 +#: common/models.py:2388 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2419 +#: common/models.py:2389 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2424 +#: common/models.py:2394 msgid "Date Format" msgstr "" -#: common/models.py:2425 +#: common/models.py:2395 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2438 part/templates/part/detail.html:41 +#: common/models.py:2408 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2439 +#: common/models.py:2409 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2444 part/templates/part/detail.html:62 +#: common/models.py:2414 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2446 +#: common/models.py:2416 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2452 +#: common/models.py:2422 msgid "Table String Length" msgstr "" -#: common/models.py:2454 +#: common/models.py:2424 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2460 +#: common/models.py:2430 msgid "Default part label template" msgstr "" -#: common/models.py:2461 +#: common/models.py:2431 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2466 +#: common/models.py:2436 msgid "Default stock item template" msgstr "" -#: common/models.py:2468 +#: common/models.py:2438 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2474 +#: common/models.py:2444 msgid "Default stock location label template" msgstr "" -#: common/models.py:2476 +#: common/models.py:2446 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2482 +#: common/models.py:2452 msgid "Default build line label template" msgstr "" -#: common/models.py:2484 +#: common/models.py:2454 msgid "The build line label template to be automatically selected" msgstr "" -#: common/models.py:2490 +#: common/models.py:2460 msgid "Receive error reports" msgstr "" -#: common/models.py:2491 +#: common/models.py:2461 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2496 +#: common/models.py:2466 msgid "Last used printing machines" msgstr "" -#: common/models.py:2497 +#: common/models.py:2467 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2540 +#: common/models.py:2487 common/models.py:2488 common/models.py:2636 +#: common/models.py:2637 common/models.py:2882 common/models.py:2883 +#: common/models.py:3193 common/models.py:3194 part/models.py:3193 +#: part/models.py:3280 part/models.py:3353 part/models.py:3381 +#: plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "משתמש" + +#: common/models.py:2510 msgid "Price break quantity" msgstr "" -#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1382 order/models.py:2301 -#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 +#: common/models.py:2517 company/serializers.py:472 order/admin.py:42 +#: order/models.py:1346 order/models.py:2265 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1886 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:740 msgid "Price" msgstr "" -#: common/models.py:2548 +#: common/models.py:2518 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2719 common/models.py:2904 +#: common/models.py:2613 common/models.py:2798 msgid "Endpoint" msgstr "" -#: common/models.py:2720 +#: common/models.py:2614 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2730 +#: common/models.py:2624 msgid "Name for this webhook" msgstr "" -#: common/models.py:2734 company/models.py:160 company/models.py:814 -#: machine/models.py:39 part/admin.py:88 part/models.py:1088 -#: plugin/models.py:65 templates/js/translated/company.js:523 +#: common/models.py:2628 company/models.py:163 company/models.py:782 +#: machine/models.py:39 part/admin.py:88 part/models.py:1081 +#: plugin/models.py:66 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3462,101 +3408,118 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2734 +#: common/models.py:2628 msgid "Is this webhook active" msgstr "" -#: common/models.py:2750 users/models.py:159 +#: common/models.py:2644 users/models.py:159 msgid "Token" msgstr "" -#: common/models.py:2751 +#: common/models.py:2645 msgid "Token for access" msgstr "" -#: common/models.py:2759 +#: common/models.py:2653 msgid "Secret" msgstr "" -#: common/models.py:2760 +#: common/models.py:2654 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2868 +#: common/models.py:2762 msgid "Message ID" msgstr "" -#: common/models.py:2869 +#: common/models.py:2763 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2877 +#: common/models.py:2771 msgid "Host" msgstr "" -#: common/models.py:2878 +#: common/models.py:2772 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2886 +#: common/models.py:2780 msgid "Header" msgstr "" -#: common/models.py:2887 +#: common/models.py:2781 msgid "Header of this message" msgstr "" -#: common/models.py:2894 +#: common/models.py:2788 msgid "Body" msgstr "" -#: common/models.py:2895 +#: common/models.py:2789 msgid "Body of this message" msgstr "" -#: common/models.py:2905 +#: common/models.py:2799 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2910 +#: common/models.py:2804 msgid "Worked on" msgstr "" -#: common/models.py:2911 +#: common/models.py:2805 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:3037 +#: common/models.py:2931 msgid "Id" msgstr "" -#: common/models.py:3039 templates/js/translated/company.js:965 +#: common/models.py:2933 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:3043 templates/js/translated/news.js:60 +#: common/models.py:2935 common/models.py:3177 company/models.py:149 +#: company/models.py:440 company/models.py:500 company/models.py:799 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +#: part/admin.py:55 part/models.py:955 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "קישור" + +#: common/models.py:2937 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:3045 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2939 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:3047 templates/js/translated/news.js:52 +#: common/models.py:2941 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Read" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Was this news item read?" msgstr "" -#: common/models.py:3067 company/models.py:156 part/models.py:972 +#: common/models.py:2961 company/models.py:159 part/models.py:965 #: 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.html:35 @@ -3566,34 +3529,89 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:3067 +#: common/models.py:2961 msgid "Image file" msgstr "" -#: common/models.py:3109 +#: common/models.py:2973 common/models.py:3161 +msgid "Target model type for this image" +msgstr "" + +#: common/models.py:2977 +msgid "Target model ID for this image" +msgstr "" + +#: common/models.py:3018 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3128 +#: common/models.py:3037 msgid "Unit name" msgstr "" -#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3044 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3136 +#: common/models.py:3045 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3052 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3144 +#: common/models.py:3053 msgid "Unit definition" msgstr "" +#: common/models.py:3111 common/models.py:3168 stock/models.py:2426 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "קובץ מצורף" + +#: common/models.py:3123 +msgid "Missing file" +msgstr "קובץ חסר" + +#: common/models.py:3124 +msgid "Missing external link" +msgstr "חסר קישור חיצוני" + +#: common/models.py:3169 +msgid "Select file to attach" +msgstr "בחר קובץ לצירוף" + +#: common/models.py:3184 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "הערה" + +#: common/models.py:3185 +msgid "Attachment comment" +msgstr "" + +#: common/models.py:3201 +msgid "Upload date" +msgstr "" + +#: common/models.py:3202 +msgid "Date the file was uploaded" +msgstr "" + +#: common/models.py:3206 +msgid "File size" +msgstr "" + +#: common/models.py:3206 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3244 common/serializers.py:553 +msgid "Invalid model type specified for attachment" +msgstr "" + #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" @@ -3628,66 +3646,103 @@ msgstr "" msgid "Error raised by plugin" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:371 msgid "Is Running" msgstr "" -#: common/serializers.py:372 +#: common/serializers.py:377 msgid "Pending Tasks" msgstr "" -#: common/serializers.py:378 +#: common/serializers.py:383 msgid "Scheduled Tasks" msgstr "" -#: common/serializers.py:384 +#: common/serializers.py:389 msgid "Failed Tasks" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Task ID" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Unique task ID" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock time" msgstr "" -#: common/serializers.py:403 +#: common/serializers.py:408 msgid "Task name" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function name" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Arguments" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Task arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Keyword Arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Task keyword arguments" msgstr "" +#: common/serializers.py:525 +msgid "Filename" +msgstr "שם קובץ" + +#: common/serializers.py:532 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: common/serializers.py:559 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "" + +#: common/validators.py:33 +msgid "No attachment model type provided" +msgstr "" + +#: common/validators.py:39 +msgid "Invalid attachment model type" +msgstr "" + +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "" + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +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 @@ -3726,210 +3781,222 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/api.py:164 +#: company/api.py:144 msgid "Part is Active" msgstr "" -#: company/api.py:168 +#: company/api.py:148 msgid "Manufacturer is Active" msgstr "" -#: company/api.py:317 +#: company/api.py:281 msgid "Supplier Part is Active" msgstr "" -#: company/api.py:321 +#: company/api.py:285 msgid "Internal Part is Active" msgstr "" -#: company/api.py:325 +#: company/api.py:289 msgid "Supplier is Active" msgstr "" -#: company/models.py:114 +#: company/models.py:100 company/models.py:365 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:822 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "" + +#: company/models.py:117 msgid "Company description" msgstr "" -#: company/models.py:115 +#: company/models.py:118 msgid "Description of the company" msgstr "" -#: company/models.py:120 company/templates/company/company_base.html:106 +#: company/models.py:123 company/templates/company/company_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:532 msgid "Website" msgstr "" -#: company/models.py:120 +#: company/models.py:123 msgid "Company website URL" msgstr "" -#: company/models.py:125 +#: company/models.py:128 msgid "Phone number" msgstr "" -#: company/models.py:127 +#: company/models.py:130 msgid "Contact phone number" msgstr "" -#: company/models.py:134 +#: company/models.py:137 msgid "Contact email address" msgstr "" -#: company/models.py:139 company/templates/company/company_base.html:145 +#: company/models.py:142 company/templates/company/company_base.html:145 #: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "" -#: company/models.py:141 +#: company/models.py:144 msgid "Point of contact" msgstr "" -#: company/models.py:147 +#: company/models.py:150 msgid "Link to external company information" msgstr "" -#: company/models.py:160 +#: company/models.py:163 msgid "Is this company active?" msgstr "" -#: company/models.py:165 +#: company/models.py:168 msgid "is customer" msgstr "" -#: company/models.py:166 +#: company/models.py:169 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:171 +#: company/models.py:174 msgid "is supplier" msgstr "" -#: company/models.py:172 +#: company/models.py:175 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:177 +#: company/models.py:180 msgid "is manufacturer" msgstr "" -#: company/models.py:178 +#: company/models.py:181 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:186 +#: company/models.py:189 msgid "Default currency used for this company" msgstr "" -#: company/models.py:273 company/models.py:382 -#: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:812 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 -msgid "Company" -msgstr "" - -#: company/models.py:383 +#: company/models.py:366 msgid "Select company" msgstr "" -#: company/models.py:388 +#: company/models.py:371 msgid "Address title" msgstr "" -#: company/models.py:389 +#: company/models.py:372 msgid "Title describing the address entry" msgstr "" -#: company/models.py:395 +#: company/models.py:378 msgid "Primary address" msgstr "" -#: company/models.py:396 +#: company/models.py:379 msgid "Set as primary address" msgstr "" -#: company/models.py:401 templates/js/translated/company.js:914 +#: company/models.py:384 templates/js/translated/company.js:914 #: templates/js/translated/company.js:971 msgid "Line 1" msgstr "" -#: company/models.py:402 +#: company/models.py:385 msgid "Address line 1" msgstr "" -#: company/models.py:408 templates/js/translated/company.js:915 +#: company/models.py:391 templates/js/translated/company.js:915 #: templates/js/translated/company.js:977 msgid "Line 2" msgstr "" -#: company/models.py:409 +#: company/models.py:392 msgid "Address line 2" msgstr "" -#: company/models.py:415 company/models.py:416 +#: company/models.py:398 company/models.py:399 #: templates/js/translated/company.js:983 msgid "Postal code" msgstr "" -#: company/models.py:422 +#: company/models.py:405 msgid "City/Region" msgstr "" -#: company/models.py:423 +#: company/models.py:406 msgid "Postal code city/region" msgstr "" -#: company/models.py:429 +#: company/models.py:412 msgid "State/Province" msgstr "" -#: company/models.py:430 +#: company/models.py:413 msgid "State or province" msgstr "" -#: company/models.py:436 templates/js/translated/company.js:1001 +#: company/models.py:419 templates/js/translated/company.js:1001 msgid "Country" msgstr "" -#: company/models.py:437 +#: company/models.py:420 msgid "Address country" msgstr "" -#: company/models.py:443 +#: company/models.py:426 msgid "Courier shipping notes" msgstr "" -#: company/models.py:444 +#: company/models.py:427 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:450 +#: company/models.py:433 msgid "Internal shipping notes" msgstr "" -#: company/models.py:451 +#: company/models.py:434 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:458 +#: company/models.py:441 msgid "Link to address information (external)" msgstr "" -#: company/models.py:489 company/models.py:792 stock/models.py:768 -#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 +#: company/models.py:463 company/models.py:574 company/models.py:792 +#: 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:475 company/models.py:760 stock/models.py:766 +#: stock/serializers.py:422 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:491 company/models.py:794 +#: company/models.py:477 company/models.py:762 msgid "Select part" msgstr "" -#: company/models.py:500 company/templates/company/company_base.html:82 +#: company/models.py:486 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:530 +#: company/templates/company/supplier_part.html:145 part/serializers.py:525 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -3939,152 +4006,154 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:501 +#: company/models.py:487 msgid "Select manufacturer" msgstr "" -#: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:540 +#: company/models.py:493 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:535 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 -#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1801 #: templates/js/translated/purchase_order.js:1851 #: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "" -#: company/models.py:508 +#: company/models.py:494 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:515 +#: company/models.py:501 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:524 +#: company/models.py:510 msgid "Manufacturer part description" msgstr "" -#: company/models.py:581 company/models.py:608 company/models.py:824 -#: 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:615 +#: company/models.py:581 msgid "Parameter name" msgstr "" -#: company/models.py:621 report/templates/report/inventree_test_report.html:104 -#: stock/models.py:2429 templates/js/translated/company.js:1166 -#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 +#: company/models.py:587 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2418 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1493 #: templates/js/translated/stock.js:1522 msgid "Value" msgstr "" -#: company/models.py:622 +#: company/models.py:588 msgid "Parameter value" msgstr "" -#: company/models.py:629 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1052 part/models.py:3666 +#: company/models.py:595 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1045 part/models.py:3646 #: part/templates/part/part_base.html:284 -#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1512 +#: templates/js/translated/part.js:1616 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:630 +#: company/models.py:596 msgid "Parameter units" msgstr "" -#: company/models.py:732 +#: company/models.py:648 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:777 stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "" + +#: company/models.py:700 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:739 +#: company/models.py:707 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:753 +#: company/models.py:721 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/models.py:770 company/templates/company/company_base.html:87 #: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:514 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:509 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:511 -#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1769 #: templates/js/translated/pricing.js:498 #: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "" -#: company/models.py:803 +#: company/models.py:771 msgid "Select supplier" msgstr "" -#: company/models.py:809 part/serializers.py:525 +#: company/models.py:777 part/serializers.py:520 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:815 +#: company/models.py:783 msgid "Is this supplier part active?" msgstr "" -#: company/models.py:825 +#: company/models.py:793 msgid "Select manufacturer part" msgstr "" -#: company/models.py:832 +#: company/models.py:800 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:841 +#: company/models.py:809 msgid "Supplier part description" msgstr "" -#: company/models.py:848 company/templates/company/supplier_part.html:187 -#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 +#: company/models.py:816 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4093 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_purchase_order_report.html:32 #: report/templates/report/inventree_return_order_report.html:27 #: report/templates/report/inventree_sales_order_report.html:32 #: report/templates/report/inventree_stock_location_report.html:105 -#: stock/serializers.py:708 +#: stock/serializers.py:710 msgid "Note" msgstr "" -#: company/models.py:857 part/models.py:2010 +#: company/models.py:825 part/models.py:2003 msgid "base cost" msgstr "" -#: company/models.py:858 part/models.py:2011 +#: company/models.py:826 part/models.py:2004 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:865 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 +#: company/models.py:833 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:797 stock/serializers.py:1475 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 #: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "" -#: company/models.py:866 +#: company/models.py:834 msgid "Part packaging" msgstr "" -#: company/models.py:871 templates/js/translated/company.js:1651 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: company/models.py:839 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:311 #: templates/js/translated/purchase_order.js:841 #: templates/js/translated/purchase_order.js:1103 @@ -4093,35 +4162,35 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:873 +#: company/models.py:841 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:892 part/models.py:2017 +#: company/models.py:860 part/models.py:2010 msgid "multiple" msgstr "" -#: company/models.py:893 +#: company/models.py:861 msgid "Order multiple" msgstr "" -#: company/models.py:905 +#: company/models.py:873 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:911 +#: company/models.py:879 msgid "Availability Updated" msgstr "" -#: company/models.py:912 +#: company/models.py:880 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:163 +#: company/serializers.py:161 msgid "Default currency used for this supplier" msgstr "" -#: company/serializers.py:381 part/admin.py:126 +#: company/serializers.py:357 part/admin.py:126 #: part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1689 #: templates/js/translated/table_filters.js:355 @@ -4133,7 +4202,7 @@ msgstr "" #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 #: templates/js/translated/model_renderers.js:312 -#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +#: templates/js/translated/part.js:815 templates/js/translated/part.js:1219 msgid "Inactive" msgstr "" @@ -4172,7 +4241,7 @@ msgstr "" #: report/templates/report/inventree_purchase_order_report.html:40 #: report/templates/report/inventree_sales_order_report.html:40 #: report/templates/report/inventree_test_report.html:84 -#: report/templates/report/inventree_test_report.html:163 +#: report/templates/report/inventree_test_report.html:162 msgid "Part image" msgstr "" @@ -4191,10 +4260,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:92 order/models.py:940 -#: order/models.py:2068 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:148 stock/models.py:821 -#: stock/models.py:822 stock/serializers.py:1229 +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2032 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:819 +#: stock/models.py:820 stock/serializers.py:1225 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 @@ -4405,7 +4474,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:836 +#: part/admin.py:122 part/serializers.py:832 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4425,8 +4494,8 @@ msgstr "" msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:206 -#: templates/js/translated/part.js:1422 +#: company/templates/company/manufacturer_part.html:196 +#: templates/js/translated/part.js:1423 msgid "Add Parameter" msgstr "" @@ -4454,15 +4523,6 @@ msgstr "" msgid "Addresses" msgstr "" -#: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:452 -#: stock/models.py:779 stock/templates/stock/item_base.html:233 -#: templates/js/translated/company.js:1600 -#: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2280 -msgid "Supplier Part" -msgstr "" - #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1526 msgid "Supplier part actions" @@ -4505,8 +4565,8 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:524 -#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: part/bom.py:311 part/serializers.py:519 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1787 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1850 #: templates/js/translated/purchase_order.js:2028 @@ -4518,12 +4578,12 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:207 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" @@ -4555,15 +4615,15 @@ msgid "Update Part Availability" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:835 part/stocktake.py:223 +#: part/serializers.py:831 part/stocktake.py:224 #: part/templates/part/category.html:183 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:916 stock/serializers.py:1080 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:918 stock/serializers.py:1091 #: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:191 #: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1061 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:206 msgid "Stock Items" @@ -4590,10 +4650,6 @@ msgstr "" 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 "" @@ -4614,7 +4670,7 @@ msgstr "" msgid "Connected" msgstr "" -#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: machine/machine_types/label_printer.py:235 order/api.py:1467 #: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "" @@ -4703,7 +4759,7 @@ msgstr "" msgid "Config type" msgstr "" -#: order/admin.py:30 order/models.py:89 +#: order/admin.py:30 order/models.py:90 #: report/templates/report/inventree_purchase_order_report.html:31 #: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 @@ -4712,30 +4768,30 @@ msgstr "" msgid "Total Price" msgstr "" -#: order/api.py:161 order/serializers.py:91 +#: order/api.py:157 order/serializers.py:90 #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "" -#: order/api.py:165 templates/js/translated/table_filters.js:194 +#: order/api.py:161 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "" -#: order/api.py:240 +#: order/api.py:236 msgid "No matching purchase order found" msgstr "" -#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 -#: order/models.py:1586 order/models.py:1700 order/models.py:1854 -#: order/models.py:2267 order/models.py:2318 +#: order/api.py:435 order/api.py:801 order/models.py:1395 order/models.py:1504 +#: order/models.py:1550 order/models.py:1664 order/models.py:1818 +#: order/models.py:2231 order/models.py:2282 #: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "" -#: order/api.py:441 order/api.py:838 +#: order/api.py:439 order/api.py:822 msgid "Order Complete" msgstr "" @@ -4743,13 +4799,13 @@ msgstr "" msgid "Order Pending" msgstr "" -#: order/api.py:1509 order/models.py:380 order/models.py:1432 -#: order/models.py:1541 order/templates/order/order_base.html:9 +#: order/api.py:1461 order/models.py:380 order/models.py:1396 +#: order/models.py:1505 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_purchase_order_report.html:14 -#: stock/serializers.py:119 stock/templates/stock/item_base.html:176 +#: stock/serializers.py:118 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/part.js:1746 templates/js/translated/pricing.js:804 #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1673 @@ -4757,8 +4813,8 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1513 order/models.py:2017 order/models.py:2268 -#: order/models.py:2319 order/templates/order/return_order_base.html:9 +#: order/api.py:1465 order/models.py:1981 order/models.py:2232 +#: order/models.py:2283 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report.html:13 #: templates/js/translated/return_order.js:280 @@ -4766,15 +4822,15 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/models.py:90 +#: order/models.py:91 msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:71 +#: order/models.py:96 order/serializers.py:70 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:72 +#: order/models.py:99 order/serializers.py:71 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -4790,7 +4846,7 @@ msgstr "" msgid "Select project code for this order" msgstr "" -#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 msgid "Link to external page" msgstr "" @@ -4814,11 +4870,11 @@ msgstr "" msgid "Company address for this order" msgstr "" -#: order/models.py:464 order/models.py:929 +#: order/models.py:464 order/models.py:927 msgid "Order reference" msgstr "" -#: order/models.py:472 order/models.py:953 +#: order/models.py:472 order/models.py:951 msgid "Purchase order status" msgstr "" @@ -4839,15 +4895,15 @@ msgstr "" msgid "received by" msgstr "" -#: order/models.py:514 order/models.py:2094 +#: order/models.py:514 order/models.py:2058 msgid "Issue Date" msgstr "" -#: order/models.py:515 order/models.py:2095 +#: order/models.py:515 order/models.py:2059 msgid "Date order was issued" msgstr "" -#: order/models.py:522 order/models.py:2102 +#: order/models.py:522 order/models.py:2066 msgid "Date order was completed" msgstr "" @@ -4859,94 +4915,94 @@ msgstr "" msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:941 +#: order/models.py:939 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:964 order/models.py:2087 +#: order/models.py:962 order/models.py:2051 msgid "Customer Reference " msgstr "" -#: order/models.py:965 order/models.py:2088 +#: order/models.py:963 order/models.py:2052 msgid "Customer order reference code" msgstr "" -#: order/models.py:969 order/models.py:1707 +#: order/models.py:967 order/models.py:1671 #: templates/js/translated/sales_order.js:879 #: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "" -#: order/models.py:978 +#: order/models.py:976 msgid "shipped by" msgstr "" -#: order/models.py:1027 +#: order/models.py:1025 msgid "Order is already complete" msgstr "" -#: order/models.py:1030 +#: order/models.py:1028 msgid "Order is already cancelled" msgstr "" -#: order/models.py:1034 +#: order/models.py:1032 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:1038 +#: order/models.py:1036 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:1043 +#: order/models.py:1041 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1309 +#: order/models.py:1273 msgid "Item quantity" msgstr "" -#: order/models.py:1326 +#: order/models.py:1290 msgid "Line item reference" msgstr "" -#: order/models.py:1333 +#: order/models.py:1297 msgid "Line item notes" msgstr "" -#: order/models.py:1345 +#: order/models.py:1309 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1366 +#: order/models.py:1330 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1372 +#: order/models.py:1336 msgid "Context" msgstr "" -#: order/models.py:1373 +#: order/models.py:1337 msgid "Additional context for this line" msgstr "" -#: order/models.py:1383 +#: order/models.py:1347 msgid "Unit price" msgstr "" -#: order/models.py:1416 +#: order/models.py:1380 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1423 +#: order/models.py:1387 msgid "deleted" msgstr "" -#: order/models.py:1451 +#: order/models.py:1415 msgid "Supplier part" msgstr "" -#: order/models.py:1458 order/templates/order/order_base.html:196 -#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: order/models.py:1422 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1870 templates/js/translated/part.js:1902 #: templates/js/translated/purchase_order.js:1306 #: templates/js/translated/purchase_order.js:2169 #: templates/js/translated/return_order.js:763 @@ -4955,196 +5011,196 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1459 +#: order/models.py:1423 msgid "Number of items received" msgstr "" -#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 +#: order/models.py:1431 stock/models.py:938 stock/serializers.py:556 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "" -#: order/models.py:1468 +#: order/models.py:1432 msgid "Unit purchase price" msgstr "" -#: order/models.py:1483 +#: order/models.py:1447 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1574 +#: order/models.py:1538 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1579 +#: order/models.py:1543 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1605 part/templates/part/part_pricing.html:107 +#: order/models.py:1569 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:1606 +#: order/models.py:1570 msgid "Unit sale price" msgstr "" -#: order/models.py:1615 order/status_codes.py:43 +#: order/models.py:1579 order/status_codes.py:43 #: templates/js/translated/sales_order.js:1559 #: templates/js/translated/sales_order.js:1680 #: templates/js/translated/sales_order.js:1993 msgid "Shipped" msgstr "נשלח" -#: order/models.py:1616 +#: order/models.py:1580 msgid "Shipped quantity" msgstr "" -#: order/models.py:1708 +#: order/models.py:1672 msgid "Date of shipment" msgstr "" -#: order/models.py:1714 templates/js/translated/sales_order.js:1072 +#: order/models.py:1678 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "" -#: order/models.py:1715 +#: order/models.py:1679 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1723 +#: order/models.py:1687 msgid "Checked By" msgstr "" -#: order/models.py:1724 +#: order/models.py:1688 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 -#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 +#: order/models.py:1695 order/models.py:1908 order/serializers.py:1342 +#: order/serializers.py:1452 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "" -#: order/models.py:1732 +#: order/models.py:1696 msgid "Shipment number" msgstr "" -#: order/models.py:1740 +#: order/models.py:1704 msgid "Tracking Number" msgstr "" -#: order/models.py:1741 +#: order/models.py:1705 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1748 +#: order/models.py:1712 msgid "Invoice Number" msgstr "" -#: order/models.py:1749 +#: order/models.py:1713 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1769 +#: order/models.py:1733 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1772 +#: order/models.py:1736 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1890 order/models.py:1892 +#: order/models.py:1854 order/models.py:1856 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1899 +#: order/models.py:1863 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1902 +#: order/models.py:1866 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1905 +#: order/models.py:1869 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1924 order/serializers.py:1231 +#: order/models.py:1888 order/serializers.py:1219 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1927 +#: order/models.py:1891 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1928 plugin/base/barcodes/api.py:481 +#: order/models.py:1892 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1936 +#: order/models.py:1900 msgid "Line" msgstr "" -#: order/models.py:1945 +#: order/models.py:1909 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1958 order/models.py:2275 +#: order/models.py:1922 order/models.py:2239 #: templates/js/translated/return_order.js:721 msgid "Item" msgstr "" -#: order/models.py:1959 +#: order/models.py:1923 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1968 +#: order/models.py:1932 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:2057 +#: order/models.py:2021 msgid "Return Order reference" msgstr "" -#: order/models.py:2069 +#: order/models.py:2033 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:2081 +#: order/models.py:2045 msgid "Return order status" msgstr "" -#: order/models.py:2260 +#: order/models.py:2224 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2276 +#: order/models.py:2240 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2282 +#: order/models.py:2246 msgid "Received Date" msgstr "" -#: order/models.py:2283 +#: order/models.py:2247 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2294 templates/js/translated/return_order.js:732 +#: order/models.py:2258 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2295 +#: order/models.py:2259 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2302 +#: order/models.py:2266 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/serializers.py:79 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_purchase_order_report.html:22 @@ -5153,163 +5209,163 @@ msgstr "" msgid "Line Items" msgstr "" -#: order/serializers.py:84 +#: order/serializers.py:83 msgid "Completed Lines" msgstr "" -#: order/serializers.py:287 +#: order/serializers.py:286 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:302 order/serializers.py:1247 +#: order/serializers.py:301 order/serializers.py:1235 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:312 order/serializers.py:1257 +#: order/serializers.py:311 order/serializers.py:1245 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:440 +#: order/serializers.py:439 msgid "Order is not open" msgstr "" -#: order/serializers.py:461 +#: order/serializers.py:460 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:463 +#: order/serializers.py:462 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:473 +#: order/serializers.py:472 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:478 msgid "Merge Items" msgstr "" -#: order/serializers.py:481 +#: order/serializers.py:480 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:499 +#: order/serializers.py:498 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:502 +#: order/serializers.py:501 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:510 +#: order/serializers.py:509 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:511 +#: order/serializers.py:510 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:550 order/serializers.py:1325 +#: order/serializers.py:549 order/serializers.py:1313 msgid "Line Item" msgstr "" -#: order/serializers.py:556 +#: order/serializers.py:555 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1657 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:581 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:589 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:601 templates/js/translated/barcode.js:52 +#: order/serializers.py:600 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:602 +#: order/serializers.py:601 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:618 +#: order/serializers.py:617 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:642 +#: order/serializers.py:641 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:690 order/serializers.py:1696 +#: order/serializers.py:689 order/serializers.py:1673 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:706 +#: order/serializers.py:705 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:717 +#: order/serializers.py:716 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1074 +#: order/serializers.py:1062 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1134 +#: order/serializers.py:1122 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1195 order/serializers.py:1334 +#: order/serializers.py:1183 order/serializers.py:1322 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1214 +#: order/serializers.py:1202 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1344 +#: order/serializers.py:1332 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1366 order/serializers.py:1472 +#: order/serializers.py:1354 order/serializers.py:1460 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1369 order/serializers.py:1475 +#: order/serializers.py:1357 order/serializers.py:1463 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1416 +#: order/serializers.py:1404 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1423 +#: order/serializers.py:1411 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1650 +#: order/serializers.py:1627 msgid "Return order line item" msgstr "" -#: order/serializers.py:1656 +#: order/serializers.py:1633 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1659 +#: order/serializers.py:1636 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1688 +#: order/serializers.py:1665 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1766 +#: order/serializers.py:1743 msgid "Line price currency" msgstr "" @@ -5639,7 +5695,7 @@ msgstr "" #: 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/part.js:1073 #: templates/js/translated/purchase_order.js:1752 #: templates/js/translated/return_order.js:380 #: templates/js/translated/sales_order.js:891 @@ -5735,34 +5791,34 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:406 part/models.py:3964 part/stocktake.py:218 -#: stock/admin.py:153 +#: part/admin.py:39 part/admin.py:398 part/models.py:3944 part/stocktake.py:219 +#: stock/admin.py:152 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 -#: stock/admin.py:157 +#: part/admin.py:41 part/admin.py:405 part/models.py:3945 part/stocktake.py:220 +#: stock/admin.py:156 msgid "Part Name" msgstr "" -#: part/admin.py:45 part/stocktake.py:220 +#: part/admin.py:45 part/stocktake.py:221 msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:940 part/templates/part/part_base.html:269 #: report/templates/report/inventree_stock_location_report.html:103 -#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/part.js:1227 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 -#: report/models.py:161 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2346 +#: part/admin.py:50 part/models.py:949 part/templates/part/part_base.html:277 +#: report/models.py:162 templates/js/translated/part.js:1232 +#: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:319 part/models.py:929 +#: part/admin.py:53 part/admin.py:319 part/models.py:922 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5771,11 +5827,11 @@ msgstr "" msgid "Part Image" msgstr "" -#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:222 msgid "Category ID" msgstr "" -#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:223 msgid "Category Name" msgstr "" @@ -5787,11 +5843,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:908 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1036 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5799,26 +5855,26 @@ msgstr "" 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 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:235 +#: templates/js/translated/part.js:715 templates/js/translated/part.js:2153 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3123 part/models.py:3137 -#: templates/js/translated/part.js:969 +#: part/admin.py:155 part/models.py:3088 part/models.py:3102 +#: templates/js/translated/part.js:970 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3130 part/models.py:3144 -#: templates/js/translated/part.js:979 +#: part/admin.py:158 part/models.py:3095 part/models.py:3109 +#: templates/js/translated/part.js:980 msgid "Maximum Cost" msgstr "" -#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 msgid "Parent ID" msgstr "" -#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 msgid "Parent Name" msgstr "" @@ -5827,141 +5883,149 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:325 part/models.py:393 part/serializers.py:117 -#: part/serializers.py:272 part/serializers.py:391 +#: part/admin.py:325 part/models.py:396 part/serializers.py:124 +#: part/serializers.py:267 part/serializers.py:386 #: 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:2803 templates/js/translated/search.js:130 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "" -#: part/admin.py:386 +#: part/admin.py:378 msgid "BOM Level" msgstr "" -#: part/admin.py:389 +#: part/admin.py:381 msgid "BOM Item ID" msgstr "" -#: part/admin.py:399 +#: part/admin.py:391 msgid "Parent IPN" msgstr "" -#: part/admin.py:410 part/models.py:3966 +#: part/admin.py:402 part/models.py:3946 msgid "Part IPN" msgstr "" -#: part/admin.py:423 part/serializers.py:1278 +#: part/admin.py:415 part/serializers.py:1274 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:428 part/serializers.py:1293 +#: part/admin.py:420 part/serializers.py:1289 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:110 +#: part/api.py:104 msgid "Starred" msgstr "" -#: part/api.py:112 +#: part/api.py:106 msgid "Filter by starred categories" msgstr "" -#: part/api.py:129 stock/api.py:318 +#: part/api.py:123 stock/api.py:312 msgid "Depth" msgstr "" -#: part/api.py:129 +#: part/api.py:123 msgid "Filter by category depth" msgstr "" -#: part/api.py:147 stock/api.py:336 +#: part/api.py:141 stock/api.py:330 +msgid "Top Level" +msgstr "" + +#: part/api.py:143 +msgid "Filter by top-level categories" +msgstr "" + +#: part/api.py:156 stock/api.py:345 msgid "Cascade" msgstr "" -#: part/api.py:149 +#: part/api.py:158 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:169 +#: part/api.py:179 templates/js/translated/part.js:308 msgid "Parent" msgstr "" -#: part/api.py:171 +#: part/api.py:181 msgid "Filter by parent category" msgstr "" -#: part/api.py:204 +#: part/api.py:214 msgid "Exclude Tree" msgstr "" -#: part/api.py:206 +#: part/api.py:216 msgid "Exclude sub-categories under the specified category" msgstr "" -#: part/api.py:455 +#: part/api.py:449 msgid "Has Results" msgstr "" -#: part/api.py:622 +#: part/api.py:616 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:640 +#: part/api.py:634 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:656 +#: part/api.py:650 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:740 +#: part/api.py:734 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:887 +#: part/api.py:881 msgid "Valid" msgstr "" -#: part/api.py:888 +#: part/api.py:882 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:894 +#: part/api.py:888 msgid "This option must be selected" msgstr "" -#: part/api.py:1111 +#: part/api.py:1105 msgid "BOM Valid" msgstr "" -#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 -#: part/serializers.py:406 part/serializers.py:1134 -#: part/templates/part/part_base.html:260 stock/api.py:781 +#: part/api.py:1508 part/models.py:932 part/models.py:3374 part/models.py:3889 +#: part/serializers.py:401 part/serializers.py:1130 +#: part/templates/part/part_base.html:260 stock/api.py:791 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2376 +#: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/api.py:1803 +#: part/api.py:1796 msgid "Uses" msgstr "" -#: part/bom.py:170 part/models.py:102 part/models.py:982 +#: part/bom.py:170 part/models.py:104 part/models.py:975 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 part/serializers.py:837 +#: part/bom.py:171 part/serializers.py:833 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5970,1054 +6034,1066 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 +#: part/models.py:85 part/models.py:3890 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:84 part/templates/part/category.html:136 +#: part/models.py:86 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "" -#: part/models.py:103 +#: part/models.py:105 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 +#: part/models.py:110 stock/models.py:174 templates/js/translated/part.js:2810 #: templates/js/translated/stock.js:2772 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:110 +#: part/models.py:112 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:119 +#: part/models.py:121 msgid "Default keywords" msgstr "" -#: part/models.py:120 +#: part/models.py:122 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 stock/models.py:85 stock/models.py:156 +#: part/models.py:128 stock/models.py:86 stock/models.py:157 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:127 stock/models.py:157 +#: part/models.py:129 stock/models.py:158 msgid "Icon (optional)" msgstr "" -#: part/models.py:149 +#: part/models.py:151 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:482 +#: part/models.py:485 msgid "Cannot delete this part as it is still active" msgstr "" -#: part/models.py:489 +#: part/models.py:490 msgid "Cannot delete this part as it is used in an assembly" msgstr "" -#: part/models.py:527 +#: part/models.py:528 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:575 part/models.py:582 +#: part/models.py:576 part/models.py:583 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:594 +#: part/models.py:595 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:659 +#: part/models.py:658 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:739 +#: part/models.py:736 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:844 +#: part/models.py:837 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:854 +#: part/models.py:847 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:869 +#: part/models.py:862 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:898 part/models.py:3965 +#: part/models.py:891 part/models.py:3945 msgid "Part name" msgstr "" -#: part/models.py:903 +#: part/models.py:896 msgid "Is Template" msgstr "" -#: part/models.py:904 +#: part/models.py:897 msgid "Is this part a template part?" msgstr "" -#: part/models.py:914 +#: part/models.py:907 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:922 +#: part/models.py:915 msgid "Part description (optional)" msgstr "" -#: part/models.py:930 +#: part/models.py:923 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:940 +#: part/models.py:933 msgid "Part category" msgstr "" -#: part/models.py:948 +#: part/models.py:941 msgid "Internal Part Number" msgstr "" -#: part/models.py:955 +#: part/models.py:948 msgid "Part revision or version number" msgstr "" -#: part/models.py:980 +#: part/models.py:973 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:1026 part/templates/part/part_base.html:376 +#: part/models.py:1019 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:1027 +#: part/models.py:1020 msgid "Default supplier part" msgstr "" -#: part/models.py:1034 +#: part/models.py:1027 msgid "Default Expiry" msgstr "" -#: part/models.py:1035 +#: part/models.py:1028 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:1044 +#: part/models.py:1037 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:1053 +#: part/models.py:1046 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1060 +#: part/models.py:1053 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1066 +#: part/models.py:1059 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1072 +#: part/models.py:1065 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1078 +#: part/models.py:1071 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1084 +#: part/models.py:1077 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1088 +#: part/models.py:1081 msgid "Is this part active?" msgstr "" -#: part/models.py:1094 +#: part/models.py:1087 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1100 +#: part/models.py:1093 msgid "BOM checksum" msgstr "" -#: part/models.py:1101 +#: part/models.py:1094 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1109 +#: part/models.py:1102 msgid "BOM checked by" msgstr "" -#: part/models.py:1114 +#: part/models.py:1107 msgid "BOM checked date" msgstr "" -#: part/models.py:1130 +#: part/models.py:1123 msgid "Creation User" msgstr "" -#: part/models.py:1140 +#: part/models.py:1133 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1145 part/templates/part/part_base.html:339 +#: part/models.py:1138 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2470 +#: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:2018 +#: part/models.py:2011 msgid "Sell multiple" msgstr "" -#: part/models.py:3037 +#: part/models.py:3002 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:3053 +#: part/models.py:3018 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:3054 +#: part/models.py:3019 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:3060 +#: part/models.py:3025 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3026 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:3067 +#: part/models.py:3032 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3033 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3074 +#: part/models.py:3039 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3040 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3046 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3047 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3053 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3054 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3060 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3096 +#: part/models.py:3061 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3102 +#: part/models.py:3067 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3103 +#: part/models.py:3068 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3109 +#: part/models.py:3074 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3110 +#: part/models.py:3075 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3116 +#: part/models.py:3081 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3117 +#: part/models.py:3082 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3124 +#: part/models.py:3089 msgid "Override minimum cost" msgstr "" -#: part/models.py:3131 +#: part/models.py:3096 msgid "Override maximum cost" msgstr "" -#: part/models.py:3138 +#: part/models.py:3103 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3145 +#: part/models.py:3110 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3151 +#: part/models.py:3116 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3152 +#: part/models.py:3117 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3158 +#: part/models.py:3123 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3159 +#: part/models.py:3124 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3165 +#: part/models.py:3130 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3131 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3172 +#: part/models.py:3137 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3138 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3192 +#: part/models.py:3157 msgid "Part for stocktake" msgstr "" -#: part/models.py:3197 +#: part/models.py:3162 msgid "Item Count" msgstr "" -#: part/models.py:3198 +#: part/models.py:3163 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3206 +#: part/models.py:3171 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3210 part/models.py:3293 +#: part/models.py:3175 part/models.py:3258 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report.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/part.js:1086 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" -#: part/models.py:3211 +#: part/models.py:3176 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3219 +#: part/models.py:3184 msgid "Additional notes" msgstr "" -#: part/models.py:3229 +#: part/models.py:3194 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3235 +#: part/models.py:3200 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3236 +#: part/models.py:3201 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3242 +#: part/models.py:3207 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3243 +#: part/models.py:3208 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3264 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3300 +#: part/models.py:3265 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3270 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3306 +#: part/models.py:3271 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3316 +#: part/models.py:3281 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3478 +#: part/models.py:3423 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3489 +#: part/models.py:3444 part/models.py:3608 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3455 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3500 +#: part/models.py:3466 msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3517 templates/js/translated/part.js:2878 +#: part/models.py:3483 templates/js/translated/part.js:2880 msgid "Test Name" msgstr "" -#: part/models.py:3518 +#: part/models.py:3484 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3524 +#: part/models.py:3490 msgid "Test Key" msgstr "" -#: part/models.py:3525 +#: part/models.py:3491 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3532 +#: part/models.py:3498 msgid "Test Description" msgstr "" -#: part/models.py:3533 +#: part/models.py:3499 msgid "Enter description for this test" msgstr "" -#: part/models.py:3537 report/models.py:208 -#: templates/js/translated/part.js:2899 +#: part/models.py:3503 report/models.py:209 +#: templates/js/translated/part.js:2901 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" -#: part/models.py:3537 +#: part/models.py:3503 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3542 templates/js/translated/part.js:2907 +#: part/models.py:3508 templates/js/translated/part.js:2909 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3543 +#: part/models.py:3509 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3548 templates/js/translated/part.js:2915 +#: part/models.py:3514 templates/js/translated/part.js:2917 msgid "Requires Value" msgstr "" -#: part/models.py:3549 +#: part/models.py:3515 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3554 templates/js/translated/part.js:2922 +#: part/models.py:3520 templates/js/translated/part.js:2924 msgid "Requires Attachment" msgstr "" -#: part/models.py:3556 +#: part/models.py:3522 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3603 +#: part/models.py:3528 part/models.py:3667 templates/js/translated/part.js:1637 +msgid "Choices" +msgstr "" + +#: part/models.py:3529 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3583 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3608 +#: part/models.py:3588 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3628 -msgid "Choices must be unique" -msgstr "" - -#: part/models.py:3645 +#: part/models.py:3625 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3660 +#: part/models.py:3640 msgid "Parameter Name" msgstr "" -#: part/models.py:3667 +#: part/models.py:3647 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3675 +#: part/models.py:3655 msgid "Parameter description" msgstr "" -#: part/models.py:3681 templates/js/translated/part.js:1627 +#: part/models.py:3661 templates/js/translated/part.js:1628 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "" -#: part/models.py:3682 +#: part/models.py:3662 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3687 templates/js/translated/part.js:1636 -msgid "Choices" -msgstr "" - -#: part/models.py:3688 +#: part/models.py:3668 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3765 +#: part/models.py:3745 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3808 +#: part/models.py:3788 msgid "Parent Part" msgstr "" -#: part/models.py:3816 part/models.py:3917 part/models.py:3918 +#: part/models.py:3796 part/models.py:3897 part/models.py:3898 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3821 +#: part/models.py:3801 msgid "Data" msgstr "" -#: part/models.py:3822 +#: part/models.py:3802 msgid "Parameter Value" msgstr "" -#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3904 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3925 +#: part/models.py:3905 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3963 +#: part/models.py:3943 msgid "Part ID or part name" msgstr "" -#: part/models.py:3964 +#: part/models.py:3944 msgid "Unique part ID value" msgstr "" -#: part/models.py:3966 +#: part/models.py:3946 msgid "Part IPN value" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "Level" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "BOM level" msgstr "" -#: part/models.py:4057 +#: part/models.py:4037 msgid "Select parent part" msgstr "" -#: part/models.py:4067 +#: part/models.py:4047 msgid "Sub part" msgstr "" -#: part/models.py:4068 +#: part/models.py:4048 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4079 +#: part/models.py:4059 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4085 +#: part/models.py:4065 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4091 +#: part/models.py:4071 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4098 part/templates/part/upload_bom.html:55 +#: part/models.py:4078 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4099 +#: part/models.py:4079 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4106 +#: part/models.py:4086 msgid "BOM item reference" msgstr "" -#: part/models.py:4114 +#: part/models.py:4094 msgid "BOM item notes" msgstr "" -#: part/models.py:4120 +#: part/models.py:4100 msgid "Checksum" msgstr "" -#: part/models.py:4121 +#: part/models.py:4101 msgid "BOM line checksum" msgstr "" -#: part/models.py:4126 templates/js/translated/table_filters.js:174 +#: part/models.py:4106 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4127 +#: part/models.py:4107 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4132 part/templates/part/upload_bom.html:57 +#: part/models.py:4112 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:4133 +#: part/models.py:4113 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4138 part/templates/part/upload_bom.html:56 +#: part/models.py:4118 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4139 +#: part/models.py:4119 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4224 stock/models.py:664 +#: part/models.py:4204 stock/models.py:662 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4234 part/models.py:4236 +#: part/models.py:4214 part/models.py:4216 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4376 +#: part/models.py:4354 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4397 +#: part/models.py:4375 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4410 +#: part/models.py:4388 msgid "Parent BOM item" msgstr "" -#: part/models.py:4418 +#: part/models.py:4396 msgid "Substitute part" msgstr "" -#: part/models.py:4434 +#: part/models.py:4412 msgid "Part 1" msgstr "" -#: part/models.py:4442 +#: part/models.py:4420 msgid "Part 2" msgstr "" -#: part/models.py:4443 +#: part/models.py:4421 msgid "Select Related Part" msgstr "" -#: part/models.py:4462 +#: part/models.py:4440 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4467 +#: part/models.py:4445 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:119 part/serializers.py:141 +#: part/serializers.py:118 +msgid "Parent Category" +msgstr "" + +#: part/serializers.py:119 templates/js/translated/part.js:309 +msgid "Parent part category" +msgstr "" + +#: part/serializers.py:126 part/serializers.py:148 #: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/serializers.py:185 +#: part/serializers.py:180 msgid "Results" msgstr "" -#: part/serializers.py:186 +#: part/serializers.py:181 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 +#: part/serializers.py:205 part/serializers.py:223 stock/serializers.py:562 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:273 +#: part/serializers.py:268 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:397 +#: part/serializers.py:392 msgid "No parts selected" msgstr "" -#: part/serializers.py:407 +#: part/serializers.py:402 msgid "Select category" msgstr "" -#: part/serializers.py:442 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:443 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:448 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:449 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:455 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:456 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:463 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:488 +#: part/serializers.py:483 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:490 +#: part/serializers.py:485 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:497 +#: part/serializers.py:492 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:493 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:510 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:531 +#: part/serializers.py:526 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:541 +#: part/serializers.py:536 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:548 +#: part/serializers.py:543 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:557 +#: part/serializers.py:552 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:568 +#: part/serializers.py:563 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:575 +#: part/serializers.py:570 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:834 msgid "External Stock" msgstr "" -#: part/serializers.py:840 +#: part/serializers.py:836 msgid "Unallocated Stock" msgstr "" -#: part/serializers.py:843 +#: part/serializers.py:839 msgid "Variant Stock" msgstr "" -#: part/serializers.py:873 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:471 +#: part/serializers.py:869 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:472 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:870 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:880 templates/js/translated/part.js:102 +#: part/serializers.py:876 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:881 +#: part/serializers.py:877 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:887 +#: part/serializers.py:883 msgid "Supplier Information" msgstr "" -#: part/serializers.py:888 +#: part/serializers.py:884 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:896 +#: part/serializers.py:892 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:897 +#: part/serializers.py:893 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:902 +#: part/serializers.py:898 msgid "Existing Image" msgstr "" -#: part/serializers.py:903 +#: part/serializers.py:899 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:920 +#: part/serializers.py:916 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1126 +#: part/serializers.py:1122 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1136 +#: part/serializers.py:1132 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1146 +#: part/serializers.py:1142 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1152 +#: part/serializers.py:1148 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1153 +#: part/serializers.py:1149 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1158 +#: part/serializers.py:1154 msgid "Generate Report" msgstr "" -#: part/serializers.py:1159 +#: part/serializers.py:1155 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1164 +#: part/serializers.py:1160 msgid "Update Parts" msgstr "" -#: part/serializers.py:1165 +#: part/serializers.py:1161 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1173 +#: part/serializers.py:1169 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1279 +#: part/serializers.py:1275 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1286 +#: part/serializers.py:1282 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1294 +#: part/serializers.py:1290 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1301 +#: part/serializers.py:1297 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1330 +#: part/serializers.py:1326 msgid "Update" msgstr "" -#: part/serializers.py:1331 +#: part/serializers.py:1327 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1354 +#: part/serializers.py:1350 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1361 +#: part/serializers.py:1357 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1364 +#: part/serializers.py:1360 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1727 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1739 +#: part/serializers.py:1735 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1740 +#: part/serializers.py:1736 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1745 +#: part/serializers.py:1741 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1746 +#: part/serializers.py:1742 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1747 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1752 +#: part/serializers.py:1748 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1757 +#: part/serializers.py:1753 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1758 +#: part/serializers.py:1754 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1792 +#: part/serializers.py:1788 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1793 +#: part/serializers.py:1789 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1823 +#: part/serializers.py:1819 msgid "No part column specified" msgstr "" -#: part/serializers.py:1867 +#: part/serializers.py:1863 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1870 +#: part/serializers.py:1866 msgid "No matching part found" msgstr "" -#: part/serializers.py:1873 +#: part/serializers.py:1869 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1882 +#: part/serializers.py:1878 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1890 +#: part/serializers.py:1886 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1911 +#: part/serializers.py:1907 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 +#: part/stocktake.py:225 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "" -#: part/stocktake.py:225 +#: part/stocktake.py:226 msgid "Total Cost Min" msgstr "" -#: part/stocktake.py:226 +#: part/stocktake.py:227 msgid "Total Cost Max" msgstr "" -#: part/stocktake.py:284 +#: part/stocktake.py:285 msgid "Stocktake Report Available" msgstr "" -#: part/stocktake.py:285 +#: part/stocktake.py:286 msgid "A new stocktake report is available for download" msgstr "" @@ -7151,7 +7227,7 @@ 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 +#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" @@ -7251,15 +7327,15 @@ msgstr "" msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:655 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:663 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:748 +#: part/templates/part/detail.html:750 msgid "Add Test Result Template" msgstr "" @@ -7340,7 +7416,7 @@ msgstr "" msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" msgstr "" @@ -7412,7 +7488,7 @@ 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:2443 +#: templates/js/translated/part.js:1265 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7505,8 +7581,8 @@ msgstr "" #: 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:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/part.js:1243 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 #: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7549,7 +7625,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:247 +#: part/templates/part/prices.html:28 stock/admin.py:251 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 @@ -7626,8 +7702,8 @@ msgstr "" #: part/templates/part/stock_count.html:7 #: templates/js/translated/model_renderers.js:227 -#: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 -#: templates/js/translated/part.js:2142 +#: templates/js/translated/part.js:705 templates/js/translated/part.js:2141 +#: templates/js/translated/part.js:2143 msgid "No Stock" msgstr "" @@ -7999,7 +8075,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:308 msgid "Landscape" msgstr "" @@ -8112,62 +8188,62 @@ msgstr "" msgid "Uninstalled plugin successfully" msgstr "" -#: plugin/models.py:35 +#: plugin/models.py:36 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:36 +#: plugin/models.py:37 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:42 users/models.py:100 +#: plugin/models.py:43 users/models.py:100 msgid "Key" msgstr "" -#: plugin/models.py:43 +#: plugin/models.py:44 msgid "Key of plugin" msgstr "" -#: plugin/models.py:51 +#: plugin/models.py:52 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:58 plugin/serializers.py:90 +#: plugin/models.py:59 plugin/serializers.py:90 msgid "Package Name" msgstr "" -#: plugin/models.py:60 +#: plugin/models.py:61 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:65 +#: plugin/models.py:66 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:156 templates/js/translated/table_filters.js:370 +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "" -#: plugin/models.py:165 +#: plugin/models.py:166 msgid "Sample plugin" msgstr "" -#: plugin/models.py:173 +#: plugin/models.py:174 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:181 +#: plugin/models.py:182 msgid "Package Plugin" msgstr "" -#: plugin/models.py:205 report/models.py:474 +#: plugin/models.py:220 report/models.py:475 #: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:252 +#: plugin/models.py:267 msgid "Method" msgstr "" @@ -8175,17 +8251,17 @@ msgstr "" msgid "No author found" msgstr "" -#: plugin/registry.py:597 +#: plugin/registry.py:534 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:600 +#: plugin/registry.py:537 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:602 +#: plugin/registry.py:539 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -8300,23 +8376,19 @@ msgstr "" msgid "Activate this plugin" msgstr "" -#: plugin/serializers.py:234 +#: plugin/serializers.py:226 msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:235 +#: plugin/serializers.py:227 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:77 +#: report/api.py:88 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:89 report/serializers.py:53 -msgid "Model Type" -msgstr "" - -#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/api.py:103 report/models.py:439 report/serializers.py:98 #: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 #: templates/js/translated/return_order.js:353 #: templates/js/translated/sales_order.js:887 @@ -8324,176 +8396,176 @@ msgstr "" msgid "Items" msgstr "" -#: report/api.py:168 +#: report/api.py:180 msgid "Plugin not found" msgstr "" -#: report/api.py:170 +#: report/api.py:182 msgid "Plugin is not active" msgstr "" -#: report/api.py:172 +#: report/api.py:184 msgid "Plugin does not support label printing" msgstr "" -#: report/api.py:221 +#: report/api.py:233 msgid "Invalid label dimensions" msgstr "" -#: report/api.py:236 report/api.py:316 +#: report/api.py:248 report/api.py:329 msgid "No valid items provided to template" msgstr "" -#: report/api.py:271 +#: report/api.py:283 msgid "Error printing label" msgstr "" -#: report/api.py:362 report/api.py:398 +#: report/api.py:375 report/api.py:411 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/helpers.py:41 +#: report/helpers.py:43 msgid "A4" msgstr "" -#: report/helpers.py:42 +#: report/helpers.py:44 msgid "A3" msgstr "" -#: report/helpers.py:43 +#: report/helpers.py:45 msgid "Legal" msgstr "" -#: report/helpers.py:44 +#: report/helpers.py:46 msgid "Letter" msgstr "" -#: report/models.py:118 +#: report/models.py:119 msgid "Template file with this name already exists" msgstr "" -#: report/models.py:150 +#: report/models.py:151 msgid "Template name" msgstr "" -#: report/models.py:156 +#: report/models.py:157 msgid "Template description" msgstr "" -#: report/models.py:162 +#: report/models.py:163 msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Filename Pattern" msgstr "" -#: report/models.py:203 +#: report/models.py:204 msgid "Pattern for generating filenames" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Template is enabled" msgstr "" -#: report/models.py:214 +#: report/models.py:215 msgid "Target model type for template" msgstr "" -#: report/models.py:234 +#: report/models.py:235 msgid "Filters" msgstr "" -#: report/models.py:235 +#: report/models.py:236 msgid "Template query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:294 report/models.py:361 +#: report/models.py:295 report/models.py:362 msgid "Template file" msgstr "" -#: report/models.py:302 +#: report/models.py:303 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:308 +#: report/models.py:309 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:367 +#: report/models.py:368 msgid "Width [mm]" msgstr "" -#: report/models.py:368 +#: report/models.py:369 msgid "Label width, specified in mm" msgstr "" -#: report/models.py:374 +#: report/models.py:375 msgid "Height [mm]" msgstr "" -#: report/models.py:375 +#: report/models.py:376 msgid "Label height, specified in mm" msgstr "" -#: report/models.py:438 +#: report/models.py:439 msgid "Number of items to process" msgstr "" -#: report/models.py:444 +#: report/models.py:445 msgid "Report generation is complete" msgstr "" -#: report/models.py:448 templates/js/translated/build.js:2177 +#: report/models.py:449 templates/js/translated/build.js:2177 msgid "Progress" msgstr "" -#: report/models.py:448 +#: report/models.py:449 msgid "Report generation progress" msgstr "" -#: report/models.py:456 +#: report/models.py:457 msgid "Report Template" msgstr "" -#: report/models.py:463 report/models.py:486 +#: report/models.py:464 report/models.py:487 msgid "Output File" msgstr "" -#: report/models.py:464 report/models.py:487 +#: report/models.py:465 report/models.py:488 msgid "Generated output file" msgstr "" -#: report/models.py:475 +#: report/models.py:476 msgid "Label output plugin" msgstr "" -#: report/models.py:479 +#: report/models.py:480 msgid "Label Template" msgstr "" -#: report/models.py:502 +#: report/models.py:503 msgid "Snippet" msgstr "" -#: report/models.py:503 +#: report/models.py:504 msgid "Report snippet file" msgstr "" -#: report/models.py:510 +#: report/models.py:511 msgid "Snippet file description" msgstr "" -#: report/models.py:528 +#: report/models.py:529 msgid "Asset" msgstr "" -#: report/models.py:529 +#: report/models.py:530 msgid "Report asset file" msgstr "" -#: report/models.py:536 +#: report/models.py:537 msgid "Asset file description" msgstr "" @@ -8566,8 +8638,8 @@ msgid "Total" msgstr "" #: report/templates/report/inventree_return_order_report.html:25 -#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 -#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:824 +#: stock/serializers.py:149 stock/templates/stock/item_base.html:311 #: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 #: templates/js/translated/build.js:2355 #: templates/js/translated/model_renderers.js:230 @@ -8597,32 +8669,32 @@ msgstr "" msgid "Test" msgstr "" -#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2412 msgid "Result" msgstr "" -#: report/templates/report/inventree_test_report.html:130 +#: report/templates/report/inventree_test_report.html:129 msgid "Pass" msgstr "" -#: report/templates/report/inventree_test_report.html:132 +#: report/templates/report/inventree_test_report.html:131 msgid "Fail" msgstr "" -#: report/templates/report/inventree_test_report.html:139 +#: report/templates/report/inventree_test_report.html:138 msgid "No result (required)" msgstr "" -#: report/templates/report/inventree_test_report.html:141 +#: report/templates/report/inventree_test_report.html:140 msgid "No result" msgstr "" -#: report/templates/report/inventree_test_report.html:154 +#: report/templates/report/inventree_test_report.html:153 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "" -#: report/templates/report/inventree_test_report.html:168 stock/admin.py:162 +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 #: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 #: templates/js/translated/stock.js:3110 msgid "Serial" @@ -8644,654 +8716,670 @@ msgstr "" msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:172 +#: stock/admin.py:51 stock/admin.py:171 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:176 +#: stock/admin.py:53 stock/admin.py:175 msgid "Location Name" msgstr "" -#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/admin.py:63 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:149 +#: stock/admin.py:148 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:168 +#: stock/admin.py:167 msgid "Status Code" msgstr "" -#: stock/admin.py:180 +#: stock/admin.py:179 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:185 +#: stock/admin.py:184 +msgid "Supplier Part SKU" +msgstr "" + +#: stock/admin.py:189 msgid "Supplier ID" msgstr "" -#: stock/admin.py:191 +#: stock/admin.py:195 msgid "Supplier Name" msgstr "" -#: stock/admin.py:196 +#: stock/admin.py:200 msgid "Customer ID" msgstr "" -#: stock/admin.py:201 stock/models.py:806 +#: stock/admin.py:205 stock/models.py:804 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:206 +#: stock/admin.py:210 msgid "Build ID" msgstr "" -#: stock/admin.py:216 +#: stock/admin.py:220 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:221 +#: stock/admin.py:225 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:236 +#: stock/admin.py:240 msgid "Review Needed" msgstr "" -#: stock/admin.py:241 +#: stock/admin.py:245 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:256 stock/models.py:900 +#: stock/admin.py:260 stock/models.py:898 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "" -#: stock/api.py:318 +#: stock/api.py:312 msgid "Filter by location depth" msgstr "" -#: stock/api.py:338 +#: stock/api.py:332 +msgid "Filter by top-level locations" +msgstr "" + +#: stock/api.py:347 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:359 +#: stock/api.py:369 stock/serializers.py:1085 msgid "Parent Location" msgstr "" -#: stock/api.py:360 +#: stock/api.py:370 msgid "Filter by parent location" msgstr "" -#: stock/api.py:615 templates/js/translated/table_filters.js:427 +#: stock/api.py:625 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:803 +#: stock/api.py:813 msgid "Part Tree" msgstr "" -#: stock/api.py:833 +#: stock/api.py:843 msgid "Expiry date before" msgstr "" -#: stock/api.py:837 +#: stock/api.py:847 msgid "Expiry date after" msgstr "" -#: stock/api.py:840 stock/templates/stock/item_base.html:439 +#: stock/api.py:850 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:927 +#: stock/api.py:937 msgid "Quantity is required" msgstr "" -#: stock/api.py:933 +#: stock/api.py:943 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:964 +#: stock/api.py:974 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:974 +#: stock/api.py:984 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:1005 +#: stock/api.py:1015 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:59 +#: stock/models.py:60 msgid "Stock Location type" msgstr "" -#: stock/models.py:60 +#: stock/models.py:61 msgid "Stock Location types" msgstr "" -#: stock/models.py:86 +#: stock/models.py:87 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:123 stock/models.py:788 +#: stock/models.py:124 stock/models.py:786 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:124 stock/templates/stock/location.html:186 +#: stock/models.py:125 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "" -#: stock/models.py:166 stock/models.py:949 +#: stock/models.py:167 stock/models.py:947 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:167 stock/models.py:950 +#: stock/models.py:168 stock/models.py:948 msgid "Select Owner" msgstr "" -#: stock/models.py:175 +#: stock/models.py:176 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:182 templates/js/translated/stock.js:2781 +#: stock/models.py:183 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:183 +#: stock/models.py:184 msgid "This is an external stock location" msgstr "" -#: stock/models.py:189 templates/js/translated/stock.js:2790 +#: stock/models.py:190 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" -#: stock/models.py:193 +#: stock/models.py:194 msgid "Stock location type of this location" msgstr "" -#: stock/models.py:262 +#: stock/models.py:261 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:643 +#: stock/models.py:641 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:670 stock/serializers.py:419 +#: stock/models.py:668 stock/serializers.py:446 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:687 +#: stock/models.py:685 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:697 stock/models.py:710 +#: stock/models.py:695 stock/models.py:708 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:700 +#: stock/models.py:698 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:724 +#: stock/models.py:722 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:729 +#: stock/models.py:727 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:742 +#: stock/models.py:740 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:758 +#: stock/models.py:756 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:770 +#: stock/models.py:768 msgid "Base part" msgstr "" -#: stock/models.py:780 +#: stock/models.py:778 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:792 +#: stock/models.py:790 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:800 stock/serializers.py:1480 +#: stock/models.py:798 stock/serializers.py:1476 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:811 +#: stock/models.py:809 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:830 +#: stock/models.py:828 msgid "Serial number for this item" msgstr "" -#: stock/models.py:844 stock/serializers.py:1463 +#: stock/models.py:842 stock/serializers.py:1459 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:849 +#: stock/models.py:847 msgid "Stock Quantity" msgstr "" -#: stock/models.py:859 +#: stock/models.py:857 msgid "Source Build" msgstr "" -#: stock/models.py:862 +#: stock/models.py:860 msgid "Build for this stock item" msgstr "" -#: stock/models.py:869 stock/templates/stock/item_base.html:363 +#: stock/models.py:867 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:872 +#: stock/models.py:870 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:881 +#: stock/models.py:879 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:885 +#: stock/models.py:883 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:891 +#: stock/models.py:889 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:902 +#: stock/models.py:900 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:920 +#: stock/models.py:918 msgid "Delete on deplete" msgstr "" -#: stock/models.py:921 +#: stock/models.py:919 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:941 +#: stock/models.py:939 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:972 +#: stock/models.py:970 msgid "Converted to part" msgstr "" -#: stock/models.py:1490 +#: stock/models.py:1486 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1496 +#: stock/models.py:1492 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1500 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1510 +#: stock/models.py:1506 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1515 +#: stock/models.py:1511 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1523 stock/serializers.py:658 +#: stock/models.py:1519 stock/serializers.py:660 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1620 +#: stock/models.py:1616 msgid "Test template does not exist" msgstr "" -#: stock/models.py:1638 +#: stock/models.py:1634 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1642 +#: stock/models.py:1638 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1645 +#: stock/models.py:1641 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1648 +#: stock/models.py:1644 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1651 +#: stock/models.py:1647 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1654 +#: stock/models.py:1650 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1661 stock/serializers.py:1369 +#: stock/models.py:1657 stock/serializers.py:1365 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1665 +#: stock/models.py:1661 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1673 +#: stock/models.py:1669 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1678 +#: stock/models.py:1674 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1905 +#: stock/models.py:1901 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2310 msgid "Entry notes" msgstr "" -#: stock/models.py:2391 +#: stock/models.py:2378 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2396 +#: stock/models.py:2383 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2423 +#: stock/models.py:2388 +msgid "Invalid value for this test" +msgstr "" + +#: stock/models.py:2412 msgid "Test result" msgstr "" -#: stock/models.py:2430 +#: stock/models.py:2419 msgid "Test output value" msgstr "" -#: stock/models.py:2438 +#: stock/models.py:2427 msgid "Test result attachment" msgstr "" -#: stock/models.py:2442 +#: stock/models.py:2431 msgid "Test notes" msgstr "" -#: stock/models.py:2450 templates/js/translated/stock.js:1548 +#: stock/models.py:2439 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2440 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2457 +#: stock/models.py:2446 msgid "Started" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2447 msgid "The timestamp of the test start" msgstr "" -#: stock/models.py:2464 +#: stock/models.py:2453 msgid "Finished" msgstr "" -#: stock/models.py:2465 +#: stock/models.py:2454 msgid "The timestamp of the test finish" msgstr "" -#: stock/serializers.py:75 +#: stock/serializers.py:74 msgid "Generated batch code" msgstr "" -#: stock/serializers.py:84 +#: stock/serializers.py:83 msgid "Select build order" msgstr "" -#: stock/serializers.py:93 +#: stock/serializers.py:92 msgid "Select stock item to generate batch code for" msgstr "" -#: stock/serializers.py:102 +#: stock/serializers.py:101 msgid "Select location to generate batch code for" msgstr "" -#: stock/serializers.py:111 +#: stock/serializers.py:110 msgid "Select part to generate batch code for" msgstr "" -#: stock/serializers.py:120 +#: stock/serializers.py:119 msgid "Select purchase order" msgstr "" -#: stock/serializers.py:127 +#: stock/serializers.py:126 msgid "Enter quantity for batch code" msgstr "" -#: stock/serializers.py:150 +#: stock/serializers.py:149 msgid "Generated serial number" msgstr "" -#: stock/serializers.py:159 +#: stock/serializers.py:158 msgid "Select part to generate serial number for" msgstr "" -#: stock/serializers.py:167 +#: stock/serializers.py:166 msgid "Quantity of serial numbers to generate" msgstr "" -#: stock/serializers.py:229 +#: stock/serializers.py:228 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:248 +#: stock/serializers.py:247 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:280 +#: stock/serializers.py:279 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:313 +#: stock/serializers.py:315 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:411 +#: stock/serializers.py:438 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:531 +#: stock/serializers.py:558 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:595 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:606 +#: stock/serializers.py:608 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:613 +#: stock/serializers.py:615 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 +#: stock/serializers.py:626 stock/serializers.py:1322 stock/serializers.py:1578 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:631 +#: stock/serializers.py:633 msgid "Optional note field" msgstr "" -#: stock/serializers.py:641 +#: stock/serializers.py:643 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:696 +#: stock/serializers.py:698 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:703 +#: stock/serializers.py:705 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:704 +#: stock/serializers.py:706 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 -#: stock/serializers.py:935 +#: stock/serializers.py:711 stock/serializers.py:791 stock/serializers.py:887 +#: stock/serializers.py:937 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:719 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:725 +#: stock/serializers.py:727 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:736 +#: stock/serializers.py:738 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:749 +#: stock/serializers.py:751 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:784 +#: stock/serializers.py:786 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:819 +#: stock/serializers.py:821 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:834 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:849 +#: stock/serializers.py:851 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:880 +#: stock/serializers.py:882 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:917 +#: stock/serializers.py:919 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:923 +#: stock/serializers.py:925 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:1019 stock/serializers.py:1082 +#: stock/serializers.py:1021 stock/serializers.py:1093 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:220 +#: stock/templates/stock/location.html:222 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1198 +#: stock/serializers.py:1086 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: stock/serializers.py:1194 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1202 +#: stock/serializers.py:1198 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1206 +#: stock/serializers.py:1202 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1230 +#: stock/serializers.py:1226 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1236 +#: stock/serializers.py:1232 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1244 +#: stock/serializers.py:1240 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1254 stock/serializers.py:1508 +#: stock/serializers.py:1250 stock/serializers.py:1504 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1333 +#: stock/serializers.py:1329 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1338 +#: stock/serializers.py:1334 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1339 +#: stock/serializers.py:1335 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1344 +#: stock/serializers.py:1340 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1345 +#: stock/serializers.py:1341 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1355 +#: stock/serializers.py:1351 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1422 +#: stock/serializers.py:1418 msgid "No Change" msgstr "" -#: stock/serializers.py:1451 +#: stock/serializers.py:1447 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1470 +#: stock/serializers.py:1466 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1498 +#: stock/serializers.py:1494 msgid "Stock transaction notes" msgstr "" @@ -9444,7 +9532,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276 msgid "Delete Test Data" msgstr "" @@ -9464,11 +9552,11 @@ msgstr "" msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:272 +#: stock/templates/stock/item.html:264 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "" @@ -9754,28 +9842,28 @@ msgstr "" msgid "Location Type" msgstr "" -#: stock/templates/stock/location.html:224 +#: stock/templates/stock/location.html:226 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:225 +#: stock/templates/stock/location.html:227 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:295 +#: stock/templates/stock/location.html:299 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:317 +#: stock/templates/stock/location.html:321 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:390 +#: stock/templates/stock/location.html:394 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:401 +#: stock/templates/stock/location.html:405 msgid "Link Barcode to Stock Location" msgstr "" @@ -10199,20 +10287,20 @@ msgstr "" msgid "Pricing Settings" msgstr "" -#: templates/InvenTree/settings/pricing.html:34 +#: templates/InvenTree/settings/pricing.html:35 msgid "Exchange Rates" msgstr "" -#: templates/InvenTree/settings/pricing.html:38 +#: templates/InvenTree/settings/pricing.html:39 msgid "Update Now" msgstr "" -#: templates/InvenTree/settings/pricing.html:46 -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 msgid "Last Update" msgstr "" -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:51 msgid "Never" msgstr "" @@ -10269,8 +10357,8 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:547 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 +#: templates/js/translated/part.js:393 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:402 msgid "Delete" msgstr "" @@ -10310,12 +10398,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 -#: templates/js/translated/part.js:1645 +#: templates/js/translated/part.js:1646 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 -#: templates/js/translated/part.js:1646 +#: templates/js/translated/part.js:1647 msgid "Delete Template" msgstr "" @@ -10705,7 +10793,7 @@ msgid "Submit Bug Report" msgstr "" #: templates/about.html:91 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 +#: templates/js/translated/helpers.js:589 msgid "copy to clipboard" msgstr "" @@ -10769,7 +10857,7 @@ 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 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45 msgid "Return to Site" msgstr "" @@ -10883,15 +10971,19 @@ msgstr "" msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "" -#: templates/allauth_2fa/setup.html:23 +#: templates/allauth_2fa/setup.html:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 msgid "Step 2" msgstr "" -#: templates/allauth_2fa/setup.html:27 +#: templates/allauth_2fa/setup.html:28 msgid "Input a token generated by the app:" msgstr "" -#: templates/allauth_2fa/setup.html:37 +#: templates/allauth_2fa/setup.html:38 msgid "Verify" msgstr "" @@ -10970,7 +11062,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3217 +#: templates/js/translated/part.js:3219 msgid "Minimum Quantity" msgstr "" @@ -11058,27 +11150,27 @@ msgstr "" msgid "Delete attachments" msgstr "" -#: templates/js/translated/attachment.js:253 +#: templates/js/translated/attachment.js:260 msgid "Attachment actions" msgstr "" -#: templates/js/translated/attachment.js:275 +#: templates/js/translated/attachment.js:294 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:315 +#: templates/js/translated/attachment.js:334 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:365 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:366 +#: templates/js/translated/attachment.js:385 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:374 +#: templates/js/translated/attachment.js:393 msgid "Delete attachment" msgstr "" @@ -11359,7 +11451,7 @@ msgid "Includes variant and substitute stock" msgstr "" #: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 -#: templates/js/translated/part.js:1256 +#: templates/js/translated/part.js:1257 #: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" @@ -11686,7 +11778,7 @@ msgstr "" #: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 #: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 -#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11729,8 +11821,8 @@ msgstr "" msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 -#: templates/js/translated/part.js:1202 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:791 +#: templates/js/translated/part.js:1203 msgid "Trackable part" msgstr "" @@ -11916,7 +12008,7 @@ msgid "Delete Parameters" msgstr "" #: templates/js/translated/company.js:1191 -#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2244 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2245 msgid "Order parts" msgstr "" @@ -11933,34 +12025,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:1279 -#: templates/js/translated/company.js:1567 templates/js/translated/part.js:798 -#: templates/js/translated/part.js:1210 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Template part" msgstr "" #: templates/js/translated/company.js:1283 -#: templates/js/translated/company.js:1571 templates/js/translated/part.js:802 -#: templates/js/translated/part.js:1214 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:803 +#: templates/js/translated/part.js:1215 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1464 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1465 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1527 +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1528 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1528 +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1529 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1433 +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1434 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1549 +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1550 msgid "Delete Parameter" msgstr "" @@ -12094,23 +12186,23 @@ msgstr "" msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2499 +#: templates/js/translated/forms.js:2500 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3113 +#: templates/js/translated/forms.js:3114 msgid "Select Columns" msgstr "" @@ -12211,7 +12303,7 @@ msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 -#: templates/js/translated/part.js:1604 +#: templates/js/translated/part.js:1605 msgid "ID" msgstr "" @@ -12292,347 +12384,343 @@ msgstr "" 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 +#: templates/js/translated/part.js:333 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:355 +#: templates/js/translated/part.js:356 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:356 +#: templates/js/translated/part.js:357 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:370 +#: templates/js/translated/part.js:371 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:383 +#: templates/js/translated/part.js:384 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:388 +#: templates/js/translated/part.js:389 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:397 +#: templates/js/translated/part.js:398 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:401 +#: templates/js/translated/part.js:402 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:406 +#: templates/js/translated/part.js:407 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:430 +#: templates/js/translated/part.js:431 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:432 +#: templates/js/translated/part.js:433 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:433 +#: templates/js/translated/part.js:434 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:462 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:463 +#: templates/js/translated/part.js:464 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:474 +#: templates/js/translated/part.js:475 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:531 +#: templates/js/translated/part.js:532 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:532 +#: templates/js/translated/part.js:533 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:546 +#: templates/js/translated/part.js:547 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:548 +#: templates/js/translated/part.js:549 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:549 +#: templates/js/translated/part.js:550 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:550 +#: templates/js/translated/part.js:551 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:557 +#: templates/js/translated/part.js:558 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:593 +#: templates/js/translated/part.js:594 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:595 +#: templates/js/translated/part.js:596 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:600 +#: templates/js/translated/part.js:601 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:602 +#: templates/js/translated/part.js:603 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:619 +#: templates/js/translated/part.js:620 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:629 +#: templates/js/translated/part.js:630 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:632 +#: templates/js/translated/part.js:633 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:657 +#: templates/js/translated/part.js:658 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:685 +#: templates/js/translated/part.js:686 #: templates/js/translated/table_filters.js:747 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:688 +#: templates/js/translated/part.js:689 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:748 +#: templates/js/translated/part.js:749 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:771 +#: templates/js/translated/part.js:772 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +#: templates/js/translated/part.js:795 templates/js/translated/part.js:1207 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:806 +#: templates/js/translated/part.js:807 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:810 +#: templates/js/translated/part.js:811 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:897 +#: templates/js/translated/part.js:898 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:901 +#: templates/js/translated/part.js:902 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1050 +#: templates/js/translated/part.js:1051 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1145 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +#: templates/js/translated/part.js:1113 templates/js/translated/part.js:1155 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1281 +#: templates/js/translated/part.js:1282 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1599 +#: templates/js/translated/part.js:1600 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1662 +#: templates/js/translated/part.js:1663 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1674 +#: templates/js/translated/part.js:1675 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1682 +#: templates/js/translated/part.js:1683 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1716 +#: templates/js/translated/part.js:1717 #: templates/js/translated/purchase_order.js:1654 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1860 +#: templates/js/translated/part.js:1861 #: templates/js/translated/purchase_order.js:2153 #: templates/js/translated/return_order.js:755 #: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1906 +#: templates/js/translated/part.js:1907 #: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1970 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1991 +#: templates/js/translated/part.js:1992 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 +#: templates/js/translated/part.js:2080 templates/js/translated/part.js:2506 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2200 +#: templates/js/translated/part.js:2201 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2205 +#: templates/js/translated/part.js:2206 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2235 +#: templates/js/translated/part.js:2236 msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2286 +#: templates/js/translated/part.js:2287 msgid "part" msgstr "" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2288 msgid "parts" msgstr "" -#: templates/js/translated/part.js:2383 +#: templates/js/translated/part.js:2384 msgid "No category" msgstr "" -#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2546 +#: templates/js/translated/part.js:2547 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2644 +#: templates/js/translated/part.js:2645 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2760 +#: templates/js/translated/part.js:2761 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2776 +#: templates/js/translated/part.js:2777 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2865 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2887 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/part.js:2938 templates/js/translated/stock.js:1457 #: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2940 +#: templates/js/translated/part.js:2942 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2956 +#: templates/js/translated/part.js:2958 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2970 +#: templates/js/translated/part.js:2972 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3051 templates/js/translated/part.js:3052 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3052 +#: templates/js/translated/part.js:3054 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3058 +#: templates/js/translated/part.js:3060 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3108 +#: templates/js/translated/part.js:3110 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3114 +#: templates/js/translated/part.js:3116 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3210 +#: templates/js/translated/part.js:3212 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3226 +#: templates/js/translated/part.js:3228 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3271 +#: templates/js/translated/part.js:3273 msgid "Minimum Stock Level" msgstr "" @@ -13240,10 +13328,6 @@ msgstr "" 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 "" @@ -13412,7 +13496,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:401 +#: templates/js/translated/stock.js:1042 users/models.py:392 msgid "Add" msgstr "" @@ -14303,34 +14387,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:384 +#: users/models.py:375 msgid "Permission set" msgstr "" -#: users/models.py:393 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "View" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "Permission to view items" msgstr "" -#: users/models.py:401 +#: users/models.py:392 msgid "Permission to add items" msgstr "" -#: users/models.py:405 +#: users/models.py:396 msgid "Change" msgstr "" -#: users/models.py:407 +#: users/models.py:398 msgid "Permissions to edit items" msgstr "" -#: users/models.py:413 +#: users/models.py:404 msgid "Permission to delete items" msgstr "" + diff --git a/src/backend/InvenTree/locale/hi/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/hi/LC_MESSAGES/django.po index 009acd345f..1332f77c5e 100644 --- a/src/backend/InvenTree/locale/hi/LC_MESSAGES/django.po +++ b/src/backend/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-05-31 07:08+0000\n" -"PO-Revision-Date: 2024-05-27 11:55\n" +"POT-Creation-Date: 2024-06-26 03:18+0000\n" +"PO-Revision-Date: 2024-06-26 06:05\n" "Last-Translator: \n" "Language-Team: Hindi\n" "Language: hi_IN\n" @@ -21,7 +21,7 @@ msgstr "" msgid "API endpoint not found" msgstr "" -#: InvenTree/api.py:536 +#: InvenTree/api.py:520 msgid "User does not have permission to view this model" msgstr "" @@ -52,25 +52,25 @@ msgstr "" msgid "Error details can be found in the admin panel" msgstr "" -#: InvenTree/fields.py:139 +#: InvenTree/fields.py:136 msgid "Enter date" msgstr "तारीख दर्ज करें" -#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 -#: build/serializers.py:531 build/templates/build/sidebar.html:21 -#: company/models.py:849 company/templates/company/sidebar.html:37 -#: order/models.py:1332 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:205 InvenTree/models.py:918 build/serializers.py:452 +#: build/serializers.py:530 build/templates/build/sidebar.html:21 +#: company/models.py:817 company/templates/company/sidebar.html:37 +#: order/models.py:1296 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:3218 part/templates/part/part_sidebar.html:63 +#: part/models.py:3183 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_report.html:172 -#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 -#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 -#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 -#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:230 stock/models.py:2309 stock/models.py:2431 +#: stock/serializers.py:632 stock/serializers.py:790 stock/serializers.py:886 +#: stock/serializers.py:936 stock/serializers.py:1239 stock/serializers.py:1328 +#: stock/serializers.py:1493 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1080 +#: templates/js/translated/part.js:1081 #: templates/js/translated/purchase_order.js:2200 #: templates/js/translated/return_order.js:775 #: templates/js/translated/sales_order.js:1103 @@ -120,15 +120,15 @@ msgstr "" msgid "You must type the same email each time." msgstr "" -#: InvenTree/forms.py:253 InvenTree/forms.py:261 +#: InvenTree/forms.py:248 InvenTree/forms.py:256 msgid "The provided primary email address is not valid." msgstr "" -#: InvenTree/forms.py:268 +#: InvenTree/forms.py:263 msgid "The provided email domain is not approved." msgstr "" -#: InvenTree/forms.py:395 +#: InvenTree/forms.py:390 msgid "Registration is disabled." msgstr "" @@ -171,35 +171,35 @@ msgstr "" msgid "Remove HTML tags from this value" msgstr "" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Connection error" msgstr "कनेक्शन त्रुटि" -#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 msgid "Server responded with invalid status code" msgstr "" -#: InvenTree/helpers_model.py:158 +#: InvenTree/helpers_model.py:148 msgid "Exception occurred" msgstr "" -#: InvenTree/helpers_model.py:168 +#: InvenTree/helpers_model.py:158 msgid "Server responded with invalid Content-Length value" msgstr "" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:161 msgid "Image size is too large" msgstr "" -#: InvenTree/helpers_model.py:183 +#: InvenTree/helpers_model.py:173 msgid "Image download exceeded maximum size" msgstr "" -#: InvenTree/helpers_model.py:188 +#: InvenTree/helpers_model.py:178 msgid "Remote server returned empty response" msgstr "" -#: InvenTree/helpers_model.py:196 +#: InvenTree/helpers_model.py:186 msgid "Supplied URL is not a valid image file" msgstr "" @@ -296,46 +296,50 @@ msgid "Portuguese (Brazilian)" msgstr "" #: InvenTree/locales.py:41 -msgid "Russian" +msgid "Romanian" msgstr "" #: InvenTree/locales.py:42 -msgid "Slovak" +msgid "Russian" msgstr "" #: InvenTree/locales.py:43 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: InvenTree/locales.py:44 -msgid "Serbian" +msgid "Slovenian" msgstr "" #: InvenTree/locales.py:45 -msgid "Swedish" +msgid "Serbian" msgstr "" #: InvenTree/locales.py:46 -msgid "Thai" +msgid "Swedish" msgstr "" #: InvenTree/locales.py:47 -msgid "Turkish" +msgid "Thai" msgstr "" #: InvenTree/locales.py:48 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: InvenTree/locales.py:49 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: InvenTree/locales.py:50 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: InvenTree/locales.py:51 +msgid "Chinese (Simplified)" +msgstr "" + +#: InvenTree/locales.py:52 msgid "Chinese (Traditional)" msgstr "" @@ -344,153 +348,65 @@ msgstr "" msgid "[{site_name}] Log in to the app" msgstr "" -#: InvenTree/magic_login.py:38 company/models.py:133 +#: InvenTree/magic_login.py:38 company/models.py:136 #: company/templates/company/company_base.html:138 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:677 msgid "Email" msgstr "ई-मेल" -#: InvenTree/models.py:107 +#: InvenTree/models.py:105 msgid "Error running plugin validation" msgstr "" -#: InvenTree/models.py:176 +#: InvenTree/models.py:174 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:182 +#: InvenTree/models.py:180 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:183 +#: InvenTree/models.py:181 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:413 +#: InvenTree/models.py:408 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:420 +#: InvenTree/models.py:415 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:426 +#: InvenTree/models.py:421 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:437 +#: InvenTree/models.py:432 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:445 +#: InvenTree/models.py:440 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:476 +#: InvenTree/models.py:471 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:550 -msgid "Missing file" -msgstr "" - -#: InvenTree/models.py:551 -msgid "Missing external link" -msgstr "" - -#: InvenTree/models.py:572 stock/models.py:2437 -#: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:326 -msgid "Attachment" -msgstr "" - -#: InvenTree/models.py:573 -msgid "Select file to attach" -msgstr "" - -#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:831 -#: order/models.py:303 order/models.py:1337 order/models.py:1753 -#: part/admin.py:55 part/models.py:962 -#: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_report.html:164 -#: stock/admin.py:225 templates/js/translated/company.js:1319 -#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2455 -#: templates/js/translated/purchase_order.js:2040 -#: templates/js/translated/purchase_order.js:2204 -#: templates/js/translated/return_order.js:779 -#: templates/js/translated/sales_order.js:1092 -#: templates/js/translated/sales_order.js:2023 -msgid "Link" -msgstr "" - -#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 -#: stock/models.py:836 -msgid "Link to external URL" -msgstr "" - -#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:341 -msgid "Comment" -msgstr "" - -#: InvenTree/models.py:589 -msgid "File comment" -msgstr "" - -#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 -#: common/models.py:2518 common/models.py:2742 common/models.py:2743 -#: common/models.py:2988 common/models.py:2989 part/models.py:3228 -#: part/models.py:3315 part/models.py:3408 part/models.py:3436 -#: plugin/models.py:259 plugin/models.py:260 -#: report/templates/report/inventree_test_report.html:105 -#: templates/js/translated/stock.js:3036 users/models.py:111 -msgid "User" -msgstr "" - -#: InvenTree/models.py:602 -msgid "upload date" -msgstr "" - -#: InvenTree/models.py:624 -msgid "Filename must not be empty" -msgstr "" - -#: InvenTree/models.py:635 -msgid "Invalid attachment directory" -msgstr "" - -#: InvenTree/models.py:665 -#, python-brace-format -msgid "Filename contains illegal character '{c}'" -msgstr "" - -#: InvenTree/models.py:668 -msgid "Filename missing extension" -msgstr "" - -#: InvenTree/models.py:677 -msgid "Attachment with this filename already exists" -msgstr "" - -#: InvenTree/models.py:684 -msgid "Error renaming file" -msgstr "" - -#: InvenTree/models.py:860 +#: InvenTree/models.py:719 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:877 +#: InvenTree/models.py:736 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 -#: common/serializers.py:403 company/models.py:614 machine/models.py:24 -#: part/models.py:898 part/models.py:3659 plugin/models.py:50 -#: report/models.py:149 stock/models.py:72 +#: InvenTree/models.py:766 common/models.py:2623 common/models.py:3036 +#: common/serializers.py:408 company/models.py:580 machine/models.py:24 +#: part/models.py:891 part/models.py:3639 plugin/models.py:51 +#: report/models.py:150 stock/models.py:73 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:83 @@ -501,25 +417,25 @@ msgstr "" #: templates/js/translated/company.js:724 #: templates/js/translated/company.js:913 #: templates/js/translated/company.js:1165 -#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 -#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1187 +#: templates/js/translated/part.js:1475 templates/js/translated/part.js:1611 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "" -#: InvenTree/models.py:913 build/models.py:218 -#: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:523 company/models.py:840 +#: InvenTree/models.py:772 build/models.py:220 +#: build/templates/build/detail.html:24 common/models.py:138 +#: company/models.py:509 company/models.py:808 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 order/models.py:289 -#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 -#: part/models.py:3674 part/templates/part/category.html:82 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:914 +#: part/models.py:3654 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:155 -#: report/models.py:509 report/models.py:535 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 #: report/templates/report/inventree_build_order_report.html:117 -#: stock/admin.py:55 stock/models.py:78 stock/templates/stock/location.html:125 +#: stock/admin.py:54 stock/models.py:79 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 @@ -528,10 +444,10 @@ msgstr "" #: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 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:2354 -#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1239 +#: templates/js/translated/part.js:1484 templates/js/translated/part.js:1622 +#: templates/js/translated/part.js:1959 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2897 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1706 #: templates/js/translated/purchase_order.js:1849 @@ -544,149 +460,141 @@ msgstr "" msgid "Description" msgstr "" -#: InvenTree/models.py:914 stock/models.py:79 +#: InvenTree/models.py:773 stock/models.py:80 msgid "Description (optional)" msgstr "" -#: InvenTree/models.py:923 -msgid "parent" -msgstr "" - -#: InvenTree/models.py:929 templates/js/translated/part.js:2793 +#: InvenTree/models.py:788 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "" -#: InvenTree/models.py:1035 +#: InvenTree/models.py:918 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:1064 +#: InvenTree/models.py:947 msgid "Barcode Data" msgstr "" -#: InvenTree/models.py:1065 +#: InvenTree/models.py:948 msgid "Third party barcode data" msgstr "" -#: InvenTree/models.py:1071 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:1072 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:1125 +#: InvenTree/models.py:1008 msgid "Existing barcode found" msgstr "" -#: InvenTree/models.py:1168 +#: InvenTree/models.py:1051 msgid "Server Error" msgstr "" -#: InvenTree/models.py:1169 +#: InvenTree/models.py:1052 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:62 part/models.py:4212 +#: InvenTree/serializers.py:63 part/models.py:4192 msgid "Must be a valid number" msgstr "" -#: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:3036 +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3001 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "" -#: InvenTree/serializers.py:102 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:441 +#: InvenTree/serializers.py:442 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:453 +#: InvenTree/serializers.py:454 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:472 +#: InvenTree/serializers.py:473 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:474 +#: InvenTree/serializers.py:475 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:481 +#: InvenTree/serializers.py:482 msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:542 -msgid "Filename" -msgstr "" - -#: InvenTree/serializers.py:576 +#: InvenTree/serializers.py:540 msgid "Invalid value" msgstr "" -#: InvenTree/serializers.py:596 +#: InvenTree/serializers.py:560 msgid "Data File" msgstr "" -#: InvenTree/serializers.py:597 +#: InvenTree/serializers.py:561 msgid "Select data file for upload" msgstr "" -#: InvenTree/serializers.py:614 +#: InvenTree/serializers.py:578 msgid "Unsupported file type" msgstr "" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:584 msgid "File is too large" msgstr "" -#: InvenTree/serializers.py:641 +#: InvenTree/serializers.py:605 msgid "No columns found in file" msgstr "" -#: InvenTree/serializers.py:644 +#: InvenTree/serializers.py:608 msgid "No data rows found in file" msgstr "" -#: InvenTree/serializers.py:757 +#: InvenTree/serializers.py:721 msgid "No data rows provided" msgstr "" -#: InvenTree/serializers.py:760 +#: InvenTree/serializers.py:724 msgid "No data columns supplied" msgstr "" -#: InvenTree/serializers.py:827 +#: InvenTree/serializers.py:791 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "" -#: InvenTree/serializers.py:836 +#: InvenTree/serializers.py:800 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/serializers.py:859 +#: InvenTree/serializers.py:840 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:860 +#: InvenTree/serializers.py:841 msgid "URL of remote image file" msgstr "" -#: InvenTree/serializers.py:878 +#: InvenTree/serializers.py:859 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/status.py:66 part/serializers.py:1178 +#: InvenTree/status.py:66 part/serializers.py:1174 msgid "Background worker check failed" msgstr "" @@ -698,27 +606,27 @@ msgstr "" msgid "InvenTree system health checks failed" msgstr "" -#: InvenTree/templatetags/inventree_extras.py:183 +#: InvenTree/templatetags/inventree_extras.py:184 msgid "Unknown database" msgstr "" -#: InvenTree/validators.py:31 InvenTree/validators.py:33 +#: InvenTree/validators.py:32 InvenTree/validators.py:34 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:39 +#: InvenTree/validators.py:40 msgid "Not a valid currency code" msgstr "" -#: InvenTree/validators.py:121 InvenTree/validators.py:137 +#: InvenTree/validators.py:118 InvenTree/validators.py:134 msgid "Overage value must not be negative" msgstr "" -#: InvenTree/validators.py:139 +#: InvenTree/validators.py:136 msgid "Overage must not exceed 100%" msgstr "" -#: InvenTree/validators.py:145 +#: InvenTree/validators.py:142 msgid "Invalid value for overage" msgstr "" @@ -750,14 +658,14 @@ msgstr "" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: build/api.py:299 part/models.py:4070 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:300 part/models.py:4084 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4064 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2529 #: templates/js/translated/table_filters.js:186 @@ -778,30 +686,30 @@ msgstr "" msgid "Allocated" msgstr "" -#: build/api.py:311 company/models.py:904 company/serializers.py:383 +#: build/api.py:311 company/models.py:872 company/serializers.py:359 #: 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:2561 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:234 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 -#: templates/js/translated/part.js:699 +#: templates/js/translated/part.js:693 templates/js/translated/part.js:695 +#: templates/js/translated/part.js:700 #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:575 msgid "Available" msgstr "" -#: build/models.py:83 build/templates/build/build_base.html:9 +#: build/models.py:85 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_report.html:105 -#: stock/serializers.py:83 templates/email/build_order_completed.html:16 +#: stock/serializers.py:82 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:2892 msgid "Build Order" msgstr "" -#: build/models.py:84 build/templates/build/build_base.html:13 +#: build/models.py:86 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 @@ -812,25 +720,25 @@ msgstr "" msgid "Build Orders" msgstr "" -#: build/models.py:131 +#: build/models.py:133 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:142 order/models.py:240 +#: build/models.py:144 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "" -#: build/models.py:148 +#: build/models.py:150 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:209 +#: build/models.py:211 msgid "Build Order Reference" msgstr "" -#: build/models.py:210 order/models.py:463 order/models.py:928 -#: order/models.py:1325 order/models.py:2056 part/admin.py:419 -#: part/models.py:4105 part/templates/part/upload_bom.html:54 +#: build/models.py:212 order/models.py:463 order/models.py:926 +#: order/models.py:1289 order/models.py:2020 part/admin.py:411 +#: part/models.py:4085 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_purchase_order_report.html:28 #: report/templates/report/inventree_return_order_report.html:26 @@ -844,27 +752,27 @@ msgstr "" msgid "Reference" msgstr "" -#: build/models.py:221 +#: build/models.py:223 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:229 build/templates/build/build_base.html:183 +#: build/models.py:231 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:230 +#: build/models.py:232 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:235 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 -#: order/models.py:1450 order/models.py:1595 order/models.py:1596 -#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 -#: part/models.py:3191 part/models.py:3335 part/models.py:3358 -#: part/models.py:3379 part/models.py:3401 part/models.py:3511 -#: part/models.py:3807 part/models.py:3963 part/models.py:4056 -#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 +#: build/models.py:237 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1026 order/api.py:805 +#: order/models.py:1414 order/models.py:1559 order/models.py:1560 +#: part/api.py:1494 part/api.py:1788 part/models.py:395 part/models.py:3012 +#: part/models.py:3156 part/models.py:3303 part/models.py:3324 +#: part/models.py:3346 part/models.py:3477 part/models.py:3787 +#: part/models.py:3943 part/models.py:4036 part/models.py:4395 +#: part/serializers.py:1120 part/serializers.py:1726 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -875,8 +783,8 @@ msgstr "" #: report/templates/report/inventree_return_order_report.html:24 #: report/templates/report/inventree_sales_order_report.html:27 #: report/templates/report/inventree_stock_location_report.html:102 -#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 -#: stock/serializers.py:818 templates/InvenTree/search.html:82 +#: stock/serializers.py:109 stock/serializers.py:157 stock/serializers.py:423 +#: stock/serializers.py:820 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 @@ -889,8 +797,8 @@ msgstr "" #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 -#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2323 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:1944 templates/js/translated/part.js:2016 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 #: templates/js/translated/purchase_order.js:751 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1848 @@ -908,107 +816,107 @@ msgstr "" msgid "Part" msgstr "" -#: build/models.py:243 +#: build/models.py:245 msgid "Select part to build" msgstr "" -#: build/models.py:248 +#: build/models.py:250 msgid "Sales Order Reference" msgstr "" -#: build/models.py:252 +#: build/models.py:254 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:257 build/serializers.py:1000 +#: build/models.py:259 build/serializers.py:999 #: templates/js/translated/build.js:1731 #: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "" -#: build/models.py:261 +#: build/models.py:263 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:266 +#: build/models.py:268 msgid "Destination Location" msgstr "" -#: build/models.py:270 +#: build/models.py:272 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:274 +#: build/models.py:276 msgid "Build Quantity" msgstr "" -#: build/models.py:277 +#: build/models.py:279 msgid "Number of stock items to build" msgstr "" -#: build/models.py:281 +#: build/models.py:283 msgid "Completed items" msgstr "" -#: build/models.py:283 +#: build/models.py:285 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:287 +#: build/models.py:289 msgid "Build Status" msgstr "" -#: build/models.py:291 +#: build/models.py:293 msgid "Build status code" msgstr "" -#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 -#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 +#: build/models.py:302 build/serializers.py:286 order/serializers.py:580 +#: stock/models.py:838 stock/serializers.py:74 stock/serializers.py:1458 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "" -#: build/models.py:304 build/serializers.py:288 +#: build/models.py:306 build/serializers.py:287 msgid "Batch code for this build output" msgstr "" -#: build/models.py:307 order/models.py:316 order/serializers.py:120 -#: part/models.py:1122 part/templates/part/part_base.html:310 +#: build/models.py:309 order/models.py:316 order/serializers.py:119 +#: part/models.py:1115 part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:338 #: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "" -#: build/models.py:311 +#: build/models.py:313 msgid "Target completion date" msgstr "" -#: build/models.py:312 +#: build/models.py:314 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:315 order/models.py:521 order/models.py:2101 +#: build/models.py:317 order/models.py:521 order/models.py:2065 #: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "" -#: build/models.py:321 +#: build/models.py:323 msgid "completed by" msgstr "" -#: build/models.py:329 templates/js/translated/build.js:2207 +#: build/models.py:331 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "" -#: build/models.py:330 +#: build/models.py:332 msgid "User who issued this build order" msgstr "" -#: build/models.py:338 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:145 +#: build/models.py:340 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:147 #: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:232 part/models.py:1139 +#: order/templates/order/sales_order_base.html:232 part/models.py:1132 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_report.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 @@ -1019,31 +927,36 @@ msgstr "" msgid "Responsible" msgstr "" -#: build/models.py:339 +#: build/models.py:341 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:344 build/templates/build/detail.html:108 +#: build/models.py:346 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:184 -#: part/templates/part/part_base.html:383 stock/models.py:836 +#: part/templates/part/part_base.html:383 stock/models.py:834 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "" -#: build/models.py:349 +#: build/models.py:347 common/models.py:3178 part/models.py:956 +#: stock/models.py:834 +msgid "Link to external URL" +msgstr "" + +#: build/models.py:351 msgid "Build Priority" msgstr "" -#: build/models.py:352 +#: build/models.py:354 msgid "Priority of this build order" msgstr "" -#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: build/models.py:361 common/models.py:131 order/admin.py:18 #: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 #: templates/js/translated/build.js:2144 #: templates/js/translated/purchase_order.js:1710 @@ -1054,65 +967,65 @@ msgstr "" msgid "Project Code" msgstr "" -#: build/models.py:360 +#: build/models.py:362 msgid "Project code for this build order" msgstr "" -#: build/models.py:593 build/models.py:658 +#: build/models.py:595 build/models.py:660 msgid "Failed to offload task to complete build allocations" msgstr "" -#: build/models.py:615 +#: build/models.py:617 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:621 +#: build/models.py:623 msgid "A build order has been completed" msgstr "" -#: build/models.py:847 build/models.py:932 +#: build/models.py:849 build/models.py:934 msgid "No build output specified" msgstr "" -#: build/models.py:850 +#: build/models.py:852 msgid "Build output is already completed" msgstr "" -#: build/models.py:853 +#: build/models.py:855 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 -#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 -#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 -#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 +#: build/models.py:938 build/serializers.py:219 build/serializers.py:268 +#: build/serializers.py:866 order/models.py:559 order/serializers.py:432 +#: order/serializers.py:575 part/serializers.py:1484 part/serializers.py:1884 +#: stock/models.py:677 stock/models.py:1495 stock/serializers.py:603 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:941 build/serializers.py:225 +#: build/models.py:943 build/serializers.py:224 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1001 build/serializers.py:548 +#: build/models.py:1003 build/serializers.py:547 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1352 +#: build/models.py:1344 msgid "Build Order Line Item" msgstr "" -#: build/models.py:1377 +#: build/models.py:1369 msgid "Build object" msgstr "" -#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 -#: build/serializers.py:254 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2539 -#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 -#: part/forms.py:48 part/models.py:3205 part/models.py:4078 +#: build/models.py:1383 build/models.py:1639 build/serializers.py:206 +#: build/serializers.py:253 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2509 +#: order/models.py:1272 order/models.py:1931 order/serializers.py:1327 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3170 part/models.py:4058 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1121,8 +1034,8 @@ msgstr "" #: report/templates/report/inventree_sales_order_report.html:29 #: report/templates/report/inventree_stock_location_report.html:104 #: report/templates/report/inventree_test_report.html:90 -#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 -#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:125 stock/serializers.py:165 stock/serializers.py:594 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1133,8 +1046,8 @@ msgstr "" #: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 #: templates/js/translated/model_renderers.js:236 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:962 +#: templates/js/translated/part.js:1812 templates/js/translated/part.js:3342 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1154,38 +1067,38 @@ msgstr "" msgid "Quantity" msgstr "" -#: build/models.py:1392 +#: build/models.py:1384 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1472 +#: build/models.py:1464 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1481 +#: build/models.py:1473 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1491 order/models.py:1918 +#: build/models.py:1483 order/models.py:1882 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1497 order/models.py:1921 +#: build/models.py:1489 order/models.py:1885 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1503 +#: build/models.py:1495 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1562 +#: build/models.py:1554 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 -#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 -#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: build/models.py:1626 build/serializers.py:846 order/serializers.py:1171 +#: order/serializers.py:1192 stock/models.py:358 stock/serializers.py:91 +#: stock/serializers.py:697 stock/serializers.py:1177 stock/serializers.py:1289 #: stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 @@ -1201,70 +1114,70 @@ msgstr "" msgid "Stock Item" msgstr "" -#: build/models.py:1635 +#: build/models.py:1627 msgid "Source stock item" msgstr "" -#: build/models.py:1648 +#: build/models.py:1640 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1656 +#: build/models.py:1648 msgid "Install into" msgstr "" -#: build/models.py:1657 +#: build/models.py:1649 msgid "Destination stock item" msgstr "" -#: build/serializers.py:157 build/serializers.py:876 +#: build/serializers.py:156 build/serializers.py:875 #: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "" -#: build/serializers.py:169 +#: build/serializers.py:168 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:173 +#: build/serializers.py:172 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:177 +#: build/serializers.py:176 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:188 +#: build/serializers.py:187 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:208 build/serializers.py:255 +#: build/serializers.py:207 build/serializers.py:254 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:276 +#: build/serializers.py:275 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:279 +#: build/serializers.py:278 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:294 order/serializers.py:589 order/serializers.py:1343 -#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:293 order/serializers.py:588 order/serializers.py:1331 +#: stock/serializers.py:614 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:295 +#: build/serializers.py:294 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 -#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 -#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 -#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 -#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 +#: build/serializers.py:299 build/serializers.py:440 build/serializers.py:512 +#: order/serializers.py:564 order/serializers.py:672 order/serializers.py:1656 +#: part/serializers.py:1140 stock/serializers.py:100 stock/serializers.py:625 +#: stock/serializers.py:785 stock/serializers.py:881 stock/serializers.py:1321 +#: stock/serializers.py:1577 stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:1001 #: templates/js/translated/build.js:2372 @@ -1280,54 +1193,54 @@ msgstr "" msgid "Location" msgstr "" -#: build/serializers.py:301 +#: build/serializers.py:300 msgid "Stock location for build output" msgstr "" -#: build/serializers.py:315 +#: build/serializers.py:314 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:316 +#: build/serializers.py:315 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:331 +#: build/serializers.py:330 msgid "Serial numbers must be provided for trackable parts" msgstr "" -#: build/serializers.py:356 stock/api.py:1031 +#: build/serializers.py:355 stock/api.py:1041 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:403 build/serializers.py:465 build/serializers.py:554 +#: build/serializers.py:402 build/serializers.py:464 build/serializers.py:553 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:442 +#: build/serializers.py:441 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:448 +#: build/serializers.py:447 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:449 +#: build/serializers.py:448 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:454 +#: build/serializers.py:453 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:514 +#: build/serializers.py:513 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:520 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:952 -#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 -#: stock/serializers.py:930 stock/serializers.py:1469 +#: build/serializers.py:519 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2044 order/serializers.py:596 stock/admin.py:164 +#: stock/serializers.py:932 stock/serializers.py:1465 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 @@ -1339,188 +1252,188 @@ msgstr "" msgid "Status" msgstr "" -#: build/serializers.py:526 +#: build/serializers.py:525 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:527 +#: build/serializers.py:526 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:611 msgid "Consume Allocated Stock" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:612 msgid "Consume any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:619 +#: build/serializers.py:618 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:620 +#: build/serializers.py:619 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:646 msgid "Not permitted" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:647 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:648 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:679 +#: build/serializers.py:678 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:681 +#: build/serializers.py:680 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:691 +#: build/serializers.py:690 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:696 +#: build/serializers.py:695 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:697 +#: build/serializers.py:696 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:707 templates/js/translated/build.js:315 +#: build/serializers.py:706 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:712 order/serializers.py:301 order/serializers.py:1246 +#: build/serializers.py:711 order/serializers.py:300 order/serializers.py:1234 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:713 +#: build/serializers.py:712 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:723 templates/js/translated/build.js:319 +#: build/serializers.py:722 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:732 templates/js/translated/build.js:303 +#: build/serializers.py:731 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:770 +#: build/serializers.py:769 msgid "Build Line" msgstr "" -#: build/serializers.py:780 +#: build/serializers.py:779 msgid "Build output" msgstr "" -#: build/serializers.py:788 +#: build/serializers.py:787 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:824 +#: build/serializers.py:823 msgid "Build Line Item" msgstr "" -#: build/serializers.py:838 +#: build/serializers.py:837 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:853 stock/serializers.py:1194 +#: build/serializers.py:852 stock/serializers.py:1190 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:901 order/serializers.py:1237 +#: build/serializers.py:900 order/serializers.py:1225 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:907 +#: build/serializers.py:906 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:914 +#: build/serializers.py:913 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:938 order/serializers.py:1489 +#: build/serializers.py:937 order/serializers.py:1477 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:1001 +#: build/serializers.py:1000 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:1009 +#: build/serializers.py:1008 msgid "Exclude Location" msgstr "" -#: build/serializers.py:1010 +#: build/serializers.py:1009 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:1015 +#: build/serializers.py:1014 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:1016 +#: build/serializers.py:1015 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:1021 +#: build/serializers.py:1020 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:1022 +#: build/serializers.py:1021 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:1027 +#: build/serializers.py:1026 msgid "Optional Items" msgstr "" -#: build/serializers.py:1028 +#: build/serializers.py:1027 msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1050 +#: build/serializers.py:1049 msgid "Failed to start auto-allocation task" msgstr "" -#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 -#: stock/api.py:794 +#: build/serializers.py:1139 part/models.py:3953 part/models.py:4387 +#: stock/api.py:804 msgid "BOM Item" msgstr "" -#: build/serializers.py:1149 templates/js/translated/index.js:130 +#: build/serializers.py:1148 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:832 part/serializers.py:1506 +#: build/serializers.py:1153 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:828 part/serializers.py:1502 #: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 -#: templates/js/translated/build.js:2613 templates/js/translated/part.js:709 -#: templates/js/translated/part.js:2148 +#: templates/js/translated/build.js:2613 templates/js/translated/part.js:710 +#: templates/js/translated/part.js:2149 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1159 part/serializers.py:1508 +#: build/serializers.py:1158 part/serializers.py:1504 #: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 +#: build/serializers.py:1163 part/bom.py:172 part/serializers.py:1527 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1929 msgid "Available Stock" @@ -1544,7 +1457,7 @@ msgstr "" #: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 #: order/status_codes.py:44 order/status_codes.py:69 #: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:165 report/models.py:443 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 msgid "Complete" msgstr "" @@ -1674,11 +1587,11 @@ msgstr "" #: build/templates/build/build_base.html:160 #: build/templates/build/detail.html:138 order/models.py:309 -#: order/models.py:1343 order/templates/order/order_base.html:186 +#: order/models.py:1307 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:196 #: report/templates/report/inventree_build_order_report.html:125 -#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1831 #: templates/js/translated/purchase_order.js:1739 #: templates/js/translated/purchase_order.js:2147 #: templates/js/translated/return_order.js:346 @@ -1711,8 +1624,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 -#: order/models.py:1587 order/models.py:1701 order/models.py:1855 +#: build/templates/build/detail.html:101 order/api.py:1463 order/models.py:845 +#: order/models.py:1551 order/models.py:1665 order/models.py:1819 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_report.html:135 @@ -1762,7 +1675,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1479 +#: build/templates/build/detail.html:49 order/models.py:1443 #: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "" @@ -1775,7 +1688,7 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:163 +#: build/templates/build/detail.html:80 stock/admin.py:162 #: stock/templates/stock/item_base.html:162 #: templates/js/translated/build.js:1380 #: templates/js/translated/model_renderers.js:241 @@ -1894,11 +1807,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:436 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -1914,6 +1827,34 @@ msgstr "" msgid "Incomplete Outputs" msgstr "" +#: common/api.py:689 +msgid "Is Link" +msgstr "" + +#: common/api.py:697 +msgid "Is File" +msgstr "" + +#: common/api.py:739 +msgid "User does not have permission to delete this attachment" +msgstr "" + +#: common/currency.py:130 +msgid "Invalid currency code" +msgstr "" + +#: common/currency.py:132 +msgid "Duplicate currency code" +msgstr "" + +#: common/currency.py:137 +msgid "No valid currency codes provided" +msgstr "" + +#: common/currency.py:154 +msgid "No plugin" +msgstr "" + #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1952,1507 +1893,1512 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:71 +#: common/models.py:73 msgid "Updated" msgstr "" -#: common/models.py:72 +#: common/models.py:74 msgid "Timestamp of last update" msgstr "" -#: common/models.py:105 +#: common/models.py:107 msgid "Site URL is locked by configuration" msgstr "" -#: common/models.py:130 +#: common/models.py:132 msgid "Unique project code" msgstr "" -#: common/models.py:137 +#: common/models.py:139 msgid "Project description" msgstr "" -#: common/models.py:146 +#: common/models.py:148 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:766 +#: common/models.py:765 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:770 +#: common/models.py:769 msgid "Settings value" msgstr "" -#: common/models.py:822 +#: common/models.py:821 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:838 +#: common/models.py:837 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:846 +#: common/models.py:845 msgid "Value must be an integer value" msgstr "" -#: common/models.py:883 +#: common/models.py:882 msgid "Key string must be unique" msgstr "" -#: common/models.py:1115 +#: common/models.py:1114 msgid "No group" msgstr "" -#: common/models.py:1158 -msgid "An empty domain is not allowed." -msgstr "" - -#: common/models.py:1160 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "" - -#: common/models.py:1172 -msgid "No plugin" -msgstr "" - -#: common/models.py:1260 +#: common/models.py:1213 msgid "Restart required" msgstr "" -#: common/models.py:1262 +#: common/models.py:1215 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1269 +#: common/models.py:1222 msgid "Pending migrations" msgstr "" -#: common/models.py:1270 +#: common/models.py:1223 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1275 +#: common/models.py:1228 msgid "Server Instance Name" msgstr "" -#: common/models.py:1277 +#: common/models.py:1230 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1281 +#: common/models.py:1234 msgid "Use instance name" msgstr "" -#: common/models.py:1282 +#: common/models.py:1235 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1287 +#: common/models.py:1240 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1288 +#: common/models.py:1241 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1293 company/models.py:108 company/models.py:109 +#: common/models.py:1246 company/models.py:111 company/models.py:112 msgid "Company name" msgstr "" -#: common/models.py:1294 +#: common/models.py:1247 msgid "Internal company name" msgstr "" -#: common/models.py:1298 +#: common/models.py:1251 msgid "Base URL" msgstr "" -#: common/models.py:1299 +#: common/models.py:1252 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1305 +#: common/models.py:1258 msgid "Default Currency" msgstr "" -#: common/models.py:1306 +#: common/models.py:1259 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1312 +#: common/models.py:1265 +msgid "Supported Currencies" +msgstr "" + +#: common/models.py:1266 +msgid "List of supported currency codes" +msgstr "" + +#: common/models.py:1272 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1314 +#: common/models.py:1274 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1317 common/models.py:1373 common/models.py:1386 -#: common/models.py:1394 common/models.py:1403 common/models.py:1412 -#: common/models.py:1620 common/models.py:1642 common/models.py:1757 -#: common/models.py:2076 +#: common/models.py:1277 common/models.py:1333 common/models.py:1346 +#: common/models.py:1354 common/models.py:1363 common/models.py:1372 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:2046 msgid "days" msgstr "" -#: common/models.py:1321 +#: common/models.py:1281 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1322 +#: common/models.py:1282 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1327 +#: common/models.py:1287 msgid "Download from URL" msgstr "" -#: common/models.py:1329 +#: common/models.py:1289 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1335 +#: common/models.py:1295 msgid "Download Size Limit" msgstr "" -#: common/models.py:1336 +#: common/models.py:1296 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1342 +#: common/models.py:1302 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1344 +#: common/models.py:1304 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:1349 +#: common/models.py:1309 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1350 +#: common/models.py:1310 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1355 +#: common/models.py:1315 msgid "Require confirm" msgstr "" -#: common/models.py:1356 +#: common/models.py:1316 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1361 +#: common/models.py:1321 msgid "Tree Depth" msgstr "" -#: common/models.py:1363 +#: common/models.py:1323 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1369 +#: common/models.py:1329 msgid "Update Check Interval" msgstr "" -#: common/models.py:1370 +#: common/models.py:1330 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1376 +#: common/models.py:1336 msgid "Automatic Backup" msgstr "" -#: common/models.py:1377 +#: common/models.py:1337 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1382 +#: common/models.py:1342 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1383 +#: common/models.py:1343 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1389 +#: common/models.py:1349 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1391 +#: common/models.py:1351 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1398 +#: common/models.py:1358 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1400 +#: common/models.py:1360 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1407 +#: common/models.py:1367 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1409 +#: common/models.py:1369 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1416 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1376 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1417 +#: common/models.py:1377 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1422 +#: common/models.py:1382 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1423 +#: common/models.py:1383 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1429 +#: common/models.py:1389 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1430 +#: common/models.py:1390 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1435 +#: common/models.py:1395 msgid "Part Revisions" msgstr "" -#: common/models.py:1436 +#: common/models.py:1396 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1441 +#: common/models.py:1401 msgid "Allow Deletion from Assembly" msgstr "" -#: common/models.py:1442 +#: common/models.py:1402 msgid "Allow deletion of parts which are used in an assembly" msgstr "" -#: common/models.py:1447 +#: common/models.py:1407 msgid "IPN Regex" msgstr "" -#: common/models.py:1448 +#: common/models.py:1408 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1451 +#: common/models.py:1411 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1452 +#: common/models.py:1412 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1457 +#: common/models.py:1417 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1458 +#: common/models.py:1418 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1463 +#: common/models.py:1423 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1464 +#: common/models.py:1424 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1469 +#: common/models.py:1429 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1470 +#: common/models.py:1430 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1475 +#: common/models.py:1435 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1476 +#: common/models.py:1436 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1481 +#: common/models.py:1441 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1482 +#: common/models.py:1442 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1487 part/admin.py:108 part/models.py:3815 -#: report/models.py:293 report/models.py:360 report/serializers.py:90 -#: report/serializers.py:131 stock/serializers.py:228 +#: common/models.py:1447 part/admin.py:108 part/models.py:3795 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:227 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1488 +#: common/models.py:1448 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 +#: common/models.py:1453 part/admin.py:91 part/admin.py:425 part/models.py:1052 #: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" msgstr "" -#: common/models.py:1494 +#: common/models.py:1454 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1499 part/admin.py:95 part/models.py:1065 +#: common/models.py:1459 part/admin.py:95 part/models.py:1058 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1500 +#: common/models.py:1460 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1505 part/admin.py:100 part/models.py:1077 +#: common/models.py:1465 part/admin.py:100 part/models.py:1070 msgid "Purchaseable" msgstr "" -#: common/models.py:1506 +#: common/models.py:1466 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1511 part/admin.py:104 part/models.py:1083 +#: common/models.py:1471 part/admin.py:104 part/models.py:1076 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1512 +#: common/models.py:1472 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1517 part/admin.py:113 part/models.py:1071 +#: common/models.py:1477 part/admin.py:113 part/models.py:1064 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" msgstr "" -#: common/models.py:1518 +#: common/models.py:1478 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1523 part/admin.py:117 part/models.py:1093 +#: common/models.py:1483 part/admin.py:117 part/models.py:1086 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" msgstr "" -#: common/models.py:1524 +#: common/models.py:1484 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1529 +#: common/models.py:1489 msgid "Show Import in Views" msgstr "" -#: common/models.py:1530 +#: common/models.py:1490 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1535 +#: common/models.py:1495 msgid "Show related parts" msgstr "" -#: common/models.py:1536 +#: common/models.py:1496 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1541 +#: common/models.py:1501 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1542 +#: common/models.py:1502 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1547 templates/js/translated/part.js:107 +#: common/models.py:1507 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1549 +#: common/models.py:1509 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1555 +#: common/models.py:1515 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1556 +#: common/models.py:1516 msgid "Format to display the part name" msgstr "" -#: common/models.py:1562 +#: common/models.py:1522 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1563 +#: common/models.py:1523 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1567 +#: common/models.py:1527 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1569 +#: common/models.py:1529 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1575 +#: common/models.py:1535 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1577 +#: common/models.py:1537 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1583 +#: common/models.py:1548 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1585 +#: common/models.py:1550 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1591 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1593 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1599 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1601 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1607 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1609 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1615 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1617 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1630 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1632 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1638 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1640 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1647 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1648 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1653 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1655 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1661 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1662 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1667 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1669 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1675 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1676 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1681 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1682 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1687 +#: common/models.py:1657 msgid "Log Report Errors" msgstr "" -#: common/models.py:1688 +#: common/models.py:1658 msgid "Log errors which occur when generating reports" msgstr "" -#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:301 +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:302 msgid "Page Size" msgstr "" -#: common/models.py:1694 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1699 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1700 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1705 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1707 +#: common/models.py:1677 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1713 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1714 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1719 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1720 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1725 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1727 +#: common/models.py:1697 msgid "Determines default behavior when a stock item is depleted" msgstr "" -#: common/models.py:1733 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1735 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1740 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1741 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1746 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1747 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1752 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1754 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1761 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1762 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1767 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1768 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1773 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1774 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1778 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1779 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1784 +#: common/models.py:1754 msgid "Check BOM when installing items" msgstr "" -#: common/models.py:1786 +#: common/models.py:1756 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "" -#: common/models.py:1792 +#: common/models.py:1762 msgid "Allow Out of Stock Transfer" msgstr "" -#: common/models.py:1794 +#: common/models.py:1764 msgid "Allow stock items which are not in stock to be transferred between stock locations" msgstr "" -#: common/models.py:1800 +#: common/models.py:1770 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1802 +#: common/models.py:1772 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1808 common/models.py:1836 common/models.py:1858 -#: common/models.py:1894 +#: common/models.py:1778 common/models.py:1806 common/models.py:1828 +#: common/models.py:1864 msgid "Require Responsible Owner" msgstr "" -#: common/models.py:1809 common/models.py:1837 common/models.py:1859 -#: common/models.py:1895 +#: common/models.py:1779 common/models.py:1807 common/models.py:1829 +#: common/models.py:1865 msgid "A responsible owner must be assigned to each order" msgstr "" -#: common/models.py:1814 +#: common/models.py:1784 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1816 +#: common/models.py:1786 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:1822 +#: common/models.py:1792 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1823 +#: common/models.py:1793 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1828 +#: common/models.py:1798 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1830 +#: common/models.py:1800 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1842 +#: common/models.py:1812 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1844 +#: common/models.py:1814 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1850 +#: common/models.py:1820 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1852 +#: common/models.py:1822 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1864 +#: common/models.py:1834 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1865 +#: common/models.py:1835 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1870 +#: common/models.py:1840 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1872 +#: common/models.py:1842 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1878 +#: common/models.py:1848 msgid "Mark Shipped Orders as Complete" msgstr "" -#: common/models.py:1880 +#: common/models.py:1850 msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" msgstr "" -#: common/models.py:1886 +#: common/models.py:1856 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1888 +#: common/models.py:1858 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1900 +#: common/models.py:1870 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1902 +#: common/models.py:1872 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1908 +#: common/models.py:1878 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1910 +#: common/models.py:1880 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1917 +#: common/models.py:1887 msgid "Enable password forgot" msgstr "" -#: common/models.py:1918 +#: common/models.py:1888 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1923 +#: common/models.py:1893 msgid "Enable registration" msgstr "" -#: common/models.py:1924 +#: common/models.py:1894 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1929 +#: common/models.py:1899 msgid "Enable SSO" msgstr "" -#: common/models.py:1930 +#: common/models.py:1900 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1935 +#: common/models.py:1905 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1937 +#: common/models.py:1907 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1943 +#: common/models.py:1913 msgid "Email required" msgstr "" -#: common/models.py:1944 +#: common/models.py:1914 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1949 +#: common/models.py:1919 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1951 +#: common/models.py:1921 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1957 +#: common/models.py:1927 msgid "Mail twice" msgstr "" -#: common/models.py:1958 +#: common/models.py:1928 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1963 +#: common/models.py:1933 msgid "Password twice" msgstr "" -#: common/models.py:1964 +#: common/models.py:1934 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1969 +#: common/models.py:1939 msgid "Allowed domains" msgstr "" -#: common/models.py:1971 +#: common/models.py:1941 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1977 +#: common/models.py:1947 msgid "Group on signup" msgstr "" -#: common/models.py:1978 +#: common/models.py:1948 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1983 +#: common/models.py:1953 msgid "Enforce MFA" msgstr "" -#: common/models.py:1984 +#: common/models.py:1954 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1989 +#: common/models.py:1959 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1991 +#: common/models.py:1961 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1999 +#: common/models.py:1969 msgid "Check for plugin updates" msgstr "" -#: common/models.py:2000 +#: common/models.py:1970 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:2006 +#: common/models.py:1976 msgid "Enable URL integration" msgstr "" -#: common/models.py:2007 +#: common/models.py:1977 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:2013 +#: common/models.py:1983 msgid "Enable navigation integration" msgstr "" -#: common/models.py:2014 +#: common/models.py:1984 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:2020 +#: common/models.py:1990 msgid "Enable app integration" msgstr "" -#: common/models.py:2021 +#: common/models.py:1991 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:2027 +#: common/models.py:1997 msgid "Enable schedule integration" msgstr "" -#: common/models.py:2028 +#: common/models.py:1998 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:2034 +#: common/models.py:2004 msgid "Enable event integration" msgstr "" -#: common/models.py:2035 +#: common/models.py:2005 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:2041 +#: common/models.py:2011 msgid "Enable project codes" msgstr "" -#: common/models.py:2042 +#: common/models.py:2012 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:2047 +#: common/models.py:2017 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:2049 +#: common/models.py:2019 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:2055 +#: common/models.py:2025 msgid "Exclude External Locations" msgstr "" -#: common/models.py:2057 +#: common/models.py:2027 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:2063 +#: common/models.py:2033 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:2065 +#: common/models.py:2035 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:2071 +#: common/models.py:2041 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:2073 +#: common/models.py:2043 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:2080 +#: common/models.py:2050 msgid "Display Users full names" msgstr "" -#: common/models.py:2081 +#: common/models.py:2051 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:2086 +#: common/models.py:2056 msgid "Enable Test Station Data" msgstr "" -#: common/models.py:2087 +#: common/models.py:2057 msgid "Enable test station data collection for test results" msgstr "" -#: common/models.py:2099 common/models.py:2509 +#: common/models.py:2069 common/models.py:2479 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2142 +#: common/models.py:2112 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2144 +#: common/models.py:2114 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2150 +#: common/models.py:2120 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2151 +#: common/models.py:2121 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2156 +#: common/models.py:2126 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2157 +#: common/models.py:2127 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2162 +#: common/models.py:2132 msgid "Show latest parts" msgstr "" -#: common/models.py:2163 +#: common/models.py:2133 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2168 +#: common/models.py:2138 msgid "Show invalid BOMs" msgstr "" -#: common/models.py:2169 +#: common/models.py:2139 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2174 +#: common/models.py:2144 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2175 +#: common/models.py:2145 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2180 +#: common/models.py:2150 msgid "Show low stock" msgstr "" -#: common/models.py:2181 +#: common/models.py:2151 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2186 +#: common/models.py:2156 msgid "Show depleted stock" msgstr "" -#: common/models.py:2187 +#: common/models.py:2157 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2192 +#: common/models.py:2162 msgid "Show needed stock" msgstr "" -#: common/models.py:2193 +#: common/models.py:2163 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2198 +#: common/models.py:2168 msgid "Show expired stock" msgstr "" -#: common/models.py:2199 +#: common/models.py:2169 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2204 +#: common/models.py:2174 msgid "Show stale stock" msgstr "" -#: common/models.py:2205 +#: common/models.py:2175 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2210 +#: common/models.py:2180 msgid "Show pending builds" msgstr "" -#: common/models.py:2211 +#: common/models.py:2181 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2216 +#: common/models.py:2186 msgid "Show overdue builds" msgstr "" -#: common/models.py:2217 +#: common/models.py:2187 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2222 +#: common/models.py:2192 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2223 +#: common/models.py:2193 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2228 +#: common/models.py:2198 msgid "Show overdue POs" msgstr "" -#: common/models.py:2229 +#: common/models.py:2199 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2234 +#: common/models.py:2204 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2235 +#: common/models.py:2205 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2240 +#: common/models.py:2210 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2241 +#: common/models.py:2211 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2246 +#: common/models.py:2216 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2247 +#: common/models.py:2217 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2252 +#: common/models.py:2222 msgid "Show News" msgstr "" -#: common/models.py:2253 +#: common/models.py:2223 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2258 +#: common/models.py:2228 msgid "Inline label display" msgstr "" -#: common/models.py:2260 +#: common/models.py:2230 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2266 +#: common/models.py:2236 msgid "Default label printer" msgstr "" -#: common/models.py:2268 +#: common/models.py:2238 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2274 +#: common/models.py:2244 msgid "Inline report display" msgstr "" -#: common/models.py:2276 +#: common/models.py:2246 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2282 +#: common/models.py:2252 msgid "Search Parts" msgstr "" -#: common/models.py:2283 +#: common/models.py:2253 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2288 +#: common/models.py:2258 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2289 +#: common/models.py:2259 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2294 +#: common/models.py:2264 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2295 +#: common/models.py:2265 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2300 +#: common/models.py:2270 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2301 +#: common/models.py:2271 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2306 +#: common/models.py:2276 msgid "Search Categories" msgstr "" -#: common/models.py:2307 +#: common/models.py:2277 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2312 +#: common/models.py:2282 msgid "Search Stock" msgstr "" -#: common/models.py:2313 +#: common/models.py:2283 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2318 +#: common/models.py:2288 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2320 +#: common/models.py:2290 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2326 +#: common/models.py:2296 msgid "Search Locations" msgstr "" -#: common/models.py:2327 +#: common/models.py:2297 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2332 +#: common/models.py:2302 msgid "Search Companies" msgstr "" -#: common/models.py:2333 +#: common/models.py:2303 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2338 +#: common/models.py:2308 msgid "Search Build Orders" msgstr "" -#: common/models.py:2339 +#: common/models.py:2309 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2344 +#: common/models.py:2314 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2345 +#: common/models.py:2315 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2350 +#: common/models.py:2320 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2352 +#: common/models.py:2322 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2358 +#: common/models.py:2328 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2359 +#: common/models.py:2329 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2364 +#: common/models.py:2334 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2366 +#: common/models.py:2336 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2372 +#: common/models.py:2342 msgid "Search Return Orders" msgstr "" -#: common/models.py:2373 +#: common/models.py:2343 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2378 +#: common/models.py:2348 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2380 +#: common/models.py:2350 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2386 +#: common/models.py:2356 msgid "Search Preview Results" msgstr "" -#: common/models.py:2388 +#: common/models.py:2358 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2394 +#: common/models.py:2364 msgid "Regex Search" msgstr "" -#: common/models.py:2395 +#: common/models.py:2365 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2400 +#: common/models.py:2370 msgid "Whole Word Search" msgstr "" -#: common/models.py:2401 +#: common/models.py:2371 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2406 +#: common/models.py:2376 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2407 +#: common/models.py:2377 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2412 +#: common/models.py:2382 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2413 +#: common/models.py:2383 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2418 +#: common/models.py:2388 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2419 +#: common/models.py:2389 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2424 +#: common/models.py:2394 msgid "Date Format" msgstr "" -#: common/models.py:2425 +#: common/models.py:2395 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2438 part/templates/part/detail.html:41 +#: common/models.py:2408 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2439 +#: common/models.py:2409 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2444 part/templates/part/detail.html:62 +#: common/models.py:2414 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2446 +#: common/models.py:2416 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2452 +#: common/models.py:2422 msgid "Table String Length" msgstr "" -#: common/models.py:2454 +#: common/models.py:2424 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2460 +#: common/models.py:2430 msgid "Default part label template" msgstr "" -#: common/models.py:2461 +#: common/models.py:2431 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2466 +#: common/models.py:2436 msgid "Default stock item template" msgstr "" -#: common/models.py:2468 +#: common/models.py:2438 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2474 +#: common/models.py:2444 msgid "Default stock location label template" msgstr "" -#: common/models.py:2476 +#: common/models.py:2446 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2482 +#: common/models.py:2452 msgid "Default build line label template" msgstr "" -#: common/models.py:2484 +#: common/models.py:2454 msgid "The build line label template to be automatically selected" msgstr "" -#: common/models.py:2490 +#: common/models.py:2460 msgid "Receive error reports" msgstr "" -#: common/models.py:2491 +#: common/models.py:2461 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2496 +#: common/models.py:2466 msgid "Last used printing machines" msgstr "" -#: common/models.py:2497 +#: common/models.py:2467 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2540 +#: common/models.py:2487 common/models.py:2488 common/models.py:2636 +#: common/models.py:2637 common/models.py:2882 common/models.py:2883 +#: common/models.py:3193 common/models.py:3194 part/models.py:3193 +#: part/models.py:3280 part/models.py:3353 part/models.py:3381 +#: plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "" + +#: common/models.py:2510 msgid "Price break quantity" msgstr "" -#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1382 order/models.py:2301 -#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 +#: common/models.py:2517 company/serializers.py:472 order/admin.py:42 +#: order/models.py:1346 order/models.py:2265 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1886 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:740 msgid "Price" msgstr "" -#: common/models.py:2548 +#: common/models.py:2518 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2719 common/models.py:2904 +#: common/models.py:2613 common/models.py:2798 msgid "Endpoint" msgstr "" -#: common/models.py:2720 +#: common/models.py:2614 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2730 +#: common/models.py:2624 msgid "Name for this webhook" msgstr "" -#: common/models.py:2734 company/models.py:160 company/models.py:814 -#: machine/models.py:39 part/admin.py:88 part/models.py:1088 -#: plugin/models.py:65 templates/js/translated/company.js:523 +#: common/models.py:2628 company/models.py:163 company/models.py:782 +#: machine/models.py:39 part/admin.py:88 part/models.py:1081 +#: plugin/models.py:66 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3462,101 +3408,118 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2734 +#: common/models.py:2628 msgid "Is this webhook active" msgstr "" -#: common/models.py:2750 users/models.py:159 +#: common/models.py:2644 users/models.py:159 msgid "Token" msgstr "" -#: common/models.py:2751 +#: common/models.py:2645 msgid "Token for access" msgstr "" -#: common/models.py:2759 +#: common/models.py:2653 msgid "Secret" msgstr "" -#: common/models.py:2760 +#: common/models.py:2654 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2868 +#: common/models.py:2762 msgid "Message ID" msgstr "" -#: common/models.py:2869 +#: common/models.py:2763 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2877 +#: common/models.py:2771 msgid "Host" msgstr "" -#: common/models.py:2878 +#: common/models.py:2772 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2886 +#: common/models.py:2780 msgid "Header" msgstr "" -#: common/models.py:2887 +#: common/models.py:2781 msgid "Header of this message" msgstr "" -#: common/models.py:2894 +#: common/models.py:2788 msgid "Body" msgstr "" -#: common/models.py:2895 +#: common/models.py:2789 msgid "Body of this message" msgstr "" -#: common/models.py:2905 +#: common/models.py:2799 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2910 +#: common/models.py:2804 msgid "Worked on" msgstr "" -#: common/models.py:2911 +#: common/models.py:2805 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:3037 +#: common/models.py:2931 msgid "Id" msgstr "" -#: common/models.py:3039 templates/js/translated/company.js:965 +#: common/models.py:2933 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:3043 templates/js/translated/news.js:60 +#: common/models.py:2935 common/models.py:3177 company/models.py:149 +#: company/models.py:440 company/models.py:500 company/models.py:799 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +#: part/admin.py:55 part/models.py:955 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "" + +#: common/models.py:2937 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:3045 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2939 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:3047 templates/js/translated/news.js:52 +#: common/models.py:2941 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Read" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Was this news item read?" msgstr "" -#: common/models.py:3067 company/models.py:156 part/models.py:972 +#: common/models.py:2961 company/models.py:159 part/models.py:965 #: 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.html:35 @@ -3566,34 +3529,89 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:3067 +#: common/models.py:2961 msgid "Image file" msgstr "" -#: common/models.py:3109 +#: common/models.py:2973 common/models.py:3161 +msgid "Target model type for this image" +msgstr "" + +#: common/models.py:2977 +msgid "Target model ID for this image" +msgstr "" + +#: common/models.py:3018 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3128 +#: common/models.py:3037 msgid "Unit name" msgstr "" -#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3044 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3136 +#: common/models.py:3045 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3052 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3144 +#: common/models.py:3053 msgid "Unit definition" msgstr "" +#: common/models.py:3111 common/models.py:3168 stock/models.py:2426 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "" + +#: common/models.py:3123 +msgid "Missing file" +msgstr "" + +#: common/models.py:3124 +msgid "Missing external link" +msgstr "" + +#: common/models.py:3169 +msgid "Select file to attach" +msgstr "" + +#: common/models.py:3184 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "" + +#: common/models.py:3185 +msgid "Attachment comment" +msgstr "" + +#: common/models.py:3201 +msgid "Upload date" +msgstr "" + +#: common/models.py:3202 +msgid "Date the file was uploaded" +msgstr "" + +#: common/models.py:3206 +msgid "File size" +msgstr "" + +#: common/models.py:3206 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3244 common/serializers.py:553 +msgid "Invalid model type specified for attachment" +msgstr "" + #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" @@ -3628,66 +3646,103 @@ msgstr "" msgid "Error raised by plugin" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:371 msgid "Is Running" msgstr "" -#: common/serializers.py:372 +#: common/serializers.py:377 msgid "Pending Tasks" msgstr "" -#: common/serializers.py:378 +#: common/serializers.py:383 msgid "Scheduled Tasks" msgstr "" -#: common/serializers.py:384 +#: common/serializers.py:389 msgid "Failed Tasks" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Task ID" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Unique task ID" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock time" msgstr "" -#: common/serializers.py:403 +#: common/serializers.py:408 msgid "Task name" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function name" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Arguments" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Task arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Keyword Arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Task keyword arguments" msgstr "" +#: common/serializers.py:525 +msgid "Filename" +msgstr "" + +#: common/serializers.py:532 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: common/serializers.py:559 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "" + +#: common/validators.py:33 +msgid "No attachment model type provided" +msgstr "" + +#: common/validators.py:39 +msgid "Invalid attachment model type" +msgstr "" + +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "" + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +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 @@ -3726,210 +3781,222 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/api.py:164 +#: company/api.py:144 msgid "Part is Active" msgstr "" -#: company/api.py:168 +#: company/api.py:148 msgid "Manufacturer is Active" msgstr "" -#: company/api.py:317 +#: company/api.py:281 msgid "Supplier Part is Active" msgstr "" -#: company/api.py:321 +#: company/api.py:285 msgid "Internal Part is Active" msgstr "" -#: company/api.py:325 +#: company/api.py:289 msgid "Supplier is Active" msgstr "" -#: company/models.py:114 +#: company/models.py:100 company/models.py:365 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:822 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "" + +#: company/models.py:117 msgid "Company description" msgstr "" -#: company/models.py:115 +#: company/models.py:118 msgid "Description of the company" msgstr "" -#: company/models.py:120 company/templates/company/company_base.html:106 +#: company/models.py:123 company/templates/company/company_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:532 msgid "Website" msgstr "" -#: company/models.py:120 +#: company/models.py:123 msgid "Company website URL" msgstr "" -#: company/models.py:125 +#: company/models.py:128 msgid "Phone number" msgstr "" -#: company/models.py:127 +#: company/models.py:130 msgid "Contact phone number" msgstr "" -#: company/models.py:134 +#: company/models.py:137 msgid "Contact email address" msgstr "" -#: company/models.py:139 company/templates/company/company_base.html:145 +#: company/models.py:142 company/templates/company/company_base.html:145 #: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "" -#: company/models.py:141 +#: company/models.py:144 msgid "Point of contact" msgstr "" -#: company/models.py:147 +#: company/models.py:150 msgid "Link to external company information" msgstr "" -#: company/models.py:160 +#: company/models.py:163 msgid "Is this company active?" msgstr "" -#: company/models.py:165 +#: company/models.py:168 msgid "is customer" msgstr "" -#: company/models.py:166 +#: company/models.py:169 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:171 +#: company/models.py:174 msgid "is supplier" msgstr "" -#: company/models.py:172 +#: company/models.py:175 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:177 +#: company/models.py:180 msgid "is manufacturer" msgstr "" -#: company/models.py:178 +#: company/models.py:181 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:186 +#: company/models.py:189 msgid "Default currency used for this company" msgstr "" -#: company/models.py:273 company/models.py:382 -#: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:812 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 -msgid "Company" -msgstr "" - -#: company/models.py:383 +#: company/models.py:366 msgid "Select company" msgstr "" -#: company/models.py:388 +#: company/models.py:371 msgid "Address title" msgstr "" -#: company/models.py:389 +#: company/models.py:372 msgid "Title describing the address entry" msgstr "" -#: company/models.py:395 +#: company/models.py:378 msgid "Primary address" msgstr "" -#: company/models.py:396 +#: company/models.py:379 msgid "Set as primary address" msgstr "" -#: company/models.py:401 templates/js/translated/company.js:914 +#: company/models.py:384 templates/js/translated/company.js:914 #: templates/js/translated/company.js:971 msgid "Line 1" msgstr "" -#: company/models.py:402 +#: company/models.py:385 msgid "Address line 1" msgstr "" -#: company/models.py:408 templates/js/translated/company.js:915 +#: company/models.py:391 templates/js/translated/company.js:915 #: templates/js/translated/company.js:977 msgid "Line 2" msgstr "" -#: company/models.py:409 +#: company/models.py:392 msgid "Address line 2" msgstr "" -#: company/models.py:415 company/models.py:416 +#: company/models.py:398 company/models.py:399 #: templates/js/translated/company.js:983 msgid "Postal code" msgstr "" -#: company/models.py:422 +#: company/models.py:405 msgid "City/Region" msgstr "" -#: company/models.py:423 +#: company/models.py:406 msgid "Postal code city/region" msgstr "" -#: company/models.py:429 +#: company/models.py:412 msgid "State/Province" msgstr "" -#: company/models.py:430 +#: company/models.py:413 msgid "State or province" msgstr "" -#: company/models.py:436 templates/js/translated/company.js:1001 +#: company/models.py:419 templates/js/translated/company.js:1001 msgid "Country" msgstr "" -#: company/models.py:437 +#: company/models.py:420 msgid "Address country" msgstr "" -#: company/models.py:443 +#: company/models.py:426 msgid "Courier shipping notes" msgstr "" -#: company/models.py:444 +#: company/models.py:427 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:450 +#: company/models.py:433 msgid "Internal shipping notes" msgstr "" -#: company/models.py:451 +#: company/models.py:434 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:458 +#: company/models.py:441 msgid "Link to address information (external)" msgstr "" -#: company/models.py:489 company/models.py:792 stock/models.py:768 -#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 +#: company/models.py:463 company/models.py:574 company/models.py:792 +#: 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:475 company/models.py:760 stock/models.py:766 +#: stock/serializers.py:422 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:491 company/models.py:794 +#: company/models.py:477 company/models.py:762 msgid "Select part" msgstr "" -#: company/models.py:500 company/templates/company/company_base.html:82 +#: company/models.py:486 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:530 +#: company/templates/company/supplier_part.html:145 part/serializers.py:525 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -3939,152 +4006,154 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:501 +#: company/models.py:487 msgid "Select manufacturer" msgstr "" -#: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:540 +#: company/models.py:493 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:535 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 -#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1801 #: templates/js/translated/purchase_order.js:1851 #: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "" -#: company/models.py:508 +#: company/models.py:494 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:515 +#: company/models.py:501 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:524 +#: company/models.py:510 msgid "Manufacturer part description" msgstr "" -#: company/models.py:581 company/models.py:608 company/models.py:824 -#: 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:615 +#: company/models.py:581 msgid "Parameter name" msgstr "" -#: company/models.py:621 report/templates/report/inventree_test_report.html:104 -#: stock/models.py:2429 templates/js/translated/company.js:1166 -#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 +#: company/models.py:587 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2418 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1493 #: templates/js/translated/stock.js:1522 msgid "Value" msgstr "" -#: company/models.py:622 +#: company/models.py:588 msgid "Parameter value" msgstr "" -#: company/models.py:629 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1052 part/models.py:3666 +#: company/models.py:595 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1045 part/models.py:3646 #: part/templates/part/part_base.html:284 -#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1512 +#: templates/js/translated/part.js:1616 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:630 +#: company/models.py:596 msgid "Parameter units" msgstr "" -#: company/models.py:732 +#: company/models.py:648 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:777 stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "" + +#: company/models.py:700 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:739 +#: company/models.py:707 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:753 +#: company/models.py:721 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/models.py:770 company/templates/company/company_base.html:87 #: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:514 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:509 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:511 -#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1769 #: templates/js/translated/pricing.js:498 #: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "" -#: company/models.py:803 +#: company/models.py:771 msgid "Select supplier" msgstr "" -#: company/models.py:809 part/serializers.py:525 +#: company/models.py:777 part/serializers.py:520 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:815 +#: company/models.py:783 msgid "Is this supplier part active?" msgstr "" -#: company/models.py:825 +#: company/models.py:793 msgid "Select manufacturer part" msgstr "" -#: company/models.py:832 +#: company/models.py:800 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:841 +#: company/models.py:809 msgid "Supplier part description" msgstr "" -#: company/models.py:848 company/templates/company/supplier_part.html:187 -#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 +#: company/models.py:816 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4093 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_purchase_order_report.html:32 #: report/templates/report/inventree_return_order_report.html:27 #: report/templates/report/inventree_sales_order_report.html:32 #: report/templates/report/inventree_stock_location_report.html:105 -#: stock/serializers.py:708 +#: stock/serializers.py:710 msgid "Note" msgstr "" -#: company/models.py:857 part/models.py:2010 +#: company/models.py:825 part/models.py:2003 msgid "base cost" msgstr "" -#: company/models.py:858 part/models.py:2011 +#: company/models.py:826 part/models.py:2004 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:865 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 +#: company/models.py:833 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:797 stock/serializers.py:1475 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 #: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "" -#: company/models.py:866 +#: company/models.py:834 msgid "Part packaging" msgstr "" -#: company/models.py:871 templates/js/translated/company.js:1651 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: company/models.py:839 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:311 #: templates/js/translated/purchase_order.js:841 #: templates/js/translated/purchase_order.js:1103 @@ -4093,35 +4162,35 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:873 +#: company/models.py:841 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:892 part/models.py:2017 +#: company/models.py:860 part/models.py:2010 msgid "multiple" msgstr "" -#: company/models.py:893 +#: company/models.py:861 msgid "Order multiple" msgstr "" -#: company/models.py:905 +#: company/models.py:873 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:911 +#: company/models.py:879 msgid "Availability Updated" msgstr "" -#: company/models.py:912 +#: company/models.py:880 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:163 +#: company/serializers.py:161 msgid "Default currency used for this supplier" msgstr "" -#: company/serializers.py:381 part/admin.py:126 +#: company/serializers.py:357 part/admin.py:126 #: part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1689 #: templates/js/translated/table_filters.js:355 @@ -4133,7 +4202,7 @@ msgstr "" #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 #: templates/js/translated/model_renderers.js:312 -#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +#: templates/js/translated/part.js:815 templates/js/translated/part.js:1219 msgid "Inactive" msgstr "" @@ -4172,7 +4241,7 @@ msgstr "" #: report/templates/report/inventree_purchase_order_report.html:40 #: report/templates/report/inventree_sales_order_report.html:40 #: report/templates/report/inventree_test_report.html:84 -#: report/templates/report/inventree_test_report.html:163 +#: report/templates/report/inventree_test_report.html:162 msgid "Part image" msgstr "" @@ -4191,10 +4260,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:92 order/models.py:940 -#: order/models.py:2068 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:148 stock/models.py:821 -#: stock/models.py:822 stock/serializers.py:1229 +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2032 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:819 +#: stock/models.py:820 stock/serializers.py:1225 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 @@ -4405,7 +4474,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:836 +#: part/admin.py:122 part/serializers.py:832 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4425,8 +4494,8 @@ msgstr "" msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:206 -#: templates/js/translated/part.js:1422 +#: company/templates/company/manufacturer_part.html:196 +#: templates/js/translated/part.js:1423 msgid "Add Parameter" msgstr "" @@ -4454,15 +4523,6 @@ msgstr "" msgid "Addresses" msgstr "" -#: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:452 -#: stock/models.py:779 stock/templates/stock/item_base.html:233 -#: templates/js/translated/company.js:1600 -#: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2280 -msgid "Supplier Part" -msgstr "" - #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1526 msgid "Supplier part actions" @@ -4505,8 +4565,8 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:524 -#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: part/bom.py:311 part/serializers.py:519 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1787 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1850 #: templates/js/translated/purchase_order.js:2028 @@ -4518,12 +4578,12 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:207 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" @@ -4555,15 +4615,15 @@ msgid "Update Part Availability" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:835 part/stocktake.py:223 +#: part/serializers.py:831 part/stocktake.py:224 #: part/templates/part/category.html:183 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:916 stock/serializers.py:1080 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:918 stock/serializers.py:1091 #: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:191 #: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1061 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:206 msgid "Stock Items" @@ -4590,10 +4650,6 @@ msgstr "" 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 "" @@ -4614,7 +4670,7 @@ msgstr "" msgid "Connected" msgstr "" -#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: machine/machine_types/label_printer.py:235 order/api.py:1467 #: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "" @@ -4703,7 +4759,7 @@ msgstr "" msgid "Config type" msgstr "" -#: order/admin.py:30 order/models.py:89 +#: order/admin.py:30 order/models.py:90 #: report/templates/report/inventree_purchase_order_report.html:31 #: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 @@ -4712,30 +4768,30 @@ msgstr "" msgid "Total Price" msgstr "" -#: order/api.py:161 order/serializers.py:91 +#: order/api.py:157 order/serializers.py:90 #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "" -#: order/api.py:165 templates/js/translated/table_filters.js:194 +#: order/api.py:161 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "" -#: order/api.py:240 +#: order/api.py:236 msgid "No matching purchase order found" msgstr "" -#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 -#: order/models.py:1586 order/models.py:1700 order/models.py:1854 -#: order/models.py:2267 order/models.py:2318 +#: order/api.py:435 order/api.py:801 order/models.py:1395 order/models.py:1504 +#: order/models.py:1550 order/models.py:1664 order/models.py:1818 +#: order/models.py:2231 order/models.py:2282 #: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "" -#: order/api.py:441 order/api.py:838 +#: order/api.py:439 order/api.py:822 msgid "Order Complete" msgstr "" @@ -4743,13 +4799,13 @@ msgstr "" msgid "Order Pending" msgstr "" -#: order/api.py:1509 order/models.py:380 order/models.py:1432 -#: order/models.py:1541 order/templates/order/order_base.html:9 +#: order/api.py:1461 order/models.py:380 order/models.py:1396 +#: order/models.py:1505 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_purchase_order_report.html:14 -#: stock/serializers.py:119 stock/templates/stock/item_base.html:176 +#: stock/serializers.py:118 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/part.js:1746 templates/js/translated/pricing.js:804 #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1673 @@ -4757,8 +4813,8 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1513 order/models.py:2017 order/models.py:2268 -#: order/models.py:2319 order/templates/order/return_order_base.html:9 +#: order/api.py:1465 order/models.py:1981 order/models.py:2232 +#: order/models.py:2283 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report.html:13 #: templates/js/translated/return_order.js:280 @@ -4766,15 +4822,15 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/models.py:90 +#: order/models.py:91 msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:71 +#: order/models.py:96 order/serializers.py:70 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:72 +#: order/models.py:99 order/serializers.py:71 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -4790,7 +4846,7 @@ msgstr "" msgid "Select project code for this order" msgstr "" -#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 msgid "Link to external page" msgstr "" @@ -4814,11 +4870,11 @@ msgstr "" msgid "Company address for this order" msgstr "" -#: order/models.py:464 order/models.py:929 +#: order/models.py:464 order/models.py:927 msgid "Order reference" msgstr "" -#: order/models.py:472 order/models.py:953 +#: order/models.py:472 order/models.py:951 msgid "Purchase order status" msgstr "" @@ -4839,15 +4895,15 @@ msgstr "" msgid "received by" msgstr "" -#: order/models.py:514 order/models.py:2094 +#: order/models.py:514 order/models.py:2058 msgid "Issue Date" msgstr "" -#: order/models.py:515 order/models.py:2095 +#: order/models.py:515 order/models.py:2059 msgid "Date order was issued" msgstr "" -#: order/models.py:522 order/models.py:2102 +#: order/models.py:522 order/models.py:2066 msgid "Date order was completed" msgstr "" @@ -4859,94 +4915,94 @@ msgstr "" msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:941 +#: order/models.py:939 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:964 order/models.py:2087 +#: order/models.py:962 order/models.py:2051 msgid "Customer Reference " msgstr "" -#: order/models.py:965 order/models.py:2088 +#: order/models.py:963 order/models.py:2052 msgid "Customer order reference code" msgstr "" -#: order/models.py:969 order/models.py:1707 +#: order/models.py:967 order/models.py:1671 #: templates/js/translated/sales_order.js:879 #: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "" -#: order/models.py:978 +#: order/models.py:976 msgid "shipped by" msgstr "" -#: order/models.py:1027 +#: order/models.py:1025 msgid "Order is already complete" msgstr "" -#: order/models.py:1030 +#: order/models.py:1028 msgid "Order is already cancelled" msgstr "" -#: order/models.py:1034 +#: order/models.py:1032 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:1038 +#: order/models.py:1036 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:1043 +#: order/models.py:1041 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1309 +#: order/models.py:1273 msgid "Item quantity" msgstr "" -#: order/models.py:1326 +#: order/models.py:1290 msgid "Line item reference" msgstr "" -#: order/models.py:1333 +#: order/models.py:1297 msgid "Line item notes" msgstr "" -#: order/models.py:1345 +#: order/models.py:1309 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1366 +#: order/models.py:1330 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1372 +#: order/models.py:1336 msgid "Context" msgstr "" -#: order/models.py:1373 +#: order/models.py:1337 msgid "Additional context for this line" msgstr "" -#: order/models.py:1383 +#: order/models.py:1347 msgid "Unit price" msgstr "" -#: order/models.py:1416 +#: order/models.py:1380 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1423 +#: order/models.py:1387 msgid "deleted" msgstr "" -#: order/models.py:1451 +#: order/models.py:1415 msgid "Supplier part" msgstr "" -#: order/models.py:1458 order/templates/order/order_base.html:196 -#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: order/models.py:1422 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1870 templates/js/translated/part.js:1902 #: templates/js/translated/purchase_order.js:1306 #: templates/js/translated/purchase_order.js:2169 #: templates/js/translated/return_order.js:763 @@ -4955,196 +5011,196 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1459 +#: order/models.py:1423 msgid "Number of items received" msgstr "" -#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 +#: order/models.py:1431 stock/models.py:938 stock/serializers.py:556 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "" -#: order/models.py:1468 +#: order/models.py:1432 msgid "Unit purchase price" msgstr "" -#: order/models.py:1483 +#: order/models.py:1447 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1574 +#: order/models.py:1538 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1579 +#: order/models.py:1543 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1605 part/templates/part/part_pricing.html:107 +#: order/models.py:1569 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:1606 +#: order/models.py:1570 msgid "Unit sale price" msgstr "" -#: order/models.py:1615 order/status_codes.py:43 +#: order/models.py:1579 order/status_codes.py:43 #: templates/js/translated/sales_order.js:1559 #: templates/js/translated/sales_order.js:1680 #: templates/js/translated/sales_order.js:1993 msgid "Shipped" msgstr "" -#: order/models.py:1616 +#: order/models.py:1580 msgid "Shipped quantity" msgstr "" -#: order/models.py:1708 +#: order/models.py:1672 msgid "Date of shipment" msgstr "" -#: order/models.py:1714 templates/js/translated/sales_order.js:1072 +#: order/models.py:1678 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "" -#: order/models.py:1715 +#: order/models.py:1679 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1723 +#: order/models.py:1687 msgid "Checked By" msgstr "" -#: order/models.py:1724 +#: order/models.py:1688 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 -#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 +#: order/models.py:1695 order/models.py:1908 order/serializers.py:1342 +#: order/serializers.py:1452 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "" -#: order/models.py:1732 +#: order/models.py:1696 msgid "Shipment number" msgstr "" -#: order/models.py:1740 +#: order/models.py:1704 msgid "Tracking Number" msgstr "" -#: order/models.py:1741 +#: order/models.py:1705 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1748 +#: order/models.py:1712 msgid "Invoice Number" msgstr "" -#: order/models.py:1749 +#: order/models.py:1713 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1769 +#: order/models.py:1733 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1772 +#: order/models.py:1736 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1890 order/models.py:1892 +#: order/models.py:1854 order/models.py:1856 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1899 +#: order/models.py:1863 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1902 +#: order/models.py:1866 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1905 +#: order/models.py:1869 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1924 order/serializers.py:1231 +#: order/models.py:1888 order/serializers.py:1219 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1927 +#: order/models.py:1891 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1928 plugin/base/barcodes/api.py:481 +#: order/models.py:1892 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1936 +#: order/models.py:1900 msgid "Line" msgstr "" -#: order/models.py:1945 +#: order/models.py:1909 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1958 order/models.py:2275 +#: order/models.py:1922 order/models.py:2239 #: templates/js/translated/return_order.js:721 msgid "Item" msgstr "" -#: order/models.py:1959 +#: order/models.py:1923 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1968 +#: order/models.py:1932 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:2057 +#: order/models.py:2021 msgid "Return Order reference" msgstr "" -#: order/models.py:2069 +#: order/models.py:2033 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:2081 +#: order/models.py:2045 msgid "Return order status" msgstr "" -#: order/models.py:2260 +#: order/models.py:2224 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2276 +#: order/models.py:2240 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2282 +#: order/models.py:2246 msgid "Received Date" msgstr "" -#: order/models.py:2283 +#: order/models.py:2247 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2294 templates/js/translated/return_order.js:732 +#: order/models.py:2258 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2295 +#: order/models.py:2259 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2302 +#: order/models.py:2266 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/serializers.py:79 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_purchase_order_report.html:22 @@ -5153,163 +5209,163 @@ msgstr "" msgid "Line Items" msgstr "" -#: order/serializers.py:84 +#: order/serializers.py:83 msgid "Completed Lines" msgstr "" -#: order/serializers.py:287 +#: order/serializers.py:286 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:302 order/serializers.py:1247 +#: order/serializers.py:301 order/serializers.py:1235 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:312 order/serializers.py:1257 +#: order/serializers.py:311 order/serializers.py:1245 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:440 +#: order/serializers.py:439 msgid "Order is not open" msgstr "" -#: order/serializers.py:461 +#: order/serializers.py:460 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:463 +#: order/serializers.py:462 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:473 +#: order/serializers.py:472 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:478 msgid "Merge Items" msgstr "" -#: order/serializers.py:481 +#: order/serializers.py:480 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:499 +#: order/serializers.py:498 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:502 +#: order/serializers.py:501 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:510 +#: order/serializers.py:509 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:511 +#: order/serializers.py:510 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:550 order/serializers.py:1325 +#: order/serializers.py:549 order/serializers.py:1313 msgid "Line Item" msgstr "" -#: order/serializers.py:556 +#: order/serializers.py:555 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1657 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:581 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:589 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:601 templates/js/translated/barcode.js:52 +#: order/serializers.py:600 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:602 +#: order/serializers.py:601 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:618 +#: order/serializers.py:617 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:642 +#: order/serializers.py:641 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:690 order/serializers.py:1696 +#: order/serializers.py:689 order/serializers.py:1673 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:706 +#: order/serializers.py:705 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:717 +#: order/serializers.py:716 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1074 +#: order/serializers.py:1062 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1134 +#: order/serializers.py:1122 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1195 order/serializers.py:1334 +#: order/serializers.py:1183 order/serializers.py:1322 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1214 +#: order/serializers.py:1202 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1344 +#: order/serializers.py:1332 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1366 order/serializers.py:1472 +#: order/serializers.py:1354 order/serializers.py:1460 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1369 order/serializers.py:1475 +#: order/serializers.py:1357 order/serializers.py:1463 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1416 +#: order/serializers.py:1404 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1423 +#: order/serializers.py:1411 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1650 +#: order/serializers.py:1627 msgid "Return order line item" msgstr "" -#: order/serializers.py:1656 +#: order/serializers.py:1633 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1659 +#: order/serializers.py:1636 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1688 +#: order/serializers.py:1665 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1766 +#: order/serializers.py:1743 msgid "Line price currency" msgstr "" @@ -5639,7 +5695,7 @@ msgstr "" #: 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/part.js:1073 #: templates/js/translated/purchase_order.js:1752 #: templates/js/translated/return_order.js:380 #: templates/js/translated/sales_order.js:891 @@ -5735,34 +5791,34 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:406 part/models.py:3964 part/stocktake.py:218 -#: stock/admin.py:153 +#: part/admin.py:39 part/admin.py:398 part/models.py:3944 part/stocktake.py:219 +#: stock/admin.py:152 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 -#: stock/admin.py:157 +#: part/admin.py:41 part/admin.py:405 part/models.py:3945 part/stocktake.py:220 +#: stock/admin.py:156 msgid "Part Name" msgstr "" -#: part/admin.py:45 part/stocktake.py:220 +#: part/admin.py:45 part/stocktake.py:221 msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:940 part/templates/part/part_base.html:269 #: report/templates/report/inventree_stock_location_report.html:103 -#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/part.js:1227 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 -#: report/models.py:161 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2346 +#: part/admin.py:50 part/models.py:949 part/templates/part/part_base.html:277 +#: report/models.py:162 templates/js/translated/part.js:1232 +#: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:319 part/models.py:929 +#: part/admin.py:53 part/admin.py:319 part/models.py:922 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5771,11 +5827,11 @@ msgstr "" msgid "Part Image" msgstr "" -#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:222 msgid "Category ID" msgstr "" -#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:223 msgid "Category Name" msgstr "" @@ -5787,11 +5843,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:908 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1036 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5799,26 +5855,26 @@ msgstr "" 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 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:235 +#: templates/js/translated/part.js:715 templates/js/translated/part.js:2153 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3123 part/models.py:3137 -#: templates/js/translated/part.js:969 +#: part/admin.py:155 part/models.py:3088 part/models.py:3102 +#: templates/js/translated/part.js:970 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3130 part/models.py:3144 -#: templates/js/translated/part.js:979 +#: part/admin.py:158 part/models.py:3095 part/models.py:3109 +#: templates/js/translated/part.js:980 msgid "Maximum Cost" msgstr "" -#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 msgid "Parent ID" msgstr "" -#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 msgid "Parent Name" msgstr "" @@ -5827,141 +5883,149 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:325 part/models.py:393 part/serializers.py:117 -#: part/serializers.py:272 part/serializers.py:391 +#: part/admin.py:325 part/models.py:396 part/serializers.py:124 +#: part/serializers.py:267 part/serializers.py:386 #: 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:2803 templates/js/translated/search.js:130 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "" -#: part/admin.py:386 +#: part/admin.py:378 msgid "BOM Level" msgstr "" -#: part/admin.py:389 +#: part/admin.py:381 msgid "BOM Item ID" msgstr "" -#: part/admin.py:399 +#: part/admin.py:391 msgid "Parent IPN" msgstr "" -#: part/admin.py:410 part/models.py:3966 +#: part/admin.py:402 part/models.py:3946 msgid "Part IPN" msgstr "" -#: part/admin.py:423 part/serializers.py:1278 +#: part/admin.py:415 part/serializers.py:1274 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:428 part/serializers.py:1293 +#: part/admin.py:420 part/serializers.py:1289 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:110 +#: part/api.py:104 msgid "Starred" msgstr "" -#: part/api.py:112 +#: part/api.py:106 msgid "Filter by starred categories" msgstr "" -#: part/api.py:129 stock/api.py:318 +#: part/api.py:123 stock/api.py:312 msgid "Depth" msgstr "" -#: part/api.py:129 +#: part/api.py:123 msgid "Filter by category depth" msgstr "" -#: part/api.py:147 stock/api.py:336 +#: part/api.py:141 stock/api.py:330 +msgid "Top Level" +msgstr "" + +#: part/api.py:143 +msgid "Filter by top-level categories" +msgstr "" + +#: part/api.py:156 stock/api.py:345 msgid "Cascade" msgstr "" -#: part/api.py:149 +#: part/api.py:158 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:169 +#: part/api.py:179 templates/js/translated/part.js:308 msgid "Parent" msgstr "" -#: part/api.py:171 +#: part/api.py:181 msgid "Filter by parent category" msgstr "" -#: part/api.py:204 +#: part/api.py:214 msgid "Exclude Tree" msgstr "" -#: part/api.py:206 +#: part/api.py:216 msgid "Exclude sub-categories under the specified category" msgstr "" -#: part/api.py:455 +#: part/api.py:449 msgid "Has Results" msgstr "" -#: part/api.py:622 +#: part/api.py:616 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:640 +#: part/api.py:634 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:656 +#: part/api.py:650 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:740 +#: part/api.py:734 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:887 +#: part/api.py:881 msgid "Valid" msgstr "" -#: part/api.py:888 +#: part/api.py:882 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:894 +#: part/api.py:888 msgid "This option must be selected" msgstr "" -#: part/api.py:1111 +#: part/api.py:1105 msgid "BOM Valid" msgstr "" -#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 -#: part/serializers.py:406 part/serializers.py:1134 -#: part/templates/part/part_base.html:260 stock/api.py:781 +#: part/api.py:1508 part/models.py:932 part/models.py:3374 part/models.py:3889 +#: part/serializers.py:401 part/serializers.py:1130 +#: part/templates/part/part_base.html:260 stock/api.py:791 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2376 +#: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/api.py:1803 +#: part/api.py:1796 msgid "Uses" msgstr "" -#: part/bom.py:170 part/models.py:102 part/models.py:982 +#: part/bom.py:170 part/models.py:104 part/models.py:975 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 part/serializers.py:837 +#: part/bom.py:171 part/serializers.py:833 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5970,1054 +6034,1066 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 +#: part/models.py:85 part/models.py:3890 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:84 part/templates/part/category.html:136 +#: part/models.py:86 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "" -#: part/models.py:103 +#: part/models.py:105 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 +#: part/models.py:110 stock/models.py:174 templates/js/translated/part.js:2810 #: templates/js/translated/stock.js:2772 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:110 +#: part/models.py:112 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:119 +#: part/models.py:121 msgid "Default keywords" msgstr "" -#: part/models.py:120 +#: part/models.py:122 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 stock/models.py:85 stock/models.py:156 +#: part/models.py:128 stock/models.py:86 stock/models.py:157 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:127 stock/models.py:157 +#: part/models.py:129 stock/models.py:158 msgid "Icon (optional)" msgstr "" -#: part/models.py:149 +#: part/models.py:151 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:482 +#: part/models.py:485 msgid "Cannot delete this part as it is still active" msgstr "" -#: part/models.py:489 +#: part/models.py:490 msgid "Cannot delete this part as it is used in an assembly" msgstr "" -#: part/models.py:527 +#: part/models.py:528 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:575 part/models.py:582 +#: part/models.py:576 part/models.py:583 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:594 +#: part/models.py:595 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:659 +#: part/models.py:658 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:739 +#: part/models.py:736 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:844 +#: part/models.py:837 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:854 +#: part/models.py:847 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:869 +#: part/models.py:862 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:898 part/models.py:3965 +#: part/models.py:891 part/models.py:3945 msgid "Part name" msgstr "" -#: part/models.py:903 +#: part/models.py:896 msgid "Is Template" msgstr "" -#: part/models.py:904 +#: part/models.py:897 msgid "Is this part a template part?" msgstr "" -#: part/models.py:914 +#: part/models.py:907 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:922 +#: part/models.py:915 msgid "Part description (optional)" msgstr "" -#: part/models.py:930 +#: part/models.py:923 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:940 +#: part/models.py:933 msgid "Part category" msgstr "" -#: part/models.py:948 +#: part/models.py:941 msgid "Internal Part Number" msgstr "" -#: part/models.py:955 +#: part/models.py:948 msgid "Part revision or version number" msgstr "" -#: part/models.py:980 +#: part/models.py:973 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:1026 part/templates/part/part_base.html:376 +#: part/models.py:1019 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:1027 +#: part/models.py:1020 msgid "Default supplier part" msgstr "" -#: part/models.py:1034 +#: part/models.py:1027 msgid "Default Expiry" msgstr "" -#: part/models.py:1035 +#: part/models.py:1028 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:1044 +#: part/models.py:1037 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:1053 +#: part/models.py:1046 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1060 +#: part/models.py:1053 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1066 +#: part/models.py:1059 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1072 +#: part/models.py:1065 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1078 +#: part/models.py:1071 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1084 +#: part/models.py:1077 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1088 +#: part/models.py:1081 msgid "Is this part active?" msgstr "" -#: part/models.py:1094 +#: part/models.py:1087 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1100 +#: part/models.py:1093 msgid "BOM checksum" msgstr "" -#: part/models.py:1101 +#: part/models.py:1094 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1109 +#: part/models.py:1102 msgid "BOM checked by" msgstr "" -#: part/models.py:1114 +#: part/models.py:1107 msgid "BOM checked date" msgstr "" -#: part/models.py:1130 +#: part/models.py:1123 msgid "Creation User" msgstr "" -#: part/models.py:1140 +#: part/models.py:1133 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1145 part/templates/part/part_base.html:339 +#: part/models.py:1138 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2470 +#: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:2018 +#: part/models.py:2011 msgid "Sell multiple" msgstr "" -#: part/models.py:3037 +#: part/models.py:3002 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:3053 +#: part/models.py:3018 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:3054 +#: part/models.py:3019 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:3060 +#: part/models.py:3025 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3026 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:3067 +#: part/models.py:3032 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3033 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3074 +#: part/models.py:3039 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3040 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3046 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3047 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3053 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3054 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3060 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3096 +#: part/models.py:3061 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3102 +#: part/models.py:3067 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3103 +#: part/models.py:3068 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3109 +#: part/models.py:3074 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3110 +#: part/models.py:3075 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3116 +#: part/models.py:3081 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3117 +#: part/models.py:3082 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3124 +#: part/models.py:3089 msgid "Override minimum cost" msgstr "" -#: part/models.py:3131 +#: part/models.py:3096 msgid "Override maximum cost" msgstr "" -#: part/models.py:3138 +#: part/models.py:3103 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3145 +#: part/models.py:3110 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3151 +#: part/models.py:3116 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3152 +#: part/models.py:3117 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3158 +#: part/models.py:3123 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3159 +#: part/models.py:3124 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3165 +#: part/models.py:3130 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3131 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3172 +#: part/models.py:3137 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3138 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3192 +#: part/models.py:3157 msgid "Part for stocktake" msgstr "" -#: part/models.py:3197 +#: part/models.py:3162 msgid "Item Count" msgstr "" -#: part/models.py:3198 +#: part/models.py:3163 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3206 +#: part/models.py:3171 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3210 part/models.py:3293 +#: part/models.py:3175 part/models.py:3258 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report.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/part.js:1086 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" -#: part/models.py:3211 +#: part/models.py:3176 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3219 +#: part/models.py:3184 msgid "Additional notes" msgstr "" -#: part/models.py:3229 +#: part/models.py:3194 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3235 +#: part/models.py:3200 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3236 +#: part/models.py:3201 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3242 +#: part/models.py:3207 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3243 +#: part/models.py:3208 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3264 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3300 +#: part/models.py:3265 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3270 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3306 +#: part/models.py:3271 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3316 +#: part/models.py:3281 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3478 +#: part/models.py:3423 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3489 +#: part/models.py:3444 part/models.py:3608 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3455 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3500 +#: part/models.py:3466 msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3517 templates/js/translated/part.js:2878 +#: part/models.py:3483 templates/js/translated/part.js:2880 msgid "Test Name" msgstr "" -#: part/models.py:3518 +#: part/models.py:3484 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3524 +#: part/models.py:3490 msgid "Test Key" msgstr "" -#: part/models.py:3525 +#: part/models.py:3491 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3532 +#: part/models.py:3498 msgid "Test Description" msgstr "" -#: part/models.py:3533 +#: part/models.py:3499 msgid "Enter description for this test" msgstr "" -#: part/models.py:3537 report/models.py:208 -#: templates/js/translated/part.js:2899 +#: part/models.py:3503 report/models.py:209 +#: templates/js/translated/part.js:2901 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" -#: part/models.py:3537 +#: part/models.py:3503 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3542 templates/js/translated/part.js:2907 +#: part/models.py:3508 templates/js/translated/part.js:2909 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3543 +#: part/models.py:3509 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3548 templates/js/translated/part.js:2915 +#: part/models.py:3514 templates/js/translated/part.js:2917 msgid "Requires Value" msgstr "" -#: part/models.py:3549 +#: part/models.py:3515 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3554 templates/js/translated/part.js:2922 +#: part/models.py:3520 templates/js/translated/part.js:2924 msgid "Requires Attachment" msgstr "" -#: part/models.py:3556 +#: part/models.py:3522 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3603 +#: part/models.py:3528 part/models.py:3667 templates/js/translated/part.js:1637 +msgid "Choices" +msgstr "" + +#: part/models.py:3529 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3583 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3608 +#: part/models.py:3588 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3628 -msgid "Choices must be unique" -msgstr "" - -#: part/models.py:3645 +#: part/models.py:3625 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3660 +#: part/models.py:3640 msgid "Parameter Name" msgstr "" -#: part/models.py:3667 +#: part/models.py:3647 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3675 +#: part/models.py:3655 msgid "Parameter description" msgstr "" -#: part/models.py:3681 templates/js/translated/part.js:1627 +#: part/models.py:3661 templates/js/translated/part.js:1628 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "" -#: part/models.py:3682 +#: part/models.py:3662 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3687 templates/js/translated/part.js:1636 -msgid "Choices" -msgstr "" - -#: part/models.py:3688 +#: part/models.py:3668 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3765 +#: part/models.py:3745 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3808 +#: part/models.py:3788 msgid "Parent Part" msgstr "" -#: part/models.py:3816 part/models.py:3917 part/models.py:3918 +#: part/models.py:3796 part/models.py:3897 part/models.py:3898 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3821 +#: part/models.py:3801 msgid "Data" msgstr "" -#: part/models.py:3822 +#: part/models.py:3802 msgid "Parameter Value" msgstr "" -#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3904 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3925 +#: part/models.py:3905 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3963 +#: part/models.py:3943 msgid "Part ID or part name" msgstr "" -#: part/models.py:3964 +#: part/models.py:3944 msgid "Unique part ID value" msgstr "" -#: part/models.py:3966 +#: part/models.py:3946 msgid "Part IPN value" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "Level" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "BOM level" msgstr "" -#: part/models.py:4057 +#: part/models.py:4037 msgid "Select parent part" msgstr "" -#: part/models.py:4067 +#: part/models.py:4047 msgid "Sub part" msgstr "" -#: part/models.py:4068 +#: part/models.py:4048 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4079 +#: part/models.py:4059 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4085 +#: part/models.py:4065 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4091 +#: part/models.py:4071 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4098 part/templates/part/upload_bom.html:55 +#: part/models.py:4078 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4099 +#: part/models.py:4079 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4106 +#: part/models.py:4086 msgid "BOM item reference" msgstr "" -#: part/models.py:4114 +#: part/models.py:4094 msgid "BOM item notes" msgstr "" -#: part/models.py:4120 +#: part/models.py:4100 msgid "Checksum" msgstr "" -#: part/models.py:4121 +#: part/models.py:4101 msgid "BOM line checksum" msgstr "" -#: part/models.py:4126 templates/js/translated/table_filters.js:174 +#: part/models.py:4106 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4127 +#: part/models.py:4107 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4132 part/templates/part/upload_bom.html:57 +#: part/models.py:4112 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:4133 +#: part/models.py:4113 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4138 part/templates/part/upload_bom.html:56 +#: part/models.py:4118 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4139 +#: part/models.py:4119 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4224 stock/models.py:664 +#: part/models.py:4204 stock/models.py:662 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4234 part/models.py:4236 +#: part/models.py:4214 part/models.py:4216 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4376 +#: part/models.py:4354 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4397 +#: part/models.py:4375 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4410 +#: part/models.py:4388 msgid "Parent BOM item" msgstr "" -#: part/models.py:4418 +#: part/models.py:4396 msgid "Substitute part" msgstr "" -#: part/models.py:4434 +#: part/models.py:4412 msgid "Part 1" msgstr "" -#: part/models.py:4442 +#: part/models.py:4420 msgid "Part 2" msgstr "" -#: part/models.py:4443 +#: part/models.py:4421 msgid "Select Related Part" msgstr "" -#: part/models.py:4462 +#: part/models.py:4440 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4467 +#: part/models.py:4445 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:119 part/serializers.py:141 +#: part/serializers.py:118 +msgid "Parent Category" +msgstr "" + +#: part/serializers.py:119 templates/js/translated/part.js:309 +msgid "Parent part category" +msgstr "" + +#: part/serializers.py:126 part/serializers.py:148 #: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/serializers.py:185 +#: part/serializers.py:180 msgid "Results" msgstr "" -#: part/serializers.py:186 +#: part/serializers.py:181 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 +#: part/serializers.py:205 part/serializers.py:223 stock/serializers.py:562 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:273 +#: part/serializers.py:268 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:397 +#: part/serializers.py:392 msgid "No parts selected" msgstr "" -#: part/serializers.py:407 +#: part/serializers.py:402 msgid "Select category" msgstr "" -#: part/serializers.py:442 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:443 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:448 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:449 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:455 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:456 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:463 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:488 +#: part/serializers.py:483 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:490 +#: part/serializers.py:485 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:497 +#: part/serializers.py:492 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:493 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:510 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:531 +#: part/serializers.py:526 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:541 +#: part/serializers.py:536 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:548 +#: part/serializers.py:543 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:557 +#: part/serializers.py:552 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:568 +#: part/serializers.py:563 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:575 +#: part/serializers.py:570 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:834 msgid "External Stock" msgstr "" -#: part/serializers.py:840 +#: part/serializers.py:836 msgid "Unallocated Stock" msgstr "" -#: part/serializers.py:843 +#: part/serializers.py:839 msgid "Variant Stock" msgstr "" -#: part/serializers.py:873 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:471 +#: part/serializers.py:869 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:472 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:870 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:880 templates/js/translated/part.js:102 +#: part/serializers.py:876 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:881 +#: part/serializers.py:877 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:887 +#: part/serializers.py:883 msgid "Supplier Information" msgstr "" -#: part/serializers.py:888 +#: part/serializers.py:884 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:896 +#: part/serializers.py:892 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:897 +#: part/serializers.py:893 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:902 +#: part/serializers.py:898 msgid "Existing Image" msgstr "" -#: part/serializers.py:903 +#: part/serializers.py:899 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:920 +#: part/serializers.py:916 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1126 +#: part/serializers.py:1122 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1136 +#: part/serializers.py:1132 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1146 +#: part/serializers.py:1142 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1152 +#: part/serializers.py:1148 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1153 +#: part/serializers.py:1149 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1158 +#: part/serializers.py:1154 msgid "Generate Report" msgstr "" -#: part/serializers.py:1159 +#: part/serializers.py:1155 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1164 +#: part/serializers.py:1160 msgid "Update Parts" msgstr "" -#: part/serializers.py:1165 +#: part/serializers.py:1161 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1173 +#: part/serializers.py:1169 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1279 +#: part/serializers.py:1275 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1286 +#: part/serializers.py:1282 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1294 +#: part/serializers.py:1290 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1301 +#: part/serializers.py:1297 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1330 +#: part/serializers.py:1326 msgid "Update" msgstr "" -#: part/serializers.py:1331 +#: part/serializers.py:1327 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1354 +#: part/serializers.py:1350 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1361 +#: part/serializers.py:1357 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1364 +#: part/serializers.py:1360 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1727 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1739 +#: part/serializers.py:1735 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1740 +#: part/serializers.py:1736 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1745 +#: part/serializers.py:1741 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1746 +#: part/serializers.py:1742 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1747 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1752 +#: part/serializers.py:1748 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1757 +#: part/serializers.py:1753 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1758 +#: part/serializers.py:1754 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1792 +#: part/serializers.py:1788 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1793 +#: part/serializers.py:1789 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1823 +#: part/serializers.py:1819 msgid "No part column specified" msgstr "" -#: part/serializers.py:1867 +#: part/serializers.py:1863 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1870 +#: part/serializers.py:1866 msgid "No matching part found" msgstr "" -#: part/serializers.py:1873 +#: part/serializers.py:1869 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1882 +#: part/serializers.py:1878 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1890 +#: part/serializers.py:1886 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1911 +#: part/serializers.py:1907 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 +#: part/stocktake.py:225 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "" -#: part/stocktake.py:225 +#: part/stocktake.py:226 msgid "Total Cost Min" msgstr "" -#: part/stocktake.py:226 +#: part/stocktake.py:227 msgid "Total Cost Max" msgstr "" -#: part/stocktake.py:284 +#: part/stocktake.py:285 msgid "Stocktake Report Available" msgstr "" -#: part/stocktake.py:285 +#: part/stocktake.py:286 msgid "A new stocktake report is available for download" msgstr "" @@ -7151,7 +7227,7 @@ 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 +#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" @@ -7251,15 +7327,15 @@ msgstr "" msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:655 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:663 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:748 +#: part/templates/part/detail.html:750 msgid "Add Test Result Template" msgstr "" @@ -7340,7 +7416,7 @@ msgstr "" msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" msgstr "" @@ -7412,7 +7488,7 @@ 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:2443 +#: templates/js/translated/part.js:1265 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7505,8 +7581,8 @@ msgstr "" #: 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:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/part.js:1243 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 #: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7549,7 +7625,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:247 +#: part/templates/part/prices.html:28 stock/admin.py:251 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 @@ -7626,8 +7702,8 @@ msgstr "" #: part/templates/part/stock_count.html:7 #: templates/js/translated/model_renderers.js:227 -#: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 -#: templates/js/translated/part.js:2142 +#: templates/js/translated/part.js:705 templates/js/translated/part.js:2141 +#: templates/js/translated/part.js:2143 msgid "No Stock" msgstr "" @@ -7999,7 +8075,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:308 msgid "Landscape" msgstr "" @@ -8112,62 +8188,62 @@ msgstr "" msgid "Uninstalled plugin successfully" msgstr "" -#: plugin/models.py:35 +#: plugin/models.py:36 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:36 +#: plugin/models.py:37 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:42 users/models.py:100 +#: plugin/models.py:43 users/models.py:100 msgid "Key" msgstr "" -#: plugin/models.py:43 +#: plugin/models.py:44 msgid "Key of plugin" msgstr "" -#: plugin/models.py:51 +#: plugin/models.py:52 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:58 plugin/serializers.py:90 +#: plugin/models.py:59 plugin/serializers.py:90 msgid "Package Name" msgstr "" -#: plugin/models.py:60 +#: plugin/models.py:61 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:65 +#: plugin/models.py:66 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:156 templates/js/translated/table_filters.js:370 +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "" -#: plugin/models.py:165 +#: plugin/models.py:166 msgid "Sample plugin" msgstr "" -#: plugin/models.py:173 +#: plugin/models.py:174 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:181 +#: plugin/models.py:182 msgid "Package Plugin" msgstr "" -#: plugin/models.py:205 report/models.py:474 +#: plugin/models.py:220 report/models.py:475 #: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:252 +#: plugin/models.py:267 msgid "Method" msgstr "" @@ -8175,17 +8251,17 @@ msgstr "" msgid "No author found" msgstr "" -#: plugin/registry.py:597 +#: plugin/registry.py:534 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:600 +#: plugin/registry.py:537 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:602 +#: plugin/registry.py:539 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -8300,23 +8376,19 @@ msgstr "" msgid "Activate this plugin" msgstr "" -#: plugin/serializers.py:234 +#: plugin/serializers.py:226 msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:235 +#: plugin/serializers.py:227 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:77 +#: report/api.py:88 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:89 report/serializers.py:53 -msgid "Model Type" -msgstr "" - -#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/api.py:103 report/models.py:439 report/serializers.py:98 #: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 #: templates/js/translated/return_order.js:353 #: templates/js/translated/sales_order.js:887 @@ -8324,176 +8396,176 @@ msgstr "" msgid "Items" msgstr "" -#: report/api.py:168 +#: report/api.py:180 msgid "Plugin not found" msgstr "" -#: report/api.py:170 +#: report/api.py:182 msgid "Plugin is not active" msgstr "" -#: report/api.py:172 +#: report/api.py:184 msgid "Plugin does not support label printing" msgstr "" -#: report/api.py:221 +#: report/api.py:233 msgid "Invalid label dimensions" msgstr "" -#: report/api.py:236 report/api.py:316 +#: report/api.py:248 report/api.py:329 msgid "No valid items provided to template" msgstr "" -#: report/api.py:271 +#: report/api.py:283 msgid "Error printing label" msgstr "" -#: report/api.py:362 report/api.py:398 +#: report/api.py:375 report/api.py:411 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/helpers.py:41 +#: report/helpers.py:43 msgid "A4" msgstr "" -#: report/helpers.py:42 +#: report/helpers.py:44 msgid "A3" msgstr "" -#: report/helpers.py:43 +#: report/helpers.py:45 msgid "Legal" msgstr "" -#: report/helpers.py:44 +#: report/helpers.py:46 msgid "Letter" msgstr "" -#: report/models.py:118 +#: report/models.py:119 msgid "Template file with this name already exists" msgstr "" -#: report/models.py:150 +#: report/models.py:151 msgid "Template name" msgstr "" -#: report/models.py:156 +#: report/models.py:157 msgid "Template description" msgstr "" -#: report/models.py:162 +#: report/models.py:163 msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Filename Pattern" msgstr "" -#: report/models.py:203 +#: report/models.py:204 msgid "Pattern for generating filenames" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Template is enabled" msgstr "" -#: report/models.py:214 +#: report/models.py:215 msgid "Target model type for template" msgstr "" -#: report/models.py:234 +#: report/models.py:235 msgid "Filters" msgstr "" -#: report/models.py:235 +#: report/models.py:236 msgid "Template query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:294 report/models.py:361 +#: report/models.py:295 report/models.py:362 msgid "Template file" msgstr "" -#: report/models.py:302 +#: report/models.py:303 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:308 +#: report/models.py:309 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:367 +#: report/models.py:368 msgid "Width [mm]" msgstr "" -#: report/models.py:368 +#: report/models.py:369 msgid "Label width, specified in mm" msgstr "" -#: report/models.py:374 +#: report/models.py:375 msgid "Height [mm]" msgstr "" -#: report/models.py:375 +#: report/models.py:376 msgid "Label height, specified in mm" msgstr "" -#: report/models.py:438 +#: report/models.py:439 msgid "Number of items to process" msgstr "" -#: report/models.py:444 +#: report/models.py:445 msgid "Report generation is complete" msgstr "" -#: report/models.py:448 templates/js/translated/build.js:2177 +#: report/models.py:449 templates/js/translated/build.js:2177 msgid "Progress" msgstr "" -#: report/models.py:448 +#: report/models.py:449 msgid "Report generation progress" msgstr "" -#: report/models.py:456 +#: report/models.py:457 msgid "Report Template" msgstr "" -#: report/models.py:463 report/models.py:486 +#: report/models.py:464 report/models.py:487 msgid "Output File" msgstr "" -#: report/models.py:464 report/models.py:487 +#: report/models.py:465 report/models.py:488 msgid "Generated output file" msgstr "" -#: report/models.py:475 +#: report/models.py:476 msgid "Label output plugin" msgstr "" -#: report/models.py:479 +#: report/models.py:480 msgid "Label Template" msgstr "" -#: report/models.py:502 +#: report/models.py:503 msgid "Snippet" msgstr "" -#: report/models.py:503 +#: report/models.py:504 msgid "Report snippet file" msgstr "" -#: report/models.py:510 +#: report/models.py:511 msgid "Snippet file description" msgstr "" -#: report/models.py:528 +#: report/models.py:529 msgid "Asset" msgstr "" -#: report/models.py:529 +#: report/models.py:530 msgid "Report asset file" msgstr "" -#: report/models.py:536 +#: report/models.py:537 msgid "Asset file description" msgstr "" @@ -8566,8 +8638,8 @@ msgid "Total" msgstr "" #: report/templates/report/inventree_return_order_report.html:25 -#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 -#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:824 +#: stock/serializers.py:149 stock/templates/stock/item_base.html:311 #: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 #: templates/js/translated/build.js:2355 #: templates/js/translated/model_renderers.js:230 @@ -8597,32 +8669,32 @@ msgstr "" msgid "Test" msgstr "" -#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2412 msgid "Result" msgstr "" -#: report/templates/report/inventree_test_report.html:130 +#: report/templates/report/inventree_test_report.html:129 msgid "Pass" msgstr "" -#: report/templates/report/inventree_test_report.html:132 +#: report/templates/report/inventree_test_report.html:131 msgid "Fail" msgstr "" -#: report/templates/report/inventree_test_report.html:139 +#: report/templates/report/inventree_test_report.html:138 msgid "No result (required)" msgstr "" -#: report/templates/report/inventree_test_report.html:141 +#: report/templates/report/inventree_test_report.html:140 msgid "No result" msgstr "" -#: report/templates/report/inventree_test_report.html:154 +#: report/templates/report/inventree_test_report.html:153 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "" -#: report/templates/report/inventree_test_report.html:168 stock/admin.py:162 +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 #: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 #: templates/js/translated/stock.js:3110 msgid "Serial" @@ -8644,654 +8716,670 @@ msgstr "" msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:172 +#: stock/admin.py:51 stock/admin.py:171 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:176 +#: stock/admin.py:53 stock/admin.py:175 msgid "Location Name" msgstr "" -#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/admin.py:63 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:149 +#: stock/admin.py:148 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:168 +#: stock/admin.py:167 msgid "Status Code" msgstr "" -#: stock/admin.py:180 +#: stock/admin.py:179 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:185 +#: stock/admin.py:184 +msgid "Supplier Part SKU" +msgstr "" + +#: stock/admin.py:189 msgid "Supplier ID" msgstr "" -#: stock/admin.py:191 +#: stock/admin.py:195 msgid "Supplier Name" msgstr "" -#: stock/admin.py:196 +#: stock/admin.py:200 msgid "Customer ID" msgstr "" -#: stock/admin.py:201 stock/models.py:806 +#: stock/admin.py:205 stock/models.py:804 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:206 +#: stock/admin.py:210 msgid "Build ID" msgstr "" -#: stock/admin.py:216 +#: stock/admin.py:220 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:221 +#: stock/admin.py:225 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:236 +#: stock/admin.py:240 msgid "Review Needed" msgstr "" -#: stock/admin.py:241 +#: stock/admin.py:245 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:256 stock/models.py:900 +#: stock/admin.py:260 stock/models.py:898 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "" -#: stock/api.py:318 +#: stock/api.py:312 msgid "Filter by location depth" msgstr "" -#: stock/api.py:338 +#: stock/api.py:332 +msgid "Filter by top-level locations" +msgstr "" + +#: stock/api.py:347 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:359 +#: stock/api.py:369 stock/serializers.py:1085 msgid "Parent Location" msgstr "" -#: stock/api.py:360 +#: stock/api.py:370 msgid "Filter by parent location" msgstr "" -#: stock/api.py:615 templates/js/translated/table_filters.js:427 +#: stock/api.py:625 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:803 +#: stock/api.py:813 msgid "Part Tree" msgstr "" -#: stock/api.py:833 +#: stock/api.py:843 msgid "Expiry date before" msgstr "" -#: stock/api.py:837 +#: stock/api.py:847 msgid "Expiry date after" msgstr "" -#: stock/api.py:840 stock/templates/stock/item_base.html:439 +#: stock/api.py:850 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:927 +#: stock/api.py:937 msgid "Quantity is required" msgstr "" -#: stock/api.py:933 +#: stock/api.py:943 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:964 +#: stock/api.py:974 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:974 +#: stock/api.py:984 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:1005 +#: stock/api.py:1015 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:59 +#: stock/models.py:60 msgid "Stock Location type" msgstr "" -#: stock/models.py:60 +#: stock/models.py:61 msgid "Stock Location types" msgstr "" -#: stock/models.py:86 +#: stock/models.py:87 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:123 stock/models.py:788 +#: stock/models.py:124 stock/models.py:786 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:124 stock/templates/stock/location.html:186 +#: stock/models.py:125 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "" -#: stock/models.py:166 stock/models.py:949 +#: stock/models.py:167 stock/models.py:947 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:167 stock/models.py:950 +#: stock/models.py:168 stock/models.py:948 msgid "Select Owner" msgstr "" -#: stock/models.py:175 +#: stock/models.py:176 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:182 templates/js/translated/stock.js:2781 +#: stock/models.py:183 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:183 +#: stock/models.py:184 msgid "This is an external stock location" msgstr "" -#: stock/models.py:189 templates/js/translated/stock.js:2790 +#: stock/models.py:190 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" -#: stock/models.py:193 +#: stock/models.py:194 msgid "Stock location type of this location" msgstr "" -#: stock/models.py:262 +#: stock/models.py:261 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:643 +#: stock/models.py:641 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:670 stock/serializers.py:419 +#: stock/models.py:668 stock/serializers.py:446 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:687 +#: stock/models.py:685 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:697 stock/models.py:710 +#: stock/models.py:695 stock/models.py:708 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:700 +#: stock/models.py:698 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:724 +#: stock/models.py:722 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:729 +#: stock/models.py:727 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:742 +#: stock/models.py:740 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:758 +#: stock/models.py:756 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:770 +#: stock/models.py:768 msgid "Base part" msgstr "" -#: stock/models.py:780 +#: stock/models.py:778 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:792 +#: stock/models.py:790 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:800 stock/serializers.py:1480 +#: stock/models.py:798 stock/serializers.py:1476 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:811 +#: stock/models.py:809 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:830 +#: stock/models.py:828 msgid "Serial number for this item" msgstr "" -#: stock/models.py:844 stock/serializers.py:1463 +#: stock/models.py:842 stock/serializers.py:1459 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:849 +#: stock/models.py:847 msgid "Stock Quantity" msgstr "" -#: stock/models.py:859 +#: stock/models.py:857 msgid "Source Build" msgstr "" -#: stock/models.py:862 +#: stock/models.py:860 msgid "Build for this stock item" msgstr "" -#: stock/models.py:869 stock/templates/stock/item_base.html:363 +#: stock/models.py:867 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:872 +#: stock/models.py:870 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:881 +#: stock/models.py:879 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:885 +#: stock/models.py:883 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:891 +#: stock/models.py:889 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:902 +#: stock/models.py:900 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:920 +#: stock/models.py:918 msgid "Delete on deplete" msgstr "" -#: stock/models.py:921 +#: stock/models.py:919 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:941 +#: stock/models.py:939 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:972 +#: stock/models.py:970 msgid "Converted to part" msgstr "" -#: stock/models.py:1490 +#: stock/models.py:1486 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1496 +#: stock/models.py:1492 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1500 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1510 +#: stock/models.py:1506 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1515 +#: stock/models.py:1511 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1523 stock/serializers.py:658 +#: stock/models.py:1519 stock/serializers.py:660 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1620 +#: stock/models.py:1616 msgid "Test template does not exist" msgstr "" -#: stock/models.py:1638 +#: stock/models.py:1634 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1642 +#: stock/models.py:1638 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1645 +#: stock/models.py:1641 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1648 +#: stock/models.py:1644 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1651 +#: stock/models.py:1647 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1654 +#: stock/models.py:1650 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1661 stock/serializers.py:1369 +#: stock/models.py:1657 stock/serializers.py:1365 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1665 +#: stock/models.py:1661 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1673 +#: stock/models.py:1669 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1678 +#: stock/models.py:1674 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1905 +#: stock/models.py:1901 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2310 msgid "Entry notes" msgstr "" -#: stock/models.py:2391 +#: stock/models.py:2378 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2396 +#: stock/models.py:2383 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2423 +#: stock/models.py:2388 +msgid "Invalid value for this test" +msgstr "" + +#: stock/models.py:2412 msgid "Test result" msgstr "" -#: stock/models.py:2430 +#: stock/models.py:2419 msgid "Test output value" msgstr "" -#: stock/models.py:2438 +#: stock/models.py:2427 msgid "Test result attachment" msgstr "" -#: stock/models.py:2442 +#: stock/models.py:2431 msgid "Test notes" msgstr "" -#: stock/models.py:2450 templates/js/translated/stock.js:1548 +#: stock/models.py:2439 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2440 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2457 +#: stock/models.py:2446 msgid "Started" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2447 msgid "The timestamp of the test start" msgstr "" -#: stock/models.py:2464 +#: stock/models.py:2453 msgid "Finished" msgstr "" -#: stock/models.py:2465 +#: stock/models.py:2454 msgid "The timestamp of the test finish" msgstr "" -#: stock/serializers.py:75 +#: stock/serializers.py:74 msgid "Generated batch code" msgstr "" -#: stock/serializers.py:84 +#: stock/serializers.py:83 msgid "Select build order" msgstr "" -#: stock/serializers.py:93 +#: stock/serializers.py:92 msgid "Select stock item to generate batch code for" msgstr "" -#: stock/serializers.py:102 +#: stock/serializers.py:101 msgid "Select location to generate batch code for" msgstr "" -#: stock/serializers.py:111 +#: stock/serializers.py:110 msgid "Select part to generate batch code for" msgstr "" -#: stock/serializers.py:120 +#: stock/serializers.py:119 msgid "Select purchase order" msgstr "" -#: stock/serializers.py:127 +#: stock/serializers.py:126 msgid "Enter quantity for batch code" msgstr "" -#: stock/serializers.py:150 +#: stock/serializers.py:149 msgid "Generated serial number" msgstr "" -#: stock/serializers.py:159 +#: stock/serializers.py:158 msgid "Select part to generate serial number for" msgstr "" -#: stock/serializers.py:167 +#: stock/serializers.py:166 msgid "Quantity of serial numbers to generate" msgstr "" -#: stock/serializers.py:229 +#: stock/serializers.py:228 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:248 +#: stock/serializers.py:247 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:280 +#: stock/serializers.py:279 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:313 +#: stock/serializers.py:315 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:411 +#: stock/serializers.py:438 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:531 +#: stock/serializers.py:558 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:595 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:606 +#: stock/serializers.py:608 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:613 +#: stock/serializers.py:615 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 +#: stock/serializers.py:626 stock/serializers.py:1322 stock/serializers.py:1578 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:631 +#: stock/serializers.py:633 msgid "Optional note field" msgstr "" -#: stock/serializers.py:641 +#: stock/serializers.py:643 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:696 +#: stock/serializers.py:698 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:703 +#: stock/serializers.py:705 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:704 +#: stock/serializers.py:706 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 -#: stock/serializers.py:935 +#: stock/serializers.py:711 stock/serializers.py:791 stock/serializers.py:887 +#: stock/serializers.py:937 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:719 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:725 +#: stock/serializers.py:727 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:736 +#: stock/serializers.py:738 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:749 +#: stock/serializers.py:751 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:784 +#: stock/serializers.py:786 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:819 +#: stock/serializers.py:821 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:834 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:849 +#: stock/serializers.py:851 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:880 +#: stock/serializers.py:882 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:917 +#: stock/serializers.py:919 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:923 +#: stock/serializers.py:925 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:1019 stock/serializers.py:1082 +#: stock/serializers.py:1021 stock/serializers.py:1093 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:220 +#: stock/templates/stock/location.html:222 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1198 +#: stock/serializers.py:1086 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: stock/serializers.py:1194 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1202 +#: stock/serializers.py:1198 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1206 +#: stock/serializers.py:1202 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1230 +#: stock/serializers.py:1226 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1236 +#: stock/serializers.py:1232 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1244 +#: stock/serializers.py:1240 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1254 stock/serializers.py:1508 +#: stock/serializers.py:1250 stock/serializers.py:1504 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1333 +#: stock/serializers.py:1329 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1338 +#: stock/serializers.py:1334 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1339 +#: stock/serializers.py:1335 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1344 +#: stock/serializers.py:1340 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1345 +#: stock/serializers.py:1341 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1355 +#: stock/serializers.py:1351 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1422 +#: stock/serializers.py:1418 msgid "No Change" msgstr "" -#: stock/serializers.py:1451 +#: stock/serializers.py:1447 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1470 +#: stock/serializers.py:1466 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1498 +#: stock/serializers.py:1494 msgid "Stock transaction notes" msgstr "" @@ -9444,7 +9532,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276 msgid "Delete Test Data" msgstr "" @@ -9464,11 +9552,11 @@ msgstr "" msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:272 +#: stock/templates/stock/item.html:264 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "" @@ -9754,28 +9842,28 @@ msgstr "" msgid "Location Type" msgstr "" -#: stock/templates/stock/location.html:224 +#: stock/templates/stock/location.html:226 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:225 +#: stock/templates/stock/location.html:227 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:295 +#: stock/templates/stock/location.html:299 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:317 +#: stock/templates/stock/location.html:321 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:390 +#: stock/templates/stock/location.html:394 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:401 +#: stock/templates/stock/location.html:405 msgid "Link Barcode to Stock Location" msgstr "" @@ -10199,20 +10287,20 @@ msgstr "" msgid "Pricing Settings" msgstr "" -#: templates/InvenTree/settings/pricing.html:34 +#: templates/InvenTree/settings/pricing.html:35 msgid "Exchange Rates" msgstr "" -#: templates/InvenTree/settings/pricing.html:38 +#: templates/InvenTree/settings/pricing.html:39 msgid "Update Now" msgstr "" -#: templates/InvenTree/settings/pricing.html:46 -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 msgid "Last Update" msgstr "" -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:51 msgid "Never" msgstr "" @@ -10269,8 +10357,8 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:547 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 +#: templates/js/translated/part.js:393 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:402 msgid "Delete" msgstr "" @@ -10310,12 +10398,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 -#: templates/js/translated/part.js:1645 +#: templates/js/translated/part.js:1646 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 -#: templates/js/translated/part.js:1646 +#: templates/js/translated/part.js:1647 msgid "Delete Template" msgstr "" @@ -10705,7 +10793,7 @@ msgid "Submit Bug Report" msgstr "" #: templates/about.html:91 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 +#: templates/js/translated/helpers.js:589 msgid "copy to clipboard" msgstr "" @@ -10769,7 +10857,7 @@ 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 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45 msgid "Return to Site" msgstr "" @@ -10883,15 +10971,19 @@ msgstr "" msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "" -#: templates/allauth_2fa/setup.html:23 +#: templates/allauth_2fa/setup.html:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 msgid "Step 2" msgstr "" -#: templates/allauth_2fa/setup.html:27 +#: templates/allauth_2fa/setup.html:28 msgid "Input a token generated by the app:" msgstr "" -#: templates/allauth_2fa/setup.html:37 +#: templates/allauth_2fa/setup.html:38 msgid "Verify" msgstr "" @@ -10970,7 +11062,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3217 +#: templates/js/translated/part.js:3219 msgid "Minimum Quantity" msgstr "" @@ -11058,27 +11150,27 @@ msgstr "" msgid "Delete attachments" msgstr "" -#: templates/js/translated/attachment.js:253 +#: templates/js/translated/attachment.js:260 msgid "Attachment actions" msgstr "" -#: templates/js/translated/attachment.js:275 +#: templates/js/translated/attachment.js:294 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:315 +#: templates/js/translated/attachment.js:334 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:365 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:366 +#: templates/js/translated/attachment.js:385 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:374 +#: templates/js/translated/attachment.js:393 msgid "Delete attachment" msgstr "" @@ -11359,7 +11451,7 @@ msgid "Includes variant and substitute stock" msgstr "" #: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 -#: templates/js/translated/part.js:1256 +#: templates/js/translated/part.js:1257 #: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" @@ -11686,7 +11778,7 @@ msgstr "" #: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 #: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 -#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11729,8 +11821,8 @@ msgstr "" msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 -#: templates/js/translated/part.js:1202 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:791 +#: templates/js/translated/part.js:1203 msgid "Trackable part" msgstr "" @@ -11916,7 +12008,7 @@ msgid "Delete Parameters" msgstr "" #: templates/js/translated/company.js:1191 -#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2244 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2245 msgid "Order parts" msgstr "" @@ -11933,34 +12025,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:1279 -#: templates/js/translated/company.js:1567 templates/js/translated/part.js:798 -#: templates/js/translated/part.js:1210 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Template part" msgstr "" #: templates/js/translated/company.js:1283 -#: templates/js/translated/company.js:1571 templates/js/translated/part.js:802 -#: templates/js/translated/part.js:1214 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:803 +#: templates/js/translated/part.js:1215 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1464 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1465 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1527 +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1528 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1528 +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1529 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1433 +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1434 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1549 +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1550 msgid "Delete Parameter" msgstr "" @@ -12094,23 +12186,23 @@ msgstr "" msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2499 +#: templates/js/translated/forms.js:2500 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3113 +#: templates/js/translated/forms.js:3114 msgid "Select Columns" msgstr "" @@ -12211,7 +12303,7 @@ msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 -#: templates/js/translated/part.js:1604 +#: templates/js/translated/part.js:1605 msgid "ID" msgstr "" @@ -12292,347 +12384,343 @@ msgstr "" 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 +#: templates/js/translated/part.js:333 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:355 +#: templates/js/translated/part.js:356 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:356 +#: templates/js/translated/part.js:357 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:370 +#: templates/js/translated/part.js:371 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:383 +#: templates/js/translated/part.js:384 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:388 +#: templates/js/translated/part.js:389 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:397 +#: templates/js/translated/part.js:398 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:401 +#: templates/js/translated/part.js:402 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:406 +#: templates/js/translated/part.js:407 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:430 +#: templates/js/translated/part.js:431 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:432 +#: templates/js/translated/part.js:433 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:433 +#: templates/js/translated/part.js:434 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:462 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:463 +#: templates/js/translated/part.js:464 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:474 +#: templates/js/translated/part.js:475 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:531 +#: templates/js/translated/part.js:532 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:532 +#: templates/js/translated/part.js:533 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:546 +#: templates/js/translated/part.js:547 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:548 +#: templates/js/translated/part.js:549 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:549 +#: templates/js/translated/part.js:550 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:550 +#: templates/js/translated/part.js:551 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:557 +#: templates/js/translated/part.js:558 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:593 +#: templates/js/translated/part.js:594 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:595 +#: templates/js/translated/part.js:596 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:600 +#: templates/js/translated/part.js:601 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:602 +#: templates/js/translated/part.js:603 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:619 +#: templates/js/translated/part.js:620 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:629 +#: templates/js/translated/part.js:630 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:632 +#: templates/js/translated/part.js:633 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:657 +#: templates/js/translated/part.js:658 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:685 +#: templates/js/translated/part.js:686 #: templates/js/translated/table_filters.js:747 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:688 +#: templates/js/translated/part.js:689 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:748 +#: templates/js/translated/part.js:749 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:771 +#: templates/js/translated/part.js:772 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +#: templates/js/translated/part.js:795 templates/js/translated/part.js:1207 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:806 +#: templates/js/translated/part.js:807 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:810 +#: templates/js/translated/part.js:811 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:897 +#: templates/js/translated/part.js:898 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:901 +#: templates/js/translated/part.js:902 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1050 +#: templates/js/translated/part.js:1051 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1145 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +#: templates/js/translated/part.js:1113 templates/js/translated/part.js:1155 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1281 +#: templates/js/translated/part.js:1282 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1599 +#: templates/js/translated/part.js:1600 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1662 +#: templates/js/translated/part.js:1663 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1674 +#: templates/js/translated/part.js:1675 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1682 +#: templates/js/translated/part.js:1683 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1716 +#: templates/js/translated/part.js:1717 #: templates/js/translated/purchase_order.js:1654 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1860 +#: templates/js/translated/part.js:1861 #: templates/js/translated/purchase_order.js:2153 #: templates/js/translated/return_order.js:755 #: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1906 +#: templates/js/translated/part.js:1907 #: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1970 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1991 +#: templates/js/translated/part.js:1992 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 +#: templates/js/translated/part.js:2080 templates/js/translated/part.js:2506 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2200 +#: templates/js/translated/part.js:2201 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2205 +#: templates/js/translated/part.js:2206 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2235 +#: templates/js/translated/part.js:2236 msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2286 +#: templates/js/translated/part.js:2287 msgid "part" msgstr "" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2288 msgid "parts" msgstr "" -#: templates/js/translated/part.js:2383 +#: templates/js/translated/part.js:2384 msgid "No category" msgstr "" -#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2546 +#: templates/js/translated/part.js:2547 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2644 +#: templates/js/translated/part.js:2645 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2760 +#: templates/js/translated/part.js:2761 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2776 +#: templates/js/translated/part.js:2777 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2865 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2887 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/part.js:2938 templates/js/translated/stock.js:1457 #: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2940 +#: templates/js/translated/part.js:2942 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2956 +#: templates/js/translated/part.js:2958 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2970 +#: templates/js/translated/part.js:2972 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3051 templates/js/translated/part.js:3052 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3052 +#: templates/js/translated/part.js:3054 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3058 +#: templates/js/translated/part.js:3060 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3108 +#: templates/js/translated/part.js:3110 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3114 +#: templates/js/translated/part.js:3116 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3210 +#: templates/js/translated/part.js:3212 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3226 +#: templates/js/translated/part.js:3228 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3271 +#: templates/js/translated/part.js:3273 msgid "Minimum Stock Level" msgstr "" @@ -13240,10 +13328,6 @@ msgstr "" 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 "" @@ -13412,7 +13496,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:401 +#: templates/js/translated/stock.js:1042 users/models.py:392 msgid "Add" msgstr "" @@ -14303,34 +14387,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:384 +#: users/models.py:375 msgid "Permission set" msgstr "" -#: users/models.py:393 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "View" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "Permission to view items" msgstr "" -#: users/models.py:401 +#: users/models.py:392 msgid "Permission to add items" msgstr "" -#: users/models.py:405 +#: users/models.py:396 msgid "Change" msgstr "" -#: users/models.py:407 +#: users/models.py:398 msgid "Permissions to edit items" msgstr "" -#: users/models.py:413 +#: users/models.py:404 msgid "Permission to delete items" msgstr "" + diff --git a/src/backend/InvenTree/locale/hu/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/hu/LC_MESSAGES/django.po index ec2e6703ce..f00e292a10 100644 --- a/src/backend/InvenTree/locale/hu/LC_MESSAGES/django.po +++ b/src/backend/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-05-31 07:08+0000\n" -"PO-Revision-Date: 2024-05-27 11:54\n" +"POT-Creation-Date: 2024-06-26 03:18+0000\n" +"PO-Revision-Date: 2024-06-26 06:04\n" "Last-Translator: \n" "Language-Team: Hungarian\n" "Language: hu_HU\n" @@ -21,7 +21,7 @@ msgstr "" msgid "API endpoint not found" msgstr "API funkciót nem találom" -#: InvenTree/api.py:536 +#: InvenTree/api.py:520 msgid "User does not have permission to view this model" msgstr "Nincs jogosultságod az adatok megtekintéséhez" @@ -52,25 +52,25 @@ msgstr "Hibás mennyiség ({exc})" msgid "Error details can be found in the admin panel" msgstr "A hiba részleteit megtalálod az admin panelen" -#: InvenTree/fields.py:139 +#: InvenTree/fields.py:136 msgid "Enter date" msgstr "Dátum megadása" -#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 -#: build/serializers.py:531 build/templates/build/sidebar.html:21 -#: company/models.py:849 company/templates/company/sidebar.html:37 -#: order/models.py:1332 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:205 InvenTree/models.py:918 build/serializers.py:452 +#: build/serializers.py:530 build/templates/build/sidebar.html:21 +#: company/models.py:817 company/templates/company/sidebar.html:37 +#: order/models.py:1296 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:3218 part/templates/part/part_sidebar.html:63 +#: part/models.py:3183 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_report.html:172 -#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 -#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 -#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 -#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:230 stock/models.py:2309 stock/models.py:2431 +#: stock/serializers.py:632 stock/serializers.py:790 stock/serializers.py:886 +#: stock/serializers.py:936 stock/serializers.py:1239 stock/serializers.py:1328 +#: stock/serializers.py:1493 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1080 +#: templates/js/translated/part.js:1081 #: templates/js/translated/purchase_order.js:2200 #: templates/js/translated/return_order.js:775 #: templates/js/translated/sales_order.js:1103 @@ -120,15 +120,15 @@ msgstr "Email cím megerősítés" msgid "You must type the same email each time." msgstr "Mindig ugyanazt az email címet kell beírni." -#: InvenTree/forms.py:253 InvenTree/forms.py:261 +#: InvenTree/forms.py:248 InvenTree/forms.py:256 msgid "The provided primary email address is not valid." msgstr "A megadott elsődleges email cím nem valós." -#: InvenTree/forms.py:268 +#: InvenTree/forms.py:263 msgid "The provided email domain is not approved." msgstr "A megadott email domain nincs jóváhagyva." -#: InvenTree/forms.py:395 +#: InvenTree/forms.py:390 msgid "Registration is disabled." msgstr "Regisztráció le van tiltva." @@ -171,35 +171,35 @@ msgstr "Az egyedi sorozatszámok számának ({len(serials)}) meg kell egyeznie a 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:150 +#: InvenTree/helpers_model.py:140 msgid "Connection error" msgstr "Csatlakozási hiba" -#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 msgid "Server responded with invalid status code" msgstr "A kiszolgáló érvénytelen státuszkóddal válaszolt" -#: InvenTree/helpers_model.py:158 +#: InvenTree/helpers_model.py:148 msgid "Exception occurred" msgstr "Kivétel történt" -#: InvenTree/helpers_model.py:168 +#: InvenTree/helpers_model.py:158 msgid "Server responded with invalid Content-Length value" msgstr "A kiszolgáló érvénytelen Content-Length értéket adott" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:161 msgid "Image size is too large" msgstr "A kép mérete túl nagy" -#: InvenTree/helpers_model.py:183 +#: InvenTree/helpers_model.py:173 msgid "Image download exceeded maximum size" msgstr "A kép letöltés meghaladja a maximális méretet" -#: InvenTree/helpers_model.py:188 +#: InvenTree/helpers_model.py:178 msgid "Remote server returned empty response" msgstr "A kiszolgáló üres választ adott" -#: InvenTree/helpers_model.py:196 +#: InvenTree/helpers_model.py:186 msgid "Supplied URL is not a valid image file" msgstr "A megadott URL nem egy érvényes kép fájl" @@ -296,46 +296,50 @@ msgid "Portuguese (Brazilian)" msgstr "Portugál (Brazíliai)" #: InvenTree/locales.py:41 +msgid "Romanian" +msgstr "" + +#: InvenTree/locales.py:42 msgid "Russian" msgstr "Orosz" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:43 msgid "Slovak" msgstr "Szlovák" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:44 msgid "Slovenian" msgstr "Szlovén" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:45 msgid "Serbian" msgstr "Szerb" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:46 msgid "Swedish" msgstr "Svéd" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:47 msgid "Thai" msgstr "Tháj" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:48 msgid "Turkish" msgstr "Török" -#: InvenTree/locales.py:48 +#: InvenTree/locales.py:49 msgid "Ukrainian" msgstr "Ukrán" -#: InvenTree/locales.py:49 +#: InvenTree/locales.py:50 msgid "Vietnamese" msgstr "Vietnámi" -#: InvenTree/locales.py:50 +#: InvenTree/locales.py:51 msgid "Chinese (Simplified)" msgstr "Kínai (egyszerűsített)" -#: InvenTree/locales.py:51 +#: InvenTree/locales.py:52 msgid "Chinese (Traditional)" msgstr "Kínai (Hagyományos)" @@ -344,153 +348,65 @@ msgstr "Kínai (Hagyományos)" msgid "[{site_name}] Log in to the app" msgstr "[{site_name}] Bejelentkezés" -#: InvenTree/magic_login.py:38 company/models.py:133 +#: InvenTree/magic_login.py:38 company/models.py:136 #: company/templates/company/company_base.html:138 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:677 msgid "Email" msgstr "Email" -#: InvenTree/models.py:107 +#: InvenTree/models.py:105 msgid "Error running plugin validation" msgstr "Hiba a plugin validálása közben" -#: InvenTree/models.py:176 +#: InvenTree/models.py:174 msgid "Metadata must be a python dict object" msgstr "A meta adatnak egy python dict objektumnak kell lennie" -#: InvenTree/models.py:182 +#: InvenTree/models.py:180 msgid "Plugin Metadata" msgstr "Plugin meta adatok" -#: InvenTree/models.py:183 +#: InvenTree/models.py:181 msgid "JSON metadata field, for use by external plugins" msgstr "JSON meta adat mező, külső pluginok számára" -#: InvenTree/models.py:413 +#: InvenTree/models.py:408 msgid "Improperly formatted pattern" msgstr "Helytelenül formázott minta" -#: InvenTree/models.py:420 +#: InvenTree/models.py:415 msgid "Unknown format key specified" msgstr "Ismeretlen formátum kulcs lett megadva" -#: InvenTree/models.py:426 +#: InvenTree/models.py:421 msgid "Missing required format key" msgstr "Hiányzó formátum kulcs" -#: InvenTree/models.py:437 +#: InvenTree/models.py:432 msgid "Reference field cannot be empty" msgstr "Az azonosító mező nem lehet üres" -#: InvenTree/models.py:445 +#: InvenTree/models.py:440 msgid "Reference must match required pattern" msgstr "Az azonosítónak egyeznie kell a mintával" -#: InvenTree/models.py:476 +#: InvenTree/models.py:471 msgid "Reference number is too large" msgstr "Azonosító szám túl nagy" -#: InvenTree/models.py:550 -msgid "Missing file" -msgstr "Hiányzó fájl" - -#: InvenTree/models.py:551 -msgid "Missing external link" -msgstr "Hiányzó külső link" - -#: InvenTree/models.py:572 stock/models.py:2437 -#: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:326 -msgid "Attachment" -msgstr "Melléklet" - -#: InvenTree/models.py:573 -msgid "Select file to attach" -msgstr "Válaszd ki a mellekelni kívánt fájlt" - -#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:831 -#: order/models.py:303 order/models.py:1337 order/models.py:1753 -#: part/admin.py:55 part/models.py:962 -#: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_report.html:164 -#: stock/admin.py:225 templates/js/translated/company.js:1319 -#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2455 -#: templates/js/translated/purchase_order.js:2040 -#: templates/js/translated/purchase_order.js:2204 -#: templates/js/translated/return_order.js:779 -#: templates/js/translated/sales_order.js:1092 -#: templates/js/translated/sales_order.js:2023 -msgid "Link" -msgstr "Link" - -#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 -#: stock/models.py:836 -msgid "Link to external URL" -msgstr "Link külső URL-re" - -#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:341 -msgid "Comment" -msgstr "Megjegyzés" - -#: InvenTree/models.py:589 -msgid "File comment" -msgstr "Leírás, bővebb infó" - -#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 -#: common/models.py:2518 common/models.py:2742 common/models.py:2743 -#: common/models.py:2988 common/models.py:2989 part/models.py:3228 -#: part/models.py:3315 part/models.py:3408 part/models.py:3436 -#: plugin/models.py:259 plugin/models.py:260 -#: report/templates/report/inventree_test_report.html:105 -#: templates/js/translated/stock.js:3036 users/models.py:111 -msgid "User" -msgstr "Felhasználó" - -#: InvenTree/models.py:602 -msgid "upload date" -msgstr "feltöltés dátuma" - -#: InvenTree/models.py:624 -msgid "Filename must not be empty" -msgstr "A fájlnév nem lehet üres" - -#: InvenTree/models.py:635 -msgid "Invalid attachment directory" -msgstr "Érvénytelen melléklet mappa" - -#: InvenTree/models.py:665 -#, python-brace-format -msgid "Filename contains illegal character '{c}'" -msgstr "Fájlnévben érvénytelen karakter van '{c}'" - -#: InvenTree/models.py:668 -msgid "Filename missing extension" -msgstr "Fájlnév kiterjesztése hiányzik" - -#: InvenTree/models.py:677 -msgid "Attachment with this filename already exists" -msgstr "Ilyen fájlnévvel már létezik melléklet" - -#: InvenTree/models.py:684 -msgid "Error renaming file" -msgstr "Hiba a fájl átnevezésekor" - -#: InvenTree/models.py:860 +#: InvenTree/models.py:719 msgid "Duplicate names cannot exist under the same parent" msgstr "Duplikált nevek nem lehetnek ugyanazon szülő alatt" -#: InvenTree/models.py:877 +#: InvenTree/models.py:736 msgid "Invalid choice" msgstr "Érvénytelen választás" -#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 -#: common/serializers.py:403 company/models.py:614 machine/models.py:24 -#: part/models.py:898 part/models.py:3659 plugin/models.py:50 -#: report/models.py:149 stock/models.py:72 +#: InvenTree/models.py:766 common/models.py:2623 common/models.py:3036 +#: common/serializers.py:408 company/models.py:580 machine/models.py:24 +#: part/models.py:891 part/models.py:3639 plugin/models.py:51 +#: report/models.py:150 stock/models.py:73 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:83 @@ -501,25 +417,25 @@ msgstr "Érvénytelen választás" #: templates/js/translated/company.js:724 #: templates/js/translated/company.js:913 #: templates/js/translated/company.js:1165 -#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 -#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1187 +#: templates/js/translated/part.js:1475 templates/js/translated/part.js:1611 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Név" -#: InvenTree/models.py:913 build/models.py:218 -#: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:523 company/models.py:840 +#: InvenTree/models.py:772 build/models.py:220 +#: build/templates/build/detail.html:24 common/models.py:138 +#: company/models.py:509 company/models.py:808 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 order/models.py:289 -#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 -#: part/models.py:3674 part/templates/part/category.html:82 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:914 +#: part/models.py:3654 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:155 -#: report/models.py:509 report/models.py:535 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 #: report/templates/report/inventree_build_order_report.html:117 -#: stock/admin.py:55 stock/models.py:78 stock/templates/stock/location.html:125 +#: stock/admin.py:54 stock/models.py:79 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 @@ -528,10 +444,10 @@ msgstr "Név" #: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 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:2354 -#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1239 +#: templates/js/translated/part.js:1484 templates/js/translated/part.js:1622 +#: templates/js/translated/part.js:1959 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2897 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1706 #: templates/js/translated/purchase_order.js:1849 @@ -544,149 +460,141 @@ msgstr "Név" msgid "Description" msgstr "Leírás" -#: InvenTree/models.py:914 stock/models.py:79 +#: InvenTree/models.py:773 stock/models.py:80 msgid "Description (optional)" msgstr "Leírás (opcionális)" -#: InvenTree/models.py:923 -msgid "parent" -msgstr "szülő" - -#: InvenTree/models.py:929 templates/js/translated/part.js:2793 +#: InvenTree/models.py:788 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Elérési út" -#: InvenTree/models.py:1035 +#: InvenTree/models.py:918 msgid "Markdown notes (optional)" msgstr "Markdown megjegyzések (opcionális)" -#: InvenTree/models.py:1064 +#: InvenTree/models.py:947 msgid "Barcode Data" msgstr "Vonalkód adat" -#: InvenTree/models.py:1065 +#: InvenTree/models.py:948 msgid "Third party barcode data" msgstr "Harmadik féltől származó vonalkód adat" -#: InvenTree/models.py:1071 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "Vonalkód hash" -#: InvenTree/models.py:1072 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "Egyedi vonalkód hash" -#: InvenTree/models.py:1125 +#: InvenTree/models.py:1008 msgid "Existing barcode found" msgstr "Létező vonalkód" -#: InvenTree/models.py:1168 +#: InvenTree/models.py:1051 msgid "Server Error" msgstr "Kiszolgálóhiba" -#: InvenTree/models.py:1169 +#: InvenTree/models.py:1052 msgid "An error has been logged by the server." msgstr "A kiszolgáló egy hibaüzenetet rögzített." -#: InvenTree/serializers.py:62 part/models.py:4212 +#: InvenTree/serializers.py:63 part/models.py:4192 msgid "Must be a valid number" msgstr "Érvényes számnak kell lennie" -#: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:3036 +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3001 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Pénznem" -#: InvenTree/serializers.py:102 +#: 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:441 +#: InvenTree/serializers.py:442 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:453 +#: InvenTree/serializers.py:454 msgid "Only superusers can create new users" msgstr "Csak a superuser-ek hozhatnak létre felhasználókat" -#: InvenTree/serializers.py:472 +#: InvenTree/serializers.py:473 msgid "Your account has been created." msgstr "A fiókod sikeresen létrejött." -#: InvenTree/serializers.py:474 +#: InvenTree/serializers.py:475 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:481 +#: InvenTree/serializers.py:482 msgid "Welcome to InvenTree" msgstr "Üdvözlet az InvenTree-ben" -#: InvenTree/serializers.py:542 -msgid "Filename" -msgstr "Fájlnév" - -#: InvenTree/serializers.py:576 +#: InvenTree/serializers.py:540 msgid "Invalid value" msgstr "Érvénytelen érték" -#: InvenTree/serializers.py:596 +#: InvenTree/serializers.py:560 msgid "Data File" msgstr "Adat fájl" -#: InvenTree/serializers.py:597 +#: InvenTree/serializers.py:561 msgid "Select data file for upload" msgstr "Fájl kiválasztása feltöltéshez" -#: InvenTree/serializers.py:614 +#: InvenTree/serializers.py:578 msgid "Unsupported file type" msgstr "Nem támogatott fájltípus" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:584 msgid "File is too large" msgstr "Fájl túl nagy" -#: InvenTree/serializers.py:641 +#: InvenTree/serializers.py:605 msgid "No columns found in file" msgstr "Nem találhatók oszlopok a fájlban" -#: InvenTree/serializers.py:644 +#: InvenTree/serializers.py:608 msgid "No data rows found in file" msgstr "Nincsenek adatsorok a fájlban" -#: InvenTree/serializers.py:757 +#: InvenTree/serializers.py:721 msgid "No data rows provided" msgstr "Nincs adatsor megadva" -#: InvenTree/serializers.py:760 +#: InvenTree/serializers.py:724 msgid "No data columns supplied" msgstr "Nincs adat oszlop megadva" -#: InvenTree/serializers.py:827 +#: InvenTree/serializers.py:791 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Szükséges oszlop hiányzik: '{name}'" -#: InvenTree/serializers.py:836 +#: InvenTree/serializers.py:800 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Duplikált oszlop: '{col}'" -#: InvenTree/serializers.py:859 +#: InvenTree/serializers.py:840 msgid "Remote Image" msgstr "Távoli kép" -#: InvenTree/serializers.py:860 +#: InvenTree/serializers.py:841 msgid "URL of remote image file" msgstr "A távoli kép URL-je" -#: InvenTree/serializers.py:878 +#: InvenTree/serializers.py:859 msgid "Downloading images from remote URL is not enabled" msgstr "Képek letöltése távoli URL-ről nem engedélyezett" -#: InvenTree/status.py:66 part/serializers.py:1178 +#: InvenTree/status.py:66 part/serializers.py:1174 msgid "Background worker check failed" msgstr "Háttér folyamat ellenőrzés sikertelen" @@ -698,27 +606,27 @@ msgstr "Email backend nincs beállítva" msgid "InvenTree system health checks failed" msgstr "InvenTree rendszer állapotának ellenőrzése sikertelen" -#: InvenTree/templatetags/inventree_extras.py:183 +#: InvenTree/templatetags/inventree_extras.py:184 msgid "Unknown database" msgstr "Ismeretlen adatbázis" -#: InvenTree/validators.py:31 InvenTree/validators.py:33 +#: InvenTree/validators.py:32 InvenTree/validators.py:34 msgid "Invalid physical unit" msgstr "Érvénytelen fizikai mértékegység" -#: InvenTree/validators.py:39 +#: InvenTree/validators.py:40 msgid "Not a valid currency code" msgstr "Érvénytelen pénznem kód" -#: InvenTree/validators.py:121 InvenTree/validators.py:137 +#: InvenTree/validators.py:118 InvenTree/validators.py:134 msgid "Overage value must not be negative" msgstr "Túlszállítás nem lehet negatív" -#: InvenTree/validators.py:139 +#: InvenTree/validators.py:136 msgid "Overage must not exceed 100%" msgstr "Túlszállítás nem lehet több mint 100%" -#: InvenTree/validators.py:145 +#: InvenTree/validators.py:142 msgid "Invalid value for overage" msgstr "Érvénytelen érték a túlszállításra" @@ -750,14 +658,14 @@ 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:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: build/api.py:299 part/models.py:4070 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "Fogyóeszköz" -#: build/api.py:300 part/models.py:4084 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4064 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2529 #: templates/js/translated/table_filters.js:186 @@ -778,30 +686,30 @@ msgstr "Követett" msgid "Allocated" msgstr "Lefoglalva" -#: build/api.py:311 company/models.py:904 company/serializers.py:383 +#: build/api.py:311 company/models.py:872 company/serializers.py:359 #: 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:2561 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:234 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 -#: templates/js/translated/part.js:699 +#: templates/js/translated/part.js:693 templates/js/translated/part.js:695 +#: templates/js/translated/part.js:700 #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:575 msgid "Available" msgstr "Elérhető" -#: build/models.py:83 build/templates/build/build_base.html:9 +#: build/models.py:85 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_report.html:105 -#: stock/serializers.py:83 templates/email/build_order_completed.html:16 +#: stock/serializers.py:82 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:2892 msgid "Build Order" msgstr "Gyártási utasítás" -#: build/models.py:84 build/templates/build/build_base.html:13 +#: build/models.py:86 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 @@ -812,25 +720,25 @@ msgstr "Gyártási utasítás" msgid "Build Orders" msgstr "Gyártási utasítások" -#: build/models.py:131 +#: build/models.py:133 msgid "Invalid choice for parent build" msgstr "Hibás választás a szülő gyártásra" -#: build/models.py:142 order/models.py:240 +#: build/models.py:144 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "Meg kell adni felelős felhasználót vagy csoportot" -#: build/models.py:148 +#: build/models.py:150 msgid "Build order part cannot be changed" msgstr "Gyártási rendelés alkatrész nem változtatható" -#: build/models.py:209 +#: build/models.py:211 msgid "Build Order Reference" msgstr "Gyártási utasítás azonosító" -#: build/models.py:210 order/models.py:463 order/models.py:928 -#: order/models.py:1325 order/models.py:2056 part/admin.py:419 -#: part/models.py:4105 part/templates/part/upload_bom.html:54 +#: build/models.py:212 order/models.py:463 order/models.py:926 +#: order/models.py:1289 order/models.py:2020 part/admin.py:411 +#: part/models.py:4085 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_purchase_order_report.html:28 #: report/templates/report/inventree_return_order_report.html:26 @@ -844,27 +752,27 @@ msgstr "Gyártási utasítás azonosító" msgid "Reference" msgstr "Azonosító" -#: build/models.py:221 +#: build/models.py:223 msgid "Brief description of the build (optional)" msgstr "Gyártás rövid leírása (opcionális)" -#: build/models.py:229 build/templates/build/build_base.html:183 +#: build/models.py:231 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:230 +#: build/models.py:232 msgid "BuildOrder to which this build is allocated" msgstr "Gyártás, amihez ez a gyártás hozzá van rendelve" -#: build/models.py:235 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 -#: order/models.py:1450 order/models.py:1595 order/models.py:1596 -#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 -#: part/models.py:3191 part/models.py:3335 part/models.py:3358 -#: part/models.py:3379 part/models.py:3401 part/models.py:3511 -#: part/models.py:3807 part/models.py:3963 part/models.py:4056 -#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 +#: build/models.py:237 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1026 order/api.py:805 +#: order/models.py:1414 order/models.py:1559 order/models.py:1560 +#: part/api.py:1494 part/api.py:1788 part/models.py:395 part/models.py:3012 +#: part/models.py:3156 part/models.py:3303 part/models.py:3324 +#: part/models.py:3346 part/models.py:3477 part/models.py:3787 +#: part/models.py:3943 part/models.py:4036 part/models.py:4395 +#: part/serializers.py:1120 part/serializers.py:1726 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -875,8 +783,8 @@ msgstr "Gyártás, amihez ez a gyártás hozzá van rendelve" #: report/templates/report/inventree_return_order_report.html:24 #: report/templates/report/inventree_sales_order_report.html:27 #: report/templates/report/inventree_stock_location_report.html:102 -#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 -#: stock/serializers.py:818 templates/InvenTree/search.html:82 +#: stock/serializers.py:109 stock/serializers.py:157 stock/serializers.py:423 +#: stock/serializers.py:820 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 @@ -889,8 +797,8 @@ msgstr "Gyártás, amihez ez a gyártás hozzá van rendelve" #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 -#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2323 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:1944 templates/js/translated/part.js:2016 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 #: templates/js/translated/purchase_order.js:751 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1848 @@ -908,107 +816,107 @@ msgstr "Gyártás, amihez ez a gyártás hozzá van rendelve" msgid "Part" msgstr "Alkatrész" -#: build/models.py:243 +#: build/models.py:245 msgid "Select part to build" msgstr "Válassz alkatrészt a gyártáshoz" -#: build/models.py:248 +#: build/models.py:250 msgid "Sales Order Reference" msgstr "Vevői rendelés azonosító" -#: build/models.py:252 +#: build/models.py:254 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:257 build/serializers.py:1000 +#: build/models.py:259 build/serializers.py:999 #: templates/js/translated/build.js:1731 #: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "Forrás hely" -#: build/models.py:261 +#: build/models.py:263 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:266 +#: build/models.py:268 msgid "Destination Location" msgstr "Cél hely" -#: build/models.py:270 +#: build/models.py:272 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:274 +#: build/models.py:276 msgid "Build Quantity" msgstr "Gyártási mennyiség" -#: build/models.py:277 +#: build/models.py:279 msgid "Number of stock items to build" msgstr "Gyártandó készlet tételek száma" -#: build/models.py:281 +#: build/models.py:283 msgid "Completed items" msgstr "Kész tételek" -#: build/models.py:283 +#: build/models.py:285 msgid "Number of stock items which have been completed" msgstr "Elkészült készlet tételek száma" -#: build/models.py:287 +#: build/models.py:289 msgid "Build Status" msgstr "Gyártási állapot" -#: build/models.py:291 +#: build/models.py:293 msgid "Build status code" msgstr "Gyártás státusz kód" -#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 -#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 +#: build/models.py:302 build/serializers.py:286 order/serializers.py:580 +#: stock/models.py:838 stock/serializers.py:74 stock/serializers.py:1458 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Batch kód" -#: build/models.py:304 build/serializers.py:288 +#: build/models.py:306 build/serializers.py:287 msgid "Batch code for this build output" msgstr "Batch kód a gyártás kimenetéhez" -#: build/models.py:307 order/models.py:316 order/serializers.py:120 -#: part/models.py:1122 part/templates/part/part_base.html:310 +#: build/models.py:309 order/models.py:316 order/serializers.py:119 +#: part/models.py:1115 part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:338 #: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "Létrehozás dátuma" -#: build/models.py:311 +#: build/models.py:313 msgid "Target completion date" msgstr "Befejezés cél dátuma" -#: build/models.py:312 +#: build/models.py:314 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:315 order/models.py:521 order/models.py:2101 +#: build/models.py:317 order/models.py:521 order/models.py:2065 #: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "Befejezés dátuma" -#: build/models.py:321 +#: build/models.py:323 msgid "completed by" msgstr "elkészítette" -#: build/models.py:329 templates/js/translated/build.js:2207 +#: build/models.py:331 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "Indította" -#: build/models.py:330 +#: build/models.py:332 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:338 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:145 +#: build/models.py:340 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:147 #: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:232 part/models.py:1139 +#: order/templates/order/sales_order_base.html:232 part/models.py:1132 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_report.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 @@ -1019,31 +927,36 @@ msgstr "Felhasználó aki ezt a gyártási utasítást kiállította" msgid "Responsible" msgstr "Felelős" -#: build/models.py:339 +#: build/models.py:341 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:344 build/templates/build/detail.html:108 +#: build/models.py:346 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:184 -#: part/templates/part/part_base.html:383 stock/models.py:836 +#: part/templates/part/part_base.html:383 stock/models.py:834 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "Külső link" -#: build/models.py:349 +#: build/models.py:347 common/models.py:3178 part/models.py:956 +#: stock/models.py:834 +msgid "Link to external URL" +msgstr "Link külső URL-re" + +#: build/models.py:351 msgid "Build Priority" msgstr "Priorítás" -#: build/models.py:352 +#: build/models.py:354 msgid "Priority of this build order" msgstr "Gyártási utasítás priorítása" -#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: build/models.py:361 common/models.py:131 order/admin.py:18 #: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 #: templates/js/translated/build.js:2144 #: templates/js/translated/purchase_order.js:1710 @@ -1054,65 +967,65 @@ msgstr "Gyártási utasítás priorítása" msgid "Project Code" msgstr "Projektszám" -#: build/models.py:360 +#: build/models.py:362 msgid "Project code for this build order" msgstr "Projekt kód a gyártáshoz" -#: build/models.py:593 build/models.py:658 +#: build/models.py:595 build/models.py:660 msgid "Failed to offload task to complete build allocations" msgstr "A gyártási foglalások teljesítése háttérfeladat elvégzése nem sikerült" -#: build/models.py:615 +#: build/models.py:617 #, 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:621 +#: build/models.py:623 msgid "A build order has been completed" msgstr "Gyártási utasítás elkészült" -#: build/models.py:847 build/models.py:932 +#: build/models.py:849 build/models.py:934 msgid "No build output specified" msgstr "Nincs gyártási kimenet megadva" -#: build/models.py:850 +#: build/models.py:852 msgid "Build output is already completed" msgstr "Gyártási kimenet már kész" -#: build/models.py:853 +#: build/models.py:855 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:936 build/serializers.py:220 build/serializers.py:269 -#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 -#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 -#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 +#: build/models.py:938 build/serializers.py:219 build/serializers.py:268 +#: build/serializers.py:866 order/models.py:559 order/serializers.py:432 +#: order/serializers.py:575 part/serializers.py:1484 part/serializers.py:1884 +#: stock/models.py:677 stock/models.py:1495 stock/serializers.py:603 msgid "Quantity must be greater than zero" msgstr "Mennyiségnek nullánál többnek kell lennie" -#: build/models.py:941 build/serializers.py:225 +#: build/models.py:943 build/serializers.py:224 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:1001 build/serializers.py:548 +#: build/models.py:1003 build/serializers.py:547 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "A {serial} gyártási kimenet nem felelt meg az összes kötelező teszten" -#: build/models.py:1352 +#: build/models.py:1344 msgid "Build Order Line Item" msgstr "" -#: build/models.py:1377 +#: build/models.py:1369 msgid "Build object" msgstr "Gyártás objektum" -#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 -#: build/serializers.py:254 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2539 -#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 -#: part/forms.py:48 part/models.py:3205 part/models.py:4078 +#: build/models.py:1383 build/models.py:1639 build/serializers.py:206 +#: build/serializers.py:253 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2509 +#: order/models.py:1272 order/models.py:1931 order/serializers.py:1327 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3170 part/models.py:4058 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1121,8 +1034,8 @@ msgstr "Gyártás objektum" #: report/templates/report/inventree_sales_order_report.html:29 #: report/templates/report/inventree_stock_location_report.html:104 #: report/templates/report/inventree_test_report.html:90 -#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 -#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:125 stock/serializers.py:165 stock/serializers.py:594 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1133,8 +1046,8 @@ msgstr "Gyártás objektum" #: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 #: templates/js/translated/model_renderers.js:236 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:962 +#: templates/js/translated/part.js:1812 templates/js/translated/part.js:3342 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1154,38 +1067,38 @@ msgstr "Gyártás objektum" msgid "Quantity" msgstr "Mennyiség" -#: build/models.py:1392 +#: build/models.py:1384 msgid "Required quantity for build order" msgstr "Gyártáshoz szükséges mennyiség" -#: build/models.py:1472 +#: build/models.py:1464 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:1481 +#: build/models.py:1473 #, 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:1491 order/models.py:1918 +#: build/models.py:1483 order/models.py:1882 msgid "Stock item is over-allocated" msgstr "Készlet túlfoglalva" -#: build/models.py:1497 order/models.py:1921 +#: build/models.py:1489 order/models.py:1885 msgid "Allocation quantity must be greater than zero" msgstr "Lefoglalt mennyiségnek nullánál többnek kell lennie" -#: build/models.py:1503 +#: build/models.py:1495 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:1562 +#: build/models.py:1554 msgid "Selected stock item does not match BOM line" msgstr "A készlet tétel nem egyezik az alkatrészjegyzékkel" -#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 -#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 -#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: build/models.py:1626 build/serializers.py:846 order/serializers.py:1171 +#: order/serializers.py:1192 stock/models.py:358 stock/serializers.py:91 +#: stock/serializers.py:697 stock/serializers.py:1177 stock/serializers.py:1289 #: stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 @@ -1201,70 +1114,70 @@ msgstr "A készlet tétel nem egyezik az alkatrészjegyzékkel" msgid "Stock Item" msgstr "Készlet tétel" -#: build/models.py:1635 +#: build/models.py:1627 msgid "Source stock item" msgstr "Forrás készlet tétel" -#: build/models.py:1648 +#: build/models.py:1640 msgid "Stock quantity to allocate to build" msgstr "Készlet mennyiség amit foglaljunk a gyártáshoz" -#: build/models.py:1656 +#: build/models.py:1648 msgid "Install into" msgstr "Beépítés ebbe" -#: build/models.py:1657 +#: build/models.py:1649 msgid "Destination stock item" msgstr "Cél készlet tétel" -#: build/serializers.py:157 build/serializers.py:876 +#: build/serializers.py:156 build/serializers.py:875 #: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "Gyártás kimenet" -#: build/serializers.py:169 +#: build/serializers.py:168 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:173 +#: build/serializers.py:172 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:177 +#: build/serializers.py:176 msgid "This build output has already been completed" msgstr "Ez a gyártási kimenet már elkészült" -#: build/serializers.py:188 +#: build/serializers.py:187 msgid "This build output is not fully allocated" msgstr "Ez a gyártási kimenet nincs teljesen lefoglalva" -#: build/serializers.py:208 build/serializers.py:255 +#: build/serializers.py:207 build/serializers.py:254 msgid "Enter quantity for build output" msgstr "Add meg a mennyiséget a gyártás kimenetéhez" -#: build/serializers.py:276 +#: build/serializers.py:275 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:279 +#: build/serializers.py:278 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:294 order/serializers.py:589 order/serializers.py:1343 -#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:293 order/serializers.py:588 order/serializers.py:1331 +#: stock/serializers.py:614 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Sorozatszámok" -#: build/serializers.py:295 +#: build/serializers.py:294 msgid "Enter serial numbers for build outputs" msgstr "Add meg a sorozatszámokat a gyártás kimenetéhez" -#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 -#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 -#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 -#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 -#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 +#: build/serializers.py:299 build/serializers.py:440 build/serializers.py:512 +#: order/serializers.py:564 order/serializers.py:672 order/serializers.py:1656 +#: part/serializers.py:1140 stock/serializers.py:100 stock/serializers.py:625 +#: stock/serializers.py:785 stock/serializers.py:881 stock/serializers.py:1321 +#: stock/serializers.py:1577 stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:1001 #: templates/js/translated/build.js:2372 @@ -1280,54 +1193,54 @@ msgstr "Add meg a sorozatszámokat a gyártás kimenetéhez" msgid "Location" msgstr "Hely" -#: build/serializers.py:301 +#: build/serializers.py:300 msgid "Stock location for build output" msgstr "Legyártott készlet helye" -#: build/serializers.py:315 +#: build/serializers.py:314 msgid "Auto Allocate Serial Numbers" msgstr "Sorozatszámok automatikus hozzárendelése" -#: build/serializers.py:316 +#: build/serializers.py:315 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:331 +#: build/serializers.py:330 msgid "Serial numbers must be provided for trackable parts" msgstr "Egyedi követésre jelölt alkatrészeknél kötelező sorozatszámot megadni" -#: build/serializers.py:356 stock/api.py:1031 +#: build/serializers.py:355 stock/api.py:1041 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:403 build/serializers.py:465 build/serializers.py:554 +#: build/serializers.py:402 build/serializers.py:464 build/serializers.py:553 msgid "A list of build outputs must be provided" msgstr "A gyártási kimenetek listáját meg kell adni" -#: build/serializers.py:442 +#: build/serializers.py:441 msgid "Stock location for scrapped outputs" msgstr "Selejtezet gyártási kimenetek helye" -#: build/serializers.py:448 +#: build/serializers.py:447 msgid "Discard Allocations" msgstr "Foglalások törlése" -#: build/serializers.py:449 +#: build/serializers.py:448 msgid "Discard any stock allocations for scrapped outputs" msgstr "Selejtezett kimenetek foglalásainak felszabadítása" -#: build/serializers.py:454 +#: build/serializers.py:453 msgid "Reason for scrapping build output(s)" msgstr "Selejtezés oka" -#: build/serializers.py:514 +#: build/serializers.py:513 msgid "Location for completed build outputs" msgstr "A kész gyártási kimenetek helye" -#: build/serializers.py:520 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:952 -#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 -#: stock/serializers.py:930 stock/serializers.py:1469 +#: build/serializers.py:519 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2044 order/serializers.py:596 stock/admin.py:164 +#: stock/serializers.py:932 stock/serializers.py:1465 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 @@ -1339,190 +1252,189 @@ msgstr "A kész gyártási kimenetek helye" msgid "Status" msgstr "Állapot" -#: build/serializers.py:526 +#: build/serializers.py:525 msgid "Accept Incomplete Allocation" msgstr "Hiányos foglalás elfogadása" -#: build/serializers.py:527 +#: build/serializers.py:526 msgid "Complete outputs if stock has not been fully allocated" -msgstr "" -"Kimenetek befejezése akkor is ha a készlet nem\n" +msgstr "Kimenetek befejezése akkor is ha a készlet nem\n" "lett teljesen lefoglalva" -#: build/serializers.py:612 +#: build/serializers.py:611 msgid "Consume Allocated Stock" msgstr "Lefoglalt készlet felhasználása" -#: build/serializers.py:613 +#: build/serializers.py:612 msgid "Consume any stock which has already been allocated to this build" msgstr "Az összes ehhez a gyártáshoz lefoglalt készlet felhasználása" -#: build/serializers.py:619 +#: build/serializers.py:618 msgid "Remove Incomplete Outputs" msgstr "Befejezetlen kimenetek törlése" -#: build/serializers.py:620 +#: build/serializers.py:619 msgid "Delete any build outputs which have not been completed" msgstr "A nem befejezett gyártási kimenetek törlése" -#: build/serializers.py:647 +#: build/serializers.py:646 msgid "Not permitted" msgstr "Nem engedélyezett" -#: build/serializers.py:648 +#: build/serializers.py:647 msgid "Accept as consumed by this build order" msgstr "Gyártásban fel lett használva" -#: build/serializers.py:649 +#: build/serializers.py:648 msgid "Deallocate before completing this build order" msgstr "Foglalás felszabadítása a készre jelentés előtt" -#: build/serializers.py:679 +#: build/serializers.py:678 msgid "Overallocated Stock" msgstr "Túlfoglalt készlet" -#: build/serializers.py:681 +#: build/serializers.py:680 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:691 +#: build/serializers.py:690 msgid "Some stock items have been overallocated" msgstr "Pár készlet tétel túl lett foglalva" -#: build/serializers.py:696 +#: build/serializers.py:695 msgid "Accept Unallocated" msgstr "Kiosztatlanok elfogadása" -#: build/serializers.py:697 +#: build/serializers.py:696 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:707 templates/js/translated/build.js:315 +#: build/serializers.py:706 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:712 order/serializers.py:301 order/serializers.py:1246 +#: build/serializers.py:711 order/serializers.py:300 order/serializers.py:1234 msgid "Accept Incomplete" msgstr "Befejezetlenek elfogadása" -#: build/serializers.py:713 +#: build/serializers.py:712 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:723 templates/js/translated/build.js:319 +#: build/serializers.py:722 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:732 templates/js/translated/build.js:303 +#: build/serializers.py:731 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:770 +#: build/serializers.py:769 msgid "Build Line" msgstr "Gyártás sor" -#: build/serializers.py:780 +#: build/serializers.py:779 msgid "Build output" msgstr "Gyártás kimenet" -#: build/serializers.py:788 +#: build/serializers.py:787 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:824 +#: build/serializers.py:823 msgid "Build Line Item" msgstr "Gyártás sor tétel" -#: build/serializers.py:838 +#: build/serializers.py:837 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:853 stock/serializers.py:1194 +#: build/serializers.py:852 stock/serializers.py:1190 msgid "Item must be in stock" msgstr "A tételnek kell legyen készlete" -#: build/serializers.py:901 order/serializers.py:1237 +#: build/serializers.py:900 order/serializers.py:1225 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Rendelkezésre álló mennyiség ({q}) túllépve" -#: build/serializers.py:907 +#: build/serializers.py:906 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:914 +#: build/serializers.py:913 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:938 order/serializers.py:1489 +#: build/serializers.py:937 order/serializers.py:1477 msgid "Allocation items must be provided" msgstr "A lefoglalandó tételeket meg kell adni" -#: build/serializers.py:1001 +#: build/serializers.py:1000 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:1009 +#: build/serializers.py:1008 msgid "Exclude Location" msgstr "Hely kizárása" -#: build/serializers.py:1010 +#: build/serializers.py:1009 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:1015 +#: build/serializers.py:1014 msgid "Interchangeable Stock" msgstr "Felcserélhető készlet" -#: build/serializers.py:1016 +#: build/serializers.py:1015 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:1021 +#: build/serializers.py:1020 msgid "Substitute Stock" msgstr "Készlet helyettesítés" -#: build/serializers.py:1022 +#: build/serializers.py:1021 msgid "Allow allocation of substitute parts" msgstr "Helyettesítő alkatrészek foglalásának engedélyezése" -#: build/serializers.py:1027 +#: build/serializers.py:1026 msgid "Optional Items" msgstr "Opcionális tételek" -#: build/serializers.py:1028 +#: build/serializers.py:1027 msgid "Allocate optional BOM items to build order" msgstr "Opcionális tételek lefoglalása a gyártáshoz" -#: build/serializers.py:1050 +#: build/serializers.py:1049 msgid "Failed to start auto-allocation task" msgstr "Nem sikerült az automatikus lefoglalás feladatot elindítani" -#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 -#: stock/api.py:794 +#: build/serializers.py:1139 part/models.py:3953 part/models.py:4387 +#: stock/api.py:804 msgid "BOM Item" msgstr "Alkatrészjegyzék tétel" -#: build/serializers.py:1149 templates/js/translated/index.js:130 +#: build/serializers.py:1148 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "Lefoglalt készlet" -#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:832 part/serializers.py:1506 +#: build/serializers.py:1153 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:828 part/serializers.py:1502 #: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 -#: templates/js/translated/build.js:2613 templates/js/translated/part.js:709 -#: templates/js/translated/part.js:2148 +#: templates/js/translated/build.js:2613 templates/js/translated/part.js:710 +#: templates/js/translated/part.js:2149 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "Rendelve" -#: build/serializers.py:1159 part/serializers.py:1508 +#: build/serializers.py:1158 part/serializers.py:1504 #: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "Gyártásban" -#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 +#: build/serializers.py:1163 part/bom.py:172 part/serializers.py:1527 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1929 msgid "Available Stock" @@ -1546,7 +1458,7 @@ msgstr "Törölve" #: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 #: order/status_codes.py:44 order/status_codes.py:69 #: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:165 report/models.py:443 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 msgid "Complete" msgstr "Kész" @@ -1676,11 +1588,11 @@ 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:309 -#: order/models.py:1343 order/templates/order/order_base.html:186 +#: order/models.py:1307 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:196 #: report/templates/report/inventree_build_order_report.html:125 -#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1831 #: templates/js/translated/purchase_order.js:1739 #: templates/js/translated/purchase_order.js:2147 #: templates/js/translated/return_order.js:346 @@ -1713,8 +1625,8 @@ msgid "Completed Outputs" msgstr "Befejezett kimenetek" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 -#: order/models.py:1587 order/models.py:1701 order/models.py:1855 +#: build/templates/build/detail.html:101 order/api.py:1463 order/models.py:845 +#: order/models.py:1551 order/models.py:1665 order/models.py:1819 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_report.html:135 @@ -1764,7 +1676,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:1479 +#: build/templates/build/detail.html:49 order/models.py:1443 #: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "Cél" @@ -1777,7 +1689,7 @@ msgstr "A cél hely nincs megadva" msgid "Allocated Parts" msgstr "Lefoglalt alkatrészek" -#: build/templates/build/detail.html:80 stock/admin.py:163 +#: build/templates/build/detail.html:80 stock/admin.py:162 #: stock/templates/stock/item_base.html:162 #: templates/js/translated/build.js:1380 #: templates/js/translated/model_renderers.js:241 @@ -1896,11 +1808,11 @@ msgstr "Mellékletek" msgid "Build Notes" msgstr "Gyártási megjegyzések" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "Lefoglalás kész" -#: build/templates/build/detail.html:436 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "Minden sor rendben lefoglalva" @@ -1916,6 +1828,34 @@ msgstr "Gyártási utasítás részletei" msgid "Incomplete Outputs" msgstr "Befejezetlen kimenetek" +#: common/api.py:689 +msgid "Is Link" +msgstr "" + +#: common/api.py:697 +msgid "Is File" +msgstr "" + +#: common/api.py:739 +msgid "User does not have permission to delete this attachment" +msgstr "" + +#: common/currency.py:130 +msgid "Invalid currency code" +msgstr "" + +#: common/currency.py:132 +msgid "Duplicate currency code" +msgstr "" + +#: common/currency.py:137 +msgid "No valid currency codes provided" +msgstr "" + +#: common/currency.py:154 +msgid "No plugin" +msgstr "Nincsen plugin" + #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1954,1509 +1894,1512 @@ msgstr "{name.title()} Fájl" msgid "Select {name} file to upload" msgstr "{name} fájl kiválasztása feltöltéshez" -#: common/models.py:71 +#: common/models.py:73 msgid "Updated" msgstr "Frissítve" -#: common/models.py:72 +#: common/models.py:74 msgid "Timestamp of last update" msgstr "Legutóbbi frissítés időpontja" -#: common/models.py:105 +#: common/models.py:107 msgid "Site URL is locked by configuration" msgstr "A site URL blokkolva van a konfigurációban" -#: common/models.py:130 +#: common/models.py:132 msgid "Unique project code" msgstr "Egyedi projektszám" -#: common/models.py:137 +#: common/models.py:139 msgid "Project description" msgstr "Projekt leírása" -#: common/models.py:146 +#: common/models.py:148 msgid "User or group responsible for this project" msgstr "A projektért felelős felhasználó vagy csoport" -#: common/models.py:766 +#: common/models.py:765 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:770 +#: common/models.py:769 msgid "Settings value" msgstr "Beállítás értéke" -#: common/models.py:822 +#: common/models.py:821 msgid "Chosen value is not a valid option" msgstr "A kiválasztott érték nem egy érvényes lehetőség" -#: common/models.py:838 +#: common/models.py:837 msgid "Value must be a boolean value" msgstr "Az érték bináris kell legyen" -#: common/models.py:846 +#: common/models.py:845 msgid "Value must be an integer value" msgstr "Az érték egész szám kell legyen" -#: common/models.py:883 +#: common/models.py:882 msgid "Key string must be unique" msgstr "Kulcs string egyedi kell legyen" -#: common/models.py:1115 +#: common/models.py:1114 msgid "No group" msgstr "Nincs csoport" -#: common/models.py:1158 -msgid "An empty domain is not allowed." -msgstr "Üres domain nem engedélyezett." - -#: common/models.py:1160 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "Érvénytelen domain név: {domain}" - -#: common/models.py:1172 -msgid "No plugin" -msgstr "Nincsen plugin" - -#: common/models.py:1260 +#: common/models.py:1213 msgid "Restart required" msgstr "Újraindítás szükséges" -#: common/models.py:1262 +#: common/models.py:1215 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:1269 +#: common/models.py:1222 msgid "Pending migrations" msgstr "Függőben levő migrációk" -#: common/models.py:1270 +#: common/models.py:1223 msgid "Number of pending database migrations" msgstr "Függőben levő adatbázis migrációk" -#: common/models.py:1275 +#: common/models.py:1228 msgid "Server Instance Name" msgstr "Kiszolgáló példány neve" -#: common/models.py:1277 +#: common/models.py:1230 msgid "String descriptor for the server instance" msgstr "String leíró a kiszolgáló példányhoz" -#: common/models.py:1281 +#: common/models.py:1234 msgid "Use instance name" msgstr "Példány név használata" -#: common/models.py:1282 +#: common/models.py:1235 msgid "Use the instance name in the title-bar" msgstr "Példány név használata a címsorban" -#: common/models.py:1287 +#: common/models.py:1240 msgid "Restrict showing `about`" msgstr "Verzió infók megjelenítésének tiltása" -#: common/models.py:1288 +#: common/models.py:1241 msgid "Show the `about` modal only to superusers" msgstr "Verzió infók megjelenítése csak admin felhasználóknak" -#: common/models.py:1293 company/models.py:108 company/models.py:109 +#: common/models.py:1246 company/models.py:111 company/models.py:112 msgid "Company name" msgstr "Cég neve" -#: common/models.py:1294 +#: common/models.py:1247 msgid "Internal company name" msgstr "Belső cégnév" -#: common/models.py:1298 +#: common/models.py:1251 msgid "Base URL" msgstr "Kiindulási URL" -#: common/models.py:1299 +#: common/models.py:1252 msgid "Base URL for server instance" msgstr "Kiindulási URL a kiszolgáló példányhoz" -#: common/models.py:1305 +#: common/models.py:1258 msgid "Default Currency" msgstr "Alapértelmezett pénznem" -#: common/models.py:1306 +#: common/models.py:1259 msgid "Select base currency for pricing calculations" msgstr "Válassz alap pénznemet az ár számításokhoz" -#: common/models.py:1312 +#: common/models.py:1265 +msgid "Supported Currencies" +msgstr "" + +#: common/models.py:1266 +msgid "List of supported currency codes" +msgstr "" + +#: common/models.py:1272 msgid "Currency Update Interval" msgstr "Árfolyam frissítési gyakoriság" -#: common/models.py:1314 +#: common/models.py:1274 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:1317 common/models.py:1373 common/models.py:1386 -#: common/models.py:1394 common/models.py:1403 common/models.py:1412 -#: common/models.py:1620 common/models.py:1642 common/models.py:1757 -#: common/models.py:2076 +#: common/models.py:1277 common/models.py:1333 common/models.py:1346 +#: common/models.py:1354 common/models.py:1363 common/models.py:1372 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:2046 msgid "days" msgstr "nap" -#: common/models.py:1321 +#: common/models.py:1281 msgid "Currency Update Plugin" msgstr "Árfolyam frissítő plugin" -#: common/models.py:1322 +#: common/models.py:1282 msgid "Currency update plugin to use" msgstr "Kiválasztott árfolyam frissítő plugin" -#: common/models.py:1327 +#: common/models.py:1287 msgid "Download from URL" msgstr "Letöltés URL-ről" -#: common/models.py:1329 +#: common/models.py:1289 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:1335 +#: common/models.py:1295 msgid "Download Size Limit" msgstr "Letöltési méret korlát" -#: common/models.py:1336 +#: common/models.py:1296 msgid "Maximum allowable download size for remote image" msgstr "Maximum megengedett letöltési mérete a távoli képeknek" -#: common/models.py:1342 +#: common/models.py:1302 msgid "User-agent used to download from URL" msgstr "Felhasznált User-agent az URL-ről letöltéshez" -#: common/models.py:1344 +#: common/models.py:1304 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:1349 +#: common/models.py:1309 msgid "Strict URL Validation" msgstr "Erős URL validáció" -#: common/models.py:1350 +#: common/models.py:1310 msgid "Require schema specification when validating URLs" msgstr "Sablon specifikáció igénylése az URL validálásnál" -#: common/models.py:1355 +#: common/models.py:1315 msgid "Require confirm" msgstr "Megerősítés igénylése" -#: common/models.py:1356 +#: common/models.py:1316 msgid "Require explicit user confirmation for certain action." msgstr "Kérjen felhasználói megerősítést bizonyos műveletekhez" -#: common/models.py:1361 +#: common/models.py:1321 msgid "Tree Depth" msgstr "Fa mélység" -#: common/models.py:1363 +#: common/models.py:1323 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:1369 +#: common/models.py:1329 msgid "Update Check Interval" msgstr "Frissítés keresés gyakorisága" -#: common/models.py:1370 +#: common/models.py:1330 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:1376 +#: common/models.py:1336 msgid "Automatic Backup" msgstr "Automatikus biztonsági mentés" -#: common/models.py:1377 +#: common/models.py:1337 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:1382 +#: common/models.py:1342 msgid "Auto Backup Interval" msgstr "Automata biztonsági mentés gyakorisága" -#: common/models.py:1383 +#: common/models.py:1343 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:1389 +#: common/models.py:1349 msgid "Task Deletion Interval" msgstr "Feladat törlési gyakoriság" -#: common/models.py:1391 +#: common/models.py:1351 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:1398 +#: common/models.py:1358 msgid "Error Log Deletion Interval" msgstr "Hibanapló törlési gyakoriság" -#: common/models.py:1400 +#: common/models.py:1360 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:1407 +#: common/models.py:1367 msgid "Notification Deletion Interval" msgstr "Értesítés törlési gyakoriság" -#: common/models.py:1409 +#: common/models.py:1369 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:1416 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1376 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Vonalkód támogatás" -#: common/models.py:1417 +#: common/models.py:1377 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:1422 +#: common/models.py:1382 msgid "Barcode Input Delay" msgstr "Vonalkód beadási késleltetés" -#: common/models.py:1423 +#: common/models.py:1383 msgid "Barcode input processing delay time" msgstr "Vonalkód beadáskor a feldolgozás késleltetési ideje" -#: common/models.py:1429 +#: common/models.py:1389 msgid "Barcode Webcam Support" msgstr "Webkamerás vonalkód olvasás" -#: common/models.py:1430 +#: common/models.py:1390 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:1435 +#: common/models.py:1395 msgid "Part Revisions" msgstr "Alkatrész változatok" -#: common/models.py:1436 +#: common/models.py:1396 msgid "Enable revision field for Part" msgstr "Alkatrész változat vagy verziószám tulajdonság használata" -#: common/models.py:1441 +#: common/models.py:1401 msgid "Allow Deletion from Assembly" msgstr "" -#: common/models.py:1442 +#: common/models.py:1402 msgid "Allow deletion of parts which are used in an assembly" msgstr "" -#: common/models.py:1447 +#: common/models.py:1407 msgid "IPN Regex" msgstr "IPN reguláris kifejezés" -#: common/models.py:1448 +#: common/models.py:1408 msgid "Regular expression pattern for matching Part IPN" msgstr "Reguláris kifejezés ami illeszkedik az alkatrész IPN-re" -#: common/models.py:1451 +#: common/models.py:1411 msgid "Allow Duplicate IPN" msgstr "Többször is előforduló IPN engedélyezése" -#: common/models.py:1452 +#: common/models.py:1412 msgid "Allow multiple parts to share the same IPN" msgstr "Azonos IPN használható legyen több alkatrészre is" -#: common/models.py:1457 +#: common/models.py:1417 msgid "Allow Editing IPN" msgstr "IPN szerkesztésének engedélyezése" -#: common/models.py:1458 +#: common/models.py:1418 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:1463 +#: common/models.py:1423 msgid "Copy Part BOM Data" msgstr "Alkatrészjegyzék adatok másolása" -#: common/models.py:1464 +#: common/models.py:1424 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:1469 +#: common/models.py:1429 msgid "Copy Part Parameter Data" msgstr "Alkatrész paraméterek másolása" -#: common/models.py:1470 +#: common/models.py:1430 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:1475 +#: common/models.py:1435 msgid "Copy Part Test Data" msgstr "Alkatrész teszt adatok másolása" -#: common/models.py:1476 +#: common/models.py:1436 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:1481 +#: common/models.py:1441 msgid "Copy Category Parameter Templates" msgstr "Kategória paraméter sablonok másolása" -#: common/models.py:1482 +#: common/models.py:1442 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:1487 part/admin.py:108 part/models.py:3815 -#: report/models.py:293 report/models.py:360 report/serializers.py:90 -#: report/serializers.py:131 stock/serializers.py:228 +#: common/models.py:1447 part/admin.py:108 part/models.py:3795 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:227 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "Sablon" -#: common/models.py:1488 +#: common/models.py:1448 msgid "Parts are templates by default" msgstr "Alkatrészek alapból sablon alkatrészek legyenek" -#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 +#: common/models.py:1453 part/admin.py:91 part/admin.py:425 part/models.py:1052 #: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" msgstr "Gyártmány" -#: common/models.py:1494 +#: common/models.py:1454 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:1499 part/admin.py:95 part/models.py:1065 +#: common/models.py:1459 part/admin.py:95 part/models.py:1058 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "Összetevő" -#: common/models.py:1500 +#: common/models.py:1460 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:1505 part/admin.py:100 part/models.py:1077 +#: common/models.py:1465 part/admin.py:100 part/models.py:1070 msgid "Purchaseable" msgstr "Beszerezhető" -#: common/models.py:1506 +#: common/models.py:1466 msgid "Parts are purchaseable by default" msgstr "Alkatrészek alapból beszerezhetők legyenek" -#: common/models.py:1511 part/admin.py:104 part/models.py:1083 +#: common/models.py:1471 part/admin.py:104 part/models.py:1076 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "Értékesíthető" -#: common/models.py:1512 +#: common/models.py:1472 msgid "Parts are salable by default" msgstr "Alkatrészek alapból eladhatók legyenek" -#: common/models.py:1517 part/admin.py:113 part/models.py:1071 +#: common/models.py:1477 part/admin.py:113 part/models.py:1064 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" msgstr "Követésre kötelezett" -#: common/models.py:1518 +#: common/models.py:1478 msgid "Parts are trackable by default" msgstr "Alkatrészek alapból követésre kötelezettek legyenek" -#: common/models.py:1523 part/admin.py:117 part/models.py:1093 +#: common/models.py:1483 part/admin.py:117 part/models.py:1086 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" msgstr "Virtuális" -#: common/models.py:1524 +#: common/models.py:1484 msgid "Parts are virtual by default" msgstr "Alkatrészek alapból virtuálisak legyenek" -#: common/models.py:1529 +#: common/models.py:1489 msgid "Show Import in Views" msgstr "Importálás megjelenítése a nézetekben" -#: common/models.py:1530 +#: common/models.py:1490 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:1535 +#: common/models.py:1495 msgid "Show related parts" msgstr "Kapcsolódó alkatrészek megjelenítése" -#: common/models.py:1536 +#: common/models.py:1496 msgid "Display related parts for a part" msgstr "Alkatrész kapcsolódó alkatrészeinek megjelenítése" -#: common/models.py:1541 +#: common/models.py:1501 msgid "Initial Stock Data" msgstr "Kezdeti készlet adatok" -#: common/models.py:1542 +#: common/models.py:1502 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:1547 templates/js/translated/part.js:107 +#: common/models.py:1507 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Kezdeti beszállítói adatok" -#: common/models.py:1549 +#: common/models.py:1509 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:1555 +#: common/models.py:1515 msgid "Part Name Display Format" msgstr "Alkatrész név megjelenítés formátuma" -#: common/models.py:1556 +#: common/models.py:1516 msgid "Format to display the part name" msgstr "Formátum az alkatrész név megjelenítéséhez" -#: common/models.py:1562 +#: common/models.py:1522 msgid "Part Category Default Icon" msgstr "Alkatrész kategória alapértelmezett ikon" -#: common/models.py:1563 +#: common/models.py:1523 msgid "Part category default icon (empty means no icon)" msgstr "Alkatrész kategória alapértelmezett ikon (üres ha nincs)" -#: common/models.py:1567 +#: common/models.py:1527 msgid "Enforce Parameter Units" msgstr "Csak választható mértékegységek" -#: common/models.py:1569 +#: common/models.py:1529 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:1575 +#: common/models.py:1535 msgid "Minimum Pricing Decimal Places" msgstr "Áraknál használt tizedesjegyek min. száma" -#: common/models.py:1577 +#: common/models.py:1537 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:1583 +#: common/models.py:1548 msgid "Maximum Pricing Decimal Places" msgstr "Áraknál használt tizedesjegyek max. száma" -#: common/models.py:1585 +#: common/models.py:1550 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:1591 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "Beszállítói árazás használata" -#: common/models.py:1593 +#: common/models.py:1563 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:1599 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "Beszerzési előzmények felülbírálása" -#: common/models.py:1601 +#: common/models.py:1571 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:1607 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "Készlet tétel ár használata" -#: common/models.py:1609 +#: common/models.py:1579 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:1615 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "Készlet tétel ár kora" -#: common/models.py:1617 +#: common/models.py:1587 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:1624 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "Alkatrészváltozat árak használata" -#: common/models.py:1625 +#: common/models.py:1595 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:1630 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "Csak az aktív változatokat" -#: common/models.py:1632 +#: common/models.py:1602 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:1638 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "Árazás újraszámítás gyakoriság" -#: common/models.py:1640 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "Árak automatikus frissítése ennyi nap után" -#: common/models.py:1647 +#: common/models.py:1617 msgid "Internal Prices" msgstr "Belső árak" -#: common/models.py:1648 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "Alkatrészekhez belső ár engedélyezése" -#: common/models.py:1653 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "Belső ár felülbírálása" -#: common/models.py:1655 +#: common/models.py:1625 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:1661 +#: common/models.py:1631 msgid "Enable label printing" msgstr "Címke nyomtatás engedélyezése" -#: common/models.py:1662 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "Címke nyomtatás engedélyezése a web felületről" -#: common/models.py:1667 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "Címke kép DPI" -#: common/models.py:1669 +#: common/models.py:1639 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:1675 +#: common/models.py:1645 msgid "Enable Reports" msgstr "Riportok engedélyezése" -#: common/models.py:1676 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "Riportok előállításának engedélyezése" -#: common/models.py:1681 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "Debug mód" -#: common/models.py:1682 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "Riportok előállítása HTML formátumban (hibakereséshez)" -#: common/models.py:1687 +#: common/models.py:1657 msgid "Log Report Errors" msgstr "Jelentési hibák naplózása" -#: common/models.py:1688 +#: common/models.py:1658 msgid "Log errors which occur when generating reports" msgstr "Jelentések generálása közben jelentkező hibák naplózása" -#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:301 +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:302 msgid "Page Size" msgstr "Lapméret" -#: common/models.py:1694 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "Alapértelmezett lapméret a PDF riportokhoz" -#: common/models.py:1699 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "Teszt riportok engedélyezése" -#: common/models.py:1700 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "Teszt riportok előállításának engedélyezése" -#: common/models.py:1705 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "Teszt riportok hozzáadása" -#: common/models.py:1707 +#: common/models.py:1677 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:1713 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "Globálisan egyedi sorozatszámok" -#: common/models.py:1714 +#: common/models.py:1684 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:1719 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "Sorozatszámok automatikus kitöltése" -#: common/models.py:1720 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "Sorozatszámok automatikus kitöltése a formokon" -#: common/models.py:1725 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "Kimerült készlet törlése" -#: common/models.py:1727 +#: common/models.py:1697 msgid "Determines default behavior when a stock item is depleted" msgstr "Alapértelmezett művelet mikor a készlet tétel elfogy" -#: common/models.py:1733 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "Batch kód sablon" -#: common/models.py:1735 +#: common/models.py:1705 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:1740 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "Készlet lejárata" -#: common/models.py:1741 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "Készlet lejárat kezelésének engedélyezése" -#: common/models.py:1746 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "Lejárt készlet értékesítése" -#: common/models.py:1747 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "Lejárt készlet értékesítésének engedélyezése" -#: common/models.py:1752 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "Álló készlet ideje" -#: common/models.py:1754 +#: common/models.py:1724 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:1761 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "Lejárt készlet gyártása" -#: common/models.py:1762 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "Gyártás engedélyezése lejárt készletből" -#: common/models.py:1767 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "Készlet tulajdonosok kezelése" -#: common/models.py:1768 +#: common/models.py:1738 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:1773 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "Hely alapértelmezett ikon" -#: common/models.py:1774 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "Hely alapértelmezett ikon (üres ha nincs)" -#: common/models.py:1778 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "Beépített készlet megjelenítése" -#: common/models.py:1779 +#: common/models.py:1749 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:1784 +#: common/models.py:1754 msgid "Check BOM when installing items" msgstr "Tételek telepítésekor a darabjegyzék ellenőrzése" -#: common/models.py:1786 +#: common/models.py:1756 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "A beépített tételeknek a szülő elem darabjegyzékében szerepelniük kell" -#: common/models.py:1792 +#: common/models.py:1762 msgid "Allow Out of Stock Transfer" msgstr "" -#: common/models.py:1794 +#: common/models.py:1764 msgid "Allow stock items which are not in stock to be transferred between stock locations" msgstr "" -#: common/models.py:1800 +#: common/models.py:1770 msgid "Build Order Reference Pattern" msgstr "Gyártási utasítás azonosító minta" -#: common/models.py:1802 +#: common/models.py:1772 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:1808 common/models.py:1836 common/models.py:1858 -#: common/models.py:1894 +#: common/models.py:1778 common/models.py:1806 common/models.py:1828 +#: common/models.py:1864 msgid "Require Responsible Owner" msgstr "Felelős tulajdonos szükséges" -#: common/models.py:1809 common/models.py:1837 common/models.py:1859 -#: common/models.py:1895 +#: common/models.py:1779 common/models.py:1807 common/models.py:1829 +#: common/models.py:1865 msgid "A responsible owner must be assigned to each order" msgstr "Minden rendeléshez felelőst kell rendelni" -#: common/models.py:1814 +#: common/models.py:1784 msgid "Block Until Tests Pass" msgstr "Blokkolás a tesztek sikeres végrehajtásáig" -#: common/models.py:1816 +#: common/models.py:1786 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "Nem lehet gyártási tételt befejezni amíg valamennyi kötelező teszt sikeres nem lett" -#: common/models.py:1822 +#: common/models.py:1792 msgid "Enable Return Orders" msgstr "Visszavétel engedélyezése" -#: common/models.py:1823 +#: common/models.py:1793 msgid "Enable return order functionality in the user interface" msgstr "Visszavételek engedélyezése a felületen" -#: common/models.py:1828 +#: common/models.py:1798 msgid "Return Order Reference Pattern" msgstr "Visszavétel azonosító minta" -#: common/models.py:1830 +#: common/models.py:1800 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:1842 +#: common/models.py:1812 msgid "Edit Completed Return Orders" msgstr "Befejezett visszavétel szerkesztése" -#: common/models.py:1844 +#: common/models.py:1814 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:1850 +#: common/models.py:1820 msgid "Sales Order Reference Pattern" msgstr "Vevői rendelés azonosító minta" -#: common/models.py:1852 +#: common/models.py:1822 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:1864 +#: common/models.py:1834 msgid "Sales Order Default Shipment" msgstr "Vevői rendeléshez alapértelmezett szállítmány" -#: common/models.py:1865 +#: common/models.py:1835 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:1870 +#: common/models.py:1840 msgid "Edit Completed Sales Orders" msgstr "Befejezett vevői rendelés szerkesztése" -#: common/models.py:1872 +#: common/models.py:1842 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:1878 -#, fuzzy -#| msgid "Mark this order as complete?" +#: common/models.py:1848 msgid "Mark Shipped Orders as Complete" -msgstr "Rendelés befejezettnek jelölése?" +msgstr "" -#: common/models.py:1880 +#: common/models.py:1850 msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" msgstr "" -#: common/models.py:1886 +#: common/models.py:1856 msgid "Purchase Order Reference Pattern" msgstr "Beszerzési rendelés azonosító minta" -#: common/models.py:1888 +#: common/models.py:1858 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:1900 +#: common/models.py:1870 msgid "Edit Completed Purchase Orders" msgstr "Befejezett beszerzési rendelés szerkesztése" -#: common/models.py:1902 +#: common/models.py:1872 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:1908 +#: common/models.py:1878 msgid "Auto Complete Purchase Orders" msgstr "Beszerzési rendelések automatikus befejezése" -#: common/models.py:1910 +#: common/models.py:1880 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "A beszerzési rendelés automatikus befejezése ha minden sortétel beérkezett" -#: common/models.py:1917 +#: common/models.py:1887 msgid "Enable password forgot" msgstr "Elfelejtett jelszó engedélyezése" -#: common/models.py:1918 +#: common/models.py:1888 msgid "Enable password forgot function on the login pages" msgstr "Elfelejtett jelszó funkció engedélyezése a bejentkező oldalon" -#: common/models.py:1923 +#: common/models.py:1893 msgid "Enable registration" msgstr "Regisztráció engedélyezése" -#: common/models.py:1924 +#: common/models.py:1894 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:1929 +#: common/models.py:1899 msgid "Enable SSO" msgstr "SSO engedélyezése" -#: common/models.py:1930 +#: common/models.py:1900 msgid "Enable SSO on the login pages" msgstr "SSO engedélyezése a bejelentkező oldalon" -#: common/models.py:1935 +#: common/models.py:1905 msgid "Enable SSO registration" msgstr "SSO regisztráció engedélyezése" -#: common/models.py:1937 +#: common/models.py:1907 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:1943 +#: common/models.py:1913 msgid "Email required" msgstr "Email szükséges" -#: common/models.py:1944 +#: common/models.py:1914 msgid "Require user to supply mail on signup" msgstr "Kötelező email megadás regisztrációkor" -#: common/models.py:1949 +#: common/models.py:1919 msgid "Auto-fill SSO users" msgstr "SSO felhasználók automatikus kitöltése" -#: common/models.py:1951 +#: common/models.py:1921 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:1957 +#: common/models.py:1927 msgid "Mail twice" msgstr "Email kétszer" -#: common/models.py:1958 +#: common/models.py:1928 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:1963 +#: common/models.py:1933 msgid "Password twice" msgstr "Jelszó kétszer" -#: common/models.py:1964 +#: common/models.py:1934 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:1969 +#: common/models.py:1939 msgid "Allowed domains" msgstr "Engedélyezett domainek" -#: common/models.py:1971 +#: common/models.py:1941 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:1977 +#: common/models.py:1947 msgid "Group on signup" msgstr "Csoport regisztráláskor" -#: common/models.py:1978 +#: common/models.py:1948 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:1983 +#: common/models.py:1953 msgid "Enforce MFA" msgstr "Többfaktoros hitelesítés kényszerítése" -#: common/models.py:1984 +#: common/models.py:1954 msgid "Users must use multifactor security." msgstr "A felhasználóknak többfaktoros hitelesítést kell használniuk." -#: common/models.py:1989 +#: common/models.py:1959 msgid "Check plugins on startup" msgstr "Pluginok ellenőrzése indításkor" -#: common/models.py:1991 +#: common/models.py:1961 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:1999 +#: common/models.py:1969 msgid "Check for plugin updates" msgstr "Plugin frissítések ellenőrzése" -#: common/models.py:2000 +#: common/models.py:1970 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:2006 +#: common/models.py:1976 msgid "Enable URL integration" msgstr "URL integráció engedélyezése" -#: common/models.py:2007 +#: common/models.py:1977 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:2013 +#: common/models.py:1983 msgid "Enable navigation integration" msgstr "Navigációs integráció engedélyezése" -#: common/models.py:2014 +#: common/models.py:1984 msgid "Enable plugins to integrate into navigation" msgstr "Navigációs integráció engedélyezése a pluginok számára" -#: common/models.py:2020 +#: common/models.py:1990 msgid "Enable app integration" msgstr "App integráció engedélyezése" -#: common/models.py:2021 +#: common/models.py:1991 msgid "Enable plugins to add apps" msgstr "App hozzáadásának engedélyezése a pluginok számára" -#: common/models.py:2027 +#: common/models.py:1997 msgid "Enable schedule integration" msgstr "Ütemezés integráció engedélyezése" -#: common/models.py:2028 +#: common/models.py:1998 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:2034 +#: common/models.py:2004 msgid "Enable event integration" msgstr "Esemény integráció engedélyezése" -#: common/models.py:2035 +#: common/models.py:2005 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:2041 +#: common/models.py:2011 msgid "Enable project codes" msgstr "Projektszámok engedélyezése" -#: common/models.py:2042 +#: common/models.py:2012 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:2047 +#: common/models.py:2017 msgid "Stocktake Functionality" msgstr "Leltár funkció" -#: common/models.py:2049 +#: common/models.py:2019 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:2055 +#: common/models.py:2025 msgid "Exclude External Locations" msgstr "Külső helyek nélkül" -#: common/models.py:2057 +#: common/models.py:2027 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:2063 +#: common/models.py:2033 msgid "Automatic Stocktake Period" msgstr "Automatikus leltár időpontja" -#: common/models.py:2065 +#: common/models.py:2035 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:2071 +#: common/models.py:2041 msgid "Report Deletion Interval" msgstr "Riport törlési gyakoriság" -#: common/models.py:2073 +#: common/models.py:2043 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:2080 +#: common/models.py:2050 msgid "Display Users full names" msgstr "Felhasználók teljes nevének megjelenítése" -#: common/models.py:2081 +#: common/models.py:2051 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:2086 +#: common/models.py:2056 msgid "Enable Test Station Data" msgstr "Teszt állomás adatok engedélyezése" -#: common/models.py:2087 +#: common/models.py:2057 msgid "Enable test station data collection for test results" msgstr "Tesztállomás adatok gyűjtésének teszt eredménybe gyűjtésének engedélyezése" -#: common/models.py:2099 common/models.py:2509 +#: common/models.py:2069 common/models.py:2479 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:2142 +#: common/models.py:2112 msgid "Hide inactive parts" msgstr "Inaktív alkatrészek elrejtése" -#: common/models.py:2144 +#: common/models.py:2114 msgid "Hide inactive parts in results displayed on the homepage" msgstr "Nem aktív alkatrészek elrejtése a kezdőlapon" -#: common/models.py:2150 +#: common/models.py:2120 msgid "Show subscribed parts" msgstr "Értesítésre beállított alkatrészek megjelenítése" -#: common/models.py:2151 +#: common/models.py:2121 msgid "Show subscribed parts on the homepage" msgstr "Alkatrész értesítések megjelenítése a főoldalon" -#: common/models.py:2156 +#: common/models.py:2126 msgid "Show subscribed categories" msgstr "Értesítésre beállított kategóriák megjelenítése" -#: common/models.py:2157 +#: common/models.py:2127 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:2162 +#: common/models.py:2132 msgid "Show latest parts" msgstr "Legújabb alkatrészek megjelenítése" -#: common/models.py:2163 +#: common/models.py:2133 msgid "Show latest parts on the homepage" msgstr "Legújabb alkatrészek megjelenítése a főoldalon" -#: common/models.py:2168 +#: common/models.py:2138 msgid "Show invalid BOMs" msgstr "Hibás alkatrészjegyzékek megjelenítése" -#: common/models.py:2169 +#: common/models.py:2139 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:2174 +#: common/models.py:2144 msgid "Show recent stock changes" msgstr "Legfrissebb készlet változások megjelenítése" -#: common/models.py:2175 +#: common/models.py:2145 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:2180 +#: common/models.py:2150 msgid "Show low stock" msgstr "Alacsony készlet megjelenítése" -#: common/models.py:2181 +#: common/models.py:2151 msgid "Show low stock items on the homepage" msgstr "Alacsony készletek megjelenítése a főoldalon" -#: common/models.py:2186 +#: common/models.py:2156 msgid "Show depleted stock" msgstr "Kimerült készlet megjelenítése" -#: common/models.py:2187 +#: common/models.py:2157 msgid "Show depleted stock items on the homepage" msgstr "Kimerült készletek megjelenítése a főoldalon" -#: common/models.py:2192 +#: common/models.py:2162 msgid "Show needed stock" msgstr "Gyártáshoz szükséges készlet megjelenítése" -#: common/models.py:2193 +#: common/models.py:2163 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:2198 +#: common/models.py:2168 msgid "Show expired stock" msgstr "Lejárt készlet megjelenítése" -#: common/models.py:2199 +#: common/models.py:2169 msgid "Show expired stock items on the homepage" msgstr "Lejárt készletek megjelenítése a főoldalon" -#: common/models.py:2204 +#: common/models.py:2174 msgid "Show stale stock" msgstr "Állott készlet megjelenítése" -#: common/models.py:2205 +#: common/models.py:2175 msgid "Show stale stock items on the homepage" msgstr "Álló készletek megjelenítése a főoldalon" -#: common/models.py:2210 +#: common/models.py:2180 msgid "Show pending builds" msgstr "Függő gyártások megjelenítése" -#: common/models.py:2211 +#: common/models.py:2181 msgid "Show pending builds on the homepage" msgstr "Folyamatban lévő gyártások megjelenítése a főoldalon" -#: common/models.py:2216 +#: common/models.py:2186 msgid "Show overdue builds" msgstr "Késésben lévő gyártások megjelenítése" -#: common/models.py:2217 +#: common/models.py:2187 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:2222 +#: common/models.py:2192 msgid "Show outstanding POs" msgstr "Kintlévő beszerzési rendelések megjelenítése" -#: common/models.py:2223 +#: common/models.py:2193 msgid "Show outstanding POs on the homepage" msgstr "Kintlévő beszerzési rendelések megjelenítése a főoldalon" -#: common/models.py:2228 +#: common/models.py:2198 msgid "Show overdue POs" msgstr "Késésben lévő megrendelések megjelenítése" -#: common/models.py:2229 +#: common/models.py:2199 msgid "Show overdue POs on the homepage" msgstr "Késésben lévő megrendelések megjelenítése a főoldalon" -#: common/models.py:2234 +#: common/models.py:2204 msgid "Show outstanding SOs" msgstr "Függő vevői rendelések megjelenítése" -#: common/models.py:2235 +#: common/models.py:2205 msgid "Show outstanding SOs on the homepage" msgstr "Függő vevői rendelések megjelenítése a főoldalon" -#: common/models.py:2240 +#: common/models.py:2210 msgid "Show overdue SOs" msgstr "Késésben lévő vevői rendelések megjelenítése" -#: common/models.py:2241 +#: common/models.py:2211 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:2246 +#: common/models.py:2216 msgid "Show pending SO shipments" msgstr "Függő vevői szállítmányok megjelenítése" -#: common/models.py:2247 +#: common/models.py:2217 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:2252 +#: common/models.py:2222 msgid "Show News" msgstr "Hírek megjelenítése" -#: common/models.py:2253 +#: common/models.py:2223 msgid "Show news on the homepage" msgstr "Hírek megjelenítése a főoldalon" -#: common/models.py:2258 +#: common/models.py:2228 msgid "Inline label display" msgstr "Beágyazott címke megjelenítés" -#: common/models.py:2260 +#: common/models.py:2230 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:2266 +#: common/models.py:2236 msgid "Default label printer" msgstr "Alapértelmezett címkenyomtató" -#: common/models.py:2268 +#: common/models.py:2238 msgid "Configure which label printer should be selected by default" msgstr "Melyik címkenyomtató legyen az alapértelmezett" -#: common/models.py:2274 +#: common/models.py:2244 msgid "Inline report display" msgstr "Beágyazott riport megjelenítés" -#: common/models.py:2276 +#: common/models.py:2246 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:2282 +#: common/models.py:2252 msgid "Search Parts" msgstr "Alkatrészek keresése" -#: common/models.py:2283 +#: common/models.py:2253 msgid "Display parts in search preview window" msgstr "Alkatrészek megjelenítése a keresési előnézetben" -#: common/models.py:2288 +#: common/models.py:2258 msgid "Search Supplier Parts" msgstr "Beszállítói alkatrészek keresése" -#: common/models.py:2289 +#: common/models.py:2259 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:2294 +#: common/models.py:2264 msgid "Search Manufacturer Parts" msgstr "Gyártói alkatrészek keresése" -#: common/models.py:2295 +#: common/models.py:2265 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:2300 +#: common/models.py:2270 msgid "Hide Inactive Parts" msgstr "Inaktív alkatrészek elrejtése" -#: common/models.py:2301 +#: common/models.py:2271 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:2306 +#: common/models.py:2276 msgid "Search Categories" msgstr "Kategóriák keresése" -#: common/models.py:2307 +#: common/models.py:2277 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:2312 +#: common/models.py:2282 msgid "Search Stock" msgstr "Készlet keresése" -#: common/models.py:2313 +#: common/models.py:2283 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:2318 +#: common/models.py:2288 msgid "Hide Unavailable Stock Items" msgstr "Nem elérhető készlet tételek elrejtése" -#: common/models.py:2320 +#: common/models.py:2290 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:2326 +#: common/models.py:2296 msgid "Search Locations" msgstr "Helyek keresése" -#: common/models.py:2327 +#: common/models.py:2297 msgid "Display stock locations in search preview window" msgstr "Készlet helyek megjelenítése a keresési előnézetben" -#: common/models.py:2332 +#: common/models.py:2302 msgid "Search Companies" msgstr "Cégek keresése" -#: common/models.py:2333 +#: common/models.py:2303 msgid "Display companies in search preview window" msgstr "Cégek megjelenítése a keresési előnézetben" -#: common/models.py:2338 +#: common/models.py:2308 msgid "Search Build Orders" msgstr "Gyártási utasítások keresése" -#: common/models.py:2339 +#: common/models.py:2309 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:2344 +#: common/models.py:2314 msgid "Search Purchase Orders" msgstr "Beszerzési rendelések keresése" -#: common/models.py:2345 +#: common/models.py:2315 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:2350 +#: common/models.py:2320 msgid "Exclude Inactive Purchase Orders" msgstr "Inaktív beszerzési rendelések kihagyása" -#: common/models.py:2352 +#: common/models.py:2322 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:2358 +#: common/models.py:2328 msgid "Search Sales Orders" msgstr "Vevői rendelések keresése" -#: common/models.py:2359 +#: common/models.py:2329 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:2364 +#: common/models.py:2334 msgid "Exclude Inactive Sales Orders" msgstr "Inaktív vevői rendelések kihagyása" -#: common/models.py:2366 +#: common/models.py:2336 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:2372 +#: common/models.py:2342 msgid "Search Return Orders" msgstr "Visszavétel keresése" -#: common/models.py:2373 +#: common/models.py:2343 msgid "Display return orders in search preview window" msgstr "Visszavételek megjelenítése a keresés előnézet ablakban" -#: common/models.py:2378 +#: common/models.py:2348 msgid "Exclude Inactive Return Orders" msgstr "Inaktív visszavételek kihagyása" -#: common/models.py:2380 +#: common/models.py:2350 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:2386 +#: common/models.py:2356 msgid "Search Preview Results" msgstr "Keresési előnézet eredményei" -#: common/models.py:2388 +#: common/models.py:2358 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:2394 +#: common/models.py:2364 msgid "Regex Search" msgstr "Regex keresés" -#: common/models.py:2395 +#: common/models.py:2365 msgid "Enable regular expressions in search queries" msgstr "Reguláris kifejezések engedélyezése a keresésekben" -#: common/models.py:2400 +#: common/models.py:2370 msgid "Whole Word Search" msgstr "Teljes szó keresés" -#: common/models.py:2401 +#: common/models.py:2371 msgid "Search queries return results for whole word matches" msgstr "A keresések csak teljes szóra egyező találatokat adjanak" -#: common/models.py:2406 +#: common/models.py:2376 msgid "Show Quantity in Forms" msgstr "Mennyiség megjelenítése a formokon" -#: common/models.py:2407 +#: common/models.py:2377 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:2412 +#: common/models.py:2382 msgid "Escape Key Closes Forms" msgstr "ESC billentyű zárja be a formot" -#: common/models.py:2413 +#: common/models.py:2383 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:2418 +#: common/models.py:2388 msgid "Fixed Navbar" msgstr "Rögzített menüsor" -#: common/models.py:2419 +#: common/models.py:2389 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:2424 +#: common/models.py:2394 msgid "Date Format" msgstr "Dátum formátum" -#: common/models.py:2425 +#: common/models.py:2395 msgid "Preferred format for displaying dates" msgstr "Preferált dátum formátum a dátumok kijelzésekor" -#: common/models.py:2438 part/templates/part/detail.html:41 +#: common/models.py:2408 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Alkatrész ütemezés" -#: common/models.py:2439 +#: common/models.py:2409 msgid "Display part scheduling information" msgstr "Alkatrész ütemezési információk megjelenítése" -#: common/models.py:2444 part/templates/part/detail.html:62 +#: common/models.py:2414 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "Alkatrész leltár" -#: common/models.py:2446 +#: common/models.py:2416 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:2452 +#: common/models.py:2422 msgid "Table String Length" msgstr "Táblázati szöveg hossz" -#: common/models.py:2454 +#: common/models.py:2424 msgid "Maximum length limit for strings displayed in table views" msgstr "Maximális szöveg hossz ami megjelenhet a táblázatokban" -#: common/models.py:2460 +#: common/models.py:2430 msgid "Default part label template" msgstr "Alapértelmezett alkatrész címke sablon" -#: common/models.py:2461 +#: common/models.py:2431 msgid "The part label template to be automatically selected" msgstr "Az alapértelmezetten kiválasztott alkatrész címke sablon" -#: common/models.py:2466 +#: common/models.py:2436 msgid "Default stock item template" msgstr "Alapértelmezett készlet címke sablon" -#: common/models.py:2468 +#: common/models.py:2438 msgid "The stock item label template to be automatically selected" msgstr "Az alapértelmezetten kiválasztott készlet címke sablon" -#: common/models.py:2474 +#: common/models.py:2444 msgid "Default stock location label template" msgstr "Alapértelmezett készlethely címke sablon" -#: common/models.py:2476 +#: common/models.py:2446 msgid "The stock location label template to be automatically selected" msgstr "Az alapértelmezetten kiválasztott készlethely címke sablon" -#: common/models.py:2482 +#: common/models.py:2452 msgid "Default build line label template" msgstr "Alapértelmezett gyártási tétel címke sablon" -#: common/models.py:2484 +#: common/models.py:2454 msgid "The build line label template to be automatically selected" msgstr "Az alapértelmezetten kiválasztott gyártási tétel címke sablon" -#: common/models.py:2490 +#: common/models.py:2460 msgid "Receive error reports" msgstr "Hibariportok fogadása" -#: common/models.py:2491 +#: common/models.py:2461 msgid "Receive notifications for system errors" msgstr "Értesítések fogadása a rendszerhibákról" -#: common/models.py:2496 +#: common/models.py:2466 msgid "Last used printing machines" msgstr "Utoljára használt nyomtató gépek" -#: common/models.py:2497 +#: common/models.py:2467 msgid "Save the last used printing machines for a user" msgstr "Az utoljára használt nyomtató tárolása a felhasználóhoz" -#: common/models.py:2540 +#: common/models.py:2487 common/models.py:2488 common/models.py:2636 +#: common/models.py:2637 common/models.py:2882 common/models.py:2883 +#: common/models.py:3193 common/models.py:3194 part/models.py:3193 +#: part/models.py:3280 part/models.py:3353 part/models.py:3381 +#: plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "Felhasználó" + +#: common/models.py:2510 msgid "Price break quantity" msgstr "Ársáv mennyiség" -#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1382 order/models.py:2301 -#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 +#: common/models.py:2517 company/serializers.py:472 order/admin.py:42 +#: order/models.py:1346 order/models.py:2265 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1886 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:740 msgid "Price" msgstr "Ár" -#: common/models.py:2548 +#: common/models.py:2518 msgid "Unit price at specified quantity" msgstr "Egységár egy meghatározott mennyiség esetén" -#: common/models.py:2719 common/models.py:2904 +#: common/models.py:2613 common/models.py:2798 msgid "Endpoint" msgstr "Végpont" -#: common/models.py:2720 +#: common/models.py:2614 msgid "Endpoint at which this webhook is received" msgstr "Végpont ahol ez a webhook érkezik" -#: common/models.py:2730 +#: common/models.py:2624 msgid "Name for this webhook" msgstr "Webhook neve" -#: common/models.py:2734 company/models.py:160 company/models.py:814 -#: machine/models.py:39 part/admin.py:88 part/models.py:1088 -#: plugin/models.py:65 templates/js/translated/company.js:523 +#: common/models.py:2628 company/models.py:163 company/models.py:782 +#: machine/models.py:39 part/admin.py:88 part/models.py:1081 +#: plugin/models.py:66 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3466,101 +3409,118 @@ msgstr "Webhook neve" msgid "Active" msgstr "Aktív" -#: common/models.py:2734 +#: common/models.py:2628 msgid "Is this webhook active" msgstr "Aktív-e ez a webhook" -#: common/models.py:2750 users/models.py:159 +#: common/models.py:2644 users/models.py:159 msgid "Token" msgstr "Token" -#: common/models.py:2751 +#: common/models.py:2645 msgid "Token for access" msgstr "Token a hozzáféréshez" -#: common/models.py:2759 +#: common/models.py:2653 msgid "Secret" msgstr "Titok" -#: common/models.py:2760 +#: common/models.py:2654 msgid "Shared secret for HMAC" msgstr "Megosztott titok a HMAC-hoz" -#: common/models.py:2868 +#: common/models.py:2762 msgid "Message ID" msgstr "Üzenet azonosító" -#: common/models.py:2869 +#: common/models.py:2763 msgid "Unique identifier for this message" msgstr "Egyedi azonosító ehhez az üzenethez" -#: common/models.py:2877 +#: common/models.py:2771 msgid "Host" msgstr "Kiszolgáló" -#: common/models.py:2878 +#: common/models.py:2772 msgid "Host from which this message was received" msgstr "Kiszolgáló ahonnan ez az üzenet érkezett" -#: common/models.py:2886 +#: common/models.py:2780 msgid "Header" msgstr "Fejléc" -#: common/models.py:2887 +#: common/models.py:2781 msgid "Header of this message" msgstr "Üzenet fejléce" -#: common/models.py:2894 +#: common/models.py:2788 msgid "Body" msgstr "Törzs" -#: common/models.py:2895 +#: common/models.py:2789 msgid "Body of this message" msgstr "Üzenet törzse" -#: common/models.py:2905 +#: common/models.py:2799 msgid "Endpoint on which this message was received" msgstr "Végpont amin ez az üzenet érkezett" -#: common/models.py:2910 +#: common/models.py:2804 msgid "Worked on" msgstr "Dolgozott rajta" -#: common/models.py:2911 +#: common/models.py:2805 msgid "Was the work on this message finished?" msgstr "Befejeződött a munka ezzel az üzenettel?" -#: common/models.py:3037 +#: common/models.py:2931 msgid "Id" msgstr "Azonosító" -#: common/models.py:3039 templates/js/translated/company.js:965 +#: common/models.py:2933 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "Cím" -#: common/models.py:3043 templates/js/translated/news.js:60 +#: common/models.py:2935 common/models.py:3177 company/models.py:149 +#: company/models.py:440 company/models.py:500 company/models.py:799 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +#: part/admin.py:55 part/models.py:955 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "Link" + +#: common/models.py:2937 templates/js/translated/news.js:60 msgid "Published" msgstr "Közzétéve" -#: common/models.py:3045 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2939 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:3047 templates/js/translated/news.js:52 +#: common/models.py:2941 templates/js/translated/news.js:52 msgid "Summary" msgstr "Összefoglaló" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Read" msgstr "Elolvasva" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Was this news item read?" msgstr "Elolvasva?" -#: common/models.py:3067 company/models.py:156 part/models.py:972 +#: common/models.py:2961 company/models.py:159 part/models.py:965 #: 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.html:35 @@ -3570,34 +3530,89 @@ msgstr "Elolvasva?" msgid "Image" msgstr "Kép" -#: common/models.py:3067 +#: common/models.py:2961 msgid "Image file" msgstr "Képfájl" -#: common/models.py:3109 +#: common/models.py:2973 common/models.py:3161 +msgid "Target model type for this image" +msgstr "" + +#: common/models.py:2977 +msgid "Target model ID for this image" +msgstr "" + +#: common/models.py:3018 msgid "Unit name must be a valid identifier" msgstr "A mértékegységnek valós azonosítónak kell lennie" -#: common/models.py:3128 +#: common/models.py:3037 msgid "Unit name" msgstr "Egység neve" -#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3044 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "Szimbólum" -#: common/models.py:3136 +#: common/models.py:3045 msgid "Optional unit symbol" msgstr "Opcionális mértékegység szimbólum" -#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3052 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "Definíció" -#: common/models.py:3144 +#: common/models.py:3053 msgid "Unit definition" msgstr "Mértékegység definíció" +#: common/models.py:3111 common/models.py:3168 stock/models.py:2426 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "Melléklet" + +#: common/models.py:3123 +msgid "Missing file" +msgstr "Hiányzó fájl" + +#: common/models.py:3124 +msgid "Missing external link" +msgstr "Hiányzó külső link" + +#: common/models.py:3169 +msgid "Select file to attach" +msgstr "Válaszd ki a mellekelni kívánt fájlt" + +#: common/models.py:3184 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "Megjegyzés" + +#: common/models.py:3185 +msgid "Attachment comment" +msgstr "" + +#: common/models.py:3201 +msgid "Upload date" +msgstr "" + +#: common/models.py:3202 +msgid "Date the file was uploaded" +msgstr "" + +#: common/models.py:3206 +msgid "File size" +msgstr "" + +#: common/models.py:3206 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3244 common/serializers.py:553 +msgid "Invalid model type specified for attachment" +msgstr "" + #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" @@ -3632,66 +3647,103 @@ msgstr "Készlet érkezett vissza egy visszavétel miatt" msgid "Error raised by plugin" msgstr "Plugin hiba" -#: common/serializers.py:366 +#: common/serializers.py:371 msgid "Is Running" msgstr "Folyamatban" -#: common/serializers.py:372 +#: common/serializers.py:377 msgid "Pending Tasks" msgstr "Folyamatban lévő feladatok" -#: common/serializers.py:378 +#: common/serializers.py:383 msgid "Scheduled Tasks" msgstr "Ütemezett Feladatok" -#: common/serializers.py:384 +#: common/serializers.py:389 msgid "Failed Tasks" msgstr "Hibás feladatok" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Task ID" msgstr "Feladat ID" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Unique task ID" msgstr "Egyedi feladat ID" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock" msgstr "Zárol" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock time" msgstr "Zárolási idő" -#: common/serializers.py:403 +#: common/serializers.py:408 msgid "Task name" msgstr "Feladat neve" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function" msgstr "Funkció" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function name" msgstr "Funkció neve" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Arguments" msgstr "Paraméterek" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Task arguments" msgstr "Feladat paraméterei" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Keyword Arguments" msgstr "Kulcsszó paraméterek" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Task keyword arguments" msgstr "Feladat kulcsszó paraméterek" +#: common/serializers.py:525 +msgid "Filename" +msgstr "Fájlnév" + +#: common/serializers.py:532 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: common/serializers.py:559 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "" + +#: common/validators.py:33 +msgid "No attachment model type provided" +msgstr "" + +#: common/validators.py:39 +msgid "Invalid attachment model type" +msgstr "" + +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "Üres domain nem engedélyezett." + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +msgstr "Érvénytelen domain név: {domain}" + #: 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 @@ -3730,210 +3782,222 @@ msgstr "Importált alkatrészek" msgid "Previous Step" msgstr "Előző lépés" -#: company/api.py:164 +#: company/api.py:144 msgid "Part is Active" msgstr "Az alkatrész aktív" -#: company/api.py:168 +#: company/api.py:148 msgid "Manufacturer is Active" msgstr "A Gyártó Aktív" -#: company/api.py:317 +#: company/api.py:281 msgid "Supplier Part is Active" msgstr "A Szállítói Alkatrész Aktív" -#: company/api.py:321 +#: company/api.py:285 msgid "Internal Part is Active" msgstr "A saját alkatrész Aktív" -#: company/api.py:325 +#: company/api.py:289 msgid "Supplier is Active" msgstr "A Beszállító Aktív" -#: company/models.py:114 +#: company/models.py:100 company/models.py:365 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:822 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "Cég" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "Cégek" + +#: company/models.py:117 msgid "Company description" msgstr "Cég leírása" -#: company/models.py:115 +#: company/models.py:118 msgid "Description of the company" msgstr "A cég leírása" -#: company/models.py:120 company/templates/company/company_base.html:106 +#: company/models.py:123 company/templates/company/company_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:532 msgid "Website" msgstr "Weboldal" -#: company/models.py:120 +#: company/models.py:123 msgid "Company website URL" msgstr "Cég weboldala" -#: company/models.py:125 +#: company/models.py:128 msgid "Phone number" msgstr "Telefonszám" -#: company/models.py:127 +#: company/models.py:130 msgid "Contact phone number" msgstr "Kapcsolattartó telefonszáma" -#: company/models.py:134 +#: company/models.py:137 msgid "Contact email address" msgstr "Kapcsolattartó email címe" -#: company/models.py:139 company/templates/company/company_base.html:145 +#: company/models.py:142 company/templates/company/company_base.html:145 #: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "Névjegy" -#: company/models.py:141 +#: company/models.py:144 msgid "Point of contact" msgstr "Kapcsolattartó" -#: company/models.py:147 +#: company/models.py:150 msgid "Link to external company information" msgstr "Link a külső céginformációhoz" -#: company/models.py:160 +#: company/models.py:163 msgid "Is this company active?" msgstr "Ez a vállalat aktív?" -#: company/models.py:165 +#: company/models.py:168 msgid "is customer" msgstr "vevő-e" -#: company/models.py:166 +#: company/models.py:169 msgid "Do you sell items to this company?" msgstr "Értékesítesz alkatrészeket ennek a cégnek?" -#: company/models.py:171 +#: company/models.py:174 msgid "is supplier" msgstr "beszállító-e" -#: company/models.py:172 +#: company/models.py:175 msgid "Do you purchase items from this company?" msgstr "Vásárolsz alkatrészeket ettől a cégtől?" -#: company/models.py:177 +#: company/models.py:180 msgid "is manufacturer" msgstr "gyártó-e" -#: company/models.py:178 +#: company/models.py:181 msgid "Does this company manufacture parts?" msgstr "Gyárt ez a cég alkatrészeket?" -#: company/models.py:186 +#: company/models.py:189 msgid "Default currency used for this company" msgstr "Cég által használt alapértelmezett pénznem" -#: company/models.py:273 company/models.py:382 -#: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:812 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 -msgid "Company" -msgstr "Cég" - -#: company/models.py:383 +#: company/models.py:366 msgid "Select company" msgstr "Cég kiválasztása" -#: company/models.py:388 +#: company/models.py:371 msgid "Address title" msgstr "Cím megnevezése" -#: company/models.py:389 +#: company/models.py:372 msgid "Title describing the address entry" msgstr "Címhez tartozó leírás, megnevezés" -#: company/models.py:395 +#: company/models.py:378 msgid "Primary address" msgstr "Elsődleges cím" -#: company/models.py:396 +#: company/models.py:379 msgid "Set as primary address" msgstr "Beállítás elsődleges címként" -#: company/models.py:401 templates/js/translated/company.js:914 +#: company/models.py:384 templates/js/translated/company.js:914 #: templates/js/translated/company.js:971 msgid "Line 1" msgstr "1. sor" -#: company/models.py:402 +#: company/models.py:385 msgid "Address line 1" msgstr "Cím első sora" -#: company/models.py:408 templates/js/translated/company.js:915 +#: company/models.py:391 templates/js/translated/company.js:915 #: templates/js/translated/company.js:977 msgid "Line 2" msgstr "2. sor" -#: company/models.py:409 +#: company/models.py:392 msgid "Address line 2" msgstr "Cím második sora" -#: company/models.py:415 company/models.py:416 +#: company/models.py:398 company/models.py:399 #: templates/js/translated/company.js:983 msgid "Postal code" msgstr "Irányítószám" -#: company/models.py:422 +#: company/models.py:405 msgid "City/Region" msgstr "Város/Régió" -#: company/models.py:423 +#: company/models.py:406 msgid "Postal code city/region" msgstr "Irányítószám város/régió" -#: company/models.py:429 +#: company/models.py:412 msgid "State/Province" msgstr "Állam/Megye" -#: company/models.py:430 +#: company/models.py:413 msgid "State or province" msgstr "Állam vagy megye" -#: company/models.py:436 templates/js/translated/company.js:1001 +#: company/models.py:419 templates/js/translated/company.js:1001 msgid "Country" msgstr "Ország" -#: company/models.py:437 +#: company/models.py:420 msgid "Address country" msgstr "Cím országa" -#: company/models.py:443 +#: company/models.py:426 msgid "Courier shipping notes" msgstr "Megjegyzés a futárnak" -#: company/models.py:444 +#: company/models.py:427 msgid "Notes for shipping courier" msgstr "Futárnak szóló megjegyzések" -#: company/models.py:450 +#: company/models.py:433 msgid "Internal shipping notes" msgstr "Belső szállítási megjegyzések" -#: company/models.py:451 +#: company/models.py:434 msgid "Shipping notes for internal use" msgstr "Szállítási megjegyzések belső használatra" -#: company/models.py:458 +#: company/models.py:441 msgid "Link to address information (external)" msgstr "Link a címinformációkhoz (külső)" -#: company/models.py:489 company/models.py:792 stock/models.py:768 -#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 +#: company/models.py:463 company/models.py:574 company/models.py:792 +#: 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:475 company/models.py:760 stock/models.py:766 +#: stock/serializers.py:422 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Kiindulási alkatrész" -#: company/models.py:491 company/models.py:794 +#: company/models.py:477 company/models.py:762 msgid "Select part" msgstr "Válassz alkatrészt" -#: company/models.py:500 company/templates/company/company_base.html:82 +#: company/models.py:486 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:530 +#: company/templates/company/supplier_part.html:145 part/serializers.py:525 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -3943,152 +4007,154 @@ msgstr "Válassz alkatrészt" msgid "Manufacturer" msgstr "Gyártó" -#: company/models.py:501 +#: company/models.py:487 msgid "Select manufacturer" msgstr "Gyártó kiválasztása" -#: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:540 +#: company/models.py:493 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:535 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 -#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1801 #: templates/js/translated/purchase_order.js:1851 #: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "MPN (Gyártói cikkszám)" -#: company/models.py:508 +#: company/models.py:494 msgid "Manufacturer Part Number" msgstr "Gyártói cikkszám" -#: company/models.py:515 +#: company/models.py:501 msgid "URL for external manufacturer part link" msgstr "URL link a gyártói alkatrészhez" -#: company/models.py:524 +#: company/models.py:510 msgid "Manufacturer part description" msgstr "Gyártói alkatrész leírása" -#: company/models.py:581 company/models.py:608 company/models.py:824 -#: 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:615 +#: company/models.py:581 msgid "Parameter name" msgstr "Paraméter neve" -#: company/models.py:621 report/templates/report/inventree_test_report.html:104 -#: stock/models.py:2429 templates/js/translated/company.js:1166 -#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 +#: company/models.py:587 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2418 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1493 #: templates/js/translated/stock.js:1522 msgid "Value" msgstr "Érték" -#: company/models.py:622 +#: company/models.py:588 msgid "Parameter value" msgstr "Paraméter értéke" -#: company/models.py:629 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1052 part/models.py:3666 +#: company/models.py:595 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1045 part/models.py:3646 #: part/templates/part/part_base.html:284 -#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1512 +#: templates/js/translated/part.js:1616 templates/js/translated/part.js:2370 msgid "Units" msgstr "Mértékegység" -#: company/models.py:630 +#: company/models.py:596 msgid "Parameter units" msgstr "Paraméter mértékegység" -#: company/models.py:732 +#: company/models.py:648 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:777 stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "Beszállítói alkatrész" + +#: company/models.py:700 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:739 +#: company/models.py:707 msgid "Pack units must be greater than zero" msgstr "Csomagolási mennyiségnek nullánál többnek kell lennie" -#: company/models.py:753 +#: company/models.py:721 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:802 company/templates/company/company_base.html:87 +#: company/models.py:770 company/templates/company/company_base.html:87 #: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:514 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:509 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:511 -#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1769 #: templates/js/translated/pricing.js:498 #: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "Beszállító" -#: company/models.py:803 +#: company/models.py:771 msgid "Select supplier" msgstr "Beszállító kiválasztása" -#: company/models.py:809 part/serializers.py:525 +#: company/models.py:777 part/serializers.py:520 msgid "Supplier stock keeping unit" msgstr "Beszállítói cikkszám" -#: company/models.py:815 +#: company/models.py:783 msgid "Is this supplier part active?" msgstr "Ez a szállítói termék aktív?" -#: company/models.py:825 +#: company/models.py:793 msgid "Select manufacturer part" msgstr "Gyártói alkatrész kiválasztása" -#: company/models.py:832 +#: company/models.py:800 msgid "URL for external supplier part link" msgstr "URL link a beszállítói alkatrészhez" -#: company/models.py:841 +#: company/models.py:809 msgid "Supplier part description" msgstr "Beszállítói alkatrész leírása" -#: company/models.py:848 company/templates/company/supplier_part.html:187 -#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 +#: company/models.py:816 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4093 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_purchase_order_report.html:32 #: report/templates/report/inventree_return_order_report.html:27 #: report/templates/report/inventree_sales_order_report.html:32 #: report/templates/report/inventree_stock_location_report.html:105 -#: stock/serializers.py:708 +#: stock/serializers.py:710 msgid "Note" msgstr "Megjegyzés" -#: company/models.py:857 part/models.py:2010 +#: company/models.py:825 part/models.py:2003 msgid "base cost" msgstr "alap költség" -#: company/models.py:858 part/models.py:2011 +#: company/models.py:826 part/models.py:2004 msgid "Minimum charge (e.g. stocking fee)" msgstr "Minimális díj (pl. tárolási díj)" -#: company/models.py:865 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 +#: company/models.py:833 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:797 stock/serializers.py:1475 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 #: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "Csomagolás" -#: company/models.py:866 +#: company/models.py:834 msgid "Part packaging" msgstr "Alkatrész csomagolás" -#: company/models.py:871 templates/js/translated/company.js:1651 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: company/models.py:839 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:311 #: templates/js/translated/purchase_order.js:841 #: templates/js/translated/purchase_order.js:1103 @@ -4097,35 +4163,35 @@ msgstr "Alkatrész csomagolás" msgid "Pack Quantity" msgstr "Csomagolási mennyiség" -#: company/models.py:873 +#: company/models.py:841 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:892 part/models.py:2017 +#: company/models.py:860 part/models.py:2010 msgid "multiple" msgstr "többszörös" -#: company/models.py:893 +#: company/models.py:861 msgid "Order multiple" msgstr "Többszörös rendelés" -#: company/models.py:905 +#: company/models.py:873 msgid "Quantity available from supplier" msgstr "Beszállítónál elérhető mennyiség" -#: company/models.py:911 +#: company/models.py:879 msgid "Availability Updated" msgstr "Elérhetőség frissítve" -#: company/models.py:912 +#: company/models.py:880 msgid "Date of last update of availability data" msgstr "Utolsó elérhetőségi adat frissítés" -#: company/serializers.py:163 +#: company/serializers.py:161 msgid "Default currency used for this supplier" msgstr "Beszállító által használt alapértelmezett pénznem" -#: company/serializers.py:381 part/admin.py:126 +#: company/serializers.py:357 part/admin.py:126 #: part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1689 #: templates/js/translated/table_filters.js:355 @@ -4137,7 +4203,7 @@ msgstr "Készleten" #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 #: templates/js/translated/model_renderers.js:312 -#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +#: templates/js/translated/part.js:815 templates/js/translated/part.js:1219 msgid "Inactive" msgstr "Inaktív" @@ -4176,7 +4242,7 @@ msgstr "Cég törlése" #: report/templates/report/inventree_purchase_order_report.html:40 #: report/templates/report/inventree_sales_order_report.html:40 #: report/templates/report/inventree_test_report.html:84 -#: report/templates/report/inventree_test_report.html:163 +#: report/templates/report/inventree_test_report.html:162 msgid "Part image" msgstr "Alkatrész képe" @@ -4195,10 +4261,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:92 order/models.py:940 -#: order/models.py:2068 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:148 stock/models.py:821 -#: stock/models.py:822 stock/serializers.py:1229 +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2032 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:819 +#: stock/models.py:820 stock/serializers.py:1225 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 @@ -4409,7 +4475,7 @@ msgstr "Nincs elérhető gyártói információ" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:836 +#: part/admin.py:122 part/serializers.py:832 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4429,8 +4495,8 @@ msgstr "Paraméterek" msgid "New Parameter" msgstr "Új paraméter" -#: company/templates/company/manufacturer_part.html:206 -#: templates/js/translated/part.js:1422 +#: company/templates/company/manufacturer_part.html:196 +#: templates/js/translated/part.js:1423 msgid "Add Parameter" msgstr "Paraméter hozzáadása" @@ -4458,15 +4524,6 @@ msgstr "Névjegyek" msgid "Addresses" msgstr "Címek" -#: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:452 -#: stock/models.py:779 stock/templates/stock/item_base.html:233 -#: templates/js/translated/company.js:1600 -#: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2280 -msgid "Supplier Part" -msgstr "Beszállítói alkatrész" - #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1526 msgid "Supplier part actions" @@ -4509,8 +4566,8 @@ msgid "No supplier information available" msgstr "Nincs elérhető beszállítói információ" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:524 -#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: part/bom.py:311 part/serializers.py:519 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1787 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1850 #: templates/js/translated/purchase_order.js:2028 @@ -4522,12 +4579,12 @@ msgid "Supplier Part Stock" msgstr "Beszállítói készlet" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:207 msgid "Create new stock item" msgstr "Új készlet tétel létrehozása" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "Új készlet tétel" @@ -4559,15 +4616,15 @@ msgid "Update Part Availability" msgstr "Alkatrész elérhetőség frissítése" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:835 part/stocktake.py:223 +#: part/serializers.py:831 part/stocktake.py:224 #: part/templates/part/category.html:183 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:916 stock/serializers.py:1080 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:918 stock/serializers.py:1091 #: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:191 #: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1061 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:206 msgid "Stock Items" @@ -4594,10 +4651,6 @@ msgstr "Vevők" msgid "New Customer" msgstr "Új vevő" -#: company/views.py:51 templates/js/translated/search.js:192 -msgid "Companies" -msgstr "Cégek" - #: company/views.py:52 msgid "New Company" msgstr "Új cég" @@ -4618,7 +4671,7 @@ msgstr "Címkénkénti nyomtatandó mennyiség" msgid "Connected" msgstr "Csatlakoztatba" -#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: machine/machine_types/label_printer.py:235 order/api.py:1467 #: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "Ismeretlen" @@ -4707,7 +4760,7 @@ msgstr "Gép konfiguráció" msgid "Config type" msgstr "Konfiguráció típusa" -#: order/admin.py:30 order/models.py:89 +#: order/admin.py:30 order/models.py:90 #: report/templates/report/inventree_purchase_order_report.html:31 #: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 @@ -4716,30 +4769,30 @@ msgstr "Konfiguráció típusa" msgid "Total Price" msgstr "Teljes ár" -#: order/api.py:161 order/serializers.py:91 +#: order/api.py:157 order/serializers.py:90 #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "Rendelés állapota" -#: order/api.py:165 templates/js/translated/table_filters.js:194 +#: order/api.py:161 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "Van árazás" -#: order/api.py:240 +#: order/api.py:236 msgid "No matching purchase order found" msgstr "Nincs egyező beszerzési rendelés" -#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 -#: order/models.py:1586 order/models.py:1700 order/models.py:1854 -#: order/models.py:2267 order/models.py:2318 +#: order/api.py:435 order/api.py:801 order/models.py:1395 order/models.py:1504 +#: order/models.py:1550 order/models.py:1664 order/models.py:1818 +#: order/models.py:2231 order/models.py:2282 #: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "Rendelés" -#: order/api.py:441 order/api.py:838 +#: order/api.py:439 order/api.py:822 msgid "Order Complete" msgstr "A rendelés teljesítve" @@ -4747,13 +4800,13 @@ msgstr "A rendelés teljesítve" msgid "Order Pending" msgstr "A rendelés függőben" -#: order/api.py:1509 order/models.py:380 order/models.py:1432 -#: order/models.py:1541 order/templates/order/order_base.html:9 +#: order/api.py:1461 order/models.py:380 order/models.py:1396 +#: order/models.py:1505 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_purchase_order_report.html:14 -#: stock/serializers.py:119 stock/templates/stock/item_base.html:176 +#: stock/serializers.py:118 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/part.js:1746 templates/js/translated/pricing.js:804 #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1673 @@ -4761,8 +4814,8 @@ msgstr "A rendelés függőben" msgid "Purchase Order" msgstr "Beszerzési rendelés" -#: order/api.py:1513 order/models.py:2017 order/models.py:2268 -#: order/models.py:2319 order/templates/order/return_order_base.html:9 +#: order/api.py:1465 order/models.py:1981 order/models.py:2232 +#: order/models.py:2283 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report.html:13 #: templates/js/translated/return_order.js:280 @@ -4770,15 +4823,15 @@ msgstr "Beszerzési rendelés" msgid "Return Order" msgstr "Visszavétel" -#: order/models.py:90 +#: order/models.py:91 msgid "Total price for this order" msgstr "A rendelés teljes ára" -#: order/models.py:95 order/serializers.py:71 +#: order/models.py:96 order/serializers.py:70 msgid "Order Currency" msgstr "Rendelés pénzneme" -#: order/models.py:98 order/serializers.py:72 +#: order/models.py:99 order/serializers.py:71 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)" @@ -4794,7 +4847,7 @@ msgstr "Rendelés leírása (opcionális)" msgid "Select project code for this order" msgstr "Válassz projektszámot ehhez a rendeléshez" -#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 msgid "Link to external page" msgstr "Link külső weboldalra" @@ -4818,11 +4871,11 @@ msgstr "Kapcsolattartó ehhez a rendeléshez" msgid "Company address for this order" msgstr "Cég címei ehhez a rendeléshez" -#: order/models.py:464 order/models.py:929 +#: order/models.py:464 order/models.py:927 msgid "Order reference" msgstr "Rendelés azonosító" -#: order/models.py:472 order/models.py:953 +#: order/models.py:472 order/models.py:951 msgid "Purchase order status" msgstr "Beszerzési rendelés állapota" @@ -4843,15 +4896,15 @@ msgstr "Beszállítói rendelés azonosító kód" msgid "received by" msgstr "érkeztette" -#: order/models.py:514 order/models.py:2094 +#: order/models.py:514 order/models.py:2058 msgid "Issue Date" msgstr "Kiállítás dátuma" -#: order/models.py:515 order/models.py:2095 +#: order/models.py:515 order/models.py:2059 msgid "Date order was issued" msgstr "Kiállítás dátuma" -#: order/models.py:522 order/models.py:2102 +#: order/models.py:522 order/models.py:2066 msgid "Date order was completed" msgstr "Rendelés teljesítési dátuma" @@ -4863,98 +4916,94 @@ msgstr "Az alkatrész beszállítója meg kell egyezzen a beszerzési rendelés msgid "Quantity must be a positive number" msgstr "Mennyiség pozitív kell legyen" -#: order/models.py:941 +#: order/models.py:939 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:964 order/models.py:2087 +#: order/models.py:962 order/models.py:2051 msgid "Customer Reference " msgstr "Vevői azonosító " -#: order/models.py:965 order/models.py:2088 +#: order/models.py:963 order/models.py:2052 msgid "Customer order reference code" msgstr "Megrendelés azonosító kódja a vevőnél" -#: order/models.py:969 order/models.py:1707 +#: order/models.py:967 order/models.py:1671 #: templates/js/translated/sales_order.js:879 #: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "Kiszállítás dátuma" -#: order/models.py:978 +#: order/models.py:976 msgid "shipped by" msgstr "szállította" -#: order/models.py:1027 -#, fuzzy -#| msgid "Build output is already completed" +#: order/models.py:1025 msgid "Order is already complete" -msgstr "Gyártási kimenet már kész" +msgstr "" -#: order/models.py:1030 -#, fuzzy -#| msgid "Order cannot be cancelled" +#: order/models.py:1028 msgid "Order is already cancelled" -msgstr "A rendelést nem lehet törölni" +msgstr "" -#: order/models.py:1034 +#: order/models.py:1032 msgid "Only an open order can be marked as complete" msgstr "Csak nyitott rendelés jelölhető késznek" -#: order/models.py:1038 +#: order/models.py:1036 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:1043 +#: order/models.py:1041 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:1309 +#: order/models.py:1273 msgid "Item quantity" msgstr "Tétel mennyiség" -#: order/models.py:1326 +#: order/models.py:1290 msgid "Line item reference" msgstr "Sortétel azonosító" -#: order/models.py:1333 +#: order/models.py:1297 msgid "Line item notes" msgstr "Sortétel megjegyzései" -#: order/models.py:1345 +#: order/models.py:1309 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:1366 +#: order/models.py:1330 msgid "Line item description (optional)" msgstr "Sortétel leírása (opcionális)" -#: order/models.py:1372 +#: order/models.py:1336 msgid "Context" msgstr "Kontextus" -#: order/models.py:1373 +#: order/models.py:1337 msgid "Additional context for this line" msgstr "További kontextus ehhez a sorhoz" -#: order/models.py:1383 +#: order/models.py:1347 msgid "Unit price" msgstr "Egységár" -#: order/models.py:1416 +#: order/models.py:1380 msgid "Supplier part must match supplier" msgstr "Beszállítói alkatrésznek egyeznie kell a beszállítóval" -#: order/models.py:1423 +#: order/models.py:1387 msgid "deleted" msgstr "törölve" -#: order/models.py:1451 +#: order/models.py:1415 msgid "Supplier part" msgstr "Beszállítói alkatrész" -#: order/models.py:1458 order/templates/order/order_base.html:196 -#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: order/models.py:1422 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1870 templates/js/translated/part.js:1902 #: templates/js/translated/purchase_order.js:1306 #: templates/js/translated/purchase_order.js:2169 #: templates/js/translated/return_order.js:763 @@ -4963,196 +5012,196 @@ msgstr "Beszállítói alkatrész" msgid "Received" msgstr "Beérkezett" -#: order/models.py:1459 +#: order/models.py:1423 msgid "Number of items received" msgstr "Érkezett tételek száma" -#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 +#: order/models.py:1431 stock/models.py:938 stock/serializers.py:556 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "Beszerzési ár" -#: order/models.py:1468 +#: order/models.py:1432 msgid "Unit purchase price" msgstr "Beszerzési egységár" -#: order/models.py:1483 +#: order/models.py:1447 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:1574 +#: order/models.py:1538 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:1579 +#: order/models.py:1543 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:1605 part/templates/part/part_pricing.html:107 +#: order/models.py:1569 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:1606 +#: order/models.py:1570 msgid "Unit sale price" msgstr "Eladási egységár" -#: order/models.py:1615 order/status_codes.py:43 +#: order/models.py:1579 order/status_codes.py:43 #: templates/js/translated/sales_order.js:1559 #: templates/js/translated/sales_order.js:1680 #: templates/js/translated/sales_order.js:1993 msgid "Shipped" msgstr "Kiszállítva" -#: order/models.py:1616 +#: order/models.py:1580 msgid "Shipped quantity" msgstr "Szállított mennyiség" -#: order/models.py:1708 +#: order/models.py:1672 msgid "Date of shipment" msgstr "Szállítás dátuma" -#: order/models.py:1714 templates/js/translated/sales_order.js:1072 +#: order/models.py:1678 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "Szállítási dátum" -#: order/models.py:1715 +#: order/models.py:1679 msgid "Date of delivery of shipment" msgstr "Kézbesítés dátuma" -#: order/models.py:1723 +#: order/models.py:1687 msgid "Checked By" msgstr "Ellenőrizte" -#: order/models.py:1724 +#: order/models.py:1688 msgid "User who checked this shipment" msgstr "Felhasználó aki ellenőrizte ezt a szállítmányt" -#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 -#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 +#: order/models.py:1695 order/models.py:1908 order/serializers.py:1342 +#: order/serializers.py:1452 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "Szállítmány" -#: order/models.py:1732 +#: order/models.py:1696 msgid "Shipment number" msgstr "Szállítmány száma" -#: order/models.py:1740 +#: order/models.py:1704 msgid "Tracking Number" msgstr "Nyomkövetési szám" -#: order/models.py:1741 +#: order/models.py:1705 msgid "Shipment tracking information" msgstr "Szállítmány nyomkövetési információ" -#: order/models.py:1748 +#: order/models.py:1712 msgid "Invoice Number" msgstr "Számlaszám" -#: order/models.py:1749 +#: order/models.py:1713 msgid "Reference number for associated invoice" msgstr "Hozzátartozó számla referencia száma" -#: order/models.py:1769 +#: order/models.py:1733 msgid "Shipment has already been sent" msgstr "Szállítmány már elküldve" -#: order/models.py:1772 +#: order/models.py:1736 msgid "Shipment has no allocated stock items" msgstr "Szállítmány nem tartalmaz foglalt készlet tételeket" -#: order/models.py:1890 order/models.py:1892 +#: order/models.py:1854 order/models.py:1856 msgid "Stock item has not been assigned" msgstr "Készlet tétel nincs hozzárendelve" -#: order/models.py:1899 +#: order/models.py:1863 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:1902 +#: order/models.py:1866 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:1905 +#: order/models.py:1869 msgid "Allocation quantity cannot exceed stock quantity" msgstr "A lefoglalandó mennyiség nem haladhatja meg a készlet mennyiségét" -#: order/models.py:1924 order/serializers.py:1231 +#: order/models.py:1888 order/serializers.py:1219 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:1927 +#: order/models.py:1891 msgid "Sales order does not match shipment" msgstr "Vevői rendelés nem egyezik a szállítmánnyal" -#: order/models.py:1928 plugin/base/barcodes/api.py:481 +#: order/models.py:1892 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:1936 +#: order/models.py:1900 msgid "Line" msgstr "Sor" -#: order/models.py:1945 +#: order/models.py:1909 msgid "Sales order shipment reference" msgstr "Vevői rendelés szállítmány azonosító" -#: order/models.py:1958 order/models.py:2275 +#: order/models.py:1922 order/models.py:2239 #: templates/js/translated/return_order.js:721 msgid "Item" msgstr "Tétel" -#: order/models.py:1959 +#: order/models.py:1923 msgid "Select stock item to allocate" msgstr "Válaszd ki a foglalásra szánt készlet tételt" -#: order/models.py:1968 +#: order/models.py:1932 msgid "Enter stock allocation quantity" msgstr "Készlet foglalási mennyiség megadása" -#: order/models.py:2057 +#: order/models.py:2021 msgid "Return Order reference" msgstr "Visszavétel azonosító" -#: order/models.py:2069 +#: order/models.py:2033 msgid "Company from which items are being returned" msgstr "Cég akitől a tételek visszavételre kerülnek" -#: order/models.py:2081 +#: order/models.py:2045 msgid "Return order status" msgstr "Visszavétel állapota" -#: order/models.py:2260 +#: order/models.py:2224 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:2276 +#: order/models.py:2240 msgid "Select item to return from customer" msgstr "Válaszd ki a vevőtől visszavenni kívánt tételt" -#: order/models.py:2282 +#: order/models.py:2246 msgid "Received Date" msgstr "Visszavétel dátuma" -#: order/models.py:2283 +#: order/models.py:2247 msgid "The date this this return item was received" msgstr "Mikor lett visszavéve a tétel" -#: order/models.py:2294 templates/js/translated/return_order.js:732 +#: order/models.py:2258 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "Kimenetel" -#: order/models.py:2295 +#: order/models.py:2259 msgid "Outcome for this line item" msgstr "Sortétel végső kimenetele" -#: order/models.py:2302 +#: order/models.py:2266 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:80 order/templates/order/po_sidebar.html:5 +#: order/serializers.py:79 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_purchase_order_report.html:22 @@ -5161,163 +5210,163 @@ msgstr "Sortétel visszaküldésének vagy javításának költsége" msgid "Line Items" msgstr "Sortételek" -#: order/serializers.py:84 +#: order/serializers.py:83 msgid "Completed Lines" msgstr "Kész sorok" -#: order/serializers.py:287 +#: order/serializers.py:286 msgid "Order cannot be cancelled" msgstr "A rendelést nem lehet törölni" -#: order/serializers.py:302 order/serializers.py:1247 +#: order/serializers.py:301 order/serializers.py:1235 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:312 order/serializers.py:1257 +#: order/serializers.py:311 order/serializers.py:1245 msgid "Order has incomplete line items" msgstr "A rendelésben teljesítetlen sortételek vannak" -#: order/serializers.py:440 +#: order/serializers.py:439 msgid "Order is not open" msgstr "A rendelés nem nyitott" -#: order/serializers.py:461 +#: order/serializers.py:460 msgid "Auto Pricing" msgstr "Automata árazás" -#: order/serializers.py:463 +#: order/serializers.py:462 msgid "Automatically calculate purchase price based on supplier part data" msgstr "Beszerzési ár automatikus számítása a beszállítói alkatrész adatai alapján" -#: order/serializers.py:473 +#: order/serializers.py:472 msgid "Purchase price currency" msgstr "Beszérzési ár pénzneme" -#: order/serializers.py:479 +#: order/serializers.py:478 msgid "Merge Items" msgstr "Elemek összevonása" -#: order/serializers.py:481 +#: order/serializers.py:480 msgid "Merge items with the same part, destination and target date into one line item" msgstr "Azonos forrás és cél dátumú Alkatrész tételeinek összevonása egy tételre" -#: order/serializers.py:499 +#: order/serializers.py:498 msgid "Supplier part must be specified" msgstr "Beszállítói alkatrészt meg kell adni" -#: order/serializers.py:502 +#: order/serializers.py:501 msgid "Purchase order must be specified" msgstr "Beszerzési rendelést meg kell adni" -#: order/serializers.py:510 +#: order/serializers.py:509 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:511 +#: order/serializers.py:510 msgid "Purchase order must match supplier" msgstr "A beszerzési rendelésnek egyeznie kell a beszállítóval" -#: order/serializers.py:550 order/serializers.py:1325 +#: order/serializers.py:549 order/serializers.py:1313 msgid "Line Item" msgstr "Sortétel" -#: order/serializers.py:556 +#: order/serializers.py:555 msgid "Line item does not match purchase order" msgstr "Sortétel nem egyezik a beszerzési megrendeléssel" -#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1657 msgid "Select destination location for received items" msgstr "Válassz cél helyet a beérkezett tételeknek" -#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:581 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "Írd be a batch kódját a beérkezett tételeknek" -#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:589 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "Írd be a sorozatszámokat a beérkezett tételekhez" -#: order/serializers.py:601 templates/js/translated/barcode.js:52 +#: order/serializers.py:600 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Vonalkód" -#: order/serializers.py:602 +#: order/serializers.py:601 msgid "Scanned barcode" msgstr "Beolvasott vonalkód" -#: order/serializers.py:618 +#: order/serializers.py:617 msgid "Barcode is already in use" msgstr "Ez a vonalkód már használva van" -#: order/serializers.py:642 +#: order/serializers.py:641 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:690 order/serializers.py:1696 +#: order/serializers.py:689 order/serializers.py:1673 msgid "Line items must be provided" msgstr "Sortételt meg kell adni" -#: order/serializers.py:706 +#: order/serializers.py:705 msgid "Destination location must be specified" msgstr "A cél helyet kötelező megadni" -#: order/serializers.py:717 +#: order/serializers.py:716 msgid "Supplied barcode values must be unique" msgstr "Megadott vonalkódoknak egyedieknek kel lenniük" -#: order/serializers.py:1074 +#: order/serializers.py:1062 msgid "Sale price currency" msgstr "Eladási ár pénzneme" -#: order/serializers.py:1134 +#: order/serializers.py:1122 msgid "No shipment details provided" msgstr "Nincsenek szállítmány részletek megadva" -#: order/serializers.py:1195 order/serializers.py:1334 +#: order/serializers.py:1183 order/serializers.py:1322 msgid "Line item is not associated with this order" msgstr "Sortétel nincs hozzárendelve ehhez a rendeléshez" -#: order/serializers.py:1214 +#: order/serializers.py:1202 msgid "Quantity must be positive" msgstr "Mennyiség pozitív kell legyen" -#: order/serializers.py:1344 +#: order/serializers.py:1332 msgid "Enter serial numbers to allocate" msgstr "Írd be a sorozatszámokat a kiosztáshoz" -#: order/serializers.py:1366 order/serializers.py:1472 +#: order/serializers.py:1354 order/serializers.py:1460 msgid "Shipment has already been shipped" msgstr "Szállítmány kiszállítva" -#: order/serializers.py:1369 order/serializers.py:1475 +#: order/serializers.py:1357 order/serializers.py:1463 msgid "Shipment is not associated with this order" msgstr "Szállítmány nincs hozzárendelve ehhez a rendeléshez" -#: order/serializers.py:1416 +#: order/serializers.py:1404 msgid "No match found for the following serial numbers" msgstr "Nincs találat a következő sorozatszámokra" -#: order/serializers.py:1423 +#: order/serializers.py:1411 msgid "The following serial numbers are already allocated" msgstr "A következő sorozatszámok már ki lettek osztva" -#: order/serializers.py:1650 +#: order/serializers.py:1627 msgid "Return order line item" msgstr "Visszavétel sortétel" -#: order/serializers.py:1656 +#: order/serializers.py:1633 msgid "Line item does not match return order" msgstr "Sortétel nem egyezik a visszavétellel" -#: order/serializers.py:1659 +#: order/serializers.py:1636 msgid "Line item has already been received" msgstr "A sortétel már beérkezett" -#: order/serializers.py:1688 +#: order/serializers.py:1665 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:1766 +#: order/serializers.py:1743 msgid "Line price currency" msgstr "Sortétel pénzneme" @@ -5647,7 +5696,7 @@ msgstr "Vevői azonosító" #: 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/part.js:1073 #: templates/js/translated/purchase_order.js:1752 #: templates/js/translated/return_order.js:380 #: templates/js/translated/sales_order.js:891 @@ -5743,34 +5792,34 @@ 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:406 part/models.py:3964 part/stocktake.py:218 -#: stock/admin.py:153 +#: part/admin.py:39 part/admin.py:398 part/models.py:3944 part/stocktake.py:219 +#: stock/admin.py:152 msgid "Part ID" msgstr "Alkatrész ID" -#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 -#: stock/admin.py:157 +#: part/admin.py:41 part/admin.py:405 part/models.py:3945 part/stocktake.py:220 +#: stock/admin.py:156 msgid "Part Name" msgstr "Alkatrész neve" -#: part/admin.py:45 part/stocktake.py:220 +#: part/admin.py:45 part/stocktake.py:221 msgid "Part Description" msgstr "Alkatrész leírása" -#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:940 part/templates/part/part_base.html:269 #: report/templates/report/inventree_stock_location_report.html:103 -#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/part.js:1227 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "IPN (Belső Cikkszám)" -#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 -#: report/models.py:161 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2346 +#: part/admin.py:50 part/models.py:949 part/templates/part/part_base.html:277 +#: report/models.py:162 templates/js/translated/part.js:1232 +#: templates/js/translated/part.js:2347 msgid "Revision" msgstr "Változat" -#: part/admin.py:53 part/admin.py:319 part/models.py:929 +#: part/admin.py:53 part/admin.py:319 part/models.py:922 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "Kulcsszavak" @@ -5779,11 +5828,11 @@ msgstr "Kulcsszavak" msgid "Part Image" msgstr "Alkatrész ábra" -#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:222 msgid "Category ID" msgstr "Kategória ID" -#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:223 msgid "Category Name" msgstr "Kategória neve" @@ -5795,11 +5844,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:915 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:908 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "Ebből a sablonból" -#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1036 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "Minimális készlet" @@ -5807,26 +5856,26 @@ msgstr "Minimális készlet" msgid "Used In" msgstr "Felhasználva ebben" -#: 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 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:235 +#: templates/js/translated/part.js:715 templates/js/translated/part.js:2153 msgid "Building" msgstr "Gyártásban" -#: part/admin.py:155 part/models.py:3123 part/models.py:3137 -#: templates/js/translated/part.js:969 +#: part/admin.py:155 part/models.py:3088 part/models.py:3102 +#: templates/js/translated/part.js:970 msgid "Minimum Cost" msgstr "Minimum költség" -#: part/admin.py:158 part/models.py:3130 part/models.py:3144 -#: templates/js/translated/part.js:979 +#: part/admin.py:158 part/models.py:3095 part/models.py:3109 +#: templates/js/translated/part.js:980 msgid "Maximum Cost" msgstr "Maximum költség" -#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 msgid "Parent ID" msgstr "Szülő ID" -#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 msgid "Parent Name" msgstr "Szülő neve" @@ -5835,141 +5884,149 @@ msgstr "Szülő neve" msgid "Category Path" msgstr "Kategória elérési út" -#: part/admin.py:325 part/models.py:393 part/serializers.py:117 -#: part/serializers.py:272 part/serializers.py:391 +#: part/admin.py:325 part/models.py:396 part/serializers.py:124 +#: part/serializers.py:267 part/serializers.py:386 #: 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:2803 templates/js/translated/search.js:130 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "Alkatrészek" -#: part/admin.py:386 +#: part/admin.py:378 msgid "BOM Level" msgstr "Alkatrészjegyzék szint" -#: part/admin.py:389 +#: part/admin.py:381 msgid "BOM Item ID" msgstr "Alkatrészjegyzék tétel ID" -#: part/admin.py:399 +#: part/admin.py:391 msgid "Parent IPN" msgstr "Szülő IPN" -#: part/admin.py:410 part/models.py:3966 +#: part/admin.py:402 part/models.py:3946 msgid "Part IPN" msgstr "Alkatrész IPN" -#: part/admin.py:423 part/serializers.py:1278 +#: part/admin.py:415 part/serializers.py:1274 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "Minimum ár" -#: part/admin.py:428 part/serializers.py:1293 +#: part/admin.py:420 part/serializers.py:1289 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "Maximum ár" -#: part/api.py:110 +#: part/api.py:104 msgid "Starred" msgstr "Csillagozott" -#: part/api.py:112 +#: part/api.py:106 msgid "Filter by starred categories" msgstr "Csillagozottra szűrés" -#: part/api.py:129 stock/api.py:318 +#: part/api.py:123 stock/api.py:312 msgid "Depth" msgstr "Mélység" -#: part/api.py:129 +#: part/api.py:123 msgid "Filter by category depth" msgstr "Kategória mélységre szűrés" -#: part/api.py:147 stock/api.py:336 +#: part/api.py:141 stock/api.py:330 +msgid "Top Level" +msgstr "" + +#: part/api.py:143 +msgid "Filter by top-level categories" +msgstr "" + +#: part/api.py:156 stock/api.py:345 msgid "Cascade" msgstr "Lépcsőzetes" -#: part/api.py:149 +#: part/api.py:158 msgid "Include sub-categories in filtered results" msgstr "Szűrt eredmények tartalmazzák az alkategóriákat" -#: part/api.py:169 +#: part/api.py:179 templates/js/translated/part.js:308 msgid "Parent" msgstr "Szülő" -#: part/api.py:171 +#: part/api.py:181 msgid "Filter by parent category" msgstr "Szülő kategóriára szűrés" -#: part/api.py:204 +#: part/api.py:214 msgid "Exclude Tree" msgstr "Fa kihagyása" -#: part/api.py:206 +#: part/api.py:216 msgid "Exclude sub-categories under the specified category" msgstr "Az adott kategória alkategóriáinak kihagyása" -#: part/api.py:455 +#: part/api.py:449 msgid "Has Results" msgstr "Van találat" -#: part/api.py:622 +#: part/api.py:616 msgid "Incoming Purchase Order" msgstr "Beérkező beszerzési rendelés" -#: part/api.py:640 +#: part/api.py:634 msgid "Outgoing Sales Order" msgstr "Kimenő vevői rendelés" -#: part/api.py:656 +#: part/api.py:650 msgid "Stock produced by Build Order" msgstr "Gyártással előállított készlet" -#: part/api.py:740 +#: part/api.py:734 msgid "Stock required for Build Order" msgstr "A gyártási utasításhoz szükséges készlet" -#: part/api.py:887 +#: part/api.py:881 msgid "Valid" msgstr "Érvényes" -#: part/api.py:888 +#: part/api.py:882 msgid "Validate entire Bill of Materials" msgstr "Teljes alkatrészjegyzék jóváhagyása" -#: part/api.py:894 +#: part/api.py:888 msgid "This option must be selected" msgstr "Ennek az opciónak ki kll lennie választva" -#: part/api.py:1111 +#: part/api.py:1105 msgid "BOM Valid" msgstr "" -#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 -#: part/serializers.py:406 part/serializers.py:1134 -#: part/templates/part/part_base.html:260 stock/api.py:781 +#: part/api.py:1508 part/models.py:932 part/models.py:3374 part/models.py:3889 +#: part/serializers.py:401 part/serializers.py:1130 +#: part/templates/part/part_base.html:260 stock/api.py:791 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2376 +#: templates/js/translated/part.js:2377 msgid "Category" msgstr "Kategória" -#: part/api.py:1803 +#: part/api.py:1796 msgid "Uses" msgstr "Használ" -#: part/bom.py:170 part/models.py:102 part/models.py:982 +#: part/bom.py:170 part/models.py:104 part/models.py:975 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Alapértelmezett hely" -#: part/bom.py:171 part/serializers.py:837 +#: part/bom.py:171 part/serializers.py:833 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "Teljes készlet" @@ -5978,1054 +6035,1066 @@ msgstr "Teljes készlet" msgid "Input quantity for price calculation" msgstr "Add meg a mennyiséget az árszámításhoz" -#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 +#: part/models.py:85 part/models.py:3890 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:84 part/templates/part/category.html:136 +#: part/models.py:86 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "Alkatrész kategóriák" -#: part/models.py:103 +#: part/models.py:105 msgid "Default location for parts in this category" msgstr "Ebben a kategóriában lévő alkatrészek helye alapban" -#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 +#: part/models.py:110 stock/models.py:174 templates/js/translated/part.js:2810 #: templates/js/translated/stock.js:2772 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "Szerkezeti" -#: part/models.py:110 +#: part/models.py:112 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:119 +#: part/models.py:121 msgid "Default keywords" msgstr "Alapértelmezett kulcsszavak" -#: part/models.py:120 +#: part/models.py:122 msgid "Default keywords for parts in this category" msgstr "Ebben a kategóriában évő alkatrészek kulcsszavai alapban" -#: part/models.py:126 stock/models.py:85 stock/models.py:156 +#: part/models.py:128 stock/models.py:86 stock/models.py:157 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "Ikon" -#: part/models.py:127 stock/models.py:157 +#: part/models.py:129 stock/models.py:158 msgid "Icon (optional)" msgstr "Ikon (opcionális)" -#: part/models.py:149 +#: part/models.py:151 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:482 +#: part/models.py:485 msgid "Cannot delete this part as it is still active" msgstr "" -#: part/models.py:489 +#: part/models.py:490 msgid "Cannot delete this part as it is used in an assembly" msgstr "" -#: part/models.py:527 +#: part/models.py:528 msgid "Invalid choice for parent part" msgstr "Hibás választás a szülő alkatrészre" -#: part/models.py:575 part/models.py:582 +#: part/models.py:576 part/models.py:583 #, 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:594 +#: part/models.py:595 #, 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:659 +#: part/models.py:658 #, 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:739 +#: part/models.py:736 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:844 +#: part/models.py:837 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:854 +#: part/models.py:847 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:869 +#: part/models.py:862 msgid "Parts cannot be assigned to structural part categories!" msgstr "Szerkezeti kategóriákhoz nem lehet alkatrészeket rendelni!" -#: part/models.py:898 part/models.py:3965 +#: part/models.py:891 part/models.py:3945 msgid "Part name" msgstr "Alkatrész neve" -#: part/models.py:903 +#: part/models.py:896 msgid "Is Template" msgstr "Sablon-e" -#: part/models.py:904 +#: part/models.py:897 msgid "Is this part a template part?" msgstr "Ez egy sablon alkatrész?" -#: part/models.py:914 +#: part/models.py:907 msgid "Is this part a variant of another part?" msgstr "Ez az alkatrész egy másik változata?" -#: part/models.py:922 +#: part/models.py:915 msgid "Part description (optional)" msgstr "Alkatrész leírása (opcionális)" -#: part/models.py:930 +#: part/models.py:923 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:940 +#: part/models.py:933 msgid "Part category" msgstr "Alkatrész kategória" -#: part/models.py:948 +#: part/models.py:941 msgid "Internal Part Number" msgstr "Belső cikkszám" -#: part/models.py:955 +#: part/models.py:948 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:980 +#: part/models.py:973 msgid "Where is this item normally stored?" msgstr "Alapban hol tároljuk ezt az alkatrészt?" -#: part/models.py:1026 part/templates/part/part_base.html:376 +#: part/models.py:1019 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "Alapértelmezett beszállító" -#: part/models.py:1027 +#: part/models.py:1020 msgid "Default supplier part" msgstr "Alapértelmezett beszállítói alkatrész" -#: part/models.py:1034 +#: part/models.py:1027 msgid "Default Expiry" msgstr "Alapértelmezett lejárat" -#: part/models.py:1035 +#: part/models.py:1028 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:1044 +#: part/models.py:1037 msgid "Minimum allowed stock level" msgstr "Minimálisan megengedett készlet mennyiség" -#: part/models.py:1053 +#: part/models.py:1046 msgid "Units of measure for this part" msgstr "Alkatrész mértékegysége" -#: part/models.py:1060 +#: part/models.py:1053 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:1066 +#: part/models.py:1059 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:1072 +#: part/models.py:1065 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:1078 +#: part/models.py:1071 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:1084 +#: part/models.py:1077 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:1088 +#: part/models.py:1081 msgid "Is this part active?" msgstr "Aktív-e ez az alkatrész?" -#: part/models.py:1094 +#: part/models.py:1087 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:1100 +#: part/models.py:1093 msgid "BOM checksum" msgstr "Alkatrészjegyzék ellenőrző összeg" -#: part/models.py:1101 +#: part/models.py:1094 msgid "Stored BOM checksum" msgstr "Tárolt alkatrészjegyzék ellenőrző összeg" -#: part/models.py:1109 +#: part/models.py:1102 msgid "BOM checked by" msgstr "Alkatrészjegyzéket ellenőrizte" -#: part/models.py:1114 +#: part/models.py:1107 msgid "BOM checked date" msgstr "Alkatrészjegyzék ellenőrzési dátuma" -#: part/models.py:1130 +#: part/models.py:1123 msgid "Creation User" msgstr "Létrehozó" -#: part/models.py:1140 +#: part/models.py:1133 msgid "Owner responsible for this part" msgstr "Alkatrész felelőse" -#: part/models.py:1145 part/templates/part/part_base.html:339 +#: part/models.py:1138 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2470 +#: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "Utolsó leltár" -#: part/models.py:2018 +#: part/models.py:2011 msgid "Sell multiple" msgstr "Több értékesítése" -#: part/models.py:3037 +#: part/models.py:3002 msgid "Currency used to cache pricing calculations" msgstr "Árszámítások gyorstárazásához használt pénznem" -#: part/models.py:3053 +#: part/models.py:3018 msgid "Minimum BOM Cost" msgstr "Minimum alkatrészjegyzék költség" -#: part/models.py:3054 +#: part/models.py:3019 msgid "Minimum cost of component parts" msgstr "Összetevők minimum költsége" -#: part/models.py:3060 +#: part/models.py:3025 msgid "Maximum BOM Cost" msgstr "Maximum alkatrészjegyzék költség" -#: part/models.py:3061 +#: part/models.py:3026 msgid "Maximum cost of component parts" msgstr "Összetevők maximum költsége" -#: part/models.py:3067 +#: part/models.py:3032 msgid "Minimum Purchase Cost" msgstr "Minimum beszerzési ár" -#: part/models.py:3068 +#: part/models.py:3033 msgid "Minimum historical purchase cost" msgstr "Eddigi minimum beszerzési költség" -#: part/models.py:3074 +#: part/models.py:3039 msgid "Maximum Purchase Cost" msgstr "Maximum beszerzési ár" -#: part/models.py:3075 +#: part/models.py:3040 msgid "Maximum historical purchase cost" msgstr "Eddigi maximum beszerzési költség" -#: part/models.py:3081 +#: part/models.py:3046 msgid "Minimum Internal Price" msgstr "Minimum belső ár" -#: part/models.py:3082 +#: part/models.py:3047 msgid "Minimum cost based on internal price breaks" msgstr "Minimum költség a belső ársávok alapján" -#: part/models.py:3088 +#: part/models.py:3053 msgid "Maximum Internal Price" msgstr "Maximum belső ár" -#: part/models.py:3089 +#: part/models.py:3054 msgid "Maximum cost based on internal price breaks" msgstr "Maximum költség a belső ársávok alapján" -#: part/models.py:3095 +#: part/models.py:3060 msgid "Minimum Supplier Price" msgstr "Minimum beszállítói ár" -#: part/models.py:3096 +#: part/models.py:3061 msgid "Minimum price of part from external suppliers" msgstr "Minimum alkatrész ár a beszállítóktól" -#: part/models.py:3102 +#: part/models.py:3067 msgid "Maximum Supplier Price" msgstr "Maximum beszállítói ár" -#: part/models.py:3103 +#: part/models.py:3068 msgid "Maximum price of part from external suppliers" msgstr "Maximum alkatrész ár a beszállítóktól" -#: part/models.py:3109 +#: part/models.py:3074 msgid "Minimum Variant Cost" msgstr "Minimum alkatrészváltozat ár" -#: part/models.py:3110 +#: part/models.py:3075 msgid "Calculated minimum cost of variant parts" msgstr "Alkatrészváltozatok számolt minimum költsége" -#: part/models.py:3116 +#: part/models.py:3081 msgid "Maximum Variant Cost" msgstr "Maximum alkatrészváltozat ár" -#: part/models.py:3117 +#: part/models.py:3082 msgid "Calculated maximum cost of variant parts" msgstr "Alkatrészváltozatok számolt maximum költsége" -#: part/models.py:3124 +#: part/models.py:3089 msgid "Override minimum cost" msgstr "Minimum költség felülbírálása" -#: part/models.py:3131 +#: part/models.py:3096 msgid "Override maximum cost" msgstr "Maximum költség felülbírálása" -#: part/models.py:3138 +#: part/models.py:3103 msgid "Calculated overall minimum cost" msgstr "Számított általános minimum költség" -#: part/models.py:3145 +#: part/models.py:3110 msgid "Calculated overall maximum cost" msgstr "Számított általános maximum költség" -#: part/models.py:3151 +#: part/models.py:3116 msgid "Minimum Sale Price" msgstr "Minimum eladási ár" -#: part/models.py:3152 +#: part/models.py:3117 msgid "Minimum sale price based on price breaks" msgstr "Minimum eladási ár az ársávok alapján" -#: part/models.py:3158 +#: part/models.py:3123 msgid "Maximum Sale Price" msgstr "Maximum eladási ár" -#: part/models.py:3159 +#: part/models.py:3124 msgid "Maximum sale price based on price breaks" msgstr "Maximum eladási ár az ársávok alapján" -#: part/models.py:3165 +#: part/models.py:3130 msgid "Minimum Sale Cost" msgstr "Minimum eladási költség" -#: part/models.py:3166 +#: part/models.py:3131 msgid "Minimum historical sale price" msgstr "Eddigi minimum eladási ár" -#: part/models.py:3172 +#: part/models.py:3137 msgid "Maximum Sale Cost" msgstr "Maximum eladási költség" -#: part/models.py:3173 +#: part/models.py:3138 msgid "Maximum historical sale price" msgstr "Eddigi maximum eladási ár" -#: part/models.py:3192 +#: part/models.py:3157 msgid "Part for stocktake" msgstr "Leltározható alkatrész" -#: part/models.py:3197 +#: part/models.py:3162 msgid "Item Count" msgstr "Tételszám" -#: part/models.py:3198 +#: part/models.py:3163 msgid "Number of individual stock entries at time of stocktake" msgstr "Egyedi készlet tételek száma a leltárkor" -#: part/models.py:3206 +#: part/models.py:3171 msgid "Total available stock at time of stocktake" msgstr "Teljes készlet a leltárkor" -#: part/models.py:3210 part/models.py:3293 +#: part/models.py:3175 part/models.py:3258 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report.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/part.js:1086 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "Dátum" -#: part/models.py:3211 +#: part/models.py:3176 msgid "Date stocktake was performed" msgstr "Leltározva ekkor" -#: part/models.py:3219 +#: part/models.py:3184 msgid "Additional notes" msgstr "További megjegyzések" -#: part/models.py:3229 +#: part/models.py:3194 msgid "User who performed this stocktake" msgstr "Leltározta" -#: part/models.py:3235 +#: part/models.py:3200 msgid "Minimum Stock Cost" msgstr "Minimum készlet érték" -#: part/models.py:3236 +#: part/models.py:3201 msgid "Estimated minimum cost of stock on hand" msgstr "Becsült minimum raktárkészlet érték" -#: part/models.py:3242 +#: part/models.py:3207 msgid "Maximum Stock Cost" msgstr "Maximum készlet érték" -#: part/models.py:3243 +#: part/models.py:3208 msgid "Estimated maximum cost of stock on hand" msgstr "Becsült maximum raktárkészlet érték" -#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3264 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "Riport" -#: part/models.py:3300 +#: part/models.py:3265 msgid "Stocktake report file (generated internally)" msgstr "Leltár riport fájl (generált)" -#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3270 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "Alkatrész szám" -#: part/models.py:3306 +#: part/models.py:3271 msgid "Number of parts covered by stocktake" msgstr "Leltározott alkatrészek száma" -#: part/models.py:3316 +#: part/models.py:3281 msgid "User who requested this stocktake report" msgstr "Felhasználó aki a leltár riportot kérte" -#: part/models.py:3478 +#: part/models.py:3423 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "Hibás sablon név - legalább egy alfanumerikus karakter kötelező" -#: part/models.py:3489 +#: part/models.py:3444 part/models.py:3608 +msgid "Choices must be unique" +msgstr "A lehetőségek egyediek kell legyenek" + +#: part/models.py:3455 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:3500 +#: part/models.py:3466 msgid "Test template with the same key already exists for part" msgstr "Már létezik ilyen azonosítójú Teszt sablon ehhez az alkatrészhez" -#: part/models.py:3517 templates/js/translated/part.js:2878 +#: part/models.py:3483 templates/js/translated/part.js:2880 msgid "Test Name" msgstr "Teszt név" -#: part/models.py:3518 +#: part/models.py:3484 msgid "Enter a name for the test" msgstr "Add meg a teszt nevét" -#: part/models.py:3524 +#: part/models.py:3490 msgid "Test Key" msgstr "Teszt azonosító" -#: part/models.py:3525 +#: part/models.py:3491 msgid "Simplified key for the test" msgstr "Egyszerűsített Teszt azonosító" -#: part/models.py:3532 +#: part/models.py:3498 msgid "Test Description" msgstr "Teszt leírása" -#: part/models.py:3533 +#: part/models.py:3499 msgid "Enter description for this test" msgstr "Adj hozzá egy leírást ehhez a teszthez" -#: part/models.py:3537 report/models.py:208 -#: templates/js/translated/part.js:2899 +#: part/models.py:3503 report/models.py:209 +#: templates/js/translated/part.js:2901 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "Engedélyezve" -#: part/models.py:3537 +#: part/models.py:3503 msgid "Is this test enabled?" msgstr "Teszt engedélyezve?" -#: part/models.py:3542 templates/js/translated/part.js:2907 +#: part/models.py:3508 templates/js/translated/part.js:2909 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Kötelező" -#: part/models.py:3543 +#: part/models.py:3509 msgid "Is this test required to pass?" msgstr "Szükséges-e hogy ez a teszt sikeres legyen?" -#: part/models.py:3548 templates/js/translated/part.js:2915 +#: part/models.py:3514 templates/js/translated/part.js:2917 msgid "Requires Value" msgstr "Kötelező érték" -#: part/models.py:3549 +#: part/models.py:3515 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:3554 templates/js/translated/part.js:2922 +#: part/models.py:3520 templates/js/translated/part.js:2924 msgid "Requires Attachment" msgstr "Kötelező melléklet" -#: part/models.py:3556 +#: part/models.py:3522 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:3603 +#: part/models.py:3528 part/models.py:3667 templates/js/translated/part.js:1637 +msgid "Choices" +msgstr "Lehetőségek" + +#: part/models.py:3529 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3583 msgid "Checkbox parameters cannot have units" msgstr "Jelölőnégyzet paraméternek nem lehet mértékegysége" -#: part/models.py:3608 +#: part/models.py:3588 msgid "Checkbox parameters cannot have choices" msgstr "Jelölőnégyzet paraméternek nem lehetnek választási lehetőségei" -#: part/models.py:3628 -msgid "Choices must be unique" -msgstr "A lehetőségek egyediek kell legyenek" - -#: part/models.py:3645 +#: part/models.py:3625 msgid "Parameter template name must be unique" msgstr "A paraméter sablon nevének egyedinek kell lennie" -#: part/models.py:3660 +#: part/models.py:3640 msgid "Parameter Name" msgstr "Paraméter neve" -#: part/models.py:3667 +#: part/models.py:3647 msgid "Physical units for this parameter" msgstr "Paraméter mértékegysége" -#: part/models.py:3675 +#: part/models.py:3655 msgid "Parameter description" msgstr "Paraméter leírása" -#: part/models.py:3681 templates/js/translated/part.js:1627 +#: part/models.py:3661 templates/js/translated/part.js:1628 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "Jelölőnégyzet" -#: part/models.py:3682 +#: part/models.py:3662 msgid "Is this parameter a checkbox?" msgstr "Ez a paraméter egy jelölőnégyzet?" -#: part/models.py:3687 templates/js/translated/part.js:1636 -msgid "Choices" -msgstr "Lehetőségek" - -#: part/models.py:3688 +#: part/models.py:3668 msgid "Valid choices for this parameter (comma-separated)" msgstr "Választható lehetőségek (vesszővel elválasztva)" -#: part/models.py:3765 +#: part/models.py:3745 msgid "Invalid choice for parameter value" msgstr "Hibás választás a paraméterre" -#: part/models.py:3808 +#: part/models.py:3788 msgid "Parent Part" msgstr "Szülő alkatrész" -#: part/models.py:3816 part/models.py:3917 part/models.py:3918 +#: part/models.py:3796 part/models.py:3897 part/models.py:3898 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "Paraméter sablon" -#: part/models.py:3821 +#: part/models.py:3801 msgid "Data" msgstr "Adat" -#: part/models.py:3822 +#: part/models.py:3802 msgid "Parameter Value" msgstr "Paraméter értéke" -#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3904 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "Alapértelmezett érték" -#: part/models.py:3925 +#: part/models.py:3905 msgid "Default Parameter Value" msgstr "Alapértelmezett paraméter érték" -#: part/models.py:3963 +#: part/models.py:3943 msgid "Part ID or part name" msgstr "Alkatrész ID vagy alkatrész név" -#: part/models.py:3964 +#: part/models.py:3944 msgid "Unique part ID value" msgstr "Egyedi alkatrész ID értéke" -#: part/models.py:3966 +#: part/models.py:3946 msgid "Part IPN value" msgstr "Alkatrész IPN érték" -#: part/models.py:3967 +#: part/models.py:3947 msgid "Level" msgstr "Szint" -#: part/models.py:3967 +#: part/models.py:3947 msgid "BOM level" msgstr "Alkatrészjegyzék szint" -#: part/models.py:4057 +#: part/models.py:4037 msgid "Select parent part" msgstr "Szülő alkatrész kiválasztása" -#: part/models.py:4067 +#: part/models.py:4047 msgid "Sub part" msgstr "Al alkatrész" -#: part/models.py:4068 +#: part/models.py:4048 msgid "Select part to be used in BOM" msgstr "Válaszd ki az alkatrészjegyzékben használandó alkatrészt" -#: part/models.py:4079 +#: part/models.py:4059 msgid "BOM quantity for this BOM item" msgstr "Alkatrészjegyzék mennyiség ehhez az alkatrészjegyzék tételhez" -#: part/models.py:4085 +#: part/models.py:4065 msgid "This BOM item is optional" msgstr "Ez az alkatrészjegyzék tétel opcionális" -#: part/models.py:4091 +#: part/models.py:4071 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:4098 part/templates/part/upload_bom.html:55 +#: part/models.py:4078 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Többlet" -#: part/models.py:4099 +#: part/models.py:4079 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:4106 +#: part/models.py:4086 msgid "BOM item reference" msgstr "Alkatrészjegyzék tétel azonosító" -#: part/models.py:4114 +#: part/models.py:4094 msgid "BOM item notes" msgstr "Alkatrészjegyzék tétel megjegyzései" -#: part/models.py:4120 +#: part/models.py:4100 msgid "Checksum" msgstr "Ellenőrző összeg" -#: part/models.py:4121 +#: part/models.py:4101 msgid "BOM line checksum" msgstr "Alkatrészjegyzék sor ellenőrző összeg" -#: part/models.py:4126 templates/js/translated/table_filters.js:174 +#: part/models.py:4106 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "Jóváhagyva" -#: part/models.py:4127 +#: part/models.py:4107 msgid "This BOM item has been validated" msgstr "Ez a BOM tétel jóvá lett hagyva" -#: part/models.py:4132 part/templates/part/upload_bom.html:57 +#: part/models.py:4112 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:4133 +#: part/models.py:4113 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:4138 part/templates/part/upload_bom.html:56 +#: part/models.py:4118 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "Változatok" -#: part/models.py:4139 +#: part/models.py:4119 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:4224 stock/models.py:664 +#: part/models.py:4204 stock/models.py:662 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:4234 part/models.py:4236 +#: part/models.py:4214 part/models.py:4216 msgid "Sub part must be specified" msgstr "Al alkatrészt kötelező megadni" -#: part/models.py:4376 +#: part/models.py:4354 msgid "BOM Item Substitute" msgstr "Alkatrészjegyzék tétel helyettesítő" -#: part/models.py:4397 +#: part/models.py:4375 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:4410 +#: part/models.py:4388 msgid "Parent BOM item" msgstr "Szülő alkatrészjegyzék tétel" -#: part/models.py:4418 +#: part/models.py:4396 msgid "Substitute part" msgstr "Helyettesítő alkatrész" -#: part/models.py:4434 +#: part/models.py:4412 msgid "Part 1" msgstr "1.rész" -#: part/models.py:4442 +#: part/models.py:4420 msgid "Part 2" msgstr "2.rész" -#: part/models.py:4443 +#: part/models.py:4421 msgid "Select Related Part" msgstr "Válassz kapcsolódó alkatrészt" -#: part/models.py:4462 +#: part/models.py:4440 msgid "Part relationship cannot be created between a part and itself" msgstr "Alkatrész kapcsolat nem hozható létre önmagával" -#: part/models.py:4467 +#: part/models.py:4445 msgid "Duplicate relationship already exists" msgstr "Már létezik duplikált alkatrész kapcsolat" -#: part/serializers.py:119 part/serializers.py:141 +#: part/serializers.py:118 +msgid "Parent Category" +msgstr "" + +#: part/serializers.py:119 templates/js/translated/part.js:309 +msgid "Parent part category" +msgstr "Felsőbb szintű alkatrész kategória" + +#: part/serializers.py:126 part/serializers.py:148 #: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "Alkategóriák" -#: part/serializers.py:185 +#: part/serializers.py:180 msgid "Results" msgstr "Eredmények" -#: part/serializers.py:186 +#: part/serializers.py:181 msgid "Number of results recorded against this template" msgstr "Eszerint a sablon szerint rögzített eredmények száma" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 +#: part/serializers.py:205 part/serializers.py:223 stock/serializers.py:562 msgid "Purchase currency of this stock item" msgstr "Beszerzési pénzneme ennek a készlet tételnek" -#: part/serializers.py:273 +#: part/serializers.py:268 msgid "Number of parts using this template" msgstr "Ennyi alkatrész használja ezt a sablont" -#: part/serializers.py:397 +#: part/serializers.py:392 msgid "No parts selected" msgstr "Nincs kiválasztva alkatrész" -#: part/serializers.py:407 +#: part/serializers.py:402 msgid "Select category" msgstr "Válassz kategóriát" -#: part/serializers.py:442 +#: part/serializers.py:437 msgid "Original Part" msgstr "Eredeti alkatrész" -#: part/serializers.py:443 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "Válassz eredeti alkatrészt a másoláshoz" -#: part/serializers.py:448 +#: part/serializers.py:443 msgid "Copy Image" msgstr "Kép másolása" -#: part/serializers.py:449 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "Kép másolása az eredeti alkatrészről" -#: part/serializers.py:455 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "Alkatrészjegyzék másolása" -#: part/serializers.py:456 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "Alkatrészjegyzék másolása az eredeti alkatrészről" -#: part/serializers.py:462 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "Paraméterek másolása" -#: part/serializers.py:463 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "Paraméterek másolása az eredeti alkatrészről" -#: part/serializers.py:469 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "Megjegyzések másolása" -#: part/serializers.py:470 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "Megjegyzések másolása az eredeti alkatrészről" -#: part/serializers.py:488 +#: part/serializers.py:483 msgid "Initial Stock Quantity" msgstr "Kezdeti készlet mennyiség" -#: part/serializers.py:490 +#: part/serializers.py:485 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "Add meg a kezdeti készlet mennyiséget. Ha nulla akkor nem lesz készlet létrehozva." -#: part/serializers.py:497 +#: part/serializers.py:492 msgid "Initial Stock Location" msgstr "Kezdeti készlet hely" -#: part/serializers.py:498 +#: part/serializers.py:493 msgid "Specify initial stock location for this Part" msgstr "Add meg a kezdeti készlet helyét" -#: part/serializers.py:515 +#: part/serializers.py:510 msgid "Select supplier (or leave blank to skip)" msgstr "Válassz beszállítót (hagyd üresen ha nem kell létrehozni)" -#: part/serializers.py:531 +#: part/serializers.py:526 msgid "Select manufacturer (or leave blank to skip)" msgstr "Válassz gyártót (hagyd üresen ha nem kell létrehozni)" -#: part/serializers.py:541 +#: part/serializers.py:536 msgid "Manufacturer part number" msgstr "Gyártói cikkszám" -#: part/serializers.py:548 +#: part/serializers.py:543 msgid "Selected company is not a valid supplier" msgstr "A kiválasztott cég nem érvényes beszállító" -#: part/serializers.py:557 +#: part/serializers.py:552 msgid "Selected company is not a valid manufacturer" msgstr "A kiválasztott cég nem érvényes gyártó" -#: part/serializers.py:568 +#: part/serializers.py:563 msgid "Manufacturer part matching this MPN already exists" msgstr "Van már ilyen gyártói alkatrész" -#: part/serializers.py:575 +#: part/serializers.py:570 msgid "Supplier part matching this SKU already exists" msgstr "Van már ilyen beszállítói alkatrész" -#: part/serializers.py:838 +#: part/serializers.py:834 msgid "External Stock" msgstr "Külső raktárkészlet" -#: part/serializers.py:840 +#: part/serializers.py:836 msgid "Unallocated Stock" msgstr "Nem lefoglalt készlet" -#: part/serializers.py:843 +#: part/serializers.py:839 msgid "Variant Stock" msgstr "Variánsok Raktárkészlet" -#: part/serializers.py:873 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:471 +#: part/serializers.py:869 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:472 msgid "Duplicate Part" msgstr "Alkatrész másolása" -#: part/serializers.py:874 +#: part/serializers.py:870 msgid "Copy initial data from another Part" msgstr "Kezdeti adatok másolása egy másik alkatrészről" -#: part/serializers.py:880 templates/js/translated/part.js:102 +#: part/serializers.py:876 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "Kezdeti készlet" -#: part/serializers.py:881 +#: part/serializers.py:877 msgid "Create Part with initial stock quantity" msgstr "Kezdeti készlet mennyiség létrehozása" -#: part/serializers.py:887 +#: part/serializers.py:883 msgid "Supplier Information" msgstr "Beszállító információ" -#: part/serializers.py:888 +#: part/serializers.py:884 msgid "Add initial supplier information for this part" msgstr "Kezdeti beszállító adatok hozzáadása" -#: part/serializers.py:896 +#: part/serializers.py:892 msgid "Copy Category Parameters" msgstr "Kategória paraméterek másolása" -#: part/serializers.py:897 +#: part/serializers.py:893 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:902 +#: part/serializers.py:898 msgid "Existing Image" msgstr "Meglévő kép" -#: part/serializers.py:903 +#: part/serializers.py:899 msgid "Filename of an existing part image" msgstr "A meglévő alkatrész képfájl neve" -#: part/serializers.py:920 +#: part/serializers.py:916 msgid "Image file does not exist" msgstr "A képfájl nem létezik" -#: part/serializers.py:1126 +#: part/serializers.py:1122 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:1136 +#: part/serializers.py:1132 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:1146 +#: part/serializers.py:1142 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:1152 +#: part/serializers.py:1148 msgid "Exclude External Stock" msgstr "Külső készlet nélkül" -#: part/serializers.py:1153 +#: part/serializers.py:1149 msgid "Exclude stock items in external locations" msgstr "Külső helyeken lévő készlet nélkül" -#: part/serializers.py:1158 +#: part/serializers.py:1154 msgid "Generate Report" msgstr "Riport létrehozása" -#: part/serializers.py:1159 +#: part/serializers.py:1155 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:1164 +#: part/serializers.py:1160 msgid "Update Parts" msgstr "Alaktrészek frissítése" -#: part/serializers.py:1165 +#: part/serializers.py:1161 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:1173 +#: part/serializers.py:1169 msgid "Stocktake functionality is not enabled" msgstr "Leltár funkció nincs engedélyezve" -#: part/serializers.py:1279 +#: part/serializers.py:1275 msgid "Override calculated value for minimum price" msgstr "Számított minimum ár felülbírálása" -#: part/serializers.py:1286 +#: part/serializers.py:1282 msgid "Minimum price currency" msgstr "Minimum ár pénzneme" -#: part/serializers.py:1294 +#: part/serializers.py:1290 msgid "Override calculated value for maximum price" msgstr "Számított maximum ár felülbírálása" -#: part/serializers.py:1301 +#: part/serializers.py:1297 msgid "Maximum price currency" msgstr "Maximum ár pénzneme" -#: part/serializers.py:1330 +#: part/serializers.py:1326 msgid "Update" msgstr "Frissítés" -#: part/serializers.py:1331 +#: part/serializers.py:1327 msgid "Update pricing for this part" msgstr "Alkatrész árak frissítése" -#: part/serializers.py:1354 +#: part/serializers.py:1350 #, 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:1361 +#: part/serializers.py:1357 msgid "Minimum price must not be greater than maximum price" msgstr "A Minimum ár nem lehet nagyobb mint a Maximum ár" -#: part/serializers.py:1364 +#: part/serializers.py:1360 msgid "Maximum price must not be less than minimum price" msgstr "A Maximum ár nem lehet kisebb mint a Minimum ár" -#: part/serializers.py:1731 +#: part/serializers.py:1727 msgid "Select part to copy BOM from" msgstr "Válassz alkatrészt ahonnan az alkatrészjegyzéket másoljuk" -#: part/serializers.py:1739 +#: part/serializers.py:1735 msgid "Remove Existing Data" msgstr "Létező adat törlése" -#: part/serializers.py:1740 +#: part/serializers.py:1736 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:1745 +#: part/serializers.py:1741 msgid "Include Inherited" msgstr "Örököltekkel együtt" -#: part/serializers.py:1746 +#: part/serializers.py:1742 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:1751 +#: part/serializers.py:1747 msgid "Skip Invalid Rows" msgstr "Hibás sorok kihagyása" -#: part/serializers.py:1752 +#: part/serializers.py:1748 msgid "Enable this option to skip invalid rows" msgstr "Engedély a hibás sorok kihagyására" -#: part/serializers.py:1757 +#: part/serializers.py:1753 msgid "Copy Substitute Parts" msgstr "Helyettesítő alkatrészek másolása" -#: part/serializers.py:1758 +#: part/serializers.py:1754 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:1792 +#: part/serializers.py:1788 msgid "Clear Existing BOM" msgstr "Meglévő alkatrészjegyzék törlése" -#: part/serializers.py:1793 +#: part/serializers.py:1789 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:1823 +#: part/serializers.py:1819 msgid "No part column specified" msgstr "Nincs megadva alkatrész oszlop" -#: part/serializers.py:1867 +#: part/serializers.py:1863 msgid "Multiple matching parts found" msgstr "Több egyező alkatrész is található" -#: part/serializers.py:1870 +#: part/serializers.py:1866 msgid "No matching part found" msgstr "Nincs egyező alkatrész" -#: part/serializers.py:1873 +#: part/serializers.py:1869 msgid "Part is not designated as a component" msgstr "Az alkatrész nem lett összetevőként jelölve" -#: part/serializers.py:1882 +#: part/serializers.py:1878 msgid "Quantity not provided" msgstr "Mennyiség nincs megadva" -#: part/serializers.py:1890 +#: part/serializers.py:1886 msgid "Invalid quantity" msgstr "Érvénytelen mennyiség" -#: part/serializers.py:1911 +#: part/serializers.py:1907 msgid "At least one BOM item is required" msgstr "Legalább egy alkatrészjegyzék tétel szükséges" -#: part/stocktake.py:224 templates/js/translated/part.js:1066 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: part/stocktake.py:225 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "Teljes mennyiség" -#: part/stocktake.py:225 +#: part/stocktake.py:226 msgid "Total Cost Min" msgstr "Teljes költség min" -#: part/stocktake.py:226 +#: part/stocktake.py:227 msgid "Total Cost Max" msgstr "Teljes költség max" -#: part/stocktake.py:284 +#: part/stocktake.py:285 msgid "Stocktake Report Available" msgstr "Leltár riport rendelkezésre áll" -#: part/stocktake.py:285 +#: part/stocktake.py:286 msgid "A new stocktake report is available for download" msgstr "Egy új leltár riport készen áll a letöltésre" @@ -7159,7 +7228,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:251 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" @@ -7259,15 +7328,15 @@ msgstr "Alkatrész beszállítók" msgid "Part Manufacturers" msgstr "Alkatrész gyártók" -#: part/templates/part/detail.html:655 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "Kapcsolódó alkatrész" -#: part/templates/part/detail.html:663 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "Kapcsolódó alkatrész hozzáadása" -#: part/templates/part/detail.html:748 +#: part/templates/part/detail.html:750 msgid "Add Test Result Template" msgstr "Teszt eredmény sablon hozzáadása" @@ -7348,7 +7417,7 @@ msgstr "Készlet számolása" msgid "Transfer part stock" msgstr "Készlet áthelyezése" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" msgstr "Készlet műveletek" @@ -7420,7 +7489,7 @@ msgid "Minimum stock level" msgstr "Minimális készlet" #: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 -#: templates/js/translated/part.js:1264 templates/js/translated/part.js:2443 +#: templates/js/translated/part.js:1265 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7513,8 +7582,8 @@ msgstr "Változatok" #: 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:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/part.js:1243 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 #: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "Készlet" @@ -7557,7 +7626,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:247 +#: part/templates/part/prices.html:28 stock/admin.py:251 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 @@ -7634,8 +7703,8 @@ msgstr "Árazás Frissítése" #: part/templates/part/stock_count.html:7 #: templates/js/translated/model_renderers.js:227 -#: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 -#: templates/js/translated/part.js:2142 +#: templates/js/translated/part.js:705 templates/js/translated/part.js:2141 +#: templates/js/translated/part.js:2143 msgid "No Stock" msgstr "Nincs készlet" @@ -8007,7 +8076,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:307 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:308 msgid "Landscape" msgstr "Fekvő" @@ -8120,62 +8189,62 @@ msgstr "Plugin nem eltávolítható mivel még aktív" msgid "Uninstalled plugin successfully" msgstr "Plugin eltávolítása sikeres" -#: plugin/models.py:35 +#: plugin/models.py:36 msgid "Plugin Configuration" msgstr "Plugin beállítás" -#: plugin/models.py:36 +#: plugin/models.py:37 msgid "Plugin Configurations" msgstr "Plugin beállítások" -#: plugin/models.py:42 users/models.py:100 +#: plugin/models.py:43 users/models.py:100 msgid "Key" msgstr "Kulcs" -#: plugin/models.py:43 +#: plugin/models.py:44 msgid "Key of plugin" msgstr "Plugin kulcsa" -#: plugin/models.py:51 +#: plugin/models.py:52 msgid "PluginName of the plugin" msgstr "PluginNeve a pluginnak" -#: plugin/models.py:58 plugin/serializers.py:90 +#: plugin/models.py:59 plugin/serializers.py:90 msgid "Package Name" msgstr "Csomag neve" -#: plugin/models.py:60 +#: plugin/models.py:61 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:65 +#: plugin/models.py:66 msgid "Is the plugin active" msgstr "Aktív-e a plugin" -#: plugin/models.py:156 templates/js/translated/table_filters.js:370 +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "Beépítve" -#: plugin/models.py:165 +#: plugin/models.py:166 msgid "Sample plugin" msgstr "Példa plugin" -#: plugin/models.py:173 +#: plugin/models.py:174 msgid "Builtin Plugin" msgstr "Beépített plugin" -#: plugin/models.py:181 +#: plugin/models.py:182 msgid "Package Plugin" msgstr "Csomag plugin" -#: plugin/models.py:205 report/models.py:474 +#: plugin/models.py:220 report/models.py:475 #: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "Bővítmény" -#: plugin/models.py:252 +#: plugin/models.py:267 msgid "Method" msgstr "Módszer" @@ -8183,17 +8252,17 @@ msgstr "Módszer" msgid "No author found" msgstr "Nincs szerző" -#: plugin/registry.py:597 +#: plugin/registry.py:534 #, 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:600 +#: plugin/registry.py:537 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "A pluginhoz minimum {v} verzió kell" -#: plugin/registry.py:602 +#: plugin/registry.py:539 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "A pluginhoz maximum {v} verzió kell" @@ -8308,23 +8377,19 @@ msgstr "Plugin aktiválása" msgid "Activate this plugin" msgstr "Plugin bekapcsolása" -#: plugin/serializers.py:234 +#: plugin/serializers.py:226 msgid "Delete configuration" msgstr "Konfiguráció törlése" -#: plugin/serializers.py:235 +#: plugin/serializers.py:227 msgid "Delete the plugin configuration from the database" msgstr "Plugin konfiguráció törlése az adatbázisból" -#: report/api.py:77 +#: report/api.py:88 msgid "No valid objects provided to template" msgstr "Nincs érvényes objektum megadva a sablonhoz" -#: report/api.py:89 report/serializers.py:53 -msgid "Model Type" -msgstr "" - -#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/api.py:103 report/models.py:439 report/serializers.py:98 #: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 #: templates/js/translated/return_order.js:353 #: templates/js/translated/sales_order.js:887 @@ -8332,176 +8397,176 @@ msgstr "" msgid "Items" msgstr "Tételek" -#: report/api.py:168 +#: report/api.py:180 msgid "Plugin not found" msgstr "" -#: report/api.py:170 +#: report/api.py:182 msgid "Plugin is not active" msgstr "" -#: report/api.py:172 +#: report/api.py:184 msgid "Plugin does not support label printing" msgstr "" -#: report/api.py:221 +#: report/api.py:233 msgid "Invalid label dimensions" msgstr "" -#: report/api.py:236 report/api.py:316 +#: report/api.py:248 report/api.py:329 msgid "No valid items provided to template" msgstr "" -#: report/api.py:271 +#: report/api.py:283 msgid "Error printing label" msgstr "Címkenyomtatási hiba" -#: report/api.py:362 report/api.py:398 +#: report/api.py:375 report/api.py:411 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "A '{template}' sablon fájl hiányzik vagy nem érhető el" -#: report/helpers.py:41 +#: report/helpers.py:43 msgid "A4" msgstr "A4" -#: report/helpers.py:42 +#: report/helpers.py:44 msgid "A3" msgstr "A3" -#: report/helpers.py:43 +#: report/helpers.py:45 msgid "Legal" msgstr "Jogi információk" -#: report/helpers.py:44 +#: report/helpers.py:46 msgid "Letter" msgstr "„Letter” méret" -#: report/models.py:118 +#: report/models.py:119 msgid "Template file with this name already exists" msgstr "" -#: report/models.py:150 +#: report/models.py:151 msgid "Template name" msgstr "Sablon neve" -#: report/models.py:156 +#: report/models.py:157 msgid "Template description" msgstr "" -#: report/models.py:162 +#: report/models.py:163 msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Filename Pattern" msgstr "Fájlnév minta" -#: report/models.py:203 +#: report/models.py:204 msgid "Pattern for generating filenames" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Template is enabled" msgstr "" -#: report/models.py:214 +#: report/models.py:215 msgid "Target model type for template" msgstr "" -#: report/models.py:234 +#: report/models.py:235 msgid "Filters" msgstr "Szűrők" -#: report/models.py:235 +#: report/models.py:236 msgid "Template query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:294 report/models.py:361 +#: report/models.py:295 report/models.py:362 msgid "Template file" msgstr "" -#: report/models.py:302 +#: report/models.py:303 msgid "Page size for PDF reports" msgstr "Lapméret a PDF riportokhoz" -#: report/models.py:308 +#: report/models.py:309 msgid "Render report in landscape orientation" msgstr "Jelentés fekvő nézetben" -#: report/models.py:367 +#: report/models.py:368 msgid "Width [mm]" msgstr "Szélesség [mm]" -#: report/models.py:368 +#: report/models.py:369 msgid "Label width, specified in mm" msgstr "Címke szélessége, mm-ben" -#: report/models.py:374 +#: report/models.py:375 msgid "Height [mm]" msgstr "Magasság [mm]" -#: report/models.py:375 +#: report/models.py:376 msgid "Label height, specified in mm" msgstr "Címke magassága, mm-ben" -#: report/models.py:438 +#: report/models.py:439 msgid "Number of items to process" msgstr "" -#: report/models.py:444 +#: report/models.py:445 msgid "Report generation is complete" msgstr "" -#: report/models.py:448 templates/js/translated/build.js:2177 +#: report/models.py:449 templates/js/translated/build.js:2177 msgid "Progress" msgstr "Haladás" -#: report/models.py:448 +#: report/models.py:449 msgid "Report generation progress" msgstr "" -#: report/models.py:456 +#: report/models.py:457 msgid "Report Template" msgstr "" -#: report/models.py:463 report/models.py:486 +#: report/models.py:464 report/models.py:487 msgid "Output File" msgstr "" -#: report/models.py:464 report/models.py:487 +#: report/models.py:465 report/models.py:488 msgid "Generated output file" msgstr "" -#: report/models.py:475 +#: report/models.py:476 msgid "Label output plugin" msgstr "" -#: report/models.py:479 +#: report/models.py:480 msgid "Label Template" msgstr "" -#: report/models.py:502 +#: report/models.py:503 msgid "Snippet" msgstr "Részlet" -#: report/models.py:503 +#: report/models.py:504 msgid "Report snippet file" msgstr "Riport részlet fájl" -#: report/models.py:510 +#: report/models.py:511 msgid "Snippet file description" msgstr "Részlet fájl leírása" -#: report/models.py:528 +#: report/models.py:529 msgid "Asset" msgstr "Eszköz" -#: report/models.py:529 +#: report/models.py:530 msgid "Report asset file" msgstr "Riport asset fájl" -#: report/models.py:536 +#: report/models.py:537 msgid "Asset file description" msgstr "Asset fájl leírása" @@ -8574,8 +8639,8 @@ msgid "Total" msgstr "Összesen" #: report/templates/report/inventree_return_order_report.html:25 -#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 -#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:824 +#: stock/serializers.py:149 stock/templates/stock/item_base.html:311 #: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 #: templates/js/translated/build.js:2355 #: templates/js/translated/model_renderers.js:230 @@ -8605,32 +8670,32 @@ msgstr "Teszt eredmények" msgid "Test" msgstr "Teszt" -#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2412 msgid "Result" msgstr "Eredmény" -#: report/templates/report/inventree_test_report.html:130 +#: report/templates/report/inventree_test_report.html:129 msgid "Pass" msgstr "Sikeres" -#: report/templates/report/inventree_test_report.html:132 +#: report/templates/report/inventree_test_report.html:131 msgid "Fail" msgstr "Sikertelen" -#: report/templates/report/inventree_test_report.html:139 +#: report/templates/report/inventree_test_report.html:138 msgid "No result (required)" msgstr "Nincs eredmény (szükséges)" -#: report/templates/report/inventree_test_report.html:141 +#: report/templates/report/inventree_test_report.html:140 msgid "No result" msgstr "Nincs eredmény" -#: report/templates/report/inventree_test_report.html:154 +#: report/templates/report/inventree_test_report.html:153 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "Beépített tételek" -#: report/templates/report/inventree_test_report.html:168 stock/admin.py:162 +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 #: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 #: templates/js/translated/stock.js:3110 msgid "Serial" @@ -8652,654 +8717,670 @@ msgstr "part_image elem csak alkatrész példánynál használható" 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:172 +#: stock/admin.py:51 stock/admin.py:171 msgid "Location ID" msgstr "Hely ID" -#: stock/admin.py:54 stock/admin.py:176 +#: stock/admin.py:53 stock/admin.py:175 msgid "Location Name" msgstr "Hely neve" -#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/admin.py:63 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "Hely elérési út" -#: stock/admin.py:149 +#: stock/admin.py:148 msgid "Stock Item ID" msgstr "Készlet tétel ID" -#: stock/admin.py:168 +#: stock/admin.py:167 msgid "Status Code" msgstr "Státuszkód" -#: stock/admin.py:180 +#: stock/admin.py:179 msgid "Supplier Part ID" msgstr "Beszállítói cikkszám" -#: stock/admin.py:185 +#: stock/admin.py:184 +msgid "Supplier Part SKU" +msgstr "" + +#: stock/admin.py:189 msgid "Supplier ID" msgstr "Beszállító ID" -#: stock/admin.py:191 +#: stock/admin.py:195 msgid "Supplier Name" msgstr "Beszállító neve" -#: stock/admin.py:196 +#: stock/admin.py:200 msgid "Customer ID" msgstr "Vevő ID" -#: stock/admin.py:201 stock/models.py:806 +#: stock/admin.py:205 stock/models.py:804 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "Beépítve ebbe" -#: stock/admin.py:206 +#: stock/admin.py:210 msgid "Build ID" msgstr "Gyártás ID" -#: stock/admin.py:216 +#: stock/admin.py:220 msgid "Sales Order ID" msgstr "Vevői rendelés ID" -#: stock/admin.py:221 +#: stock/admin.py:225 msgid "Purchase Order ID" msgstr "Vevői rendelés azonosító" -#: stock/admin.py:236 +#: stock/admin.py:240 msgid "Review Needed" msgstr "Felülvizsgálat szükséges" -#: stock/admin.py:241 +#: stock/admin.py:245 msgid "Delete on Deplete" msgstr "Törlés ha kimerül" -#: stock/admin.py:256 stock/models.py:900 +#: stock/admin.py:260 stock/models.py:898 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "Lejárati dátum" -#: stock/api.py:318 +#: stock/api.py:312 msgid "Filter by location depth" msgstr "Hely mélységre szűrés" -#: stock/api.py:338 +#: stock/api.py:332 +msgid "Filter by top-level locations" +msgstr "" + +#: stock/api.py:347 msgid "Include sub-locations in filtered results" msgstr "Szűrt eredmények tartalmazzák az alhelyeket" -#: stock/api.py:359 +#: stock/api.py:369 stock/serializers.py:1085 msgid "Parent Location" msgstr "Szülő hely" -#: stock/api.py:360 +#: stock/api.py:370 msgid "Filter by parent location" msgstr "Szülő helyre szűrés" -#: stock/api.py:615 templates/js/translated/table_filters.js:427 +#: stock/api.py:625 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "Külső hely" -#: stock/api.py:803 +#: stock/api.py:813 msgid "Part Tree" msgstr "Alkatrész fa" -#: stock/api.py:833 +#: stock/api.py:843 msgid "Expiry date before" msgstr "Lejárat előtt" -#: stock/api.py:837 +#: stock/api.py:847 msgid "Expiry date after" msgstr "Lejárat után" -#: stock/api.py:840 stock/templates/stock/item_base.html:439 +#: stock/api.py:850 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "Állott" -#: stock/api.py:927 +#: stock/api.py:937 msgid "Quantity is required" msgstr "Mennyiség megadása kötelező" -#: stock/api.py:933 +#: stock/api.py:943 msgid "Valid part must be supplied" msgstr "Egy érvényes alkatrészt meg kell adni" -#: stock/api.py:964 +#: stock/api.py:974 msgid "The given supplier part does not exist" msgstr "A megadott beszállítói alkatrész nem létezik" -#: stock/api.py:974 +#: stock/api.py:984 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:1005 +#: stock/api.py:1015 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:59 +#: stock/models.py:60 msgid "Stock Location type" msgstr "Készlethely típus" -#: stock/models.py:60 +#: stock/models.py:61 msgid "Stock Location types" msgstr "Készlethely típusok" -#: stock/models.py:86 +#: stock/models.py:87 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:123 stock/models.py:788 +#: stock/models.py:124 stock/models.py:786 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Készlet hely" -#: stock/models.py:124 stock/templates/stock/location.html:186 +#: stock/models.py:125 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "Készlethelyek" -#: stock/models.py:166 stock/models.py:949 +#: stock/models.py:167 stock/models.py:947 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "Tulajdonos" -#: stock/models.py:167 stock/models.py:950 +#: stock/models.py:168 stock/models.py:948 msgid "Select Owner" msgstr "Tulajdonos kiválasztása" -#: stock/models.py:175 +#: stock/models.py:176 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "A szerkezeti raktári helyekre nem lehet direktben raktározni, csak az al-helyekre." -#: stock/models.py:182 templates/js/translated/stock.js:2781 +#: stock/models.py:183 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "Külső" -#: stock/models.py:183 +#: stock/models.py:184 msgid "This is an external stock location" msgstr "Ez egy külső készlethely" -#: stock/models.py:189 templates/js/translated/stock.js:2790 +#: stock/models.py:190 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "Helyszín típusa" -#: stock/models.py:193 +#: stock/models.py:194 msgid "Stock location type of this location" msgstr "Tárolóhely típus" -#: stock/models.py:262 +#: stock/models.py:261 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:643 +#: stock/models.py:641 msgid "Stock items cannot be located into structural stock locations!" msgstr "A szerkezeti raktári helyre nem lehet készletet felvenni!" -#: stock/models.py:670 stock/serializers.py:419 +#: stock/models.py:668 stock/serializers.py:446 msgid "Stock item cannot be created for virtual parts" msgstr "Virtuális alkatrészből nem lehet készletet létrehozni" -#: stock/models.py:687 +#: stock/models.py:685 #, 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:697 stock/models.py:710 +#: stock/models.py:695 stock/models.py:708 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:700 +#: stock/models.py:698 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:724 +#: stock/models.py:722 msgid "Item cannot belong to itself" msgstr "A tétel nem tartozhat saját magához" -#: stock/models.py:729 +#: stock/models.py:727 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:742 +#: stock/models.py:740 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:758 +#: stock/models.py:756 msgid "Parent Stock Item" msgstr "Szülő készlet tétel" -#: stock/models.py:770 +#: stock/models.py:768 msgid "Base part" msgstr "Kiindulási alkatrész" -#: stock/models.py:780 +#: stock/models.py:778 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:792 +#: stock/models.py:790 msgid "Where is this stock item located?" msgstr "Hol található ez az alkatrész?" -#: stock/models.py:800 stock/serializers.py:1480 +#: stock/models.py:798 stock/serializers.py:1476 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:811 +#: stock/models.py:809 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:830 +#: stock/models.py:828 msgid "Serial number for this item" msgstr "Sorozatszám ehhez a tételhez" -#: stock/models.py:844 stock/serializers.py:1463 +#: stock/models.py:842 stock/serializers.py:1459 msgid "Batch code for this stock item" msgstr "Batch kód ehhez a készlet tételhez" -#: stock/models.py:849 +#: stock/models.py:847 msgid "Stock Quantity" msgstr "Készlet mennyiség" -#: stock/models.py:859 +#: stock/models.py:857 msgid "Source Build" msgstr "Forrás gyártás" -#: stock/models.py:862 +#: stock/models.py:860 msgid "Build for this stock item" msgstr "Gyártás ehhez a készlet tételhez" -#: stock/models.py:869 stock/templates/stock/item_base.html:363 +#: stock/models.py:867 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "Felhasználva ebben" -#: stock/models.py:872 +#: stock/models.py:870 msgid "Build order which consumed this stock item" msgstr "Felhasználva ebben a gyártásban" -#: stock/models.py:881 +#: stock/models.py:879 msgid "Source Purchase Order" msgstr "Forrás beszerzési rendelés" -#: stock/models.py:885 +#: stock/models.py:883 msgid "Purchase order for this stock item" msgstr "Beszerzés ehhez a készlet tételhez" -#: stock/models.py:891 +#: stock/models.py:889 msgid "Destination Sales Order" msgstr "Cél vevői rendelés" -#: stock/models.py:902 +#: stock/models.py:900 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:920 +#: stock/models.py:918 msgid "Delete on deplete" msgstr "Törlés ha kimerül" -#: stock/models.py:921 +#: stock/models.py:919 msgid "Delete this Stock Item when stock is depleted" msgstr "Készlet tétel törlése ha kimerül" -#: stock/models.py:941 +#: stock/models.py:939 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:972 +#: stock/models.py:970 msgid "Converted to part" msgstr "Alkatrésszé alakítva" -#: stock/models.py:1490 +#: stock/models.py:1486 msgid "Part is not set as trackable" msgstr "Az alkatrész nem követésre kötelezett" -#: stock/models.py:1496 +#: stock/models.py:1492 msgid "Quantity must be integer" msgstr "Mennyiség egész szám kell legyen" -#: stock/models.py:1504 +#: stock/models.py:1500 #, 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:1510 +#: stock/models.py:1506 msgid "Serial numbers must be a list of integers" msgstr "A sorozatszám egész számok listája kell legyen" -#: stock/models.py:1515 +#: stock/models.py:1511 msgid "Quantity does not match serial numbers" msgstr "A mennyiség nem egyezik a megadott sorozatszámok számával" -#: stock/models.py:1523 stock/serializers.py:658 +#: stock/models.py:1519 stock/serializers.py:660 msgid "Serial numbers already exist" msgstr "A sorozatszámok már léteznek" -#: stock/models.py:1620 +#: stock/models.py:1616 msgid "Test template does not exist" msgstr "Ez a Teszt sablon nem létezik" -#: stock/models.py:1638 +#: stock/models.py:1634 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:1642 +#: stock/models.py:1638 msgid "Stock item is installed in another item" msgstr "Készlet tétel beépül egy másikba" -#: stock/models.py:1645 +#: stock/models.py:1641 msgid "Stock item contains other items" msgstr "A készlet tétel más tételeket tartalmaz" -#: stock/models.py:1648 +#: stock/models.py:1644 msgid "Stock item has been assigned to a customer" msgstr "Készlet tétel hozzárendelve egy vevőhöz" -#: stock/models.py:1651 +#: stock/models.py:1647 msgid "Stock item is currently in production" msgstr "Készlet tétel gyártás alatt" -#: stock/models.py:1654 +#: stock/models.py:1650 msgid "Serialized stock cannot be merged" msgstr "Követésre kötelezett készlet nem vonható össze" -#: stock/models.py:1661 stock/serializers.py:1369 +#: stock/models.py:1657 stock/serializers.py:1365 msgid "Duplicate stock items" msgstr "Duplikált készlet tételek vannak" -#: stock/models.py:1665 +#: stock/models.py:1661 msgid "Stock items must refer to the same part" msgstr "A készlet tétel ugyanarra az alkatrészre kell vonatkozzon" -#: stock/models.py:1673 +#: stock/models.py:1669 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:1678 +#: stock/models.py:1674 msgid "Stock status codes must match" msgstr "Készlet tételek állapotainak egyeznie kell" -#: stock/models.py:1905 +#: stock/models.py:1901 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:2326 +#: stock/models.py:2310 msgid "Entry notes" msgstr "Bejegyzés megjegyzései" -#: stock/models.py:2391 +#: stock/models.py:2378 msgid "Value must be provided for this test" msgstr "Ehhez a teszthez meg kell adni értéket" -#: stock/models.py:2396 +#: stock/models.py:2383 msgid "Attachment must be uploaded for this test" msgstr "Ehhez a teszthez fel kell tölteni mellékletet" -#: stock/models.py:2423 +#: stock/models.py:2388 +msgid "Invalid value for this test" +msgstr "" + +#: stock/models.py:2412 msgid "Test result" msgstr "Teszt eredménye" -#: stock/models.py:2430 +#: stock/models.py:2419 msgid "Test output value" msgstr "Teszt kimeneti értéke" -#: stock/models.py:2438 +#: stock/models.py:2427 msgid "Test result attachment" msgstr "Teszt eredmény melléklet" -#: stock/models.py:2442 +#: stock/models.py:2431 msgid "Test notes" msgstr "Tesztek megjegyzései" -#: stock/models.py:2450 templates/js/translated/stock.js:1548 +#: stock/models.py:2439 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "Teszt állomás" -#: stock/models.py:2451 +#: stock/models.py:2440 msgid "The identifier of the test station where the test was performed" msgstr "A tesztet elvégző tesztállomás azonosítója" -#: stock/models.py:2457 +#: stock/models.py:2446 msgid "Started" msgstr "Elkezdődött" -#: stock/models.py:2458 +#: stock/models.py:2447 msgid "The timestamp of the test start" msgstr "A teszt indításának időpontja" -#: stock/models.py:2464 +#: stock/models.py:2453 msgid "Finished" msgstr "Befejezve" -#: stock/models.py:2465 +#: stock/models.py:2454 msgid "The timestamp of the test finish" msgstr "A teszt befejezésének időpontja" -#: stock/serializers.py:75 +#: stock/serializers.py:74 msgid "Generated batch code" msgstr "" -#: stock/serializers.py:84 +#: stock/serializers.py:83 msgid "Select build order" msgstr "" -#: stock/serializers.py:93 +#: stock/serializers.py:92 msgid "Select stock item to generate batch code for" msgstr "" -#: stock/serializers.py:102 +#: stock/serializers.py:101 msgid "Select location to generate batch code for" msgstr "" -#: stock/serializers.py:111 +#: stock/serializers.py:110 msgid "Select part to generate batch code for" msgstr "" -#: stock/serializers.py:120 +#: stock/serializers.py:119 msgid "Select purchase order" msgstr "" -#: stock/serializers.py:127 +#: stock/serializers.py:126 msgid "Enter quantity for batch code" msgstr "" -#: stock/serializers.py:150 +#: stock/serializers.py:149 msgid "Generated serial number" msgstr "" -#: stock/serializers.py:159 +#: stock/serializers.py:158 msgid "Select part to generate serial number for" msgstr "" -#: stock/serializers.py:167 +#: stock/serializers.py:166 msgid "Quantity of serial numbers to generate" msgstr "" -#: stock/serializers.py:229 +#: stock/serializers.py:228 msgid "Test template for this result" msgstr "Az eredmény Teszt sablonja" -#: stock/serializers.py:248 +#: stock/serializers.py:247 msgid "Template ID or test name must be provided" msgstr "Sablon azonosító vagy Teszt név szükséges" -#: stock/serializers.py:280 +#: stock/serializers.py:279 msgid "The test finished time cannot be earlier than the test started time" msgstr "A tesztet nem lehet a kezdésnél hamarabb befejezni" -#: stock/serializers.py:313 +#: stock/serializers.py:315 msgid "Serial number is too large" msgstr "Szériaszám túl nagy" -#: stock/serializers.py:411 +#: stock/serializers.py:438 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:531 +#: stock/serializers.py:558 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:593 +#: stock/serializers.py:595 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:606 +#: stock/serializers.py:608 #, 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:613 +#: stock/serializers.py:615 msgid "Enter serial numbers for new items" msgstr "Írd be a sorozatszámokat az új tételekhez" -#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 +#: stock/serializers.py:626 stock/serializers.py:1322 stock/serializers.py:1578 msgid "Destination stock location" msgstr "Cél készlet hely" -#: stock/serializers.py:631 +#: stock/serializers.py:633 msgid "Optional note field" msgstr "Opcionális megjegyzés mező" -#: stock/serializers.py:641 +#: stock/serializers.py:643 msgid "Serial numbers cannot be assigned to this part" msgstr "Sorozatszámokat nem lehet hozzárendelni ehhez az alkatrészhez" -#: stock/serializers.py:696 +#: stock/serializers.py:698 msgid "Select stock item to install" msgstr "Válaszd ki a beépítésre szánt készlet tételt" -#: stock/serializers.py:703 +#: stock/serializers.py:705 msgid "Quantity to Install" msgstr "Beépítendő mennyiség" -#: stock/serializers.py:704 +#: stock/serializers.py:706 msgid "Enter the quantity of items to install" msgstr "Adja meg a beépítendő mennyiséget" -#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 -#: stock/serializers.py:935 +#: stock/serializers.py:711 stock/serializers.py:791 stock/serializers.py:887 +#: stock/serializers.py:937 msgid "Add transaction note (optional)" msgstr "Tranzakció megjegyzés hozzáadása (opcionális)" -#: stock/serializers.py:717 +#: stock/serializers.py:719 msgid "Quantity to install must be at least 1" msgstr "A beépítendő mennyiség legalább 1 legyen" -#: stock/serializers.py:725 +#: stock/serializers.py:727 msgid "Stock item is unavailable" msgstr "Készlet tétel nem elérhető" -#: stock/serializers.py:736 +#: stock/serializers.py:738 msgid "Selected part is not in the Bill of Materials" msgstr "A kiválasztott alkatrész nincs az alkatrészjegyzékben" -#: stock/serializers.py:749 +#: stock/serializers.py:751 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:784 +#: stock/serializers.py:786 msgid "Destination location for uninstalled item" msgstr "Cél hely a kiszedett tételeknek" -#: stock/serializers.py:819 +#: stock/serializers.py:821 msgid "Select part to convert stock item into" msgstr "Válassz alkatrészt amire konvertáljuk a készletet" -#: stock/serializers.py:832 +#: stock/serializers.py:834 msgid "Selected part is not a valid option for conversion" msgstr "A kiválasztott alkatrész nem megfelelő a konverzióhoz" -#: stock/serializers.py:849 +#: stock/serializers.py:851 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:880 +#: stock/serializers.py:882 msgid "Destination location for returned item" msgstr "Cél hely a visszatérő tételeknek" -#: stock/serializers.py:917 +#: stock/serializers.py:919 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:923 +#: stock/serializers.py:925 msgid "No stock items selected" msgstr "Nincs készlet tétel kiválasztva" -#: stock/serializers.py:1019 stock/serializers.py:1082 +#: stock/serializers.py:1021 stock/serializers.py:1093 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:220 +#: stock/templates/stock/location.html:222 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "Alhelyek" -#: stock/serializers.py:1198 +#: stock/serializers.py:1086 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "Felsőbb szintű készlet hely" + +#: stock/serializers.py:1194 msgid "Part must be salable" msgstr "Az alkatrésznek értékesíthetőnek kell lennie" -#: stock/serializers.py:1202 +#: stock/serializers.py:1198 msgid "Item is allocated to a sales order" msgstr "A tétel egy vevő rendeléshez foglalt" -#: stock/serializers.py:1206 +#: stock/serializers.py:1202 msgid "Item is allocated to a build order" msgstr "A tétel egy gyártási utasításhoz foglalt" -#: stock/serializers.py:1230 +#: stock/serializers.py:1226 msgid "Customer to assign stock items" msgstr "Vevő akihez rendeljük a készlet tételeket" -#: stock/serializers.py:1236 +#: stock/serializers.py:1232 msgid "Selected company is not a customer" msgstr "A kiválasztott cég nem egy vevő" -#: stock/serializers.py:1244 +#: stock/serializers.py:1240 msgid "Stock assignment notes" msgstr "Készlet hozzárendelés megjegyzései" -#: stock/serializers.py:1254 stock/serializers.py:1508 +#: stock/serializers.py:1250 stock/serializers.py:1504 msgid "A list of stock items must be provided" msgstr "A készlet tételek listáját meg kell adni" -#: stock/serializers.py:1333 +#: stock/serializers.py:1329 msgid "Stock merging notes" msgstr "Készlet összevonás megjegyzései" -#: stock/serializers.py:1338 +#: stock/serializers.py:1334 msgid "Allow mismatched suppliers" msgstr "Nem egyező beszállítók megengedése" -#: stock/serializers.py:1339 +#: stock/serializers.py:1335 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:1344 +#: stock/serializers.py:1340 msgid "Allow mismatched status" msgstr "Nem egyező állapotok megjelenítése" -#: stock/serializers.py:1345 +#: stock/serializers.py:1341 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:1355 +#: stock/serializers.py:1351 msgid "At least two stock items must be provided" msgstr "Legalább két készlet tételt meg kell adni" -#: stock/serializers.py:1422 +#: stock/serializers.py:1418 msgid "No Change" msgstr "Nincs változás" -#: stock/serializers.py:1451 +#: stock/serializers.py:1447 msgid "StockItem primary key value" msgstr "Készlet tétel elsődleges kulcs értéke" -#: stock/serializers.py:1470 +#: stock/serializers.py:1466 msgid "Stock item status code" msgstr "Készlet tétel státusz kódja" -#: stock/serializers.py:1498 +#: stock/serializers.py:1494 msgid "Stock transaction notes" msgstr "Készlet tranzakció megjegyzései" @@ -9452,7 +9533,7 @@ msgstr "Teszt adatok" msgid "Test Report" msgstr "Teszt riport" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276 msgid "Delete Test Data" msgstr "Teszt adatok törlése" @@ -9472,11 +9553,11 @@ msgstr "Beépített készlet tételek" msgid "Install Stock Item" msgstr "Készlet tétel beépítése" -#: stock/templates/stock/item.html:272 +#: stock/templates/stock/item.html:264 msgid "Delete all test results for this stock item" msgstr "Készlet tétel összes teszt eredményének törlése" -#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "Teszt eredmény hozzáadása" @@ -9762,28 +9843,28 @@ msgstr "Úgytűnik nem vagy ennek a készlethelynek a tulajdonosa. Ezt így nem msgid "Location Type" msgstr "" -#: stock/templates/stock/location.html:224 +#: stock/templates/stock/location.html:226 msgid "Create new stock location" msgstr "Új készlet hely létrehozása" -#: stock/templates/stock/location.html:225 +#: stock/templates/stock/location.html:227 msgid "New Location" msgstr "Új hely" -#: stock/templates/stock/location.html:295 +#: stock/templates/stock/location.html:299 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "készlet hely" -#: stock/templates/stock/location.html:317 +#: stock/templates/stock/location.html:321 msgid "Scanned stock container into this location" msgstr "Készlet tároló bevételezve erre a helyre" -#: stock/templates/stock/location.html:390 +#: stock/templates/stock/location.html:394 msgid "Stock Location QR Code" msgstr "Készlet hely QR kódja" -#: stock/templates/stock/location.html:401 +#: stock/templates/stock/location.html:405 msgid "Link Barcode to Stock Location" msgstr "Vonalkód hozzárendelése a készlet helyhez" @@ -10207,20 +10288,20 @@ msgstr "Beszerzési rendelés beállításai" msgid "Pricing Settings" msgstr "Árazási beállítások" -#: templates/InvenTree/settings/pricing.html:34 +#: templates/InvenTree/settings/pricing.html:35 msgid "Exchange Rates" msgstr "Árfolyamok" -#: templates/InvenTree/settings/pricing.html:38 +#: templates/InvenTree/settings/pricing.html:39 msgid "Update Now" msgstr "Frissítés most" -#: templates/InvenTree/settings/pricing.html:46 -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 msgid "Last Update" msgstr "Utolsó frissítés" -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:51 msgid "Never" msgstr "Soha" @@ -10277,8 +10358,8 @@ msgstr "Árfolyam" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:547 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 +#: templates/js/translated/part.js:393 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:402 msgid "Delete" msgstr "Törlés" @@ -10318,12 +10399,12 @@ msgid "No category parameter templates found" msgstr "Nincs kategória paraméter sablon" #: templates/InvenTree/settings/settings_staff_js.html:308 -#: templates/js/translated/part.js:1645 +#: templates/js/translated/part.js:1646 msgid "Edit Template" msgstr "Sablon szerkesztése" #: templates/InvenTree/settings/settings_staff_js.html:309 -#: templates/js/translated/part.js:1646 +#: templates/js/translated/part.js:1647 msgid "Delete Template" msgstr "Sablon törlése" @@ -10713,7 +10794,7 @@ msgid "Submit Bug Report" msgstr "Hibabejelentés küldése" #: templates/about.html:91 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 +#: templates/js/translated/helpers.js:589 msgid "copy to clipboard" msgstr "vágólapra másolás" @@ -10777,7 +10858,7 @@ msgid "Are you sure you want to sign out?" msgstr "Biztosan ki akarsz jelentkezni?" #: templates/account/logout.html:27 templates/allauth_2fa/backup_tokens.html:35 -#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:44 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45 msgid "Return to Site" msgstr "Vissza az alkalmazáshoz" @@ -10891,15 +10972,19 @@ msgstr "1. lépés" msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "Olvasd be a lenti QR kódot egy kiválaszott token generátorral (például a Google Authenticator-ral)." -#: templates/allauth_2fa/setup.html:23 +#: templates/allauth_2fa/setup.html:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 msgid "Step 2" msgstr "2. lépés" -#: templates/allauth_2fa/setup.html:27 +#: templates/allauth_2fa/setup.html:28 msgid "Input a token generated by the app:" msgstr "Írd be az app által létrehozott tokent:" -#: templates/allauth_2fa/setup.html:37 +#: templates/allauth_2fa/setup.html:38 msgid "Verify" msgstr "Ellenőrzés" @@ -10978,7 +11063,7 @@ msgid "Click on the following link to view this part" msgstr "Klikk a következő linkre az alkatrész megjelenítéséhez" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3217 +#: templates/js/translated/part.js:3219 msgid "Minimum Quantity" msgstr "Minimum mennyiség" @@ -11066,27 +11151,27 @@ msgstr "Mellékletek törlése" msgid "Delete attachments" msgstr "Mellékletek törlése" -#: templates/js/translated/attachment.js:253 +#: templates/js/translated/attachment.js:260 msgid "Attachment actions" msgstr "Mellékletek műveletei" -#: templates/js/translated/attachment.js:275 +#: templates/js/translated/attachment.js:294 msgid "No attachments found" msgstr "Nem találhatók mellékletek" -#: templates/js/translated/attachment.js:315 +#: templates/js/translated/attachment.js:334 msgid "Edit Attachment" msgstr "Melléklet szerkesztése" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:365 msgid "Upload Date" msgstr "Feltöltés dátuma" -#: templates/js/translated/attachment.js:366 +#: templates/js/translated/attachment.js:385 msgid "Edit attachment" msgstr "Melléklet szerkesztése" -#: templates/js/translated/attachment.js:374 +#: templates/js/translated/attachment.js:393 msgid "Delete attachment" msgstr "Melléklet törlése" @@ -11367,7 +11452,7 @@ msgid "Includes variant and substitute stock" msgstr "Változatokkal és helyettesítőkkel együtt" #: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 -#: templates/js/translated/part.js:1256 +#: templates/js/translated/part.js:1257 #: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "Változatokkal együtt" @@ -11694,7 +11779,7 @@ msgstr "Nincs a lekérdezéssel egyező gyártási utasítás" #: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 #: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 -#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "Kiválaszt" @@ -11737,8 +11822,8 @@ msgstr "gyártás sorok" msgid "No build lines found" msgstr "Nincsenek gyártási sorok" -#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 -#: templates/js/translated/part.js:1202 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:791 +#: templates/js/translated/part.js:1203 msgid "Trackable part" msgstr "Követésre kötelezett alkatrész" @@ -11924,7 +12009,7 @@ msgid "Delete Parameters" msgstr "Paraméterek törlése" #: templates/js/translated/company.js:1191 -#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2244 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2245 msgid "Order parts" msgstr "Alkatrész rendelés" @@ -11941,34 +12026,34 @@ msgid "No manufacturer parts found" msgstr "Nincs gyártói alkatrész" #: templates/js/translated/company.js:1279 -#: templates/js/translated/company.js:1567 templates/js/translated/part.js:798 -#: templates/js/translated/part.js:1210 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Template part" msgstr "Sablon alkatrész" #: templates/js/translated/company.js:1283 -#: templates/js/translated/company.js:1571 templates/js/translated/part.js:802 -#: templates/js/translated/part.js:1214 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:803 +#: templates/js/translated/part.js:1215 msgid "Assembled part" msgstr "Gyártmány alkatrész" -#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1464 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1465 msgid "No parameters found" msgstr "Nem található paraméter" -#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1527 +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1528 msgid "Edit parameter" msgstr "Paraméter szerkesztése" -#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1528 +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1529 msgid "Delete parameter" msgstr "Paraméter törlése" -#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1433 +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1434 msgid "Edit Parameter" msgstr "Paraméter szerkesztése" -#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1549 +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1550 msgid "Delete Parameter" msgstr "Paraméter törlése" @@ -12102,23 +12187,23 @@ msgstr "Form hibák vannak" msgid "No results found" msgstr "Nincs találat" -#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 msgid "Searching" msgstr "Keresés" -#: templates/js/translated/forms.js:2499 +#: templates/js/translated/forms.js:2500 msgid "Clear input" msgstr "Bevitel törlése" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "File Column" msgstr "Fájl oszlop" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "Field Name" msgstr "Mező név" -#: templates/js/translated/forms.js:3113 +#: templates/js/translated/forms.js:3114 msgid "Select Columns" msgstr "Oszlopok kiválasztása" @@ -12219,7 +12304,7 @@ msgstr "Nem találhatók hírek" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 -#: templates/js/translated/part.js:1604 +#: templates/js/translated/part.js:1605 msgid "ID" msgstr "Azonosító" @@ -12300,347 +12385,343 @@ msgstr "Alkatrész másolási opciók" msgid "Add Part Category" msgstr "Alkatrész kategória hozzáadása" -#: templates/js/translated/part.js:308 -msgid "Parent part category" -msgstr "Felsőbb szintű alkatrész kategória" - -#: templates/js/translated/part.js:332 templates/js/translated/stock.js:175 +#: templates/js/translated/part.js:333 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "Ikon (opcionális) - Az összes ikon felfedezése itt" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Category" msgstr "Alkatrész kategória létrehozása" -#: templates/js/translated/part.js:355 +#: templates/js/translated/part.js:356 msgid "Create new category after this one" msgstr "Új kategória létrehozása ez után" -#: templates/js/translated/part.js:356 +#: templates/js/translated/part.js:357 msgid "Part category created" msgstr "Alkatrész kategória létrehozva" -#: templates/js/translated/part.js:370 +#: templates/js/translated/part.js:371 msgid "Edit Part Category" msgstr "Alkatrész kategória szerkesztése" -#: templates/js/translated/part.js:383 +#: templates/js/translated/part.js:384 msgid "Are you sure you want to delete this part category?" msgstr "Biztos hogy törölni szeretnéd ezt az alkatrész kategóriát?" -#: templates/js/translated/part.js:388 +#: templates/js/translated/part.js:389 msgid "Move to parent category" msgstr "Áthelyezés fentebbi kategóriába" -#: templates/js/translated/part.js:397 +#: templates/js/translated/part.js:398 msgid "Delete Part Category" msgstr "Alkatrész kategória törlése" -#: templates/js/translated/part.js:401 +#: templates/js/translated/part.js:402 msgid "Action for parts in this category" msgstr "A kategóriában lévő alkatrészek kezelése" -#: templates/js/translated/part.js:406 +#: templates/js/translated/part.js:407 msgid "Action for child categories" msgstr "Alkategóriák kezelése" -#: templates/js/translated/part.js:430 +#: templates/js/translated/part.js:431 msgid "Create Part" msgstr "Alkatrész létrehozása" -#: templates/js/translated/part.js:432 +#: templates/js/translated/part.js:433 msgid "Create another part after this one" msgstr "Új alkatrész létrehozása ez után" -#: templates/js/translated/part.js:433 +#: templates/js/translated/part.js:434 msgid "Part created successfully" msgstr "Alkatrész sikeresen létrehozva" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:462 msgid "Edit Part" msgstr "Alkatrész szerkesztése" -#: templates/js/translated/part.js:463 +#: templates/js/translated/part.js:464 msgid "Part edited" msgstr "Alkatrész módosítva" -#: templates/js/translated/part.js:474 +#: templates/js/translated/part.js:475 msgid "Create Part Variant" msgstr "Alkatrész változat létrehozása" -#: templates/js/translated/part.js:531 +#: templates/js/translated/part.js:532 msgid "Active Part" msgstr "Aktív alkatrész" -#: templates/js/translated/part.js:532 +#: templates/js/translated/part.js:533 msgid "Part cannot be deleted as it is currently active" msgstr "Alkatrész nem törölhető mivel még aktív" -#: templates/js/translated/part.js:546 +#: templates/js/translated/part.js:547 msgid "Deleting this part cannot be reversed" msgstr "Ezen alkatrész törlése nem vonható vissza" -#: templates/js/translated/part.js:548 +#: templates/js/translated/part.js:549 msgid "Any stock items for this part will be deleted" msgstr "Ennek az alkatrésznek a teljes készlete törölve lesz" -#: templates/js/translated/part.js:549 +#: templates/js/translated/part.js:550 msgid "This part will be removed from any Bills of Material" msgstr "Ez az alkatrész minden alkatrészjegyzékből törölve lesz" -#: templates/js/translated/part.js:550 +#: templates/js/translated/part.js:551 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "Ehhez az alkatrészhez rendelt minden beszállítói és gyártói információ törölve lesz" -#: templates/js/translated/part.js:557 +#: templates/js/translated/part.js:558 msgid "Delete Part" msgstr "Alkatrész törlése" -#: templates/js/translated/part.js:593 +#: templates/js/translated/part.js:594 msgid "You are subscribed to notifications for this item" msgstr "Értesítések beállítva erre a tételre" -#: templates/js/translated/part.js:595 +#: templates/js/translated/part.js:596 msgid "You have subscribed to notifications for this item" msgstr "Értesítések beállítva erre a tételre" -#: templates/js/translated/part.js:600 +#: templates/js/translated/part.js:601 msgid "Subscribe to notifications for this item" msgstr "Értesítések kérése erre a tételre" -#: templates/js/translated/part.js:602 +#: templates/js/translated/part.js:603 msgid "You have unsubscribed to notifications for this item" msgstr "Értesítések letiltva erre a tételre" -#: templates/js/translated/part.js:619 +#: templates/js/translated/part.js:620 msgid "Validating the BOM will mark each line item as valid" msgstr "Az alkatrészjegyzék jóváhagyása minden sortételt jóvá fog hagyni" -#: templates/js/translated/part.js:629 +#: templates/js/translated/part.js:630 msgid "Validate Bill of Materials" msgstr "Alkatrészjegyzék jóváhagyása" -#: templates/js/translated/part.js:632 +#: templates/js/translated/part.js:633 msgid "Validated Bill of Materials" msgstr "Alkatrészjegyzék jóvá lett hagyva" -#: templates/js/translated/part.js:657 +#: templates/js/translated/part.js:658 msgid "Copy Bill of Materials" msgstr "Alkatrészjegyzék másolása" -#: templates/js/translated/part.js:685 +#: templates/js/translated/part.js:686 #: templates/js/translated/table_filters.js:747 msgid "Low stock" msgstr "Alacsony készlet" -#: templates/js/translated/part.js:688 +#: templates/js/translated/part.js:689 msgid "No stock available" msgstr "Nincs elérhető készlet" -#: templates/js/translated/part.js:748 +#: templates/js/translated/part.js:749 msgid "Demand" msgstr "Igény" -#: templates/js/translated/part.js:771 +#: templates/js/translated/part.js:772 msgid "Unit" msgstr "Me" -#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +#: templates/js/translated/part.js:795 templates/js/translated/part.js:1207 msgid "Virtual part" msgstr "Virtuális alkatrész" -#: templates/js/translated/part.js:806 +#: templates/js/translated/part.js:807 msgid "Subscribed part" msgstr "Értesítésre beállított alkatrész" -#: templates/js/translated/part.js:810 +#: templates/js/translated/part.js:811 msgid "Salable part" msgstr "Értékesíthető alkatrész" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Schedule generation of a new stocktake report." msgstr "Új leltár riport ütemezése." -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Once complete, the stocktake report will be available for download." msgstr "Amint elkészül, az új leltár riport letölthető lesz." -#: templates/js/translated/part.js:897 +#: templates/js/translated/part.js:898 msgid "Generate Stocktake Report" msgstr "Leltár riport létrehozása" -#: templates/js/translated/part.js:901 +#: templates/js/translated/part.js:902 msgid "Stocktake report scheduled" msgstr "Leltár riport beütemezve" -#: templates/js/translated/part.js:1050 +#: templates/js/translated/part.js:1051 msgid "No stocktake information available" msgstr "Nincs elérhető leltár előzmény" -#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1145 msgid "Edit Stocktake Entry" msgstr "Leltár bejegyzés szerkesztése" -#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +#: templates/js/translated/part.js:1113 templates/js/translated/part.js:1155 msgid "Delete Stocktake Entry" msgstr "Leltár bejegyzés törlése" -#: templates/js/translated/part.js:1281 +#: templates/js/translated/part.js:1282 msgid "No variants found" msgstr "Nincs több változat" -#: templates/js/translated/part.js:1599 +#: templates/js/translated/part.js:1600 msgid "No part parameter templates found" msgstr "Nincs alkatrész paraméter sablon" -#: templates/js/translated/part.js:1662 +#: templates/js/translated/part.js:1663 msgid "Edit Part Parameter Template" msgstr "Alkatrész paraméter sablon módosítása" -#: templates/js/translated/part.js:1674 +#: templates/js/translated/part.js:1675 msgid "Any parameters which reference this template will also be deleted" msgstr "Az összes erre a sablonra hivatkozó paraméter is törlésre kerül" -#: templates/js/translated/part.js:1682 +#: templates/js/translated/part.js:1683 msgid "Delete Part Parameter Template" msgstr "Alkatrész paraméter sablon törlése" -#: templates/js/translated/part.js:1716 +#: templates/js/translated/part.js:1717 #: templates/js/translated/purchase_order.js:1654 msgid "No purchase orders found" msgstr "Nem található beszerzési rendelés" -#: templates/js/translated/part.js:1860 +#: templates/js/translated/part.js:1861 #: templates/js/translated/purchase_order.js:2153 #: templates/js/translated/return_order.js:755 #: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "Ez a sortétel késésben van" -#: templates/js/translated/part.js:1906 +#: templates/js/translated/part.js:1907 #: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "Sortétel bevételezése" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1970 msgid "Delete part relationship" msgstr "Alkatrész kapcsolatok törlése" -#: templates/js/translated/part.js:1991 +#: templates/js/translated/part.js:1992 msgid "Delete Part Relationship" msgstr "Alkatrész kapcsolatok törlése" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 +#: templates/js/translated/part.js:2080 templates/js/translated/part.js:2506 msgid "No parts found" msgstr "Nincs alkatrész" -#: templates/js/translated/part.js:2200 +#: templates/js/translated/part.js:2201 msgid "Set the part category for the selected parts" msgstr "Kategória beállítása a kiválasztott alkatrészekhez" -#: templates/js/translated/part.js:2205 +#: templates/js/translated/part.js:2206 msgid "Set Part Category" msgstr "Alkatrész kategória beállítása" -#: templates/js/translated/part.js:2235 +#: templates/js/translated/part.js:2236 msgid "Set category" msgstr "Kategória beállítása" -#: templates/js/translated/part.js:2286 +#: templates/js/translated/part.js:2287 msgid "part" msgstr "alkatrész" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2288 msgid "parts" msgstr "alkatrészek" -#: templates/js/translated/part.js:2383 +#: templates/js/translated/part.js:2384 msgid "No category" msgstr "Nincs kategória" -#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "Megjelenítés listaként" -#: templates/js/translated/part.js:2546 +#: templates/js/translated/part.js:2547 msgid "Display as grid" msgstr "Megjelenítés rácsnézetként" -#: templates/js/translated/part.js:2644 +#: templates/js/translated/part.js:2645 msgid "No subcategories found" msgstr "Nem találhatóak alkategóriák" -#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "Megjelenítés fában" -#: templates/js/translated/part.js:2760 +#: templates/js/translated/part.js:2761 msgid "Load Subcategories" msgstr "Alkategóriák betöltése" -#: templates/js/translated/part.js:2776 +#: templates/js/translated/part.js:2777 msgid "Subscribed category" msgstr "Értesítésre beállított kategória" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2865 msgid "No test templates matching query" msgstr "Nincs a lekérdezéssel egyező teszt sablon" -#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2887 templates/js/translated/search.js:342 msgid "results" msgstr "találat" -#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "Teszt eredmény szerkesztése" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/part.js:2938 templates/js/translated/stock.js:1457 #: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "Teszt eredmény törlése" -#: templates/js/translated/part.js:2940 +#: templates/js/translated/part.js:2942 msgid "This test is defined for a parent part" msgstr "Ez a teszt a szülő alkatrészhez lett felvéve" -#: templates/js/translated/part.js:2956 +#: templates/js/translated/part.js:2958 msgid "Edit Test Result Template" msgstr "Teszt eredmény sablon szerkesztése" -#: templates/js/translated/part.js:2970 +#: templates/js/translated/part.js:2972 msgid "Delete Test Result Template" msgstr "Teszt eredmény sablon törlése" -#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3051 templates/js/translated/part.js:3052 msgid "No date specified" msgstr "Nincs megadva dátum" -#: templates/js/translated/part.js:3052 +#: templates/js/translated/part.js:3054 msgid "Specified date is in the past" msgstr "A megadott dátum a múltban van" -#: templates/js/translated/part.js:3058 +#: templates/js/translated/part.js:3060 msgid "Speculative" msgstr "Spekulatív" -#: templates/js/translated/part.js:3108 +#: templates/js/translated/part.js:3110 msgid "No scheduling information available for this part" msgstr "Az alkatrészhez nem áll rendelkezésre ütemezési információ" -#: templates/js/translated/part.js:3114 +#: templates/js/translated/part.js:3116 msgid "Error fetching scheduling information for this part" msgstr "Hiba az alkatrész ütemezési információinak betöltésekor" -#: templates/js/translated/part.js:3210 +#: templates/js/translated/part.js:3212 msgid "Scheduled Stock Quantities" msgstr "Ütemezett készlet mennyiség" -#: templates/js/translated/part.js:3226 +#: templates/js/translated/part.js:3228 msgid "Maximum Quantity" msgstr "Maximum mennyiség" -#: templates/js/translated/part.js:3271 +#: templates/js/translated/part.js:3273 msgid "Minimum Stock Level" msgstr "Minimális készlet" @@ -13248,10 +13329,6 @@ msgstr "Készlet sorozatszámozás megerősítése" msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" msgstr "Alapértelmezett ikon minden készlethelyre melyhez nincs ikon rendelve (választható) - Válogass az ikonok közül" -#: templates/js/translated/stock.js:152 -msgid "Parent stock location" -msgstr "Felsőbb szintű készlet hely" - #: templates/js/translated/stock.js:166 msgid "Add Location type" msgstr "Készlethely típus hozzáadása" @@ -13420,7 +13497,7 @@ msgstr "Kivesz" msgid "Add Stock" msgstr "Készlet növelése" -#: templates/js/translated/stock.js:1042 users/models.py:401 +#: templates/js/translated/stock.js:1042 users/models.py:392 msgid "Add" msgstr "Hozzáad" @@ -14311,34 +14388,35 @@ msgstr "Token utolsó használata" msgid "Revoked" msgstr "Visszavonva" -#: users/models.py:384 +#: users/models.py:375 msgid "Permission set" msgstr "Jogosultságok" -#: users/models.py:393 +#: users/models.py:384 msgid "Group" msgstr "Csoport" -#: users/models.py:397 +#: users/models.py:388 msgid "View" msgstr "Nézet" -#: users/models.py:397 +#: users/models.py:388 msgid "Permission to view items" msgstr "Jogosultság tételek megtekintéséhez" -#: users/models.py:401 +#: users/models.py:392 msgid "Permission to add items" msgstr "Jogosultság tételek hozzáadásához" -#: users/models.py:405 +#: users/models.py:396 msgid "Change" msgstr "Módosítás" -#: users/models.py:407 +#: users/models.py:398 msgid "Permissions to edit items" msgstr "Jogosultság tételek szerkesztéséhez" -#: users/models.py:413 +#: users/models.py:404 msgid "Permission to delete items" msgstr "Jogosultság tételek törléséhez" + diff --git a/src/backend/InvenTree/locale/id/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/id/LC_MESSAGES/django.po index 15cae35579..fc03d8d445 100644 --- a/src/backend/InvenTree/locale/id/LC_MESSAGES/django.po +++ b/src/backend/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-05-31 07:08+0000\n" -"PO-Revision-Date: 2024-05-27 11:55\n" +"POT-Creation-Date: 2024-06-26 03:18+0000\n" +"PO-Revision-Date: 2024-06-26 06:05\n" "Last-Translator: \n" "Language-Team: Indonesian\n" "Language: id_ID\n" @@ -21,7 +21,7 @@ msgstr "" msgid "API endpoint not found" msgstr "API endpoint tidak ditemukan" -#: InvenTree/api.py:536 +#: InvenTree/api.py:520 msgid "User does not have permission to view this model" msgstr "Pengguna tidak memiliki izin untuk melihat model ini" @@ -52,25 +52,25 @@ msgstr "" msgid "Error details can be found in the admin panel" msgstr "Detail terkait galat dapat dilihat di panel admin" -#: InvenTree/fields.py:139 +#: InvenTree/fields.py:136 msgid "Enter date" msgstr "Masukkan tanggal" -#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 -#: build/serializers.py:531 build/templates/build/sidebar.html:21 -#: company/models.py:849 company/templates/company/sidebar.html:37 -#: order/models.py:1332 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:205 InvenTree/models.py:918 build/serializers.py:452 +#: build/serializers.py:530 build/templates/build/sidebar.html:21 +#: company/models.py:817 company/templates/company/sidebar.html:37 +#: order/models.py:1296 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:3218 part/templates/part/part_sidebar.html:63 +#: part/models.py:3183 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_report.html:172 -#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 -#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 -#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 -#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:230 stock/models.py:2309 stock/models.py:2431 +#: stock/serializers.py:632 stock/serializers.py:790 stock/serializers.py:886 +#: stock/serializers.py:936 stock/serializers.py:1239 stock/serializers.py:1328 +#: stock/serializers.py:1493 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1080 +#: templates/js/translated/part.js:1081 #: templates/js/translated/purchase_order.js:2200 #: templates/js/translated/return_order.js:775 #: templates/js/translated/sales_order.js:1103 @@ -120,15 +120,15 @@ msgstr "Konfirmasi alamat email" msgid "You must type the same email each time." msgstr "Masukkan email yang sama." -#: InvenTree/forms.py:253 InvenTree/forms.py:261 +#: InvenTree/forms.py:248 InvenTree/forms.py:256 msgid "The provided primary email address is not valid." msgstr "Alamat surel utama yang diberikan tidak valid." -#: InvenTree/forms.py:268 +#: InvenTree/forms.py:263 msgid "The provided email domain is not approved." msgstr "Domain surel yang diberikan tidak perbolehkan." -#: InvenTree/forms.py:395 +#: InvenTree/forms.py:390 msgid "Registration is disabled." msgstr "" @@ -171,35 +171,35 @@ msgstr "" msgid "Remove HTML tags from this value" msgstr "Hapus tag-tag HTML dari nilai ini" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Connection error" msgstr "" -#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 msgid "Server responded with invalid status code" msgstr "" -#: InvenTree/helpers_model.py:158 +#: InvenTree/helpers_model.py:148 msgid "Exception occurred" msgstr "" -#: InvenTree/helpers_model.py:168 +#: InvenTree/helpers_model.py:158 msgid "Server responded with invalid Content-Length value" msgstr "" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:161 msgid "Image size is too large" msgstr "Ukuran gambar terlalu besar" -#: InvenTree/helpers_model.py:183 +#: InvenTree/helpers_model.py:173 msgid "Image download exceeded maximum size" msgstr "" -#: InvenTree/helpers_model.py:188 +#: InvenTree/helpers_model.py:178 msgid "Remote server returned empty response" msgstr "" -#: InvenTree/helpers_model.py:196 +#: InvenTree/helpers_model.py:186 msgid "Supplied URL is not a valid image file" msgstr "URL yang diberikan bukan file gambar yang valid" @@ -296,46 +296,50 @@ msgid "Portuguese (Brazilian)" msgstr "Portugis (Brasil)" #: InvenTree/locales.py:41 +msgid "Romanian" +msgstr "" + +#: InvenTree/locales.py:42 msgid "Russian" msgstr "Rusia" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:43 msgid "Slovak" msgstr "" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:44 msgid "Slovenian" msgstr "" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:45 msgid "Serbian" msgstr "" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:46 msgid "Swedish" msgstr "Swedia" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:47 msgid "Thai" msgstr "" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:48 msgid "Turkish" msgstr "Turki" -#: InvenTree/locales.py:48 +#: InvenTree/locales.py:49 msgid "Ukrainian" msgstr "" -#: InvenTree/locales.py:49 +#: InvenTree/locales.py:50 msgid "Vietnamese" msgstr "Vietnam" -#: InvenTree/locales.py:50 +#: InvenTree/locales.py:51 msgid "Chinese (Simplified)" msgstr "" -#: InvenTree/locales.py:51 +#: InvenTree/locales.py:52 msgid "Chinese (Traditional)" msgstr "" @@ -344,153 +348,65 @@ msgstr "" msgid "[{site_name}] Log in to the app" msgstr "" -#: InvenTree/magic_login.py:38 company/models.py:133 +#: InvenTree/magic_login.py:38 company/models.py:136 #: company/templates/company/company_base.html:138 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:677 msgid "Email" msgstr "Surel" -#: InvenTree/models.py:107 +#: InvenTree/models.py:105 msgid "Error running plugin validation" msgstr "" -#: InvenTree/models.py:176 +#: InvenTree/models.py:174 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:182 +#: InvenTree/models.py:180 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:183 +#: InvenTree/models.py:181 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:413 +#: InvenTree/models.py:408 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:420 +#: InvenTree/models.py:415 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:426 +#: InvenTree/models.py:421 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:437 +#: InvenTree/models.py:432 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:445 +#: InvenTree/models.py:440 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:476 +#: InvenTree/models.py:471 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:550 -msgid "Missing file" -msgstr "File tidak ditemukan" - -#: InvenTree/models.py:551 -msgid "Missing external link" -msgstr "Tautan eksternal tidak ditemukan" - -#: InvenTree/models.py:572 stock/models.py:2437 -#: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:326 -msgid "Attachment" -msgstr "Lampiran" - -#: InvenTree/models.py:573 -msgid "Select file to attach" -msgstr "Pilih file untuk dilampirkan" - -#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:831 -#: order/models.py:303 order/models.py:1337 order/models.py:1753 -#: part/admin.py:55 part/models.py:962 -#: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_report.html:164 -#: stock/admin.py:225 templates/js/translated/company.js:1319 -#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2455 -#: templates/js/translated/purchase_order.js:2040 -#: templates/js/translated/purchase_order.js:2204 -#: templates/js/translated/return_order.js:779 -#: templates/js/translated/sales_order.js:1092 -#: templates/js/translated/sales_order.js:2023 -msgid "Link" -msgstr "Tautan" - -#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 -#: stock/models.py:836 -msgid "Link to external URL" -msgstr "Tautan menuju URL eksternal" - -#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:341 -msgid "Comment" -msgstr "Komentar" - -#: InvenTree/models.py:589 -msgid "File comment" -msgstr "Komentar file" - -#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 -#: common/models.py:2518 common/models.py:2742 common/models.py:2743 -#: common/models.py:2988 common/models.py:2989 part/models.py:3228 -#: part/models.py:3315 part/models.py:3408 part/models.py:3436 -#: plugin/models.py:259 plugin/models.py:260 -#: report/templates/report/inventree_test_report.html:105 -#: templates/js/translated/stock.js:3036 users/models.py:111 -msgid "User" -msgstr "Pengguna" - -#: InvenTree/models.py:602 -msgid "upload date" -msgstr "tanggal diunggah" - -#: InvenTree/models.py:624 -msgid "Filename must not be empty" -msgstr "Nama file tidak boleh kosong" - -#: InvenTree/models.py:635 -msgid "Invalid attachment directory" -msgstr "Direktori lampiran tidak valid" - -#: InvenTree/models.py:665 -#, python-brace-format -msgid "Filename contains illegal character '{c}'" -msgstr "Nama file mengandung karakter yang tidak diperkenankan '{c}'" - -#: InvenTree/models.py:668 -msgid "Filename missing extension" -msgstr "Nama file tidak memiliki ekstensi" - -#: InvenTree/models.py:677 -msgid "Attachment with this filename already exists" -msgstr "Lampiran dengan nama file ini sudah ada" - -#: InvenTree/models.py:684 -msgid "Error renaming file" -msgstr "Kesalahan merubah nama file" - -#: InvenTree/models.py:860 +#: InvenTree/models.py:719 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:877 +#: InvenTree/models.py:736 msgid "Invalid choice" msgstr "Pilihan tidak valid" -#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 -#: common/serializers.py:403 company/models.py:614 machine/models.py:24 -#: part/models.py:898 part/models.py:3659 plugin/models.py:50 -#: report/models.py:149 stock/models.py:72 +#: InvenTree/models.py:766 common/models.py:2623 common/models.py:3036 +#: common/serializers.py:408 company/models.py:580 machine/models.py:24 +#: part/models.py:891 part/models.py:3639 plugin/models.py:51 +#: report/models.py:150 stock/models.py:73 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:83 @@ -501,25 +417,25 @@ msgstr "Pilihan tidak valid" #: templates/js/translated/company.js:724 #: templates/js/translated/company.js:913 #: templates/js/translated/company.js:1165 -#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 -#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1187 +#: templates/js/translated/part.js:1475 templates/js/translated/part.js:1611 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Nama" -#: InvenTree/models.py:913 build/models.py:218 -#: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:523 company/models.py:840 +#: InvenTree/models.py:772 build/models.py:220 +#: build/templates/build/detail.html:24 common/models.py:138 +#: company/models.py:509 company/models.py:808 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 order/models.py:289 -#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 -#: part/models.py:3674 part/templates/part/category.html:82 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:914 +#: part/models.py:3654 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:155 -#: report/models.py:509 report/models.py:535 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 #: report/templates/report/inventree_build_order_report.html:117 -#: stock/admin.py:55 stock/models.py:78 stock/templates/stock/location.html:125 +#: stock/admin.py:54 stock/models.py:79 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 @@ -528,10 +444,10 @@ msgstr "Nama" #: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 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:2354 -#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1239 +#: templates/js/translated/part.js:1484 templates/js/translated/part.js:1622 +#: templates/js/translated/part.js:1959 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2897 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1706 #: templates/js/translated/purchase_order.js:1849 @@ -544,149 +460,141 @@ msgstr "Nama" msgid "Description" msgstr "Keterangan" -#: InvenTree/models.py:914 stock/models.py:79 +#: InvenTree/models.py:773 stock/models.py:80 msgid "Description (optional)" msgstr "Keterangan (opsional)" -#: InvenTree/models.py:923 -msgid "parent" -msgstr "induk" - -#: InvenTree/models.py:929 templates/js/translated/part.js:2793 +#: InvenTree/models.py:788 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Direktori" -#: InvenTree/models.py:1035 +#: InvenTree/models.py:918 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:1064 +#: InvenTree/models.py:947 msgid "Barcode Data" msgstr "Data Barcode" -#: InvenTree/models.py:1065 +#: InvenTree/models.py:948 msgid "Third party barcode data" msgstr "Data barcode pihak ketiga" -#: InvenTree/models.py:1071 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:1072 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "Hash unik data barcode" -#: InvenTree/models.py:1125 +#: InvenTree/models.py:1008 msgid "Existing barcode found" msgstr "Sudah ada barcode yang sama" -#: InvenTree/models.py:1168 +#: InvenTree/models.py:1051 msgid "Server Error" msgstr "Terjadi Kesalahan Server" -#: InvenTree/models.py:1169 +#: InvenTree/models.py:1052 msgid "An error has been logged by the server." msgstr "Sebuah kesalahan telah dicatat oleh server." -#: InvenTree/serializers.py:62 part/models.py:4212 +#: InvenTree/serializers.py:63 part/models.py:4192 msgid "Must be a valid number" msgstr "Harus berupa angka yang valid" -#: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:3036 +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3001 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Mata Uang" -#: InvenTree/serializers.py:102 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:441 +#: InvenTree/serializers.py:442 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:453 +#: InvenTree/serializers.py:454 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:472 +#: InvenTree/serializers.py:473 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:474 +#: InvenTree/serializers.py:475 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:481 +#: InvenTree/serializers.py:482 msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:542 -msgid "Filename" -msgstr "Nama File" - -#: InvenTree/serializers.py:576 +#: InvenTree/serializers.py:540 msgid "Invalid value" msgstr "Nilai tidak valid" -#: InvenTree/serializers.py:596 +#: InvenTree/serializers.py:560 msgid "Data File" msgstr "File data" -#: InvenTree/serializers.py:597 +#: InvenTree/serializers.py:561 msgid "Select data file for upload" msgstr "Pilih file untuk diunggah" -#: InvenTree/serializers.py:614 +#: InvenTree/serializers.py:578 msgid "Unsupported file type" msgstr "Jenis file tidak didukung" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:584 msgid "File is too large" msgstr "Ukuran file terlalu besar" -#: InvenTree/serializers.py:641 +#: InvenTree/serializers.py:605 msgid "No columns found in file" msgstr "Tidak ditemukan kolom dalam file" -#: InvenTree/serializers.py:644 +#: InvenTree/serializers.py:608 msgid "No data rows found in file" msgstr "Tidak ditemukan barisan data dalam file" -#: InvenTree/serializers.py:757 +#: InvenTree/serializers.py:721 msgid "No data rows provided" msgstr "Tidak ada barisan data tersedia" -#: InvenTree/serializers.py:760 +#: InvenTree/serializers.py:724 msgid "No data columns supplied" msgstr "Tidak ada kolom data tersedia" -#: InvenTree/serializers.py:827 +#: InvenTree/serializers.py:791 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Kolom yang diperlukan kurang: '{name}'" -#: InvenTree/serializers.py:836 +#: InvenTree/serializers.py:800 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Kolom duplikat: '{col}'" -#: InvenTree/serializers.py:859 +#: InvenTree/serializers.py:840 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:860 +#: InvenTree/serializers.py:841 msgid "URL of remote image file" msgstr "URL file gambar external" -#: InvenTree/serializers.py:878 +#: InvenTree/serializers.py:859 msgid "Downloading images from remote URL is not enabled" msgstr "Unduhan gambar dari URL external tidak aktif" -#: InvenTree/status.py:66 part/serializers.py:1178 +#: InvenTree/status.py:66 part/serializers.py:1174 msgid "Background worker check failed" msgstr "" @@ -698,27 +606,27 @@ msgstr "" msgid "InvenTree system health checks failed" msgstr "Pengecekan kesehatan sistem InvenTree gagal" -#: InvenTree/templatetags/inventree_extras.py:183 +#: InvenTree/templatetags/inventree_extras.py:184 msgid "Unknown database" msgstr "" -#: InvenTree/validators.py:31 InvenTree/validators.py:33 +#: InvenTree/validators.py:32 InvenTree/validators.py:34 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:39 +#: InvenTree/validators.py:40 msgid "Not a valid currency code" msgstr "Bukan kode mata uang yang valid" -#: InvenTree/validators.py:121 InvenTree/validators.py:137 +#: InvenTree/validators.py:118 InvenTree/validators.py:134 msgid "Overage value must not be negative" msgstr "Nilai kelebihan tidak boleh negatif" -#: InvenTree/validators.py:139 +#: InvenTree/validators.py:136 msgid "Overage must not exceed 100%" msgstr "Kelebihan tidak boleh melebihi 100%" -#: InvenTree/validators.py:145 +#: InvenTree/validators.py:142 msgid "Invalid value for overage" msgstr "Nilai kelebihan tidak valid" @@ -750,14 +658,14 @@ msgstr "Tentang InvenTree" msgid "Build must be cancelled before it can be deleted" msgstr "Pesanan harus dibatalkan sebelum dapat dihapus" -#: build/api.py:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: build/api.py:299 part/models.py:4070 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:300 part/models.py:4084 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4064 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2529 #: templates/js/translated/table_filters.js:186 @@ -778,30 +686,30 @@ msgstr "" msgid "Allocated" msgstr "" -#: build/api.py:311 company/models.py:904 company/serializers.py:383 +#: build/api.py:311 company/models.py:872 company/serializers.py:359 #: 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:2561 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:234 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 -#: templates/js/translated/part.js:699 +#: templates/js/translated/part.js:693 templates/js/translated/part.js:695 +#: templates/js/translated/part.js:700 #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:575 msgid "Available" msgstr "" -#: build/models.py:83 build/templates/build/build_base.html:9 +#: build/models.py:85 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_report.html:105 -#: stock/serializers.py:83 templates/email/build_order_completed.html:16 +#: stock/serializers.py:82 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:2892 msgid "Build Order" msgstr "Order Produksi" -#: build/models.py:84 build/templates/build/build_base.html:13 +#: build/models.py:86 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 @@ -812,25 +720,25 @@ msgstr "Order Produksi" msgid "Build Orders" msgstr "Order Produksi" -#: build/models.py:131 +#: build/models.py:133 msgid "Invalid choice for parent build" msgstr "Pilihan produksi induk tidak valid" -#: build/models.py:142 order/models.py:240 +#: build/models.py:144 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "" -#: build/models.py:148 +#: build/models.py:150 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:209 +#: build/models.py:211 msgid "Build Order Reference" msgstr "Referensi Order Produksi" -#: build/models.py:210 order/models.py:463 order/models.py:928 -#: order/models.py:1325 order/models.py:2056 part/admin.py:419 -#: part/models.py:4105 part/templates/part/upload_bom.html:54 +#: build/models.py:212 order/models.py:463 order/models.py:926 +#: order/models.py:1289 order/models.py:2020 part/admin.py:411 +#: part/models.py:4085 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_purchase_order_report.html:28 #: report/templates/report/inventree_return_order_report.html:26 @@ -844,27 +752,27 @@ msgstr "Referensi Order Produksi" msgid "Reference" msgstr "Referensi" -#: build/models.py:221 +#: build/models.py:223 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:229 build/templates/build/build_base.html:183 +#: build/models.py:231 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Produksi Induk" -#: build/models.py:230 +#: build/models.py:232 msgid "BuildOrder to which this build is allocated" msgstr "Produksi induk dari produksi ini" -#: build/models.py:235 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 -#: order/models.py:1450 order/models.py:1595 order/models.py:1596 -#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 -#: part/models.py:3191 part/models.py:3335 part/models.py:3358 -#: part/models.py:3379 part/models.py:3401 part/models.py:3511 -#: part/models.py:3807 part/models.py:3963 part/models.py:4056 -#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 +#: build/models.py:237 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1026 order/api.py:805 +#: order/models.py:1414 order/models.py:1559 order/models.py:1560 +#: part/api.py:1494 part/api.py:1788 part/models.py:395 part/models.py:3012 +#: part/models.py:3156 part/models.py:3303 part/models.py:3324 +#: part/models.py:3346 part/models.py:3477 part/models.py:3787 +#: part/models.py:3943 part/models.py:4036 part/models.py:4395 +#: part/serializers.py:1120 part/serializers.py:1726 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -875,8 +783,8 @@ msgstr "Produksi induk dari produksi ini" #: report/templates/report/inventree_return_order_report.html:24 #: report/templates/report/inventree_sales_order_report.html:27 #: report/templates/report/inventree_stock_location_report.html:102 -#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 -#: stock/serializers.py:818 templates/InvenTree/search.html:82 +#: stock/serializers.py:109 stock/serializers.py:157 stock/serializers.py:423 +#: stock/serializers.py:820 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 @@ -889,8 +797,8 @@ msgstr "Produksi induk dari produksi ini" #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 -#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2323 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:1944 templates/js/translated/part.js:2016 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 #: templates/js/translated/purchase_order.js:751 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1848 @@ -908,107 +816,107 @@ msgstr "Produksi induk dari produksi ini" msgid "Part" msgstr "Bagian" -#: build/models.py:243 +#: build/models.py:245 msgid "Select part to build" msgstr "Pilih bagian untuk diproduksi" -#: build/models.py:248 +#: build/models.py:250 msgid "Sales Order Reference" msgstr "Referensi Order Penjualan" -#: build/models.py:252 +#: build/models.py:254 msgid "SalesOrder to which this build is allocated" msgstr "Order penjualan yang teralokasikan ke pesanan ini" -#: build/models.py:257 build/serializers.py:1000 +#: build/models.py:259 build/serializers.py:999 #: templates/js/translated/build.js:1731 #: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "Lokasi Sumber" -#: build/models.py:261 +#: build/models.py:263 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:266 +#: build/models.py:268 msgid "Destination Location" msgstr "Lokasi Tujuan" -#: build/models.py:270 +#: build/models.py:272 msgid "Select location where the completed items will be stored" msgstr "Pilih lokasi di mana item selesai akan disimpan" -#: build/models.py:274 +#: build/models.py:276 msgid "Build Quantity" msgstr "Jumlah Produksi" -#: build/models.py:277 +#: build/models.py:279 msgid "Number of stock items to build" msgstr "Jumlah item stok yang akan dibuat" -#: build/models.py:281 +#: build/models.py:283 msgid "Completed items" msgstr "Item selesai" -#: build/models.py:283 +#: build/models.py:285 msgid "Number of stock items which have been completed" msgstr "Jumlah stok item yang telah diselesaikan" -#: build/models.py:287 +#: build/models.py:289 msgid "Build Status" msgstr "Status pembuatan" -#: build/models.py:291 +#: build/models.py:293 msgid "Build status code" msgstr "Kode status pembuatan" -#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 -#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 +#: build/models.py:302 build/serializers.py:286 order/serializers.py:580 +#: stock/models.py:838 stock/serializers.py:74 stock/serializers.py:1458 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Kode Kelompok" -#: build/models.py:304 build/serializers.py:288 +#: build/models.py:306 build/serializers.py:287 msgid "Batch code for this build output" msgstr "Kode kelompok untuk hasil produksi ini" -#: build/models.py:307 order/models.py:316 order/serializers.py:120 -#: part/models.py:1122 part/templates/part/part_base.html:310 +#: build/models.py:309 order/models.py:316 order/serializers.py:119 +#: part/models.py:1115 part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:338 #: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "Tanggal Pembuatan" -#: build/models.py:311 +#: build/models.py:313 msgid "Target completion date" msgstr "Target tanggal selesai" -#: build/models.py:312 +#: build/models.py:314 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:315 order/models.py:521 order/models.py:2101 +#: build/models.py:317 order/models.py:521 order/models.py:2065 #: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "Tanggal selesai" -#: build/models.py:321 +#: build/models.py:323 msgid "completed by" msgstr "diselesaikan oleh" -#: build/models.py:329 templates/js/translated/build.js:2207 +#: build/models.py:331 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "Diserahkan oleh" -#: build/models.py:330 +#: build/models.py:332 msgid "User who issued this build order" msgstr "Pengguna yang menyerahkan order ini" -#: build/models.py:338 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:145 +#: build/models.py:340 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:147 #: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:232 part/models.py:1139 +#: order/templates/order/sales_order_base.html:232 part/models.py:1132 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_report.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 @@ -1019,31 +927,36 @@ msgstr "Pengguna yang menyerahkan order ini" msgid "Responsible" msgstr "Penanggung Jawab" -#: build/models.py:339 +#: build/models.py:341 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:344 build/templates/build/detail.html:108 +#: build/models.py:346 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:184 -#: part/templates/part/part_base.html:383 stock/models.py:836 +#: part/templates/part/part_base.html:383 stock/models.py:834 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "Tautan eksternal" -#: build/models.py:349 +#: build/models.py:347 common/models.py:3178 part/models.py:956 +#: stock/models.py:834 +msgid "Link to external URL" +msgstr "Tautan menuju URL eksternal" + +#: build/models.py:351 msgid "Build Priority" msgstr "" -#: build/models.py:352 +#: build/models.py:354 msgid "Priority of this build order" msgstr "" -#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: build/models.py:361 common/models.py:131 order/admin.py:18 #: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 #: templates/js/translated/build.js:2144 #: templates/js/translated/purchase_order.js:1710 @@ -1054,65 +967,65 @@ msgstr "" msgid "Project Code" msgstr "" -#: build/models.py:360 +#: build/models.py:362 msgid "Project code for this build order" msgstr "" -#: build/models.py:593 build/models.py:658 +#: build/models.py:595 build/models.py:660 msgid "Failed to offload task to complete build allocations" msgstr "" -#: build/models.py:615 +#: build/models.py:617 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:621 +#: build/models.py:623 msgid "A build order has been completed" msgstr "" -#: build/models.py:847 build/models.py:932 +#: build/models.py:849 build/models.py:934 msgid "No build output specified" msgstr "Tidak ada hasil produksi yang ditentukan" -#: build/models.py:850 +#: build/models.py:852 msgid "Build output is already completed" msgstr "Hasil produksi sudah selesai" -#: build/models.py:853 +#: build/models.py:855 msgid "Build output does not match Build Order" msgstr "Hasil produksi tidak sesuai dengan order produksi" -#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 -#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 -#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 -#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 +#: build/models.py:938 build/serializers.py:219 build/serializers.py:268 +#: build/serializers.py:866 order/models.py:559 order/serializers.py:432 +#: order/serializers.py:575 part/serializers.py:1484 part/serializers.py:1884 +#: stock/models.py:677 stock/models.py:1495 stock/serializers.py:603 msgid "Quantity must be greater than zero" msgstr "Jumlah harus lebih besar daripada nol" -#: build/models.py:941 build/serializers.py:225 +#: build/models.py:943 build/serializers.py:224 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1001 build/serializers.py:548 +#: build/models.py:1003 build/serializers.py:547 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1352 +#: build/models.py:1344 msgid "Build Order Line Item" msgstr "" -#: build/models.py:1377 +#: build/models.py:1369 msgid "Build object" msgstr "" -#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 -#: build/serializers.py:254 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2539 -#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 -#: part/forms.py:48 part/models.py:3205 part/models.py:4078 +#: build/models.py:1383 build/models.py:1639 build/serializers.py:206 +#: build/serializers.py:253 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2509 +#: order/models.py:1272 order/models.py:1931 order/serializers.py:1327 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3170 part/models.py:4058 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1121,8 +1034,8 @@ msgstr "" #: report/templates/report/inventree_sales_order_report.html:29 #: report/templates/report/inventree_stock_location_report.html:104 #: report/templates/report/inventree_test_report.html:90 -#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 -#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:125 stock/serializers.py:165 stock/serializers.py:594 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1133,8 +1046,8 @@ msgstr "" #: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 #: templates/js/translated/model_renderers.js:236 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:962 +#: templates/js/translated/part.js:1812 templates/js/translated/part.js:3342 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1154,38 +1067,38 @@ msgstr "" msgid "Quantity" msgstr "Jumlah" -#: build/models.py:1392 +#: build/models.py:1384 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1472 +#: build/models.py:1464 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:1481 +#: build/models.py:1473 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1491 order/models.py:1918 +#: build/models.py:1483 order/models.py:1882 msgid "Stock item is over-allocated" msgstr "Item stok teralokasikan terlalu banyak" -#: build/models.py:1497 order/models.py:1921 +#: build/models.py:1489 order/models.py:1885 msgid "Allocation quantity must be greater than zero" msgstr "Jumlah yang dialokasikan harus lebih dari nol" -#: build/models.py:1503 +#: build/models.py:1495 msgid "Quantity must be 1 for serialized stock" msgstr "Jumlah harus 1 untuk stok dengan nomor seri" -#: build/models.py:1562 +#: build/models.py:1554 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 -#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 -#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: build/models.py:1626 build/serializers.py:846 order/serializers.py:1171 +#: order/serializers.py:1192 stock/models.py:358 stock/serializers.py:91 +#: stock/serializers.py:697 stock/serializers.py:1177 stock/serializers.py:1289 #: stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 @@ -1201,70 +1114,70 @@ msgstr "" msgid "Stock Item" msgstr "Stok Item" -#: build/models.py:1635 +#: build/models.py:1627 msgid "Source stock item" msgstr "Sumber stok item" -#: build/models.py:1648 +#: build/models.py:1640 msgid "Stock quantity to allocate to build" msgstr "Jumlah stok yang dialokasikan ke produksi" -#: build/models.py:1656 +#: build/models.py:1648 msgid "Install into" msgstr "Pasang ke" -#: build/models.py:1657 +#: build/models.py:1649 msgid "Destination stock item" msgstr "Tujuan stok item" -#: build/serializers.py:157 build/serializers.py:876 +#: build/serializers.py:156 build/serializers.py:875 #: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "Hasil Produksi" -#: build/serializers.py:169 +#: build/serializers.py:168 msgid "Build output does not match the parent build" msgstr "Hasil produksi tidak sesuai dengan produksi induk" -#: build/serializers.py:173 +#: build/serializers.py:172 msgid "Output part does not match BuildOrder part" msgstr "Hasil bagian tidak sesuai dengan bagian dalam order produksi" -#: build/serializers.py:177 +#: build/serializers.py:176 msgid "This build output has already been completed" msgstr "Hasil produksi ini sudah diselesaikan" -#: build/serializers.py:188 +#: build/serializers.py:187 msgid "This build output is not fully allocated" msgstr "Hasil produksi tidak dialokasikan sepenuhnya" -#: build/serializers.py:208 build/serializers.py:255 +#: build/serializers.py:207 build/serializers.py:254 msgid "Enter quantity for build output" msgstr "Masukkan jumlah hasil pesanan" -#: build/serializers.py:276 +#: build/serializers.py:275 msgid "Integer quantity required for trackable parts" msgstr "Jumlah bagian yang dapat dilacak harus berupa angka bulat" -#: build/serializers.py:279 +#: build/serializers.py:278 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:294 order/serializers.py:589 order/serializers.py:1343 -#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:293 order/serializers.py:588 order/serializers.py:1331 +#: stock/serializers.py:614 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Nomor Seri" -#: build/serializers.py:295 +#: build/serializers.py:294 msgid "Enter serial numbers for build outputs" msgstr "Masukkan nomor seri untuk hasil pesanan" -#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 -#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 -#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 -#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 -#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 +#: build/serializers.py:299 build/serializers.py:440 build/serializers.py:512 +#: order/serializers.py:564 order/serializers.py:672 order/serializers.py:1656 +#: part/serializers.py:1140 stock/serializers.py:100 stock/serializers.py:625 +#: stock/serializers.py:785 stock/serializers.py:881 stock/serializers.py:1321 +#: stock/serializers.py:1577 stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:1001 #: templates/js/translated/build.js:2372 @@ -1280,54 +1193,54 @@ msgstr "Masukkan nomor seri untuk hasil pesanan" msgid "Location" msgstr "Lokasi" -#: build/serializers.py:301 +#: build/serializers.py:300 msgid "Stock location for build output" msgstr "" -#: build/serializers.py:315 +#: build/serializers.py:314 msgid "Auto Allocate Serial Numbers" msgstr "Alokasikan nomor seri secara otomatis" -#: build/serializers.py:316 +#: build/serializers.py:315 msgid "Automatically allocate required items with matching serial numbers" msgstr "Alokasikan item yang diperlukan dengan nomor seri yang sesuai secara otomatis" -#: build/serializers.py:331 +#: build/serializers.py:330 msgid "Serial numbers must be provided for trackable parts" msgstr "" -#: build/serializers.py:356 stock/api.py:1031 +#: build/serializers.py:355 stock/api.py:1041 msgid "The following serial numbers already exist or are invalid" msgstr "Nomor-nomor seri berikut sudah ada atau tidak valid" -#: build/serializers.py:403 build/serializers.py:465 build/serializers.py:554 +#: build/serializers.py:402 build/serializers.py:464 build/serializers.py:553 msgid "A list of build outputs must be provided" msgstr "Daftar hasil pesanan harus disediakan" -#: build/serializers.py:442 +#: build/serializers.py:441 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:448 +#: build/serializers.py:447 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:449 +#: build/serializers.py:448 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:454 +#: build/serializers.py:453 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:514 +#: build/serializers.py:513 msgid "Location for completed build outputs" msgstr "Lokasi hasil pesanan yang selesai" -#: build/serializers.py:520 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:952 -#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 -#: stock/serializers.py:930 stock/serializers.py:1469 +#: build/serializers.py:519 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2044 order/serializers.py:596 stock/admin.py:164 +#: stock/serializers.py:932 stock/serializers.py:1465 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 @@ -1339,188 +1252,188 @@ msgstr "Lokasi hasil pesanan yang selesai" msgid "Status" msgstr "" -#: build/serializers.py:526 +#: build/serializers.py:525 msgid "Accept Incomplete Allocation" msgstr "Terima Alokasi Tidak Lengkap" -#: build/serializers.py:527 +#: build/serializers.py:526 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:611 msgid "Consume Allocated Stock" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:612 msgid "Consume any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:619 +#: build/serializers.py:618 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:620 +#: build/serializers.py:619 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:646 msgid "Not permitted" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:647 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:648 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:679 +#: build/serializers.py:678 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:681 +#: build/serializers.py:680 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:691 +#: build/serializers.py:690 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:696 +#: build/serializers.py:695 msgid "Accept Unallocated" msgstr "Terima Tidak Teralokasikan" -#: build/serializers.py:697 +#: build/serializers.py:696 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:707 templates/js/translated/build.js:315 +#: build/serializers.py:706 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "Stok yang diperlukan belum teralokasikan sepenuhnya" -#: build/serializers.py:712 order/serializers.py:301 order/serializers.py:1246 +#: build/serializers.py:711 order/serializers.py:300 order/serializers.py:1234 msgid "Accept Incomplete" msgstr "Terima Tidak Selesai" -#: build/serializers.py:713 +#: build/serializers.py:712 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:723 templates/js/translated/build.js:319 +#: build/serializers.py:722 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:732 templates/js/translated/build.js:303 +#: build/serializers.py:731 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "Order memiliki hasil produksi yang belum dilengkapi" -#: build/serializers.py:770 +#: build/serializers.py:769 msgid "Build Line" msgstr "" -#: build/serializers.py:780 +#: build/serializers.py:779 msgid "Build output" msgstr "Hasil produksi" -#: build/serializers.py:788 +#: build/serializers.py:787 msgid "Build output must point to the same build" msgstr "Hasil pesanan harus mengarah ke pesanan yang sama" -#: build/serializers.py:824 +#: build/serializers.py:823 msgid "Build Line Item" msgstr "" -#: build/serializers.py:838 +#: build/serializers.py:837 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:853 stock/serializers.py:1194 +#: build/serializers.py:852 stock/serializers.py:1190 msgid "Item must be in stock" msgstr "Item harus tersedia dalam stok" -#: build/serializers.py:901 order/serializers.py:1237 +#: build/serializers.py:900 order/serializers.py:1225 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Jumlah tersedia ({q}) terlampaui" -#: build/serializers.py:907 +#: build/serializers.py:906 msgid "Build output must be specified for allocation of tracked parts" msgstr "Hasil produksi harus ditentukan untuk mengalokasikan bagian yang terlacak" -#: build/serializers.py:914 +#: build/serializers.py:913 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:938 order/serializers.py:1489 +#: build/serializers.py:937 order/serializers.py:1477 msgid "Allocation items must be provided" msgstr "Item yang dialokasikan harus disediakan" -#: build/serializers.py:1001 +#: build/serializers.py:1000 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:1009 +#: build/serializers.py:1008 msgid "Exclude Location" msgstr "Lokasi tidak termasuk" -#: build/serializers.py:1010 +#: build/serializers.py:1009 msgid "Exclude stock items from this selected location" msgstr "Jangan ambil stok item dari lokasi yang dipilih" -#: build/serializers.py:1015 +#: build/serializers.py:1014 msgid "Interchangeable Stock" msgstr "Stok bergantian" -#: build/serializers.py:1016 +#: build/serializers.py:1015 msgid "Stock items in multiple locations can be used interchangeably" msgstr "Item stok di beberapa lokasi dapat digunakan secara bergantian" -#: build/serializers.py:1021 +#: build/serializers.py:1020 msgid "Substitute Stock" msgstr "Stok pengganti" -#: build/serializers.py:1022 +#: build/serializers.py:1021 msgid "Allow allocation of substitute parts" msgstr "Izinkan alokasi bagian pengganti" -#: build/serializers.py:1027 +#: build/serializers.py:1026 msgid "Optional Items" msgstr "" -#: build/serializers.py:1028 +#: build/serializers.py:1027 msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1050 +#: build/serializers.py:1049 msgid "Failed to start auto-allocation task" msgstr "" -#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 -#: stock/api.py:794 +#: build/serializers.py:1139 part/models.py:3953 part/models.py:4387 +#: stock/api.py:804 msgid "BOM Item" msgstr "Item tagihan material" -#: build/serializers.py:1149 templates/js/translated/index.js:130 +#: build/serializers.py:1148 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:832 part/serializers.py:1506 +#: build/serializers.py:1153 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:828 part/serializers.py:1502 #: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 -#: templates/js/translated/build.js:2613 templates/js/translated/part.js:709 -#: templates/js/translated/part.js:2148 +#: templates/js/translated/build.js:2613 templates/js/translated/part.js:710 +#: templates/js/translated/part.js:2149 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1159 part/serializers.py:1508 +#: build/serializers.py:1158 part/serializers.py:1504 #: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 +#: build/serializers.py:1163 part/bom.py:172 part/serializers.py:1527 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1929 msgid "Available Stock" @@ -1544,7 +1457,7 @@ msgstr "Dibatalkan" #: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 #: order/status_codes.py:44 order/status_codes.py:69 #: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:165 report/models.py:443 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 msgid "Complete" msgstr "Selesai" @@ -1674,11 +1587,11 @@ msgstr "" #: build/templates/build/build_base.html:160 #: build/templates/build/detail.html:138 order/models.py:309 -#: order/models.py:1343 order/templates/order/order_base.html:186 +#: order/models.py:1307 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:196 #: report/templates/report/inventree_build_order_report.html:125 -#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1831 #: templates/js/translated/purchase_order.js:1739 #: templates/js/translated/purchase_order.js:2147 #: templates/js/translated/return_order.js:346 @@ -1711,8 +1624,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 -#: order/models.py:1587 order/models.py:1701 order/models.py:1855 +#: build/templates/build/detail.html:101 order/api.py:1463 order/models.py:845 +#: order/models.py:1551 order/models.py:1665 order/models.py:1819 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_report.html:135 @@ -1762,7 +1675,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1479 +#: build/templates/build/detail.html:49 order/models.py:1443 #: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "" @@ -1775,7 +1688,7 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:163 +#: build/templates/build/detail.html:80 stock/admin.py:162 #: stock/templates/stock/item_base.html:162 #: templates/js/translated/build.js:1380 #: templates/js/translated/model_renderers.js:241 @@ -1894,11 +1807,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:436 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -1914,6 +1827,34 @@ msgstr "" msgid "Incomplete Outputs" msgstr "" +#: common/api.py:689 +msgid "Is Link" +msgstr "" + +#: common/api.py:697 +msgid "Is File" +msgstr "" + +#: common/api.py:739 +msgid "User does not have permission to delete this attachment" +msgstr "" + +#: common/currency.py:130 +msgid "Invalid currency code" +msgstr "" + +#: common/currency.py:132 +msgid "Duplicate currency code" +msgstr "" + +#: common/currency.py:137 +msgid "No valid currency codes provided" +msgstr "" + +#: common/currency.py:154 +msgid "No plugin" +msgstr "" + #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1952,1507 +1893,1512 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:71 +#: common/models.py:73 msgid "Updated" msgstr "" -#: common/models.py:72 +#: common/models.py:74 msgid "Timestamp of last update" msgstr "" -#: common/models.py:105 +#: common/models.py:107 msgid "Site URL is locked by configuration" msgstr "" -#: common/models.py:130 +#: common/models.py:132 msgid "Unique project code" msgstr "" -#: common/models.py:137 +#: common/models.py:139 msgid "Project description" msgstr "" -#: common/models.py:146 +#: common/models.py:148 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:766 +#: common/models.py:765 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:770 +#: common/models.py:769 msgid "Settings value" msgstr "" -#: common/models.py:822 +#: common/models.py:821 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:838 +#: common/models.py:837 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:846 +#: common/models.py:845 msgid "Value must be an integer value" msgstr "" -#: common/models.py:883 +#: common/models.py:882 msgid "Key string must be unique" msgstr "" -#: common/models.py:1115 +#: common/models.py:1114 msgid "No group" msgstr "" -#: common/models.py:1158 -msgid "An empty domain is not allowed." -msgstr "" - -#: common/models.py:1160 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "" - -#: common/models.py:1172 -msgid "No plugin" -msgstr "" - -#: common/models.py:1260 +#: common/models.py:1213 msgid "Restart required" msgstr "" -#: common/models.py:1262 +#: common/models.py:1215 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1269 +#: common/models.py:1222 msgid "Pending migrations" msgstr "" -#: common/models.py:1270 +#: common/models.py:1223 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1275 +#: common/models.py:1228 msgid "Server Instance Name" msgstr "" -#: common/models.py:1277 +#: common/models.py:1230 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1281 +#: common/models.py:1234 msgid "Use instance name" msgstr "" -#: common/models.py:1282 +#: common/models.py:1235 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1287 +#: common/models.py:1240 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1288 +#: common/models.py:1241 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1293 company/models.py:108 company/models.py:109 +#: common/models.py:1246 company/models.py:111 company/models.py:112 msgid "Company name" msgstr "" -#: common/models.py:1294 +#: common/models.py:1247 msgid "Internal company name" msgstr "" -#: common/models.py:1298 +#: common/models.py:1251 msgid "Base URL" msgstr "" -#: common/models.py:1299 +#: common/models.py:1252 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1305 +#: common/models.py:1258 msgid "Default Currency" msgstr "" -#: common/models.py:1306 +#: common/models.py:1259 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1312 +#: common/models.py:1265 +msgid "Supported Currencies" +msgstr "" + +#: common/models.py:1266 +msgid "List of supported currency codes" +msgstr "" + +#: common/models.py:1272 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1314 +#: common/models.py:1274 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1317 common/models.py:1373 common/models.py:1386 -#: common/models.py:1394 common/models.py:1403 common/models.py:1412 -#: common/models.py:1620 common/models.py:1642 common/models.py:1757 -#: common/models.py:2076 +#: common/models.py:1277 common/models.py:1333 common/models.py:1346 +#: common/models.py:1354 common/models.py:1363 common/models.py:1372 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:2046 msgid "days" msgstr "" -#: common/models.py:1321 +#: common/models.py:1281 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1322 +#: common/models.py:1282 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1327 +#: common/models.py:1287 msgid "Download from URL" msgstr "" -#: common/models.py:1329 +#: common/models.py:1289 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1335 +#: common/models.py:1295 msgid "Download Size Limit" msgstr "" -#: common/models.py:1336 +#: common/models.py:1296 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1342 +#: common/models.py:1302 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1344 +#: common/models.py:1304 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:1349 +#: common/models.py:1309 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1350 +#: common/models.py:1310 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1355 +#: common/models.py:1315 msgid "Require confirm" msgstr "" -#: common/models.py:1356 +#: common/models.py:1316 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1361 +#: common/models.py:1321 msgid "Tree Depth" msgstr "" -#: common/models.py:1363 +#: common/models.py:1323 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1369 +#: common/models.py:1329 msgid "Update Check Interval" msgstr "" -#: common/models.py:1370 +#: common/models.py:1330 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1376 +#: common/models.py:1336 msgid "Automatic Backup" msgstr "" -#: common/models.py:1377 +#: common/models.py:1337 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1382 +#: common/models.py:1342 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1383 +#: common/models.py:1343 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1389 +#: common/models.py:1349 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1391 +#: common/models.py:1351 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1398 +#: common/models.py:1358 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1400 +#: common/models.py:1360 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1407 +#: common/models.py:1367 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1409 +#: common/models.py:1369 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1416 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1376 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1417 +#: common/models.py:1377 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1422 +#: common/models.py:1382 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1423 +#: common/models.py:1383 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1429 +#: common/models.py:1389 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1430 +#: common/models.py:1390 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1435 +#: common/models.py:1395 msgid "Part Revisions" msgstr "" -#: common/models.py:1436 +#: common/models.py:1396 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1441 +#: common/models.py:1401 msgid "Allow Deletion from Assembly" msgstr "" -#: common/models.py:1442 +#: common/models.py:1402 msgid "Allow deletion of parts which are used in an assembly" msgstr "" -#: common/models.py:1447 +#: common/models.py:1407 msgid "IPN Regex" msgstr "" -#: common/models.py:1448 +#: common/models.py:1408 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1451 +#: common/models.py:1411 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1452 +#: common/models.py:1412 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1457 +#: common/models.py:1417 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1458 +#: common/models.py:1418 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1463 +#: common/models.py:1423 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1464 +#: common/models.py:1424 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1469 +#: common/models.py:1429 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1470 +#: common/models.py:1430 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1475 +#: common/models.py:1435 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1476 +#: common/models.py:1436 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1481 +#: common/models.py:1441 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1482 +#: common/models.py:1442 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1487 part/admin.py:108 part/models.py:3815 -#: report/models.py:293 report/models.py:360 report/serializers.py:90 -#: report/serializers.py:131 stock/serializers.py:228 +#: common/models.py:1447 part/admin.py:108 part/models.py:3795 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:227 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1488 +#: common/models.py:1448 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 +#: common/models.py:1453 part/admin.py:91 part/admin.py:425 part/models.py:1052 #: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" msgstr "" -#: common/models.py:1494 +#: common/models.py:1454 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1499 part/admin.py:95 part/models.py:1065 +#: common/models.py:1459 part/admin.py:95 part/models.py:1058 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1500 +#: common/models.py:1460 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1505 part/admin.py:100 part/models.py:1077 +#: common/models.py:1465 part/admin.py:100 part/models.py:1070 msgid "Purchaseable" msgstr "" -#: common/models.py:1506 +#: common/models.py:1466 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1511 part/admin.py:104 part/models.py:1083 +#: common/models.py:1471 part/admin.py:104 part/models.py:1076 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1512 +#: common/models.py:1472 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1517 part/admin.py:113 part/models.py:1071 +#: common/models.py:1477 part/admin.py:113 part/models.py:1064 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" msgstr "" -#: common/models.py:1518 +#: common/models.py:1478 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1523 part/admin.py:117 part/models.py:1093 +#: common/models.py:1483 part/admin.py:117 part/models.py:1086 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" msgstr "" -#: common/models.py:1524 +#: common/models.py:1484 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1529 +#: common/models.py:1489 msgid "Show Import in Views" msgstr "" -#: common/models.py:1530 +#: common/models.py:1490 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1535 +#: common/models.py:1495 msgid "Show related parts" msgstr "" -#: common/models.py:1536 +#: common/models.py:1496 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1541 +#: common/models.py:1501 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1542 +#: common/models.py:1502 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1547 templates/js/translated/part.js:107 +#: common/models.py:1507 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1549 +#: common/models.py:1509 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1555 +#: common/models.py:1515 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1556 +#: common/models.py:1516 msgid "Format to display the part name" msgstr "" -#: common/models.py:1562 +#: common/models.py:1522 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1563 +#: common/models.py:1523 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1567 +#: common/models.py:1527 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1569 +#: common/models.py:1529 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1575 +#: common/models.py:1535 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1577 +#: common/models.py:1537 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1583 +#: common/models.py:1548 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1585 +#: common/models.py:1550 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1591 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1593 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1599 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1601 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1607 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1609 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1615 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1617 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1630 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1632 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1638 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1640 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1647 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1648 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1653 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1655 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1661 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1662 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1667 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1669 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1675 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1676 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1681 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1682 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1687 +#: common/models.py:1657 msgid "Log Report Errors" msgstr "" -#: common/models.py:1688 +#: common/models.py:1658 msgid "Log errors which occur when generating reports" msgstr "" -#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:301 +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:302 msgid "Page Size" msgstr "" -#: common/models.py:1694 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1699 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1700 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1705 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1707 +#: common/models.py:1677 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1713 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1714 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1719 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1720 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1725 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1727 +#: common/models.py:1697 msgid "Determines default behavior when a stock item is depleted" msgstr "" -#: common/models.py:1733 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1735 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1740 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1741 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1746 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1747 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1752 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1754 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1761 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1762 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1767 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1768 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1773 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1774 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1778 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1779 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1784 +#: common/models.py:1754 msgid "Check BOM when installing items" msgstr "" -#: common/models.py:1786 +#: common/models.py:1756 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "" -#: common/models.py:1792 +#: common/models.py:1762 msgid "Allow Out of Stock Transfer" msgstr "" -#: common/models.py:1794 +#: common/models.py:1764 msgid "Allow stock items which are not in stock to be transferred between stock locations" msgstr "" -#: common/models.py:1800 +#: common/models.py:1770 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1802 +#: common/models.py:1772 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1808 common/models.py:1836 common/models.py:1858 -#: common/models.py:1894 +#: common/models.py:1778 common/models.py:1806 common/models.py:1828 +#: common/models.py:1864 msgid "Require Responsible Owner" msgstr "" -#: common/models.py:1809 common/models.py:1837 common/models.py:1859 -#: common/models.py:1895 +#: common/models.py:1779 common/models.py:1807 common/models.py:1829 +#: common/models.py:1865 msgid "A responsible owner must be assigned to each order" msgstr "" -#: common/models.py:1814 +#: common/models.py:1784 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1816 +#: common/models.py:1786 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:1822 +#: common/models.py:1792 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1823 +#: common/models.py:1793 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1828 +#: common/models.py:1798 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1830 +#: common/models.py:1800 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1842 +#: common/models.py:1812 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1844 +#: common/models.py:1814 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1850 +#: common/models.py:1820 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1852 +#: common/models.py:1822 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1864 +#: common/models.py:1834 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1865 +#: common/models.py:1835 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1870 +#: common/models.py:1840 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1872 +#: common/models.py:1842 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1878 +#: common/models.py:1848 msgid "Mark Shipped Orders as Complete" msgstr "" -#: common/models.py:1880 +#: common/models.py:1850 msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" msgstr "" -#: common/models.py:1886 +#: common/models.py:1856 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1888 +#: common/models.py:1858 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1900 +#: common/models.py:1870 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1902 +#: common/models.py:1872 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1908 +#: common/models.py:1878 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1910 +#: common/models.py:1880 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1917 +#: common/models.py:1887 msgid "Enable password forgot" msgstr "" -#: common/models.py:1918 +#: common/models.py:1888 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1923 +#: common/models.py:1893 msgid "Enable registration" msgstr "" -#: common/models.py:1924 +#: common/models.py:1894 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1929 +#: common/models.py:1899 msgid "Enable SSO" msgstr "" -#: common/models.py:1930 +#: common/models.py:1900 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1935 +#: common/models.py:1905 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1937 +#: common/models.py:1907 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1943 +#: common/models.py:1913 msgid "Email required" msgstr "Surel diperlukan" -#: common/models.py:1944 +#: common/models.py:1914 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1949 +#: common/models.py:1919 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1951 +#: common/models.py:1921 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1957 +#: common/models.py:1927 msgid "Mail twice" msgstr "" -#: common/models.py:1958 +#: common/models.py:1928 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1963 +#: common/models.py:1933 msgid "Password twice" msgstr "" -#: common/models.py:1964 +#: common/models.py:1934 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1969 +#: common/models.py:1939 msgid "Allowed domains" msgstr "" -#: common/models.py:1971 +#: common/models.py:1941 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1977 +#: common/models.py:1947 msgid "Group on signup" msgstr "" -#: common/models.py:1978 +#: common/models.py:1948 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1983 +#: common/models.py:1953 msgid "Enforce MFA" msgstr "" -#: common/models.py:1984 +#: common/models.py:1954 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1989 +#: common/models.py:1959 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1991 +#: common/models.py:1961 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1999 +#: common/models.py:1969 msgid "Check for plugin updates" msgstr "" -#: common/models.py:2000 +#: common/models.py:1970 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:2006 +#: common/models.py:1976 msgid "Enable URL integration" msgstr "" -#: common/models.py:2007 +#: common/models.py:1977 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:2013 +#: common/models.py:1983 msgid "Enable navigation integration" msgstr "" -#: common/models.py:2014 +#: common/models.py:1984 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:2020 +#: common/models.py:1990 msgid "Enable app integration" msgstr "" -#: common/models.py:2021 +#: common/models.py:1991 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:2027 +#: common/models.py:1997 msgid "Enable schedule integration" msgstr "" -#: common/models.py:2028 +#: common/models.py:1998 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:2034 +#: common/models.py:2004 msgid "Enable event integration" msgstr "" -#: common/models.py:2035 +#: common/models.py:2005 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:2041 +#: common/models.py:2011 msgid "Enable project codes" msgstr "" -#: common/models.py:2042 +#: common/models.py:2012 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:2047 +#: common/models.py:2017 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:2049 +#: common/models.py:2019 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:2055 +#: common/models.py:2025 msgid "Exclude External Locations" msgstr "" -#: common/models.py:2057 +#: common/models.py:2027 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:2063 +#: common/models.py:2033 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:2065 +#: common/models.py:2035 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:2071 +#: common/models.py:2041 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:2073 +#: common/models.py:2043 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:2080 +#: common/models.py:2050 msgid "Display Users full names" msgstr "" -#: common/models.py:2081 +#: common/models.py:2051 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:2086 +#: common/models.py:2056 msgid "Enable Test Station Data" msgstr "" -#: common/models.py:2087 +#: common/models.py:2057 msgid "Enable test station data collection for test results" msgstr "" -#: common/models.py:2099 common/models.py:2509 +#: common/models.py:2069 common/models.py:2479 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2142 +#: common/models.py:2112 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2144 +#: common/models.py:2114 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2150 +#: common/models.py:2120 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2151 +#: common/models.py:2121 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2156 +#: common/models.py:2126 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2157 +#: common/models.py:2127 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2162 +#: common/models.py:2132 msgid "Show latest parts" msgstr "" -#: common/models.py:2163 +#: common/models.py:2133 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2168 +#: common/models.py:2138 msgid "Show invalid BOMs" msgstr "" -#: common/models.py:2169 +#: common/models.py:2139 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2174 +#: common/models.py:2144 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2175 +#: common/models.py:2145 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2180 +#: common/models.py:2150 msgid "Show low stock" msgstr "" -#: common/models.py:2181 +#: common/models.py:2151 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2186 +#: common/models.py:2156 msgid "Show depleted stock" msgstr "" -#: common/models.py:2187 +#: common/models.py:2157 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2192 +#: common/models.py:2162 msgid "Show needed stock" msgstr "" -#: common/models.py:2193 +#: common/models.py:2163 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2198 +#: common/models.py:2168 msgid "Show expired stock" msgstr "" -#: common/models.py:2199 +#: common/models.py:2169 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2204 +#: common/models.py:2174 msgid "Show stale stock" msgstr "" -#: common/models.py:2205 +#: common/models.py:2175 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2210 +#: common/models.py:2180 msgid "Show pending builds" msgstr "" -#: common/models.py:2211 +#: common/models.py:2181 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2216 +#: common/models.py:2186 msgid "Show overdue builds" msgstr "" -#: common/models.py:2217 +#: common/models.py:2187 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2222 +#: common/models.py:2192 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2223 +#: common/models.py:2193 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2228 +#: common/models.py:2198 msgid "Show overdue POs" msgstr "" -#: common/models.py:2229 +#: common/models.py:2199 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2234 +#: common/models.py:2204 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2235 +#: common/models.py:2205 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2240 +#: common/models.py:2210 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2241 +#: common/models.py:2211 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2246 +#: common/models.py:2216 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2247 +#: common/models.py:2217 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2252 +#: common/models.py:2222 msgid "Show News" msgstr "" -#: common/models.py:2253 +#: common/models.py:2223 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2258 +#: common/models.py:2228 msgid "Inline label display" msgstr "" -#: common/models.py:2260 +#: common/models.py:2230 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2266 +#: common/models.py:2236 msgid "Default label printer" msgstr "" -#: common/models.py:2268 +#: common/models.py:2238 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2274 +#: common/models.py:2244 msgid "Inline report display" msgstr "" -#: common/models.py:2276 +#: common/models.py:2246 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2282 +#: common/models.py:2252 msgid "Search Parts" msgstr "" -#: common/models.py:2283 +#: common/models.py:2253 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2288 +#: common/models.py:2258 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2289 +#: common/models.py:2259 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2294 +#: common/models.py:2264 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2295 +#: common/models.py:2265 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2300 +#: common/models.py:2270 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2301 +#: common/models.py:2271 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2306 +#: common/models.py:2276 msgid "Search Categories" msgstr "" -#: common/models.py:2307 +#: common/models.py:2277 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2312 +#: common/models.py:2282 msgid "Search Stock" msgstr "" -#: common/models.py:2313 +#: common/models.py:2283 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2318 +#: common/models.py:2288 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2320 +#: common/models.py:2290 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2326 +#: common/models.py:2296 msgid "Search Locations" msgstr "" -#: common/models.py:2327 +#: common/models.py:2297 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2332 +#: common/models.py:2302 msgid "Search Companies" msgstr "" -#: common/models.py:2333 +#: common/models.py:2303 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2338 +#: common/models.py:2308 msgid "Search Build Orders" msgstr "" -#: common/models.py:2339 +#: common/models.py:2309 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2344 +#: common/models.py:2314 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2345 +#: common/models.py:2315 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2350 +#: common/models.py:2320 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2352 +#: common/models.py:2322 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2358 +#: common/models.py:2328 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2359 +#: common/models.py:2329 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2364 +#: common/models.py:2334 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2366 +#: common/models.py:2336 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2372 +#: common/models.py:2342 msgid "Search Return Orders" msgstr "" -#: common/models.py:2373 +#: common/models.py:2343 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2378 +#: common/models.py:2348 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2380 +#: common/models.py:2350 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2386 +#: common/models.py:2356 msgid "Search Preview Results" msgstr "" -#: common/models.py:2388 +#: common/models.py:2358 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2394 +#: common/models.py:2364 msgid "Regex Search" msgstr "" -#: common/models.py:2395 +#: common/models.py:2365 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2400 +#: common/models.py:2370 msgid "Whole Word Search" msgstr "" -#: common/models.py:2401 +#: common/models.py:2371 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2406 +#: common/models.py:2376 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2407 +#: common/models.py:2377 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2412 +#: common/models.py:2382 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2413 +#: common/models.py:2383 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2418 +#: common/models.py:2388 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2419 +#: common/models.py:2389 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2424 +#: common/models.py:2394 msgid "Date Format" msgstr "" -#: common/models.py:2425 +#: common/models.py:2395 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2438 part/templates/part/detail.html:41 +#: common/models.py:2408 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2439 +#: common/models.py:2409 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2444 part/templates/part/detail.html:62 +#: common/models.py:2414 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2446 +#: common/models.py:2416 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2452 +#: common/models.py:2422 msgid "Table String Length" msgstr "" -#: common/models.py:2454 +#: common/models.py:2424 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2460 +#: common/models.py:2430 msgid "Default part label template" msgstr "" -#: common/models.py:2461 +#: common/models.py:2431 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2466 +#: common/models.py:2436 msgid "Default stock item template" msgstr "" -#: common/models.py:2468 +#: common/models.py:2438 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2474 +#: common/models.py:2444 msgid "Default stock location label template" msgstr "" -#: common/models.py:2476 +#: common/models.py:2446 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2482 +#: common/models.py:2452 msgid "Default build line label template" msgstr "" -#: common/models.py:2484 +#: common/models.py:2454 msgid "The build line label template to be automatically selected" msgstr "" -#: common/models.py:2490 +#: common/models.py:2460 msgid "Receive error reports" msgstr "" -#: common/models.py:2491 +#: common/models.py:2461 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2496 +#: common/models.py:2466 msgid "Last used printing machines" msgstr "" -#: common/models.py:2497 +#: common/models.py:2467 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2540 +#: common/models.py:2487 common/models.py:2488 common/models.py:2636 +#: common/models.py:2637 common/models.py:2882 common/models.py:2883 +#: common/models.py:3193 common/models.py:3194 part/models.py:3193 +#: part/models.py:3280 part/models.py:3353 part/models.py:3381 +#: plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "Pengguna" + +#: common/models.py:2510 msgid "Price break quantity" msgstr "" -#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1382 order/models.py:2301 -#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 +#: common/models.py:2517 company/serializers.py:472 order/admin.py:42 +#: order/models.py:1346 order/models.py:2265 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1886 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:740 msgid "Price" msgstr "" -#: common/models.py:2548 +#: common/models.py:2518 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2719 common/models.py:2904 +#: common/models.py:2613 common/models.py:2798 msgid "Endpoint" msgstr "" -#: common/models.py:2720 +#: common/models.py:2614 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2730 +#: common/models.py:2624 msgid "Name for this webhook" msgstr "" -#: common/models.py:2734 company/models.py:160 company/models.py:814 -#: machine/models.py:39 part/admin.py:88 part/models.py:1088 -#: plugin/models.py:65 templates/js/translated/company.js:523 +#: common/models.py:2628 company/models.py:163 company/models.py:782 +#: machine/models.py:39 part/admin.py:88 part/models.py:1081 +#: plugin/models.py:66 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3462,101 +3408,118 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2734 +#: common/models.py:2628 msgid "Is this webhook active" msgstr "" -#: common/models.py:2750 users/models.py:159 +#: common/models.py:2644 users/models.py:159 msgid "Token" msgstr "" -#: common/models.py:2751 +#: common/models.py:2645 msgid "Token for access" msgstr "" -#: common/models.py:2759 +#: common/models.py:2653 msgid "Secret" msgstr "" -#: common/models.py:2760 +#: common/models.py:2654 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2868 +#: common/models.py:2762 msgid "Message ID" msgstr "" -#: common/models.py:2869 +#: common/models.py:2763 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2877 +#: common/models.py:2771 msgid "Host" msgstr "" -#: common/models.py:2878 +#: common/models.py:2772 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2886 +#: common/models.py:2780 msgid "Header" msgstr "" -#: common/models.py:2887 +#: common/models.py:2781 msgid "Header of this message" msgstr "" -#: common/models.py:2894 +#: common/models.py:2788 msgid "Body" msgstr "" -#: common/models.py:2895 +#: common/models.py:2789 msgid "Body of this message" msgstr "" -#: common/models.py:2905 +#: common/models.py:2799 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2910 +#: common/models.py:2804 msgid "Worked on" msgstr "" -#: common/models.py:2911 +#: common/models.py:2805 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:3037 +#: common/models.py:2931 msgid "Id" msgstr "" -#: common/models.py:3039 templates/js/translated/company.js:965 +#: common/models.py:2933 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:3043 templates/js/translated/news.js:60 +#: common/models.py:2935 common/models.py:3177 company/models.py:149 +#: company/models.py:440 company/models.py:500 company/models.py:799 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +#: part/admin.py:55 part/models.py:955 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "Tautan" + +#: common/models.py:2937 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:3045 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2939 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:3047 templates/js/translated/news.js:52 +#: common/models.py:2941 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Read" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Was this news item read?" msgstr "" -#: common/models.py:3067 company/models.py:156 part/models.py:972 +#: common/models.py:2961 company/models.py:159 part/models.py:965 #: 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.html:35 @@ -3566,34 +3529,89 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:3067 +#: common/models.py:2961 msgid "Image file" msgstr "" -#: common/models.py:3109 +#: common/models.py:2973 common/models.py:3161 +msgid "Target model type for this image" +msgstr "" + +#: common/models.py:2977 +msgid "Target model ID for this image" +msgstr "" + +#: common/models.py:3018 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3128 +#: common/models.py:3037 msgid "Unit name" msgstr "" -#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3044 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3136 +#: common/models.py:3045 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3052 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3144 +#: common/models.py:3053 msgid "Unit definition" msgstr "" +#: common/models.py:3111 common/models.py:3168 stock/models.py:2426 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "Lampiran" + +#: common/models.py:3123 +msgid "Missing file" +msgstr "File tidak ditemukan" + +#: common/models.py:3124 +msgid "Missing external link" +msgstr "Tautan eksternal tidak ditemukan" + +#: common/models.py:3169 +msgid "Select file to attach" +msgstr "Pilih file untuk dilampirkan" + +#: common/models.py:3184 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "Komentar" + +#: common/models.py:3185 +msgid "Attachment comment" +msgstr "" + +#: common/models.py:3201 +msgid "Upload date" +msgstr "" + +#: common/models.py:3202 +msgid "Date the file was uploaded" +msgstr "" + +#: common/models.py:3206 +msgid "File size" +msgstr "" + +#: common/models.py:3206 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3244 common/serializers.py:553 +msgid "Invalid model type specified for attachment" +msgstr "" + #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" @@ -3628,66 +3646,103 @@ msgstr "" msgid "Error raised by plugin" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:371 msgid "Is Running" msgstr "" -#: common/serializers.py:372 +#: common/serializers.py:377 msgid "Pending Tasks" msgstr "" -#: common/serializers.py:378 +#: common/serializers.py:383 msgid "Scheduled Tasks" msgstr "" -#: common/serializers.py:384 +#: common/serializers.py:389 msgid "Failed Tasks" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Task ID" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Unique task ID" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock time" msgstr "" -#: common/serializers.py:403 +#: common/serializers.py:408 msgid "Task name" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function name" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Arguments" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Task arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Keyword Arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Task keyword arguments" msgstr "" +#: common/serializers.py:525 +msgid "Filename" +msgstr "Nama File" + +#: common/serializers.py:532 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: common/serializers.py:559 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "" + +#: common/validators.py:33 +msgid "No attachment model type provided" +msgstr "" + +#: common/validators.py:39 +msgid "Invalid attachment model type" +msgstr "" + +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "" + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +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 @@ -3726,210 +3781,222 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/api.py:164 +#: company/api.py:144 msgid "Part is Active" msgstr "" -#: company/api.py:168 +#: company/api.py:148 msgid "Manufacturer is Active" msgstr "" -#: company/api.py:317 +#: company/api.py:281 msgid "Supplier Part is Active" msgstr "" -#: company/api.py:321 +#: company/api.py:285 msgid "Internal Part is Active" msgstr "" -#: company/api.py:325 +#: company/api.py:289 msgid "Supplier is Active" msgstr "" -#: company/models.py:114 +#: company/models.py:100 company/models.py:365 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:822 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "" + +#: company/models.py:117 msgid "Company description" msgstr "" -#: company/models.py:115 +#: company/models.py:118 msgid "Description of the company" msgstr "" -#: company/models.py:120 company/templates/company/company_base.html:106 +#: company/models.py:123 company/templates/company/company_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:532 msgid "Website" msgstr "" -#: company/models.py:120 +#: company/models.py:123 msgid "Company website URL" msgstr "" -#: company/models.py:125 +#: company/models.py:128 msgid "Phone number" msgstr "" -#: company/models.py:127 +#: company/models.py:130 msgid "Contact phone number" msgstr "" -#: company/models.py:134 +#: company/models.py:137 msgid "Contact email address" msgstr "" -#: company/models.py:139 company/templates/company/company_base.html:145 +#: company/models.py:142 company/templates/company/company_base.html:145 #: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "" -#: company/models.py:141 +#: company/models.py:144 msgid "Point of contact" msgstr "" -#: company/models.py:147 +#: company/models.py:150 msgid "Link to external company information" msgstr "" -#: company/models.py:160 +#: company/models.py:163 msgid "Is this company active?" msgstr "" -#: company/models.py:165 +#: company/models.py:168 msgid "is customer" msgstr "" -#: company/models.py:166 +#: company/models.py:169 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:171 +#: company/models.py:174 msgid "is supplier" msgstr "" -#: company/models.py:172 +#: company/models.py:175 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:177 +#: company/models.py:180 msgid "is manufacturer" msgstr "" -#: company/models.py:178 +#: company/models.py:181 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:186 +#: company/models.py:189 msgid "Default currency used for this company" msgstr "" -#: company/models.py:273 company/models.py:382 -#: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:812 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 -msgid "Company" -msgstr "" - -#: company/models.py:383 +#: company/models.py:366 msgid "Select company" msgstr "" -#: company/models.py:388 +#: company/models.py:371 msgid "Address title" msgstr "" -#: company/models.py:389 +#: company/models.py:372 msgid "Title describing the address entry" msgstr "" -#: company/models.py:395 +#: company/models.py:378 msgid "Primary address" msgstr "" -#: company/models.py:396 +#: company/models.py:379 msgid "Set as primary address" msgstr "" -#: company/models.py:401 templates/js/translated/company.js:914 +#: company/models.py:384 templates/js/translated/company.js:914 #: templates/js/translated/company.js:971 msgid "Line 1" msgstr "" -#: company/models.py:402 +#: company/models.py:385 msgid "Address line 1" msgstr "" -#: company/models.py:408 templates/js/translated/company.js:915 +#: company/models.py:391 templates/js/translated/company.js:915 #: templates/js/translated/company.js:977 msgid "Line 2" msgstr "" -#: company/models.py:409 +#: company/models.py:392 msgid "Address line 2" msgstr "" -#: company/models.py:415 company/models.py:416 +#: company/models.py:398 company/models.py:399 #: templates/js/translated/company.js:983 msgid "Postal code" msgstr "" -#: company/models.py:422 +#: company/models.py:405 msgid "City/Region" msgstr "" -#: company/models.py:423 +#: company/models.py:406 msgid "Postal code city/region" msgstr "" -#: company/models.py:429 +#: company/models.py:412 msgid "State/Province" msgstr "" -#: company/models.py:430 +#: company/models.py:413 msgid "State or province" msgstr "" -#: company/models.py:436 templates/js/translated/company.js:1001 +#: company/models.py:419 templates/js/translated/company.js:1001 msgid "Country" msgstr "" -#: company/models.py:437 +#: company/models.py:420 msgid "Address country" msgstr "" -#: company/models.py:443 +#: company/models.py:426 msgid "Courier shipping notes" msgstr "" -#: company/models.py:444 +#: company/models.py:427 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:450 +#: company/models.py:433 msgid "Internal shipping notes" msgstr "" -#: company/models.py:451 +#: company/models.py:434 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:458 +#: company/models.py:441 msgid "Link to address information (external)" msgstr "" -#: company/models.py:489 company/models.py:792 stock/models.py:768 -#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 +#: company/models.py:463 company/models.py:574 company/models.py:792 +#: 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:475 company/models.py:760 stock/models.py:766 +#: stock/serializers.py:422 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:491 company/models.py:794 +#: company/models.py:477 company/models.py:762 msgid "Select part" msgstr "" -#: company/models.py:500 company/templates/company/company_base.html:82 +#: company/models.py:486 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:530 +#: company/templates/company/supplier_part.html:145 part/serializers.py:525 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -3939,152 +4006,154 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:501 +#: company/models.py:487 msgid "Select manufacturer" msgstr "" -#: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:540 +#: company/models.py:493 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:535 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 -#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1801 #: templates/js/translated/purchase_order.js:1851 #: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "" -#: company/models.py:508 +#: company/models.py:494 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:515 +#: company/models.py:501 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:524 +#: company/models.py:510 msgid "Manufacturer part description" msgstr "" -#: company/models.py:581 company/models.py:608 company/models.py:824 -#: 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:615 +#: company/models.py:581 msgid "Parameter name" msgstr "" -#: company/models.py:621 report/templates/report/inventree_test_report.html:104 -#: stock/models.py:2429 templates/js/translated/company.js:1166 -#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 +#: company/models.py:587 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2418 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1493 #: templates/js/translated/stock.js:1522 msgid "Value" msgstr "" -#: company/models.py:622 +#: company/models.py:588 msgid "Parameter value" msgstr "" -#: company/models.py:629 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1052 part/models.py:3666 +#: company/models.py:595 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1045 part/models.py:3646 #: part/templates/part/part_base.html:284 -#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1512 +#: templates/js/translated/part.js:1616 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:630 +#: company/models.py:596 msgid "Parameter units" msgstr "" -#: company/models.py:732 +#: company/models.py:648 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:777 stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "" + +#: company/models.py:700 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:739 +#: company/models.py:707 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:753 +#: company/models.py:721 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/models.py:770 company/templates/company/company_base.html:87 #: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:514 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:509 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:511 -#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1769 #: templates/js/translated/pricing.js:498 #: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "" -#: company/models.py:803 +#: company/models.py:771 msgid "Select supplier" msgstr "" -#: company/models.py:809 part/serializers.py:525 +#: company/models.py:777 part/serializers.py:520 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:815 +#: company/models.py:783 msgid "Is this supplier part active?" msgstr "" -#: company/models.py:825 +#: company/models.py:793 msgid "Select manufacturer part" msgstr "" -#: company/models.py:832 +#: company/models.py:800 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:841 +#: company/models.py:809 msgid "Supplier part description" msgstr "" -#: company/models.py:848 company/templates/company/supplier_part.html:187 -#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 +#: company/models.py:816 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4093 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_purchase_order_report.html:32 #: report/templates/report/inventree_return_order_report.html:27 #: report/templates/report/inventree_sales_order_report.html:32 #: report/templates/report/inventree_stock_location_report.html:105 -#: stock/serializers.py:708 +#: stock/serializers.py:710 msgid "Note" msgstr "" -#: company/models.py:857 part/models.py:2010 +#: company/models.py:825 part/models.py:2003 msgid "base cost" msgstr "" -#: company/models.py:858 part/models.py:2011 +#: company/models.py:826 part/models.py:2004 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:865 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 +#: company/models.py:833 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:797 stock/serializers.py:1475 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 #: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "" -#: company/models.py:866 +#: company/models.py:834 msgid "Part packaging" msgstr "" -#: company/models.py:871 templates/js/translated/company.js:1651 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: company/models.py:839 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:311 #: templates/js/translated/purchase_order.js:841 #: templates/js/translated/purchase_order.js:1103 @@ -4093,35 +4162,35 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:873 +#: company/models.py:841 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:892 part/models.py:2017 +#: company/models.py:860 part/models.py:2010 msgid "multiple" msgstr "" -#: company/models.py:893 +#: company/models.py:861 msgid "Order multiple" msgstr "" -#: company/models.py:905 +#: company/models.py:873 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:911 +#: company/models.py:879 msgid "Availability Updated" msgstr "" -#: company/models.py:912 +#: company/models.py:880 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:163 +#: company/serializers.py:161 msgid "Default currency used for this supplier" msgstr "" -#: company/serializers.py:381 part/admin.py:126 +#: company/serializers.py:357 part/admin.py:126 #: part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1689 #: templates/js/translated/table_filters.js:355 @@ -4133,7 +4202,7 @@ msgstr "" #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 #: templates/js/translated/model_renderers.js:312 -#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +#: templates/js/translated/part.js:815 templates/js/translated/part.js:1219 msgid "Inactive" msgstr "" @@ -4172,7 +4241,7 @@ msgstr "" #: report/templates/report/inventree_purchase_order_report.html:40 #: report/templates/report/inventree_sales_order_report.html:40 #: report/templates/report/inventree_test_report.html:84 -#: report/templates/report/inventree_test_report.html:163 +#: report/templates/report/inventree_test_report.html:162 msgid "Part image" msgstr "" @@ -4191,10 +4260,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:92 order/models.py:940 -#: order/models.py:2068 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:148 stock/models.py:821 -#: stock/models.py:822 stock/serializers.py:1229 +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2032 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:819 +#: stock/models.py:820 stock/serializers.py:1225 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 @@ -4405,7 +4474,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:836 +#: part/admin.py:122 part/serializers.py:832 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4425,8 +4494,8 @@ msgstr "" msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:206 -#: templates/js/translated/part.js:1422 +#: company/templates/company/manufacturer_part.html:196 +#: templates/js/translated/part.js:1423 msgid "Add Parameter" msgstr "" @@ -4454,15 +4523,6 @@ msgstr "" msgid "Addresses" msgstr "" -#: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:452 -#: stock/models.py:779 stock/templates/stock/item_base.html:233 -#: templates/js/translated/company.js:1600 -#: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2280 -msgid "Supplier Part" -msgstr "" - #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1526 msgid "Supplier part actions" @@ -4505,8 +4565,8 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:524 -#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: part/bom.py:311 part/serializers.py:519 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1787 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1850 #: templates/js/translated/purchase_order.js:2028 @@ -4518,12 +4578,12 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:207 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" @@ -4555,15 +4615,15 @@ msgid "Update Part Availability" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:835 part/stocktake.py:223 +#: part/serializers.py:831 part/stocktake.py:224 #: part/templates/part/category.html:183 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:916 stock/serializers.py:1080 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:918 stock/serializers.py:1091 #: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:191 #: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1061 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:206 msgid "Stock Items" @@ -4590,10 +4650,6 @@ msgstr "" 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 "" @@ -4614,7 +4670,7 @@ msgstr "" msgid "Connected" msgstr "" -#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: machine/machine_types/label_printer.py:235 order/api.py:1467 #: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "" @@ -4703,7 +4759,7 @@ msgstr "" msgid "Config type" msgstr "" -#: order/admin.py:30 order/models.py:89 +#: order/admin.py:30 order/models.py:90 #: report/templates/report/inventree_purchase_order_report.html:31 #: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 @@ -4712,30 +4768,30 @@ msgstr "" msgid "Total Price" msgstr "" -#: order/api.py:161 order/serializers.py:91 +#: order/api.py:157 order/serializers.py:90 #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "" -#: order/api.py:165 templates/js/translated/table_filters.js:194 +#: order/api.py:161 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "" -#: order/api.py:240 +#: order/api.py:236 msgid "No matching purchase order found" msgstr "" -#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 -#: order/models.py:1586 order/models.py:1700 order/models.py:1854 -#: order/models.py:2267 order/models.py:2318 +#: order/api.py:435 order/api.py:801 order/models.py:1395 order/models.py:1504 +#: order/models.py:1550 order/models.py:1664 order/models.py:1818 +#: order/models.py:2231 order/models.py:2282 #: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "" -#: order/api.py:441 order/api.py:838 +#: order/api.py:439 order/api.py:822 msgid "Order Complete" msgstr "" @@ -4743,13 +4799,13 @@ msgstr "" msgid "Order Pending" msgstr "" -#: order/api.py:1509 order/models.py:380 order/models.py:1432 -#: order/models.py:1541 order/templates/order/order_base.html:9 +#: order/api.py:1461 order/models.py:380 order/models.py:1396 +#: order/models.py:1505 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_purchase_order_report.html:14 -#: stock/serializers.py:119 stock/templates/stock/item_base.html:176 +#: stock/serializers.py:118 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/part.js:1746 templates/js/translated/pricing.js:804 #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1673 @@ -4757,8 +4813,8 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1513 order/models.py:2017 order/models.py:2268 -#: order/models.py:2319 order/templates/order/return_order_base.html:9 +#: order/api.py:1465 order/models.py:1981 order/models.py:2232 +#: order/models.py:2283 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report.html:13 #: templates/js/translated/return_order.js:280 @@ -4766,15 +4822,15 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/models.py:90 +#: order/models.py:91 msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:71 +#: order/models.py:96 order/serializers.py:70 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:72 +#: order/models.py:99 order/serializers.py:71 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -4790,7 +4846,7 @@ msgstr "" msgid "Select project code for this order" msgstr "" -#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 msgid "Link to external page" msgstr "" @@ -4814,11 +4870,11 @@ msgstr "" msgid "Company address for this order" msgstr "" -#: order/models.py:464 order/models.py:929 +#: order/models.py:464 order/models.py:927 msgid "Order reference" msgstr "" -#: order/models.py:472 order/models.py:953 +#: order/models.py:472 order/models.py:951 msgid "Purchase order status" msgstr "" @@ -4839,15 +4895,15 @@ msgstr "" msgid "received by" msgstr "" -#: order/models.py:514 order/models.py:2094 +#: order/models.py:514 order/models.py:2058 msgid "Issue Date" msgstr "" -#: order/models.py:515 order/models.py:2095 +#: order/models.py:515 order/models.py:2059 msgid "Date order was issued" msgstr "" -#: order/models.py:522 order/models.py:2102 +#: order/models.py:522 order/models.py:2066 msgid "Date order was completed" msgstr "" @@ -4859,96 +4915,94 @@ msgstr "" msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:941 +#: order/models.py:939 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:964 order/models.py:2087 +#: order/models.py:962 order/models.py:2051 msgid "Customer Reference " msgstr "" -#: order/models.py:965 order/models.py:2088 +#: order/models.py:963 order/models.py:2052 msgid "Customer order reference code" msgstr "" -#: order/models.py:969 order/models.py:1707 +#: order/models.py:967 order/models.py:1671 #: templates/js/translated/sales_order.js:879 #: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "" -#: order/models.py:978 +#: order/models.py:976 msgid "shipped by" msgstr "" -#: order/models.py:1027 -#, fuzzy -#| msgid "Build output is already completed" +#: order/models.py:1025 msgid "Order is already complete" -msgstr "Hasil produksi sudah selesai" +msgstr "" -#: order/models.py:1030 +#: order/models.py:1028 msgid "Order is already cancelled" msgstr "" -#: order/models.py:1034 +#: order/models.py:1032 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:1038 +#: order/models.py:1036 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:1043 +#: order/models.py:1041 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1309 +#: order/models.py:1273 msgid "Item quantity" msgstr "" -#: order/models.py:1326 +#: order/models.py:1290 msgid "Line item reference" msgstr "" -#: order/models.py:1333 +#: order/models.py:1297 msgid "Line item notes" msgstr "" -#: order/models.py:1345 +#: order/models.py:1309 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1366 +#: order/models.py:1330 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1372 +#: order/models.py:1336 msgid "Context" msgstr "" -#: order/models.py:1373 +#: order/models.py:1337 msgid "Additional context for this line" msgstr "" -#: order/models.py:1383 +#: order/models.py:1347 msgid "Unit price" msgstr "" -#: order/models.py:1416 +#: order/models.py:1380 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1423 +#: order/models.py:1387 msgid "deleted" msgstr "" -#: order/models.py:1451 +#: order/models.py:1415 msgid "Supplier part" msgstr "" -#: order/models.py:1458 order/templates/order/order_base.html:196 -#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: order/models.py:1422 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1870 templates/js/translated/part.js:1902 #: templates/js/translated/purchase_order.js:1306 #: templates/js/translated/purchase_order.js:2169 #: templates/js/translated/return_order.js:763 @@ -4957,196 +5011,196 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1459 +#: order/models.py:1423 msgid "Number of items received" msgstr "" -#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 +#: order/models.py:1431 stock/models.py:938 stock/serializers.py:556 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "" -#: order/models.py:1468 +#: order/models.py:1432 msgid "Unit purchase price" msgstr "" -#: order/models.py:1483 +#: order/models.py:1447 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1574 +#: order/models.py:1538 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1579 +#: order/models.py:1543 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1605 part/templates/part/part_pricing.html:107 +#: order/models.py:1569 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:1606 +#: order/models.py:1570 msgid "Unit sale price" msgstr "" -#: order/models.py:1615 order/status_codes.py:43 +#: order/models.py:1579 order/status_codes.py:43 #: templates/js/translated/sales_order.js:1559 #: templates/js/translated/sales_order.js:1680 #: templates/js/translated/sales_order.js:1993 msgid "Shipped" msgstr "Dikirim" -#: order/models.py:1616 +#: order/models.py:1580 msgid "Shipped quantity" msgstr "" -#: order/models.py:1708 +#: order/models.py:1672 msgid "Date of shipment" msgstr "" -#: order/models.py:1714 templates/js/translated/sales_order.js:1072 +#: order/models.py:1678 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "" -#: order/models.py:1715 +#: order/models.py:1679 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1723 +#: order/models.py:1687 msgid "Checked By" msgstr "" -#: order/models.py:1724 +#: order/models.py:1688 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 -#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 +#: order/models.py:1695 order/models.py:1908 order/serializers.py:1342 +#: order/serializers.py:1452 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "" -#: order/models.py:1732 +#: order/models.py:1696 msgid "Shipment number" msgstr "" -#: order/models.py:1740 +#: order/models.py:1704 msgid "Tracking Number" msgstr "" -#: order/models.py:1741 +#: order/models.py:1705 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1748 +#: order/models.py:1712 msgid "Invoice Number" msgstr "" -#: order/models.py:1749 +#: order/models.py:1713 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1769 +#: order/models.py:1733 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1772 +#: order/models.py:1736 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1890 order/models.py:1892 +#: order/models.py:1854 order/models.py:1856 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1899 +#: order/models.py:1863 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1902 +#: order/models.py:1866 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1905 +#: order/models.py:1869 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1924 order/serializers.py:1231 +#: order/models.py:1888 order/serializers.py:1219 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1927 +#: order/models.py:1891 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1928 plugin/base/barcodes/api.py:481 +#: order/models.py:1892 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1936 +#: order/models.py:1900 msgid "Line" msgstr "" -#: order/models.py:1945 +#: order/models.py:1909 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1958 order/models.py:2275 +#: order/models.py:1922 order/models.py:2239 #: templates/js/translated/return_order.js:721 msgid "Item" msgstr "" -#: order/models.py:1959 +#: order/models.py:1923 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1968 +#: order/models.py:1932 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:2057 +#: order/models.py:2021 msgid "Return Order reference" msgstr "" -#: order/models.py:2069 +#: order/models.py:2033 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:2081 +#: order/models.py:2045 msgid "Return order status" msgstr "" -#: order/models.py:2260 +#: order/models.py:2224 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2276 +#: order/models.py:2240 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2282 +#: order/models.py:2246 msgid "Received Date" msgstr "" -#: order/models.py:2283 +#: order/models.py:2247 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2294 templates/js/translated/return_order.js:732 +#: order/models.py:2258 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2295 +#: order/models.py:2259 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2302 +#: order/models.py:2266 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/serializers.py:79 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_purchase_order_report.html:22 @@ -5155,163 +5209,163 @@ msgstr "" msgid "Line Items" msgstr "" -#: order/serializers.py:84 +#: order/serializers.py:83 msgid "Completed Lines" msgstr "" -#: order/serializers.py:287 +#: order/serializers.py:286 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:302 order/serializers.py:1247 +#: order/serializers.py:301 order/serializers.py:1235 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:312 order/serializers.py:1257 +#: order/serializers.py:311 order/serializers.py:1245 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:440 +#: order/serializers.py:439 msgid "Order is not open" msgstr "" -#: order/serializers.py:461 +#: order/serializers.py:460 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:463 +#: order/serializers.py:462 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:473 +#: order/serializers.py:472 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:478 msgid "Merge Items" msgstr "" -#: order/serializers.py:481 +#: order/serializers.py:480 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:499 +#: order/serializers.py:498 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:502 +#: order/serializers.py:501 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:510 +#: order/serializers.py:509 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:511 +#: order/serializers.py:510 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:550 order/serializers.py:1325 +#: order/serializers.py:549 order/serializers.py:1313 msgid "Line Item" msgstr "" -#: order/serializers.py:556 +#: order/serializers.py:555 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1657 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:581 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:589 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:601 templates/js/translated/barcode.js:52 +#: order/serializers.py:600 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:602 +#: order/serializers.py:601 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:618 +#: order/serializers.py:617 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:642 +#: order/serializers.py:641 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:690 order/serializers.py:1696 +#: order/serializers.py:689 order/serializers.py:1673 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:706 +#: order/serializers.py:705 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:717 +#: order/serializers.py:716 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1074 +#: order/serializers.py:1062 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1134 +#: order/serializers.py:1122 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1195 order/serializers.py:1334 +#: order/serializers.py:1183 order/serializers.py:1322 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1214 +#: order/serializers.py:1202 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1344 +#: order/serializers.py:1332 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1366 order/serializers.py:1472 +#: order/serializers.py:1354 order/serializers.py:1460 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1369 order/serializers.py:1475 +#: order/serializers.py:1357 order/serializers.py:1463 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1416 +#: order/serializers.py:1404 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1423 +#: order/serializers.py:1411 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1650 +#: order/serializers.py:1627 msgid "Return order line item" msgstr "" -#: order/serializers.py:1656 +#: order/serializers.py:1633 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1659 +#: order/serializers.py:1636 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1688 +#: order/serializers.py:1665 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1766 +#: order/serializers.py:1743 msgid "Line price currency" msgstr "" @@ -5641,7 +5695,7 @@ msgstr "" #: 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/part.js:1073 #: templates/js/translated/purchase_order.js:1752 #: templates/js/translated/return_order.js:380 #: templates/js/translated/sales_order.js:891 @@ -5737,34 +5791,34 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:406 part/models.py:3964 part/stocktake.py:218 -#: stock/admin.py:153 +#: part/admin.py:39 part/admin.py:398 part/models.py:3944 part/stocktake.py:219 +#: stock/admin.py:152 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 -#: stock/admin.py:157 +#: part/admin.py:41 part/admin.py:405 part/models.py:3945 part/stocktake.py:220 +#: stock/admin.py:156 msgid "Part Name" msgstr "" -#: part/admin.py:45 part/stocktake.py:220 +#: part/admin.py:45 part/stocktake.py:221 msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:940 part/templates/part/part_base.html:269 #: report/templates/report/inventree_stock_location_report.html:103 -#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/part.js:1227 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 -#: report/models.py:161 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2346 +#: part/admin.py:50 part/models.py:949 part/templates/part/part_base.html:277 +#: report/models.py:162 templates/js/translated/part.js:1232 +#: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:319 part/models.py:929 +#: part/admin.py:53 part/admin.py:319 part/models.py:922 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5773,11 +5827,11 @@ msgstr "" msgid "Part Image" msgstr "" -#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:222 msgid "Category ID" msgstr "" -#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:223 msgid "Category Name" msgstr "" @@ -5789,11 +5843,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:908 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1036 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5801,26 +5855,26 @@ msgstr "" 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 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:235 +#: templates/js/translated/part.js:715 templates/js/translated/part.js:2153 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3123 part/models.py:3137 -#: templates/js/translated/part.js:969 +#: part/admin.py:155 part/models.py:3088 part/models.py:3102 +#: templates/js/translated/part.js:970 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3130 part/models.py:3144 -#: templates/js/translated/part.js:979 +#: part/admin.py:158 part/models.py:3095 part/models.py:3109 +#: templates/js/translated/part.js:980 msgid "Maximum Cost" msgstr "" -#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 msgid "Parent ID" msgstr "" -#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 msgid "Parent Name" msgstr "" @@ -5829,141 +5883,149 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:325 part/models.py:393 part/serializers.py:117 -#: part/serializers.py:272 part/serializers.py:391 +#: part/admin.py:325 part/models.py:396 part/serializers.py:124 +#: part/serializers.py:267 part/serializers.py:386 #: 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:2803 templates/js/translated/search.js:130 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "" -#: part/admin.py:386 +#: part/admin.py:378 msgid "BOM Level" msgstr "" -#: part/admin.py:389 +#: part/admin.py:381 msgid "BOM Item ID" msgstr "" -#: part/admin.py:399 +#: part/admin.py:391 msgid "Parent IPN" msgstr "" -#: part/admin.py:410 part/models.py:3966 +#: part/admin.py:402 part/models.py:3946 msgid "Part IPN" msgstr "" -#: part/admin.py:423 part/serializers.py:1278 +#: part/admin.py:415 part/serializers.py:1274 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:428 part/serializers.py:1293 +#: part/admin.py:420 part/serializers.py:1289 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:110 +#: part/api.py:104 msgid "Starred" msgstr "" -#: part/api.py:112 +#: part/api.py:106 msgid "Filter by starred categories" msgstr "" -#: part/api.py:129 stock/api.py:318 +#: part/api.py:123 stock/api.py:312 msgid "Depth" msgstr "" -#: part/api.py:129 +#: part/api.py:123 msgid "Filter by category depth" msgstr "" -#: part/api.py:147 stock/api.py:336 +#: part/api.py:141 stock/api.py:330 +msgid "Top Level" +msgstr "" + +#: part/api.py:143 +msgid "Filter by top-level categories" +msgstr "" + +#: part/api.py:156 stock/api.py:345 msgid "Cascade" msgstr "" -#: part/api.py:149 +#: part/api.py:158 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:169 +#: part/api.py:179 templates/js/translated/part.js:308 msgid "Parent" msgstr "" -#: part/api.py:171 +#: part/api.py:181 msgid "Filter by parent category" msgstr "" -#: part/api.py:204 +#: part/api.py:214 msgid "Exclude Tree" msgstr "" -#: part/api.py:206 +#: part/api.py:216 msgid "Exclude sub-categories under the specified category" msgstr "" -#: part/api.py:455 +#: part/api.py:449 msgid "Has Results" msgstr "" -#: part/api.py:622 +#: part/api.py:616 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:640 +#: part/api.py:634 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:656 +#: part/api.py:650 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:740 +#: part/api.py:734 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:887 +#: part/api.py:881 msgid "Valid" msgstr "" -#: part/api.py:888 +#: part/api.py:882 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:894 +#: part/api.py:888 msgid "This option must be selected" msgstr "" -#: part/api.py:1111 +#: part/api.py:1105 msgid "BOM Valid" msgstr "" -#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 -#: part/serializers.py:406 part/serializers.py:1134 -#: part/templates/part/part_base.html:260 stock/api.py:781 +#: part/api.py:1508 part/models.py:932 part/models.py:3374 part/models.py:3889 +#: part/serializers.py:401 part/serializers.py:1130 +#: part/templates/part/part_base.html:260 stock/api.py:791 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2376 +#: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/api.py:1803 +#: part/api.py:1796 msgid "Uses" msgstr "" -#: part/bom.py:170 part/models.py:102 part/models.py:982 +#: part/bom.py:170 part/models.py:104 part/models.py:975 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 part/serializers.py:837 +#: part/bom.py:171 part/serializers.py:833 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5972,1054 +6034,1066 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 +#: part/models.py:85 part/models.py:3890 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:84 part/templates/part/category.html:136 +#: part/models.py:86 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "" -#: part/models.py:103 +#: part/models.py:105 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 +#: part/models.py:110 stock/models.py:174 templates/js/translated/part.js:2810 #: templates/js/translated/stock.js:2772 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:110 +#: part/models.py:112 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:119 +#: part/models.py:121 msgid "Default keywords" msgstr "" -#: part/models.py:120 +#: part/models.py:122 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 stock/models.py:85 stock/models.py:156 +#: part/models.py:128 stock/models.py:86 stock/models.py:157 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:127 stock/models.py:157 +#: part/models.py:129 stock/models.py:158 msgid "Icon (optional)" msgstr "" -#: part/models.py:149 +#: part/models.py:151 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:482 +#: part/models.py:485 msgid "Cannot delete this part as it is still active" msgstr "" -#: part/models.py:489 +#: part/models.py:490 msgid "Cannot delete this part as it is used in an assembly" msgstr "" -#: part/models.py:527 +#: part/models.py:528 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:575 part/models.py:582 +#: part/models.py:576 part/models.py:583 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:594 +#: part/models.py:595 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:659 +#: part/models.py:658 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:739 +#: part/models.py:736 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:844 +#: part/models.py:837 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:854 +#: part/models.py:847 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:869 +#: part/models.py:862 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:898 part/models.py:3965 +#: part/models.py:891 part/models.py:3945 msgid "Part name" msgstr "" -#: part/models.py:903 +#: part/models.py:896 msgid "Is Template" msgstr "" -#: part/models.py:904 +#: part/models.py:897 msgid "Is this part a template part?" msgstr "" -#: part/models.py:914 +#: part/models.py:907 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:922 +#: part/models.py:915 msgid "Part description (optional)" msgstr "" -#: part/models.py:930 +#: part/models.py:923 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:940 +#: part/models.py:933 msgid "Part category" msgstr "" -#: part/models.py:948 +#: part/models.py:941 msgid "Internal Part Number" msgstr "" -#: part/models.py:955 +#: part/models.py:948 msgid "Part revision or version number" msgstr "" -#: part/models.py:980 +#: part/models.py:973 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:1026 part/templates/part/part_base.html:376 +#: part/models.py:1019 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:1027 +#: part/models.py:1020 msgid "Default supplier part" msgstr "" -#: part/models.py:1034 +#: part/models.py:1027 msgid "Default Expiry" msgstr "" -#: part/models.py:1035 +#: part/models.py:1028 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:1044 +#: part/models.py:1037 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:1053 +#: part/models.py:1046 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1060 +#: part/models.py:1053 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1066 +#: part/models.py:1059 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1072 +#: part/models.py:1065 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1078 +#: part/models.py:1071 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1084 +#: part/models.py:1077 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1088 +#: part/models.py:1081 msgid "Is this part active?" msgstr "" -#: part/models.py:1094 +#: part/models.py:1087 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1100 +#: part/models.py:1093 msgid "BOM checksum" msgstr "" -#: part/models.py:1101 +#: part/models.py:1094 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1109 +#: part/models.py:1102 msgid "BOM checked by" msgstr "" -#: part/models.py:1114 +#: part/models.py:1107 msgid "BOM checked date" msgstr "" -#: part/models.py:1130 +#: part/models.py:1123 msgid "Creation User" msgstr "" -#: part/models.py:1140 +#: part/models.py:1133 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1145 part/templates/part/part_base.html:339 +#: part/models.py:1138 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2470 +#: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:2018 +#: part/models.py:2011 msgid "Sell multiple" msgstr "" -#: part/models.py:3037 +#: part/models.py:3002 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:3053 +#: part/models.py:3018 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:3054 +#: part/models.py:3019 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:3060 +#: part/models.py:3025 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3026 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:3067 +#: part/models.py:3032 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3033 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3074 +#: part/models.py:3039 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3040 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3046 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3047 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3053 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3054 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3060 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3096 +#: part/models.py:3061 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3102 +#: part/models.py:3067 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3103 +#: part/models.py:3068 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3109 +#: part/models.py:3074 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3110 +#: part/models.py:3075 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3116 +#: part/models.py:3081 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3117 +#: part/models.py:3082 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3124 +#: part/models.py:3089 msgid "Override minimum cost" msgstr "" -#: part/models.py:3131 +#: part/models.py:3096 msgid "Override maximum cost" msgstr "" -#: part/models.py:3138 +#: part/models.py:3103 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3145 +#: part/models.py:3110 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3151 +#: part/models.py:3116 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3152 +#: part/models.py:3117 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3158 +#: part/models.py:3123 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3159 +#: part/models.py:3124 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3165 +#: part/models.py:3130 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3131 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3172 +#: part/models.py:3137 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3138 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3192 +#: part/models.py:3157 msgid "Part for stocktake" msgstr "" -#: part/models.py:3197 +#: part/models.py:3162 msgid "Item Count" msgstr "" -#: part/models.py:3198 +#: part/models.py:3163 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3206 +#: part/models.py:3171 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3210 part/models.py:3293 +#: part/models.py:3175 part/models.py:3258 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report.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/part.js:1086 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" -#: part/models.py:3211 +#: part/models.py:3176 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3219 +#: part/models.py:3184 msgid "Additional notes" msgstr "" -#: part/models.py:3229 +#: part/models.py:3194 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3235 +#: part/models.py:3200 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3236 +#: part/models.py:3201 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3242 +#: part/models.py:3207 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3243 +#: part/models.py:3208 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3264 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3300 +#: part/models.py:3265 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3270 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3306 +#: part/models.py:3271 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3316 +#: part/models.py:3281 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3478 +#: part/models.py:3423 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3489 +#: part/models.py:3444 part/models.py:3608 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3455 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3500 +#: part/models.py:3466 msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3517 templates/js/translated/part.js:2878 +#: part/models.py:3483 templates/js/translated/part.js:2880 msgid "Test Name" msgstr "" -#: part/models.py:3518 +#: part/models.py:3484 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3524 +#: part/models.py:3490 msgid "Test Key" msgstr "" -#: part/models.py:3525 +#: part/models.py:3491 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3532 +#: part/models.py:3498 msgid "Test Description" msgstr "" -#: part/models.py:3533 +#: part/models.py:3499 msgid "Enter description for this test" msgstr "" -#: part/models.py:3537 report/models.py:208 -#: templates/js/translated/part.js:2899 +#: part/models.py:3503 report/models.py:209 +#: templates/js/translated/part.js:2901 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" -#: part/models.py:3537 +#: part/models.py:3503 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3542 templates/js/translated/part.js:2907 +#: part/models.py:3508 templates/js/translated/part.js:2909 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3543 +#: part/models.py:3509 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3548 templates/js/translated/part.js:2915 +#: part/models.py:3514 templates/js/translated/part.js:2917 msgid "Requires Value" msgstr "" -#: part/models.py:3549 +#: part/models.py:3515 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3554 templates/js/translated/part.js:2922 +#: part/models.py:3520 templates/js/translated/part.js:2924 msgid "Requires Attachment" msgstr "" -#: part/models.py:3556 +#: part/models.py:3522 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3603 +#: part/models.py:3528 part/models.py:3667 templates/js/translated/part.js:1637 +msgid "Choices" +msgstr "" + +#: part/models.py:3529 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3583 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3608 +#: part/models.py:3588 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3628 -msgid "Choices must be unique" -msgstr "" - -#: part/models.py:3645 +#: part/models.py:3625 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3660 +#: part/models.py:3640 msgid "Parameter Name" msgstr "" -#: part/models.py:3667 +#: part/models.py:3647 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3675 +#: part/models.py:3655 msgid "Parameter description" msgstr "" -#: part/models.py:3681 templates/js/translated/part.js:1627 +#: part/models.py:3661 templates/js/translated/part.js:1628 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "" -#: part/models.py:3682 +#: part/models.py:3662 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3687 templates/js/translated/part.js:1636 -msgid "Choices" -msgstr "" - -#: part/models.py:3688 +#: part/models.py:3668 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3765 +#: part/models.py:3745 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3808 +#: part/models.py:3788 msgid "Parent Part" msgstr "" -#: part/models.py:3816 part/models.py:3917 part/models.py:3918 +#: part/models.py:3796 part/models.py:3897 part/models.py:3898 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3821 +#: part/models.py:3801 msgid "Data" msgstr "" -#: part/models.py:3822 +#: part/models.py:3802 msgid "Parameter Value" msgstr "" -#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3904 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3925 +#: part/models.py:3905 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3963 +#: part/models.py:3943 msgid "Part ID or part name" msgstr "" -#: part/models.py:3964 +#: part/models.py:3944 msgid "Unique part ID value" msgstr "" -#: part/models.py:3966 +#: part/models.py:3946 msgid "Part IPN value" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "Level" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "BOM level" msgstr "" -#: part/models.py:4057 +#: part/models.py:4037 msgid "Select parent part" msgstr "" -#: part/models.py:4067 +#: part/models.py:4047 msgid "Sub part" msgstr "" -#: part/models.py:4068 +#: part/models.py:4048 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4079 +#: part/models.py:4059 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4085 +#: part/models.py:4065 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4091 +#: part/models.py:4071 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4098 part/templates/part/upload_bom.html:55 +#: part/models.py:4078 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4099 +#: part/models.py:4079 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4106 +#: part/models.py:4086 msgid "BOM item reference" msgstr "" -#: part/models.py:4114 +#: part/models.py:4094 msgid "BOM item notes" msgstr "" -#: part/models.py:4120 +#: part/models.py:4100 msgid "Checksum" msgstr "" -#: part/models.py:4121 +#: part/models.py:4101 msgid "BOM line checksum" msgstr "" -#: part/models.py:4126 templates/js/translated/table_filters.js:174 +#: part/models.py:4106 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4127 +#: part/models.py:4107 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4132 part/templates/part/upload_bom.html:57 +#: part/models.py:4112 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:4133 +#: part/models.py:4113 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4138 part/templates/part/upload_bom.html:56 +#: part/models.py:4118 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4139 +#: part/models.py:4119 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4224 stock/models.py:664 +#: part/models.py:4204 stock/models.py:662 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4234 part/models.py:4236 +#: part/models.py:4214 part/models.py:4216 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4376 +#: part/models.py:4354 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4397 +#: part/models.py:4375 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4410 +#: part/models.py:4388 msgid "Parent BOM item" msgstr "" -#: part/models.py:4418 +#: part/models.py:4396 msgid "Substitute part" msgstr "" -#: part/models.py:4434 +#: part/models.py:4412 msgid "Part 1" msgstr "" -#: part/models.py:4442 +#: part/models.py:4420 msgid "Part 2" msgstr "" -#: part/models.py:4443 +#: part/models.py:4421 msgid "Select Related Part" msgstr "" -#: part/models.py:4462 +#: part/models.py:4440 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4467 +#: part/models.py:4445 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:119 part/serializers.py:141 +#: part/serializers.py:118 +msgid "Parent Category" +msgstr "" + +#: part/serializers.py:119 templates/js/translated/part.js:309 +msgid "Parent part category" +msgstr "" + +#: part/serializers.py:126 part/serializers.py:148 #: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/serializers.py:185 +#: part/serializers.py:180 msgid "Results" msgstr "" -#: part/serializers.py:186 +#: part/serializers.py:181 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 +#: part/serializers.py:205 part/serializers.py:223 stock/serializers.py:562 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:273 +#: part/serializers.py:268 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:397 +#: part/serializers.py:392 msgid "No parts selected" msgstr "" -#: part/serializers.py:407 +#: part/serializers.py:402 msgid "Select category" msgstr "" -#: part/serializers.py:442 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:443 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:448 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:449 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:455 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:456 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:463 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:488 +#: part/serializers.py:483 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:490 +#: part/serializers.py:485 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:497 +#: part/serializers.py:492 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:493 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:510 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:531 +#: part/serializers.py:526 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:541 +#: part/serializers.py:536 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:548 +#: part/serializers.py:543 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:557 +#: part/serializers.py:552 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:568 +#: part/serializers.py:563 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:575 +#: part/serializers.py:570 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:834 msgid "External Stock" msgstr "" -#: part/serializers.py:840 +#: part/serializers.py:836 msgid "Unallocated Stock" msgstr "" -#: part/serializers.py:843 +#: part/serializers.py:839 msgid "Variant Stock" msgstr "" -#: part/serializers.py:873 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:471 +#: part/serializers.py:869 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:472 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:870 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:880 templates/js/translated/part.js:102 +#: part/serializers.py:876 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:881 +#: part/serializers.py:877 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:887 +#: part/serializers.py:883 msgid "Supplier Information" msgstr "" -#: part/serializers.py:888 +#: part/serializers.py:884 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:896 +#: part/serializers.py:892 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:897 +#: part/serializers.py:893 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:902 +#: part/serializers.py:898 msgid "Existing Image" msgstr "" -#: part/serializers.py:903 +#: part/serializers.py:899 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:920 +#: part/serializers.py:916 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1126 +#: part/serializers.py:1122 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1136 +#: part/serializers.py:1132 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1146 +#: part/serializers.py:1142 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1152 +#: part/serializers.py:1148 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1153 +#: part/serializers.py:1149 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1158 +#: part/serializers.py:1154 msgid "Generate Report" msgstr "" -#: part/serializers.py:1159 +#: part/serializers.py:1155 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1164 +#: part/serializers.py:1160 msgid "Update Parts" msgstr "" -#: part/serializers.py:1165 +#: part/serializers.py:1161 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1173 +#: part/serializers.py:1169 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1279 +#: part/serializers.py:1275 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1286 +#: part/serializers.py:1282 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1294 +#: part/serializers.py:1290 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1301 +#: part/serializers.py:1297 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1330 +#: part/serializers.py:1326 msgid "Update" msgstr "" -#: part/serializers.py:1331 +#: part/serializers.py:1327 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1354 +#: part/serializers.py:1350 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1361 +#: part/serializers.py:1357 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1364 +#: part/serializers.py:1360 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1727 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1739 +#: part/serializers.py:1735 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1740 +#: part/serializers.py:1736 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1745 +#: part/serializers.py:1741 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1746 +#: part/serializers.py:1742 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1747 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1752 +#: part/serializers.py:1748 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1757 +#: part/serializers.py:1753 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1758 +#: part/serializers.py:1754 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1792 +#: part/serializers.py:1788 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1793 +#: part/serializers.py:1789 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1823 +#: part/serializers.py:1819 msgid "No part column specified" msgstr "" -#: part/serializers.py:1867 +#: part/serializers.py:1863 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1870 +#: part/serializers.py:1866 msgid "No matching part found" msgstr "" -#: part/serializers.py:1873 +#: part/serializers.py:1869 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1882 +#: part/serializers.py:1878 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1890 +#: part/serializers.py:1886 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1911 +#: part/serializers.py:1907 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 +#: part/stocktake.py:225 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "" -#: part/stocktake.py:225 +#: part/stocktake.py:226 msgid "Total Cost Min" msgstr "" -#: part/stocktake.py:226 +#: part/stocktake.py:227 msgid "Total Cost Max" msgstr "" -#: part/stocktake.py:284 +#: part/stocktake.py:285 msgid "Stocktake Report Available" msgstr "" -#: part/stocktake.py:285 +#: part/stocktake.py:286 msgid "A new stocktake report is available for download" msgstr "" @@ -7153,7 +7227,7 @@ 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 +#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" @@ -7253,15 +7327,15 @@ msgstr "" msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:655 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:663 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:748 +#: part/templates/part/detail.html:750 msgid "Add Test Result Template" msgstr "" @@ -7342,7 +7416,7 @@ msgstr "" msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" msgstr "" @@ -7414,7 +7488,7 @@ 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:2443 +#: templates/js/translated/part.js:1265 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7507,8 +7581,8 @@ msgstr "" #: 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:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/part.js:1243 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 #: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7551,7 +7625,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:247 +#: part/templates/part/prices.html:28 stock/admin.py:251 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 @@ -7628,8 +7702,8 @@ msgstr "" #: part/templates/part/stock_count.html:7 #: templates/js/translated/model_renderers.js:227 -#: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 -#: templates/js/translated/part.js:2142 +#: templates/js/translated/part.js:705 templates/js/translated/part.js:2141 +#: templates/js/translated/part.js:2143 msgid "No Stock" msgstr "" @@ -8001,7 +8075,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:308 msgid "Landscape" msgstr "" @@ -8114,62 +8188,62 @@ msgstr "" msgid "Uninstalled plugin successfully" msgstr "" -#: plugin/models.py:35 +#: plugin/models.py:36 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:36 +#: plugin/models.py:37 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:42 users/models.py:100 +#: plugin/models.py:43 users/models.py:100 msgid "Key" msgstr "" -#: plugin/models.py:43 +#: plugin/models.py:44 msgid "Key of plugin" msgstr "" -#: plugin/models.py:51 +#: plugin/models.py:52 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:58 plugin/serializers.py:90 +#: plugin/models.py:59 plugin/serializers.py:90 msgid "Package Name" msgstr "" -#: plugin/models.py:60 +#: plugin/models.py:61 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:65 +#: plugin/models.py:66 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:156 templates/js/translated/table_filters.js:370 +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "" -#: plugin/models.py:165 +#: plugin/models.py:166 msgid "Sample plugin" msgstr "" -#: plugin/models.py:173 +#: plugin/models.py:174 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:181 +#: plugin/models.py:182 msgid "Package Plugin" msgstr "" -#: plugin/models.py:205 report/models.py:474 +#: plugin/models.py:220 report/models.py:475 #: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:252 +#: plugin/models.py:267 msgid "Method" msgstr "" @@ -8177,17 +8251,17 @@ msgstr "" msgid "No author found" msgstr "" -#: plugin/registry.py:597 +#: plugin/registry.py:534 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:600 +#: plugin/registry.py:537 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:602 +#: plugin/registry.py:539 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -8302,23 +8376,19 @@ msgstr "" msgid "Activate this plugin" msgstr "" -#: plugin/serializers.py:234 +#: plugin/serializers.py:226 msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:235 +#: plugin/serializers.py:227 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:77 +#: report/api.py:88 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:89 report/serializers.py:53 -msgid "Model Type" -msgstr "" - -#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/api.py:103 report/models.py:439 report/serializers.py:98 #: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 #: templates/js/translated/return_order.js:353 #: templates/js/translated/sales_order.js:887 @@ -8326,176 +8396,176 @@ msgstr "" msgid "Items" msgstr "" -#: report/api.py:168 +#: report/api.py:180 msgid "Plugin not found" msgstr "" -#: report/api.py:170 +#: report/api.py:182 msgid "Plugin is not active" msgstr "" -#: report/api.py:172 +#: report/api.py:184 msgid "Plugin does not support label printing" msgstr "" -#: report/api.py:221 +#: report/api.py:233 msgid "Invalid label dimensions" msgstr "" -#: report/api.py:236 report/api.py:316 +#: report/api.py:248 report/api.py:329 msgid "No valid items provided to template" msgstr "" -#: report/api.py:271 +#: report/api.py:283 msgid "Error printing label" msgstr "" -#: report/api.py:362 report/api.py:398 +#: report/api.py:375 report/api.py:411 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/helpers.py:41 +#: report/helpers.py:43 msgid "A4" msgstr "" -#: report/helpers.py:42 +#: report/helpers.py:44 msgid "A3" msgstr "" -#: report/helpers.py:43 +#: report/helpers.py:45 msgid "Legal" msgstr "" -#: report/helpers.py:44 +#: report/helpers.py:46 msgid "Letter" msgstr "" -#: report/models.py:118 +#: report/models.py:119 msgid "Template file with this name already exists" msgstr "" -#: report/models.py:150 +#: report/models.py:151 msgid "Template name" msgstr "" -#: report/models.py:156 +#: report/models.py:157 msgid "Template description" msgstr "" -#: report/models.py:162 +#: report/models.py:163 msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Filename Pattern" msgstr "" -#: report/models.py:203 +#: report/models.py:204 msgid "Pattern for generating filenames" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Template is enabled" msgstr "" -#: report/models.py:214 +#: report/models.py:215 msgid "Target model type for template" msgstr "" -#: report/models.py:234 +#: report/models.py:235 msgid "Filters" msgstr "" -#: report/models.py:235 +#: report/models.py:236 msgid "Template query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:294 report/models.py:361 +#: report/models.py:295 report/models.py:362 msgid "Template file" msgstr "" -#: report/models.py:302 +#: report/models.py:303 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:308 +#: report/models.py:309 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:367 +#: report/models.py:368 msgid "Width [mm]" msgstr "" -#: report/models.py:368 +#: report/models.py:369 msgid "Label width, specified in mm" msgstr "" -#: report/models.py:374 +#: report/models.py:375 msgid "Height [mm]" msgstr "" -#: report/models.py:375 +#: report/models.py:376 msgid "Label height, specified in mm" msgstr "" -#: report/models.py:438 +#: report/models.py:439 msgid "Number of items to process" msgstr "" -#: report/models.py:444 +#: report/models.py:445 msgid "Report generation is complete" msgstr "" -#: report/models.py:448 templates/js/translated/build.js:2177 +#: report/models.py:449 templates/js/translated/build.js:2177 msgid "Progress" msgstr "" -#: report/models.py:448 +#: report/models.py:449 msgid "Report generation progress" msgstr "" -#: report/models.py:456 +#: report/models.py:457 msgid "Report Template" msgstr "" -#: report/models.py:463 report/models.py:486 +#: report/models.py:464 report/models.py:487 msgid "Output File" msgstr "" -#: report/models.py:464 report/models.py:487 +#: report/models.py:465 report/models.py:488 msgid "Generated output file" msgstr "" -#: report/models.py:475 +#: report/models.py:476 msgid "Label output plugin" msgstr "" -#: report/models.py:479 +#: report/models.py:480 msgid "Label Template" msgstr "" -#: report/models.py:502 +#: report/models.py:503 msgid "Snippet" msgstr "" -#: report/models.py:503 +#: report/models.py:504 msgid "Report snippet file" msgstr "" -#: report/models.py:510 +#: report/models.py:511 msgid "Snippet file description" msgstr "" -#: report/models.py:528 +#: report/models.py:529 msgid "Asset" msgstr "" -#: report/models.py:529 +#: report/models.py:530 msgid "Report asset file" msgstr "" -#: report/models.py:536 +#: report/models.py:537 msgid "Asset file description" msgstr "" @@ -8568,8 +8638,8 @@ msgid "Total" msgstr "" #: report/templates/report/inventree_return_order_report.html:25 -#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 -#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:824 +#: stock/serializers.py:149 stock/templates/stock/item_base.html:311 #: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 #: templates/js/translated/build.js:2355 #: templates/js/translated/model_renderers.js:230 @@ -8599,32 +8669,32 @@ msgstr "" msgid "Test" msgstr "" -#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2412 msgid "Result" msgstr "" -#: report/templates/report/inventree_test_report.html:130 +#: report/templates/report/inventree_test_report.html:129 msgid "Pass" msgstr "" -#: report/templates/report/inventree_test_report.html:132 +#: report/templates/report/inventree_test_report.html:131 msgid "Fail" msgstr "" -#: report/templates/report/inventree_test_report.html:139 +#: report/templates/report/inventree_test_report.html:138 msgid "No result (required)" msgstr "" -#: report/templates/report/inventree_test_report.html:141 +#: report/templates/report/inventree_test_report.html:140 msgid "No result" msgstr "" -#: report/templates/report/inventree_test_report.html:154 +#: report/templates/report/inventree_test_report.html:153 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "" -#: report/templates/report/inventree_test_report.html:168 stock/admin.py:162 +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 #: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 #: templates/js/translated/stock.js:3110 msgid "Serial" @@ -8646,654 +8716,670 @@ msgstr "" msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:172 +#: stock/admin.py:51 stock/admin.py:171 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:176 +#: stock/admin.py:53 stock/admin.py:175 msgid "Location Name" msgstr "" -#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/admin.py:63 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:149 +#: stock/admin.py:148 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:168 +#: stock/admin.py:167 msgid "Status Code" msgstr "" -#: stock/admin.py:180 +#: stock/admin.py:179 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:185 +#: stock/admin.py:184 +msgid "Supplier Part SKU" +msgstr "" + +#: stock/admin.py:189 msgid "Supplier ID" msgstr "" -#: stock/admin.py:191 +#: stock/admin.py:195 msgid "Supplier Name" msgstr "" -#: stock/admin.py:196 +#: stock/admin.py:200 msgid "Customer ID" msgstr "" -#: stock/admin.py:201 stock/models.py:806 +#: stock/admin.py:205 stock/models.py:804 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:206 +#: stock/admin.py:210 msgid "Build ID" msgstr "" -#: stock/admin.py:216 +#: stock/admin.py:220 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:221 +#: stock/admin.py:225 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:236 +#: stock/admin.py:240 msgid "Review Needed" msgstr "" -#: stock/admin.py:241 +#: stock/admin.py:245 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:256 stock/models.py:900 +#: stock/admin.py:260 stock/models.py:898 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "" -#: stock/api.py:318 +#: stock/api.py:312 msgid "Filter by location depth" msgstr "" -#: stock/api.py:338 +#: stock/api.py:332 +msgid "Filter by top-level locations" +msgstr "" + +#: stock/api.py:347 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:359 +#: stock/api.py:369 stock/serializers.py:1085 msgid "Parent Location" msgstr "" -#: stock/api.py:360 +#: stock/api.py:370 msgid "Filter by parent location" msgstr "" -#: stock/api.py:615 templates/js/translated/table_filters.js:427 +#: stock/api.py:625 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:803 +#: stock/api.py:813 msgid "Part Tree" msgstr "" -#: stock/api.py:833 +#: stock/api.py:843 msgid "Expiry date before" msgstr "" -#: stock/api.py:837 +#: stock/api.py:847 msgid "Expiry date after" msgstr "" -#: stock/api.py:840 stock/templates/stock/item_base.html:439 +#: stock/api.py:850 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:927 +#: stock/api.py:937 msgid "Quantity is required" msgstr "" -#: stock/api.py:933 +#: stock/api.py:943 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:964 +#: stock/api.py:974 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:974 +#: stock/api.py:984 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:1005 +#: stock/api.py:1015 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:59 +#: stock/models.py:60 msgid "Stock Location type" msgstr "" -#: stock/models.py:60 +#: stock/models.py:61 msgid "Stock Location types" msgstr "" -#: stock/models.py:86 +#: stock/models.py:87 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:123 stock/models.py:788 +#: stock/models.py:124 stock/models.py:786 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:124 stock/templates/stock/location.html:186 +#: stock/models.py:125 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "" -#: stock/models.py:166 stock/models.py:949 +#: stock/models.py:167 stock/models.py:947 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:167 stock/models.py:950 +#: stock/models.py:168 stock/models.py:948 msgid "Select Owner" msgstr "" -#: stock/models.py:175 +#: stock/models.py:176 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:182 templates/js/translated/stock.js:2781 +#: stock/models.py:183 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:183 +#: stock/models.py:184 msgid "This is an external stock location" msgstr "" -#: stock/models.py:189 templates/js/translated/stock.js:2790 +#: stock/models.py:190 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" -#: stock/models.py:193 +#: stock/models.py:194 msgid "Stock location type of this location" msgstr "" -#: stock/models.py:262 +#: stock/models.py:261 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:643 +#: stock/models.py:641 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:670 stock/serializers.py:419 +#: stock/models.py:668 stock/serializers.py:446 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:687 +#: stock/models.py:685 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:697 stock/models.py:710 +#: stock/models.py:695 stock/models.py:708 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:700 +#: stock/models.py:698 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:724 +#: stock/models.py:722 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:729 +#: stock/models.py:727 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:742 +#: stock/models.py:740 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:758 +#: stock/models.py:756 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:770 +#: stock/models.py:768 msgid "Base part" msgstr "" -#: stock/models.py:780 +#: stock/models.py:778 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:792 +#: stock/models.py:790 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:800 stock/serializers.py:1480 +#: stock/models.py:798 stock/serializers.py:1476 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:811 +#: stock/models.py:809 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:830 +#: stock/models.py:828 msgid "Serial number for this item" msgstr "" -#: stock/models.py:844 stock/serializers.py:1463 +#: stock/models.py:842 stock/serializers.py:1459 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:849 +#: stock/models.py:847 msgid "Stock Quantity" msgstr "" -#: stock/models.py:859 +#: stock/models.py:857 msgid "Source Build" msgstr "" -#: stock/models.py:862 +#: stock/models.py:860 msgid "Build for this stock item" msgstr "" -#: stock/models.py:869 stock/templates/stock/item_base.html:363 +#: stock/models.py:867 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:872 +#: stock/models.py:870 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:881 +#: stock/models.py:879 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:885 +#: stock/models.py:883 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:891 +#: stock/models.py:889 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:902 +#: stock/models.py:900 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:920 +#: stock/models.py:918 msgid "Delete on deplete" msgstr "" -#: stock/models.py:921 +#: stock/models.py:919 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:941 +#: stock/models.py:939 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:972 +#: stock/models.py:970 msgid "Converted to part" msgstr "" -#: stock/models.py:1490 +#: stock/models.py:1486 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1496 +#: stock/models.py:1492 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1500 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1510 +#: stock/models.py:1506 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1515 +#: stock/models.py:1511 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1523 stock/serializers.py:658 +#: stock/models.py:1519 stock/serializers.py:660 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1620 +#: stock/models.py:1616 msgid "Test template does not exist" msgstr "" -#: stock/models.py:1638 +#: stock/models.py:1634 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1642 +#: stock/models.py:1638 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1645 +#: stock/models.py:1641 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1648 +#: stock/models.py:1644 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1651 +#: stock/models.py:1647 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1654 +#: stock/models.py:1650 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1661 stock/serializers.py:1369 +#: stock/models.py:1657 stock/serializers.py:1365 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1665 +#: stock/models.py:1661 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1673 +#: stock/models.py:1669 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1678 +#: stock/models.py:1674 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1905 +#: stock/models.py:1901 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2310 msgid "Entry notes" msgstr "" -#: stock/models.py:2391 +#: stock/models.py:2378 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2396 +#: stock/models.py:2383 msgid "Attachment must be uploaded for this test" msgstr "Lampiran perlu diunggah untuk tes ini" -#: stock/models.py:2423 +#: stock/models.py:2388 +msgid "Invalid value for this test" +msgstr "" + +#: stock/models.py:2412 msgid "Test result" msgstr "" -#: stock/models.py:2430 +#: stock/models.py:2419 msgid "Test output value" msgstr "" -#: stock/models.py:2438 +#: stock/models.py:2427 msgid "Test result attachment" msgstr "" -#: stock/models.py:2442 +#: stock/models.py:2431 msgid "Test notes" msgstr "" -#: stock/models.py:2450 templates/js/translated/stock.js:1548 +#: stock/models.py:2439 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2440 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2457 +#: stock/models.py:2446 msgid "Started" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2447 msgid "The timestamp of the test start" msgstr "" -#: stock/models.py:2464 +#: stock/models.py:2453 msgid "Finished" msgstr "" -#: stock/models.py:2465 +#: stock/models.py:2454 msgid "The timestamp of the test finish" msgstr "" -#: stock/serializers.py:75 +#: stock/serializers.py:74 msgid "Generated batch code" msgstr "" -#: stock/serializers.py:84 +#: stock/serializers.py:83 msgid "Select build order" msgstr "" -#: stock/serializers.py:93 +#: stock/serializers.py:92 msgid "Select stock item to generate batch code for" msgstr "" -#: stock/serializers.py:102 +#: stock/serializers.py:101 msgid "Select location to generate batch code for" msgstr "" -#: stock/serializers.py:111 +#: stock/serializers.py:110 msgid "Select part to generate batch code for" msgstr "" -#: stock/serializers.py:120 +#: stock/serializers.py:119 msgid "Select purchase order" msgstr "" -#: stock/serializers.py:127 +#: stock/serializers.py:126 msgid "Enter quantity for batch code" msgstr "" -#: stock/serializers.py:150 +#: stock/serializers.py:149 msgid "Generated serial number" msgstr "" -#: stock/serializers.py:159 +#: stock/serializers.py:158 msgid "Select part to generate serial number for" msgstr "" -#: stock/serializers.py:167 +#: stock/serializers.py:166 msgid "Quantity of serial numbers to generate" msgstr "" -#: stock/serializers.py:229 +#: stock/serializers.py:228 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:248 +#: stock/serializers.py:247 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:280 +#: stock/serializers.py:279 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:313 +#: stock/serializers.py:315 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:411 +#: stock/serializers.py:438 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:531 +#: stock/serializers.py:558 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:595 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:606 +#: stock/serializers.py:608 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:613 +#: stock/serializers.py:615 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 +#: stock/serializers.py:626 stock/serializers.py:1322 stock/serializers.py:1578 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:631 +#: stock/serializers.py:633 msgid "Optional note field" msgstr "" -#: stock/serializers.py:641 +#: stock/serializers.py:643 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:696 +#: stock/serializers.py:698 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:703 +#: stock/serializers.py:705 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:704 +#: stock/serializers.py:706 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 -#: stock/serializers.py:935 +#: stock/serializers.py:711 stock/serializers.py:791 stock/serializers.py:887 +#: stock/serializers.py:937 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:719 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:725 +#: stock/serializers.py:727 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:736 +#: stock/serializers.py:738 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:749 +#: stock/serializers.py:751 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:784 +#: stock/serializers.py:786 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:819 +#: stock/serializers.py:821 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:834 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:849 +#: stock/serializers.py:851 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:880 +#: stock/serializers.py:882 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:917 +#: stock/serializers.py:919 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:923 +#: stock/serializers.py:925 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:1019 stock/serializers.py:1082 +#: stock/serializers.py:1021 stock/serializers.py:1093 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:220 +#: stock/templates/stock/location.html:222 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1198 +#: stock/serializers.py:1086 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: stock/serializers.py:1194 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1202 +#: stock/serializers.py:1198 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1206 +#: stock/serializers.py:1202 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1230 +#: stock/serializers.py:1226 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1236 +#: stock/serializers.py:1232 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1244 +#: stock/serializers.py:1240 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1254 stock/serializers.py:1508 +#: stock/serializers.py:1250 stock/serializers.py:1504 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1333 +#: stock/serializers.py:1329 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1338 +#: stock/serializers.py:1334 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1339 +#: stock/serializers.py:1335 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1344 +#: stock/serializers.py:1340 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1345 +#: stock/serializers.py:1341 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1355 +#: stock/serializers.py:1351 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1422 +#: stock/serializers.py:1418 msgid "No Change" msgstr "" -#: stock/serializers.py:1451 +#: stock/serializers.py:1447 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1470 +#: stock/serializers.py:1466 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1498 +#: stock/serializers.py:1494 msgid "Stock transaction notes" msgstr "" @@ -9446,7 +9532,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276 msgid "Delete Test Data" msgstr "" @@ -9466,11 +9552,11 @@ msgstr "" msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:272 +#: stock/templates/stock/item.html:264 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "" @@ -9756,28 +9842,28 @@ msgstr "" msgid "Location Type" msgstr "" -#: stock/templates/stock/location.html:224 +#: stock/templates/stock/location.html:226 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:225 +#: stock/templates/stock/location.html:227 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:295 +#: stock/templates/stock/location.html:299 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:317 +#: stock/templates/stock/location.html:321 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:390 +#: stock/templates/stock/location.html:394 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:401 +#: stock/templates/stock/location.html:405 msgid "Link Barcode to Stock Location" msgstr "" @@ -10201,20 +10287,20 @@ msgstr "" msgid "Pricing Settings" msgstr "" -#: templates/InvenTree/settings/pricing.html:34 +#: templates/InvenTree/settings/pricing.html:35 msgid "Exchange Rates" msgstr "" -#: templates/InvenTree/settings/pricing.html:38 +#: templates/InvenTree/settings/pricing.html:39 msgid "Update Now" msgstr "" -#: templates/InvenTree/settings/pricing.html:46 -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 msgid "Last Update" msgstr "" -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:51 msgid "Never" msgstr "" @@ -10271,8 +10357,8 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:547 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 +#: templates/js/translated/part.js:393 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:402 msgid "Delete" msgstr "" @@ -10312,12 +10398,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 -#: templates/js/translated/part.js:1645 +#: templates/js/translated/part.js:1646 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 -#: templates/js/translated/part.js:1646 +#: templates/js/translated/part.js:1647 msgid "Delete Template" msgstr "" @@ -10707,7 +10793,7 @@ msgid "Submit Bug Report" msgstr "" #: templates/about.html:91 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 +#: templates/js/translated/helpers.js:589 msgid "copy to clipboard" msgstr "" @@ -10771,7 +10857,7 @@ 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 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45 msgid "Return to Site" msgstr "" @@ -10885,15 +10971,19 @@ msgstr "" msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "" -#: templates/allauth_2fa/setup.html:23 +#: templates/allauth_2fa/setup.html:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 msgid "Step 2" msgstr "" -#: templates/allauth_2fa/setup.html:27 +#: templates/allauth_2fa/setup.html:28 msgid "Input a token generated by the app:" msgstr "" -#: templates/allauth_2fa/setup.html:37 +#: templates/allauth_2fa/setup.html:38 msgid "Verify" msgstr "" @@ -10972,7 +11062,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3217 +#: templates/js/translated/part.js:3219 msgid "Minimum Quantity" msgstr "" @@ -11060,27 +11150,27 @@ msgstr "" msgid "Delete attachments" msgstr "" -#: templates/js/translated/attachment.js:253 +#: templates/js/translated/attachment.js:260 msgid "Attachment actions" msgstr "" -#: templates/js/translated/attachment.js:275 +#: templates/js/translated/attachment.js:294 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:315 +#: templates/js/translated/attachment.js:334 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:365 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:366 +#: templates/js/translated/attachment.js:385 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:374 +#: templates/js/translated/attachment.js:393 msgid "Delete attachment" msgstr "" @@ -11361,7 +11451,7 @@ msgid "Includes variant and substitute stock" msgstr "" #: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 -#: templates/js/translated/part.js:1256 +#: templates/js/translated/part.js:1257 #: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" @@ -11688,7 +11778,7 @@ msgstr "" #: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 #: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 -#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11731,8 +11821,8 @@ msgstr "" msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 -#: templates/js/translated/part.js:1202 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:791 +#: templates/js/translated/part.js:1203 msgid "Trackable part" msgstr "" @@ -11918,7 +12008,7 @@ msgid "Delete Parameters" msgstr "" #: templates/js/translated/company.js:1191 -#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2244 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2245 msgid "Order parts" msgstr "" @@ -11935,34 +12025,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:1279 -#: templates/js/translated/company.js:1567 templates/js/translated/part.js:798 -#: templates/js/translated/part.js:1210 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Template part" msgstr "" #: templates/js/translated/company.js:1283 -#: templates/js/translated/company.js:1571 templates/js/translated/part.js:802 -#: templates/js/translated/part.js:1214 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:803 +#: templates/js/translated/part.js:1215 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1464 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1465 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1527 +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1528 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1528 +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1529 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1433 +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1434 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1549 +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1550 msgid "Delete Parameter" msgstr "" @@ -12096,23 +12186,23 @@ msgstr "" msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2499 +#: templates/js/translated/forms.js:2500 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3113 +#: templates/js/translated/forms.js:3114 msgid "Select Columns" msgstr "" @@ -12213,7 +12303,7 @@ msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 -#: templates/js/translated/part.js:1604 +#: templates/js/translated/part.js:1605 msgid "ID" msgstr "" @@ -12294,347 +12384,343 @@ msgstr "" 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 +#: templates/js/translated/part.js:333 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:355 +#: templates/js/translated/part.js:356 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:356 +#: templates/js/translated/part.js:357 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:370 +#: templates/js/translated/part.js:371 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:383 +#: templates/js/translated/part.js:384 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:388 +#: templates/js/translated/part.js:389 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:397 +#: templates/js/translated/part.js:398 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:401 +#: templates/js/translated/part.js:402 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:406 +#: templates/js/translated/part.js:407 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:430 +#: templates/js/translated/part.js:431 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:432 +#: templates/js/translated/part.js:433 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:433 +#: templates/js/translated/part.js:434 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:462 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:463 +#: templates/js/translated/part.js:464 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:474 +#: templates/js/translated/part.js:475 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:531 +#: templates/js/translated/part.js:532 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:532 +#: templates/js/translated/part.js:533 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:546 +#: templates/js/translated/part.js:547 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:548 +#: templates/js/translated/part.js:549 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:549 +#: templates/js/translated/part.js:550 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:550 +#: templates/js/translated/part.js:551 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:557 +#: templates/js/translated/part.js:558 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:593 +#: templates/js/translated/part.js:594 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:595 +#: templates/js/translated/part.js:596 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:600 +#: templates/js/translated/part.js:601 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:602 +#: templates/js/translated/part.js:603 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:619 +#: templates/js/translated/part.js:620 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:629 +#: templates/js/translated/part.js:630 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:632 +#: templates/js/translated/part.js:633 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:657 +#: templates/js/translated/part.js:658 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:685 +#: templates/js/translated/part.js:686 #: templates/js/translated/table_filters.js:747 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:688 +#: templates/js/translated/part.js:689 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:748 +#: templates/js/translated/part.js:749 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:771 +#: templates/js/translated/part.js:772 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +#: templates/js/translated/part.js:795 templates/js/translated/part.js:1207 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:806 +#: templates/js/translated/part.js:807 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:810 +#: templates/js/translated/part.js:811 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:897 +#: templates/js/translated/part.js:898 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:901 +#: templates/js/translated/part.js:902 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1050 +#: templates/js/translated/part.js:1051 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1145 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +#: templates/js/translated/part.js:1113 templates/js/translated/part.js:1155 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1281 +#: templates/js/translated/part.js:1282 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1599 +#: templates/js/translated/part.js:1600 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1662 +#: templates/js/translated/part.js:1663 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1674 +#: templates/js/translated/part.js:1675 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1682 +#: templates/js/translated/part.js:1683 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1716 +#: templates/js/translated/part.js:1717 #: templates/js/translated/purchase_order.js:1654 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1860 +#: templates/js/translated/part.js:1861 #: templates/js/translated/purchase_order.js:2153 #: templates/js/translated/return_order.js:755 #: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1906 +#: templates/js/translated/part.js:1907 #: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1970 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1991 +#: templates/js/translated/part.js:1992 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 +#: templates/js/translated/part.js:2080 templates/js/translated/part.js:2506 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2200 +#: templates/js/translated/part.js:2201 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2205 +#: templates/js/translated/part.js:2206 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2235 +#: templates/js/translated/part.js:2236 msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2286 +#: templates/js/translated/part.js:2287 msgid "part" msgstr "" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2288 msgid "parts" msgstr "" -#: templates/js/translated/part.js:2383 +#: templates/js/translated/part.js:2384 msgid "No category" msgstr "" -#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2546 +#: templates/js/translated/part.js:2547 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2644 +#: templates/js/translated/part.js:2645 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2760 +#: templates/js/translated/part.js:2761 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2776 +#: templates/js/translated/part.js:2777 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2865 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2887 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/part.js:2938 templates/js/translated/stock.js:1457 #: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2940 +#: templates/js/translated/part.js:2942 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2956 +#: templates/js/translated/part.js:2958 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2970 +#: templates/js/translated/part.js:2972 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3051 templates/js/translated/part.js:3052 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3052 +#: templates/js/translated/part.js:3054 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3058 +#: templates/js/translated/part.js:3060 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3108 +#: templates/js/translated/part.js:3110 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3114 +#: templates/js/translated/part.js:3116 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3210 +#: templates/js/translated/part.js:3212 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3226 +#: templates/js/translated/part.js:3228 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3271 +#: templates/js/translated/part.js:3273 msgid "Minimum Stock Level" msgstr "" @@ -13242,10 +13328,6 @@ msgstr "" 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 "" @@ -13414,7 +13496,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:401 +#: templates/js/translated/stock.js:1042 users/models.py:392 msgid "Add" msgstr "" @@ -14305,34 +14387,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:384 +#: users/models.py:375 msgid "Permission set" msgstr "" -#: users/models.py:393 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "View" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "Permission to view items" msgstr "" -#: users/models.py:401 +#: users/models.py:392 msgid "Permission to add items" msgstr "" -#: users/models.py:405 +#: users/models.py:396 msgid "Change" msgstr "" -#: users/models.py:407 +#: users/models.py:398 msgid "Permissions to edit items" msgstr "" -#: users/models.py:413 +#: users/models.py:404 msgid "Permission to delete items" msgstr "" + diff --git a/src/backend/InvenTree/locale/it/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/it/LC_MESSAGES/django.po index fbac634369..513926b497 100644 --- a/src/backend/InvenTree/locale/it/LC_MESSAGES/django.po +++ b/src/backend/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-05-31 07:08+0000\n" -"PO-Revision-Date: 2024-05-27 11:54\n" +"POT-Creation-Date: 2024-06-26 03:18+0000\n" +"PO-Revision-Date: 2024-06-26 06:04\n" "Last-Translator: \n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -21,7 +21,7 @@ msgstr "" msgid "API endpoint not found" msgstr "Endpoint API non trovato" -#: InvenTree/api.py:536 +#: InvenTree/api.py:520 msgid "User does not have permission to view this model" msgstr "L'utente non ha i permessi per vedere questo modello" @@ -52,25 +52,25 @@ msgstr "Quantità fornita non valida ({exc})" msgid "Error details can be found in the admin panel" msgstr "I dettagli dell'errore possono essere trovati nel pannello di amministrazione" -#: InvenTree/fields.py:139 +#: InvenTree/fields.py:136 msgid "Enter date" msgstr "Inserisci la data" -#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 -#: build/serializers.py:531 build/templates/build/sidebar.html:21 -#: company/models.py:849 company/templates/company/sidebar.html:37 -#: order/models.py:1332 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:205 InvenTree/models.py:918 build/serializers.py:452 +#: build/serializers.py:530 build/templates/build/sidebar.html:21 +#: company/models.py:817 company/templates/company/sidebar.html:37 +#: order/models.py:1296 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:3218 part/templates/part/part_sidebar.html:63 +#: part/models.py:3183 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_report.html:172 -#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 -#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 -#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 -#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:230 stock/models.py:2309 stock/models.py:2431 +#: stock/serializers.py:632 stock/serializers.py:790 stock/serializers.py:886 +#: stock/serializers.py:936 stock/serializers.py:1239 stock/serializers.py:1328 +#: stock/serializers.py:1493 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1080 +#: templates/js/translated/part.js:1081 #: templates/js/translated/purchase_order.js:2200 #: templates/js/translated/return_order.js:775 #: templates/js/translated/sales_order.js:1103 @@ -120,15 +120,15 @@ msgstr "Conferma indirizzo email" msgid "You must type the same email each time." msgstr "È necessario digitare la stessa e-mail ogni volta." -#: InvenTree/forms.py:253 InvenTree/forms.py:261 +#: InvenTree/forms.py:248 InvenTree/forms.py:256 msgid "The provided primary email address is not valid." msgstr "L'indirizzo email principale fornito non è valido." -#: InvenTree/forms.py:268 +#: InvenTree/forms.py:263 msgid "The provided email domain is not approved." msgstr "L'indirizzo di posta elettronica fornito non è approvato." -#: InvenTree/forms.py:395 +#: InvenTree/forms.py:390 msgid "Registration is disabled." msgstr "La registrazione è disabilitata." @@ -171,35 +171,35 @@ msgstr "Il numero di numeri di serie univoci ({len(serials)}) deve corrispondere msgid "Remove HTML tags from this value" msgstr "Rimuovi i tag HTML da questo valore" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Connection error" msgstr "Errore di connessione" -#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 msgid "Server responded with invalid status code" msgstr "Il server ha risposto con un codice di stato non valido" -#: InvenTree/helpers_model.py:158 +#: InvenTree/helpers_model.py:148 msgid "Exception occurred" msgstr "Si è verificata un'eccezione" -#: InvenTree/helpers_model.py:168 +#: InvenTree/helpers_model.py:158 msgid "Server responded with invalid Content-Length value" msgstr "Il server ha risposto con valore Content-Length non valido" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:161 msgid "Image size is too large" msgstr "Immagine troppo grande" -#: InvenTree/helpers_model.py:183 +#: InvenTree/helpers_model.py:173 msgid "Image download exceeded maximum size" msgstr "Il download dell'immagine ha superato la dimensione massima" -#: InvenTree/helpers_model.py:188 +#: InvenTree/helpers_model.py:178 msgid "Remote server returned empty response" msgstr "Il server remoto ha restituito una risposta vuota" -#: InvenTree/helpers_model.py:196 +#: InvenTree/helpers_model.py:186 msgid "Supplied URL is not a valid image file" msgstr "L'URL fornito non è un file immagine valido" @@ -296,46 +296,50 @@ msgid "Portuguese (Brazilian)" msgstr "Portoghese (Brasile)" #: InvenTree/locales.py:41 +msgid "Romanian" +msgstr "" + +#: InvenTree/locales.py:42 msgid "Russian" msgstr "Russo" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:43 msgid "Slovak" msgstr "" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:44 msgid "Slovenian" msgstr "Sloveno" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:45 msgid "Serbian" msgstr "Serbo" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:46 msgid "Swedish" msgstr "Svedese" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:47 msgid "Thai" msgstr "Thailandese" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:48 msgid "Turkish" msgstr "Turco" -#: InvenTree/locales.py:48 +#: InvenTree/locales.py:49 msgid "Ukrainian" msgstr "" -#: InvenTree/locales.py:49 +#: InvenTree/locales.py:50 msgid "Vietnamese" msgstr "Vietnamita" -#: InvenTree/locales.py:50 +#: InvenTree/locales.py:51 msgid "Chinese (Simplified)" msgstr "Cinese (Semplificato)" -#: InvenTree/locales.py:51 +#: InvenTree/locales.py:52 msgid "Chinese (Traditional)" msgstr "Cinese (Tradizionale)" @@ -344,153 +348,65 @@ msgstr "Cinese (Tradizionale)" msgid "[{site_name}] Log in to the app" msgstr "" -#: InvenTree/magic_login.py:38 company/models.py:133 +#: InvenTree/magic_login.py:38 company/models.py:136 #: company/templates/company/company_base.html:138 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:677 msgid "Email" msgstr "" -#: InvenTree/models.py:107 +#: InvenTree/models.py:105 msgid "Error running plugin validation" msgstr "" -#: InvenTree/models.py:176 +#: InvenTree/models.py:174 msgid "Metadata must be a python dict object" msgstr "I metadati devono essere un oggetto python dict" -#: InvenTree/models.py:182 +#: InvenTree/models.py:180 msgid "Plugin Metadata" msgstr "Metadati Plugin" -#: InvenTree/models.py:183 +#: InvenTree/models.py:181 msgid "JSON metadata field, for use by external plugins" msgstr "Campo di metadati JSON, da utilizzare con plugin esterni" -#: InvenTree/models.py:413 +#: InvenTree/models.py:408 msgid "Improperly formatted pattern" msgstr "Schema formattato impropriamente" -#: InvenTree/models.py:420 +#: InvenTree/models.py:415 msgid "Unknown format key specified" msgstr "Formato chiave sconosciuta" -#: InvenTree/models.py:426 +#: InvenTree/models.py:421 msgid "Missing required format key" msgstr "Formato chiave mancante" -#: InvenTree/models.py:437 +#: InvenTree/models.py:432 msgid "Reference field cannot be empty" msgstr "Il campo di riferimento non può essere vuoto" -#: InvenTree/models.py:445 +#: InvenTree/models.py:440 msgid "Reference must match required pattern" msgstr "Il campo deve corrispondere al modello richiesto" -#: InvenTree/models.py:476 +#: InvenTree/models.py:471 msgid "Reference number is too large" msgstr "Numero di riferimento troppo grande" -#: InvenTree/models.py:550 -msgid "Missing file" -msgstr "File mancante" - -#: InvenTree/models.py:551 -msgid "Missing external link" -msgstr "Link esterno mancante" - -#: InvenTree/models.py:572 stock/models.py:2437 -#: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:326 -msgid "Attachment" -msgstr "Allegato" - -#: InvenTree/models.py:573 -msgid "Select file to attach" -msgstr "Seleziona file da allegare" - -#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:831 -#: order/models.py:303 order/models.py:1337 order/models.py:1753 -#: part/admin.py:55 part/models.py:962 -#: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_report.html:164 -#: stock/admin.py:225 templates/js/translated/company.js:1319 -#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2455 -#: templates/js/translated/purchase_order.js:2040 -#: templates/js/translated/purchase_order.js:2204 -#: templates/js/translated/return_order.js:779 -#: templates/js/translated/sales_order.js:1092 -#: templates/js/translated/sales_order.js:2023 -msgid "Link" -msgstr "Collegamento" - -#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 -#: stock/models.py:836 -msgid "Link to external URL" -msgstr "Link a URL esterno" - -#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:341 -msgid "Comment" -msgstr "Commento" - -#: InvenTree/models.py:589 -msgid "File comment" -msgstr "Commento del file" - -#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 -#: common/models.py:2518 common/models.py:2742 common/models.py:2743 -#: common/models.py:2988 common/models.py:2989 part/models.py:3228 -#: part/models.py:3315 part/models.py:3408 part/models.py:3436 -#: plugin/models.py:259 plugin/models.py:260 -#: report/templates/report/inventree_test_report.html:105 -#: templates/js/translated/stock.js:3036 users/models.py:111 -msgid "User" -msgstr "Utente" - -#: InvenTree/models.py:602 -msgid "upload date" -msgstr "data caricamento" - -#: InvenTree/models.py:624 -msgid "Filename must not be empty" -msgstr "Il nome del file non deve essere vuoto" - -#: InvenTree/models.py:635 -msgid "Invalid attachment directory" -msgstr "Directory allegati non valida" - -#: InvenTree/models.py:665 -#, python-brace-format -msgid "Filename contains illegal character '{c}'" -msgstr "Il nome del file contiene caratteri non validi '{c}'" - -#: InvenTree/models.py:668 -msgid "Filename missing extension" -msgstr "Nome file estensione mancante" - -#: InvenTree/models.py:677 -msgid "Attachment with this filename already exists" -msgstr "Esiste già un allegato con questo nome di file" - -#: InvenTree/models.py:684 -msgid "Error renaming file" -msgstr "Errore nella rinominazione del file" - -#: InvenTree/models.py:860 +#: InvenTree/models.py:719 msgid "Duplicate names cannot exist under the same parent" msgstr "Nomi duplicati non possono esistere sotto lo stesso genitore" -#: InvenTree/models.py:877 +#: InvenTree/models.py:736 msgid "Invalid choice" msgstr "Scelta non valida" -#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 -#: common/serializers.py:403 company/models.py:614 machine/models.py:24 -#: part/models.py:898 part/models.py:3659 plugin/models.py:50 -#: report/models.py:149 stock/models.py:72 +#: InvenTree/models.py:766 common/models.py:2623 common/models.py:3036 +#: common/serializers.py:408 company/models.py:580 machine/models.py:24 +#: part/models.py:891 part/models.py:3639 plugin/models.py:51 +#: report/models.py:150 stock/models.py:73 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:83 @@ -501,25 +417,25 @@ msgstr "Scelta non valida" #: templates/js/translated/company.js:724 #: templates/js/translated/company.js:913 #: templates/js/translated/company.js:1165 -#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 -#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1187 +#: templates/js/translated/part.js:1475 templates/js/translated/part.js:1611 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Nome" -#: InvenTree/models.py:913 build/models.py:218 -#: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:523 company/models.py:840 +#: InvenTree/models.py:772 build/models.py:220 +#: build/templates/build/detail.html:24 common/models.py:138 +#: company/models.py:509 company/models.py:808 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 order/models.py:289 -#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 -#: part/models.py:3674 part/templates/part/category.html:82 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:914 +#: part/models.py:3654 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:155 -#: report/models.py:509 report/models.py:535 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 #: report/templates/report/inventree_build_order_report.html:117 -#: stock/admin.py:55 stock/models.py:78 stock/templates/stock/location.html:125 +#: stock/admin.py:54 stock/models.py:79 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 @@ -528,10 +444,10 @@ msgstr "Nome" #: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 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:2354 -#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1239 +#: templates/js/translated/part.js:1484 templates/js/translated/part.js:1622 +#: templates/js/translated/part.js:1959 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2897 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1706 #: templates/js/translated/purchase_order.js:1849 @@ -544,149 +460,141 @@ msgstr "Nome" msgid "Description" msgstr "Descrizione" -#: InvenTree/models.py:914 stock/models.py:79 +#: InvenTree/models.py:773 stock/models.py:80 msgid "Description (optional)" msgstr "Descrizione (opzionale)" -#: InvenTree/models.py:923 -msgid "parent" -msgstr "genitore" - -#: InvenTree/models.py:929 templates/js/translated/part.js:2793 +#: InvenTree/models.py:788 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Percorso" -#: InvenTree/models.py:1035 +#: InvenTree/models.py:918 msgid "Markdown notes (optional)" msgstr "Note di Markdown (opzionale)" -#: InvenTree/models.py:1064 +#: InvenTree/models.py:947 msgid "Barcode Data" msgstr "Dati del Codice a Barre" -#: InvenTree/models.py:1065 +#: InvenTree/models.py:948 msgid "Third party barcode data" msgstr "Dati Codice a Barre applicazioni di terze parti" -#: InvenTree/models.py:1071 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "Codice a Barre" -#: InvenTree/models.py:1072 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "Codice univoco del codice a barre" -#: InvenTree/models.py:1125 +#: InvenTree/models.py:1008 msgid "Existing barcode found" msgstr "Trovato codice a barre esistente" -#: InvenTree/models.py:1168 +#: InvenTree/models.py:1051 msgid "Server Error" msgstr "Errore del server" -#: InvenTree/models.py:1169 +#: InvenTree/models.py:1052 msgid "An error has been logged by the server." msgstr "Un errore è stato loggato dal server." -#: InvenTree/serializers.py:62 part/models.py:4212 +#: InvenTree/serializers.py:63 part/models.py:4192 msgid "Must be a valid number" msgstr "Deve essere un numero valido" -#: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:3036 +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3001 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Valuta" -#: InvenTree/serializers.py:102 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "Selezionare la valuta dalle opzioni disponibili" -#: InvenTree/serializers.py:441 +#: InvenTree/serializers.py:442 msgid "You do not have permission to change this user role." msgstr "Non hai i permessi per cambiare il ruolo dell'utente." -#: InvenTree/serializers.py:453 +#: InvenTree/serializers.py:454 msgid "Only superusers can create new users" msgstr "Solo i superutenti possono creare nuovi utenti" -#: InvenTree/serializers.py:472 +#: InvenTree/serializers.py:473 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:474 +#: InvenTree/serializers.py:475 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:481 +#: InvenTree/serializers.py:482 msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:542 -msgid "Filename" -msgstr "Nome del file" - -#: InvenTree/serializers.py:576 +#: InvenTree/serializers.py:540 msgid "Invalid value" msgstr "Valore non valido" -#: InvenTree/serializers.py:596 +#: InvenTree/serializers.py:560 msgid "Data File" msgstr "File dati" -#: InvenTree/serializers.py:597 +#: InvenTree/serializers.py:561 msgid "Select data file for upload" msgstr "Seleziona un file per il caricamento" -#: InvenTree/serializers.py:614 +#: InvenTree/serializers.py:578 msgid "Unsupported file type" msgstr "Formato file non supportato" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:584 msgid "File is too large" msgstr "File troppo grande" -#: InvenTree/serializers.py:641 +#: InvenTree/serializers.py:605 msgid "No columns found in file" msgstr "Nessun colonna trovata nel file" -#: InvenTree/serializers.py:644 +#: InvenTree/serializers.py:608 msgid "No data rows found in file" msgstr "Nessuna riga di dati trovata nel file" -#: InvenTree/serializers.py:757 +#: InvenTree/serializers.py:721 msgid "No data rows provided" msgstr "Nessun dato fornito" -#: InvenTree/serializers.py:760 +#: InvenTree/serializers.py:724 msgid "No data columns supplied" msgstr "Nessuna colonna di dati fornita" -#: InvenTree/serializers.py:827 +#: InvenTree/serializers.py:791 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Colonna richiesta mancante: '{name}'" -#: InvenTree/serializers.py:836 +#: InvenTree/serializers.py:800 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Colonna duplicata: '{col}'" -#: InvenTree/serializers.py:859 +#: InvenTree/serializers.py:840 msgid "Remote Image" msgstr "Immagine Remota" -#: InvenTree/serializers.py:860 +#: InvenTree/serializers.py:841 msgid "URL of remote image file" msgstr "URL del file immagine remota" -#: InvenTree/serializers.py:878 +#: InvenTree/serializers.py:859 msgid "Downloading images from remote URL is not enabled" msgstr "Il download delle immagini da URL remoto non è abilitato" -#: InvenTree/status.py:66 part/serializers.py:1178 +#: InvenTree/status.py:66 part/serializers.py:1174 msgid "Background worker check failed" msgstr "Controllo in background non riuscito" @@ -698,27 +606,27 @@ msgstr "Server di posta non configurato" msgid "InvenTree system health checks failed" msgstr "Controlli di sistema InvenTree falliti" -#: InvenTree/templatetags/inventree_extras.py:183 +#: InvenTree/templatetags/inventree_extras.py:184 msgid "Unknown database" msgstr "Database sconosciuto" -#: InvenTree/validators.py:31 InvenTree/validators.py:33 +#: InvenTree/validators.py:32 InvenTree/validators.py:34 msgid "Invalid physical unit" msgstr "Unità fisica non valida" -#: InvenTree/validators.py:39 +#: InvenTree/validators.py:40 msgid "Not a valid currency code" msgstr "Non è un codice valuta valido" -#: InvenTree/validators.py:121 InvenTree/validators.py:137 +#: InvenTree/validators.py:118 InvenTree/validators.py:134 msgid "Overage value must not be negative" msgstr "Il sovra-valore non può essere negativo" -#: InvenTree/validators.py:139 +#: InvenTree/validators.py:136 msgid "Overage must not exceed 100%" msgstr "L'eccesso non deve superare il 100%" -#: InvenTree/validators.py:145 +#: InvenTree/validators.py:142 msgid "Invalid value for overage" msgstr "Valore non valido per eccedenza" @@ -750,14 +658,14 @@ 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:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: build/api.py:299 part/models.py:4070 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "Consumabile" -#: build/api.py:300 part/models.py:4084 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4064 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2529 #: templates/js/translated/table_filters.js:186 @@ -778,30 +686,30 @@ msgstr "Monitorato" msgid "Allocated" msgstr "Allocato" -#: build/api.py:311 company/models.py:904 company/serializers.py:383 +#: build/api.py:311 company/models.py:872 company/serializers.py:359 #: 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:2561 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:234 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 -#: templates/js/translated/part.js:699 +#: templates/js/translated/part.js:693 templates/js/translated/part.js:695 +#: templates/js/translated/part.js:700 #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:575 msgid "Available" msgstr "Disponibile" -#: build/models.py:83 build/templates/build/build_base.html:9 +#: build/models.py:85 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_report.html:105 -#: stock/serializers.py:83 templates/email/build_order_completed.html:16 +#: stock/serializers.py:82 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:2892 msgid "Build Order" msgstr "Ordine di Produzione" -#: build/models.py:84 build/templates/build/build_base.html:13 +#: build/models.py:86 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 @@ -812,25 +720,25 @@ msgstr "Ordine di Produzione" msgid "Build Orders" msgstr "Ordini di Produzione" -#: build/models.py:131 +#: build/models.py:133 msgid "Invalid choice for parent build" msgstr "Scelta non valida per la produzione genitore" -#: build/models.py:142 order/models.py:240 +#: build/models.py:144 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "" -#: build/models.py:148 +#: build/models.py:150 msgid "Build order part cannot be changed" msgstr "L'ordine di costruzione della parte non può essere cambiata" -#: build/models.py:209 +#: build/models.py:211 msgid "Build Order Reference" msgstr "Riferimento Ordine Di Produzione" -#: build/models.py:210 order/models.py:463 order/models.py:928 -#: order/models.py:1325 order/models.py:2056 part/admin.py:419 -#: part/models.py:4105 part/templates/part/upload_bom.html:54 +#: build/models.py:212 order/models.py:463 order/models.py:926 +#: order/models.py:1289 order/models.py:2020 part/admin.py:411 +#: part/models.py:4085 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_purchase_order_report.html:28 #: report/templates/report/inventree_return_order_report.html:26 @@ -844,27 +752,27 @@ msgstr "Riferimento Ordine Di Produzione" msgid "Reference" msgstr "Riferimento" -#: build/models.py:221 +#: build/models.py:223 msgid "Brief description of the build (optional)" msgstr "Breve descrizione della build (facoltativo)" -#: build/models.py:229 build/templates/build/build_base.html:183 +#: build/models.py:231 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Produzione Genitore" -#: build/models.py:230 +#: build/models.py:232 msgid "BuildOrder to which this build is allocated" msgstr "Ordine di produzione a cui questa produzione viene assegnata" -#: build/models.py:235 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 -#: order/models.py:1450 order/models.py:1595 order/models.py:1596 -#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 -#: part/models.py:3191 part/models.py:3335 part/models.py:3358 -#: part/models.py:3379 part/models.py:3401 part/models.py:3511 -#: part/models.py:3807 part/models.py:3963 part/models.py:4056 -#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 +#: build/models.py:237 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1026 order/api.py:805 +#: order/models.py:1414 order/models.py:1559 order/models.py:1560 +#: part/api.py:1494 part/api.py:1788 part/models.py:395 part/models.py:3012 +#: part/models.py:3156 part/models.py:3303 part/models.py:3324 +#: part/models.py:3346 part/models.py:3477 part/models.py:3787 +#: part/models.py:3943 part/models.py:4036 part/models.py:4395 +#: part/serializers.py:1120 part/serializers.py:1726 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -875,8 +783,8 @@ msgstr "Ordine di produzione a cui questa produzione viene assegnata" #: report/templates/report/inventree_return_order_report.html:24 #: report/templates/report/inventree_sales_order_report.html:27 #: report/templates/report/inventree_stock_location_report.html:102 -#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 -#: stock/serializers.py:818 templates/InvenTree/search.html:82 +#: stock/serializers.py:109 stock/serializers.py:157 stock/serializers.py:423 +#: stock/serializers.py:820 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 @@ -889,8 +797,8 @@ msgstr "Ordine di produzione a cui questa produzione viene assegnata" #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 -#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2323 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:1944 templates/js/translated/part.js:2016 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 #: templates/js/translated/purchase_order.js:751 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1848 @@ -908,107 +816,107 @@ msgstr "Ordine di produzione a cui questa produzione viene assegnata" msgid "Part" msgstr "Articolo" -#: build/models.py:243 +#: build/models.py:245 msgid "Select part to build" msgstr "Selezionare parte da produrre" -#: build/models.py:248 +#: build/models.py:250 msgid "Sales Order Reference" msgstr "Numero di riferimento ordine di vendita" -#: build/models.py:252 +#: build/models.py:254 msgid "SalesOrder to which this build is allocated" msgstr "Ordine di vendita a cui questa produzione viene assegnata" -#: build/models.py:257 build/serializers.py:1000 +#: build/models.py:259 build/serializers.py:999 #: templates/js/translated/build.js:1731 #: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "Posizione Di Origine" -#: build/models.py:261 +#: build/models.py:263 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:266 +#: build/models.py:268 msgid "Destination Location" msgstr "Posizione Della Destinazione" -#: build/models.py:270 +#: build/models.py:272 msgid "Select location where the completed items will be stored" msgstr "Seleziona il luogo in cui gli articoli completati saranno immagazzinati" -#: build/models.py:274 +#: build/models.py:276 msgid "Build Quantity" msgstr "Quantità Produzione" -#: build/models.py:277 +#: build/models.py:279 msgid "Number of stock items to build" msgstr "Numero di articoli da costruire" -#: build/models.py:281 +#: build/models.py:283 msgid "Completed items" msgstr "Articoli completati" -#: build/models.py:283 +#: build/models.py:285 msgid "Number of stock items which have been completed" msgstr "Numero di articoli di magazzino che sono stati completati" -#: build/models.py:287 +#: build/models.py:289 msgid "Build Status" msgstr "Stato Produzione" -#: build/models.py:291 +#: build/models.py:293 msgid "Build status code" msgstr "Codice stato di produzione" -#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 -#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 +#: build/models.py:302 build/serializers.py:286 order/serializers.py:580 +#: stock/models.py:838 stock/serializers.py:74 stock/serializers.py:1458 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Codice Lotto" -#: build/models.py:304 build/serializers.py:288 +#: build/models.py:306 build/serializers.py:287 msgid "Batch code for this build output" msgstr "Codice del lotto per questa produzione" -#: build/models.py:307 order/models.py:316 order/serializers.py:120 -#: part/models.py:1122 part/templates/part/part_base.html:310 +#: build/models.py:309 order/models.py:316 order/serializers.py:119 +#: part/models.py:1115 part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:338 #: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "Data di creazione" -#: build/models.py:311 +#: build/models.py:313 msgid "Target completion date" msgstr "Data completamento obiettivo" -#: build/models.py:312 +#: build/models.py:314 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:315 order/models.py:521 order/models.py:2101 +#: build/models.py:317 order/models.py:521 order/models.py:2065 #: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "Data di completamento" -#: build/models.py:321 +#: build/models.py:323 msgid "completed by" msgstr "Completato da" -#: build/models.py:329 templates/js/translated/build.js:2207 +#: build/models.py:331 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "Rilasciato da" -#: build/models.py:330 +#: build/models.py:332 msgid "User who issued this build order" msgstr "Utente che ha emesso questo ordine di costruzione" -#: build/models.py:338 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:145 +#: build/models.py:340 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:147 #: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:232 part/models.py:1139 +#: order/templates/order/sales_order_base.html:232 part/models.py:1132 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_report.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 @@ -1019,31 +927,36 @@ msgstr "Utente che ha emesso questo ordine di costruzione" msgid "Responsible" msgstr "Responsabile" -#: build/models.py:339 +#: build/models.py:341 msgid "User or group responsible for this build order" msgstr "Utente o gruppo responsabile di questo ordine di produzione" -#: build/models.py:344 build/templates/build/detail.html:108 +#: build/models.py:346 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:184 -#: part/templates/part/part_base.html:383 stock/models.py:836 +#: part/templates/part/part_base.html:383 stock/models.py:834 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "Collegamento esterno" -#: build/models.py:349 +#: build/models.py:347 common/models.py:3178 part/models.py:956 +#: stock/models.py:834 +msgid "Link to external URL" +msgstr "Link a URL esterno" + +#: build/models.py:351 msgid "Build Priority" msgstr "Priorità di produzione" -#: build/models.py:352 +#: build/models.py:354 msgid "Priority of this build order" msgstr "Priorità di questo ordine di produzione" -#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: build/models.py:361 common/models.py:131 order/admin.py:18 #: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 #: templates/js/translated/build.js:2144 #: templates/js/translated/purchase_order.js:1710 @@ -1054,65 +967,65 @@ msgstr "Priorità di questo ordine di produzione" msgid "Project Code" msgstr "Codice del progetto" -#: build/models.py:360 +#: build/models.py:362 msgid "Project code for this build order" msgstr "Codice del progetto per questo ordine di produzione" -#: build/models.py:593 build/models.py:658 +#: build/models.py:595 build/models.py:660 msgid "Failed to offload task to complete build allocations" msgstr "" -#: build/models.py:615 +#: build/models.py:617 #, python-brace-format msgid "Build order {build} has been completed" msgstr "L'ordine di produzione {build} è stato completato" -#: build/models.py:621 +#: build/models.py:623 msgid "A build order has been completed" msgstr "L'ordine di produzione è stato completato" -#: build/models.py:847 build/models.py:932 +#: build/models.py:849 build/models.py:934 msgid "No build output specified" msgstr "Nessun output di produzione specificato" -#: build/models.py:850 +#: build/models.py:852 msgid "Build output is already completed" msgstr "La produzione è stata completata" -#: build/models.py:853 +#: build/models.py:855 msgid "Build output does not match Build Order" msgstr "L'output della produzione non corrisponde all'ordine di compilazione" -#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 -#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 -#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 -#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 +#: build/models.py:938 build/serializers.py:219 build/serializers.py:268 +#: build/serializers.py:866 order/models.py:559 order/serializers.py:432 +#: order/serializers.py:575 part/serializers.py:1484 part/serializers.py:1884 +#: stock/models.py:677 stock/models.py:1495 stock/serializers.py:603 msgid "Quantity must be greater than zero" msgstr "La quantità deve essere maggiore di zero" -#: build/models.py:941 build/serializers.py:225 +#: build/models.py:943 build/serializers.py:224 msgid "Quantity cannot be greater than the output quantity" msgstr "La quantità non può essere maggiore della quantità in uscita" -#: build/models.py:1001 build/serializers.py:548 +#: build/models.py:1003 build/serializers.py:547 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1352 +#: build/models.py:1344 msgid "Build Order Line Item" msgstr "" -#: build/models.py:1377 +#: build/models.py:1369 msgid "Build object" msgstr "Crea oggetto" -#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 -#: build/serializers.py:254 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2539 -#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 -#: part/forms.py:48 part/models.py:3205 part/models.py:4078 +#: build/models.py:1383 build/models.py:1639 build/serializers.py:206 +#: build/serializers.py:253 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2509 +#: order/models.py:1272 order/models.py:1931 order/serializers.py:1327 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3170 part/models.py:4058 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1121,8 +1034,8 @@ msgstr "Crea oggetto" #: report/templates/report/inventree_sales_order_report.html:29 #: report/templates/report/inventree_stock_location_report.html:104 #: report/templates/report/inventree_test_report.html:90 -#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 -#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:125 stock/serializers.py:165 stock/serializers.py:594 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1133,8 +1046,8 @@ msgstr "Crea oggetto" #: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 #: templates/js/translated/model_renderers.js:236 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:962 +#: templates/js/translated/part.js:1812 templates/js/translated/part.js:3342 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1154,38 +1067,38 @@ msgstr "Crea oggetto" msgid "Quantity" msgstr "Quantità" -#: build/models.py:1392 +#: build/models.py:1384 msgid "Required quantity for build order" msgstr "Quantità richiesta per l'ordine di costruzione" -#: build/models.py:1472 +#: build/models.py:1464 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:1481 +#: build/models.py:1473 #, 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:1491 order/models.py:1918 +#: build/models.py:1483 order/models.py:1882 msgid "Stock item is over-allocated" msgstr "L'articolo in giacenza è sovrallocato" -#: build/models.py:1497 order/models.py:1921 +#: build/models.py:1489 order/models.py:1885 msgid "Allocation quantity must be greater than zero" msgstr "La quantità di assegnazione deve essere maggiore di zero" -#: build/models.py:1503 +#: build/models.py:1495 msgid "Quantity must be 1 for serialized stock" msgstr "La quantità deve essere 1 per lo stock serializzato" -#: build/models.py:1562 +#: build/models.py:1554 msgid "Selected stock item does not match BOM line" msgstr "L'articolo in stock selezionato non corrisponde alla voce nella BOM" -#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 -#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 -#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: build/models.py:1626 build/serializers.py:846 order/serializers.py:1171 +#: order/serializers.py:1192 stock/models.py:358 stock/serializers.py:91 +#: stock/serializers.py:697 stock/serializers.py:1177 stock/serializers.py:1289 #: stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 @@ -1201,70 +1114,70 @@ msgstr "L'articolo in stock selezionato non corrisponde alla voce nella BOM" msgid "Stock Item" msgstr "Articoli in magazzino" -#: build/models.py:1635 +#: build/models.py:1627 msgid "Source stock item" msgstr "Origine giacenza articolo" -#: build/models.py:1648 +#: build/models.py:1640 msgid "Stock quantity to allocate to build" msgstr "Quantità di magazzino da assegnare per la produzione" -#: build/models.py:1656 +#: build/models.py:1648 msgid "Install into" msgstr "Installa in" -#: build/models.py:1657 +#: build/models.py:1649 msgid "Destination stock item" msgstr "Destinazione articolo in giacenza" -#: build/serializers.py:157 build/serializers.py:876 +#: build/serializers.py:156 build/serializers.py:875 #: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "Genera Output" -#: build/serializers.py:169 +#: build/serializers.py:168 msgid "Build output does not match the parent build" msgstr "L'output generato non corrisponde alla produzione principale" -#: build/serializers.py:173 +#: build/serializers.py:172 msgid "Output part does not match BuildOrder part" msgstr "L'output non corrisponde alle parti dell'ordine di produzione" -#: build/serializers.py:177 +#: build/serializers.py:176 msgid "This build output has already been completed" msgstr "Questa produzione è stata già completata" -#: build/serializers.py:188 +#: build/serializers.py:187 msgid "This build output is not fully allocated" msgstr "Questo output non è stato completamente assegnato" -#: build/serializers.py:208 build/serializers.py:255 +#: build/serializers.py:207 build/serializers.py:254 msgid "Enter quantity for build output" msgstr "Inserisci la quantità per l'output di compilazione" -#: build/serializers.py:276 +#: build/serializers.py:275 msgid "Integer quantity required for trackable parts" msgstr "Quantità totale richiesta per articoli rintracciabili" -#: build/serializers.py:279 +#: build/serializers.py:278 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:294 order/serializers.py:589 order/serializers.py:1343 -#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:293 order/serializers.py:588 order/serializers.py:1331 +#: stock/serializers.py:614 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Codice Seriale" -#: build/serializers.py:295 +#: build/serializers.py:294 msgid "Enter serial numbers for build outputs" msgstr "Inserisci i numeri di serie per gli output di compilazione (build option)" -#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 -#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 -#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 -#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 -#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 +#: build/serializers.py:299 build/serializers.py:440 build/serializers.py:512 +#: order/serializers.py:564 order/serializers.py:672 order/serializers.py:1656 +#: part/serializers.py:1140 stock/serializers.py:100 stock/serializers.py:625 +#: stock/serializers.py:785 stock/serializers.py:881 stock/serializers.py:1321 +#: stock/serializers.py:1577 stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:1001 #: templates/js/translated/build.js:2372 @@ -1280,54 +1193,54 @@ msgstr "Inserisci i numeri di serie per gli output di compilazione (build option msgid "Location" msgstr "Posizione" -#: build/serializers.py:301 +#: build/serializers.py:300 msgid "Stock location for build output" msgstr "" -#: build/serializers.py:315 +#: build/serializers.py:314 msgid "Auto Allocate Serial Numbers" msgstr "Numeri di Serie Assegnazione automatica" -#: build/serializers.py:316 +#: build/serializers.py:315 msgid "Automatically allocate required items with matching serial numbers" msgstr "Assegna automaticamente gli articoli richiesti con i numeri di serie corrispondenti" -#: build/serializers.py:331 +#: build/serializers.py:330 msgid "Serial numbers must be provided for trackable parts" msgstr "" -#: build/serializers.py:356 stock/api.py:1031 +#: build/serializers.py:355 stock/api.py:1041 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:403 build/serializers.py:465 build/serializers.py:554 +#: build/serializers.py:402 build/serializers.py:464 build/serializers.py:553 msgid "A list of build outputs must be provided" msgstr "Deve essere fornito un elenco dei risultati di produzione" -#: build/serializers.py:442 +#: build/serializers.py:441 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:448 +#: build/serializers.py:447 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:449 +#: build/serializers.py:448 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:454 +#: build/serializers.py:453 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:514 +#: build/serializers.py:513 msgid "Location for completed build outputs" msgstr "Posizione per gli output di build completati" -#: build/serializers.py:520 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:952 -#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 -#: stock/serializers.py:930 stock/serializers.py:1469 +#: build/serializers.py:519 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2044 order/serializers.py:596 stock/admin.py:164 +#: stock/serializers.py:932 stock/serializers.py:1465 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 @@ -1339,188 +1252,188 @@ msgstr "Posizione per gli output di build completati" msgid "Status" msgstr "Stato" -#: build/serializers.py:526 +#: build/serializers.py:525 msgid "Accept Incomplete Allocation" msgstr "Accetta Assegnazione Incompleta" -#: build/serializers.py:527 +#: build/serializers.py:526 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:612 +#: build/serializers.py:611 msgid "Consume Allocated Stock" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:612 msgid "Consume any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:619 +#: build/serializers.py:618 msgid "Remove Incomplete Outputs" msgstr "Rimuovi Output Incompleti" -#: build/serializers.py:620 +#: build/serializers.py:619 msgid "Delete any build outputs which have not been completed" msgstr "Elimina gli output di produzione che non sono stati completati" -#: build/serializers.py:647 +#: build/serializers.py:646 msgid "Not permitted" msgstr "Non permesso" -#: build/serializers.py:648 +#: build/serializers.py:647 msgid "Accept as consumed by this build order" msgstr "Accetta come consumato da questo ordine di produzione" -#: build/serializers.py:649 +#: build/serializers.py:648 msgid "Deallocate before completing this build order" msgstr "Non assegnare prima di aver completato questo ordine di produzione" -#: build/serializers.py:679 +#: build/serializers.py:678 msgid "Overallocated Stock" msgstr "Giacenza in eccesso assegnata" -#: build/serializers.py:681 +#: build/serializers.py:680 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:691 +#: build/serializers.py:690 msgid "Some stock items have been overallocated" msgstr "Alcuni articoli di magazzino sono stati assegnati in eccedenza" -#: build/serializers.py:696 +#: build/serializers.py:695 msgid "Accept Unallocated" msgstr "Accetta Non Assegnato" -#: build/serializers.py:697 +#: build/serializers.py:696 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:707 templates/js/translated/build.js:315 +#: build/serializers.py:706 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:712 order/serializers.py:301 order/serializers.py:1246 +#: build/serializers.py:711 order/serializers.py:300 order/serializers.py:1234 msgid "Accept Incomplete" msgstr "Accetta Incompleta" -#: build/serializers.py:713 +#: build/serializers.py:712 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:723 templates/js/translated/build.js:319 +#: build/serializers.py:722 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:732 templates/js/translated/build.js:303 +#: build/serializers.py:731 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "L'ordine di produzione ha output incompleti" -#: build/serializers.py:770 +#: build/serializers.py:769 msgid "Build Line" msgstr "Linea di produzione" -#: build/serializers.py:780 +#: build/serializers.py:779 msgid "Build output" msgstr "Genera Output" -#: build/serializers.py:788 +#: build/serializers.py:787 msgid "Build output must point to the same build" msgstr "L'output di produzione deve puntare alla stessa produzione" -#: build/serializers.py:824 +#: build/serializers.py:823 msgid "Build Line Item" msgstr "Articolo linea di produzione" -#: build/serializers.py:838 +#: build/serializers.py:837 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:853 stock/serializers.py:1194 +#: build/serializers.py:852 stock/serializers.py:1190 msgid "Item must be in stock" msgstr "L'articolo deve essere disponibile" -#: build/serializers.py:901 order/serializers.py:1237 +#: build/serializers.py:900 order/serializers.py:1225 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Quantità disponibile ({q}) superata" -#: build/serializers.py:907 +#: build/serializers.py:906 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:914 +#: build/serializers.py:913 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:938 order/serializers.py:1489 +#: build/serializers.py:937 order/serializers.py:1477 msgid "Allocation items must be provided" msgstr "Deve essere indicata l'allocazione dell'articolo" -#: build/serializers.py:1001 +#: build/serializers.py:1000 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:1009 +#: build/serializers.py:1008 msgid "Exclude Location" msgstr "Escludi Ubicazione" -#: build/serializers.py:1010 +#: build/serializers.py:1009 msgid "Exclude stock items from this selected location" msgstr "Escludi gli elementi stock da questa ubicazione selezionata" -#: build/serializers.py:1015 +#: build/serializers.py:1014 msgid "Interchangeable Stock" msgstr "Scorte Intercambiabili" -#: build/serializers.py:1016 +#: build/serializers.py:1015 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:1021 +#: build/serializers.py:1020 msgid "Substitute Stock" msgstr "Sostituisci Giacenze" -#: build/serializers.py:1022 +#: build/serializers.py:1021 msgid "Allow allocation of substitute parts" msgstr "Consenti l'allocazione delle parti sostitutive" -#: build/serializers.py:1027 +#: build/serializers.py:1026 msgid "Optional Items" msgstr "Articoli Opzionali" -#: build/serializers.py:1028 +#: build/serializers.py:1027 msgid "Allocate optional BOM items to build order" msgstr "Assegna gli elementi opzionali della distinta base all'ordine di produzione" -#: build/serializers.py:1050 +#: build/serializers.py:1049 msgid "Failed to start auto-allocation task" msgstr "" -#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 -#: stock/api.py:794 +#: build/serializers.py:1139 part/models.py:3953 part/models.py:4387 +#: stock/api.py:804 msgid "BOM Item" msgstr "Distinta base (Bom)" -#: build/serializers.py:1149 templates/js/translated/index.js:130 +#: build/serializers.py:1148 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:832 part/serializers.py:1506 +#: build/serializers.py:1153 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:828 part/serializers.py:1502 #: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 -#: templates/js/translated/build.js:2613 templates/js/translated/part.js:709 -#: templates/js/translated/part.js:2148 +#: templates/js/translated/build.js:2613 templates/js/translated/part.js:710 +#: templates/js/translated/part.js:2149 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "Ordinato" -#: build/serializers.py:1159 part/serializers.py:1508 +#: build/serializers.py:1158 part/serializers.py:1504 #: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 +#: build/serializers.py:1163 part/bom.py:172 part/serializers.py:1527 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1929 msgid "Available Stock" @@ -1544,7 +1457,7 @@ msgstr "Annullato" #: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 #: order/status_codes.py:44 order/status_codes.py:69 #: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:165 report/models.py:443 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 msgid "Complete" msgstr "Completo" @@ -1674,11 +1587,11 @@ msgstr "Lo stock non è stato completamente assegnato a questo ordine di produzi #: build/templates/build/build_base.html:160 #: build/templates/build/detail.html:138 order/models.py:309 -#: order/models.py:1343 order/templates/order/order_base.html:186 +#: order/models.py:1307 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:196 #: report/templates/report/inventree_build_order_report.html:125 -#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1831 #: templates/js/translated/purchase_order.js:1739 #: templates/js/translated/purchase_order.js:2147 #: templates/js/translated/return_order.js:346 @@ -1711,8 +1624,8 @@ msgid "Completed Outputs" msgstr "Outputs Completati" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 -#: order/models.py:1587 order/models.py:1701 order/models.py:1855 +#: build/templates/build/detail.html:101 order/api.py:1463 order/models.py:845 +#: order/models.py:1551 order/models.py:1665 order/models.py:1819 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_report.html:135 @@ -1762,7 +1675,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:1479 +#: build/templates/build/detail.html:49 order/models.py:1443 #: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "Destinazione" @@ -1775,7 +1688,7 @@ msgstr "Posizione di destinazione non specificata" msgid "Allocated Parts" msgstr "Articoli Assegnati" -#: build/templates/build/detail.html:80 stock/admin.py:163 +#: build/templates/build/detail.html:80 stock/admin.py:162 #: stock/templates/stock/item_base.html:162 #: templates/js/translated/build.js:1380 #: templates/js/translated/model_renderers.js:241 @@ -1894,11 +1807,11 @@ msgstr "Allegati" msgid "Build Notes" msgstr "Genera Note" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:436 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -1914,6 +1827,34 @@ msgstr "Dettagli Ordine di Produzione" msgid "Incomplete Outputs" msgstr "Output Incompleti" +#: common/api.py:689 +msgid "Is Link" +msgstr "" + +#: common/api.py:697 +msgid "Is File" +msgstr "" + +#: common/api.py:739 +msgid "User does not have permission to delete this attachment" +msgstr "" + +#: common/currency.py:130 +msgid "Invalid currency code" +msgstr "" + +#: common/currency.py:132 +msgid "Duplicate currency code" +msgstr "" + +#: common/currency.py:137 +msgid "No valid currency codes provided" +msgstr "" + +#: common/currency.py:154 +msgid "No plugin" +msgstr "" + #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1952,1509 +1893,1512 @@ msgstr "" msgid "Select {name} file to upload" msgstr "Seleziona il file {name} da caricare" -#: common/models.py:71 +#: common/models.py:73 msgid "Updated" msgstr "Aggiornato" -#: common/models.py:72 +#: common/models.py:74 msgid "Timestamp of last update" msgstr "Orario dell'ultimo aggiornamento" -#: common/models.py:105 +#: common/models.py:107 msgid "Site URL is locked by configuration" msgstr "" -#: common/models.py:130 +#: common/models.py:132 msgid "Unique project code" msgstr "Codice unico del progetto" -#: common/models.py:137 +#: common/models.py:139 msgid "Project description" msgstr "Descrizione del progetto" -#: common/models.py:146 +#: common/models.py:148 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:766 +#: common/models.py:765 msgid "Settings key (must be unique - case insensitive)" msgstr "Tasto impostazioni (deve essere univoco - maiuscole e minuscole)" -#: common/models.py:770 +#: common/models.py:769 msgid "Settings value" msgstr "Valore impostazioni" -#: common/models.py:822 +#: common/models.py:821 msgid "Chosen value is not a valid option" msgstr "Il valore specificato non è un opzione valida" -#: common/models.py:838 +#: common/models.py:837 msgid "Value must be a boolean value" msgstr "Il valore deve essere un valore booleano" -#: common/models.py:846 +#: common/models.py:845 msgid "Value must be an integer value" msgstr "Il valore deve essere un intero" -#: common/models.py:883 +#: common/models.py:882 msgid "Key string must be unique" msgstr "La stringa chiave deve essere univoca" -#: common/models.py:1115 +#: common/models.py:1114 msgid "No group" msgstr "Nessun gruppo" -#: common/models.py:1158 -msgid "An empty domain is not allowed." -msgstr "Un dominio vuoto non è consentito." - -#: common/models.py:1160 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "Nome dominio non valido: {domain}" - -#: common/models.py:1172 -msgid "No plugin" -msgstr "" - -#: common/models.py:1260 +#: common/models.py:1213 msgid "Restart required" msgstr "Riavvio richiesto" -#: common/models.py:1262 +#: common/models.py:1215 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:1269 +#: common/models.py:1222 msgid "Pending migrations" msgstr "" -#: common/models.py:1270 +#: common/models.py:1223 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1275 +#: common/models.py:1228 msgid "Server Instance Name" msgstr "Nome Istanza Del Server" -#: common/models.py:1277 +#: common/models.py:1230 msgid "String descriptor for the server instance" msgstr "Descrittore stringa per l'istanza del server" -#: common/models.py:1281 +#: common/models.py:1234 msgid "Use instance name" msgstr "Utilizza nome istanza" -#: common/models.py:1282 +#: common/models.py:1235 msgid "Use the instance name in the title-bar" msgstr "Usa il nome dell'istanza nella barra del titolo" -#: common/models.py:1287 +#: common/models.py:1240 msgid "Restrict showing `about`" msgstr "Limita visualizzazione `Informazioni`" -#: common/models.py:1288 +#: common/models.py:1241 msgid "Show the `about` modal only to superusers" msgstr "Mostra la modalità `Informazioni` solo ai superusers" -#: common/models.py:1293 company/models.py:108 company/models.py:109 +#: common/models.py:1246 company/models.py:111 company/models.py:112 msgid "Company name" msgstr "Nome azienda" -#: common/models.py:1294 +#: common/models.py:1247 msgid "Internal company name" msgstr "Nome interno dell'azienda" -#: common/models.py:1298 +#: common/models.py:1251 msgid "Base URL" msgstr "URL Base" -#: common/models.py:1299 +#: common/models.py:1252 msgid "Base URL for server instance" msgstr "URL di base per l'istanza del server" -#: common/models.py:1305 +#: common/models.py:1258 msgid "Default Currency" msgstr "Valuta predefinita" -#: common/models.py:1306 +#: common/models.py:1259 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1312 +#: common/models.py:1265 +msgid "Supported Currencies" +msgstr "" + +#: common/models.py:1266 +msgid "List of supported currency codes" +msgstr "" + +#: common/models.py:1272 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1314 +#: common/models.py:1274 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1317 common/models.py:1373 common/models.py:1386 -#: common/models.py:1394 common/models.py:1403 common/models.py:1412 -#: common/models.py:1620 common/models.py:1642 common/models.py:1757 -#: common/models.py:2076 +#: common/models.py:1277 common/models.py:1333 common/models.py:1346 +#: common/models.py:1354 common/models.py:1363 common/models.py:1372 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:2046 msgid "days" msgstr "giorni" -#: common/models.py:1321 +#: common/models.py:1281 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1322 +#: common/models.py:1282 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1327 +#: common/models.py:1287 msgid "Download from URL" msgstr "Scarica dall'URL" -#: common/models.py:1329 +#: common/models.py:1289 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:1335 +#: common/models.py:1295 msgid "Download Size Limit" msgstr "Limite Dimensione Download" -#: common/models.py:1336 +#: common/models.py:1296 msgid "Maximum allowable download size for remote image" msgstr "Dimensione massima consentita per il download dell'immagine remota" -#: common/models.py:1342 +#: common/models.py:1302 msgid "User-agent used to download from URL" msgstr "User-agent utilizzato per scaricare dall'URL" -#: common/models.py:1344 +#: common/models.py:1304 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:1349 +#: common/models.py:1309 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1350 +#: common/models.py:1310 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1355 +#: common/models.py:1315 msgid "Require confirm" msgstr "Richiesta conferma" -#: common/models.py:1356 +#: common/models.py:1316 msgid "Require explicit user confirmation for certain action." msgstr "Richiede una conferma esplicita dell'utente per una determinata azione." -#: common/models.py:1361 +#: common/models.py:1321 msgid "Tree Depth" msgstr "Profondità livelli" -#: common/models.py:1363 +#: common/models.py:1323 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:1369 +#: common/models.py:1329 msgid "Update Check Interval" msgstr "Aggiorna intervallo di controllo" -#: common/models.py:1370 +#: common/models.py:1330 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:1376 +#: common/models.py:1336 msgid "Automatic Backup" msgstr "Backup automatico" -#: common/models.py:1377 +#: common/models.py:1337 msgid "Enable automatic backup of database and media files" msgstr "Abilita il backup automatico di database e file multimediali" -#: common/models.py:1382 +#: common/models.py:1342 msgid "Auto Backup Interval" msgstr "Intervallo Di Backup Automatico" -#: common/models.py:1383 +#: common/models.py:1343 msgid "Specify number of days between automated backup events" msgstr "Definisci i giorni intercorrenti tra un backup automatico e l'altro" -#: common/models.py:1389 +#: common/models.py:1349 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1391 +#: common/models.py:1351 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:1398 +#: common/models.py:1358 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1400 +#: common/models.py:1360 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:1407 +#: common/models.py:1367 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1409 +#: common/models.py:1369 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:1416 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1376 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Supporto Codice A Barre" -#: common/models.py:1417 +#: common/models.py:1377 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1422 +#: common/models.py:1382 msgid "Barcode Input Delay" msgstr "Codice a barre inserito scaduto" -#: common/models.py:1423 +#: common/models.py:1383 msgid "Barcode input processing delay time" msgstr "Tempo di ritardo di elaborazione codice a barre" -#: common/models.py:1429 +#: common/models.py:1389 msgid "Barcode Webcam Support" msgstr "Codice a Barre Supporto Webcam" -#: common/models.py:1430 +#: common/models.py:1390 msgid "Allow barcode scanning via webcam in browser" msgstr "Consenti la scansione del codice a barre tramite webcam nel browser" -#: common/models.py:1435 +#: common/models.py:1395 msgid "Part Revisions" msgstr "" -#: common/models.py:1436 +#: common/models.py:1396 msgid "Enable revision field for Part" msgstr "Abilita il campo revisione per l'articolo" -#: common/models.py:1441 +#: common/models.py:1401 msgid "Allow Deletion from Assembly" msgstr "" -#: common/models.py:1442 +#: common/models.py:1402 msgid "Allow deletion of parts which are used in an assembly" msgstr "" -#: common/models.py:1447 +#: common/models.py:1407 msgid "IPN Regex" msgstr "" -#: common/models.py:1448 +#: common/models.py:1408 msgid "Regular expression pattern for matching Part IPN" msgstr "Schema di espressione regolare per l'articolo corrispondente IPN" -#: common/models.py:1451 +#: common/models.py:1411 msgid "Allow Duplicate IPN" msgstr "Consenti duplicati IPN" -#: common/models.py:1452 +#: common/models.py:1412 msgid "Allow multiple parts to share the same IPN" msgstr "Permetti a più articoli di condividere lo stesso IPN" -#: common/models.py:1457 +#: common/models.py:1417 msgid "Allow Editing IPN" msgstr "Permetti modifiche al part number interno (IPN)" -#: common/models.py:1458 +#: common/models.py:1418 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:1463 +#: common/models.py:1423 msgid "Copy Part BOM Data" msgstr "Copia I Dati Della distinta base dell'articolo" -#: common/models.py:1464 +#: common/models.py:1424 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:1469 +#: common/models.py:1429 msgid "Copy Part Parameter Data" msgstr "Copia I Dati Parametro dell'articolo" -#: common/models.py:1470 +#: common/models.py:1430 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:1475 +#: common/models.py:1435 msgid "Copy Part Test Data" msgstr "Copia I Dati dell'Articolo Test" -#: common/models.py:1476 +#: common/models.py:1436 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:1481 +#: common/models.py:1441 msgid "Copy Category Parameter Templates" msgstr "Copia Template Parametri Categoria" -#: common/models.py:1482 +#: common/models.py:1442 msgid "Copy category parameter templates when creating a part" msgstr "Copia i modelli dei parametri categoria quando si crea un articolo" -#: common/models.py:1487 part/admin.py:108 part/models.py:3815 -#: report/models.py:293 report/models.py:360 report/serializers.py:90 -#: report/serializers.py:131 stock/serializers.py:228 +#: common/models.py:1447 part/admin.py:108 part/models.py:3795 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:227 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "Modello" -#: common/models.py:1488 +#: common/models.py:1448 msgid "Parts are templates by default" msgstr "Gli articoli sono modelli per impostazione predefinita" -#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 +#: common/models.py:1453 part/admin.py:91 part/admin.py:425 part/models.py:1052 #: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" msgstr "Assemblaggio" -#: common/models.py:1494 +#: common/models.py:1454 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:1499 part/admin.py:95 part/models.py:1065 +#: common/models.py:1459 part/admin.py:95 part/models.py:1058 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "Componente" -#: common/models.py:1500 +#: common/models.py:1460 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:1505 part/admin.py:100 part/models.py:1077 +#: common/models.py:1465 part/admin.py:100 part/models.py:1070 msgid "Purchaseable" msgstr "Acquistabile" -#: common/models.py:1506 +#: common/models.py:1466 msgid "Parts are purchaseable by default" msgstr "Gli articoli sono acquistabili per impostazione predefinita" -#: common/models.py:1511 part/admin.py:104 part/models.py:1083 +#: common/models.py:1471 part/admin.py:104 part/models.py:1076 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "Vendibile" -#: common/models.py:1512 +#: common/models.py:1472 msgid "Parts are salable by default" msgstr "Gli articoli sono acquistabili per impostazione predefinita" -#: common/models.py:1517 part/admin.py:113 part/models.py:1071 +#: common/models.py:1477 part/admin.py:113 part/models.py:1064 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" msgstr "Tracciabile" -#: common/models.py:1518 +#: common/models.py:1478 msgid "Parts are trackable by default" msgstr "Gli articoli sono tracciabili per impostazione predefinita" -#: common/models.py:1523 part/admin.py:117 part/models.py:1093 +#: common/models.py:1483 part/admin.py:117 part/models.py:1086 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" msgstr "Virtuale" -#: common/models.py:1524 +#: common/models.py:1484 msgid "Parts are virtual by default" msgstr "Gli articoli sono virtuali per impostazione predefinita" -#: common/models.py:1529 +#: common/models.py:1489 msgid "Show Import in Views" msgstr "Mostra l'importazione nelle viste" -#: common/models.py:1530 +#: common/models.py:1490 msgid "Display the import wizard in some part views" msgstr "Mostra la procedura guidata di importazione in alcune viste articoli" -#: common/models.py:1535 +#: common/models.py:1495 msgid "Show related parts" msgstr "Mostra articoli correlati" -#: common/models.py:1536 +#: common/models.py:1496 msgid "Display related parts for a part" msgstr "Visualizza parti correlate per ogni articolo" -#: common/models.py:1541 +#: common/models.py:1501 msgid "Initial Stock Data" msgstr "Dati iniziali dello stock" -#: common/models.py:1542 +#: common/models.py:1502 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:1547 templates/js/translated/part.js:107 +#: common/models.py:1507 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Dati iniziali del fornitore" -#: common/models.py:1549 +#: common/models.py:1509 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:1555 +#: common/models.py:1515 msgid "Part Name Display Format" msgstr "Formato di visualizzazione del nome articolo" -#: common/models.py:1556 +#: common/models.py:1516 msgid "Format to display the part name" msgstr "Formato per visualizzare il nome dell'articolo" -#: common/models.py:1562 +#: common/models.py:1522 msgid "Part Category Default Icon" msgstr "Icona predefinita Categoria Articolo" -#: common/models.py:1563 +#: common/models.py:1523 msgid "Part category default icon (empty means no icon)" msgstr "Icona predefinita Categoria Articolo (vuoto significa nessuna icona)" -#: common/models.py:1567 +#: common/models.py:1527 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1569 +#: common/models.py:1529 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1575 +#: common/models.py:1535 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1577 +#: common/models.py:1537 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1583 +#: common/models.py:1548 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1585 +#: common/models.py:1550 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1591 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "Usa Prezzi Fornitore" -#: common/models.py:1593 +#: common/models.py:1563 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:1599 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "Ignora la Cronologia Acquisti" -#: common/models.py:1601 +#: common/models.py:1571 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:1607 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "Utilizzare i prezzi degli articoli in stock" -#: common/models.py:1609 +#: common/models.py:1579 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:1615 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "Età dei prezzi degli articoli in stock" -#: common/models.py:1617 +#: common/models.py:1587 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:1624 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "Utilizza Variazione di Prezzo" -#: common/models.py:1625 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "Includi la variante dei prezzi nei calcoli dei prezzi complessivi" -#: common/models.py:1630 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "Solo Varianti Attive" -#: common/models.py:1632 +#: common/models.py:1602 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:1638 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1640 +#: common/models.py:1610 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:1647 +#: common/models.py:1617 msgid "Internal Prices" msgstr "Prezzi interni" -#: common/models.py:1648 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "Abilita prezzi interni per gli articoli" -#: common/models.py:1653 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "Sovrascrivi Prezzo Interno" -#: common/models.py:1655 +#: common/models.py:1625 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:1661 +#: common/models.py:1631 msgid "Enable label printing" msgstr "Abilita stampa etichette" -#: common/models.py:1662 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "Abilita la stampa di etichette dall'interfaccia web" -#: common/models.py:1667 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "Etichetta Immagine DPI" -#: common/models.py:1669 +#: common/models.py:1639 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:1675 +#: common/models.py:1645 msgid "Enable Reports" msgstr "Abilita Report di Stampa" -#: common/models.py:1676 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "Abilita generazione di report di stampa" -#: common/models.py:1681 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "Modalità Debug" -#: common/models.py:1682 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "Genera report in modalità debug (output HTML)" -#: common/models.py:1687 +#: common/models.py:1657 msgid "Log Report Errors" msgstr "" -#: common/models.py:1688 +#: common/models.py:1658 msgid "Log errors which occur when generating reports" msgstr "" -#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:301 +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:302 msgid "Page Size" msgstr "Dimensioni pagina" -#: common/models.py:1694 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "Dimensione predefinita della pagina per i report PDF" -#: common/models.py:1699 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "Abilita Rapporto di Prova" -#: common/models.py:1700 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "Abilita generazione di stampe di prova" -#: common/models.py:1705 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "Allega Rapporto di Prova" -#: common/models.py:1707 +#: common/models.py:1677 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:1713 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "Seriali Unici Globali" -#: common/models.py:1714 +#: common/models.py:1684 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:1719 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "Auto Riempimento Numeri Seriali" -#: common/models.py:1720 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "Auto riempimento numeri nel modulo" -#: common/models.py:1725 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "Elimina scorte esaurite" -#: common/models.py:1727 +#: common/models.py:1697 msgid "Determines default behavior when a stock item is depleted" msgstr "" -#: common/models.py:1733 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "Modello Codice a Barre" -#: common/models.py:1735 +#: common/models.py:1705 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:1740 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "Scadenza giacenza" -#: common/models.py:1741 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "Abilita funzionalità di scadenza della giacenza" -#: common/models.py:1746 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "Vendi giacenza scaduta" -#: common/models.py:1747 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "Consenti la vendita di stock scaduti" -#: common/models.py:1752 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "Tempo di Scorta del Magazzino" -#: common/models.py:1754 +#: common/models.py:1724 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:1761 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "Crea giacenza scaduta" -#: common/models.py:1762 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "Permetti produzione con stock scaduto" -#: common/models.py:1767 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "Controllo della proprietà della giacenza" -#: common/models.py:1768 +#: common/models.py:1738 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:1773 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "Icona Predefinita Ubicazione di Magazzino" -#: common/models.py:1774 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "Icona Predefinita Ubicazione di Magazzino (vuoto significa nessuna icona)" -#: common/models.py:1778 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1779 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1784 +#: common/models.py:1754 msgid "Check BOM when installing items" msgstr "" -#: common/models.py:1786 +#: common/models.py:1756 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "" -#: common/models.py:1792 +#: common/models.py:1762 msgid "Allow Out of Stock Transfer" msgstr "" -#: common/models.py:1794 +#: common/models.py:1764 msgid "Allow stock items which are not in stock to be transferred between stock locations" msgstr "" -#: common/models.py:1800 +#: common/models.py:1770 msgid "Build Order Reference Pattern" msgstr "Modello Di Riferimento Ordine Di Produzione" -#: common/models.py:1802 +#: common/models.py:1772 msgid "Required pattern for generating Build Order reference field" msgstr "Modello richiesto per generare il campo di riferimento ordine di produzione" -#: common/models.py:1808 common/models.py:1836 common/models.py:1858 -#: common/models.py:1894 +#: common/models.py:1778 common/models.py:1806 common/models.py:1828 +#: common/models.py:1864 msgid "Require Responsible Owner" msgstr "" -#: common/models.py:1809 common/models.py:1837 common/models.py:1859 -#: common/models.py:1895 +#: common/models.py:1779 common/models.py:1807 common/models.py:1829 +#: common/models.py:1865 msgid "A responsible owner must be assigned to each order" msgstr "" -#: common/models.py:1814 +#: common/models.py:1784 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1816 +#: common/models.py:1786 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:1822 +#: common/models.py:1792 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1823 +#: common/models.py:1793 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1828 +#: common/models.py:1798 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1830 +#: common/models.py:1800 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1842 +#: common/models.py:1812 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1844 +#: common/models.py:1814 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1850 +#: common/models.py:1820 msgid "Sales Order Reference Pattern" msgstr "Modello Di Riferimento Ordine Di Vendita" -#: common/models.py:1852 +#: common/models.py:1822 msgid "Required pattern for generating Sales Order reference field" msgstr "Modello richiesto per generare il campo di riferimento ordine di vendita" -#: common/models.py:1864 +#: common/models.py:1834 msgid "Sales Order Default Shipment" msgstr "Spedizione Predefinita Ordine Di Vendita" -#: common/models.py:1865 +#: common/models.py:1835 msgid "Enable creation of default shipment with sales orders" msgstr "Abilita la creazione di spedizioni predefinite con ordini di vendita" -#: common/models.py:1870 +#: common/models.py:1840 msgid "Edit Completed Sales Orders" msgstr "Modifica Ordini Di Vendita Completati" -#: common/models.py:1872 +#: common/models.py:1842 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:1878 -#, fuzzy -#| msgid "Mark order as complete" +#: common/models.py:1848 msgid "Mark Shipped Orders as Complete" -msgstr "Contrassegna ordine come completato" +msgstr "" -#: common/models.py:1880 +#: common/models.py:1850 msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" msgstr "" -#: common/models.py:1886 +#: common/models.py:1856 msgid "Purchase Order Reference Pattern" msgstr "Modello di Riferimento Ordine D'Acquisto" -#: common/models.py:1888 +#: common/models.py:1858 msgid "Required pattern for generating Purchase Order reference field" msgstr "Modello richiesto per generare il campo di riferimento ordine di acquisto" -#: common/models.py:1900 +#: common/models.py:1870 msgid "Edit Completed Purchase Orders" msgstr "Modifica Ordini Di Acquisto Completati" -#: common/models.py:1902 +#: common/models.py:1872 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:1908 +#: common/models.py:1878 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1910 +#: common/models.py:1880 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1917 +#: common/models.py:1887 msgid "Enable password forgot" msgstr "Abilita password dimenticata" -#: common/models.py:1918 +#: common/models.py:1888 msgid "Enable password forgot function on the login pages" msgstr "Abilita la funzione password dimenticata nelle pagine di accesso" -#: common/models.py:1923 +#: common/models.py:1893 msgid "Enable registration" msgstr "Abilita registrazione" -#: common/models.py:1924 +#: common/models.py:1894 msgid "Enable self-registration for users on the login pages" msgstr "Abilita auto-registrazione per gli utenti nelle pagine di accesso" -#: common/models.py:1929 +#: common/models.py:1899 msgid "Enable SSO" msgstr "SSO abilitato" -#: common/models.py:1930 +#: common/models.py:1900 msgid "Enable SSO on the login pages" msgstr "Abilita SSO nelle pagine di accesso" -#: common/models.py:1935 +#: common/models.py:1905 msgid "Enable SSO registration" msgstr "Abilita registrazione SSO" -#: common/models.py:1937 +#: common/models.py:1907 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:1943 +#: common/models.py:1913 msgid "Email required" msgstr "Email richiesta" -#: common/models.py:1944 +#: common/models.py:1914 msgid "Require user to supply mail on signup" msgstr "Richiedi all'utente di fornire una email al momento dell'iscrizione" -#: common/models.py:1949 +#: common/models.py:1919 msgid "Auto-fill SSO users" msgstr "Riempimento automatico degli utenti SSO" -#: common/models.py:1951 +#: common/models.py:1921 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:1957 +#: common/models.py:1927 msgid "Mail twice" msgstr "Posta due volte" -#: common/models.py:1958 +#: common/models.py:1928 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:1963 +#: common/models.py:1933 msgid "Password twice" msgstr "Password due volte" -#: common/models.py:1964 +#: common/models.py:1934 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:1969 +#: common/models.py:1939 msgid "Allowed domains" msgstr "Domini consentiti" -#: common/models.py:1971 +#: common/models.py:1941 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1977 +#: common/models.py:1947 msgid "Group on signup" msgstr "Gruppo iscrizione" -#: common/models.py:1978 +#: common/models.py:1948 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:1983 +#: common/models.py:1953 msgid "Enforce MFA" msgstr "Applica MFA" -#: common/models.py:1984 +#: common/models.py:1954 msgid "Users must use multifactor security." msgstr "Gli utenti devono utilizzare la sicurezza a due fattori." -#: common/models.py:1989 +#: common/models.py:1959 msgid "Check plugins on startup" msgstr "Controlla i plugin all'avvio" -#: common/models.py:1991 +#: common/models.py:1961 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:1999 +#: common/models.py:1969 msgid "Check for plugin updates" msgstr "" -#: common/models.py:2000 +#: common/models.py:1970 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:2006 +#: common/models.py:1976 msgid "Enable URL integration" msgstr "Abilita l'integrazione URL" -#: common/models.py:2007 +#: common/models.py:1977 msgid "Enable plugins to add URL routes" msgstr "Attiva plugin per aggiungere percorsi URL" -#: common/models.py:2013 +#: common/models.py:1983 msgid "Enable navigation integration" msgstr "Attiva integrazione navigazione" -#: common/models.py:2014 +#: common/models.py:1984 msgid "Enable plugins to integrate into navigation" msgstr "Abilita i plugin per l'integrazione nella navigazione" -#: common/models.py:2020 +#: common/models.py:1990 msgid "Enable app integration" msgstr "Abilita l'app integrata" -#: common/models.py:2021 +#: common/models.py:1991 msgid "Enable plugins to add apps" msgstr "Abilita plugin per aggiungere applicazioni" -#: common/models.py:2027 +#: common/models.py:1997 msgid "Enable schedule integration" msgstr "Abilita integrazione pianificazione" -#: common/models.py:2028 +#: common/models.py:1998 msgid "Enable plugins to run scheduled tasks" msgstr "Abilita i plugin per eseguire le attività pianificate" -#: common/models.py:2034 +#: common/models.py:2004 msgid "Enable event integration" msgstr "Abilita eventi integrati" -#: common/models.py:2035 +#: common/models.py:2005 msgid "Enable plugins to respond to internal events" msgstr "Abilita plugin per rispondere agli eventi interni" -#: common/models.py:2041 +#: common/models.py:2011 msgid "Enable project codes" msgstr "" -#: common/models.py:2042 +#: common/models.py:2012 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:2047 +#: common/models.py:2017 msgid "Stocktake Functionality" msgstr "Funzionalità Dell'Inventario" -#: common/models.py:2049 +#: common/models.py:2019 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:2055 +#: common/models.py:2025 msgid "Exclude External Locations" msgstr "" -#: common/models.py:2057 +#: common/models.py:2027 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:2063 +#: common/models.py:2033 msgid "Automatic Stocktake Period" msgstr "Inventario periodico automatico" -#: common/models.py:2065 +#: common/models.py:2035 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:2071 +#: common/models.py:2041 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:2073 +#: common/models.py:2043 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:2080 +#: common/models.py:2050 msgid "Display Users full names" msgstr "" -#: common/models.py:2081 +#: common/models.py:2051 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:2086 +#: common/models.py:2056 msgid "Enable Test Station Data" msgstr "" -#: common/models.py:2087 +#: common/models.py:2057 msgid "Enable test station data collection for test results" msgstr "" -#: common/models.py:2099 common/models.py:2509 +#: common/models.py:2069 common/models.py:2479 msgid "Settings key (must be unique - case insensitive" msgstr "Tasto impostazioni (deve essere univoco - maiuscole e minuscole" -#: common/models.py:2142 +#: common/models.py:2112 msgid "Hide inactive parts" msgstr "Nascondi Articoli Inattivi" -#: common/models.py:2144 +#: common/models.py:2114 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2150 +#: common/models.py:2120 msgid "Show subscribed parts" msgstr "Mostra articoli sottoscritti" -#: common/models.py:2151 +#: common/models.py:2121 msgid "Show subscribed parts on the homepage" msgstr "Mostra gli articoli sottoscritti nella homepage" -#: common/models.py:2156 +#: common/models.py:2126 msgid "Show subscribed categories" msgstr "Mostra le categorie sottoscritte" -#: common/models.py:2157 +#: common/models.py:2127 msgid "Show subscribed part categories on the homepage" msgstr "Mostra le categorie dei componenti sottoscritti nella homepage" -#: common/models.py:2162 +#: common/models.py:2132 msgid "Show latest parts" msgstr "Mostra ultimi articoli" -#: common/models.py:2163 +#: common/models.py:2133 msgid "Show latest parts on the homepage" msgstr "Mostra gli ultimi articoli sulla homepage" -#: common/models.py:2168 +#: common/models.py:2138 msgid "Show invalid BOMs" msgstr "" -#: common/models.py:2169 +#: common/models.py:2139 msgid "Show BOMs that await validation on the homepage" msgstr "Mostra le distinte base che attendono la convalida sulla homepage" -#: common/models.py:2174 +#: common/models.py:2144 msgid "Show recent stock changes" msgstr "Mostra le modifiche recenti alle giacenze" -#: common/models.py:2175 +#: common/models.py:2145 msgid "Show recently changed stock items on the homepage" msgstr "Mostra le giacenze modificate di recente nella homepage" -#: common/models.py:2180 +#: common/models.py:2150 msgid "Show low stock" msgstr "Mostra disponibilità scarsa delle giacenze" -#: common/models.py:2181 +#: common/models.py:2151 msgid "Show low stock items on the homepage" msgstr "Mostra disponibilità scarsa degli articoli sulla homepage" -#: common/models.py:2186 +#: common/models.py:2156 msgid "Show depleted stock" msgstr "Mostra scorte esaurite" -#: common/models.py:2187 +#: common/models.py:2157 msgid "Show depleted stock items on the homepage" msgstr "Mostra disponibilità scarsa delle scorte degli articoli sulla homepage" -#: common/models.py:2192 +#: common/models.py:2162 msgid "Show needed stock" msgstr "Mostra scorte necessarie" -#: common/models.py:2193 +#: common/models.py:2163 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:2198 +#: common/models.py:2168 msgid "Show expired stock" msgstr "Mostra scorte esaurite" -#: common/models.py:2199 +#: common/models.py:2169 msgid "Show expired stock items on the homepage" msgstr "Mostra gli articoli stock scaduti nella home page" -#: common/models.py:2204 +#: common/models.py:2174 msgid "Show stale stock" msgstr "Mostra scorte obsolete" -#: common/models.py:2205 +#: common/models.py:2175 msgid "Show stale stock items on the homepage" msgstr "Mostra gli elementi obsoleti esistenti sulla home page" -#: common/models.py:2210 +#: common/models.py:2180 msgid "Show pending builds" msgstr "Mostra produzioni in attesa" -#: common/models.py:2211 +#: common/models.py:2181 msgid "Show pending builds on the homepage" msgstr "Mostra produzioni in attesa sulla homepage" -#: common/models.py:2216 +#: common/models.py:2186 msgid "Show overdue builds" msgstr "Mostra produzioni in ritardo" -#: common/models.py:2217 +#: common/models.py:2187 msgid "Show overdue builds on the homepage" msgstr "Mostra produzioni in ritardo sulla home page" -#: common/models.py:2222 +#: common/models.py:2192 msgid "Show outstanding POs" msgstr "Mostra ordini di produzione inevasi" -#: common/models.py:2223 +#: common/models.py:2193 msgid "Show outstanding POs on the homepage" msgstr "Mostra ordini di produzione inevasi sulla home page" -#: common/models.py:2228 +#: common/models.py:2198 msgid "Show overdue POs" msgstr "Mostra Ordini di Produzione in ritardo" -#: common/models.py:2229 +#: common/models.py:2199 msgid "Show overdue POs on the homepage" msgstr "Mostra Ordini di Produzione in ritardo sulla home page" -#: common/models.py:2234 +#: common/models.py:2204 msgid "Show outstanding SOs" msgstr "Mostra Ordini di Vendita inevasi" -#: common/models.py:2235 +#: common/models.py:2205 msgid "Show outstanding SOs on the homepage" msgstr "Mostra Ordini di Vendita inevasi sulla home page" -#: common/models.py:2240 +#: common/models.py:2210 msgid "Show overdue SOs" msgstr "Mostra Ordini di Vendita in ritardo" -#: common/models.py:2241 +#: common/models.py:2211 msgid "Show overdue SOs on the homepage" msgstr "Mostra Ordini di Vendita in ritardo sulla home page" -#: common/models.py:2246 +#: common/models.py:2216 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2247 +#: common/models.py:2217 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2252 +#: common/models.py:2222 msgid "Show News" msgstr "Mostra Notizie" -#: common/models.py:2253 +#: common/models.py:2223 msgid "Show news on the homepage" msgstr "Mostra notizie sulla home page" -#: common/models.py:2258 +#: common/models.py:2228 msgid "Inline label display" msgstr "Visualizzazione dell'etichetta in linea" -#: common/models.py:2260 +#: common/models.py:2230 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:2266 +#: common/models.py:2236 msgid "Default label printer" msgstr "Stampante per etichette predefinita" -#: common/models.py:2268 +#: common/models.py:2238 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:2274 +#: common/models.py:2244 msgid "Inline report display" msgstr "Visualizzazione dell'etichetta in linea" -#: common/models.py:2276 +#: common/models.py:2246 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:2282 +#: common/models.py:2252 msgid "Search Parts" msgstr "Cerca Articoli" -#: common/models.py:2283 +#: common/models.py:2253 msgid "Display parts in search preview window" msgstr "Mostra articoli della ricerca nella finestra di anteprima" -#: common/models.py:2288 +#: common/models.py:2258 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2289 +#: common/models.py:2259 msgid "Display supplier parts in search preview window" msgstr "Mostra articoli del fornitore nella finestra di anteprima" -#: common/models.py:2294 +#: common/models.py:2264 msgid "Search Manufacturer Parts" msgstr "Cerca Articoli Produttore" -#: common/models.py:2295 +#: common/models.py:2265 msgid "Display manufacturer parts in search preview window" msgstr "Mostra articoli del produttore nella finestra di anteprima" -#: common/models.py:2300 +#: common/models.py:2270 msgid "Hide Inactive Parts" msgstr "Nascondi Articoli Inattivi" -#: common/models.py:2301 +#: common/models.py:2271 msgid "Excluded inactive parts from search preview window" msgstr "Escludi articoli inattivi dalla finestra di anteprima della ricerca" -#: common/models.py:2306 +#: common/models.py:2276 msgid "Search Categories" msgstr "Cerca Categorie" -#: common/models.py:2307 +#: common/models.py:2277 msgid "Display part categories in search preview window" msgstr "Mostra categorie articolo nella finestra di anteprima di ricerca" -#: common/models.py:2312 +#: common/models.py:2282 msgid "Search Stock" msgstr "Cerca Giacenze" -#: common/models.py:2313 +#: common/models.py:2283 msgid "Display stock items in search preview window" msgstr "Mostra articoli in giacenza nella finestra di anteprima della ricerca" -#: common/models.py:2318 +#: common/models.py:2288 msgid "Hide Unavailable Stock Items" msgstr "Nascondi elementi non disponibili" -#: common/models.py:2320 +#: common/models.py:2290 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:2326 +#: common/models.py:2296 msgid "Search Locations" msgstr "Cerca Ubicazioni" -#: common/models.py:2327 +#: common/models.py:2297 msgid "Display stock locations in search preview window" msgstr "Mostra ubicazioni delle giacenze nella finestra di anteprima di ricerca" -#: common/models.py:2332 +#: common/models.py:2302 msgid "Search Companies" msgstr "Cerca Aziende" -#: common/models.py:2333 +#: common/models.py:2303 msgid "Display companies in search preview window" msgstr "Mostra le aziende nella finestra di anteprima di ricerca" -#: common/models.py:2338 +#: common/models.py:2308 msgid "Search Build Orders" msgstr "Cerca Ordini Di Produzione" -#: common/models.py:2339 +#: common/models.py:2309 msgid "Display build orders in search preview window" msgstr "Mostra gli ordini di produzione nella finestra di anteprima di ricerca" -#: common/models.py:2344 +#: common/models.py:2314 msgid "Search Purchase Orders" msgstr "Cerca Ordini di Acquisto" -#: common/models.py:2345 +#: common/models.py:2315 msgid "Display purchase orders in search preview window" msgstr "Mostra gli ordini di acquisto nella finestra di anteprima di ricerca" -#: common/models.py:2350 +#: common/models.py:2320 msgid "Exclude Inactive Purchase Orders" msgstr "Escludi Ordini D'Acquisto Inattivi" -#: common/models.py:2352 +#: common/models.py:2322 msgid "Exclude inactive purchase orders from search preview window" msgstr "Escludi ordini di acquisto inattivi dalla finestra di anteprima di ricerca" -#: common/models.py:2358 +#: common/models.py:2328 msgid "Search Sales Orders" msgstr "Cerca Ordini Di Vendita" -#: common/models.py:2359 +#: common/models.py:2329 msgid "Display sales orders in search preview window" msgstr "Visualizzazione degli ordini di vendita nella finestra di anteprima della ricerca" -#: common/models.py:2364 +#: common/models.py:2334 msgid "Exclude Inactive Sales Orders" msgstr "Escludi Ordini Di Vendita Inattivi" -#: common/models.py:2366 +#: common/models.py:2336 msgid "Exclude inactive sales orders from search preview window" msgstr "Escludi ordini di vendita inattivi dalla finestra di anteprima di ricerca" -#: common/models.py:2372 +#: common/models.py:2342 msgid "Search Return Orders" msgstr "Cerca Ordini Di Reso" -#: common/models.py:2373 +#: common/models.py:2343 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2378 +#: common/models.py:2348 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2380 +#: common/models.py:2350 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2386 +#: common/models.py:2356 msgid "Search Preview Results" msgstr "Risultati Dell'Anteprima Di Ricerca" -#: common/models.py:2388 +#: common/models.py:2358 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:2394 +#: common/models.py:2364 msgid "Regex Search" msgstr "Ricerca con regex" -#: common/models.py:2395 +#: common/models.py:2365 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2400 +#: common/models.py:2370 msgid "Whole Word Search" msgstr "" -#: common/models.py:2401 +#: common/models.py:2371 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2406 +#: common/models.py:2376 msgid "Show Quantity in Forms" msgstr "Mostra quantità nei moduli" -#: common/models.py:2407 +#: common/models.py:2377 msgid "Display available part quantity in some forms" msgstr "Visualizzare la quantità di pezzi disponibili in alcuni moduli" -#: common/models.py:2412 +#: common/models.py:2382 msgid "Escape Key Closes Forms" msgstr "Il tasto Esc chiude i moduli" -#: common/models.py:2413 +#: common/models.py:2383 msgid "Use the escape key to close modal forms" msgstr "Utilizzare il tasto Esc per chiudere i moduli modali" -#: common/models.py:2418 +#: common/models.py:2388 msgid "Fixed Navbar" msgstr "Barra di navigazione fissa" -#: common/models.py:2419 +#: common/models.py:2389 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:2424 +#: common/models.py:2394 msgid "Date Format" msgstr "Formato Data" -#: common/models.py:2425 +#: common/models.py:2395 msgid "Preferred format for displaying dates" msgstr "Formato predefinito per visualizzare le date" -#: common/models.py:2438 part/templates/part/detail.html:41 +#: common/models.py:2408 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Programmazione Prodotto" -#: common/models.py:2439 +#: common/models.py:2409 msgid "Display part scheduling information" msgstr "Mostra informazioni sulla pianificazione del prodotto" -#: common/models.py:2444 part/templates/part/detail.html:62 +#: common/models.py:2414 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "Inventario Prodotto" -#: common/models.py:2446 +#: common/models.py:2416 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:2452 +#: common/models.py:2422 msgid "Table String Length" msgstr "Lunghezza Stringa Tabella" -#: common/models.py:2454 +#: common/models.py:2424 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2460 +#: common/models.py:2430 msgid "Default part label template" msgstr "" -#: common/models.py:2461 +#: common/models.py:2431 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2466 +#: common/models.py:2436 msgid "Default stock item template" msgstr "" -#: common/models.py:2468 +#: common/models.py:2438 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2474 +#: common/models.py:2444 msgid "Default stock location label template" msgstr "" -#: common/models.py:2476 +#: common/models.py:2446 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2482 +#: common/models.py:2452 msgid "Default build line label template" msgstr "" -#: common/models.py:2484 +#: common/models.py:2454 msgid "The build line label template to be automatically selected" msgstr "" -#: common/models.py:2490 +#: common/models.py:2460 msgid "Receive error reports" msgstr "" -#: common/models.py:2491 +#: common/models.py:2461 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2496 +#: common/models.py:2466 msgid "Last used printing machines" msgstr "" -#: common/models.py:2497 +#: common/models.py:2467 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2540 +#: common/models.py:2487 common/models.py:2488 common/models.py:2636 +#: common/models.py:2637 common/models.py:2882 common/models.py:2883 +#: common/models.py:3193 common/models.py:3194 part/models.py:3193 +#: part/models.py:3280 part/models.py:3353 part/models.py:3381 +#: plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "Utente" + +#: common/models.py:2510 msgid "Price break quantity" msgstr "Quantità prezzo limite" -#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1382 order/models.py:2301 -#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 +#: common/models.py:2517 company/serializers.py:472 order/admin.py:42 +#: order/models.py:1346 order/models.py:2265 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1886 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:740 msgid "Price" msgstr "Prezzo" -#: common/models.py:2548 +#: common/models.py:2518 msgid "Unit price at specified quantity" msgstr "Prezzo unitario in quantità specificata" -#: common/models.py:2719 common/models.py:2904 +#: common/models.py:2613 common/models.py:2798 msgid "Endpoint" msgstr "Scadenza" -#: common/models.py:2720 +#: common/models.py:2614 msgid "Endpoint at which this webhook is received" msgstr "Scadenza in cui questa notifica viene ricevuta" -#: common/models.py:2730 +#: common/models.py:2624 msgid "Name for this webhook" msgstr "Nome per questa notifica" -#: common/models.py:2734 company/models.py:160 company/models.py:814 -#: machine/models.py:39 part/admin.py:88 part/models.py:1088 -#: plugin/models.py:65 templates/js/translated/company.js:523 +#: common/models.py:2628 company/models.py:163 company/models.py:782 +#: machine/models.py:39 part/admin.py:88 part/models.py:1081 +#: plugin/models.py:66 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3464,101 +3408,118 @@ msgstr "Nome per questa notifica" msgid "Active" msgstr "Attivo" -#: common/models.py:2734 +#: common/models.py:2628 msgid "Is this webhook active" msgstr "È questa notifica attiva" -#: common/models.py:2750 users/models.py:159 +#: common/models.py:2644 users/models.py:159 msgid "Token" msgstr "" -#: common/models.py:2751 +#: common/models.py:2645 msgid "Token for access" msgstr "Token per l'accesso" -#: common/models.py:2759 +#: common/models.py:2653 msgid "Secret" msgstr "Segreto" -#: common/models.py:2760 +#: common/models.py:2654 msgid "Shared secret for HMAC" msgstr "Segreto condiviso per HMAC" -#: common/models.py:2868 +#: common/models.py:2762 msgid "Message ID" msgstr "ID Messaggio" -#: common/models.py:2869 +#: common/models.py:2763 msgid "Unique identifier for this message" msgstr "Identificatore unico per questo messaggio" -#: common/models.py:2877 +#: common/models.py:2771 msgid "Host" msgstr "" -#: common/models.py:2878 +#: common/models.py:2772 msgid "Host from which this message was received" msgstr "Host da cui questo messaggio è stato ricevuto" -#: common/models.py:2886 +#: common/models.py:2780 msgid "Header" msgstr "Intestazione" -#: common/models.py:2887 +#: common/models.py:2781 msgid "Header of this message" msgstr "Intestazione di questo messaggio" -#: common/models.py:2894 +#: common/models.py:2788 msgid "Body" msgstr "Contenuto" -#: common/models.py:2895 +#: common/models.py:2789 msgid "Body of this message" msgstr "Contenuto di questo messaggio" -#: common/models.py:2905 +#: common/models.py:2799 msgid "Endpoint on which this message was received" msgstr "Scadenza in cui questo messaggio è stato ricevuto" -#: common/models.py:2910 +#: common/models.py:2804 msgid "Worked on" msgstr "Lavorato il" -#: common/models.py:2911 +#: common/models.py:2805 msgid "Was the work on this message finished?" msgstr "Il lavoro su questo messaggio è terminato?" -#: common/models.py:3037 +#: common/models.py:2931 msgid "Id" msgstr "" -#: common/models.py:3039 templates/js/translated/company.js:965 +#: common/models.py:2933 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "Titolo" -#: common/models.py:3043 templates/js/translated/news.js:60 +#: common/models.py:2935 common/models.py:3177 company/models.py:149 +#: company/models.py:440 company/models.py:500 company/models.py:799 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +#: part/admin.py:55 part/models.py:955 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "Collegamento" + +#: common/models.py:2937 templates/js/translated/news.js:60 msgid "Published" msgstr "Pubblicato" -#: common/models.py:3045 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2939 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:3047 templates/js/translated/news.js:52 +#: common/models.py:2941 templates/js/translated/news.js:52 msgid "Summary" msgstr "Riepilogo" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Read" msgstr "Letto" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Was this news item read?" msgstr "Queste notizie sull'elemento sono state lette?" -#: common/models.py:3067 company/models.py:156 part/models.py:972 +#: common/models.py:2961 company/models.py:159 part/models.py:965 #: 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.html:35 @@ -3568,34 +3529,89 @@ msgstr "Queste notizie sull'elemento sono state lette?" msgid "Image" msgstr "Immagine" -#: common/models.py:3067 +#: common/models.py:2961 msgid "Image file" msgstr "File immagine" -#: common/models.py:3109 +#: common/models.py:2973 common/models.py:3161 +msgid "Target model type for this image" +msgstr "" + +#: common/models.py:2977 +msgid "Target model ID for this image" +msgstr "" + +#: common/models.py:3018 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3128 +#: common/models.py:3037 msgid "Unit name" msgstr "" -#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3044 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3136 +#: common/models.py:3045 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3052 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3144 +#: common/models.py:3053 msgid "Unit definition" msgstr "" +#: common/models.py:3111 common/models.py:3168 stock/models.py:2426 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "Allegato" + +#: common/models.py:3123 +msgid "Missing file" +msgstr "File mancante" + +#: common/models.py:3124 +msgid "Missing external link" +msgstr "Link esterno mancante" + +#: common/models.py:3169 +msgid "Select file to attach" +msgstr "Seleziona file da allegare" + +#: common/models.py:3184 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "Commento" + +#: common/models.py:3185 +msgid "Attachment comment" +msgstr "" + +#: common/models.py:3201 +msgid "Upload date" +msgstr "" + +#: common/models.py:3202 +msgid "Date the file was uploaded" +msgstr "" + +#: common/models.py:3206 +msgid "File size" +msgstr "" + +#: common/models.py:3206 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3244 common/serializers.py:553 +msgid "Invalid model type specified for attachment" +msgstr "" + #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" @@ -3630,66 +3646,103 @@ msgstr "" msgid "Error raised by plugin" msgstr "Errore generato dal plugin" -#: common/serializers.py:366 +#: common/serializers.py:371 msgid "Is Running" msgstr "" -#: common/serializers.py:372 +#: common/serializers.py:377 msgid "Pending Tasks" msgstr "" -#: common/serializers.py:378 +#: common/serializers.py:383 msgid "Scheduled Tasks" msgstr "" -#: common/serializers.py:384 +#: common/serializers.py:389 msgid "Failed Tasks" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Task ID" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Unique task ID" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock time" msgstr "" -#: common/serializers.py:403 +#: common/serializers.py:408 msgid "Task name" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function name" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Arguments" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Task arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Keyword Arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Task keyword arguments" msgstr "" +#: common/serializers.py:525 +msgid "Filename" +msgstr "Nome del file" + +#: common/serializers.py:532 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: common/serializers.py:559 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "" + +#: common/validators.py:33 +msgid "No attachment model type provided" +msgstr "" + +#: common/validators.py:39 +msgid "Invalid attachment model type" +msgstr "" + +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "Un dominio vuoto non è consentito." + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +msgstr "Nome dominio non valido: {domain}" + #: 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 @@ -3728,210 +3781,222 @@ msgstr "Articoli importati" msgid "Previous Step" msgstr "Passaggio Precedente" -#: company/api.py:164 +#: company/api.py:144 msgid "Part is Active" msgstr "" -#: company/api.py:168 +#: company/api.py:148 msgid "Manufacturer is Active" msgstr "" -#: company/api.py:317 +#: company/api.py:281 msgid "Supplier Part is Active" msgstr "" -#: company/api.py:321 +#: company/api.py:285 msgid "Internal Part is Active" msgstr "" -#: company/api.py:325 +#: company/api.py:289 msgid "Supplier is Active" msgstr "" -#: company/models.py:114 +#: company/models.py:100 company/models.py:365 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:822 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "Azienda" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "Aziende" + +#: company/models.py:117 msgid "Company description" msgstr "Descrizione azienda" -#: company/models.py:115 +#: company/models.py:118 msgid "Description of the company" msgstr "Descrizione dell'azienda" -#: company/models.py:120 company/templates/company/company_base.html:106 +#: company/models.py:123 company/templates/company/company_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:532 msgid "Website" msgstr "Sito Web" -#: company/models.py:120 +#: company/models.py:123 msgid "Company website URL" msgstr "Sito web aziendale" -#: company/models.py:125 +#: company/models.py:128 msgid "Phone number" msgstr "Telefono" -#: company/models.py:127 +#: company/models.py:130 msgid "Contact phone number" msgstr "Numero di telefono di contatto" -#: company/models.py:134 +#: company/models.py:137 msgid "Contact email address" msgstr "Indirizzo email" -#: company/models.py:139 company/templates/company/company_base.html:145 +#: company/models.py:142 company/templates/company/company_base.html:145 #: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "Contatto" -#: company/models.py:141 +#: company/models.py:144 msgid "Point of contact" msgstr "Punto di contatto" -#: company/models.py:147 +#: company/models.py:150 msgid "Link to external company information" msgstr "Collegamento alle informazioni aziendali esterne" -#: company/models.py:160 +#: company/models.py:163 msgid "Is this company active?" msgstr "" -#: company/models.py:165 +#: company/models.py:168 msgid "is customer" msgstr "è un cliente" -#: company/models.py:166 +#: company/models.py:169 msgid "Do you sell items to this company?" msgstr "Vendi oggetti a questa azienda?" -#: company/models.py:171 +#: company/models.py:174 msgid "is supplier" msgstr "è un fornitore" -#: company/models.py:172 +#: company/models.py:175 msgid "Do you purchase items from this company?" msgstr "Acquistate articoli da questa azienda?" -#: company/models.py:177 +#: company/models.py:180 msgid "is manufacturer" msgstr "è un produttore" -#: company/models.py:178 +#: company/models.py:181 msgid "Does this company manufacture parts?" msgstr "Questa azienda produce articoli?" -#: company/models.py:186 +#: company/models.py:189 msgid "Default currency used for this company" msgstr "Valuta predefinita utilizzata per questa azienda" -#: company/models.py:273 company/models.py:382 -#: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:812 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 -msgid "Company" -msgstr "Azienda" - -#: company/models.py:383 +#: company/models.py:366 msgid "Select company" msgstr "" -#: company/models.py:388 +#: company/models.py:371 msgid "Address title" msgstr "" -#: company/models.py:389 +#: company/models.py:372 msgid "Title describing the address entry" msgstr "" -#: company/models.py:395 +#: company/models.py:378 msgid "Primary address" msgstr "" -#: company/models.py:396 +#: company/models.py:379 msgid "Set as primary address" msgstr "" -#: company/models.py:401 templates/js/translated/company.js:914 +#: company/models.py:384 templates/js/translated/company.js:914 #: templates/js/translated/company.js:971 msgid "Line 1" msgstr "" -#: company/models.py:402 +#: company/models.py:385 msgid "Address line 1" msgstr "" -#: company/models.py:408 templates/js/translated/company.js:915 +#: company/models.py:391 templates/js/translated/company.js:915 #: templates/js/translated/company.js:977 msgid "Line 2" msgstr "" -#: company/models.py:409 +#: company/models.py:392 msgid "Address line 2" msgstr "" -#: company/models.py:415 company/models.py:416 +#: company/models.py:398 company/models.py:399 #: templates/js/translated/company.js:983 msgid "Postal code" msgstr "" -#: company/models.py:422 +#: company/models.py:405 msgid "City/Region" msgstr "" -#: company/models.py:423 +#: company/models.py:406 msgid "Postal code city/region" msgstr "" -#: company/models.py:429 +#: company/models.py:412 msgid "State/Province" msgstr "" -#: company/models.py:430 +#: company/models.py:413 msgid "State or province" msgstr "" -#: company/models.py:436 templates/js/translated/company.js:1001 +#: company/models.py:419 templates/js/translated/company.js:1001 msgid "Country" msgstr "" -#: company/models.py:437 +#: company/models.py:420 msgid "Address country" msgstr "" -#: company/models.py:443 +#: company/models.py:426 msgid "Courier shipping notes" msgstr "" -#: company/models.py:444 +#: company/models.py:427 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:450 +#: company/models.py:433 msgid "Internal shipping notes" msgstr "" -#: company/models.py:451 +#: company/models.py:434 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:458 +#: company/models.py:441 msgid "Link to address information (external)" msgstr "" -#: company/models.py:489 company/models.py:792 stock/models.py:768 -#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 +#: company/models.py:463 company/models.py:574 company/models.py:792 +#: 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:475 company/models.py:760 stock/models.py:766 +#: stock/serializers.py:422 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Articolo di base" -#: company/models.py:491 company/models.py:794 +#: company/models.py:477 company/models.py:762 msgid "Select part" msgstr "Seleziona articolo" -#: company/models.py:500 company/templates/company/company_base.html:82 +#: company/models.py:486 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:530 +#: company/templates/company/supplier_part.html:145 part/serializers.py:525 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -3941,152 +4006,154 @@ msgstr "Seleziona articolo" msgid "Manufacturer" msgstr "Produttore" -#: company/models.py:501 +#: company/models.py:487 msgid "Select manufacturer" msgstr "Seleziona Produttore" -#: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:540 +#: company/models.py:493 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:535 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 -#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1801 #: templates/js/translated/purchase_order.js:1851 #: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "Codice articolo produttore (MPN)" -#: company/models.py:508 +#: company/models.py:494 msgid "Manufacturer Part Number" msgstr "Codice articolo produttore" -#: company/models.py:515 +#: company/models.py:501 msgid "URL for external manufacturer part link" msgstr "URL dell'articolo del fornitore" -#: company/models.py:524 +#: company/models.py:510 msgid "Manufacturer part description" msgstr "Descrizione articolo costruttore" -#: company/models.py:581 company/models.py:608 company/models.py:824 -#: 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:615 +#: company/models.py:581 msgid "Parameter name" msgstr "Nome parametro" -#: company/models.py:621 report/templates/report/inventree_test_report.html:104 -#: stock/models.py:2429 templates/js/translated/company.js:1166 -#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 +#: company/models.py:587 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2418 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1493 #: templates/js/translated/stock.js:1522 msgid "Value" msgstr "Valore" -#: company/models.py:622 +#: company/models.py:588 msgid "Parameter value" msgstr "Valore del parametro" -#: company/models.py:629 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1052 part/models.py:3666 +#: company/models.py:595 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1045 part/models.py:3646 #: part/templates/part/part_base.html:284 -#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1512 +#: templates/js/translated/part.js:1616 templates/js/translated/part.js:2370 msgid "Units" msgstr "Unità" -#: company/models.py:630 +#: company/models.py:596 msgid "Parameter units" msgstr "Unità parametri" -#: company/models.py:732 +#: company/models.py:648 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:777 stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "Articolo Fornitore" + +#: company/models.py:700 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:739 +#: company/models.py:707 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:753 +#: company/models.py:721 msgid "Linked manufacturer part must reference the same base part" msgstr "L'articolo del costruttore collegato deve riferirsi alla stesso articolo" -#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/models.py:770 company/templates/company/company_base.html:87 #: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:514 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:509 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:511 -#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1769 #: templates/js/translated/pricing.js:498 #: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "Fornitore" -#: company/models.py:803 +#: company/models.py:771 msgid "Select supplier" msgstr "Seleziona fornitore" -#: company/models.py:809 part/serializers.py:525 +#: company/models.py:777 part/serializers.py:520 msgid "Supplier stock keeping unit" msgstr "Unità di giacenza magazzino fornitore" -#: company/models.py:815 +#: company/models.py:783 msgid "Is this supplier part active?" msgstr "" -#: company/models.py:825 +#: company/models.py:793 msgid "Select manufacturer part" msgstr "Selezionare un produttore" -#: company/models.py:832 +#: company/models.py:800 msgid "URL for external supplier part link" msgstr "URL dell'articolo del fornitore" -#: company/models.py:841 +#: company/models.py:809 msgid "Supplier part description" msgstr "Descrizione articolo fornitore" -#: company/models.py:848 company/templates/company/supplier_part.html:187 -#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 +#: company/models.py:816 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4093 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_purchase_order_report.html:32 #: report/templates/report/inventree_return_order_report.html:27 #: report/templates/report/inventree_sales_order_report.html:32 #: report/templates/report/inventree_stock_location_report.html:105 -#: stock/serializers.py:708 +#: stock/serializers.py:710 msgid "Note" msgstr "Nota" -#: company/models.py:857 part/models.py:2010 +#: company/models.py:825 part/models.py:2003 msgid "base cost" msgstr "costo base" -#: company/models.py:858 part/models.py:2011 +#: company/models.py:826 part/models.py:2004 msgid "Minimum charge (e.g. stocking fee)" msgstr "Onere minimo (ad esempio tassa di stoccaggio)" -#: company/models.py:865 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 +#: company/models.py:833 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:797 stock/serializers.py:1475 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 #: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "Confezionamento" -#: company/models.py:866 +#: company/models.py:834 msgid "Part packaging" msgstr "Imballaggio del pezzo" -#: company/models.py:871 templates/js/translated/company.js:1651 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: company/models.py:839 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:311 #: templates/js/translated/purchase_order.js:841 #: templates/js/translated/purchase_order.js:1103 @@ -4095,35 +4162,35 @@ msgstr "Imballaggio del pezzo" msgid "Pack Quantity" msgstr "Quantità Confezione" -#: company/models.py:873 +#: company/models.py:841 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:892 part/models.py:2017 +#: company/models.py:860 part/models.py:2010 msgid "multiple" msgstr "multiplo" -#: company/models.py:893 +#: company/models.py:861 msgid "Order multiple" msgstr "Ordine multiplo" -#: company/models.py:905 +#: company/models.py:873 msgid "Quantity available from supplier" msgstr "Quantità disponibile dal fornitore" -#: company/models.py:911 +#: company/models.py:879 msgid "Availability Updated" msgstr "Disponibilità Aggiornata" -#: company/models.py:912 +#: company/models.py:880 msgid "Date of last update of availability data" msgstr "Data dell’ultimo aggiornamento dei dati sulla disponibilità" -#: company/serializers.py:163 +#: company/serializers.py:161 msgid "Default currency used for this supplier" msgstr "Valuta predefinita utilizzata per questo fornitore" -#: company/serializers.py:381 part/admin.py:126 +#: company/serializers.py:357 part/admin.py:126 #: part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1689 #: templates/js/translated/table_filters.js:355 @@ -4135,7 +4202,7 @@ msgstr "In magazzino" #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 #: templates/js/translated/model_renderers.js:312 -#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +#: templates/js/translated/part.js:815 templates/js/translated/part.js:1219 msgid "Inactive" msgstr "Inattivo" @@ -4174,7 +4241,7 @@ msgstr "Elimina Azienda" #: report/templates/report/inventree_purchase_order_report.html:40 #: report/templates/report/inventree_sales_order_report.html:40 #: report/templates/report/inventree_test_report.html:84 -#: report/templates/report/inventree_test_report.html:163 +#: report/templates/report/inventree_test_report.html:162 msgid "Part image" msgstr "" @@ -4193,10 +4260,10 @@ msgstr "Scarica immagine dall'URL" msgid "Delete image" msgstr "Elimina immagine" -#: company/templates/company/company_base.html:92 order/models.py:940 -#: order/models.py:2068 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:148 stock/models.py:821 -#: stock/models.py:822 stock/serializers.py:1229 +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2032 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:819 +#: stock/models.py:820 stock/serializers.py:1225 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 @@ -4407,7 +4474,7 @@ msgstr "Nessuna informazione sul produttore disponibile" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:836 +#: part/admin.py:122 part/serializers.py:832 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4427,8 +4494,8 @@ msgstr "Parametri" msgid "New Parameter" msgstr "Nuovo Parametro" -#: company/templates/company/manufacturer_part.html:206 -#: templates/js/translated/part.js:1422 +#: company/templates/company/manufacturer_part.html:196 +#: templates/js/translated/part.js:1423 msgid "Add Parameter" msgstr "" @@ -4456,15 +4523,6 @@ msgstr "Contatti" msgid "Addresses" msgstr "" -#: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:452 -#: stock/models.py:779 stock/templates/stock/item_base.html:233 -#: templates/js/translated/company.js:1600 -#: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2280 -msgid "Supplier Part" -msgstr "Articolo Fornitore" - #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1526 msgid "Supplier part actions" @@ -4507,8 +4565,8 @@ msgid "No supplier information available" msgstr "Nessuna informazione sul fornitore disponibile" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:524 -#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: part/bom.py:311 part/serializers.py:519 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1787 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1850 #: templates/js/translated/purchase_order.js:2028 @@ -4520,12 +4578,12 @@ msgid "Supplier Part Stock" msgstr "Fornitore articolo in giacenza" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:207 msgid "Create new stock item" msgstr "Crea nuova allocazione magazzino" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "Nuovo Elemento in giacenza" @@ -4557,15 +4615,15 @@ msgid "Update Part Availability" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:835 part/stocktake.py:223 +#: part/serializers.py:831 part/stocktake.py:224 #: part/templates/part/category.html:183 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:916 stock/serializers.py:1080 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:918 stock/serializers.py:1091 #: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:191 #: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1061 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:206 msgid "Stock Items" @@ -4592,10 +4650,6 @@ msgstr "Clienti" msgid "New Customer" msgstr "Nuovo cliente" -#: company/views.py:51 templates/js/translated/search.js:192 -msgid "Companies" -msgstr "Aziende" - #: company/views.py:52 msgid "New Company" msgstr "Nuova Azienda" @@ -4616,7 +4670,7 @@ msgstr "" msgid "Connected" msgstr "" -#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: machine/machine_types/label_printer.py:235 order/api.py:1467 #: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "Sconosciuto" @@ -4705,7 +4759,7 @@ msgstr "" msgid "Config type" msgstr "" -#: order/admin.py:30 order/models.py:89 +#: order/admin.py:30 order/models.py:90 #: report/templates/report/inventree_purchase_order_report.html:31 #: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 @@ -4714,30 +4768,30 @@ msgstr "" msgid "Total Price" msgstr "Prezzo Totale" -#: order/api.py:161 order/serializers.py:91 +#: order/api.py:157 order/serializers.py:90 #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "Stato dell'ordine" -#: order/api.py:165 templates/js/translated/table_filters.js:194 +#: order/api.py:161 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "" -#: order/api.py:240 +#: order/api.py:236 msgid "No matching purchase order found" msgstr "Nessun ordine di acquisto corrispondente trovato" -#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 -#: order/models.py:1586 order/models.py:1700 order/models.py:1854 -#: order/models.py:2267 order/models.py:2318 +#: order/api.py:435 order/api.py:801 order/models.py:1395 order/models.py:1504 +#: order/models.py:1550 order/models.py:1664 order/models.py:1818 +#: order/models.py:2231 order/models.py:2282 #: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "Ordine" -#: order/api.py:441 order/api.py:838 +#: order/api.py:439 order/api.py:822 msgid "Order Complete" msgstr "" @@ -4745,13 +4799,13 @@ msgstr "" msgid "Order Pending" msgstr "" -#: order/api.py:1509 order/models.py:380 order/models.py:1432 -#: order/models.py:1541 order/templates/order/order_base.html:9 +#: order/api.py:1461 order/models.py:380 order/models.py:1396 +#: order/models.py:1505 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_purchase_order_report.html:14 -#: stock/serializers.py:119 stock/templates/stock/item_base.html:176 +#: stock/serializers.py:118 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/part.js:1746 templates/js/translated/pricing.js:804 #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1673 @@ -4759,8 +4813,8 @@ msgstr "" msgid "Purchase Order" msgstr "Ordine D'Acquisto" -#: order/api.py:1513 order/models.py:2017 order/models.py:2268 -#: order/models.py:2319 order/templates/order/return_order_base.html:9 +#: order/api.py:1465 order/models.py:1981 order/models.py:2232 +#: order/models.py:2283 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report.html:13 #: templates/js/translated/return_order.js:280 @@ -4768,15 +4822,15 @@ msgstr "Ordine D'Acquisto" msgid "Return Order" msgstr "Restituisci ordine" -#: order/models.py:90 +#: order/models.py:91 msgid "Total price for this order" msgstr "Prezzo totale dell'ordine" -#: order/models.py:95 order/serializers.py:71 +#: order/models.py:96 order/serializers.py:70 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:72 +#: order/models.py:99 order/serializers.py:71 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -4792,7 +4846,7 @@ msgstr "Descrizione dell'ordine (opzionale)" msgid "Select project code for this order" msgstr "Seleziona il codice del progetto per questo ordine" -#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 msgid "Link to external page" msgstr "Collegamento a un sito web esterno" @@ -4816,11 +4870,11 @@ msgstr "Punto di contatto per questo ordine" msgid "Company address for this order" msgstr "" -#: order/models.py:464 order/models.py:929 +#: order/models.py:464 order/models.py:927 msgid "Order reference" msgstr "Riferimento ordine" -#: order/models.py:472 order/models.py:953 +#: order/models.py:472 order/models.py:951 msgid "Purchase order status" msgstr "Stato ordine d'acquisto" @@ -4841,15 +4895,15 @@ msgstr "Codice di riferimento ordine fornitore" msgid "received by" msgstr "ricevuto da" -#: order/models.py:514 order/models.py:2094 +#: order/models.py:514 order/models.py:2058 msgid "Issue Date" msgstr "Data di emissione" -#: order/models.py:515 order/models.py:2095 +#: order/models.py:515 order/models.py:2059 msgid "Date order was issued" msgstr "Data di emissione ordine" -#: order/models.py:522 order/models.py:2102 +#: order/models.py:522 order/models.py:2066 msgid "Date order was completed" msgstr "Data ordine completato" @@ -4861,98 +4915,94 @@ msgstr "Il fornitore dell'articolo deve corrispondere al fornitore dell'ordine d msgid "Quantity must be a positive number" msgstr "La quantità deve essere un numero positivo" -#: order/models.py:941 +#: order/models.py:939 msgid "Company to which the items are being sold" msgstr "Azienda da cui sono stati ordinati gli elementi" -#: order/models.py:964 order/models.py:2087 +#: order/models.py:962 order/models.py:2051 msgid "Customer Reference " msgstr "Riferimento Cliente " -#: order/models.py:965 order/models.py:2088 +#: order/models.py:963 order/models.py:2052 msgid "Customer order reference code" msgstr "Codice di riferimento Ordine del Cliente" -#: order/models.py:969 order/models.py:1707 +#: order/models.py:967 order/models.py:1671 #: templates/js/translated/sales_order.js:879 #: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "Data di spedizione" -#: order/models.py:978 +#: order/models.py:976 msgid "shipped by" msgstr "spedito da" -#: order/models.py:1027 -#, fuzzy -#| msgid "Build output is already completed" +#: order/models.py:1025 msgid "Order is already complete" -msgstr "La produzione è stata completata" +msgstr "" -#: order/models.py:1030 -#, fuzzy -#| msgid "Order cannot be cancelled" +#: order/models.py:1028 msgid "Order is already cancelled" -msgstr "L'ordine non può essere cancellato" +msgstr "" -#: order/models.py:1034 +#: order/models.py:1032 msgid "Only an open order can be marked as complete" msgstr "Solo un ordine aperto può essere contrassegnato come completo" -#: order/models.py:1038 +#: order/models.py:1036 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:1043 +#: order/models.py:1041 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:1309 +#: order/models.py:1273 msgid "Item quantity" msgstr "Quantità Elementi" -#: order/models.py:1326 +#: order/models.py:1290 msgid "Line item reference" msgstr "Riferimento Linea Elemento" -#: order/models.py:1333 +#: order/models.py:1297 msgid "Line item notes" msgstr "Note linea elemento" -#: order/models.py:1345 +#: order/models.py:1309 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:1366 +#: order/models.py:1330 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1372 +#: order/models.py:1336 msgid "Context" msgstr "Contesto" -#: order/models.py:1373 +#: order/models.py:1337 msgid "Additional context for this line" msgstr "Contesto aggiuntivo per questa voce" -#: order/models.py:1383 +#: order/models.py:1347 msgid "Unit price" msgstr "Prezzo unitario" -#: order/models.py:1416 +#: order/models.py:1380 msgid "Supplier part must match supplier" msgstr "L'articolo del fornitore deve corrispondere al fornitore" -#: order/models.py:1423 +#: order/models.py:1387 msgid "deleted" msgstr "eliminato" -#: order/models.py:1451 +#: order/models.py:1415 msgid "Supplier part" msgstr "Articolo Fornitore" -#: order/models.py:1458 order/templates/order/order_base.html:196 -#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: order/models.py:1422 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1870 templates/js/translated/part.js:1902 #: templates/js/translated/purchase_order.js:1306 #: templates/js/translated/purchase_order.js:2169 #: templates/js/translated/return_order.js:763 @@ -4961,196 +5011,196 @@ msgstr "Articolo Fornitore" msgid "Received" msgstr "Ricevuto" -#: order/models.py:1459 +#: order/models.py:1423 msgid "Number of items received" msgstr "Numero di elementi ricevuti" -#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 +#: order/models.py:1431 stock/models.py:938 stock/serializers.py:556 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "Prezzo di Acquisto" -#: order/models.py:1468 +#: order/models.py:1432 msgid "Unit purchase price" msgstr "Prezzo di acquisto unitario" -#: order/models.py:1483 +#: order/models.py:1447 msgid "Where does the Purchaser want this item to be stored?" msgstr "Dove l'Acquirente desidera che questo elemento venga immagazzinato?" -#: order/models.py:1574 +#: order/models.py:1538 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:1579 +#: order/models.py:1543 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:1605 part/templates/part/part_pricing.html:107 +#: order/models.py:1569 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:1606 +#: order/models.py:1570 msgid "Unit sale price" msgstr "Prezzo unitario di vendita" -#: order/models.py:1615 order/status_codes.py:43 +#: order/models.py:1579 order/status_codes.py:43 #: templates/js/translated/sales_order.js:1559 #: templates/js/translated/sales_order.js:1680 #: templates/js/translated/sales_order.js:1993 msgid "Shipped" msgstr "Spedito" -#: order/models.py:1616 +#: order/models.py:1580 msgid "Shipped quantity" msgstr "Quantità spedita" -#: order/models.py:1708 +#: order/models.py:1672 msgid "Date of shipment" msgstr "Data di spedizione" -#: order/models.py:1714 templates/js/translated/sales_order.js:1072 +#: order/models.py:1678 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "" -#: order/models.py:1715 +#: order/models.py:1679 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1723 +#: order/models.py:1687 msgid "Checked By" msgstr "Verificato Da" -#: order/models.py:1724 +#: order/models.py:1688 msgid "User who checked this shipment" msgstr "Utente che ha controllato questa spedizione" -#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 -#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 +#: order/models.py:1695 order/models.py:1908 order/serializers.py:1342 +#: order/serializers.py:1452 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "Spedizione" -#: order/models.py:1732 +#: order/models.py:1696 msgid "Shipment number" msgstr "Numero di spedizione" -#: order/models.py:1740 +#: order/models.py:1704 msgid "Tracking Number" msgstr "Numero di monitoraggio" -#: order/models.py:1741 +#: order/models.py:1705 msgid "Shipment tracking information" msgstr "Informazioni di monitoraggio della spedizione" -#: order/models.py:1748 +#: order/models.py:1712 msgid "Invoice Number" msgstr "Numero Fattura" -#: order/models.py:1749 +#: order/models.py:1713 msgid "Reference number for associated invoice" msgstr "Numero di riferimento per la fattura associata" -#: order/models.py:1769 +#: order/models.py:1733 msgid "Shipment has already been sent" msgstr "La spedizione è già stata spedita" -#: order/models.py:1772 +#: order/models.py:1736 msgid "Shipment has no allocated stock items" msgstr "La spedizione non ha articoli di stock assegnati" -#: order/models.py:1890 order/models.py:1892 +#: order/models.py:1854 order/models.py:1856 msgid "Stock item has not been assigned" msgstr "L'elemento di magazzino non è stato assegnato" -#: order/models.py:1899 +#: order/models.py:1863 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:1902 +#: order/models.py:1866 msgid "Cannot allocate stock to a line without a part" msgstr "Impossibile allocare stock a una riga senza un articolo" -#: order/models.py:1905 +#: order/models.py:1869 msgid "Allocation quantity cannot exceed stock quantity" msgstr "La quantità di ripartizione non puo' superare la disponibilità della giacenza" -#: order/models.py:1924 order/serializers.py:1231 +#: order/models.py:1888 order/serializers.py:1219 msgid "Quantity must be 1 for serialized stock item" msgstr "La quantità deve essere 1 per l'elemento serializzato" -#: order/models.py:1927 +#: order/models.py:1891 msgid "Sales order does not match shipment" msgstr "L'ordine di vendita non corrisponde alla spedizione" -#: order/models.py:1928 plugin/base/barcodes/api.py:481 +#: order/models.py:1892 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:1936 +#: order/models.py:1900 msgid "Line" msgstr "Linea" -#: order/models.py:1945 +#: order/models.py:1909 msgid "Sales order shipment reference" msgstr "Riferimento della spedizione ordine di vendita" -#: order/models.py:1958 order/models.py:2275 +#: order/models.py:1922 order/models.py:2239 #: templates/js/translated/return_order.js:721 msgid "Item" msgstr "Elemento" -#: order/models.py:1959 +#: order/models.py:1923 msgid "Select stock item to allocate" msgstr "Seleziona elemento stock da allocare" -#: order/models.py:1968 +#: order/models.py:1932 msgid "Enter stock allocation quantity" msgstr "Inserisci la quantità assegnata alla giacenza" -#: order/models.py:2057 +#: order/models.py:2021 msgid "Return Order reference" msgstr "" -#: order/models.py:2069 +#: order/models.py:2033 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:2081 +#: order/models.py:2045 msgid "Return order status" msgstr "" -#: order/models.py:2260 +#: order/models.py:2224 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2276 +#: order/models.py:2240 msgid "Select item to return from customer" msgstr "Seleziona l'elemento da restituire dal cliente" -#: order/models.py:2282 +#: order/models.py:2246 msgid "Received Date" msgstr "Data di ricezione" -#: order/models.py:2283 +#: order/models.py:2247 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2294 templates/js/translated/return_order.js:732 +#: order/models.py:2258 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "Risultati" -#: order/models.py:2295 +#: order/models.py:2259 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2302 +#: order/models.py:2266 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/serializers.py:79 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_purchase_order_report.html:22 @@ -5159,163 +5209,163 @@ msgstr "" msgid "Line Items" msgstr "Elementi Riga" -#: order/serializers.py:84 +#: order/serializers.py:83 msgid "Completed Lines" msgstr "" -#: order/serializers.py:287 +#: order/serializers.py:286 msgid "Order cannot be cancelled" msgstr "L'ordine non può essere cancellato" -#: order/serializers.py:302 order/serializers.py:1247 +#: order/serializers.py:301 order/serializers.py:1235 msgid "Allow order to be closed with incomplete line items" msgstr "Consenti di chiudere l'ordine con elementi di riga incompleti" -#: order/serializers.py:312 order/serializers.py:1257 +#: order/serializers.py:311 order/serializers.py:1245 msgid "Order has incomplete line items" msgstr "L'ordine ha elementi di riga incompleti" -#: order/serializers.py:440 +#: order/serializers.py:439 msgid "Order is not open" msgstr "L'ordine non è aperto" -#: order/serializers.py:461 +#: order/serializers.py:460 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:463 +#: order/serializers.py:462 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:473 +#: order/serializers.py:472 msgid "Purchase price currency" msgstr "Valuta prezzo d'acquisto" -#: order/serializers.py:479 +#: order/serializers.py:478 msgid "Merge Items" msgstr "" -#: order/serializers.py:481 +#: order/serializers.py:480 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:499 +#: order/serializers.py:498 msgid "Supplier part must be specified" msgstr "L'articolo del fornitore deve essere specificato" -#: order/serializers.py:502 +#: order/serializers.py:501 msgid "Purchase order must be specified" msgstr "L'ordine di acquisto deve essere specificato" -#: order/serializers.py:510 +#: order/serializers.py:509 msgid "Supplier must match purchase order" msgstr "Il fornitore deve essere abbinato all'ordine d'acquisto" -#: order/serializers.py:511 +#: order/serializers.py:510 msgid "Purchase order must match supplier" msgstr "L'ordine di acquisto deve essere abbinato al fornitore" -#: order/serializers.py:550 order/serializers.py:1325 +#: order/serializers.py:549 order/serializers.py:1313 msgid "Line Item" msgstr "Elemento Riga" -#: order/serializers.py:556 +#: order/serializers.py:555 msgid "Line item does not match purchase order" msgstr "L'elemento di riga non corrisponde all'ordine di acquisto" -#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1657 msgid "Select destination location for received items" msgstr "Seleziona la posizione di destinazione per gli elementi ricevuti" -#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:581 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "Inserisci il codice univoco per gli articoli in arrivo" -#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:589 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "Inserisci i numeri di serie per gli articoli stock in arrivo" -#: order/serializers.py:601 templates/js/translated/barcode.js:52 +#: order/serializers.py:600 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Codice a Barre" -#: order/serializers.py:602 +#: order/serializers.py:601 msgid "Scanned barcode" msgstr "Codice a barre scansionato" -#: order/serializers.py:618 +#: order/serializers.py:617 msgid "Barcode is already in use" msgstr "Il codice a barre è già in uso" -#: order/serializers.py:642 +#: order/serializers.py:641 msgid "An integer quantity must be provided for trackable parts" msgstr "Deve essere fornita una quantità intera per gli articoli rintracciabili" -#: order/serializers.py:690 order/serializers.py:1696 +#: order/serializers.py:689 order/serializers.py:1673 msgid "Line items must be provided" msgstr "Gli elementi di linea devono essere forniti" -#: order/serializers.py:706 +#: order/serializers.py:705 msgid "Destination location must be specified" msgstr "La destinazione deve essere specificata" -#: order/serializers.py:717 +#: order/serializers.py:716 msgid "Supplied barcode values must be unique" msgstr "I valori dei codici a barre forniti devono essere univoci" -#: order/serializers.py:1074 +#: order/serializers.py:1062 msgid "Sale price currency" msgstr "Valuta prezzo di vendita" -#: order/serializers.py:1134 +#: order/serializers.py:1122 msgid "No shipment details provided" msgstr "Nessun dettaglio di spedizione fornito" -#: order/serializers.py:1195 order/serializers.py:1334 +#: order/serializers.py:1183 order/serializers.py:1322 msgid "Line item is not associated with this order" msgstr "L'elemento di riga non è associato a questo ordine" -#: order/serializers.py:1214 +#: order/serializers.py:1202 msgid "Quantity must be positive" msgstr "La quantità deve essere positiva" -#: order/serializers.py:1344 +#: order/serializers.py:1332 msgid "Enter serial numbers to allocate" msgstr "Inserisci i numeri di serie da assegnare" -#: order/serializers.py:1366 order/serializers.py:1472 +#: order/serializers.py:1354 order/serializers.py:1460 msgid "Shipment has already been shipped" msgstr "La spedizione è già stata spedita" -#: order/serializers.py:1369 order/serializers.py:1475 +#: order/serializers.py:1357 order/serializers.py:1463 msgid "Shipment is not associated with this order" msgstr "La spedizione non è associata con questo ordine" -#: order/serializers.py:1416 +#: order/serializers.py:1404 msgid "No match found for the following serial numbers" msgstr "Nessuna corrispondenza trovata per i seguenti numeri di serie" -#: order/serializers.py:1423 +#: order/serializers.py:1411 msgid "The following serial numbers are already allocated" msgstr "I seguenti numeri di serie sono già assegnati" -#: order/serializers.py:1650 +#: order/serializers.py:1627 msgid "Return order line item" msgstr "" -#: order/serializers.py:1656 +#: order/serializers.py:1633 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1659 +#: order/serializers.py:1636 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1688 +#: order/serializers.py:1665 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1766 +#: order/serializers.py:1743 msgid "Line price currency" msgstr "" @@ -5645,7 +5695,7 @@ msgstr "Riferimento Cliente" #: 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/part.js:1073 #: templates/js/translated/purchase_order.js:1752 #: templates/js/translated/return_order.js:380 #: templates/js/translated/sales_order.js:891 @@ -5741,34 +5791,34 @@ 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:406 part/models.py:3964 part/stocktake.py:218 -#: stock/admin.py:153 +#: part/admin.py:39 part/admin.py:398 part/models.py:3944 part/stocktake.py:219 +#: stock/admin.py:152 msgid "Part ID" msgstr "Codice Articolo" -#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 -#: stock/admin.py:157 +#: part/admin.py:41 part/admin.py:405 part/models.py:3945 part/stocktake.py:220 +#: stock/admin.py:156 msgid "Part Name" msgstr "Nome Articolo" -#: part/admin.py:45 part/stocktake.py:220 +#: part/admin.py:45 part/stocktake.py:221 msgid "Part Description" msgstr "Descrizione Articolo" -#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:940 part/templates/part/part_base.html:269 #: report/templates/report/inventree_stock_location_report.html:103 -#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/part.js:1227 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "IPN - Numero di riferimento interno" -#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 -#: report/models.py:161 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2346 +#: part/admin.py:50 part/models.py:949 part/templates/part/part_base.html:277 +#: report/models.py:162 templates/js/translated/part.js:1232 +#: templates/js/translated/part.js:2347 msgid "Revision" msgstr "Revisione" -#: part/admin.py:53 part/admin.py:319 part/models.py:929 +#: part/admin.py:53 part/admin.py:319 part/models.py:922 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "Parole Chiave" @@ -5777,11 +5827,11 @@ msgstr "Parole Chiave" msgid "Part Image" msgstr "" -#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:222 msgid "Category ID" msgstr "Id Categoria" -#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:223 msgid "Category Name" msgstr "Nome Categoria" @@ -5793,11 +5843,11 @@ msgstr "Posizione Predefinita ID" msgid "Default Supplier ID" msgstr "ID Fornitore Predefinito" -#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:908 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "Variante Di" -#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1036 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "Scorta Minima" @@ -5805,26 +5855,26 @@ msgstr "Scorta Minima" msgid "Used In" msgstr "Utilizzato In" -#: 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 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:235 +#: templates/js/translated/part.js:715 templates/js/translated/part.js:2153 msgid "Building" msgstr "In Costruzione" -#: part/admin.py:155 part/models.py:3123 part/models.py:3137 -#: templates/js/translated/part.js:969 +#: part/admin.py:155 part/models.py:3088 part/models.py:3102 +#: templates/js/translated/part.js:970 msgid "Minimum Cost" msgstr "Costo Minimo" -#: part/admin.py:158 part/models.py:3130 part/models.py:3144 -#: templates/js/translated/part.js:979 +#: part/admin.py:158 part/models.py:3095 part/models.py:3109 +#: templates/js/translated/part.js:980 msgid "Maximum Cost" msgstr "Costo Massimo" -#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 msgid "Parent ID" msgstr "ID principale" -#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 msgid "Parent Name" msgstr "Nome Principale" @@ -5833,141 +5883,149 @@ msgstr "Nome Principale" msgid "Category Path" msgstr "Percorso Categoria" -#: part/admin.py:325 part/models.py:393 part/serializers.py:117 -#: part/serializers.py:272 part/serializers.py:391 +#: part/admin.py:325 part/models.py:396 part/serializers.py:124 +#: part/serializers.py:267 part/serializers.py:386 #: 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:2803 templates/js/translated/search.js:130 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "Articoli" -#: part/admin.py:386 +#: part/admin.py:378 msgid "BOM Level" msgstr "Livello Distinta Base" -#: part/admin.py:389 +#: part/admin.py:381 msgid "BOM Item ID" msgstr "ID Elemento Distinta Base" -#: part/admin.py:399 +#: part/admin.py:391 msgid "Parent IPN" msgstr "IPN Principale" -#: part/admin.py:410 part/models.py:3966 +#: part/admin.py:402 part/models.py:3946 msgid "Part IPN" msgstr "IPN Articolo" -#: part/admin.py:423 part/serializers.py:1278 +#: part/admin.py:415 part/serializers.py:1274 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "Prezzo Minimo" -#: part/admin.py:428 part/serializers.py:1293 +#: part/admin.py:420 part/serializers.py:1289 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "Prezzo Massimo" -#: part/api.py:110 +#: part/api.py:104 msgid "Starred" msgstr "" -#: part/api.py:112 +#: part/api.py:106 msgid "Filter by starred categories" msgstr "" -#: part/api.py:129 stock/api.py:318 +#: part/api.py:123 stock/api.py:312 msgid "Depth" msgstr "" -#: part/api.py:129 +#: part/api.py:123 msgid "Filter by category depth" msgstr "" -#: part/api.py:147 stock/api.py:336 +#: part/api.py:141 stock/api.py:330 +msgid "Top Level" +msgstr "" + +#: part/api.py:143 +msgid "Filter by top-level categories" +msgstr "" + +#: part/api.py:156 stock/api.py:345 msgid "Cascade" msgstr "" -#: part/api.py:149 +#: part/api.py:158 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:169 +#: part/api.py:179 templates/js/translated/part.js:308 msgid "Parent" msgstr "" -#: part/api.py:171 +#: part/api.py:181 msgid "Filter by parent category" msgstr "" -#: part/api.py:204 +#: part/api.py:214 msgid "Exclude Tree" msgstr "" -#: part/api.py:206 +#: part/api.py:216 msgid "Exclude sub-categories under the specified category" msgstr "" -#: part/api.py:455 +#: part/api.py:449 msgid "Has Results" msgstr "" -#: part/api.py:622 +#: part/api.py:616 msgid "Incoming Purchase Order" msgstr "Ordine D'Acquisto In Arrivo" -#: part/api.py:640 +#: part/api.py:634 msgid "Outgoing Sales Order" msgstr "Ordine di Vendita in Uscita" -#: part/api.py:656 +#: part/api.py:650 msgid "Stock produced by Build Order" msgstr "Giacenza prodotta dall'Ordine di Costruzione" -#: part/api.py:740 +#: part/api.py:734 msgid "Stock required for Build Order" msgstr "Giacenza richiesta per l'Ordine di Produzione" -#: part/api.py:887 +#: part/api.py:881 msgid "Valid" msgstr "Valido" -#: part/api.py:888 +#: part/api.py:882 msgid "Validate entire Bill of Materials" msgstr "Convalida l'intera Fattura dei Materiali" -#: part/api.py:894 +#: part/api.py:888 msgid "This option must be selected" msgstr "Questa opzione deve essere selezionata" -#: part/api.py:1111 +#: part/api.py:1105 msgid "BOM Valid" msgstr "" -#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 -#: part/serializers.py:406 part/serializers.py:1134 -#: part/templates/part/part_base.html:260 stock/api.py:781 +#: part/api.py:1508 part/models.py:932 part/models.py:3374 part/models.py:3889 +#: part/serializers.py:401 part/serializers.py:1130 +#: part/templates/part/part_base.html:260 stock/api.py:791 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2376 +#: templates/js/translated/part.js:2377 msgid "Category" msgstr "Categoria" -#: part/api.py:1803 +#: part/api.py:1796 msgid "Uses" msgstr "" -#: part/bom.py:170 part/models.py:102 part/models.py:982 +#: part/bom.py:170 part/models.py:104 part/models.py:975 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Posizione Predefinita" -#: part/bom.py:171 part/serializers.py:837 +#: part/bom.py:171 part/serializers.py:833 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "Giacenze Totali" @@ -5976,1054 +6034,1066 @@ msgstr "Giacenze Totali" msgid "Input quantity for price calculation" msgstr "Digita la quantità per il calcolo del prezzo" -#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 +#: part/models.py:85 part/models.py:3890 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Categoria Articoli" -#: part/models.py:84 part/templates/part/category.html:136 +#: part/models.py:86 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "Categorie Articolo" -#: part/models.py:103 +#: part/models.py:105 msgid "Default location for parts in this category" msgstr "Posizione predefinita per gli articoli di questa categoria" -#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 +#: part/models.py:110 stock/models.py:174 templates/js/translated/part.js:2810 #: templates/js/translated/stock.js:2772 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "Strutturale" -#: part/models.py:110 +#: part/models.py:112 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:119 +#: part/models.py:121 msgid "Default keywords" msgstr "Keywords predefinite" -#: part/models.py:120 +#: part/models.py:122 msgid "Default keywords for parts in this category" msgstr "Parole chiave predefinite per gli articoli in questa categoria" -#: part/models.py:126 stock/models.py:85 stock/models.py:156 +#: part/models.py:128 stock/models.py:86 stock/models.py:157 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "Icona" -#: part/models.py:127 stock/models.py:157 +#: part/models.py:129 stock/models.py:158 msgid "Icon (optional)" msgstr "Icona (facoltativa)" -#: part/models.py:149 +#: part/models.py:151 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:482 +#: part/models.py:485 msgid "Cannot delete this part as it is still active" msgstr "" -#: part/models.py:489 +#: part/models.py:490 msgid "Cannot delete this part as it is used in an assembly" msgstr "" -#: part/models.py:527 +#: part/models.py:528 msgid "Invalid choice for parent part" msgstr "Scelta non valida per l'articolo principale" -#: part/models.py:575 part/models.py:582 +#: part/models.py:576 part/models.py:583 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:594 +#: part/models.py:595 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:659 +#: part/models.py:658 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:739 +#: part/models.py:736 msgid "Stock item with this serial number already exists" msgstr "Esiste già un elemento stock con questo numero seriale" -#: part/models.py:844 +#: part/models.py:837 msgid "Duplicate IPN not allowed in part settings" msgstr "Non è consentito duplicare IPN nelle impostazioni dell'articolo" -#: part/models.py:854 +#: part/models.py:847 msgid "Part with this Name, IPN and Revision already exists." msgstr "Un articolo con questo Nome, IPN e Revisione esiste già." -#: part/models.py:869 +#: part/models.py:862 msgid "Parts cannot be assigned to structural part categories!" msgstr "Gli articoli non possono essere assegnati a categorie articolo principali!" -#: part/models.py:898 part/models.py:3965 +#: part/models.py:891 part/models.py:3945 msgid "Part name" msgstr "Nome articolo" -#: part/models.py:903 +#: part/models.py:896 msgid "Is Template" msgstr "È Template" -#: part/models.py:904 +#: part/models.py:897 msgid "Is this part a template part?" msgstr "Quest'articolo è un articolo di template?" -#: part/models.py:914 +#: part/models.py:907 msgid "Is this part a variant of another part?" msgstr "Questa parte è una variante di un altro articolo?" -#: part/models.py:922 +#: part/models.py:915 msgid "Part description (optional)" msgstr "" -#: part/models.py:930 +#: part/models.py:923 msgid "Part keywords to improve visibility in search results" msgstr "Parole chiave per migliorare la visibilità nei risultati di ricerca" -#: part/models.py:940 +#: part/models.py:933 msgid "Part category" msgstr "Categoria articolo" -#: part/models.py:948 +#: part/models.py:941 msgid "Internal Part Number" msgstr "Numero Dell'articolo Interno" -#: part/models.py:955 +#: part/models.py:948 msgid "Part revision or version number" msgstr "Numero di revisione o di versione" -#: part/models.py:980 +#: part/models.py:973 msgid "Where is this item normally stored?" msgstr "Dove viene normalmente immagazzinato questo articolo?" -#: part/models.py:1026 part/templates/part/part_base.html:376 +#: part/models.py:1019 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "Fornitore predefinito" -#: part/models.py:1027 +#: part/models.py:1020 msgid "Default supplier part" msgstr "Articolo fornitore predefinito" -#: part/models.py:1034 +#: part/models.py:1027 msgid "Default Expiry" msgstr "Scadenza Predefinita" -#: part/models.py:1035 +#: part/models.py:1028 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:1044 +#: part/models.py:1037 msgid "Minimum allowed stock level" msgstr "Livello minimo di giacenza consentito" -#: part/models.py:1053 +#: part/models.py:1046 msgid "Units of measure for this part" msgstr "Unita di misura per questo articolo" -#: part/models.py:1060 +#: part/models.py:1053 msgid "Can this part be built from other parts?" msgstr "Questo articolo può essere costruito da altri articoli?" -#: part/models.py:1066 +#: part/models.py:1059 msgid "Can this part be used to build other parts?" msgstr "Questo articolo può essere utilizzato per costruire altri articoli?" -#: part/models.py:1072 +#: part/models.py:1065 msgid "Does this part have tracking for unique items?" msgstr "Questo articolo ha il tracciamento per gli elementi unici?" -#: part/models.py:1078 +#: part/models.py:1071 msgid "Can this part be purchased from external suppliers?" msgstr "Quest'articolo può essere acquistato da fornitori esterni?" -#: part/models.py:1084 +#: part/models.py:1077 msgid "Can this part be sold to customers?" msgstr "Questo pezzo può essere venduto ai clienti?" -#: part/models.py:1088 +#: part/models.py:1081 msgid "Is this part active?" msgstr "Quest'articolo è attivo?" -#: part/models.py:1094 +#: part/models.py:1087 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:1100 +#: part/models.py:1093 msgid "BOM checksum" msgstr "Somma di controllo Distinta Base" -#: part/models.py:1101 +#: part/models.py:1094 msgid "Stored BOM checksum" msgstr "Somma di controllo immagazzinata Distinta Base" -#: part/models.py:1109 +#: part/models.py:1102 msgid "BOM checked by" msgstr "Distinta Base controllata da" -#: part/models.py:1114 +#: part/models.py:1107 msgid "BOM checked date" msgstr "Data di verifica Distinta Base" -#: part/models.py:1130 +#: part/models.py:1123 msgid "Creation User" msgstr "Creazione Utente" -#: part/models.py:1140 +#: part/models.py:1133 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1145 part/templates/part/part_base.html:339 +#: part/models.py:1138 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2470 +#: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "Ultimo Inventario" -#: part/models.py:2018 +#: part/models.py:2011 msgid "Sell multiple" msgstr "Vendita multipla" -#: part/models.py:3037 +#: part/models.py:3002 msgid "Currency used to cache pricing calculations" msgstr "Valuta utilizzata per calcolare i prezzi" -#: part/models.py:3053 +#: part/models.py:3018 msgid "Minimum BOM Cost" msgstr "Costo Minimo Distinta Base" -#: part/models.py:3054 +#: part/models.py:3019 msgid "Minimum cost of component parts" msgstr "Costo minimo dei componenti dell'articolo" -#: part/models.py:3060 +#: part/models.py:3025 msgid "Maximum BOM Cost" msgstr "Costo Massimo Distinta Base" -#: part/models.py:3061 +#: part/models.py:3026 msgid "Maximum cost of component parts" msgstr "Costo massimo dei componenti dell'articolo" -#: part/models.py:3067 +#: part/models.py:3032 msgid "Minimum Purchase Cost" msgstr "Importo Acquisto Minimo" -#: part/models.py:3068 +#: part/models.py:3033 msgid "Minimum historical purchase cost" msgstr "Costo minimo di acquisto storico" -#: part/models.py:3074 +#: part/models.py:3039 msgid "Maximum Purchase Cost" msgstr "Importo massimo acquisto" -#: part/models.py:3075 +#: part/models.py:3040 msgid "Maximum historical purchase cost" msgstr "Costo massimo di acquisto storico" -#: part/models.py:3081 +#: part/models.py:3046 msgid "Minimum Internal Price" msgstr "Prezzo Interno Minimo" -#: part/models.py:3082 +#: part/models.py:3047 msgid "Minimum cost based on internal price breaks" msgstr "Costo minimo basato su interruzioni di prezzo interne" -#: part/models.py:3088 +#: part/models.py:3053 msgid "Maximum Internal Price" msgstr "Prezzo Interno Massimo" -#: part/models.py:3089 +#: part/models.py:3054 msgid "Maximum cost based on internal price breaks" msgstr "Costo massimo basato su interruzioni di prezzo interne" -#: part/models.py:3095 +#: part/models.py:3060 msgid "Minimum Supplier Price" msgstr "Prezzo Minimo Fornitore" -#: part/models.py:3096 +#: part/models.py:3061 msgid "Minimum price of part from external suppliers" msgstr "Prezzo minimo articolo da fornitori esterni" -#: part/models.py:3102 +#: part/models.py:3067 msgid "Maximum Supplier Price" msgstr "Prezzo Massimo Fornitore" -#: part/models.py:3103 +#: part/models.py:3068 msgid "Maximum price of part from external suppliers" msgstr "Prezzo massimo dell'articolo proveniente da fornitori esterni" -#: part/models.py:3109 +#: part/models.py:3074 msgid "Minimum Variant Cost" msgstr "Variazione di costo minimo" -#: part/models.py:3110 +#: part/models.py:3075 msgid "Calculated minimum cost of variant parts" msgstr "Costo minimo calcolato di variazione dell'articolo" -#: part/models.py:3116 +#: part/models.py:3081 msgid "Maximum Variant Cost" msgstr "Massima variazione di costo" -#: part/models.py:3117 +#: part/models.py:3082 msgid "Calculated maximum cost of variant parts" msgstr "Costo massimo calcolato di variazione dell'articolo" -#: part/models.py:3124 +#: part/models.py:3089 msgid "Override minimum cost" msgstr "" -#: part/models.py:3131 +#: part/models.py:3096 msgid "Override maximum cost" msgstr "" -#: part/models.py:3138 +#: part/models.py:3103 msgid "Calculated overall minimum cost" msgstr "Costo minimo totale calcolato" -#: part/models.py:3145 +#: part/models.py:3110 msgid "Calculated overall maximum cost" msgstr "Costo massimo totale calcolato" -#: part/models.py:3151 +#: part/models.py:3116 msgid "Minimum Sale Price" msgstr "Prezzo Di Vendita Minimo" -#: part/models.py:3152 +#: part/models.py:3117 msgid "Minimum sale price based on price breaks" msgstr "Prezzo minimo di vendita basato sulle interruzioni di prezzo" -#: part/models.py:3158 +#: part/models.py:3123 msgid "Maximum Sale Price" msgstr "Prezzo Di Vendita Massimo" -#: part/models.py:3159 +#: part/models.py:3124 msgid "Maximum sale price based on price breaks" msgstr "Prezzo massimo di vendita basato sulle interruzioni di prezzo" -#: part/models.py:3165 +#: part/models.py:3130 msgid "Minimum Sale Cost" msgstr "Costo Di Vendita Minimo" -#: part/models.py:3166 +#: part/models.py:3131 msgid "Minimum historical sale price" msgstr "Prezzo storico minimo di vendita" -#: part/models.py:3172 +#: part/models.py:3137 msgid "Maximum Sale Cost" msgstr "Costo Di Vendita Minimo" -#: part/models.py:3173 +#: part/models.py:3138 msgid "Maximum historical sale price" msgstr "Prezzo storico massimo di vendita" -#: part/models.py:3192 +#: part/models.py:3157 msgid "Part for stocktake" msgstr "Articolo per l'inventario" -#: part/models.py:3197 +#: part/models.py:3162 msgid "Item Count" msgstr "Contatore Elemento" -#: part/models.py:3198 +#: part/models.py:3163 msgid "Number of individual stock entries at time of stocktake" msgstr "Numero di scorte individuali al momento dell'inventario" -#: part/models.py:3206 +#: part/models.py:3171 msgid "Total available stock at time of stocktake" msgstr "Totale delle scorte disponibili al momento dell'inventario" -#: part/models.py:3210 part/models.py:3293 +#: part/models.py:3175 part/models.py:3258 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report.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/part.js:1086 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "Data" -#: part/models.py:3211 +#: part/models.py:3176 msgid "Date stocktake was performed" msgstr "Data in cui è stato effettuato l'inventario" -#: part/models.py:3219 +#: part/models.py:3184 msgid "Additional notes" msgstr "Note aggiuntive" -#: part/models.py:3229 +#: part/models.py:3194 msgid "User who performed this stocktake" msgstr "Utente che ha eseguito questo inventario" -#: part/models.py:3235 +#: part/models.py:3200 msgid "Minimum Stock Cost" msgstr "Costo Minimo Scorta" -#: part/models.py:3236 +#: part/models.py:3201 msgid "Estimated minimum cost of stock on hand" msgstr "Costo minimo stimato di magazzino a disposizione" -#: part/models.py:3242 +#: part/models.py:3207 msgid "Maximum Stock Cost" msgstr "Costo Massimo Scorte" -#: part/models.py:3243 +#: part/models.py:3208 msgid "Estimated maximum cost of stock on hand" msgstr "Costo massimo stimato di magazzino a disposizione" -#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3264 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3300 +#: part/models.py:3265 msgid "Stocktake report file (generated internally)" msgstr "File Report Inventario (generato internamente)" -#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3270 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "Conteggio Articolo" -#: part/models.py:3306 +#: part/models.py:3271 msgid "Number of parts covered by stocktake" msgstr "Numero di articoli oggetto d'inventario" -#: part/models.py:3316 +#: part/models.py:3281 msgid "User who requested this stocktake report" msgstr "Utente che ha richiesto questo report inventario" -#: part/models.py:3478 +#: part/models.py:3423 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3489 +#: part/models.py:3444 part/models.py:3608 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3455 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:3500 +#: part/models.py:3466 msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3517 templates/js/translated/part.js:2878 +#: part/models.py:3483 templates/js/translated/part.js:2880 msgid "Test Name" msgstr "Nome Test" -#: part/models.py:3518 +#: part/models.py:3484 msgid "Enter a name for the test" msgstr "Inserisci un nome per la prova" -#: part/models.py:3524 +#: part/models.py:3490 msgid "Test Key" msgstr "" -#: part/models.py:3525 +#: part/models.py:3491 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3532 +#: part/models.py:3498 msgid "Test Description" msgstr "Descrizione Di Prova" -#: part/models.py:3533 +#: part/models.py:3499 msgid "Enter description for this test" msgstr "Inserisci descrizione per questa prova" -#: part/models.py:3537 report/models.py:208 -#: templates/js/translated/part.js:2899 +#: part/models.py:3503 report/models.py:209 +#: templates/js/translated/part.js:2901 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "Abilitato" -#: part/models.py:3537 +#: part/models.py:3503 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3542 templates/js/translated/part.js:2907 +#: part/models.py:3508 templates/js/translated/part.js:2909 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Richiesto" -#: part/models.py:3543 +#: part/models.py:3509 msgid "Is this test required to pass?" msgstr "Questa prova è necessaria per passare?" -#: part/models.py:3548 templates/js/translated/part.js:2915 +#: part/models.py:3514 templates/js/translated/part.js:2917 msgid "Requires Value" msgstr "Valore richiesto" -#: part/models.py:3549 +#: part/models.py:3515 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:3554 templates/js/translated/part.js:2922 +#: part/models.py:3520 templates/js/translated/part.js:2924 msgid "Requires Attachment" msgstr "Allegato Richiesto" -#: part/models.py:3556 +#: part/models.py:3522 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:3603 +#: part/models.py:3528 part/models.py:3667 templates/js/translated/part.js:1637 +msgid "Choices" +msgstr "" + +#: part/models.py:3529 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3583 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3608 +#: part/models.py:3588 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3628 -msgid "Choices must be unique" -msgstr "" - -#: part/models.py:3645 +#: part/models.py:3625 msgid "Parameter template name must be unique" msgstr "Il nome del modello del parametro deve essere univoco" -#: part/models.py:3660 +#: part/models.py:3640 msgid "Parameter Name" msgstr "Nome Parametro" -#: part/models.py:3667 +#: part/models.py:3647 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3675 +#: part/models.py:3655 msgid "Parameter description" msgstr "Descrizione del parametro" -#: part/models.py:3681 templates/js/translated/part.js:1627 +#: part/models.py:3661 templates/js/translated/part.js:1628 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "" -#: part/models.py:3682 +#: part/models.py:3662 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3687 templates/js/translated/part.js:1636 -msgid "Choices" -msgstr "" - -#: part/models.py:3688 +#: part/models.py:3668 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3765 +#: part/models.py:3745 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3808 +#: part/models.py:3788 msgid "Parent Part" msgstr "Articolo principale" -#: part/models.py:3816 part/models.py:3917 part/models.py:3918 +#: part/models.py:3796 part/models.py:3897 part/models.py:3898 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "Modello Parametro" -#: part/models.py:3821 +#: part/models.py:3801 msgid "Data" msgstr "Dati" -#: part/models.py:3822 +#: part/models.py:3802 msgid "Parameter Value" msgstr "Valore del Parametro" -#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3904 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "Valore Predefinito" -#: part/models.py:3925 +#: part/models.py:3905 msgid "Default Parameter Value" msgstr "Valore Parametro Predefinito" -#: part/models.py:3963 +#: part/models.py:3943 msgid "Part ID or part name" msgstr "ID articolo o nome articolo" -#: part/models.py:3964 +#: part/models.py:3944 msgid "Unique part ID value" msgstr "Valore ID articolo univoco" -#: part/models.py:3966 +#: part/models.py:3946 msgid "Part IPN value" msgstr "Valore IPN articolo" -#: part/models.py:3967 +#: part/models.py:3947 msgid "Level" msgstr "Livello" -#: part/models.py:3967 +#: part/models.py:3947 msgid "BOM level" msgstr "Livello distinta base" -#: part/models.py:4057 +#: part/models.py:4037 msgid "Select parent part" msgstr "Seleziona articolo principale" -#: part/models.py:4067 +#: part/models.py:4047 msgid "Sub part" msgstr "Articolo subordinato" -#: part/models.py:4068 +#: part/models.py:4048 msgid "Select part to be used in BOM" msgstr "Seleziona l'articolo da utilizzare nella Distinta Base" -#: part/models.py:4079 +#: part/models.py:4059 msgid "BOM quantity for this BOM item" msgstr "Quantità Distinta Base per questo elemento Distinta Base" -#: part/models.py:4085 +#: part/models.py:4065 msgid "This BOM item is optional" msgstr "Questo elemento della Distinta Base è opzionale" -#: part/models.py:4091 +#: part/models.py:4071 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:4098 part/templates/part/upload_bom.html:55 +#: part/models.py:4078 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Eccedenza" -#: part/models.py:4099 +#: part/models.py:4079 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "Quantità stimata scarti di produzione (assoluta o percentuale)" -#: part/models.py:4106 +#: part/models.py:4086 msgid "BOM item reference" msgstr "Riferimento Elemento Distinta Base" -#: part/models.py:4114 +#: part/models.py:4094 msgid "BOM item notes" msgstr "Note Elemento Distinta Base" -#: part/models.py:4120 +#: part/models.py:4100 msgid "Checksum" msgstr "Codice di controllo" -#: part/models.py:4121 +#: part/models.py:4101 msgid "BOM line checksum" msgstr "Codice di controllo Distinta Base" -#: part/models.py:4126 templates/js/translated/table_filters.js:174 +#: part/models.py:4106 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "Convalidato" -#: part/models.py:4127 +#: part/models.py:4107 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4132 part/templates/part/upload_bom.html:57 +#: part/models.py:4112 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:4133 +#: part/models.py:4113 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:4138 part/templates/part/upload_bom.html:56 +#: part/models.py:4118 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "Consenti Le Varianti" -#: part/models.py:4139 +#: part/models.py:4119 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:4224 stock/models.py:664 +#: part/models.py:4204 stock/models.py:662 msgid "Quantity must be integer value for trackable parts" msgstr "La quantità deve essere un valore intero per gli articoli rintracciabili" -#: part/models.py:4234 part/models.py:4236 +#: part/models.py:4214 part/models.py:4216 msgid "Sub part must be specified" msgstr "L'articolo subordinato deve essere specificato" -#: part/models.py:4376 +#: part/models.py:4354 msgid "BOM Item Substitute" msgstr "Elemento Distinta Base Sostituito" -#: part/models.py:4397 +#: part/models.py:4375 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:4410 +#: part/models.py:4388 msgid "Parent BOM item" msgstr "Elemento principale Distinta Base" -#: part/models.py:4418 +#: part/models.py:4396 msgid "Substitute part" msgstr "Sostituisci l'Articolo" -#: part/models.py:4434 +#: part/models.py:4412 msgid "Part 1" msgstr "Articolo 1" -#: part/models.py:4442 +#: part/models.py:4420 msgid "Part 2" msgstr "Articolo 2" -#: part/models.py:4443 +#: part/models.py:4421 msgid "Select Related Part" msgstr "Seleziona Prodotto Relativo" -#: part/models.py:4462 +#: part/models.py:4440 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:4467 +#: part/models.py:4445 msgid "Duplicate relationship already exists" msgstr "La relazione duplicata esiste già" -#: part/serializers.py:119 part/serializers.py:141 +#: part/serializers.py:118 +msgid "Parent Category" +msgstr "" + +#: part/serializers.py:119 templates/js/translated/part.js:309 +msgid "Parent part category" +msgstr "" + +#: part/serializers.py:126 part/serializers.py:148 #: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "Sottocategorie" -#: part/serializers.py:185 +#: part/serializers.py:180 msgid "Results" msgstr "" -#: part/serializers.py:186 +#: part/serializers.py:181 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 +#: part/serializers.py:205 part/serializers.py:223 stock/serializers.py:562 msgid "Purchase currency of this stock item" msgstr "Valuta di acquisto di questo articolo in stock" -#: part/serializers.py:273 +#: part/serializers.py:268 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:397 +#: part/serializers.py:392 msgid "No parts selected" msgstr "" -#: part/serializers.py:407 +#: part/serializers.py:402 msgid "Select category" msgstr "" -#: part/serializers.py:442 +#: part/serializers.py:437 msgid "Original Part" msgstr "Articolo Originale" -#: part/serializers.py:443 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "Seleziona l'articolo originale da duplicare" -#: part/serializers.py:448 +#: part/serializers.py:443 msgid "Copy Image" msgstr "Copia immagine" -#: part/serializers.py:449 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "Copia immagine dall'articolo originale" -#: part/serializers.py:455 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "Copia Distinta Base" -#: part/serializers.py:456 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "Copia fattura dei materiali dall'articolo originale" -#: part/serializers.py:462 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "Copia parametri" -#: part/serializers.py:463 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "Copia i dati dei parametri dall'articolo originale" -#: part/serializers.py:469 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:488 +#: part/serializers.py:483 msgid "Initial Stock Quantity" msgstr "Quantità iniziale" -#: part/serializers.py:490 +#: part/serializers.py:485 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "Specificare la quantità iniziale disponibile per questo Articolo. Se la quantità è zero, non viene aggiunta alcuna quantità." -#: part/serializers.py:497 +#: part/serializers.py:492 msgid "Initial Stock Location" msgstr "Ubicazione Iniziale Magazzino" -#: part/serializers.py:498 +#: part/serializers.py:493 msgid "Specify initial stock location for this Part" msgstr "Specificare l'ubicazione iniziale del magazzino per questo Articolo" -#: part/serializers.py:515 +#: part/serializers.py:510 msgid "Select supplier (or leave blank to skip)" msgstr "Seleziona il fornitore (o lascia vuoto per saltare)" -#: part/serializers.py:531 +#: part/serializers.py:526 msgid "Select manufacturer (or leave blank to skip)" msgstr "Seleziona il produttore (o lascia vuoto per saltare)" -#: part/serializers.py:541 +#: part/serializers.py:536 msgid "Manufacturer part number" msgstr "Codice articolo Produttore" -#: part/serializers.py:548 +#: part/serializers.py:543 msgid "Selected company is not a valid supplier" msgstr "L'azienda selezionata non è un fornitore valido" -#: part/serializers.py:557 +#: part/serializers.py:552 msgid "Selected company is not a valid manufacturer" msgstr "L'azienda selezionata non è un produttore valido" -#: part/serializers.py:568 +#: part/serializers.py:563 msgid "Manufacturer part matching this MPN already exists" msgstr "L'articolo del produttore che corrisponde a questo MPN esiste già" -#: part/serializers.py:575 +#: part/serializers.py:570 msgid "Supplier part matching this SKU already exists" msgstr "L'articolo del fornitore che corrisponde a questo SKU esiste già" -#: part/serializers.py:838 +#: part/serializers.py:834 msgid "External Stock" msgstr "" -#: part/serializers.py:840 +#: part/serializers.py:836 msgid "Unallocated Stock" msgstr "" -#: part/serializers.py:843 +#: part/serializers.py:839 msgid "Variant Stock" msgstr "" -#: part/serializers.py:873 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:471 +#: part/serializers.py:869 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:472 msgid "Duplicate Part" msgstr "Duplica articolo" -#: part/serializers.py:874 +#: part/serializers.py:870 msgid "Copy initial data from another Part" msgstr "Copia i dati iniziali da un altro Articolo" -#: part/serializers.py:880 templates/js/translated/part.js:102 +#: part/serializers.py:876 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "Stock iniziale" -#: part/serializers.py:881 +#: part/serializers.py:877 msgid "Create Part with initial stock quantity" msgstr "Crea Articolo con quantità di scorta iniziale" -#: part/serializers.py:887 +#: part/serializers.py:883 msgid "Supplier Information" msgstr "Informazioni Fornitore" -#: part/serializers.py:888 +#: part/serializers.py:884 msgid "Add initial supplier information for this part" msgstr "Aggiungi le informazioni iniziali del fornitore per questo articolo" -#: part/serializers.py:896 +#: part/serializers.py:892 msgid "Copy Category Parameters" msgstr "Copia Parametri Categoria" -#: part/serializers.py:897 +#: part/serializers.py:893 msgid "Copy parameter templates from selected part category" msgstr "Copia i parametri dai modelli della categoria articolo selezionata" -#: part/serializers.py:902 +#: part/serializers.py:898 msgid "Existing Image" msgstr "" -#: part/serializers.py:903 +#: part/serializers.py:899 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:920 +#: part/serializers.py:916 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1126 +#: part/serializers.py:1122 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:1136 +#: part/serializers.py:1132 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:1146 +#: part/serializers.py:1142 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:1152 +#: part/serializers.py:1148 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1153 +#: part/serializers.py:1149 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1158 +#: part/serializers.py:1154 msgid "Generate Report" msgstr "Genera Report" -#: part/serializers.py:1159 +#: part/serializers.py:1155 msgid "Generate report file containing calculated stocktake data" msgstr "Genera file di report contenente dati di inventario calcolati" -#: part/serializers.py:1164 +#: part/serializers.py:1160 msgid "Update Parts" msgstr "Aggiorna Articoli" -#: part/serializers.py:1165 +#: part/serializers.py:1161 msgid "Update specified parts with calculated stocktake data" msgstr "Aggiorna gli articoli specificati con i dati calcolati di inventario" -#: part/serializers.py:1173 +#: part/serializers.py:1169 msgid "Stocktake functionality is not enabled" msgstr "La funzione Inventario non è abilitata" -#: part/serializers.py:1279 +#: part/serializers.py:1275 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1286 +#: part/serializers.py:1282 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1294 +#: part/serializers.py:1290 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1301 +#: part/serializers.py:1297 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1330 +#: part/serializers.py:1326 msgid "Update" msgstr "Aggiorna" -#: part/serializers.py:1331 +#: part/serializers.py:1327 msgid "Update pricing for this part" msgstr "Aggiorna i prezzi per questo articolo" -#: part/serializers.py:1354 +#: part/serializers.py:1350 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1361 +#: part/serializers.py:1357 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1364 +#: part/serializers.py:1360 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1727 msgid "Select part to copy BOM from" msgstr "Seleziona l'articolo da cui copiare la distinta base" -#: part/serializers.py:1739 +#: part/serializers.py:1735 msgid "Remove Existing Data" msgstr "Rimuovi Dati Esistenti" -#: part/serializers.py:1740 +#: part/serializers.py:1736 msgid "Remove existing BOM items before copying" msgstr "Rimuovi elementi distinta base esistenti prima di copiare" -#: part/serializers.py:1745 +#: part/serializers.py:1741 msgid "Include Inherited" msgstr "Includi Ereditato" -#: part/serializers.py:1746 +#: part/serializers.py:1742 msgid "Include BOM items which are inherited from templated parts" msgstr "Includi gli elementi Distinta Base ereditati da prodotti template" -#: part/serializers.py:1751 +#: part/serializers.py:1747 msgid "Skip Invalid Rows" msgstr "Salta Righe Non Valide" -#: part/serializers.py:1752 +#: part/serializers.py:1748 msgid "Enable this option to skip invalid rows" msgstr "Abilita questa opzione per saltare le righe non valide" -#: part/serializers.py:1757 +#: part/serializers.py:1753 msgid "Copy Substitute Parts" msgstr "Copia Articoli sostitutivi" -#: part/serializers.py:1758 +#: part/serializers.py:1754 msgid "Copy substitute parts when duplicate BOM items" msgstr "Copia articoli sostitutivi quando duplichi gli elementi distinta base" -#: part/serializers.py:1792 +#: part/serializers.py:1788 msgid "Clear Existing BOM" msgstr "Cancella Distinta Base esistente" -#: part/serializers.py:1793 +#: part/serializers.py:1789 msgid "Delete existing BOM items before uploading" msgstr "Rimuovi elementi distinta base esistenti prima del caricamento" -#: part/serializers.py:1823 +#: part/serializers.py:1819 msgid "No part column specified" msgstr "Nessuna colonna articolo specificata" -#: part/serializers.py:1867 +#: part/serializers.py:1863 msgid "Multiple matching parts found" msgstr "Trovati più articoli corrispondenti" -#: part/serializers.py:1870 +#: part/serializers.py:1866 msgid "No matching part found" msgstr "Nessun articolo corrispondente trovato" -#: part/serializers.py:1873 +#: part/serializers.py:1869 msgid "Part is not designated as a component" msgstr "L'articolo non è indicato come componente" -#: part/serializers.py:1882 +#: part/serializers.py:1878 msgid "Quantity not provided" msgstr "Quantità non fornita" -#: part/serializers.py:1890 +#: part/serializers.py:1886 msgid "Invalid quantity" msgstr "Quantità non valida" -#: part/serializers.py:1911 +#: part/serializers.py:1907 msgid "At least one BOM item is required" msgstr "Almeno un elemento della distinta base è richiesto" -#: part/stocktake.py:224 templates/js/translated/part.js:1066 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: part/stocktake.py:225 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "Quantità Totale" -#: part/stocktake.py:225 +#: part/stocktake.py:226 msgid "Total Cost Min" msgstr "Costo Minimo Totale" -#: part/stocktake.py:226 +#: part/stocktake.py:227 msgid "Total Cost Max" msgstr "Costo Massimo Totale" -#: part/stocktake.py:284 +#: part/stocktake.py:285 msgid "Stocktake Report Available" msgstr "Report Inventario Disponibile" -#: part/stocktake.py:285 +#: part/stocktake.py:286 msgid "A new stocktake report is available for download" msgstr "Un nuovo report di inventario è disponibile per il download" @@ -7157,7 +7227,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:251 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" @@ -7257,15 +7327,15 @@ msgstr "Fornitori articoli" msgid "Part Manufacturers" msgstr "Componenti Produttori" -#: part/templates/part/detail.html:655 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:663 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:748 +#: part/templates/part/detail.html:750 msgid "Add Test Result Template" msgstr "" @@ -7346,7 +7416,7 @@ msgstr "Conta articoli magazzino" msgid "Transfer part stock" msgstr "Trasferisci giacenza" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" msgstr "Azioni articolo" @@ -7418,7 +7488,7 @@ msgid "Minimum stock level" msgstr "Livello minimo di giacenza" #: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 -#: templates/js/translated/part.js:1264 templates/js/translated/part.js:2443 +#: templates/js/translated/part.js:1265 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7511,8 +7581,8 @@ msgstr "Varianti" #: 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:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/part.js:1243 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 #: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "Magazzino" @@ -7555,7 +7625,7 @@ msgstr "" msgid "Edit" msgstr "Modifica" -#: part/templates/part/prices.html:28 stock/admin.py:247 +#: part/templates/part/prices.html:28 stock/admin.py:251 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 @@ -7632,8 +7702,8 @@ msgstr "" #: part/templates/part/stock_count.html:7 #: templates/js/translated/model_renderers.js:227 -#: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 -#: templates/js/translated/part.js:2142 +#: templates/js/translated/part.js:705 templates/js/translated/part.js:2141 +#: templates/js/translated/part.js:2143 msgid "No Stock" msgstr "Nessuna giacenza" @@ -8005,7 +8075,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:308 msgid "Landscape" msgstr "" @@ -8118,62 +8188,62 @@ msgstr "" msgid "Uninstalled plugin successfully" msgstr "" -#: plugin/models.py:35 +#: plugin/models.py:36 msgid "Plugin Configuration" msgstr "Configurazione Plugin" -#: plugin/models.py:36 +#: plugin/models.py:37 msgid "Plugin Configurations" msgstr "Configurazioni Plugin" -#: plugin/models.py:42 users/models.py:100 +#: plugin/models.py:43 users/models.py:100 msgid "Key" msgstr "" -#: plugin/models.py:43 +#: plugin/models.py:44 msgid "Key of plugin" msgstr "Key dei plugin" -#: plugin/models.py:51 +#: plugin/models.py:52 msgid "PluginName of the plugin" msgstr "PluginName del plugin" -#: plugin/models.py:58 plugin/serializers.py:90 +#: plugin/models.py:59 plugin/serializers.py:90 msgid "Package Name" msgstr "Nome Pacchetto" -#: plugin/models.py:60 +#: plugin/models.py:61 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:65 +#: plugin/models.py:66 msgid "Is the plugin active" msgstr "Il plugin è attivo" -#: plugin/models.py:156 templates/js/translated/table_filters.js:370 +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "Installato" -#: plugin/models.py:165 +#: plugin/models.py:166 msgid "Sample plugin" msgstr "Plugin di esempio" -#: plugin/models.py:173 +#: plugin/models.py:174 msgid "Builtin Plugin" msgstr "Plugin Integrato" -#: plugin/models.py:181 +#: plugin/models.py:182 msgid "Package Plugin" msgstr "" -#: plugin/models.py:205 report/models.py:474 +#: plugin/models.py:220 report/models.py:475 #: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:252 +#: plugin/models.py:267 msgid "Method" msgstr "Metodo" @@ -8181,17 +8251,17 @@ msgstr "Metodo" msgid "No author found" msgstr "Nessun autore trovato" -#: plugin/registry.py:597 +#: plugin/registry.py:534 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:600 +#: plugin/registry.py:537 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:602 +#: plugin/registry.py:539 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -8306,23 +8376,19 @@ msgstr "" msgid "Activate this plugin" msgstr "" -#: plugin/serializers.py:234 +#: plugin/serializers.py:226 msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:235 +#: plugin/serializers.py:227 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:77 +#: report/api.py:88 msgid "No valid objects provided to template" msgstr "Nessun oggetto valido fornito nel modello" -#: report/api.py:89 report/serializers.py:53 -msgid "Model Type" -msgstr "" - -#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/api.py:103 report/models.py:439 report/serializers.py:98 #: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 #: templates/js/translated/return_order.js:353 #: templates/js/translated/sales_order.js:887 @@ -8330,176 +8396,176 @@ msgstr "" msgid "Items" msgstr "" -#: report/api.py:168 +#: report/api.py:180 msgid "Plugin not found" msgstr "" -#: report/api.py:170 +#: report/api.py:182 msgid "Plugin is not active" msgstr "" -#: report/api.py:172 +#: report/api.py:184 msgid "Plugin does not support label printing" msgstr "" -#: report/api.py:221 +#: report/api.py:233 msgid "Invalid label dimensions" msgstr "" -#: report/api.py:236 report/api.py:316 +#: report/api.py:248 report/api.py:329 msgid "No valid items provided to template" msgstr "" -#: report/api.py:271 +#: report/api.py:283 msgid "Error printing label" msgstr "" -#: report/api.py:362 report/api.py:398 +#: report/api.py:375 report/api.py:411 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "Il file del modello '{template}' è mancante o non esiste" -#: report/helpers.py:41 +#: report/helpers.py:43 msgid "A4" msgstr "" -#: report/helpers.py:42 +#: report/helpers.py:44 msgid "A3" msgstr "" -#: report/helpers.py:43 +#: report/helpers.py:45 msgid "Legal" msgstr "" -#: report/helpers.py:44 +#: report/helpers.py:46 msgid "Letter" msgstr "" -#: report/models.py:118 +#: report/models.py:119 msgid "Template file with this name already exists" msgstr "" -#: report/models.py:150 +#: report/models.py:151 msgid "Template name" msgstr "Nome modello" -#: report/models.py:156 +#: report/models.py:157 msgid "Template description" msgstr "" -#: report/models.py:162 +#: report/models.py:163 msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Filename Pattern" msgstr "Formato del nome file" -#: report/models.py:203 +#: report/models.py:204 msgid "Pattern for generating filenames" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Template is enabled" msgstr "" -#: report/models.py:214 +#: report/models.py:215 msgid "Target model type for template" msgstr "" -#: report/models.py:234 +#: report/models.py:235 msgid "Filters" msgstr "Filtri" -#: report/models.py:235 +#: report/models.py:236 msgid "Template query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:294 report/models.py:361 +#: report/models.py:295 report/models.py:362 msgid "Template file" msgstr "" -#: report/models.py:302 +#: report/models.py:303 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:308 +#: report/models.py:309 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:367 +#: report/models.py:368 msgid "Width [mm]" msgstr "Larghezza [mm]" -#: report/models.py:368 +#: report/models.py:369 msgid "Label width, specified in mm" msgstr "Larghezza dell'etichetta, specificata in mm" -#: report/models.py:374 +#: report/models.py:375 msgid "Height [mm]" msgstr "Altezza [mm]" -#: report/models.py:375 +#: report/models.py:376 msgid "Label height, specified in mm" msgstr "Larghezza dell'etichetta, specificata in mm" -#: report/models.py:438 +#: report/models.py:439 msgid "Number of items to process" msgstr "" -#: report/models.py:444 +#: report/models.py:445 msgid "Report generation is complete" msgstr "" -#: report/models.py:448 templates/js/translated/build.js:2177 +#: report/models.py:449 templates/js/translated/build.js:2177 msgid "Progress" msgstr "" -#: report/models.py:448 +#: report/models.py:449 msgid "Report generation progress" msgstr "" -#: report/models.py:456 +#: report/models.py:457 msgid "Report Template" msgstr "" -#: report/models.py:463 report/models.py:486 +#: report/models.py:464 report/models.py:487 msgid "Output File" msgstr "" -#: report/models.py:464 report/models.py:487 +#: report/models.py:465 report/models.py:488 msgid "Generated output file" msgstr "" -#: report/models.py:475 +#: report/models.py:476 msgid "Label output plugin" msgstr "" -#: report/models.py:479 +#: report/models.py:480 msgid "Label Template" msgstr "" -#: report/models.py:502 +#: report/models.py:503 msgid "Snippet" msgstr "" -#: report/models.py:503 +#: report/models.py:504 msgid "Report snippet file" msgstr "Report file snippet" -#: report/models.py:510 +#: report/models.py:511 msgid "Snippet file description" msgstr "Descrizione file snippet" -#: report/models.py:528 +#: report/models.py:529 msgid "Asset" msgstr "Risorsa" -#: report/models.py:529 +#: report/models.py:530 msgid "Report asset file" msgstr "Report file risorsa" -#: report/models.py:536 +#: report/models.py:537 msgid "Asset file description" msgstr "File risorsa descrizione" @@ -8572,8 +8638,8 @@ msgid "Total" msgstr "Totale" #: report/templates/report/inventree_return_order_report.html:25 -#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 -#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:824 +#: stock/serializers.py:149 stock/templates/stock/item_base.html:311 #: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 #: templates/js/translated/build.js:2355 #: templates/js/translated/model_renderers.js:230 @@ -8603,32 +8669,32 @@ msgstr "Risultati Test" msgid "Test" msgstr "" -#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2412 msgid "Result" msgstr "Risultato" -#: report/templates/report/inventree_test_report.html:130 +#: report/templates/report/inventree_test_report.html:129 msgid "Pass" msgstr "Passaggio" -#: report/templates/report/inventree_test_report.html:132 +#: report/templates/report/inventree_test_report.html:131 msgid "Fail" msgstr "Fallito" -#: report/templates/report/inventree_test_report.html:139 +#: report/templates/report/inventree_test_report.html:138 msgid "No result (required)" msgstr "Nessun risultato (richiesto)" -#: report/templates/report/inventree_test_report.html:141 +#: report/templates/report/inventree_test_report.html:140 msgid "No result" msgstr "Nessun risultato" -#: report/templates/report/inventree_test_report.html:154 +#: report/templates/report/inventree_test_report.html:153 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "Elementi installati" -#: report/templates/report/inventree_test_report.html:168 stock/admin.py:162 +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 #: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 #: templates/js/translated/stock.js:3110 msgid "Serial" @@ -8650,654 +8716,670 @@ msgstr "" msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:172 +#: stock/admin.py:51 stock/admin.py:171 msgid "Location ID" msgstr "ID Posizione" -#: stock/admin.py:54 stock/admin.py:176 +#: stock/admin.py:53 stock/admin.py:175 msgid "Location Name" msgstr "Nome Ubicazione" -#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/admin.py:63 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "Percorso Ubicazione" -#: stock/admin.py:149 +#: stock/admin.py:148 msgid "Stock Item ID" msgstr "ID Elemento Stock" -#: stock/admin.py:168 +#: stock/admin.py:167 msgid "Status Code" msgstr "Codici di stato" -#: stock/admin.py:180 +#: stock/admin.py:179 msgid "Supplier Part ID" msgstr "ID Articolo Fornitore" -#: stock/admin.py:185 +#: stock/admin.py:184 +msgid "Supplier Part SKU" +msgstr "" + +#: stock/admin.py:189 msgid "Supplier ID" msgstr "ID Fornitore" -#: stock/admin.py:191 +#: stock/admin.py:195 msgid "Supplier Name" msgstr "Nome Fornitore" -#: stock/admin.py:196 +#: stock/admin.py:200 msgid "Customer ID" msgstr "ID Cliente" -#: stock/admin.py:201 stock/models.py:806 +#: stock/admin.py:205 stock/models.py:804 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "Installato In" -#: stock/admin.py:206 +#: stock/admin.py:210 msgid "Build ID" msgstr "ID Costruttore" -#: stock/admin.py:216 +#: stock/admin.py:220 msgid "Sales Order ID" msgstr "ID Ordine Vendita" -#: stock/admin.py:221 +#: stock/admin.py:225 msgid "Purchase Order ID" msgstr "ID Ordine D'acquisto" -#: stock/admin.py:236 +#: stock/admin.py:240 msgid "Review Needed" msgstr "Revisione Necessaria" -#: stock/admin.py:241 +#: stock/admin.py:245 msgid "Delete on Deplete" msgstr "Elimina al esaurimento" -#: stock/admin.py:256 stock/models.py:900 +#: stock/admin.py:260 stock/models.py:898 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "Data di Scadenza" -#: stock/api.py:318 +#: stock/api.py:312 msgid "Filter by location depth" msgstr "" -#: stock/api.py:338 +#: stock/api.py:332 +msgid "Filter by top-level locations" +msgstr "" + +#: stock/api.py:347 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:359 +#: stock/api.py:369 stock/serializers.py:1085 msgid "Parent Location" msgstr "" -#: stock/api.py:360 +#: stock/api.py:370 msgid "Filter by parent location" msgstr "" -#: stock/api.py:615 templates/js/translated/table_filters.js:427 +#: stock/api.py:625 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "Ubicazione Esterna" -#: stock/api.py:803 +#: stock/api.py:813 msgid "Part Tree" msgstr "" -#: stock/api.py:833 +#: stock/api.py:843 msgid "Expiry date before" msgstr "" -#: stock/api.py:837 +#: stock/api.py:847 msgid "Expiry date after" msgstr "" -#: stock/api.py:840 stock/templates/stock/item_base.html:439 +#: stock/api.py:850 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "Obsoleto" -#: stock/api.py:927 +#: stock/api.py:937 msgid "Quantity is required" msgstr "La quantità è richiesta" -#: stock/api.py:933 +#: stock/api.py:943 msgid "Valid part must be supplied" msgstr "Deve essere fornita un articolo valido" -#: stock/api.py:964 +#: stock/api.py:974 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:974 +#: stock/api.py:984 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:1005 +#: stock/api.py:1015 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:59 +#: stock/models.py:60 msgid "Stock Location type" msgstr "" -#: stock/models.py:60 +#: stock/models.py:61 msgid "Stock Location types" msgstr "" -#: stock/models.py:86 +#: stock/models.py:87 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:123 stock/models.py:788 +#: stock/models.py:124 stock/models.py:786 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Ubicazione magazzino" -#: stock/models.py:124 stock/templates/stock/location.html:186 +#: stock/models.py:125 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "Posizioni magazzino" -#: stock/models.py:166 stock/models.py:949 +#: stock/models.py:167 stock/models.py:947 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "Proprietario" -#: stock/models.py:167 stock/models.py:950 +#: stock/models.py:168 stock/models.py:948 msgid "Select Owner" msgstr "Seleziona Owner" -#: stock/models.py:175 +#: stock/models.py:176 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "Gli elementi di magazzino non possono essere direttamente situati in un magazzino strutturale, ma possono essere situati in ubicazioni secondarie." -#: stock/models.py:182 templates/js/translated/stock.js:2781 +#: stock/models.py:183 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "Esterno" -#: stock/models.py:183 +#: stock/models.py:184 msgid "This is an external stock location" msgstr "Si tratta di una posizione esterna al magazzino" -#: stock/models.py:189 templates/js/translated/stock.js:2790 +#: stock/models.py:190 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" -#: stock/models.py:193 +#: stock/models.py:194 msgid "Stock location type of this location" msgstr "" -#: stock/models.py:262 +#: stock/models.py:261 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:643 +#: stock/models.py:641 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:670 stock/serializers.py:419 +#: stock/models.py:668 stock/serializers.py:446 msgid "Stock item cannot be created for virtual parts" msgstr "Non è possibile creare un elemento di magazzino per articoli virtuali" -#: stock/models.py:687 +#: stock/models.py:685 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:697 stock/models.py:710 +#: stock/models.py:695 stock/models.py:708 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:700 +#: stock/models.py:698 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:724 +#: stock/models.py:722 msgid "Item cannot belong to itself" msgstr "L'elemento non può appartenere a se stesso" -#: stock/models.py:729 +#: stock/models.py:727 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:742 +#: stock/models.py:740 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:758 +#: stock/models.py:756 msgid "Parent Stock Item" msgstr "Elemento di magazzino principale" -#: stock/models.py:770 +#: stock/models.py:768 msgid "Base part" msgstr "Articolo base" -#: stock/models.py:780 +#: stock/models.py:778 msgid "Select a matching supplier part for this stock item" msgstr "Seleziona un fornitore articolo corrispondente per questo elemento di magazzino" -#: stock/models.py:792 +#: stock/models.py:790 msgid "Where is this stock item located?" msgstr "Dove si trova questo articolo di magazzino?" -#: stock/models.py:800 stock/serializers.py:1480 +#: stock/models.py:798 stock/serializers.py:1476 msgid "Packaging this stock item is stored in" msgstr "Imballaggio di questo articolo di magazzino è collocato in" -#: stock/models.py:811 +#: stock/models.py:809 msgid "Is this item installed in another item?" msgstr "Questo elemento è stato installato su un altro elemento?" -#: stock/models.py:830 +#: stock/models.py:828 msgid "Serial number for this item" msgstr "Numero di serie per questo elemento" -#: stock/models.py:844 stock/serializers.py:1463 +#: stock/models.py:842 stock/serializers.py:1459 msgid "Batch code for this stock item" msgstr "Codice lotto per questo elemento di magazzino" -#: stock/models.py:849 +#: stock/models.py:847 msgid "Stock Quantity" msgstr "Quantità disponibile" -#: stock/models.py:859 +#: stock/models.py:857 msgid "Source Build" msgstr "Genera Costruzione" -#: stock/models.py:862 +#: stock/models.py:860 msgid "Build for this stock item" msgstr "Costruisci per questo elemento di magazzino" -#: stock/models.py:869 stock/templates/stock/item_base.html:363 +#: stock/models.py:867 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:872 +#: stock/models.py:870 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:881 +#: stock/models.py:879 msgid "Source Purchase Order" msgstr "Origina Ordine di Acquisto" -#: stock/models.py:885 +#: stock/models.py:883 msgid "Purchase order for this stock item" msgstr "Ordine d'acquisto per questo articolo in magazzino" -#: stock/models.py:891 +#: stock/models.py:889 msgid "Destination Sales Order" msgstr "Destinazione Ordine di Vendita" -#: stock/models.py:902 +#: stock/models.py:900 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:920 +#: stock/models.py:918 msgid "Delete on deplete" msgstr "Elimina al esaurimento" -#: stock/models.py:921 +#: stock/models.py:919 msgid "Delete this Stock Item when stock is depleted" msgstr "Cancella questo Elemento di Magazzino quando la giacenza è esaurita" -#: stock/models.py:941 +#: stock/models.py:939 msgid "Single unit purchase price at time of purchase" msgstr "Prezzo di acquisto unitario al momento dell’acquisto" -#: stock/models.py:972 +#: stock/models.py:970 msgid "Converted to part" msgstr "Convertito in articolo" -#: stock/models.py:1490 +#: stock/models.py:1486 msgid "Part is not set as trackable" msgstr "L'articolo non è impostato come tracciabile" -#: stock/models.py:1496 +#: stock/models.py:1492 msgid "Quantity must be integer" msgstr "La quantità deve essere un numero intero" -#: stock/models.py:1504 +#: stock/models.py:1500 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1510 +#: stock/models.py:1506 msgid "Serial numbers must be a list of integers" msgstr "I numeri di serie devono essere numeri interi" -#: stock/models.py:1515 +#: stock/models.py:1511 msgid "Quantity does not match serial numbers" msgstr "La quantità non corrisponde ai numeri di serie" -#: stock/models.py:1523 stock/serializers.py:658 +#: stock/models.py:1519 stock/serializers.py:660 msgid "Serial numbers already exist" msgstr "Numeri di serie già esistenti" -#: stock/models.py:1620 +#: stock/models.py:1616 msgid "Test template does not exist" msgstr "" -#: stock/models.py:1638 +#: stock/models.py:1634 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:1642 +#: stock/models.py:1638 msgid "Stock item is installed in another item" msgstr "L'elemento di magazzino è installato in un altro elemento" -#: stock/models.py:1645 +#: stock/models.py:1641 msgid "Stock item contains other items" msgstr "L'elemento di magazzino contiene altri elementi" -#: stock/models.py:1648 +#: stock/models.py:1644 msgid "Stock item has been assigned to a customer" msgstr "L'elemento di magazzino è stato assegnato a un cliente" -#: stock/models.py:1651 +#: stock/models.py:1647 msgid "Stock item is currently in production" msgstr "L'elemento di magazzino è attualmente in produzione" -#: stock/models.py:1654 +#: stock/models.py:1650 msgid "Serialized stock cannot be merged" msgstr "Il magazzino serializzato non può essere unito" -#: stock/models.py:1661 stock/serializers.py:1369 +#: stock/models.py:1657 stock/serializers.py:1365 msgid "Duplicate stock items" msgstr "Duplica elementi di magazzino" -#: stock/models.py:1665 +#: stock/models.py:1661 msgid "Stock items must refer to the same part" msgstr "Gli elementi di magazzino devono riferirsi allo stesso articolo" -#: stock/models.py:1673 +#: stock/models.py:1669 msgid "Stock items must refer to the same supplier part" msgstr "Gli elementi di magazzino devono riferirsi allo stesso articolo fornitore" -#: stock/models.py:1678 +#: stock/models.py:1674 msgid "Stock status codes must match" msgstr "I codici di stato dello stock devono corrispondere" -#: stock/models.py:1905 +#: stock/models.py:1901 msgid "StockItem cannot be moved as it is not in stock" msgstr "Le giacenze non possono essere spostate perché non disponibili" -#: stock/models.py:2326 +#: stock/models.py:2310 msgid "Entry notes" msgstr "Note d'ingresso" -#: stock/models.py:2391 +#: stock/models.py:2378 msgid "Value must be provided for this test" msgstr "Il valore deve essere fornito per questo test" -#: stock/models.py:2396 +#: stock/models.py:2383 msgid "Attachment must be uploaded for this test" msgstr "L'allegato deve essere caricato per questo test" -#: stock/models.py:2423 +#: stock/models.py:2388 +msgid "Invalid value for this test" +msgstr "" + +#: stock/models.py:2412 msgid "Test result" msgstr "Risultato Test" -#: stock/models.py:2430 +#: stock/models.py:2419 msgid "Test output value" msgstr "Test valore output" -#: stock/models.py:2438 +#: stock/models.py:2427 msgid "Test result attachment" msgstr "Risultato della prova allegato" -#: stock/models.py:2442 +#: stock/models.py:2431 msgid "Test notes" msgstr "Note del test" -#: stock/models.py:2450 templates/js/translated/stock.js:1548 +#: stock/models.py:2439 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2440 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2457 +#: stock/models.py:2446 msgid "Started" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2447 msgid "The timestamp of the test start" msgstr "" -#: stock/models.py:2464 +#: stock/models.py:2453 msgid "Finished" msgstr "" -#: stock/models.py:2465 +#: stock/models.py:2454 msgid "The timestamp of the test finish" msgstr "" -#: stock/serializers.py:75 +#: stock/serializers.py:74 msgid "Generated batch code" msgstr "" -#: stock/serializers.py:84 +#: stock/serializers.py:83 msgid "Select build order" msgstr "" -#: stock/serializers.py:93 +#: stock/serializers.py:92 msgid "Select stock item to generate batch code for" msgstr "" -#: stock/serializers.py:102 +#: stock/serializers.py:101 msgid "Select location to generate batch code for" msgstr "" -#: stock/serializers.py:111 +#: stock/serializers.py:110 msgid "Select part to generate batch code for" msgstr "" -#: stock/serializers.py:120 +#: stock/serializers.py:119 msgid "Select purchase order" msgstr "" -#: stock/serializers.py:127 +#: stock/serializers.py:126 msgid "Enter quantity for batch code" msgstr "" -#: stock/serializers.py:150 +#: stock/serializers.py:149 msgid "Generated serial number" msgstr "" -#: stock/serializers.py:159 +#: stock/serializers.py:158 msgid "Select part to generate serial number for" msgstr "" -#: stock/serializers.py:167 +#: stock/serializers.py:166 msgid "Quantity of serial numbers to generate" msgstr "" -#: stock/serializers.py:229 +#: stock/serializers.py:228 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:248 +#: stock/serializers.py:247 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:280 +#: stock/serializers.py:279 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:313 +#: stock/serializers.py:315 msgid "Serial number is too large" msgstr "Il numero di serie è troppo grande" -#: stock/serializers.py:411 +#: stock/serializers.py:438 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:531 +#: stock/serializers.py:558 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:595 msgid "Enter number of stock items to serialize" msgstr "Inserisci il numero di elementi di magazzino da serializzare" -#: stock/serializers.py:606 +#: stock/serializers.py:608 #, 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:613 +#: stock/serializers.py:615 msgid "Enter serial numbers for new items" msgstr "Inserisci i numeri di serie per i nuovi elementi" -#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 +#: stock/serializers.py:626 stock/serializers.py:1322 stock/serializers.py:1578 msgid "Destination stock location" msgstr "Posizione magazzino di destinazione" -#: stock/serializers.py:631 +#: stock/serializers.py:633 msgid "Optional note field" msgstr "Note opzionali elemento" -#: stock/serializers.py:641 +#: stock/serializers.py:643 msgid "Serial numbers cannot be assigned to this part" msgstr "Numeri di serie non possono essere assegnati a questo articolo" -#: stock/serializers.py:696 +#: stock/serializers.py:698 msgid "Select stock item to install" msgstr "Seleziona elementi di magazzino da installare" -#: stock/serializers.py:703 +#: stock/serializers.py:705 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:704 +#: stock/serializers.py:706 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 -#: stock/serializers.py:935 +#: stock/serializers.py:711 stock/serializers.py:791 stock/serializers.py:887 +#: stock/serializers.py:937 msgid "Add transaction note (optional)" msgstr "Aggiungi nota di transazione (opzionale)" -#: stock/serializers.py:717 +#: stock/serializers.py:719 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:725 +#: stock/serializers.py:727 msgid "Stock item is unavailable" msgstr "Elemento di magazzino non disponibile" -#: stock/serializers.py:736 +#: stock/serializers.py:738 msgid "Selected part is not in the Bill of Materials" msgstr "L'articolo selezionato non è nella Fattura dei Materiali" -#: stock/serializers.py:749 +#: stock/serializers.py:751 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:784 +#: stock/serializers.py:786 msgid "Destination location for uninstalled item" msgstr "Posizione di destinazione per gli elementi disinstallati" -#: stock/serializers.py:819 +#: stock/serializers.py:821 msgid "Select part to convert stock item into" msgstr "Seleziona l'articolo in cui convertire l'elemento di magazzino" -#: stock/serializers.py:832 +#: stock/serializers.py:834 msgid "Selected part is not a valid option for conversion" msgstr "L'articolo selezionato non è una valida opzione per la conversione" -#: stock/serializers.py:849 +#: stock/serializers.py:851 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:880 +#: stock/serializers.py:882 msgid "Destination location for returned item" msgstr "Posizione di destinazione per l'elemento restituito" -#: stock/serializers.py:917 +#: stock/serializers.py:919 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:923 +#: stock/serializers.py:925 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:1019 stock/serializers.py:1082 +#: stock/serializers.py:1021 stock/serializers.py:1093 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:220 +#: stock/templates/stock/location.html:222 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "Sottoallocazioni" -#: stock/serializers.py:1198 +#: stock/serializers.py:1086 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: stock/serializers.py:1194 msgid "Part must be salable" msgstr "L'articolo deve essere vendibile" -#: stock/serializers.py:1202 +#: stock/serializers.py:1198 msgid "Item is allocated to a sales order" msgstr "L'elemento è assegnato a un ordine di vendita" -#: stock/serializers.py:1206 +#: stock/serializers.py:1202 msgid "Item is allocated to a build order" msgstr "Elemento assegnato a un ordine di costruzione" -#: stock/serializers.py:1230 +#: stock/serializers.py:1226 msgid "Customer to assign stock items" msgstr "Cliente a cui assegnare elementi di magazzino" -#: stock/serializers.py:1236 +#: stock/serializers.py:1232 msgid "Selected company is not a customer" msgstr "L'azienda selezionata non è un cliente" -#: stock/serializers.py:1244 +#: stock/serializers.py:1240 msgid "Stock assignment notes" msgstr "Note sull'assegnazione delle scorte" -#: stock/serializers.py:1254 stock/serializers.py:1508 +#: stock/serializers.py:1250 stock/serializers.py:1504 msgid "A list of stock items must be provided" msgstr "Deve essere fornito un elenco degli elementi di magazzino" -#: stock/serializers.py:1333 +#: stock/serializers.py:1329 msgid "Stock merging notes" msgstr "Note di fusione di magazzino" -#: stock/serializers.py:1338 +#: stock/serializers.py:1334 msgid "Allow mismatched suppliers" msgstr "Consenti fornitori non corrispondenti" -#: stock/serializers.py:1339 +#: stock/serializers.py:1335 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:1344 +#: stock/serializers.py:1340 msgid "Allow mismatched status" msgstr "Consenti stato non corrispondente" -#: stock/serializers.py:1345 +#: stock/serializers.py:1341 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:1355 +#: stock/serializers.py:1351 msgid "At least two stock items must be provided" msgstr "Devono essere riforniti almeno due elementi in magazzino" -#: stock/serializers.py:1422 +#: stock/serializers.py:1418 msgid "No Change" msgstr "" -#: stock/serializers.py:1451 +#: stock/serializers.py:1447 msgid "StockItem primary key value" msgstr "Valore di chiave primaria StockItem" -#: stock/serializers.py:1470 +#: stock/serializers.py:1466 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1498 +#: stock/serializers.py:1494 msgid "Stock transaction notes" msgstr "Note sugli spostamenti di magazzino" @@ -9450,7 +9532,7 @@ msgstr "Dati di Test" msgid "Test Report" msgstr "Rapporto del Test" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276 msgid "Delete Test Data" msgstr "Elimina Dati di Test" @@ -9470,11 +9552,11 @@ msgstr "Elementi di magazzino installati" msgid "Install Stock Item" msgstr "Installa Elemento Magazzino" -#: stock/templates/stock/item.html:272 +#: stock/templates/stock/item.html:264 msgid "Delete all test results for this stock item" msgstr "Elimina tutti i risultati del test per questo elemento di magazzino" -#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "" @@ -9760,28 +9842,28 @@ msgstr "Non sei nell'elenco dei proprietari di questa posizione. Questa posizion msgid "Location Type" msgstr "" -#: stock/templates/stock/location.html:224 +#: stock/templates/stock/location.html:226 msgid "Create new stock location" msgstr "Crea nuova posizione di magazzino" -#: stock/templates/stock/location.html:225 +#: stock/templates/stock/location.html:227 msgid "New Location" msgstr "Nuova Posizione" -#: stock/templates/stock/location.html:295 +#: stock/templates/stock/location.html:299 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:317 +#: stock/templates/stock/location.html:321 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:390 +#: stock/templates/stock/location.html:394 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:401 +#: stock/templates/stock/location.html:405 msgid "Link Barcode to Stock Location" msgstr "" @@ -10205,20 +10287,20 @@ msgstr "Impostazioni Ordine di Acquisto" msgid "Pricing Settings" msgstr "Impostazioni Prezzi" -#: templates/InvenTree/settings/pricing.html:34 +#: templates/InvenTree/settings/pricing.html:35 msgid "Exchange Rates" msgstr "Tassi di cambio" -#: templates/InvenTree/settings/pricing.html:38 +#: templates/InvenTree/settings/pricing.html:39 msgid "Update Now" msgstr "Aggiorna Ora" -#: templates/InvenTree/settings/pricing.html:46 -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 msgid "Last Update" msgstr "Ultimo Aggiornamento" -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:51 msgid "Never" msgstr "Mai" @@ -10275,8 +10357,8 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:547 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 +#: templates/js/translated/part.js:393 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:402 msgid "Delete" msgstr "Elimina" @@ -10316,12 +10398,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 -#: templates/js/translated/part.js:1645 +#: templates/js/translated/part.js:1646 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 -#: templates/js/translated/part.js:1646 +#: templates/js/translated/part.js:1647 msgid "Delete Template" msgstr "" @@ -10711,7 +10793,7 @@ msgid "Submit Bug Report" msgstr "Invia Segnalazione Bug" #: templates/about.html:91 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 +#: templates/js/translated/helpers.js:589 msgid "copy to clipboard" msgstr "copia negli appunti" @@ -10775,7 +10857,7 @@ msgid "Are you sure you want to sign out?" msgstr "Sei sicuro di voler uscire?" #: templates/account/logout.html:27 templates/allauth_2fa/backup_tokens.html:35 -#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:44 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45 msgid "Return to Site" msgstr "Ritorna al Sito" @@ -10889,15 +10971,19 @@ msgstr "Passaggio 1" msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "Scansiona il codice QR qui sotto con un generatore di token di tua scelta (per esempio Google Authenticator)." -#: templates/allauth_2fa/setup.html:23 +#: templates/allauth_2fa/setup.html:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 msgid "Step 2" msgstr "Passaggio 2" -#: templates/allauth_2fa/setup.html:27 +#: templates/allauth_2fa/setup.html:28 msgid "Input a token generated by the app:" msgstr "Inserisci un token generato dall'app:" -#: templates/allauth_2fa/setup.html:37 +#: templates/allauth_2fa/setup.html:38 msgid "Verify" msgstr "Verifica" @@ -10976,7 +11062,7 @@ msgid "Click on the following link to view this part" msgstr "Clicca il seguente link per visualizzare questo articolo" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3217 +#: templates/js/translated/part.js:3219 msgid "Minimum Quantity" msgstr "Quantità minima" @@ -11064,27 +11150,27 @@ msgstr "" msgid "Delete attachments" msgstr "" -#: templates/js/translated/attachment.js:253 +#: templates/js/translated/attachment.js:260 msgid "Attachment actions" msgstr "" -#: templates/js/translated/attachment.js:275 +#: templates/js/translated/attachment.js:294 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:315 +#: templates/js/translated/attachment.js:334 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:365 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:366 +#: templates/js/translated/attachment.js:385 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:374 +#: templates/js/translated/attachment.js:393 msgid "Delete attachment" msgstr "" @@ -11365,7 +11451,7 @@ msgid "Includes variant and substitute stock" msgstr "" #: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 -#: templates/js/translated/part.js:1256 +#: templates/js/translated/part.js:1257 #: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" @@ -11692,7 +11778,7 @@ msgstr "" #: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 #: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 -#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11735,8 +11821,8 @@ msgstr "" msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 -#: templates/js/translated/part.js:1202 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:791 +#: templates/js/translated/part.js:1203 msgid "Trackable part" msgstr "" @@ -11922,7 +12008,7 @@ msgid "Delete Parameters" msgstr "" #: templates/js/translated/company.js:1191 -#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2244 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2245 msgid "Order parts" msgstr "" @@ -11939,34 +12025,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:1279 -#: templates/js/translated/company.js:1567 templates/js/translated/part.js:798 -#: templates/js/translated/part.js:1210 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Template part" msgstr "" #: templates/js/translated/company.js:1283 -#: templates/js/translated/company.js:1571 templates/js/translated/part.js:802 -#: templates/js/translated/part.js:1214 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:803 +#: templates/js/translated/part.js:1215 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1464 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1465 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1527 +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1528 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1528 +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1529 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1433 +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1434 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1549 +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1550 msgid "Delete Parameter" msgstr "" @@ -12100,23 +12186,23 @@ msgstr "Esistono errori nel modulo" msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2499 +#: templates/js/translated/forms.js:2500 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3113 +#: templates/js/translated/forms.js:3114 msgid "Select Columns" msgstr "" @@ -12217,7 +12303,7 @@ msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 -#: templates/js/translated/part.js:1604 +#: templates/js/translated/part.js:1605 msgid "ID" msgstr "" @@ -12298,347 +12384,343 @@ msgstr "" 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 +#: templates/js/translated/part.js:333 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:355 +#: templates/js/translated/part.js:356 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:356 +#: templates/js/translated/part.js:357 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:370 +#: templates/js/translated/part.js:371 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:383 +#: templates/js/translated/part.js:384 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:388 +#: templates/js/translated/part.js:389 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:397 +#: templates/js/translated/part.js:398 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:401 +#: templates/js/translated/part.js:402 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:406 +#: templates/js/translated/part.js:407 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:430 +#: templates/js/translated/part.js:431 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:432 +#: templates/js/translated/part.js:433 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:433 +#: templates/js/translated/part.js:434 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:462 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:463 +#: templates/js/translated/part.js:464 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:474 +#: templates/js/translated/part.js:475 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:531 +#: templates/js/translated/part.js:532 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:532 +#: templates/js/translated/part.js:533 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:546 +#: templates/js/translated/part.js:547 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:548 +#: templates/js/translated/part.js:549 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:549 +#: templates/js/translated/part.js:550 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:550 +#: templates/js/translated/part.js:551 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:557 +#: templates/js/translated/part.js:558 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:593 +#: templates/js/translated/part.js:594 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:595 +#: templates/js/translated/part.js:596 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:600 +#: templates/js/translated/part.js:601 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:602 +#: templates/js/translated/part.js:603 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:619 +#: templates/js/translated/part.js:620 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:629 +#: templates/js/translated/part.js:630 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:632 +#: templates/js/translated/part.js:633 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:657 +#: templates/js/translated/part.js:658 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:685 +#: templates/js/translated/part.js:686 #: templates/js/translated/table_filters.js:747 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:688 +#: templates/js/translated/part.js:689 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:748 +#: templates/js/translated/part.js:749 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:771 +#: templates/js/translated/part.js:772 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +#: templates/js/translated/part.js:795 templates/js/translated/part.js:1207 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:806 +#: templates/js/translated/part.js:807 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:810 +#: templates/js/translated/part.js:811 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:897 +#: templates/js/translated/part.js:898 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:901 +#: templates/js/translated/part.js:902 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1050 +#: templates/js/translated/part.js:1051 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1145 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +#: templates/js/translated/part.js:1113 templates/js/translated/part.js:1155 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1281 +#: templates/js/translated/part.js:1282 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1599 +#: templates/js/translated/part.js:1600 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1662 +#: templates/js/translated/part.js:1663 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1674 +#: templates/js/translated/part.js:1675 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1682 +#: templates/js/translated/part.js:1683 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1716 +#: templates/js/translated/part.js:1717 #: templates/js/translated/purchase_order.js:1654 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1860 +#: templates/js/translated/part.js:1861 #: templates/js/translated/purchase_order.js:2153 #: templates/js/translated/return_order.js:755 #: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1906 +#: templates/js/translated/part.js:1907 #: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1970 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1991 +#: templates/js/translated/part.js:1992 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 +#: templates/js/translated/part.js:2080 templates/js/translated/part.js:2506 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2200 +#: templates/js/translated/part.js:2201 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2205 +#: templates/js/translated/part.js:2206 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2235 +#: templates/js/translated/part.js:2236 msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2286 +#: templates/js/translated/part.js:2287 msgid "part" msgstr "" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2288 msgid "parts" msgstr "" -#: templates/js/translated/part.js:2383 +#: templates/js/translated/part.js:2384 msgid "No category" msgstr "" -#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2546 +#: templates/js/translated/part.js:2547 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2644 +#: templates/js/translated/part.js:2645 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2760 +#: templates/js/translated/part.js:2761 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2776 +#: templates/js/translated/part.js:2777 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2865 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2887 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/part.js:2938 templates/js/translated/stock.js:1457 #: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2940 +#: templates/js/translated/part.js:2942 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2956 +#: templates/js/translated/part.js:2958 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2970 +#: templates/js/translated/part.js:2972 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3051 templates/js/translated/part.js:3052 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3052 +#: templates/js/translated/part.js:3054 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3058 +#: templates/js/translated/part.js:3060 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3108 +#: templates/js/translated/part.js:3110 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3114 +#: templates/js/translated/part.js:3116 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3210 +#: templates/js/translated/part.js:3212 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3226 +#: templates/js/translated/part.js:3228 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3271 +#: templates/js/translated/part.js:3273 msgid "Minimum Stock Level" msgstr "" @@ -13246,10 +13328,6 @@ msgstr "" 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 "" @@ -13418,7 +13496,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:401 +#: templates/js/translated/stock.js:1042 users/models.py:392 msgid "Add" msgstr "Aggiungi" @@ -14309,34 +14387,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:384 +#: users/models.py:375 msgid "Permission set" msgstr "Impostazione autorizzazioni" -#: users/models.py:393 +#: users/models.py:384 msgid "Group" msgstr "Gruppo" -#: users/models.py:397 +#: users/models.py:388 msgid "View" msgstr "Visualizza" -#: users/models.py:397 +#: users/models.py:388 msgid "Permission to view items" msgstr "Autorizzazione a visualizzare gli articoli" -#: users/models.py:401 +#: users/models.py:392 msgid "Permission to add items" msgstr "Autorizzazione ad aggiungere elementi" -#: users/models.py:405 +#: users/models.py:396 msgid "Change" msgstr "Modificare" -#: users/models.py:407 +#: users/models.py:398 msgid "Permissions to edit items" msgstr "Permessi per modificare gli elementi" -#: users/models.py:413 +#: users/models.py:404 msgid "Permission to delete items" msgstr "Autorizzazione ad eliminare gli elementi" + diff --git a/src/backend/InvenTree/locale/ja/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/ja/LC_MESSAGES/django.po index af521726de..dbdd5317f5 100644 --- a/src/backend/InvenTree/locale/ja/LC_MESSAGES/django.po +++ b/src/backend/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-05-31 07:08+0000\n" -"PO-Revision-Date: 2024-05-27 11:54\n" +"POT-Creation-Date: 2024-06-26 03:18+0000\n" +"PO-Revision-Date: 2024-06-26 06:04\n" "Last-Translator: \n" "Language-Team: Japanese\n" "Language: ja_JP\n" @@ -21,7 +21,7 @@ msgstr "" msgid "API endpoint not found" msgstr "APIエンドポイントが見つかりません" -#: InvenTree/api.py:536 +#: InvenTree/api.py:520 msgid "User does not have permission to view this model" msgstr "ユーザーにこのモデルを表示する権限がありません" @@ -52,25 +52,25 @@ msgstr "" msgid "Error details can be found in the admin panel" msgstr "エラーの詳細は管理者パネルで確認できます" -#: InvenTree/fields.py:139 +#: InvenTree/fields.py:136 msgid "Enter date" msgstr "日付を入力する" -#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 -#: build/serializers.py:531 build/templates/build/sidebar.html:21 -#: company/models.py:849 company/templates/company/sidebar.html:37 -#: order/models.py:1332 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:205 InvenTree/models.py:918 build/serializers.py:452 +#: build/serializers.py:530 build/templates/build/sidebar.html:21 +#: company/models.py:817 company/templates/company/sidebar.html:37 +#: order/models.py:1296 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:3218 part/templates/part/part_sidebar.html:63 +#: part/models.py:3183 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_report.html:172 -#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 -#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 -#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 -#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:230 stock/models.py:2309 stock/models.py:2431 +#: stock/serializers.py:632 stock/serializers.py:790 stock/serializers.py:886 +#: stock/serializers.py:936 stock/serializers.py:1239 stock/serializers.py:1328 +#: stock/serializers.py:1493 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1080 +#: templates/js/translated/part.js:1081 #: templates/js/translated/purchase_order.js:2200 #: templates/js/translated/return_order.js:775 #: templates/js/translated/sales_order.js:1103 @@ -120,15 +120,15 @@ msgstr "メールアドレスの確認" msgid "You must type the same email each time." msgstr "毎回同じメールアドレスを入力する必要があります。" -#: InvenTree/forms.py:253 InvenTree/forms.py:261 +#: InvenTree/forms.py:248 InvenTree/forms.py:256 msgid "The provided primary email address is not valid." msgstr "指定されたプライマリEメールアドレスは無効です。" -#: InvenTree/forms.py:268 +#: InvenTree/forms.py:263 msgid "The provided email domain is not approved." msgstr "指定されたメールドメインは承認されていません。" -#: InvenTree/forms.py:395 +#: InvenTree/forms.py:390 msgid "Registration is disabled." msgstr "" @@ -171,35 +171,35 @@ msgstr "" msgid "Remove HTML tags from this value" msgstr "この値からHTMLタグを削除" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Connection error" msgstr "接続エラー" -#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 msgid "Server responded with invalid status code" msgstr "サーバは無効なステータスコードで応答しました" -#: InvenTree/helpers_model.py:158 +#: InvenTree/helpers_model.py:148 msgid "Exception occurred" msgstr "例外が発生しました" -#: InvenTree/helpers_model.py:168 +#: InvenTree/helpers_model.py:158 msgid "Server responded with invalid Content-Length value" msgstr "サーバーが無効なContent-Length値で応答しました" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:161 msgid "Image size is too large" msgstr "画像サイズが大きすぎます" -#: InvenTree/helpers_model.py:183 +#: InvenTree/helpers_model.py:173 msgid "Image download exceeded maximum size" msgstr "画像のダウンロードが最大サイズを超えました" -#: InvenTree/helpers_model.py:188 +#: InvenTree/helpers_model.py:178 msgid "Remote server returned empty response" msgstr "リモートサーバーが空のレスポンスを返しました" -#: InvenTree/helpers_model.py:196 +#: InvenTree/helpers_model.py:186 msgid "Supplied URL is not a valid image file" msgstr "指定されたURLは有効な画像ファイルではありません" @@ -296,46 +296,50 @@ msgid "Portuguese (Brazilian)" msgstr "ポルトガル語 (ブラジル)" #: InvenTree/locales.py:41 +msgid "Romanian" +msgstr "" + +#: InvenTree/locales.py:42 msgid "Russian" msgstr "ロシア語" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:43 msgid "Slovak" msgstr "" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:44 msgid "Slovenian" msgstr "スロベニア語" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:45 msgid "Serbian" msgstr "" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:46 msgid "Swedish" msgstr "スウェーデン語" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:47 msgid "Thai" msgstr "タイ語" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:48 msgid "Turkish" msgstr "トルコ語" -#: InvenTree/locales.py:48 +#: InvenTree/locales.py:49 msgid "Ukrainian" msgstr "" -#: InvenTree/locales.py:49 +#: InvenTree/locales.py:50 msgid "Vietnamese" msgstr "ベトナム語" -#: InvenTree/locales.py:50 +#: InvenTree/locales.py:51 msgid "Chinese (Simplified)" msgstr "" -#: InvenTree/locales.py:51 +#: InvenTree/locales.py:52 msgid "Chinese (Traditional)" msgstr "" @@ -344,153 +348,65 @@ msgstr "" msgid "[{site_name}] Log in to the app" msgstr "" -#: InvenTree/magic_login.py:38 company/models.py:133 +#: InvenTree/magic_login.py:38 company/models.py:136 #: company/templates/company/company_base.html:138 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:677 msgid "Email" msgstr "メールアドレス" -#: InvenTree/models.py:107 +#: InvenTree/models.py:105 msgid "Error running plugin validation" msgstr "" -#: InvenTree/models.py:176 +#: InvenTree/models.py:174 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:182 +#: InvenTree/models.py:180 msgid "Plugin Metadata" msgstr "プラグインメタデータ" -#: InvenTree/models.py:183 +#: InvenTree/models.py:181 msgid "JSON metadata field, for use by external plugins" msgstr "外部プラグインで使用するためのJSONメタデータフィールド" -#: InvenTree/models.py:413 +#: InvenTree/models.py:408 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:420 +#: InvenTree/models.py:415 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:426 +#: InvenTree/models.py:421 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:437 +#: InvenTree/models.py:432 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:445 +#: InvenTree/models.py:440 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:476 +#: InvenTree/models.py:471 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:550 -msgid "Missing file" -msgstr "ファイルがありません" - -#: InvenTree/models.py:551 -msgid "Missing external link" -msgstr "外部リンクが見つかりません。" - -#: InvenTree/models.py:572 stock/models.py:2437 -#: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:326 -msgid "Attachment" -msgstr "添付ファイル" - -#: InvenTree/models.py:573 -msgid "Select file to attach" -msgstr "添付ファイルを選択" - -#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:831 -#: order/models.py:303 order/models.py:1337 order/models.py:1753 -#: part/admin.py:55 part/models.py:962 -#: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_report.html:164 -#: stock/admin.py:225 templates/js/translated/company.js:1319 -#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2455 -#: templates/js/translated/purchase_order.js:2040 -#: templates/js/translated/purchase_order.js:2204 -#: templates/js/translated/return_order.js:779 -#: templates/js/translated/sales_order.js:1092 -#: templates/js/translated/sales_order.js:2023 -msgid "Link" -msgstr "リンク" - -#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 -#: stock/models.py:836 -msgid "Link to external URL" -msgstr "外部 サイト へのリンク" - -#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:341 -msgid "Comment" -msgstr "コメント:" - -#: InvenTree/models.py:589 -msgid "File comment" -msgstr "ファイルコメント" - -#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 -#: common/models.py:2518 common/models.py:2742 common/models.py:2743 -#: common/models.py:2988 common/models.py:2989 part/models.py:3228 -#: part/models.py:3315 part/models.py:3408 part/models.py:3436 -#: plugin/models.py:259 plugin/models.py:260 -#: report/templates/report/inventree_test_report.html:105 -#: templates/js/translated/stock.js:3036 users/models.py:111 -msgid "User" -msgstr "ユーザー" - -#: InvenTree/models.py:602 -msgid "upload date" -msgstr "アップロード日時" - -#: InvenTree/models.py:624 -msgid "Filename must not be empty" -msgstr "ファイル名は空欄にできません" - -#: InvenTree/models.py:635 -msgid "Invalid attachment directory" -msgstr "添付ファイルのディレクトリが正しくありません" - -#: InvenTree/models.py:665 -#, python-brace-format -msgid "Filename contains illegal character '{c}'" -msgstr "ファイル名に無効な文字'{c}'が含まれています" - -#: InvenTree/models.py:668 -msgid "Filename missing extension" -msgstr "ファイル名に拡張子がありません" - -#: InvenTree/models.py:677 -msgid "Attachment with this filename already exists" -msgstr "この名前の貼付ファイルは既に存在します" - -#: InvenTree/models.py:684 -msgid "Error renaming file" -msgstr "ファイル名の変更に失敗しました" - -#: InvenTree/models.py:860 +#: InvenTree/models.py:719 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:877 +#: InvenTree/models.py:736 msgid "Invalid choice" msgstr "無効な選択です" -#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 -#: common/serializers.py:403 company/models.py:614 machine/models.py:24 -#: part/models.py:898 part/models.py:3659 plugin/models.py:50 -#: report/models.py:149 stock/models.py:72 +#: InvenTree/models.py:766 common/models.py:2623 common/models.py:3036 +#: common/serializers.py:408 company/models.py:580 machine/models.py:24 +#: part/models.py:891 part/models.py:3639 plugin/models.py:51 +#: report/models.py:150 stock/models.py:73 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:83 @@ -501,25 +417,25 @@ msgstr "無効な選択です" #: templates/js/translated/company.js:724 #: templates/js/translated/company.js:913 #: templates/js/translated/company.js:1165 -#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 -#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1187 +#: templates/js/translated/part.js:1475 templates/js/translated/part.js:1611 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "お名前" -#: InvenTree/models.py:913 build/models.py:218 -#: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:523 company/models.py:840 +#: InvenTree/models.py:772 build/models.py:220 +#: build/templates/build/detail.html:24 common/models.py:138 +#: company/models.py:509 company/models.py:808 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 order/models.py:289 -#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 -#: part/models.py:3674 part/templates/part/category.html:82 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:914 +#: part/models.py:3654 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:155 -#: report/models.py:509 report/models.py:535 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 #: report/templates/report/inventree_build_order_report.html:117 -#: stock/admin.py:55 stock/models.py:78 stock/templates/stock/location.html:125 +#: stock/admin.py:54 stock/models.py:79 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 @@ -528,10 +444,10 @@ msgstr "お名前" #: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 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:2354 -#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1239 +#: templates/js/translated/part.js:1484 templates/js/translated/part.js:1622 +#: templates/js/translated/part.js:1959 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2897 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1706 #: templates/js/translated/purchase_order.js:1849 @@ -544,149 +460,141 @@ msgstr "お名前" msgid "Description" msgstr "説明" -#: InvenTree/models.py:914 stock/models.py:79 +#: InvenTree/models.py:773 stock/models.py:80 msgid "Description (optional)" msgstr "説明 (オプション)" -#: InvenTree/models.py:923 -msgid "parent" -msgstr "親" - -#: InvenTree/models.py:929 templates/js/translated/part.js:2793 +#: InvenTree/models.py:788 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "" -#: InvenTree/models.py:1035 +#: InvenTree/models.py:918 msgid "Markdown notes (optional)" msgstr "マークダウンメモ (オプション)" -#: InvenTree/models.py:1064 +#: InvenTree/models.py:947 msgid "Barcode Data" msgstr "バーコード情報" -#: InvenTree/models.py:1065 +#: InvenTree/models.py:948 msgid "Third party barcode data" msgstr "サードパーティ製バーコードデータ" -#: InvenTree/models.py:1071 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:1072 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:1125 +#: InvenTree/models.py:1008 msgid "Existing barcode found" msgstr "" -#: InvenTree/models.py:1168 +#: InvenTree/models.py:1051 msgid "Server Error" msgstr "" -#: InvenTree/models.py:1169 +#: InvenTree/models.py:1052 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:62 part/models.py:4212 +#: InvenTree/serializers.py:63 part/models.py:4192 msgid "Must be a valid number" msgstr "有効な数字でなければなりません" -#: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:3036 +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3001 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" -msgstr "" +msgstr "通貨" -#: InvenTree/serializers.py:102 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" -msgstr "" +msgstr "利用可能なオプションから通貨を選択してください" -#: InvenTree/serializers.py:441 +#: InvenTree/serializers.py:442 msgid "You do not have permission to change this user role." -msgstr "" +msgstr "このユーザのロールを変更する権限がありません" -#: InvenTree/serializers.py:453 +#: InvenTree/serializers.py:454 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:472 +#: InvenTree/serializers.py:473 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:474 +#: InvenTree/serializers.py:475 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:481 +#: InvenTree/serializers.py:482 msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:542 -msgid "Filename" -msgstr "ファイル名" - -#: InvenTree/serializers.py:576 +#: InvenTree/serializers.py:540 msgid "Invalid value" msgstr "無効な値です。" -#: InvenTree/serializers.py:596 +#: InvenTree/serializers.py:560 msgid "Data File" msgstr "データファイル" -#: InvenTree/serializers.py:597 +#: InvenTree/serializers.py:561 msgid "Select data file for upload" msgstr "アップロードするファイルを選択" -#: InvenTree/serializers.py:614 +#: InvenTree/serializers.py:578 msgid "Unsupported file type" msgstr "サポートされていないファイル形式" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:584 msgid "File is too large" msgstr "ファイルサイズが大きすぎます" -#: InvenTree/serializers.py:641 +#: InvenTree/serializers.py:605 msgid "No columns found in file" msgstr "ファイルに列が見つかりません" -#: InvenTree/serializers.py:644 +#: InvenTree/serializers.py:608 msgid "No data rows found in file" msgstr "ファイルにデータ行がみつかりません" -#: InvenTree/serializers.py:757 +#: InvenTree/serializers.py:721 msgid "No data rows provided" msgstr "データが入力されていません" -#: InvenTree/serializers.py:760 +#: InvenTree/serializers.py:724 msgid "No data columns supplied" msgstr "データ列が指定されていません" -#: InvenTree/serializers.py:827 +#: InvenTree/serializers.py:791 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "必須の列がありません: {name}" -#: InvenTree/serializers.py:836 +#: InvenTree/serializers.py:800 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "{col} 列が重複しています。" -#: InvenTree/serializers.py:859 +#: InvenTree/serializers.py:840 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:860 +#: InvenTree/serializers.py:841 msgid "URL of remote image file" msgstr "外部画像ファイルのURL" -#: InvenTree/serializers.py:878 +#: InvenTree/serializers.py:859 msgid "Downloading images from remote URL is not enabled" msgstr "外部URLからの画像ダウンロードは許可されていません" -#: InvenTree/status.py:66 part/serializers.py:1178 +#: InvenTree/status.py:66 part/serializers.py:1174 msgid "Background worker check failed" msgstr "バックグラウンドワーカーのチェックに失敗しました" @@ -698,27 +606,27 @@ msgstr "メールアドレスが未設定です" msgid "InvenTree system health checks failed" msgstr "InvenTree システムのヘルスチェックに失敗しました" -#: InvenTree/templatetags/inventree_extras.py:183 +#: InvenTree/templatetags/inventree_extras.py:184 msgid "Unknown database" msgstr "" -#: InvenTree/validators.py:31 InvenTree/validators.py:33 +#: InvenTree/validators.py:32 InvenTree/validators.py:34 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:39 +#: InvenTree/validators.py:40 msgid "Not a valid currency code" msgstr "" -#: InvenTree/validators.py:121 InvenTree/validators.py:137 +#: InvenTree/validators.py:118 InvenTree/validators.py:134 msgid "Overage value must not be negative" msgstr "" -#: InvenTree/validators.py:139 +#: InvenTree/validators.py:136 msgid "Overage must not exceed 100%" msgstr "" -#: InvenTree/validators.py:145 +#: InvenTree/validators.py:142 msgid "Invalid value for overage" msgstr "" @@ -750,14 +658,14 @@ msgstr "InvenTree について" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: build/api.py:299 part/models.py:4070 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:300 part/models.py:4084 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4064 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2529 #: templates/js/translated/table_filters.js:186 @@ -778,30 +686,30 @@ msgstr "" msgid "Allocated" msgstr "" -#: build/api.py:311 company/models.py:904 company/serializers.py:383 +#: build/api.py:311 company/models.py:872 company/serializers.py:359 #: 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:2561 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:234 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 -#: templates/js/translated/part.js:699 +#: templates/js/translated/part.js:693 templates/js/translated/part.js:695 +#: templates/js/translated/part.js:700 #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:575 msgid "Available" msgstr "" -#: build/models.py:83 build/templates/build/build_base.html:9 +#: build/models.py:85 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_report.html:105 -#: stock/serializers.py:83 templates/email/build_order_completed.html:16 +#: stock/serializers.py:82 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:2892 msgid "Build Order" msgstr "組立注文" -#: build/models.py:84 build/templates/build/build_base.html:13 +#: build/models.py:86 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 @@ -812,25 +720,25 @@ msgstr "組立注文" msgid "Build Orders" msgstr "組立注文" -#: build/models.py:131 +#: build/models.py:133 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:142 order/models.py:240 +#: build/models.py:144 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "" -#: build/models.py:148 +#: build/models.py:150 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:209 +#: build/models.py:211 msgid "Build Order Reference" msgstr "" -#: build/models.py:210 order/models.py:463 order/models.py:928 -#: order/models.py:1325 order/models.py:2056 part/admin.py:419 -#: part/models.py:4105 part/templates/part/upload_bom.html:54 +#: build/models.py:212 order/models.py:463 order/models.py:926 +#: order/models.py:1289 order/models.py:2020 part/admin.py:411 +#: part/models.py:4085 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_purchase_order_report.html:28 #: report/templates/report/inventree_return_order_report.html:26 @@ -844,27 +752,27 @@ msgstr "" msgid "Reference" msgstr "" -#: build/models.py:221 +#: build/models.py:223 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:229 build/templates/build/build_base.html:183 +#: build/models.py:231 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:230 +#: build/models.py:232 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:235 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 -#: order/models.py:1450 order/models.py:1595 order/models.py:1596 -#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 -#: part/models.py:3191 part/models.py:3335 part/models.py:3358 -#: part/models.py:3379 part/models.py:3401 part/models.py:3511 -#: part/models.py:3807 part/models.py:3963 part/models.py:4056 -#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 +#: build/models.py:237 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1026 order/api.py:805 +#: order/models.py:1414 order/models.py:1559 order/models.py:1560 +#: part/api.py:1494 part/api.py:1788 part/models.py:395 part/models.py:3012 +#: part/models.py:3156 part/models.py:3303 part/models.py:3324 +#: part/models.py:3346 part/models.py:3477 part/models.py:3787 +#: part/models.py:3943 part/models.py:4036 part/models.py:4395 +#: part/serializers.py:1120 part/serializers.py:1726 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -875,8 +783,8 @@ msgstr "" #: report/templates/report/inventree_return_order_report.html:24 #: report/templates/report/inventree_sales_order_report.html:27 #: report/templates/report/inventree_stock_location_report.html:102 -#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 -#: stock/serializers.py:818 templates/InvenTree/search.html:82 +#: stock/serializers.py:109 stock/serializers.py:157 stock/serializers.py:423 +#: stock/serializers.py:820 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 @@ -889,8 +797,8 @@ msgstr "" #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 -#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2323 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:1944 templates/js/translated/part.js:2016 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 #: templates/js/translated/purchase_order.js:751 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1848 @@ -908,107 +816,107 @@ msgstr "" msgid "Part" msgstr "パーツ" -#: build/models.py:243 +#: build/models.py:245 msgid "Select part to build" msgstr "" -#: build/models.py:248 +#: build/models.py:250 msgid "Sales Order Reference" msgstr "" -#: build/models.py:252 +#: build/models.py:254 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:257 build/serializers.py:1000 +#: build/models.py:259 build/serializers.py:999 #: templates/js/translated/build.js:1731 #: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "" -#: build/models.py:261 +#: build/models.py:263 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:266 +#: build/models.py:268 msgid "Destination Location" msgstr "" -#: build/models.py:270 +#: build/models.py:272 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:274 +#: build/models.py:276 msgid "Build Quantity" msgstr "" -#: build/models.py:277 +#: build/models.py:279 msgid "Number of stock items to build" msgstr "" -#: build/models.py:281 +#: build/models.py:283 msgid "Completed items" msgstr "" -#: build/models.py:283 +#: build/models.py:285 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:287 +#: build/models.py:289 msgid "Build Status" msgstr "組立状況" -#: build/models.py:291 +#: build/models.py:293 msgid "Build status code" msgstr "" -#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 -#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 +#: build/models.py:302 build/serializers.py:286 order/serializers.py:580 +#: stock/models.py:838 stock/serializers.py:74 stock/serializers.py:1458 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "" -#: build/models.py:304 build/serializers.py:288 +#: build/models.py:306 build/serializers.py:287 msgid "Batch code for this build output" msgstr "" -#: build/models.py:307 order/models.py:316 order/serializers.py:120 -#: part/models.py:1122 part/templates/part/part_base.html:310 +#: build/models.py:309 order/models.py:316 order/serializers.py:119 +#: part/models.py:1115 part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:338 #: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "作成日時" -#: build/models.py:311 +#: build/models.py:313 msgid "Target completion date" msgstr "" -#: build/models.py:312 +#: build/models.py:314 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:315 order/models.py:521 order/models.py:2101 +#: build/models.py:317 order/models.py:521 order/models.py:2065 #: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "" -#: build/models.py:321 +#: build/models.py:323 msgid "completed by" msgstr "" -#: build/models.py:329 templates/js/translated/build.js:2207 +#: build/models.py:331 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "" -#: build/models.py:330 +#: build/models.py:332 msgid "User who issued this build order" msgstr "" -#: build/models.py:338 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:145 +#: build/models.py:340 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:147 #: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:232 part/models.py:1139 +#: order/templates/order/sales_order_base.html:232 part/models.py:1132 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_report.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 @@ -1019,31 +927,36 @@ msgstr "" msgid "Responsible" msgstr "" -#: build/models.py:339 +#: build/models.py:341 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:344 build/templates/build/detail.html:108 +#: build/models.py:346 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:184 -#: part/templates/part/part_base.html:383 stock/models.py:836 +#: part/templates/part/part_base.html:383 stock/models.py:834 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "外部リンク" -#: build/models.py:349 +#: build/models.py:347 common/models.py:3178 part/models.py:956 +#: stock/models.py:834 +msgid "Link to external URL" +msgstr "外部 サイト へのリンク" + +#: build/models.py:351 msgid "Build Priority" msgstr "組立優先度" -#: build/models.py:352 +#: build/models.py:354 msgid "Priority of this build order" msgstr "" -#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: build/models.py:361 common/models.py:131 order/admin.py:18 #: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 #: templates/js/translated/build.js:2144 #: templates/js/translated/purchase_order.js:1710 @@ -1054,65 +967,65 @@ msgstr "" msgid "Project Code" msgstr "" -#: build/models.py:360 +#: build/models.py:362 msgid "Project code for this build order" msgstr "" -#: build/models.py:593 build/models.py:658 +#: build/models.py:595 build/models.py:660 msgid "Failed to offload task to complete build allocations" msgstr "" -#: build/models.py:615 +#: build/models.py:617 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:621 +#: build/models.py:623 msgid "A build order has been completed" msgstr "" -#: build/models.py:847 build/models.py:932 +#: build/models.py:849 build/models.py:934 msgid "No build output specified" msgstr "" -#: build/models.py:850 +#: build/models.py:852 msgid "Build output is already completed" msgstr "" -#: build/models.py:853 +#: build/models.py:855 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 -#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 -#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 -#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 +#: build/models.py:938 build/serializers.py:219 build/serializers.py:268 +#: build/serializers.py:866 order/models.py:559 order/serializers.py:432 +#: order/serializers.py:575 part/serializers.py:1484 part/serializers.py:1884 +#: stock/models.py:677 stock/models.py:1495 stock/serializers.py:603 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:941 build/serializers.py:225 +#: build/models.py:943 build/serializers.py:224 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1001 build/serializers.py:548 +#: build/models.py:1003 build/serializers.py:547 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1352 +#: build/models.py:1344 msgid "Build Order Line Item" msgstr "" -#: build/models.py:1377 +#: build/models.py:1369 msgid "Build object" msgstr "" -#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 -#: build/serializers.py:254 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2539 -#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 -#: part/forms.py:48 part/models.py:3205 part/models.py:4078 +#: build/models.py:1383 build/models.py:1639 build/serializers.py:206 +#: build/serializers.py:253 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2509 +#: order/models.py:1272 order/models.py:1931 order/serializers.py:1327 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3170 part/models.py:4058 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1121,8 +1034,8 @@ msgstr "" #: report/templates/report/inventree_sales_order_report.html:29 #: report/templates/report/inventree_stock_location_report.html:104 #: report/templates/report/inventree_test_report.html:90 -#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 -#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:125 stock/serializers.py:165 stock/serializers.py:594 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1133,8 +1046,8 @@ msgstr "" #: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 #: templates/js/translated/model_renderers.js:236 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:962 +#: templates/js/translated/part.js:1812 templates/js/translated/part.js:3342 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1154,38 +1067,38 @@ msgstr "" msgid "Quantity" msgstr "数量" -#: build/models.py:1392 +#: build/models.py:1384 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1472 +#: build/models.py:1464 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1481 +#: build/models.py:1473 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1491 order/models.py:1918 +#: build/models.py:1483 order/models.py:1882 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1497 order/models.py:1921 +#: build/models.py:1489 order/models.py:1885 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1503 +#: build/models.py:1495 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1562 +#: build/models.py:1554 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 -#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 -#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: build/models.py:1626 build/serializers.py:846 order/serializers.py:1171 +#: order/serializers.py:1192 stock/models.py:358 stock/serializers.py:91 +#: stock/serializers.py:697 stock/serializers.py:1177 stock/serializers.py:1289 #: stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 @@ -1201,70 +1114,70 @@ msgstr "" msgid "Stock Item" msgstr "在庫商品" -#: build/models.py:1635 +#: build/models.py:1627 msgid "Source stock item" msgstr "" -#: build/models.py:1648 +#: build/models.py:1640 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1656 +#: build/models.py:1648 msgid "Install into" msgstr "" -#: build/models.py:1657 +#: build/models.py:1649 msgid "Destination stock item" msgstr "" -#: build/serializers.py:157 build/serializers.py:876 +#: build/serializers.py:156 build/serializers.py:875 #: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "" -#: build/serializers.py:169 +#: build/serializers.py:168 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:173 +#: build/serializers.py:172 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:177 +#: build/serializers.py:176 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:188 +#: build/serializers.py:187 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:208 build/serializers.py:255 +#: build/serializers.py:207 build/serializers.py:254 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:276 +#: build/serializers.py:275 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:279 +#: build/serializers.py:278 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:294 order/serializers.py:589 order/serializers.py:1343 -#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:293 order/serializers.py:588 order/serializers.py:1331 +#: stock/serializers.py:614 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "シリアル番号" -#: build/serializers.py:295 +#: build/serializers.py:294 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 -#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 -#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 -#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 -#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 +#: build/serializers.py:299 build/serializers.py:440 build/serializers.py:512 +#: order/serializers.py:564 order/serializers.py:672 order/serializers.py:1656 +#: part/serializers.py:1140 stock/serializers.py:100 stock/serializers.py:625 +#: stock/serializers.py:785 stock/serializers.py:881 stock/serializers.py:1321 +#: stock/serializers.py:1577 stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:1001 #: templates/js/translated/build.js:2372 @@ -1280,54 +1193,54 @@ msgstr "" msgid "Location" msgstr "" -#: build/serializers.py:301 +#: build/serializers.py:300 msgid "Stock location for build output" msgstr "" -#: build/serializers.py:315 +#: build/serializers.py:314 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:316 +#: build/serializers.py:315 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:331 +#: build/serializers.py:330 msgid "Serial numbers must be provided for trackable parts" msgstr "" -#: build/serializers.py:356 stock/api.py:1031 +#: build/serializers.py:355 stock/api.py:1041 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:403 build/serializers.py:465 build/serializers.py:554 +#: build/serializers.py:402 build/serializers.py:464 build/serializers.py:553 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:442 +#: build/serializers.py:441 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:448 +#: build/serializers.py:447 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:449 +#: build/serializers.py:448 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:454 +#: build/serializers.py:453 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:514 +#: build/serializers.py:513 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:520 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:952 -#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 -#: stock/serializers.py:930 stock/serializers.py:1469 +#: build/serializers.py:519 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2044 order/serializers.py:596 stock/admin.py:164 +#: stock/serializers.py:932 stock/serializers.py:1465 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 @@ -1339,188 +1252,188 @@ msgstr "" msgid "Status" msgstr "ステータス" -#: build/serializers.py:526 +#: build/serializers.py:525 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:527 +#: build/serializers.py:526 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:611 msgid "Consume Allocated Stock" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:612 msgid "Consume any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:619 +#: build/serializers.py:618 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:620 +#: build/serializers.py:619 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:646 msgid "Not permitted" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:647 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:648 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:679 +#: build/serializers.py:678 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:681 +#: build/serializers.py:680 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:691 +#: build/serializers.py:690 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:696 +#: build/serializers.py:695 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:697 +#: build/serializers.py:696 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:707 templates/js/translated/build.js:315 +#: build/serializers.py:706 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:712 order/serializers.py:301 order/serializers.py:1246 +#: build/serializers.py:711 order/serializers.py:300 order/serializers.py:1234 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:713 +#: build/serializers.py:712 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:723 templates/js/translated/build.js:319 +#: build/serializers.py:722 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:732 templates/js/translated/build.js:303 +#: build/serializers.py:731 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:770 +#: build/serializers.py:769 msgid "Build Line" msgstr "組立ライン" -#: build/serializers.py:780 +#: build/serializers.py:779 msgid "Build output" msgstr "" -#: build/serializers.py:788 +#: build/serializers.py:787 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:824 +#: build/serializers.py:823 msgid "Build Line Item" msgstr "" -#: build/serializers.py:838 +#: build/serializers.py:837 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:853 stock/serializers.py:1194 +#: build/serializers.py:852 stock/serializers.py:1190 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:901 order/serializers.py:1237 +#: build/serializers.py:900 order/serializers.py:1225 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:907 +#: build/serializers.py:906 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:914 +#: build/serializers.py:913 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:938 order/serializers.py:1489 +#: build/serializers.py:937 order/serializers.py:1477 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:1001 +#: build/serializers.py:1000 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:1009 +#: build/serializers.py:1008 msgid "Exclude Location" msgstr "" -#: build/serializers.py:1010 +#: build/serializers.py:1009 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:1015 +#: build/serializers.py:1014 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:1016 +#: build/serializers.py:1015 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:1021 +#: build/serializers.py:1020 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:1022 +#: build/serializers.py:1021 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:1027 +#: build/serializers.py:1026 msgid "Optional Items" msgstr "" -#: build/serializers.py:1028 +#: build/serializers.py:1027 msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1050 +#: build/serializers.py:1049 msgid "Failed to start auto-allocation task" msgstr "" -#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 -#: stock/api.py:794 +#: build/serializers.py:1139 part/models.py:3953 part/models.py:4387 +#: stock/api.py:804 msgid "BOM Item" msgstr "" -#: build/serializers.py:1149 templates/js/translated/index.js:130 +#: build/serializers.py:1148 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:832 part/serializers.py:1506 +#: build/serializers.py:1153 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:828 part/serializers.py:1502 #: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 -#: templates/js/translated/build.js:2613 templates/js/translated/part.js:709 -#: templates/js/translated/part.js:2148 +#: templates/js/translated/build.js:2613 templates/js/translated/part.js:710 +#: templates/js/translated/part.js:2149 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1159 part/serializers.py:1508 +#: build/serializers.py:1158 part/serializers.py:1504 #: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 +#: build/serializers.py:1163 part/bom.py:172 part/serializers.py:1527 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1929 msgid "Available Stock" @@ -1544,7 +1457,7 @@ msgstr "キャンセル済" #: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 #: order/status_codes.py:44 order/status_codes.py:69 #: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:165 report/models.py:443 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 msgid "Complete" msgstr "完了" @@ -1674,11 +1587,11 @@ msgstr "" #: build/templates/build/build_base.html:160 #: build/templates/build/detail.html:138 order/models.py:309 -#: order/models.py:1343 order/templates/order/order_base.html:186 +#: order/models.py:1307 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:196 #: report/templates/report/inventree_build_order_report.html:125 -#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1831 #: templates/js/translated/purchase_order.js:1739 #: templates/js/translated/purchase_order.js:2147 #: templates/js/translated/return_order.js:346 @@ -1711,8 +1624,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 -#: order/models.py:1587 order/models.py:1701 order/models.py:1855 +#: build/templates/build/detail.html:101 order/api.py:1463 order/models.py:845 +#: order/models.py:1551 order/models.py:1665 order/models.py:1819 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_report.html:135 @@ -1762,7 +1675,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1479 +#: build/templates/build/detail.html:49 order/models.py:1443 #: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "" @@ -1775,7 +1688,7 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:163 +#: build/templates/build/detail.html:80 stock/admin.py:162 #: stock/templates/stock/item_base.html:162 #: templates/js/translated/build.js:1380 #: templates/js/translated/model_renderers.js:241 @@ -1894,11 +1807,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:436 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -1914,6 +1827,34 @@ msgstr "" msgid "Incomplete Outputs" msgstr "" +#: common/api.py:689 +msgid "Is Link" +msgstr "" + +#: common/api.py:697 +msgid "Is File" +msgstr "" + +#: common/api.py:739 +msgid "User does not have permission to delete this attachment" +msgstr "" + +#: common/currency.py:130 +msgid "Invalid currency code" +msgstr "" + +#: common/currency.py:132 +msgid "Duplicate currency code" +msgstr "" + +#: common/currency.py:137 +msgid "No valid currency codes provided" +msgstr "" + +#: common/currency.py:154 +msgid "No plugin" +msgstr "" + #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1952,1507 +1893,1512 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:71 +#: common/models.py:73 msgid "Updated" msgstr "" -#: common/models.py:72 +#: common/models.py:74 msgid "Timestamp of last update" msgstr "" -#: common/models.py:105 +#: common/models.py:107 msgid "Site URL is locked by configuration" msgstr "" -#: common/models.py:130 +#: common/models.py:132 msgid "Unique project code" msgstr "" -#: common/models.py:137 +#: common/models.py:139 msgid "Project description" msgstr "" -#: common/models.py:146 +#: common/models.py:148 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:766 +#: common/models.py:765 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:770 +#: common/models.py:769 msgid "Settings value" msgstr "" -#: common/models.py:822 +#: common/models.py:821 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:838 +#: common/models.py:837 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:846 +#: common/models.py:845 msgid "Value must be an integer value" msgstr "" -#: common/models.py:883 +#: common/models.py:882 msgid "Key string must be unique" msgstr "" -#: common/models.py:1115 +#: common/models.py:1114 msgid "No group" msgstr "" -#: common/models.py:1158 -msgid "An empty domain is not allowed." -msgstr "" - -#: common/models.py:1160 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "" - -#: common/models.py:1172 -msgid "No plugin" -msgstr "" - -#: common/models.py:1260 +#: common/models.py:1213 msgid "Restart required" msgstr "" -#: common/models.py:1262 +#: common/models.py:1215 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1269 +#: common/models.py:1222 msgid "Pending migrations" msgstr "" -#: common/models.py:1270 +#: common/models.py:1223 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1275 +#: common/models.py:1228 msgid "Server Instance Name" msgstr "" -#: common/models.py:1277 +#: common/models.py:1230 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1281 +#: common/models.py:1234 msgid "Use instance name" msgstr "" -#: common/models.py:1282 +#: common/models.py:1235 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1287 +#: common/models.py:1240 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1288 +#: common/models.py:1241 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1293 company/models.py:108 company/models.py:109 +#: common/models.py:1246 company/models.py:111 company/models.py:112 msgid "Company name" msgstr "" -#: common/models.py:1294 +#: common/models.py:1247 msgid "Internal company name" msgstr "" -#: common/models.py:1298 +#: common/models.py:1251 msgid "Base URL" msgstr "" -#: common/models.py:1299 +#: common/models.py:1252 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1305 +#: common/models.py:1258 msgid "Default Currency" msgstr "" -#: common/models.py:1306 +#: common/models.py:1259 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1312 +#: common/models.py:1265 +msgid "Supported Currencies" +msgstr "" + +#: common/models.py:1266 +msgid "List of supported currency codes" +msgstr "" + +#: common/models.py:1272 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1314 +#: common/models.py:1274 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1317 common/models.py:1373 common/models.py:1386 -#: common/models.py:1394 common/models.py:1403 common/models.py:1412 -#: common/models.py:1620 common/models.py:1642 common/models.py:1757 -#: common/models.py:2076 +#: common/models.py:1277 common/models.py:1333 common/models.py:1346 +#: common/models.py:1354 common/models.py:1363 common/models.py:1372 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:2046 msgid "days" msgstr "" -#: common/models.py:1321 +#: common/models.py:1281 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1322 +#: common/models.py:1282 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1327 +#: common/models.py:1287 msgid "Download from URL" msgstr "" -#: common/models.py:1329 +#: common/models.py:1289 msgid "Allow download of remote images and files from external URL" msgstr "外部URLからの画像ダウンロードを許可する" -#: common/models.py:1335 +#: common/models.py:1295 msgid "Download Size Limit" msgstr "" -#: common/models.py:1336 +#: common/models.py:1296 msgid "Maximum allowable download size for remote image" msgstr "外部URL画像の最大サイズ" -#: common/models.py:1342 +#: common/models.py:1302 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1344 +#: common/models.py:1304 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:1349 +#: common/models.py:1309 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1350 +#: common/models.py:1310 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1355 +#: common/models.py:1315 msgid "Require confirm" msgstr "" -#: common/models.py:1356 +#: common/models.py:1316 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1361 +#: common/models.py:1321 msgid "Tree Depth" msgstr "" -#: common/models.py:1363 +#: common/models.py:1323 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1369 +#: common/models.py:1329 msgid "Update Check Interval" msgstr "" -#: common/models.py:1370 +#: common/models.py:1330 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1376 +#: common/models.py:1336 msgid "Automatic Backup" msgstr "" -#: common/models.py:1377 +#: common/models.py:1337 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1382 +#: common/models.py:1342 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1383 +#: common/models.py:1343 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1389 +#: common/models.py:1349 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1391 +#: common/models.py:1351 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1398 +#: common/models.py:1358 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1400 +#: common/models.py:1360 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1407 +#: common/models.py:1367 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1409 +#: common/models.py:1369 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1416 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1376 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1417 +#: common/models.py:1377 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1422 +#: common/models.py:1382 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1423 +#: common/models.py:1383 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1429 +#: common/models.py:1389 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1430 +#: common/models.py:1390 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1435 +#: common/models.py:1395 msgid "Part Revisions" msgstr "" -#: common/models.py:1436 +#: common/models.py:1396 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1441 +#: common/models.py:1401 msgid "Allow Deletion from Assembly" msgstr "" -#: common/models.py:1442 +#: common/models.py:1402 msgid "Allow deletion of parts which are used in an assembly" msgstr "" -#: common/models.py:1447 +#: common/models.py:1407 msgid "IPN Regex" msgstr "" -#: common/models.py:1448 +#: common/models.py:1408 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1451 +#: common/models.py:1411 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1452 +#: common/models.py:1412 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1457 +#: common/models.py:1417 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1458 +#: common/models.py:1418 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1463 +#: common/models.py:1423 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1464 +#: common/models.py:1424 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1469 +#: common/models.py:1429 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1470 +#: common/models.py:1430 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1475 +#: common/models.py:1435 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1476 +#: common/models.py:1436 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1481 +#: common/models.py:1441 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1482 +#: common/models.py:1442 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1487 part/admin.py:108 part/models.py:3815 -#: report/models.py:293 report/models.py:360 report/serializers.py:90 -#: report/serializers.py:131 stock/serializers.py:228 +#: common/models.py:1447 part/admin.py:108 part/models.py:3795 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:227 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "テンプレート" -#: common/models.py:1488 +#: common/models.py:1448 msgid "Parts are templates by default" msgstr "パーツはデフォルトのテンプレートです" -#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 +#: common/models.py:1453 part/admin.py:91 part/admin.py:425 part/models.py:1052 #: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" msgstr "アセンブリ" -#: common/models.py:1494 +#: common/models.py:1454 msgid "Parts can be assembled from other components by default" msgstr "パーツはデフォルトで他のコンポーネントから組み立てることができます" -#: common/models.py:1499 part/admin.py:95 part/models.py:1065 +#: common/models.py:1459 part/admin.py:95 part/models.py:1058 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "コンポーネント" -#: common/models.py:1500 +#: common/models.py:1460 msgid "Parts can be used as sub-components by default" msgstr "パーツはデフォルトでサブコンポーネントとして使用できます" -#: common/models.py:1505 part/admin.py:100 part/models.py:1077 +#: common/models.py:1465 part/admin.py:100 part/models.py:1070 msgid "Purchaseable" msgstr "購入可能" -#: common/models.py:1506 +#: common/models.py:1466 msgid "Parts are purchaseable by default" msgstr "パーツはデフォルトで購入可能です" -#: common/models.py:1511 part/admin.py:104 part/models.py:1083 +#: common/models.py:1471 part/admin.py:104 part/models.py:1076 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "販売可能" -#: common/models.py:1512 +#: common/models.py:1472 msgid "Parts are salable by default" msgstr "パーツはデフォルトで販売可能です" -#: common/models.py:1517 part/admin.py:113 part/models.py:1071 +#: common/models.py:1477 part/admin.py:113 part/models.py:1064 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" msgstr "追跡可能" -#: common/models.py:1518 +#: common/models.py:1478 msgid "Parts are trackable by default" msgstr "パーツはデフォルトで追跡可能です" -#: common/models.py:1523 part/admin.py:117 part/models.py:1093 +#: common/models.py:1483 part/admin.py:117 part/models.py:1086 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" msgstr "" -#: common/models.py:1524 +#: common/models.py:1484 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1529 +#: common/models.py:1489 msgid "Show Import in Views" msgstr "" -#: common/models.py:1530 +#: common/models.py:1490 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1535 +#: common/models.py:1495 msgid "Show related parts" msgstr "" -#: common/models.py:1536 +#: common/models.py:1496 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1541 +#: common/models.py:1501 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1542 +#: common/models.py:1502 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1547 templates/js/translated/part.js:107 +#: common/models.py:1507 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1549 +#: common/models.py:1509 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1555 +#: common/models.py:1515 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1556 +#: common/models.py:1516 msgid "Format to display the part name" msgstr "" -#: common/models.py:1562 +#: common/models.py:1522 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1563 +#: common/models.py:1523 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1567 +#: common/models.py:1527 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1569 +#: common/models.py:1529 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1575 +#: common/models.py:1535 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1577 +#: common/models.py:1537 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1583 +#: common/models.py:1548 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1585 +#: common/models.py:1550 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1591 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1593 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1599 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1601 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1607 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1609 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1615 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1617 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1630 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1632 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1638 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1640 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1647 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1648 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1653 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1655 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1661 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1662 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1667 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1669 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1675 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1676 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1681 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "デバッグモード" -#: common/models.py:1682 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1687 +#: common/models.py:1657 msgid "Log Report Errors" msgstr "" -#: common/models.py:1688 +#: common/models.py:1658 msgid "Log errors which occur when generating reports" msgstr "" -#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:301 +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:302 msgid "Page Size" msgstr "" -#: common/models.py:1694 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1699 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1700 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1705 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1707 +#: common/models.py:1677 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1713 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1714 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1719 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "シリアル番号を自動入力" -#: common/models.py:1720 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1725 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1727 +#: common/models.py:1697 msgid "Determines default behavior when a stock item is depleted" msgstr "" -#: common/models.py:1733 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1735 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1740 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1741 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1746 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1747 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1752 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1754 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1761 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1762 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1767 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1768 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1773 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1774 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1778 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1779 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1784 +#: common/models.py:1754 msgid "Check BOM when installing items" msgstr "" -#: common/models.py:1786 +#: common/models.py:1756 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "" -#: common/models.py:1792 +#: common/models.py:1762 msgid "Allow Out of Stock Transfer" msgstr "" -#: common/models.py:1794 +#: common/models.py:1764 msgid "Allow stock items which are not in stock to be transferred between stock locations" msgstr "" -#: common/models.py:1800 +#: common/models.py:1770 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1802 +#: common/models.py:1772 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1808 common/models.py:1836 common/models.py:1858 -#: common/models.py:1894 +#: common/models.py:1778 common/models.py:1806 common/models.py:1828 +#: common/models.py:1864 msgid "Require Responsible Owner" msgstr "" -#: common/models.py:1809 common/models.py:1837 common/models.py:1859 -#: common/models.py:1895 +#: common/models.py:1779 common/models.py:1807 common/models.py:1829 +#: common/models.py:1865 msgid "A responsible owner must be assigned to each order" msgstr "" -#: common/models.py:1814 +#: common/models.py:1784 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1816 +#: common/models.py:1786 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:1822 +#: common/models.py:1792 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1823 +#: common/models.py:1793 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1828 +#: common/models.py:1798 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1830 +#: common/models.py:1800 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1842 +#: common/models.py:1812 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1844 +#: common/models.py:1814 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1850 +#: common/models.py:1820 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1852 +#: common/models.py:1822 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1864 +#: common/models.py:1834 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1865 +#: common/models.py:1835 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1870 +#: common/models.py:1840 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1872 +#: common/models.py:1842 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1878 +#: common/models.py:1848 msgid "Mark Shipped Orders as Complete" msgstr "" -#: common/models.py:1880 +#: common/models.py:1850 msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" msgstr "" -#: common/models.py:1886 +#: common/models.py:1856 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1888 +#: common/models.py:1858 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1900 +#: common/models.py:1870 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1902 +#: common/models.py:1872 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1908 +#: common/models.py:1878 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1910 +#: common/models.py:1880 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1917 +#: common/models.py:1887 msgid "Enable password forgot" msgstr "" -#: common/models.py:1918 +#: common/models.py:1888 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1923 +#: common/models.py:1893 msgid "Enable registration" msgstr "" -#: common/models.py:1924 +#: common/models.py:1894 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1929 +#: common/models.py:1899 msgid "Enable SSO" msgstr "" -#: common/models.py:1930 +#: common/models.py:1900 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1935 +#: common/models.py:1905 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1937 +#: common/models.py:1907 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1943 +#: common/models.py:1913 msgid "Email required" msgstr "メールアドレスは必須です" -#: common/models.py:1944 +#: common/models.py:1914 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1949 +#: common/models.py:1919 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1951 +#: common/models.py:1921 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1957 +#: common/models.py:1927 msgid "Mail twice" msgstr "" -#: common/models.py:1958 +#: common/models.py:1928 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1963 +#: common/models.py:1933 msgid "Password twice" msgstr "" -#: common/models.py:1964 +#: common/models.py:1934 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1969 +#: common/models.py:1939 msgid "Allowed domains" msgstr "" -#: common/models.py:1971 +#: common/models.py:1941 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1977 +#: common/models.py:1947 msgid "Group on signup" msgstr "" -#: common/models.py:1978 +#: common/models.py:1948 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1983 +#: common/models.py:1953 msgid "Enforce MFA" msgstr "" -#: common/models.py:1984 +#: common/models.py:1954 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1989 +#: common/models.py:1959 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1991 +#: common/models.py:1961 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1999 +#: common/models.py:1969 msgid "Check for plugin updates" msgstr "" -#: common/models.py:2000 +#: common/models.py:1970 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:2006 +#: common/models.py:1976 msgid "Enable URL integration" msgstr "" -#: common/models.py:2007 +#: common/models.py:1977 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:2013 +#: common/models.py:1983 msgid "Enable navigation integration" msgstr "" -#: common/models.py:2014 +#: common/models.py:1984 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:2020 +#: common/models.py:1990 msgid "Enable app integration" msgstr "" -#: common/models.py:2021 +#: common/models.py:1991 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:2027 +#: common/models.py:1997 msgid "Enable schedule integration" msgstr "" -#: common/models.py:2028 +#: common/models.py:1998 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:2034 +#: common/models.py:2004 msgid "Enable event integration" msgstr "" -#: common/models.py:2035 +#: common/models.py:2005 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:2041 +#: common/models.py:2011 msgid "Enable project codes" msgstr "" -#: common/models.py:2042 +#: common/models.py:2012 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:2047 +#: common/models.py:2017 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:2049 +#: common/models.py:2019 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:2055 +#: common/models.py:2025 msgid "Exclude External Locations" msgstr "" -#: common/models.py:2057 +#: common/models.py:2027 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:2063 +#: common/models.py:2033 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:2065 +#: common/models.py:2035 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:2071 +#: common/models.py:2041 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:2073 +#: common/models.py:2043 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:2080 +#: common/models.py:2050 msgid "Display Users full names" msgstr "" -#: common/models.py:2081 +#: common/models.py:2051 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:2086 +#: common/models.py:2056 msgid "Enable Test Station Data" msgstr "" -#: common/models.py:2087 +#: common/models.py:2057 msgid "Enable test station data collection for test results" msgstr "" -#: common/models.py:2099 common/models.py:2509 +#: common/models.py:2069 common/models.py:2479 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2142 +#: common/models.py:2112 msgid "Hide inactive parts" msgstr "非アクティブな部品を非表示" -#: common/models.py:2144 +#: common/models.py:2114 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2150 +#: common/models.py:2120 msgid "Show subscribed parts" msgstr "購読中の部品を表示" -#: common/models.py:2151 +#: common/models.py:2121 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2156 +#: common/models.py:2126 msgid "Show subscribed categories" msgstr "購読中のカテゴリを表示" -#: common/models.py:2157 +#: common/models.py:2127 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2162 +#: common/models.py:2132 msgid "Show latest parts" msgstr "" -#: common/models.py:2163 +#: common/models.py:2133 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2168 +#: common/models.py:2138 msgid "Show invalid BOMs" msgstr "" -#: common/models.py:2169 +#: common/models.py:2139 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2174 +#: common/models.py:2144 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2175 +#: common/models.py:2145 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2180 +#: common/models.py:2150 msgid "Show low stock" msgstr "" -#: common/models.py:2181 +#: common/models.py:2151 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2186 +#: common/models.py:2156 msgid "Show depleted stock" msgstr "" -#: common/models.py:2187 +#: common/models.py:2157 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2192 +#: common/models.py:2162 msgid "Show needed stock" msgstr "" -#: common/models.py:2193 +#: common/models.py:2163 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2198 +#: common/models.py:2168 msgid "Show expired stock" msgstr "" -#: common/models.py:2199 +#: common/models.py:2169 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2204 +#: common/models.py:2174 msgid "Show stale stock" msgstr "" -#: common/models.py:2205 +#: common/models.py:2175 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2210 +#: common/models.py:2180 msgid "Show pending builds" msgstr "" -#: common/models.py:2211 +#: common/models.py:2181 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2216 +#: common/models.py:2186 msgid "Show overdue builds" msgstr "" -#: common/models.py:2217 +#: common/models.py:2187 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2222 +#: common/models.py:2192 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2223 +#: common/models.py:2193 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2228 +#: common/models.py:2198 msgid "Show overdue POs" msgstr "" -#: common/models.py:2229 +#: common/models.py:2199 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2234 +#: common/models.py:2204 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2235 +#: common/models.py:2205 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2240 +#: common/models.py:2210 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2241 +#: common/models.py:2211 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2246 +#: common/models.py:2216 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2247 +#: common/models.py:2217 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2252 +#: common/models.py:2222 msgid "Show News" msgstr "" -#: common/models.py:2253 +#: common/models.py:2223 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2258 +#: common/models.py:2228 msgid "Inline label display" msgstr "" -#: common/models.py:2260 +#: common/models.py:2230 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2266 +#: common/models.py:2236 msgid "Default label printer" msgstr "" -#: common/models.py:2268 +#: common/models.py:2238 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2274 +#: common/models.py:2244 msgid "Inline report display" msgstr "" -#: common/models.py:2276 +#: common/models.py:2246 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2282 +#: common/models.py:2252 msgid "Search Parts" msgstr "" -#: common/models.py:2283 +#: common/models.py:2253 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2288 +#: common/models.py:2258 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2289 +#: common/models.py:2259 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2294 +#: common/models.py:2264 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2295 +#: common/models.py:2265 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2300 +#: common/models.py:2270 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2301 +#: common/models.py:2271 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2306 +#: common/models.py:2276 msgid "Search Categories" msgstr "" -#: common/models.py:2307 +#: common/models.py:2277 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2312 +#: common/models.py:2282 msgid "Search Stock" msgstr "" -#: common/models.py:2313 +#: common/models.py:2283 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2318 +#: common/models.py:2288 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2320 +#: common/models.py:2290 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2326 +#: common/models.py:2296 msgid "Search Locations" msgstr "" -#: common/models.py:2327 +#: common/models.py:2297 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2332 +#: common/models.py:2302 msgid "Search Companies" msgstr "" -#: common/models.py:2333 +#: common/models.py:2303 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2338 +#: common/models.py:2308 msgid "Search Build Orders" msgstr "" -#: common/models.py:2339 +#: common/models.py:2309 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2344 +#: common/models.py:2314 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2345 +#: common/models.py:2315 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2350 +#: common/models.py:2320 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2352 +#: common/models.py:2322 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2358 +#: common/models.py:2328 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2359 +#: common/models.py:2329 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2364 +#: common/models.py:2334 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2366 +#: common/models.py:2336 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2372 +#: common/models.py:2342 msgid "Search Return Orders" msgstr "" -#: common/models.py:2373 +#: common/models.py:2343 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2378 +#: common/models.py:2348 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2380 +#: common/models.py:2350 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2386 +#: common/models.py:2356 msgid "Search Preview Results" msgstr "" -#: common/models.py:2388 +#: common/models.py:2358 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2394 +#: common/models.py:2364 msgid "Regex Search" msgstr "" -#: common/models.py:2395 +#: common/models.py:2365 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2400 +#: common/models.py:2370 msgid "Whole Word Search" msgstr "" -#: common/models.py:2401 +#: common/models.py:2371 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2406 +#: common/models.py:2376 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2407 +#: common/models.py:2377 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2412 +#: common/models.py:2382 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2413 +#: common/models.py:2383 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2418 +#: common/models.py:2388 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2419 +#: common/models.py:2389 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2424 +#: common/models.py:2394 msgid "Date Format" msgstr "" -#: common/models.py:2425 +#: common/models.py:2395 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2438 part/templates/part/detail.html:41 +#: common/models.py:2408 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2439 +#: common/models.py:2409 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2444 part/templates/part/detail.html:62 +#: common/models.py:2414 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2446 +#: common/models.py:2416 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2452 +#: common/models.py:2422 msgid "Table String Length" msgstr "" -#: common/models.py:2454 +#: common/models.py:2424 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2460 +#: common/models.py:2430 msgid "Default part label template" msgstr "" -#: common/models.py:2461 +#: common/models.py:2431 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2466 +#: common/models.py:2436 msgid "Default stock item template" msgstr "" -#: common/models.py:2468 +#: common/models.py:2438 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2474 +#: common/models.py:2444 msgid "Default stock location label template" msgstr "" -#: common/models.py:2476 +#: common/models.py:2446 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2482 +#: common/models.py:2452 msgid "Default build line label template" msgstr "" -#: common/models.py:2484 +#: common/models.py:2454 msgid "The build line label template to be automatically selected" msgstr "" -#: common/models.py:2490 +#: common/models.py:2460 msgid "Receive error reports" msgstr "" -#: common/models.py:2491 +#: common/models.py:2461 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2496 +#: common/models.py:2466 msgid "Last used printing machines" msgstr "" -#: common/models.py:2497 +#: common/models.py:2467 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2540 +#: common/models.py:2487 common/models.py:2488 common/models.py:2636 +#: common/models.py:2637 common/models.py:2882 common/models.py:2883 +#: common/models.py:3193 common/models.py:3194 part/models.py:3193 +#: part/models.py:3280 part/models.py:3353 part/models.py:3381 +#: plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "ユーザー" + +#: common/models.py:2510 msgid "Price break quantity" msgstr "" -#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1382 order/models.py:2301 -#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 +#: common/models.py:2517 company/serializers.py:472 order/admin.py:42 +#: order/models.py:1346 order/models.py:2265 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1886 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:740 msgid "Price" msgstr "" -#: common/models.py:2548 +#: common/models.py:2518 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2719 common/models.py:2904 +#: common/models.py:2613 common/models.py:2798 msgid "Endpoint" msgstr "" -#: common/models.py:2720 +#: common/models.py:2614 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2730 +#: common/models.py:2624 msgid "Name for this webhook" msgstr "" -#: common/models.py:2734 company/models.py:160 company/models.py:814 -#: machine/models.py:39 part/admin.py:88 part/models.py:1088 -#: plugin/models.py:65 templates/js/translated/company.js:523 +#: common/models.py:2628 company/models.py:163 company/models.py:782 +#: machine/models.py:39 part/admin.py:88 part/models.py:1081 +#: plugin/models.py:66 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3462,101 +3408,118 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2734 +#: common/models.py:2628 msgid "Is this webhook active" msgstr "" -#: common/models.py:2750 users/models.py:159 +#: common/models.py:2644 users/models.py:159 msgid "Token" msgstr "" -#: common/models.py:2751 +#: common/models.py:2645 msgid "Token for access" msgstr "" -#: common/models.py:2759 +#: common/models.py:2653 msgid "Secret" msgstr "" -#: common/models.py:2760 +#: common/models.py:2654 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2868 +#: common/models.py:2762 msgid "Message ID" msgstr "メッセージ ID:" -#: common/models.py:2869 +#: common/models.py:2763 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2877 +#: common/models.py:2771 msgid "Host" msgstr "" -#: common/models.py:2878 +#: common/models.py:2772 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2886 +#: common/models.py:2780 msgid "Header" msgstr "" -#: common/models.py:2887 +#: common/models.py:2781 msgid "Header of this message" msgstr "" -#: common/models.py:2894 +#: common/models.py:2788 msgid "Body" msgstr "" -#: common/models.py:2895 +#: common/models.py:2789 msgid "Body of this message" msgstr "" -#: common/models.py:2905 +#: common/models.py:2799 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2910 +#: common/models.py:2804 msgid "Worked on" msgstr "" -#: common/models.py:2911 +#: common/models.py:2805 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:3037 +#: common/models.py:2931 msgid "Id" msgstr "" -#: common/models.py:3039 templates/js/translated/company.js:965 +#: common/models.py:2933 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:3043 templates/js/translated/news.js:60 +#: common/models.py:2935 common/models.py:3177 company/models.py:149 +#: company/models.py:440 company/models.py:500 company/models.py:799 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +#: part/admin.py:55 part/models.py:955 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "リンク" + +#: common/models.py:2937 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:3045 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2939 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:3047 templates/js/translated/news.js:52 +#: common/models.py:2941 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Read" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Was this news item read?" msgstr "" -#: common/models.py:3067 company/models.py:156 part/models.py:972 +#: common/models.py:2961 company/models.py:159 part/models.py:965 #: 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.html:35 @@ -3566,34 +3529,89 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:3067 +#: common/models.py:2961 msgid "Image file" msgstr "" -#: common/models.py:3109 +#: common/models.py:2973 common/models.py:3161 +msgid "Target model type for this image" +msgstr "" + +#: common/models.py:2977 +msgid "Target model ID for this image" +msgstr "" + +#: common/models.py:3018 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3128 +#: common/models.py:3037 msgid "Unit name" msgstr "" -#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3044 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3136 +#: common/models.py:3045 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3052 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3144 +#: common/models.py:3053 msgid "Unit definition" msgstr "" +#: common/models.py:3111 common/models.py:3168 stock/models.py:2426 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "添付ファイル" + +#: common/models.py:3123 +msgid "Missing file" +msgstr "ファイルがありません" + +#: common/models.py:3124 +msgid "Missing external link" +msgstr "外部リンクが見つかりません。" + +#: common/models.py:3169 +msgid "Select file to attach" +msgstr "添付ファイルを選択" + +#: common/models.py:3184 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "コメント:" + +#: common/models.py:3185 +msgid "Attachment comment" +msgstr "" + +#: common/models.py:3201 +msgid "Upload date" +msgstr "" + +#: common/models.py:3202 +msgid "Date the file was uploaded" +msgstr "" + +#: common/models.py:3206 +msgid "File size" +msgstr "" + +#: common/models.py:3206 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3244 common/serializers.py:553 +msgid "Invalid model type specified for attachment" +msgstr "" + #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" @@ -3628,66 +3646,103 @@ msgstr "" msgid "Error raised by plugin" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:371 msgid "Is Running" msgstr "" -#: common/serializers.py:372 +#: common/serializers.py:377 msgid "Pending Tasks" msgstr "" -#: common/serializers.py:378 +#: common/serializers.py:383 msgid "Scheduled Tasks" msgstr "" -#: common/serializers.py:384 +#: common/serializers.py:389 msgid "Failed Tasks" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Task ID" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Unique task ID" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock time" msgstr "" -#: common/serializers.py:403 +#: common/serializers.py:408 msgid "Task name" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function name" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Arguments" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Task arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Keyword Arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Task keyword arguments" msgstr "" +#: common/serializers.py:525 +msgid "Filename" +msgstr "ファイル名" + +#: common/serializers.py:532 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: common/serializers.py:559 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "" + +#: common/validators.py:33 +msgid "No attachment model type provided" +msgstr "" + +#: common/validators.py:39 +msgid "Invalid attachment model type" +msgstr "" + +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "" + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +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 @@ -3726,210 +3781,222 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/api.py:164 +#: company/api.py:144 msgid "Part is Active" msgstr "" -#: company/api.py:168 +#: company/api.py:148 msgid "Manufacturer is Active" msgstr "" -#: company/api.py:317 +#: company/api.py:281 msgid "Supplier Part is Active" msgstr "" -#: company/api.py:321 +#: company/api.py:285 msgid "Internal Part is Active" msgstr "" -#: company/api.py:325 +#: company/api.py:289 msgid "Supplier is Active" msgstr "" -#: company/models.py:114 +#: company/models.py:100 company/models.py:365 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:822 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "" + +#: company/models.py:117 msgid "Company description" msgstr "" -#: company/models.py:115 +#: company/models.py:118 msgid "Description of the company" msgstr "" -#: company/models.py:120 company/templates/company/company_base.html:106 +#: company/models.py:123 company/templates/company/company_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:532 msgid "Website" msgstr "" -#: company/models.py:120 +#: company/models.py:123 msgid "Company website URL" msgstr "" -#: company/models.py:125 +#: company/models.py:128 msgid "Phone number" msgstr "" -#: company/models.py:127 +#: company/models.py:130 msgid "Contact phone number" msgstr "" -#: company/models.py:134 +#: company/models.py:137 msgid "Contact email address" msgstr "連絡先メールアドレス" -#: company/models.py:139 company/templates/company/company_base.html:145 +#: company/models.py:142 company/templates/company/company_base.html:145 #: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "" -#: company/models.py:141 +#: company/models.py:144 msgid "Point of contact" msgstr "" -#: company/models.py:147 +#: company/models.py:150 msgid "Link to external company information" msgstr "" -#: company/models.py:160 +#: company/models.py:163 msgid "Is this company active?" msgstr "" -#: company/models.py:165 +#: company/models.py:168 msgid "is customer" msgstr "" -#: company/models.py:166 +#: company/models.py:169 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:171 +#: company/models.py:174 msgid "is supplier" msgstr "" -#: company/models.py:172 +#: company/models.py:175 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:177 +#: company/models.py:180 msgid "is manufacturer" msgstr "" -#: company/models.py:178 +#: company/models.py:181 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:186 +#: company/models.py:189 msgid "Default currency used for this company" msgstr "" -#: company/models.py:273 company/models.py:382 -#: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:812 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 -msgid "Company" -msgstr "" - -#: company/models.py:383 +#: company/models.py:366 msgid "Select company" msgstr "" -#: company/models.py:388 +#: company/models.py:371 msgid "Address title" msgstr "" -#: company/models.py:389 +#: company/models.py:372 msgid "Title describing the address entry" msgstr "" -#: company/models.py:395 +#: company/models.py:378 msgid "Primary address" msgstr "" -#: company/models.py:396 +#: company/models.py:379 msgid "Set as primary address" msgstr "" -#: company/models.py:401 templates/js/translated/company.js:914 +#: company/models.py:384 templates/js/translated/company.js:914 #: templates/js/translated/company.js:971 msgid "Line 1" msgstr "" -#: company/models.py:402 +#: company/models.py:385 msgid "Address line 1" msgstr "" -#: company/models.py:408 templates/js/translated/company.js:915 +#: company/models.py:391 templates/js/translated/company.js:915 #: templates/js/translated/company.js:977 msgid "Line 2" msgstr "" -#: company/models.py:409 +#: company/models.py:392 msgid "Address line 2" msgstr "" -#: company/models.py:415 company/models.py:416 +#: company/models.py:398 company/models.py:399 #: templates/js/translated/company.js:983 msgid "Postal code" msgstr "" -#: company/models.py:422 +#: company/models.py:405 msgid "City/Region" msgstr "" -#: company/models.py:423 +#: company/models.py:406 msgid "Postal code city/region" msgstr "" -#: company/models.py:429 +#: company/models.py:412 msgid "State/Province" msgstr "" -#: company/models.py:430 +#: company/models.py:413 msgid "State or province" msgstr "" -#: company/models.py:436 templates/js/translated/company.js:1001 +#: company/models.py:419 templates/js/translated/company.js:1001 msgid "Country" msgstr "" -#: company/models.py:437 +#: company/models.py:420 msgid "Address country" msgstr "" -#: company/models.py:443 +#: company/models.py:426 msgid "Courier shipping notes" msgstr "" -#: company/models.py:444 +#: company/models.py:427 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:450 +#: company/models.py:433 msgid "Internal shipping notes" msgstr "" -#: company/models.py:451 +#: company/models.py:434 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:458 +#: company/models.py:441 msgid "Link to address information (external)" msgstr "" -#: company/models.py:489 company/models.py:792 stock/models.py:768 -#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 +#: company/models.py:463 company/models.py:574 company/models.py:792 +#: 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:475 company/models.py:760 stock/models.py:766 +#: stock/serializers.py:422 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:491 company/models.py:794 +#: company/models.py:477 company/models.py:762 msgid "Select part" msgstr "" -#: company/models.py:500 company/templates/company/company_base.html:82 +#: company/models.py:486 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:530 +#: company/templates/company/supplier_part.html:145 part/serializers.py:525 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -3939,152 +4006,154 @@ msgstr "" msgid "Manufacturer" msgstr "製造元" -#: company/models.py:501 +#: company/models.py:487 msgid "Select manufacturer" msgstr "" -#: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:540 +#: company/models.py:493 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:535 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 -#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1801 #: templates/js/translated/purchase_order.js:1851 #: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "" -#: company/models.py:508 +#: company/models.py:494 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:515 +#: company/models.py:501 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:524 +#: company/models.py:510 msgid "Manufacturer part description" msgstr "" -#: company/models.py:581 company/models.py:608 company/models.py:824 -#: 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:615 +#: company/models.py:581 msgid "Parameter name" msgstr "" -#: company/models.py:621 report/templates/report/inventree_test_report.html:104 -#: stock/models.py:2429 templates/js/translated/company.js:1166 -#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 +#: company/models.py:587 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2418 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1493 #: templates/js/translated/stock.js:1522 msgid "Value" msgstr "" -#: company/models.py:622 +#: company/models.py:588 msgid "Parameter value" msgstr "" -#: company/models.py:629 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1052 part/models.py:3666 +#: company/models.py:595 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1045 part/models.py:3646 #: part/templates/part/part_base.html:284 -#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1512 +#: templates/js/translated/part.js:1616 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:630 +#: company/models.py:596 msgid "Parameter units" msgstr "" -#: company/models.py:732 +#: company/models.py:648 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:777 stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "" + +#: company/models.py:700 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:739 +#: company/models.py:707 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:753 +#: company/models.py:721 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/models.py:770 company/templates/company/company_base.html:87 #: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:514 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:509 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:511 -#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1769 #: templates/js/translated/pricing.js:498 #: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "仕入先" -#: company/models.py:803 +#: company/models.py:771 msgid "Select supplier" msgstr "" -#: company/models.py:809 part/serializers.py:525 +#: company/models.py:777 part/serializers.py:520 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:815 +#: company/models.py:783 msgid "Is this supplier part active?" msgstr "" -#: company/models.py:825 +#: company/models.py:793 msgid "Select manufacturer part" msgstr "" -#: company/models.py:832 +#: company/models.py:800 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:841 +#: company/models.py:809 msgid "Supplier part description" msgstr "" -#: company/models.py:848 company/templates/company/supplier_part.html:187 -#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 +#: company/models.py:816 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4093 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_purchase_order_report.html:32 #: report/templates/report/inventree_return_order_report.html:27 #: report/templates/report/inventree_sales_order_report.html:32 #: report/templates/report/inventree_stock_location_report.html:105 -#: stock/serializers.py:708 +#: stock/serializers.py:710 msgid "Note" msgstr "" -#: company/models.py:857 part/models.py:2010 +#: company/models.py:825 part/models.py:2003 msgid "base cost" msgstr "" -#: company/models.py:858 part/models.py:2011 +#: company/models.py:826 part/models.py:2004 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:865 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 +#: company/models.py:833 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:797 stock/serializers.py:1475 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 #: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "" -#: company/models.py:866 +#: company/models.py:834 msgid "Part packaging" msgstr "" -#: company/models.py:871 templates/js/translated/company.js:1651 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: company/models.py:839 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:311 #: templates/js/translated/purchase_order.js:841 #: templates/js/translated/purchase_order.js:1103 @@ -4093,35 +4162,35 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:873 +#: company/models.py:841 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:892 part/models.py:2017 +#: company/models.py:860 part/models.py:2010 msgid "multiple" msgstr "" -#: company/models.py:893 +#: company/models.py:861 msgid "Order multiple" msgstr "" -#: company/models.py:905 +#: company/models.py:873 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:911 +#: company/models.py:879 msgid "Availability Updated" msgstr "" -#: company/models.py:912 +#: company/models.py:880 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:163 +#: company/serializers.py:161 msgid "Default currency used for this supplier" msgstr "" -#: company/serializers.py:381 part/admin.py:126 +#: company/serializers.py:357 part/admin.py:126 #: part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1689 #: templates/js/translated/table_filters.js:355 @@ -4133,7 +4202,7 @@ msgstr "" #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 #: templates/js/translated/model_renderers.js:312 -#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +#: templates/js/translated/part.js:815 templates/js/translated/part.js:1219 msgid "Inactive" msgstr "" @@ -4172,7 +4241,7 @@ msgstr "" #: report/templates/report/inventree_purchase_order_report.html:40 #: report/templates/report/inventree_sales_order_report.html:40 #: report/templates/report/inventree_test_report.html:84 -#: report/templates/report/inventree_test_report.html:163 +#: report/templates/report/inventree_test_report.html:162 msgid "Part image" msgstr "" @@ -4191,10 +4260,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:92 order/models.py:940 -#: order/models.py:2068 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:148 stock/models.py:821 -#: stock/models.py:822 stock/serializers.py:1229 +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2032 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:819 +#: stock/models.py:820 stock/serializers.py:1225 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 @@ -4405,7 +4474,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:836 +#: part/admin.py:122 part/serializers.py:832 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4425,8 +4494,8 @@ msgstr "パラメータ" msgid "New Parameter" msgstr "新規パラメータ" -#: company/templates/company/manufacturer_part.html:206 -#: templates/js/translated/part.js:1422 +#: company/templates/company/manufacturer_part.html:196 +#: templates/js/translated/part.js:1423 msgid "Add Parameter" msgstr "" @@ -4454,15 +4523,6 @@ msgstr "" msgid "Addresses" msgstr "" -#: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:452 -#: stock/models.py:779 stock/templates/stock/item_base.html:233 -#: templates/js/translated/company.js:1600 -#: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2280 -msgid "Supplier Part" -msgstr "" - #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1526 msgid "Supplier part actions" @@ -4505,8 +4565,8 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:524 -#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: part/bom.py:311 part/serializers.py:519 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1787 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1850 #: templates/js/translated/purchase_order.js:2028 @@ -4518,12 +4578,12 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:207 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" @@ -4555,15 +4615,15 @@ msgid "Update Part Availability" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:835 part/stocktake.py:223 +#: part/serializers.py:831 part/stocktake.py:224 #: part/templates/part/category.html:183 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:916 stock/serializers.py:1080 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:918 stock/serializers.py:1091 #: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:191 #: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1061 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:206 msgid "Stock Items" @@ -4590,10 +4650,6 @@ msgstr "" 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 "" @@ -4614,7 +4670,7 @@ msgstr "" msgid "Connected" msgstr "" -#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: machine/machine_types/label_printer.py:235 order/api.py:1467 #: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "" @@ -4703,7 +4759,7 @@ msgstr "" msgid "Config type" msgstr "" -#: order/admin.py:30 order/models.py:89 +#: order/admin.py:30 order/models.py:90 #: report/templates/report/inventree_purchase_order_report.html:31 #: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 @@ -4712,30 +4768,30 @@ msgstr "" msgid "Total Price" msgstr "" -#: order/api.py:161 order/serializers.py:91 +#: order/api.py:157 order/serializers.py:90 #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "" -#: order/api.py:165 templates/js/translated/table_filters.js:194 +#: order/api.py:161 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "" -#: order/api.py:240 +#: order/api.py:236 msgid "No matching purchase order found" msgstr "" -#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 -#: order/models.py:1586 order/models.py:1700 order/models.py:1854 -#: order/models.py:2267 order/models.py:2318 +#: order/api.py:435 order/api.py:801 order/models.py:1395 order/models.py:1504 +#: order/models.py:1550 order/models.py:1664 order/models.py:1818 +#: order/models.py:2231 order/models.py:2282 #: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "" -#: order/api.py:441 order/api.py:838 +#: order/api.py:439 order/api.py:822 msgid "Order Complete" msgstr "" @@ -4743,13 +4799,13 @@ msgstr "" msgid "Order Pending" msgstr "" -#: order/api.py:1509 order/models.py:380 order/models.py:1432 -#: order/models.py:1541 order/templates/order/order_base.html:9 +#: order/api.py:1461 order/models.py:380 order/models.py:1396 +#: order/models.py:1505 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_purchase_order_report.html:14 -#: stock/serializers.py:119 stock/templates/stock/item_base.html:176 +#: stock/serializers.py:118 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/part.js:1746 templates/js/translated/pricing.js:804 #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1673 @@ -4757,8 +4813,8 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1513 order/models.py:2017 order/models.py:2268 -#: order/models.py:2319 order/templates/order/return_order_base.html:9 +#: order/api.py:1465 order/models.py:1981 order/models.py:2232 +#: order/models.py:2283 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report.html:13 #: templates/js/translated/return_order.js:280 @@ -4766,15 +4822,15 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/models.py:90 +#: order/models.py:91 msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:71 +#: order/models.py:96 order/serializers.py:70 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:72 +#: order/models.py:99 order/serializers.py:71 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -4790,7 +4846,7 @@ msgstr "" msgid "Select project code for this order" msgstr "" -#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 msgid "Link to external page" msgstr "外部ページへのリンク" @@ -4814,11 +4870,11 @@ msgstr "" msgid "Company address for this order" msgstr "" -#: order/models.py:464 order/models.py:929 +#: order/models.py:464 order/models.py:927 msgid "Order reference" msgstr "" -#: order/models.py:472 order/models.py:953 +#: order/models.py:472 order/models.py:951 msgid "Purchase order status" msgstr "" @@ -4839,15 +4895,15 @@ msgstr "" msgid "received by" msgstr "" -#: order/models.py:514 order/models.py:2094 +#: order/models.py:514 order/models.py:2058 msgid "Issue Date" msgstr "" -#: order/models.py:515 order/models.py:2095 +#: order/models.py:515 order/models.py:2059 msgid "Date order was issued" msgstr "" -#: order/models.py:522 order/models.py:2102 +#: order/models.py:522 order/models.py:2066 msgid "Date order was completed" msgstr "" @@ -4859,94 +4915,94 @@ msgstr "" msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:941 +#: order/models.py:939 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:964 order/models.py:2087 +#: order/models.py:962 order/models.py:2051 msgid "Customer Reference " msgstr "" -#: order/models.py:965 order/models.py:2088 +#: order/models.py:963 order/models.py:2052 msgid "Customer order reference code" msgstr "" -#: order/models.py:969 order/models.py:1707 +#: order/models.py:967 order/models.py:1671 #: templates/js/translated/sales_order.js:879 #: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "" -#: order/models.py:978 +#: order/models.py:976 msgid "shipped by" msgstr "" -#: order/models.py:1027 +#: order/models.py:1025 msgid "Order is already complete" msgstr "" -#: order/models.py:1030 +#: order/models.py:1028 msgid "Order is already cancelled" msgstr "" -#: order/models.py:1034 +#: order/models.py:1032 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:1038 +#: order/models.py:1036 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:1043 +#: order/models.py:1041 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1309 +#: order/models.py:1273 msgid "Item quantity" msgstr "" -#: order/models.py:1326 +#: order/models.py:1290 msgid "Line item reference" msgstr "" -#: order/models.py:1333 +#: order/models.py:1297 msgid "Line item notes" msgstr "" -#: order/models.py:1345 +#: order/models.py:1309 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1366 +#: order/models.py:1330 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1372 +#: order/models.py:1336 msgid "Context" msgstr "" -#: order/models.py:1373 +#: order/models.py:1337 msgid "Additional context for this line" msgstr "" -#: order/models.py:1383 +#: order/models.py:1347 msgid "Unit price" msgstr "" -#: order/models.py:1416 +#: order/models.py:1380 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1423 +#: order/models.py:1387 msgid "deleted" msgstr "" -#: order/models.py:1451 +#: order/models.py:1415 msgid "Supplier part" msgstr "" -#: order/models.py:1458 order/templates/order/order_base.html:196 -#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: order/models.py:1422 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1870 templates/js/translated/part.js:1902 #: templates/js/translated/purchase_order.js:1306 #: templates/js/translated/purchase_order.js:2169 #: templates/js/translated/return_order.js:763 @@ -4955,196 +5011,196 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1459 +#: order/models.py:1423 msgid "Number of items received" msgstr "" -#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 +#: order/models.py:1431 stock/models.py:938 stock/serializers.py:556 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "購入金額" -#: order/models.py:1468 +#: order/models.py:1432 msgid "Unit purchase price" msgstr "" -#: order/models.py:1483 +#: order/models.py:1447 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1574 +#: order/models.py:1538 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1579 +#: order/models.py:1543 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1605 part/templates/part/part_pricing.html:107 +#: order/models.py:1569 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:1606 +#: order/models.py:1570 msgid "Unit sale price" msgstr "" -#: order/models.py:1615 order/status_codes.py:43 +#: order/models.py:1579 order/status_codes.py:43 #: templates/js/translated/sales_order.js:1559 #: templates/js/translated/sales_order.js:1680 #: templates/js/translated/sales_order.js:1993 msgid "Shipped" msgstr "発送済み" -#: order/models.py:1616 +#: order/models.py:1580 msgid "Shipped quantity" msgstr "" -#: order/models.py:1708 +#: order/models.py:1672 msgid "Date of shipment" msgstr "" -#: order/models.py:1714 templates/js/translated/sales_order.js:1072 +#: order/models.py:1678 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "" -#: order/models.py:1715 +#: order/models.py:1679 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1723 +#: order/models.py:1687 msgid "Checked By" msgstr "" -#: order/models.py:1724 +#: order/models.py:1688 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 -#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 +#: order/models.py:1695 order/models.py:1908 order/serializers.py:1342 +#: order/serializers.py:1452 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "" -#: order/models.py:1732 +#: order/models.py:1696 msgid "Shipment number" msgstr "" -#: order/models.py:1740 +#: order/models.py:1704 msgid "Tracking Number" msgstr "" -#: order/models.py:1741 +#: order/models.py:1705 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1748 +#: order/models.py:1712 msgid "Invoice Number" msgstr "" -#: order/models.py:1749 +#: order/models.py:1713 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1769 +#: order/models.py:1733 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1772 +#: order/models.py:1736 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1890 order/models.py:1892 +#: order/models.py:1854 order/models.py:1856 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1899 +#: order/models.py:1863 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1902 +#: order/models.py:1866 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1905 +#: order/models.py:1869 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1924 order/serializers.py:1231 +#: order/models.py:1888 order/serializers.py:1219 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1927 +#: order/models.py:1891 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1928 plugin/base/barcodes/api.py:481 +#: order/models.py:1892 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1936 +#: order/models.py:1900 msgid "Line" msgstr "" -#: order/models.py:1945 +#: order/models.py:1909 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1958 order/models.py:2275 +#: order/models.py:1922 order/models.py:2239 #: templates/js/translated/return_order.js:721 msgid "Item" msgstr "" -#: order/models.py:1959 +#: order/models.py:1923 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1968 +#: order/models.py:1932 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:2057 +#: order/models.py:2021 msgid "Return Order reference" msgstr "" -#: order/models.py:2069 +#: order/models.py:2033 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:2081 +#: order/models.py:2045 msgid "Return order status" msgstr "" -#: order/models.py:2260 +#: order/models.py:2224 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2276 +#: order/models.py:2240 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2282 +#: order/models.py:2246 msgid "Received Date" msgstr "" -#: order/models.py:2283 +#: order/models.py:2247 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2294 templates/js/translated/return_order.js:732 +#: order/models.py:2258 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2295 +#: order/models.py:2259 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2302 +#: order/models.py:2266 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/serializers.py:79 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_purchase_order_report.html:22 @@ -5153,163 +5209,163 @@ msgstr "" msgid "Line Items" msgstr "" -#: order/serializers.py:84 +#: order/serializers.py:83 msgid "Completed Lines" msgstr "" -#: order/serializers.py:287 +#: order/serializers.py:286 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:302 order/serializers.py:1247 +#: order/serializers.py:301 order/serializers.py:1235 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:312 order/serializers.py:1257 +#: order/serializers.py:311 order/serializers.py:1245 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:440 +#: order/serializers.py:439 msgid "Order is not open" msgstr "" -#: order/serializers.py:461 +#: order/serializers.py:460 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:463 +#: order/serializers.py:462 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:473 +#: order/serializers.py:472 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:478 msgid "Merge Items" msgstr "" -#: order/serializers.py:481 +#: order/serializers.py:480 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:499 +#: order/serializers.py:498 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:502 +#: order/serializers.py:501 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:510 +#: order/serializers.py:509 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:511 +#: order/serializers.py:510 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:550 order/serializers.py:1325 +#: order/serializers.py:549 order/serializers.py:1313 msgid "Line Item" msgstr "" -#: order/serializers.py:556 +#: order/serializers.py:555 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1657 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:581 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:589 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:601 templates/js/translated/barcode.js:52 +#: order/serializers.py:600 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:602 +#: order/serializers.py:601 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:618 +#: order/serializers.py:617 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:642 +#: order/serializers.py:641 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:690 order/serializers.py:1696 +#: order/serializers.py:689 order/serializers.py:1673 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:706 +#: order/serializers.py:705 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:717 +#: order/serializers.py:716 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1074 +#: order/serializers.py:1062 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1134 +#: order/serializers.py:1122 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1195 order/serializers.py:1334 +#: order/serializers.py:1183 order/serializers.py:1322 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1214 +#: order/serializers.py:1202 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1344 +#: order/serializers.py:1332 msgid "Enter serial numbers to allocate" msgstr "割り当てるシリアル番号を入力" -#: order/serializers.py:1366 order/serializers.py:1472 +#: order/serializers.py:1354 order/serializers.py:1460 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1369 order/serializers.py:1475 +#: order/serializers.py:1357 order/serializers.py:1463 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1416 +#: order/serializers.py:1404 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1423 +#: order/serializers.py:1411 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1650 +#: order/serializers.py:1627 msgid "Return order line item" msgstr "" -#: order/serializers.py:1656 +#: order/serializers.py:1633 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1659 +#: order/serializers.py:1636 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1688 +#: order/serializers.py:1665 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1766 +#: order/serializers.py:1743 msgid "Line price currency" msgstr "" @@ -5639,7 +5695,7 @@ msgstr "" #: 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/part.js:1073 #: templates/js/translated/purchase_order.js:1752 #: templates/js/translated/return_order.js:380 #: templates/js/translated/sales_order.js:891 @@ -5735,34 +5791,34 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:406 part/models.py:3964 part/stocktake.py:218 -#: stock/admin.py:153 +#: part/admin.py:39 part/admin.py:398 part/models.py:3944 part/stocktake.py:219 +#: stock/admin.py:152 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 -#: stock/admin.py:157 +#: part/admin.py:41 part/admin.py:405 part/models.py:3945 part/stocktake.py:220 +#: stock/admin.py:156 msgid "Part Name" msgstr "" -#: part/admin.py:45 part/stocktake.py:220 +#: part/admin.py:45 part/stocktake.py:221 msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:940 part/templates/part/part_base.html:269 #: report/templates/report/inventree_stock_location_report.html:103 -#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/part.js:1227 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 -#: report/models.py:161 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2346 +#: part/admin.py:50 part/models.py:949 part/templates/part/part_base.html:277 +#: report/models.py:162 templates/js/translated/part.js:1232 +#: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:319 part/models.py:929 +#: part/admin.py:53 part/admin.py:319 part/models.py:922 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "キーワード" @@ -5771,11 +5827,11 @@ msgstr "キーワード" msgid "Part Image" msgstr "" -#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:222 msgid "Category ID" msgstr "カテゴリID" -#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:223 msgid "Category Name" msgstr "カテゴリ名" @@ -5787,11 +5843,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:908 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1036 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5799,26 +5855,26 @@ msgstr "" 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 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:235 +#: templates/js/translated/part.js:715 templates/js/translated/part.js:2153 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3123 part/models.py:3137 -#: templates/js/translated/part.js:969 +#: part/admin.py:155 part/models.py:3088 part/models.py:3102 +#: templates/js/translated/part.js:970 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3130 part/models.py:3144 -#: templates/js/translated/part.js:979 +#: part/admin.py:158 part/models.py:3095 part/models.py:3109 +#: templates/js/translated/part.js:980 msgid "Maximum Cost" msgstr "" -#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 msgid "Parent ID" msgstr "" -#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 msgid "Parent Name" msgstr "" @@ -5827,141 +5883,149 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:325 part/models.py:393 part/serializers.py:117 -#: part/serializers.py:272 part/serializers.py:391 +#: part/admin.py:325 part/models.py:396 part/serializers.py:124 +#: part/serializers.py:267 part/serializers.py:386 #: 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:2803 templates/js/translated/search.js:130 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "パーツ" -#: part/admin.py:386 +#: part/admin.py:378 msgid "BOM Level" msgstr "" -#: part/admin.py:389 +#: part/admin.py:381 msgid "BOM Item ID" msgstr "" -#: part/admin.py:399 +#: part/admin.py:391 msgid "Parent IPN" msgstr "" -#: part/admin.py:410 part/models.py:3966 +#: part/admin.py:402 part/models.py:3946 msgid "Part IPN" msgstr "" -#: part/admin.py:423 part/serializers.py:1278 +#: part/admin.py:415 part/serializers.py:1274 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:428 part/serializers.py:1293 +#: part/admin.py:420 part/serializers.py:1289 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:110 +#: part/api.py:104 msgid "Starred" msgstr "" -#: part/api.py:112 +#: part/api.py:106 msgid "Filter by starred categories" msgstr "" -#: part/api.py:129 stock/api.py:318 +#: part/api.py:123 stock/api.py:312 msgid "Depth" msgstr "" -#: part/api.py:129 +#: part/api.py:123 msgid "Filter by category depth" msgstr "" -#: part/api.py:147 stock/api.py:336 +#: part/api.py:141 stock/api.py:330 +msgid "Top Level" +msgstr "" + +#: part/api.py:143 +msgid "Filter by top-level categories" +msgstr "" + +#: part/api.py:156 stock/api.py:345 msgid "Cascade" msgstr "" -#: part/api.py:149 +#: part/api.py:158 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:169 +#: part/api.py:179 templates/js/translated/part.js:308 msgid "Parent" msgstr "" -#: part/api.py:171 +#: part/api.py:181 msgid "Filter by parent category" msgstr "" -#: part/api.py:204 +#: part/api.py:214 msgid "Exclude Tree" msgstr "" -#: part/api.py:206 +#: part/api.py:216 msgid "Exclude sub-categories under the specified category" msgstr "" -#: part/api.py:455 +#: part/api.py:449 msgid "Has Results" msgstr "" -#: part/api.py:622 +#: part/api.py:616 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:640 +#: part/api.py:634 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:656 +#: part/api.py:650 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:740 +#: part/api.py:734 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:887 +#: part/api.py:881 msgid "Valid" msgstr "" -#: part/api.py:888 +#: part/api.py:882 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:894 +#: part/api.py:888 msgid "This option must be selected" msgstr "" -#: part/api.py:1111 +#: part/api.py:1105 msgid "BOM Valid" msgstr "" -#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 -#: part/serializers.py:406 part/serializers.py:1134 -#: part/templates/part/part_base.html:260 stock/api.py:781 +#: part/api.py:1508 part/models.py:932 part/models.py:3374 part/models.py:3889 +#: part/serializers.py:401 part/serializers.py:1130 +#: part/templates/part/part_base.html:260 stock/api.py:791 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2376 +#: templates/js/translated/part.js:2377 msgid "Category" msgstr "カテゴリ" -#: part/api.py:1803 +#: part/api.py:1796 msgid "Uses" msgstr "" -#: part/bom.py:170 part/models.py:102 part/models.py:982 +#: part/bom.py:170 part/models.py:104 part/models.py:975 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 part/serializers.py:837 +#: part/bom.py:171 part/serializers.py:833 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5970,1054 +6034,1066 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 +#: part/models.py:85 part/models.py:3890 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "パーツカテゴリ" -#: part/models.py:84 part/templates/part/category.html:136 +#: part/models.py:86 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "パーツカテゴリ" -#: part/models.py:103 +#: part/models.py:105 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 +#: part/models.py:110 stock/models.py:174 templates/js/translated/part.js:2810 #: templates/js/translated/stock.js:2772 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:110 +#: part/models.py:112 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:119 +#: part/models.py:121 msgid "Default keywords" msgstr "" -#: part/models.py:120 +#: part/models.py:122 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 stock/models.py:85 stock/models.py:156 +#: part/models.py:128 stock/models.py:86 stock/models.py:157 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:127 stock/models.py:157 +#: part/models.py:129 stock/models.py:158 msgid "Icon (optional)" msgstr "" -#: part/models.py:149 +#: part/models.py:151 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:482 +#: part/models.py:485 msgid "Cannot delete this part as it is still active" msgstr "" -#: part/models.py:489 +#: part/models.py:490 msgid "Cannot delete this part as it is used in an assembly" msgstr "" -#: part/models.py:527 +#: part/models.py:528 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:575 part/models.py:582 +#: part/models.py:576 part/models.py:583 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:594 +#: part/models.py:595 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:659 +#: part/models.py:658 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:739 +#: part/models.py:736 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:844 +#: part/models.py:837 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:854 +#: part/models.py:847 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:869 +#: part/models.py:862 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:898 part/models.py:3965 +#: part/models.py:891 part/models.py:3945 msgid "Part name" msgstr "" -#: part/models.py:903 +#: part/models.py:896 msgid "Is Template" msgstr "" -#: part/models.py:904 +#: part/models.py:897 msgid "Is this part a template part?" msgstr "" -#: part/models.py:914 +#: part/models.py:907 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:922 +#: part/models.py:915 msgid "Part description (optional)" msgstr "" -#: part/models.py:930 +#: part/models.py:923 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:940 +#: part/models.py:933 msgid "Part category" msgstr "パーツカテゴリ" -#: part/models.py:948 +#: part/models.py:941 msgid "Internal Part Number" msgstr "" -#: part/models.py:955 +#: part/models.py:948 msgid "Part revision or version number" msgstr "" -#: part/models.py:980 +#: part/models.py:973 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:1026 part/templates/part/part_base.html:376 +#: part/models.py:1019 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:1027 +#: part/models.py:1020 msgid "Default supplier part" msgstr "" -#: part/models.py:1034 +#: part/models.py:1027 msgid "Default Expiry" msgstr "" -#: part/models.py:1035 +#: part/models.py:1028 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:1044 +#: part/models.py:1037 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:1053 +#: part/models.py:1046 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1060 +#: part/models.py:1053 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1066 +#: part/models.py:1059 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1072 +#: part/models.py:1065 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1078 +#: part/models.py:1071 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1084 +#: part/models.py:1077 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1088 +#: part/models.py:1081 msgid "Is this part active?" msgstr "" -#: part/models.py:1094 +#: part/models.py:1087 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1100 +#: part/models.py:1093 msgid "BOM checksum" msgstr "" -#: part/models.py:1101 +#: part/models.py:1094 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1109 +#: part/models.py:1102 msgid "BOM checked by" msgstr "" -#: part/models.py:1114 +#: part/models.py:1107 msgid "BOM checked date" msgstr "" -#: part/models.py:1130 +#: part/models.py:1123 msgid "Creation User" msgstr "" -#: part/models.py:1140 +#: part/models.py:1133 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1145 part/templates/part/part_base.html:339 +#: part/models.py:1138 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2470 +#: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:2018 +#: part/models.py:2011 msgid "Sell multiple" msgstr "" -#: part/models.py:3037 +#: part/models.py:3002 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:3053 +#: part/models.py:3018 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:3054 +#: part/models.py:3019 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:3060 +#: part/models.py:3025 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3026 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:3067 +#: part/models.py:3032 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3033 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3074 +#: part/models.py:3039 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3040 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3046 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3047 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3053 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3054 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3060 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3096 +#: part/models.py:3061 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3102 +#: part/models.py:3067 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3103 +#: part/models.py:3068 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3109 +#: part/models.py:3074 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3110 +#: part/models.py:3075 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3116 +#: part/models.py:3081 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3117 +#: part/models.py:3082 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3124 +#: part/models.py:3089 msgid "Override minimum cost" msgstr "" -#: part/models.py:3131 +#: part/models.py:3096 msgid "Override maximum cost" msgstr "" -#: part/models.py:3138 +#: part/models.py:3103 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3145 +#: part/models.py:3110 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3151 +#: part/models.py:3116 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3152 +#: part/models.py:3117 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3158 +#: part/models.py:3123 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3159 +#: part/models.py:3124 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3165 +#: part/models.py:3130 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3131 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3172 +#: part/models.py:3137 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3138 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3192 +#: part/models.py:3157 msgid "Part for stocktake" msgstr "" -#: part/models.py:3197 +#: part/models.py:3162 msgid "Item Count" msgstr "" -#: part/models.py:3198 +#: part/models.py:3163 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3206 +#: part/models.py:3171 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3210 part/models.py:3293 +#: part/models.py:3175 part/models.py:3258 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report.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/part.js:1086 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" -#: part/models.py:3211 +#: part/models.py:3176 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3219 +#: part/models.py:3184 msgid "Additional notes" msgstr "" -#: part/models.py:3229 +#: part/models.py:3194 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3235 +#: part/models.py:3200 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3236 +#: part/models.py:3201 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3242 +#: part/models.py:3207 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3243 +#: part/models.py:3208 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3264 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3300 +#: part/models.py:3265 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3270 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3306 +#: part/models.py:3271 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3316 +#: part/models.py:3281 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3478 +#: part/models.py:3423 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3489 +#: part/models.py:3444 part/models.py:3608 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3455 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3500 +#: part/models.py:3466 msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3517 templates/js/translated/part.js:2878 +#: part/models.py:3483 templates/js/translated/part.js:2880 msgid "Test Name" msgstr "" -#: part/models.py:3518 +#: part/models.py:3484 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3524 +#: part/models.py:3490 msgid "Test Key" msgstr "" -#: part/models.py:3525 +#: part/models.py:3491 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3532 +#: part/models.py:3498 msgid "Test Description" msgstr "" -#: part/models.py:3533 +#: part/models.py:3499 msgid "Enter description for this test" msgstr "" -#: part/models.py:3537 report/models.py:208 -#: templates/js/translated/part.js:2899 +#: part/models.py:3503 report/models.py:209 +#: templates/js/translated/part.js:2901 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" -#: part/models.py:3537 +#: part/models.py:3503 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3542 templates/js/translated/part.js:2907 +#: part/models.py:3508 templates/js/translated/part.js:2909 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3543 +#: part/models.py:3509 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3548 templates/js/translated/part.js:2915 +#: part/models.py:3514 templates/js/translated/part.js:2917 msgid "Requires Value" msgstr "" -#: part/models.py:3549 +#: part/models.py:3515 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3554 templates/js/translated/part.js:2922 +#: part/models.py:3520 templates/js/translated/part.js:2924 msgid "Requires Attachment" msgstr "" -#: part/models.py:3556 +#: part/models.py:3522 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3603 +#: part/models.py:3528 part/models.py:3667 templates/js/translated/part.js:1637 +msgid "Choices" +msgstr "" + +#: part/models.py:3529 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3583 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3608 +#: part/models.py:3588 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3628 -msgid "Choices must be unique" -msgstr "" - -#: part/models.py:3645 +#: part/models.py:3625 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3660 +#: part/models.py:3640 msgid "Parameter Name" msgstr "" -#: part/models.py:3667 +#: part/models.py:3647 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3675 +#: part/models.py:3655 msgid "Parameter description" msgstr "" -#: part/models.py:3681 templates/js/translated/part.js:1627 +#: part/models.py:3661 templates/js/translated/part.js:1628 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "" -#: part/models.py:3682 +#: part/models.py:3662 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3687 templates/js/translated/part.js:1636 -msgid "Choices" -msgstr "" - -#: part/models.py:3688 +#: part/models.py:3668 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3765 +#: part/models.py:3745 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3808 +#: part/models.py:3788 msgid "Parent Part" msgstr "" -#: part/models.py:3816 part/models.py:3917 part/models.py:3918 +#: part/models.py:3796 part/models.py:3897 part/models.py:3898 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3821 +#: part/models.py:3801 msgid "Data" msgstr "" -#: part/models.py:3822 +#: part/models.py:3802 msgid "Parameter Value" msgstr "" -#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3904 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3925 +#: part/models.py:3905 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3963 +#: part/models.py:3943 msgid "Part ID or part name" msgstr "" -#: part/models.py:3964 +#: part/models.py:3944 msgid "Unique part ID value" msgstr "" -#: part/models.py:3966 +#: part/models.py:3946 msgid "Part IPN value" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "Level" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "BOM level" msgstr "" -#: part/models.py:4057 +#: part/models.py:4037 msgid "Select parent part" msgstr "" -#: part/models.py:4067 +#: part/models.py:4047 msgid "Sub part" msgstr "" -#: part/models.py:4068 +#: part/models.py:4048 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4079 +#: part/models.py:4059 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4085 +#: part/models.py:4065 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4091 +#: part/models.py:4071 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4098 part/templates/part/upload_bom.html:55 +#: part/models.py:4078 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4099 +#: part/models.py:4079 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4106 +#: part/models.py:4086 msgid "BOM item reference" msgstr "" -#: part/models.py:4114 +#: part/models.py:4094 msgid "BOM item notes" msgstr "" -#: part/models.py:4120 +#: part/models.py:4100 msgid "Checksum" msgstr "" -#: part/models.py:4121 +#: part/models.py:4101 msgid "BOM line checksum" msgstr "" -#: part/models.py:4126 templates/js/translated/table_filters.js:174 +#: part/models.py:4106 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4127 +#: part/models.py:4107 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4132 part/templates/part/upload_bom.html:57 +#: part/models.py:4112 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:4133 +#: part/models.py:4113 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4138 part/templates/part/upload_bom.html:56 +#: part/models.py:4118 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4139 +#: part/models.py:4119 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4224 stock/models.py:664 +#: part/models.py:4204 stock/models.py:662 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4234 part/models.py:4236 +#: part/models.py:4214 part/models.py:4216 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4376 +#: part/models.py:4354 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4397 +#: part/models.py:4375 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4410 +#: part/models.py:4388 msgid "Parent BOM item" msgstr "" -#: part/models.py:4418 +#: part/models.py:4396 msgid "Substitute part" msgstr "" -#: part/models.py:4434 +#: part/models.py:4412 msgid "Part 1" msgstr "" -#: part/models.py:4442 +#: part/models.py:4420 msgid "Part 2" msgstr "" -#: part/models.py:4443 +#: part/models.py:4421 msgid "Select Related Part" msgstr "" -#: part/models.py:4462 +#: part/models.py:4440 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4467 +#: part/models.py:4445 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:119 part/serializers.py:141 +#: part/serializers.py:118 +msgid "Parent Category" +msgstr "" + +#: part/serializers.py:119 templates/js/translated/part.js:309 +msgid "Parent part category" +msgstr "" + +#: part/serializers.py:126 part/serializers.py:148 #: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "サブカテゴリ" -#: part/serializers.py:185 +#: part/serializers.py:180 msgid "Results" msgstr "" -#: part/serializers.py:186 +#: part/serializers.py:181 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 +#: part/serializers.py:205 part/serializers.py:223 stock/serializers.py:562 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:273 +#: part/serializers.py:268 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:397 +#: part/serializers.py:392 msgid "No parts selected" msgstr "" -#: part/serializers.py:407 +#: part/serializers.py:402 msgid "Select category" msgstr "カテゴリを選択" -#: part/serializers.py:442 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:443 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:448 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:449 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:455 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:456 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:463 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:488 +#: part/serializers.py:483 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:490 +#: part/serializers.py:485 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:497 +#: part/serializers.py:492 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:493 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:510 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:531 +#: part/serializers.py:526 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:541 +#: part/serializers.py:536 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:548 +#: part/serializers.py:543 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:557 +#: part/serializers.py:552 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:568 +#: part/serializers.py:563 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:575 +#: part/serializers.py:570 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:834 msgid "External Stock" msgstr "" -#: part/serializers.py:840 +#: part/serializers.py:836 msgid "Unallocated Stock" msgstr "" -#: part/serializers.py:843 +#: part/serializers.py:839 msgid "Variant Stock" msgstr "" -#: part/serializers.py:873 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:471 +#: part/serializers.py:869 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:472 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:870 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:880 templates/js/translated/part.js:102 +#: part/serializers.py:876 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:881 +#: part/serializers.py:877 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:887 +#: part/serializers.py:883 msgid "Supplier Information" msgstr "" -#: part/serializers.py:888 +#: part/serializers.py:884 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:896 +#: part/serializers.py:892 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:897 +#: part/serializers.py:893 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:902 +#: part/serializers.py:898 msgid "Existing Image" msgstr "" -#: part/serializers.py:903 +#: part/serializers.py:899 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:920 +#: part/serializers.py:916 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1126 +#: part/serializers.py:1122 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1136 +#: part/serializers.py:1132 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1146 +#: part/serializers.py:1142 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1152 +#: part/serializers.py:1148 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1153 +#: part/serializers.py:1149 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1158 +#: part/serializers.py:1154 msgid "Generate Report" msgstr "" -#: part/serializers.py:1159 +#: part/serializers.py:1155 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1164 +#: part/serializers.py:1160 msgid "Update Parts" msgstr "" -#: part/serializers.py:1165 +#: part/serializers.py:1161 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1173 +#: part/serializers.py:1169 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1279 +#: part/serializers.py:1275 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1286 +#: part/serializers.py:1282 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1294 +#: part/serializers.py:1290 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1301 +#: part/serializers.py:1297 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1330 +#: part/serializers.py:1326 msgid "Update" msgstr "" -#: part/serializers.py:1331 +#: part/serializers.py:1327 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1354 +#: part/serializers.py:1350 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1361 +#: part/serializers.py:1357 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1364 +#: part/serializers.py:1360 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1727 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1739 +#: part/serializers.py:1735 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1740 +#: part/serializers.py:1736 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1745 +#: part/serializers.py:1741 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1746 +#: part/serializers.py:1742 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1747 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1752 +#: part/serializers.py:1748 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1757 +#: part/serializers.py:1753 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1758 +#: part/serializers.py:1754 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1792 +#: part/serializers.py:1788 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1793 +#: part/serializers.py:1789 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1823 +#: part/serializers.py:1819 msgid "No part column specified" msgstr "" -#: part/serializers.py:1867 +#: part/serializers.py:1863 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1870 +#: part/serializers.py:1866 msgid "No matching part found" msgstr "" -#: part/serializers.py:1873 +#: part/serializers.py:1869 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1882 +#: part/serializers.py:1878 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1890 +#: part/serializers.py:1886 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1911 +#: part/serializers.py:1907 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 +#: part/stocktake.py:225 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "" -#: part/stocktake.py:225 +#: part/stocktake.py:226 msgid "Total Cost Min" msgstr "" -#: part/stocktake.py:226 +#: part/stocktake.py:227 msgid "Total Cost Max" msgstr "" -#: part/stocktake.py:284 +#: part/stocktake.py:285 msgid "Stocktake Report Available" msgstr "" -#: part/stocktake.py:285 +#: part/stocktake.py:286 msgid "A new stocktake report is available for download" msgstr "" @@ -7151,7 +7227,7 @@ 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 +#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" @@ -7251,15 +7327,15 @@ msgstr "" msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:655 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:663 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:748 +#: part/templates/part/detail.html:750 msgid "Add Test Result Template" msgstr "" @@ -7340,7 +7416,7 @@ msgstr "" msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" msgstr "" @@ -7412,7 +7488,7 @@ 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:2443 +#: templates/js/translated/part.js:1265 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7505,8 +7581,8 @@ msgstr "" #: 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:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/part.js:1243 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 #: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "在庫" @@ -7549,7 +7625,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:247 +#: part/templates/part/prices.html:28 stock/admin.py:251 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 @@ -7626,8 +7702,8 @@ msgstr "" #: part/templates/part/stock_count.html:7 #: templates/js/translated/model_renderers.js:227 -#: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 -#: templates/js/translated/part.js:2142 +#: templates/js/translated/part.js:705 templates/js/translated/part.js:2141 +#: templates/js/translated/part.js:2143 msgid "No Stock" msgstr "在庫切れ" @@ -7999,7 +8075,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:308 msgid "Landscape" msgstr "" @@ -8112,62 +8188,62 @@ msgstr "" msgid "Uninstalled plugin successfully" msgstr "" -#: plugin/models.py:35 +#: plugin/models.py:36 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:36 +#: plugin/models.py:37 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:42 users/models.py:100 +#: plugin/models.py:43 users/models.py:100 msgid "Key" msgstr "" -#: plugin/models.py:43 +#: plugin/models.py:44 msgid "Key of plugin" msgstr "" -#: plugin/models.py:51 +#: plugin/models.py:52 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:58 plugin/serializers.py:90 +#: plugin/models.py:59 plugin/serializers.py:90 msgid "Package Name" msgstr "" -#: plugin/models.py:60 +#: plugin/models.py:61 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:65 +#: plugin/models.py:66 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:156 templates/js/translated/table_filters.js:370 +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "" -#: plugin/models.py:165 +#: plugin/models.py:166 msgid "Sample plugin" msgstr "" -#: plugin/models.py:173 +#: plugin/models.py:174 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:181 +#: plugin/models.py:182 msgid "Package Plugin" msgstr "" -#: plugin/models.py:205 report/models.py:474 +#: plugin/models.py:220 report/models.py:475 #: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:252 +#: plugin/models.py:267 msgid "Method" msgstr "" @@ -8175,17 +8251,17 @@ msgstr "" msgid "No author found" msgstr "" -#: plugin/registry.py:597 +#: plugin/registry.py:534 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:600 +#: plugin/registry.py:537 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:602 +#: plugin/registry.py:539 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -8300,23 +8376,19 @@ msgstr "" msgid "Activate this plugin" msgstr "" -#: plugin/serializers.py:234 +#: plugin/serializers.py:226 msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:235 +#: plugin/serializers.py:227 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:77 +#: report/api.py:88 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:89 report/serializers.py:53 -msgid "Model Type" -msgstr "" - -#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/api.py:103 report/models.py:439 report/serializers.py:98 #: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 #: templates/js/translated/return_order.js:353 #: templates/js/translated/sales_order.js:887 @@ -8324,176 +8396,176 @@ msgstr "" msgid "Items" msgstr "" -#: report/api.py:168 +#: report/api.py:180 msgid "Plugin not found" msgstr "" -#: report/api.py:170 +#: report/api.py:182 msgid "Plugin is not active" msgstr "" -#: report/api.py:172 +#: report/api.py:184 msgid "Plugin does not support label printing" msgstr "" -#: report/api.py:221 +#: report/api.py:233 msgid "Invalid label dimensions" msgstr "" -#: report/api.py:236 report/api.py:316 +#: report/api.py:248 report/api.py:329 msgid "No valid items provided to template" msgstr "" -#: report/api.py:271 +#: report/api.py:283 msgid "Error printing label" msgstr "" -#: report/api.py:362 report/api.py:398 +#: report/api.py:375 report/api.py:411 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/helpers.py:41 +#: report/helpers.py:43 msgid "A4" msgstr "" -#: report/helpers.py:42 +#: report/helpers.py:44 msgid "A3" msgstr "" -#: report/helpers.py:43 +#: report/helpers.py:45 msgid "Legal" msgstr "" -#: report/helpers.py:44 +#: report/helpers.py:46 msgid "Letter" msgstr "" -#: report/models.py:118 +#: report/models.py:119 msgid "Template file with this name already exists" msgstr "" -#: report/models.py:150 +#: report/models.py:151 msgid "Template name" msgstr "" -#: report/models.py:156 +#: report/models.py:157 msgid "Template description" msgstr "" -#: report/models.py:162 +#: report/models.py:163 msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Filename Pattern" msgstr "" -#: report/models.py:203 +#: report/models.py:204 msgid "Pattern for generating filenames" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Template is enabled" msgstr "" -#: report/models.py:214 +#: report/models.py:215 msgid "Target model type for template" msgstr "" -#: report/models.py:234 +#: report/models.py:235 msgid "Filters" msgstr "" -#: report/models.py:235 +#: report/models.py:236 msgid "Template query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:294 report/models.py:361 +#: report/models.py:295 report/models.py:362 msgid "Template file" msgstr "" -#: report/models.py:302 +#: report/models.py:303 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:308 +#: report/models.py:309 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:367 +#: report/models.py:368 msgid "Width [mm]" msgstr "" -#: report/models.py:368 +#: report/models.py:369 msgid "Label width, specified in mm" msgstr "" -#: report/models.py:374 +#: report/models.py:375 msgid "Height [mm]" msgstr "" -#: report/models.py:375 +#: report/models.py:376 msgid "Label height, specified in mm" msgstr "" -#: report/models.py:438 +#: report/models.py:439 msgid "Number of items to process" msgstr "" -#: report/models.py:444 +#: report/models.py:445 msgid "Report generation is complete" msgstr "" -#: report/models.py:448 templates/js/translated/build.js:2177 +#: report/models.py:449 templates/js/translated/build.js:2177 msgid "Progress" msgstr "" -#: report/models.py:448 +#: report/models.py:449 msgid "Report generation progress" msgstr "" -#: report/models.py:456 +#: report/models.py:457 msgid "Report Template" msgstr "" -#: report/models.py:463 report/models.py:486 +#: report/models.py:464 report/models.py:487 msgid "Output File" msgstr "" -#: report/models.py:464 report/models.py:487 +#: report/models.py:465 report/models.py:488 msgid "Generated output file" msgstr "" -#: report/models.py:475 +#: report/models.py:476 msgid "Label output plugin" msgstr "" -#: report/models.py:479 +#: report/models.py:480 msgid "Label Template" msgstr "" -#: report/models.py:502 +#: report/models.py:503 msgid "Snippet" msgstr "" -#: report/models.py:503 +#: report/models.py:504 msgid "Report snippet file" msgstr "" -#: report/models.py:510 +#: report/models.py:511 msgid "Snippet file description" msgstr "" -#: report/models.py:528 +#: report/models.py:529 msgid "Asset" msgstr "" -#: report/models.py:529 +#: report/models.py:530 msgid "Report asset file" msgstr "" -#: report/models.py:536 +#: report/models.py:537 msgid "Asset file description" msgstr "" @@ -8566,8 +8638,8 @@ msgid "Total" msgstr "" #: report/templates/report/inventree_return_order_report.html:25 -#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 -#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:824 +#: stock/serializers.py:149 stock/templates/stock/item_base.html:311 #: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 #: templates/js/translated/build.js:2355 #: templates/js/translated/model_renderers.js:230 @@ -8597,32 +8669,32 @@ msgstr "" msgid "Test" msgstr "" -#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2412 msgid "Result" msgstr "" -#: report/templates/report/inventree_test_report.html:130 +#: report/templates/report/inventree_test_report.html:129 msgid "Pass" msgstr "" -#: report/templates/report/inventree_test_report.html:132 +#: report/templates/report/inventree_test_report.html:131 msgid "Fail" msgstr "" -#: report/templates/report/inventree_test_report.html:139 +#: report/templates/report/inventree_test_report.html:138 msgid "No result (required)" msgstr "" -#: report/templates/report/inventree_test_report.html:141 +#: report/templates/report/inventree_test_report.html:140 msgid "No result" msgstr "" -#: report/templates/report/inventree_test_report.html:154 +#: report/templates/report/inventree_test_report.html:153 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "" -#: report/templates/report/inventree_test_report.html:168 stock/admin.py:162 +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 #: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 #: templates/js/translated/stock.js:3110 msgid "Serial" @@ -8644,654 +8716,670 @@ msgstr "" msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:172 +#: stock/admin.py:51 stock/admin.py:171 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:176 +#: stock/admin.py:53 stock/admin.py:175 msgid "Location Name" msgstr "" -#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/admin.py:63 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:149 +#: stock/admin.py:148 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:168 +#: stock/admin.py:167 msgid "Status Code" msgstr "" -#: stock/admin.py:180 +#: stock/admin.py:179 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:185 +#: stock/admin.py:184 +msgid "Supplier Part SKU" +msgstr "" + +#: stock/admin.py:189 msgid "Supplier ID" msgstr "" -#: stock/admin.py:191 +#: stock/admin.py:195 msgid "Supplier Name" msgstr "" -#: stock/admin.py:196 +#: stock/admin.py:200 msgid "Customer ID" msgstr "" -#: stock/admin.py:201 stock/models.py:806 +#: stock/admin.py:205 stock/models.py:804 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:206 +#: stock/admin.py:210 msgid "Build ID" msgstr "" -#: stock/admin.py:216 +#: stock/admin.py:220 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:221 +#: stock/admin.py:225 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:236 +#: stock/admin.py:240 msgid "Review Needed" msgstr "" -#: stock/admin.py:241 +#: stock/admin.py:245 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:256 stock/models.py:900 +#: stock/admin.py:260 stock/models.py:898 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "" -#: stock/api.py:318 +#: stock/api.py:312 msgid "Filter by location depth" msgstr "" -#: stock/api.py:338 +#: stock/api.py:332 +msgid "Filter by top-level locations" +msgstr "" + +#: stock/api.py:347 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:359 +#: stock/api.py:369 stock/serializers.py:1085 msgid "Parent Location" msgstr "" -#: stock/api.py:360 +#: stock/api.py:370 msgid "Filter by parent location" msgstr "" -#: stock/api.py:615 templates/js/translated/table_filters.js:427 +#: stock/api.py:625 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:803 +#: stock/api.py:813 msgid "Part Tree" msgstr "" -#: stock/api.py:833 +#: stock/api.py:843 msgid "Expiry date before" msgstr "" -#: stock/api.py:837 +#: stock/api.py:847 msgid "Expiry date after" msgstr "" -#: stock/api.py:840 stock/templates/stock/item_base.html:439 +#: stock/api.py:850 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:927 +#: stock/api.py:937 msgid "Quantity is required" msgstr "" -#: stock/api.py:933 +#: stock/api.py:943 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:964 +#: stock/api.py:974 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:974 +#: stock/api.py:984 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:1005 +#: stock/api.py:1015 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:59 +#: stock/models.py:60 msgid "Stock Location type" msgstr "" -#: stock/models.py:60 +#: stock/models.py:61 msgid "Stock Location types" msgstr "" -#: stock/models.py:86 +#: stock/models.py:87 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:123 stock/models.py:788 +#: stock/models.py:124 stock/models.py:786 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:124 stock/templates/stock/location.html:186 +#: stock/models.py:125 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "" -#: stock/models.py:166 stock/models.py:949 +#: stock/models.py:167 stock/models.py:947 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:167 stock/models.py:950 +#: stock/models.py:168 stock/models.py:948 msgid "Select Owner" msgstr "" -#: stock/models.py:175 +#: stock/models.py:176 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:182 templates/js/translated/stock.js:2781 +#: stock/models.py:183 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:183 +#: stock/models.py:184 msgid "This is an external stock location" msgstr "" -#: stock/models.py:189 templates/js/translated/stock.js:2790 +#: stock/models.py:190 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" -#: stock/models.py:193 +#: stock/models.py:194 msgid "Stock location type of this location" msgstr "" -#: stock/models.py:262 +#: stock/models.py:261 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:643 +#: stock/models.py:641 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:670 stock/serializers.py:419 +#: stock/models.py:668 stock/serializers.py:446 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:687 +#: stock/models.py:685 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:697 stock/models.py:710 +#: stock/models.py:695 stock/models.py:708 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:700 +#: stock/models.py:698 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:724 +#: stock/models.py:722 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:729 +#: stock/models.py:727 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:742 +#: stock/models.py:740 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:758 +#: stock/models.py:756 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:770 +#: stock/models.py:768 msgid "Base part" msgstr "" -#: stock/models.py:780 +#: stock/models.py:778 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:792 +#: stock/models.py:790 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:800 stock/serializers.py:1480 +#: stock/models.py:798 stock/serializers.py:1476 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:811 +#: stock/models.py:809 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:830 +#: stock/models.py:828 msgid "Serial number for this item" msgstr "" -#: stock/models.py:844 stock/serializers.py:1463 +#: stock/models.py:842 stock/serializers.py:1459 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:849 +#: stock/models.py:847 msgid "Stock Quantity" msgstr "" -#: stock/models.py:859 +#: stock/models.py:857 msgid "Source Build" msgstr "" -#: stock/models.py:862 +#: stock/models.py:860 msgid "Build for this stock item" msgstr "" -#: stock/models.py:869 stock/templates/stock/item_base.html:363 +#: stock/models.py:867 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:872 +#: stock/models.py:870 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:881 +#: stock/models.py:879 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:885 +#: stock/models.py:883 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:891 +#: stock/models.py:889 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:902 +#: stock/models.py:900 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:920 +#: stock/models.py:918 msgid "Delete on deplete" msgstr "" -#: stock/models.py:921 +#: stock/models.py:919 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:941 +#: stock/models.py:939 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:972 +#: stock/models.py:970 msgid "Converted to part" msgstr "" -#: stock/models.py:1490 +#: stock/models.py:1486 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1496 +#: stock/models.py:1492 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1500 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1510 +#: stock/models.py:1506 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1515 +#: stock/models.py:1511 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1523 stock/serializers.py:658 +#: stock/models.py:1519 stock/serializers.py:660 msgid "Serial numbers already exist" msgstr "シリアル番号が既に存在します" -#: stock/models.py:1620 +#: stock/models.py:1616 msgid "Test template does not exist" msgstr "" -#: stock/models.py:1638 +#: stock/models.py:1634 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1642 +#: stock/models.py:1638 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1645 +#: stock/models.py:1641 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1648 +#: stock/models.py:1644 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1651 +#: stock/models.py:1647 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1654 +#: stock/models.py:1650 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1661 stock/serializers.py:1369 +#: stock/models.py:1657 stock/serializers.py:1365 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1665 +#: stock/models.py:1661 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1673 +#: stock/models.py:1669 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1678 +#: stock/models.py:1674 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1905 +#: stock/models.py:1901 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2310 msgid "Entry notes" msgstr "" -#: stock/models.py:2391 +#: stock/models.py:2378 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2396 +#: stock/models.py:2383 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2423 +#: stock/models.py:2388 +msgid "Invalid value for this test" +msgstr "" + +#: stock/models.py:2412 msgid "Test result" msgstr "" -#: stock/models.py:2430 +#: stock/models.py:2419 msgid "Test output value" msgstr "" -#: stock/models.py:2438 +#: stock/models.py:2427 msgid "Test result attachment" msgstr "" -#: stock/models.py:2442 +#: stock/models.py:2431 msgid "Test notes" msgstr "" -#: stock/models.py:2450 templates/js/translated/stock.js:1548 +#: stock/models.py:2439 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2440 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2457 +#: stock/models.py:2446 msgid "Started" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2447 msgid "The timestamp of the test start" msgstr "" -#: stock/models.py:2464 +#: stock/models.py:2453 msgid "Finished" msgstr "" -#: stock/models.py:2465 +#: stock/models.py:2454 msgid "The timestamp of the test finish" msgstr "" -#: stock/serializers.py:75 +#: stock/serializers.py:74 msgid "Generated batch code" msgstr "" -#: stock/serializers.py:84 +#: stock/serializers.py:83 msgid "Select build order" msgstr "" -#: stock/serializers.py:93 +#: stock/serializers.py:92 msgid "Select stock item to generate batch code for" msgstr "" -#: stock/serializers.py:102 +#: stock/serializers.py:101 msgid "Select location to generate batch code for" msgstr "" -#: stock/serializers.py:111 +#: stock/serializers.py:110 msgid "Select part to generate batch code for" msgstr "" -#: stock/serializers.py:120 +#: stock/serializers.py:119 msgid "Select purchase order" msgstr "" -#: stock/serializers.py:127 +#: stock/serializers.py:126 msgid "Enter quantity for batch code" msgstr "" -#: stock/serializers.py:150 +#: stock/serializers.py:149 msgid "Generated serial number" msgstr "" -#: stock/serializers.py:159 +#: stock/serializers.py:158 msgid "Select part to generate serial number for" msgstr "" -#: stock/serializers.py:167 +#: stock/serializers.py:166 msgid "Quantity of serial numbers to generate" msgstr "" -#: stock/serializers.py:229 +#: stock/serializers.py:228 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:248 +#: stock/serializers.py:247 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:280 +#: stock/serializers.py:279 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:313 +#: stock/serializers.py:315 msgid "Serial number is too large" msgstr "シリアル番号が大きすぎます" -#: stock/serializers.py:411 +#: stock/serializers.py:438 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:531 +#: stock/serializers.py:558 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:595 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:606 +#: stock/serializers.py:608 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:613 +#: stock/serializers.py:615 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 +#: stock/serializers.py:626 stock/serializers.py:1322 stock/serializers.py:1578 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:631 +#: stock/serializers.py:633 msgid "Optional note field" msgstr "" -#: stock/serializers.py:641 +#: stock/serializers.py:643 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:696 +#: stock/serializers.py:698 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:703 +#: stock/serializers.py:705 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:704 +#: stock/serializers.py:706 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 -#: stock/serializers.py:935 +#: stock/serializers.py:711 stock/serializers.py:791 stock/serializers.py:887 +#: stock/serializers.py:937 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:719 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:725 +#: stock/serializers.py:727 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:736 +#: stock/serializers.py:738 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:749 +#: stock/serializers.py:751 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:784 +#: stock/serializers.py:786 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:819 +#: stock/serializers.py:821 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:834 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:849 +#: stock/serializers.py:851 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:880 +#: stock/serializers.py:882 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:917 +#: stock/serializers.py:919 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:923 +#: stock/serializers.py:925 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:1019 stock/serializers.py:1082 +#: stock/serializers.py:1021 stock/serializers.py:1093 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:220 +#: stock/templates/stock/location.html:222 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1198 +#: stock/serializers.py:1086 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: stock/serializers.py:1194 msgid "Part must be salable" msgstr "パーツは販売可能でなければなりません" -#: stock/serializers.py:1202 +#: stock/serializers.py:1198 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1206 +#: stock/serializers.py:1202 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1230 +#: stock/serializers.py:1226 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1236 +#: stock/serializers.py:1232 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1244 +#: stock/serializers.py:1240 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1254 stock/serializers.py:1508 +#: stock/serializers.py:1250 stock/serializers.py:1504 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1333 +#: stock/serializers.py:1329 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1338 +#: stock/serializers.py:1334 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1339 +#: stock/serializers.py:1335 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1344 +#: stock/serializers.py:1340 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1345 +#: stock/serializers.py:1341 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1355 +#: stock/serializers.py:1351 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1422 +#: stock/serializers.py:1418 msgid "No Change" msgstr "" -#: stock/serializers.py:1451 +#: stock/serializers.py:1447 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1470 +#: stock/serializers.py:1466 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1498 +#: stock/serializers.py:1494 msgid "Stock transaction notes" msgstr "" @@ -9444,7 +9532,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276 msgid "Delete Test Data" msgstr "" @@ -9464,11 +9552,11 @@ msgstr "" msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:272 +#: stock/templates/stock/item.html:264 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "" @@ -9754,28 +9842,28 @@ msgstr "" msgid "Location Type" msgstr "" -#: stock/templates/stock/location.html:224 +#: stock/templates/stock/location.html:226 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:225 +#: stock/templates/stock/location.html:227 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:295 +#: stock/templates/stock/location.html:299 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:317 +#: stock/templates/stock/location.html:321 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:390 +#: stock/templates/stock/location.html:394 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:401 +#: stock/templates/stock/location.html:405 msgid "Link Barcode to Stock Location" msgstr "" @@ -10199,20 +10287,20 @@ msgstr "" msgid "Pricing Settings" msgstr "" -#: templates/InvenTree/settings/pricing.html:34 +#: templates/InvenTree/settings/pricing.html:35 msgid "Exchange Rates" msgstr "" -#: templates/InvenTree/settings/pricing.html:38 +#: templates/InvenTree/settings/pricing.html:39 msgid "Update Now" msgstr "" -#: templates/InvenTree/settings/pricing.html:46 -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 msgid "Last Update" msgstr "" -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:51 msgid "Never" msgstr "" @@ -10269,8 +10357,8 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:547 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 +#: templates/js/translated/part.js:393 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:402 msgid "Delete" msgstr "" @@ -10310,12 +10398,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 -#: templates/js/translated/part.js:1645 +#: templates/js/translated/part.js:1646 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 -#: templates/js/translated/part.js:1646 +#: templates/js/translated/part.js:1647 msgid "Delete Template" msgstr "" @@ -10705,7 +10793,7 @@ msgid "Submit Bug Report" msgstr "" #: templates/about.html:91 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 +#: templates/js/translated/helpers.js:589 msgid "copy to clipboard" msgstr "" @@ -10769,7 +10857,7 @@ 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 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45 msgid "Return to Site" msgstr "" @@ -10883,15 +10971,19 @@ msgstr "" msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "" -#: templates/allauth_2fa/setup.html:23 +#: templates/allauth_2fa/setup.html:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 msgid "Step 2" msgstr "" -#: templates/allauth_2fa/setup.html:27 +#: templates/allauth_2fa/setup.html:28 msgid "Input a token generated by the app:" msgstr "" -#: templates/allauth_2fa/setup.html:37 +#: templates/allauth_2fa/setup.html:38 msgid "Verify" msgstr "" @@ -10970,7 +11062,7 @@ msgid "Click on the following link to view this part" msgstr "このパーツを表示するには、次のリンクをクリックしてください" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3217 +#: templates/js/translated/part.js:3219 msgid "Minimum Quantity" msgstr "最小在庫" @@ -11058,27 +11150,27 @@ msgstr "" msgid "Delete attachments" msgstr "" -#: templates/js/translated/attachment.js:253 +#: templates/js/translated/attachment.js:260 msgid "Attachment actions" msgstr "" -#: templates/js/translated/attachment.js:275 +#: templates/js/translated/attachment.js:294 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:315 +#: templates/js/translated/attachment.js:334 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:365 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:366 +#: templates/js/translated/attachment.js:385 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:374 +#: templates/js/translated/attachment.js:393 msgid "Delete attachment" msgstr "" @@ -11359,7 +11451,7 @@ msgid "Includes variant and substitute stock" msgstr "" #: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 -#: templates/js/translated/part.js:1256 +#: templates/js/translated/part.js:1257 #: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" @@ -11686,7 +11778,7 @@ msgstr "" #: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 #: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 -#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11729,8 +11821,8 @@ msgstr "" msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 -#: templates/js/translated/part.js:1202 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:791 +#: templates/js/translated/part.js:1203 msgid "Trackable part" msgstr "" @@ -11916,7 +12008,7 @@ msgid "Delete Parameters" msgstr "" #: templates/js/translated/company.js:1191 -#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2244 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2245 msgid "Order parts" msgstr "" @@ -11933,34 +12025,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:1279 -#: templates/js/translated/company.js:1567 templates/js/translated/part.js:798 -#: templates/js/translated/part.js:1210 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Template part" msgstr "" #: templates/js/translated/company.js:1283 -#: templates/js/translated/company.js:1571 templates/js/translated/part.js:802 -#: templates/js/translated/part.js:1214 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:803 +#: templates/js/translated/part.js:1215 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1464 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1465 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1527 +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1528 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1528 +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1529 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1433 +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1434 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1549 +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1550 msgid "Delete Parameter" msgstr "" @@ -12094,23 +12186,23 @@ msgstr "" msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2499 +#: templates/js/translated/forms.js:2500 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3113 +#: templates/js/translated/forms.js:3114 msgid "Select Columns" msgstr "" @@ -12211,7 +12303,7 @@ msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 -#: templates/js/translated/part.js:1604 +#: templates/js/translated/part.js:1605 msgid "ID" msgstr "" @@ -12292,347 +12384,343 @@ msgstr "" 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 +#: templates/js/translated/part.js:333 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:355 +#: templates/js/translated/part.js:356 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:356 +#: templates/js/translated/part.js:357 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:370 +#: templates/js/translated/part.js:371 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:383 +#: templates/js/translated/part.js:384 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:388 +#: templates/js/translated/part.js:389 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:397 +#: templates/js/translated/part.js:398 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:401 +#: templates/js/translated/part.js:402 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:406 +#: templates/js/translated/part.js:407 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:430 +#: templates/js/translated/part.js:431 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:432 +#: templates/js/translated/part.js:433 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:433 +#: templates/js/translated/part.js:434 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:462 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:463 +#: templates/js/translated/part.js:464 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:474 +#: templates/js/translated/part.js:475 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:531 +#: templates/js/translated/part.js:532 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:532 +#: templates/js/translated/part.js:533 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:546 +#: templates/js/translated/part.js:547 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:548 +#: templates/js/translated/part.js:549 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:549 +#: templates/js/translated/part.js:550 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:550 +#: templates/js/translated/part.js:551 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:557 +#: templates/js/translated/part.js:558 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:593 +#: templates/js/translated/part.js:594 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:595 +#: templates/js/translated/part.js:596 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:600 +#: templates/js/translated/part.js:601 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:602 +#: templates/js/translated/part.js:603 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:619 +#: templates/js/translated/part.js:620 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:629 +#: templates/js/translated/part.js:630 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:632 +#: templates/js/translated/part.js:633 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:657 +#: templates/js/translated/part.js:658 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:685 +#: templates/js/translated/part.js:686 #: templates/js/translated/table_filters.js:747 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:688 +#: templates/js/translated/part.js:689 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:748 +#: templates/js/translated/part.js:749 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:771 +#: templates/js/translated/part.js:772 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +#: templates/js/translated/part.js:795 templates/js/translated/part.js:1207 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:806 +#: templates/js/translated/part.js:807 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:810 +#: templates/js/translated/part.js:811 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:897 +#: templates/js/translated/part.js:898 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:901 +#: templates/js/translated/part.js:902 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1050 +#: templates/js/translated/part.js:1051 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1145 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +#: templates/js/translated/part.js:1113 templates/js/translated/part.js:1155 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1281 +#: templates/js/translated/part.js:1282 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1599 +#: templates/js/translated/part.js:1600 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1662 +#: templates/js/translated/part.js:1663 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1674 +#: templates/js/translated/part.js:1675 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1682 +#: templates/js/translated/part.js:1683 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1716 +#: templates/js/translated/part.js:1717 #: templates/js/translated/purchase_order.js:1654 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1860 +#: templates/js/translated/part.js:1861 #: templates/js/translated/purchase_order.js:2153 #: templates/js/translated/return_order.js:755 #: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1906 +#: templates/js/translated/part.js:1907 #: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1970 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1991 +#: templates/js/translated/part.js:1992 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 +#: templates/js/translated/part.js:2080 templates/js/translated/part.js:2506 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2200 +#: templates/js/translated/part.js:2201 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2205 +#: templates/js/translated/part.js:2206 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2235 +#: templates/js/translated/part.js:2236 msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2286 +#: templates/js/translated/part.js:2287 msgid "part" msgstr "" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2288 msgid "parts" msgstr "" -#: templates/js/translated/part.js:2383 +#: templates/js/translated/part.js:2384 msgid "No category" msgstr "" -#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2546 +#: templates/js/translated/part.js:2547 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2644 +#: templates/js/translated/part.js:2645 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2760 +#: templates/js/translated/part.js:2761 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2776 +#: templates/js/translated/part.js:2777 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2865 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2887 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/part.js:2938 templates/js/translated/stock.js:1457 #: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2940 +#: templates/js/translated/part.js:2942 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2956 +#: templates/js/translated/part.js:2958 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2970 +#: templates/js/translated/part.js:2972 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3051 templates/js/translated/part.js:3052 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3052 +#: templates/js/translated/part.js:3054 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3058 +#: templates/js/translated/part.js:3060 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3108 +#: templates/js/translated/part.js:3110 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3114 +#: templates/js/translated/part.js:3116 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3210 +#: templates/js/translated/part.js:3212 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3226 +#: templates/js/translated/part.js:3228 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3271 +#: templates/js/translated/part.js:3273 msgid "Minimum Stock Level" msgstr "" @@ -13240,10 +13328,6 @@ msgstr "" 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 "" @@ -13412,7 +13496,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:401 +#: templates/js/translated/stock.js:1042 users/models.py:392 msgid "Add" msgstr "" @@ -14303,34 +14387,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:384 +#: users/models.py:375 msgid "Permission set" msgstr "パーミッション設定" -#: users/models.py:393 +#: users/models.py:384 msgid "Group" msgstr "グループ" -#: users/models.py:397 +#: users/models.py:388 msgid "View" msgstr "表示" -#: users/models.py:397 +#: users/models.py:388 msgid "Permission to view items" msgstr "項目を表示する権限" -#: users/models.py:401 +#: users/models.py:392 msgid "Permission to add items" msgstr "項目を追加する権限" -#: users/models.py:405 +#: users/models.py:396 msgid "Change" msgstr "変更" -#: users/models.py:407 +#: users/models.py:398 msgid "Permissions to edit items" msgstr "項目を編集する権限" -#: users/models.py:413 +#: users/models.py:404 msgid "Permission to delete items" msgstr "項目を削除する権限" + diff --git a/src/backend/InvenTree/locale/ko/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/ko/LC_MESSAGES/django.po index 3a76c98fd0..2932296749 100644 --- a/src/backend/InvenTree/locale/ko/LC_MESSAGES/django.po +++ b/src/backend/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-05-31 07:08+0000\n" -"PO-Revision-Date: 2024-05-27 11:54\n" +"POT-Creation-Date: 2024-06-26 03:18+0000\n" +"PO-Revision-Date: 2024-06-26 06:04\n" "Last-Translator: \n" "Language-Team: Korean\n" "Language: ko_KR\n" @@ -21,7 +21,7 @@ msgstr "" msgid "API endpoint not found" msgstr "" -#: InvenTree/api.py:536 +#: InvenTree/api.py:520 msgid "User does not have permission to view this model" msgstr "" @@ -52,25 +52,25 @@ msgstr "" msgid "Error details can be found in the admin panel" msgstr "" -#: InvenTree/fields.py:139 +#: InvenTree/fields.py:136 msgid "Enter date" msgstr "" -#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 -#: build/serializers.py:531 build/templates/build/sidebar.html:21 -#: company/models.py:849 company/templates/company/sidebar.html:37 -#: order/models.py:1332 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:205 InvenTree/models.py:918 build/serializers.py:452 +#: build/serializers.py:530 build/templates/build/sidebar.html:21 +#: company/models.py:817 company/templates/company/sidebar.html:37 +#: order/models.py:1296 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:3218 part/templates/part/part_sidebar.html:63 +#: part/models.py:3183 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_report.html:172 -#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 -#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 -#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 -#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:230 stock/models.py:2309 stock/models.py:2431 +#: stock/serializers.py:632 stock/serializers.py:790 stock/serializers.py:886 +#: stock/serializers.py:936 stock/serializers.py:1239 stock/serializers.py:1328 +#: stock/serializers.py:1493 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1080 +#: templates/js/translated/part.js:1081 #: templates/js/translated/purchase_order.js:2200 #: templates/js/translated/return_order.js:775 #: templates/js/translated/sales_order.js:1103 @@ -120,15 +120,15 @@ msgstr "" msgid "You must type the same email each time." msgstr "" -#: InvenTree/forms.py:253 InvenTree/forms.py:261 +#: InvenTree/forms.py:248 InvenTree/forms.py:256 msgid "The provided primary email address is not valid." msgstr "" -#: InvenTree/forms.py:268 +#: InvenTree/forms.py:263 msgid "The provided email domain is not approved." msgstr "" -#: InvenTree/forms.py:395 +#: InvenTree/forms.py:390 msgid "Registration is disabled." msgstr "" @@ -171,35 +171,35 @@ msgstr "" msgid "Remove HTML tags from this value" msgstr "" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Connection error" msgstr "" -#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 msgid "Server responded with invalid status code" msgstr "" -#: InvenTree/helpers_model.py:158 +#: InvenTree/helpers_model.py:148 msgid "Exception occurred" msgstr "" -#: InvenTree/helpers_model.py:168 +#: InvenTree/helpers_model.py:158 msgid "Server responded with invalid Content-Length value" msgstr "" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:161 msgid "Image size is too large" msgstr "" -#: InvenTree/helpers_model.py:183 +#: InvenTree/helpers_model.py:173 msgid "Image download exceeded maximum size" msgstr "" -#: InvenTree/helpers_model.py:188 +#: InvenTree/helpers_model.py:178 msgid "Remote server returned empty response" msgstr "" -#: InvenTree/helpers_model.py:196 +#: InvenTree/helpers_model.py:186 msgid "Supplied URL is not a valid image file" msgstr "" @@ -296,46 +296,50 @@ msgid "Portuguese (Brazilian)" msgstr "" #: InvenTree/locales.py:41 -msgid "Russian" +msgid "Romanian" msgstr "" #: InvenTree/locales.py:42 -msgid "Slovak" +msgid "Russian" msgstr "" #: InvenTree/locales.py:43 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: InvenTree/locales.py:44 -msgid "Serbian" +msgid "Slovenian" msgstr "" #: InvenTree/locales.py:45 -msgid "Swedish" +msgid "Serbian" msgstr "" #: InvenTree/locales.py:46 -msgid "Thai" +msgid "Swedish" msgstr "" #: InvenTree/locales.py:47 -msgid "Turkish" +msgid "Thai" msgstr "" #: InvenTree/locales.py:48 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: InvenTree/locales.py:49 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: InvenTree/locales.py:50 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: InvenTree/locales.py:51 +msgid "Chinese (Simplified)" +msgstr "" + +#: InvenTree/locales.py:52 msgid "Chinese (Traditional)" msgstr "" @@ -344,153 +348,65 @@ msgstr "" msgid "[{site_name}] Log in to the app" msgstr "" -#: InvenTree/magic_login.py:38 company/models.py:133 +#: InvenTree/magic_login.py:38 company/models.py:136 #: company/templates/company/company_base.html:138 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:677 msgid "Email" msgstr "" -#: InvenTree/models.py:107 +#: InvenTree/models.py:105 msgid "Error running plugin validation" msgstr "" -#: InvenTree/models.py:176 +#: InvenTree/models.py:174 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:182 +#: InvenTree/models.py:180 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:183 +#: InvenTree/models.py:181 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:413 +#: InvenTree/models.py:408 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:420 +#: InvenTree/models.py:415 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:426 +#: InvenTree/models.py:421 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:437 +#: InvenTree/models.py:432 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:445 +#: InvenTree/models.py:440 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:476 +#: InvenTree/models.py:471 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:550 -msgid "Missing file" -msgstr "" - -#: InvenTree/models.py:551 -msgid "Missing external link" -msgstr "" - -#: InvenTree/models.py:572 stock/models.py:2437 -#: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:326 -msgid "Attachment" -msgstr "" - -#: InvenTree/models.py:573 -msgid "Select file to attach" -msgstr "" - -#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:831 -#: order/models.py:303 order/models.py:1337 order/models.py:1753 -#: part/admin.py:55 part/models.py:962 -#: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_report.html:164 -#: stock/admin.py:225 templates/js/translated/company.js:1319 -#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2455 -#: templates/js/translated/purchase_order.js:2040 -#: templates/js/translated/purchase_order.js:2204 -#: templates/js/translated/return_order.js:779 -#: templates/js/translated/sales_order.js:1092 -#: templates/js/translated/sales_order.js:2023 -msgid "Link" -msgstr "" - -#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 -#: stock/models.py:836 -msgid "Link to external URL" -msgstr "" - -#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:341 -msgid "Comment" -msgstr "" - -#: InvenTree/models.py:589 -msgid "File comment" -msgstr "" - -#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 -#: common/models.py:2518 common/models.py:2742 common/models.py:2743 -#: common/models.py:2988 common/models.py:2989 part/models.py:3228 -#: part/models.py:3315 part/models.py:3408 part/models.py:3436 -#: plugin/models.py:259 plugin/models.py:260 -#: report/templates/report/inventree_test_report.html:105 -#: templates/js/translated/stock.js:3036 users/models.py:111 -msgid "User" -msgstr "" - -#: InvenTree/models.py:602 -msgid "upload date" -msgstr "" - -#: InvenTree/models.py:624 -msgid "Filename must not be empty" -msgstr "" - -#: InvenTree/models.py:635 -msgid "Invalid attachment directory" -msgstr "" - -#: InvenTree/models.py:665 -#, python-brace-format -msgid "Filename contains illegal character '{c}'" -msgstr "" - -#: InvenTree/models.py:668 -msgid "Filename missing extension" -msgstr "" - -#: InvenTree/models.py:677 -msgid "Attachment with this filename already exists" -msgstr "" - -#: InvenTree/models.py:684 -msgid "Error renaming file" -msgstr "" - -#: InvenTree/models.py:860 +#: InvenTree/models.py:719 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:877 +#: InvenTree/models.py:736 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 -#: common/serializers.py:403 company/models.py:614 machine/models.py:24 -#: part/models.py:898 part/models.py:3659 plugin/models.py:50 -#: report/models.py:149 stock/models.py:72 +#: InvenTree/models.py:766 common/models.py:2623 common/models.py:3036 +#: common/serializers.py:408 company/models.py:580 machine/models.py:24 +#: part/models.py:891 part/models.py:3639 plugin/models.py:51 +#: report/models.py:150 stock/models.py:73 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:83 @@ -501,25 +417,25 @@ msgstr "" #: templates/js/translated/company.js:724 #: templates/js/translated/company.js:913 #: templates/js/translated/company.js:1165 -#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 -#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1187 +#: templates/js/translated/part.js:1475 templates/js/translated/part.js:1611 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "" -#: InvenTree/models.py:913 build/models.py:218 -#: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:523 company/models.py:840 +#: InvenTree/models.py:772 build/models.py:220 +#: build/templates/build/detail.html:24 common/models.py:138 +#: company/models.py:509 company/models.py:808 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 order/models.py:289 -#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 -#: part/models.py:3674 part/templates/part/category.html:82 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:914 +#: part/models.py:3654 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:155 -#: report/models.py:509 report/models.py:535 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 #: report/templates/report/inventree_build_order_report.html:117 -#: stock/admin.py:55 stock/models.py:78 stock/templates/stock/location.html:125 +#: stock/admin.py:54 stock/models.py:79 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 @@ -528,10 +444,10 @@ msgstr "" #: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 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:2354 -#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1239 +#: templates/js/translated/part.js:1484 templates/js/translated/part.js:1622 +#: templates/js/translated/part.js:1959 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2897 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1706 #: templates/js/translated/purchase_order.js:1849 @@ -544,149 +460,141 @@ msgstr "" msgid "Description" msgstr "" -#: InvenTree/models.py:914 stock/models.py:79 +#: InvenTree/models.py:773 stock/models.py:80 msgid "Description (optional)" msgstr "" -#: InvenTree/models.py:923 -msgid "parent" -msgstr "" - -#: InvenTree/models.py:929 templates/js/translated/part.js:2793 +#: InvenTree/models.py:788 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "" -#: InvenTree/models.py:1035 +#: InvenTree/models.py:918 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:1064 +#: InvenTree/models.py:947 msgid "Barcode Data" msgstr "" -#: InvenTree/models.py:1065 +#: InvenTree/models.py:948 msgid "Third party barcode data" msgstr "" -#: InvenTree/models.py:1071 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:1072 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:1125 +#: InvenTree/models.py:1008 msgid "Existing barcode found" msgstr "" -#: InvenTree/models.py:1168 +#: InvenTree/models.py:1051 msgid "Server Error" msgstr "" -#: InvenTree/models.py:1169 +#: InvenTree/models.py:1052 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:62 part/models.py:4212 +#: InvenTree/serializers.py:63 part/models.py:4192 msgid "Must be a valid number" msgstr "" -#: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:3036 +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3001 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "" -#: InvenTree/serializers.py:102 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:441 +#: InvenTree/serializers.py:442 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:453 +#: InvenTree/serializers.py:454 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:472 +#: InvenTree/serializers.py:473 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:474 +#: InvenTree/serializers.py:475 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:481 +#: InvenTree/serializers.py:482 msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:542 -msgid "Filename" -msgstr "" - -#: InvenTree/serializers.py:576 +#: InvenTree/serializers.py:540 msgid "Invalid value" msgstr "" -#: InvenTree/serializers.py:596 +#: InvenTree/serializers.py:560 msgid "Data File" msgstr "" -#: InvenTree/serializers.py:597 +#: InvenTree/serializers.py:561 msgid "Select data file for upload" msgstr "" -#: InvenTree/serializers.py:614 +#: InvenTree/serializers.py:578 msgid "Unsupported file type" msgstr "" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:584 msgid "File is too large" msgstr "" -#: InvenTree/serializers.py:641 +#: InvenTree/serializers.py:605 msgid "No columns found in file" msgstr "" -#: InvenTree/serializers.py:644 +#: InvenTree/serializers.py:608 msgid "No data rows found in file" msgstr "" -#: InvenTree/serializers.py:757 +#: InvenTree/serializers.py:721 msgid "No data rows provided" msgstr "" -#: InvenTree/serializers.py:760 +#: InvenTree/serializers.py:724 msgid "No data columns supplied" msgstr "" -#: InvenTree/serializers.py:827 +#: InvenTree/serializers.py:791 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "" -#: InvenTree/serializers.py:836 +#: InvenTree/serializers.py:800 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/serializers.py:859 +#: InvenTree/serializers.py:840 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:860 +#: InvenTree/serializers.py:841 msgid "URL of remote image file" msgstr "" -#: InvenTree/serializers.py:878 +#: InvenTree/serializers.py:859 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/status.py:66 part/serializers.py:1178 +#: InvenTree/status.py:66 part/serializers.py:1174 msgid "Background worker check failed" msgstr "" @@ -698,27 +606,27 @@ msgstr "" msgid "InvenTree system health checks failed" msgstr "" -#: InvenTree/templatetags/inventree_extras.py:183 +#: InvenTree/templatetags/inventree_extras.py:184 msgid "Unknown database" msgstr "" -#: InvenTree/validators.py:31 InvenTree/validators.py:33 +#: InvenTree/validators.py:32 InvenTree/validators.py:34 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:39 +#: InvenTree/validators.py:40 msgid "Not a valid currency code" msgstr "" -#: InvenTree/validators.py:121 InvenTree/validators.py:137 +#: InvenTree/validators.py:118 InvenTree/validators.py:134 msgid "Overage value must not be negative" msgstr "" -#: InvenTree/validators.py:139 +#: InvenTree/validators.py:136 msgid "Overage must not exceed 100%" msgstr "" -#: InvenTree/validators.py:145 +#: InvenTree/validators.py:142 msgid "Invalid value for overage" msgstr "" @@ -750,14 +658,14 @@ msgstr "" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: build/api.py:299 part/models.py:4070 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:300 part/models.py:4084 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4064 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2529 #: templates/js/translated/table_filters.js:186 @@ -778,30 +686,30 @@ msgstr "" msgid "Allocated" msgstr "" -#: build/api.py:311 company/models.py:904 company/serializers.py:383 +#: build/api.py:311 company/models.py:872 company/serializers.py:359 #: 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:2561 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:234 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 -#: templates/js/translated/part.js:699 +#: templates/js/translated/part.js:693 templates/js/translated/part.js:695 +#: templates/js/translated/part.js:700 #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:575 msgid "Available" msgstr "" -#: build/models.py:83 build/templates/build/build_base.html:9 +#: build/models.py:85 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_report.html:105 -#: stock/serializers.py:83 templates/email/build_order_completed.html:16 +#: stock/serializers.py:82 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:2892 msgid "Build Order" msgstr "" -#: build/models.py:84 build/templates/build/build_base.html:13 +#: build/models.py:86 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 @@ -812,25 +720,25 @@ msgstr "" msgid "Build Orders" msgstr "" -#: build/models.py:131 +#: build/models.py:133 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:142 order/models.py:240 +#: build/models.py:144 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "" -#: build/models.py:148 +#: build/models.py:150 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:209 +#: build/models.py:211 msgid "Build Order Reference" msgstr "" -#: build/models.py:210 order/models.py:463 order/models.py:928 -#: order/models.py:1325 order/models.py:2056 part/admin.py:419 -#: part/models.py:4105 part/templates/part/upload_bom.html:54 +#: build/models.py:212 order/models.py:463 order/models.py:926 +#: order/models.py:1289 order/models.py:2020 part/admin.py:411 +#: part/models.py:4085 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_purchase_order_report.html:28 #: report/templates/report/inventree_return_order_report.html:26 @@ -844,27 +752,27 @@ msgstr "" msgid "Reference" msgstr "" -#: build/models.py:221 +#: build/models.py:223 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:229 build/templates/build/build_base.html:183 +#: build/models.py:231 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:230 +#: build/models.py:232 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:235 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 -#: order/models.py:1450 order/models.py:1595 order/models.py:1596 -#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 -#: part/models.py:3191 part/models.py:3335 part/models.py:3358 -#: part/models.py:3379 part/models.py:3401 part/models.py:3511 -#: part/models.py:3807 part/models.py:3963 part/models.py:4056 -#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 +#: build/models.py:237 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1026 order/api.py:805 +#: order/models.py:1414 order/models.py:1559 order/models.py:1560 +#: part/api.py:1494 part/api.py:1788 part/models.py:395 part/models.py:3012 +#: part/models.py:3156 part/models.py:3303 part/models.py:3324 +#: part/models.py:3346 part/models.py:3477 part/models.py:3787 +#: part/models.py:3943 part/models.py:4036 part/models.py:4395 +#: part/serializers.py:1120 part/serializers.py:1726 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -875,8 +783,8 @@ msgstr "" #: report/templates/report/inventree_return_order_report.html:24 #: report/templates/report/inventree_sales_order_report.html:27 #: report/templates/report/inventree_stock_location_report.html:102 -#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 -#: stock/serializers.py:818 templates/InvenTree/search.html:82 +#: stock/serializers.py:109 stock/serializers.py:157 stock/serializers.py:423 +#: stock/serializers.py:820 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 @@ -889,8 +797,8 @@ msgstr "" #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 -#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2323 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:1944 templates/js/translated/part.js:2016 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 #: templates/js/translated/purchase_order.js:751 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1848 @@ -908,107 +816,107 @@ msgstr "" msgid "Part" msgstr "" -#: build/models.py:243 +#: build/models.py:245 msgid "Select part to build" msgstr "" -#: build/models.py:248 +#: build/models.py:250 msgid "Sales Order Reference" msgstr "" -#: build/models.py:252 +#: build/models.py:254 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:257 build/serializers.py:1000 +#: build/models.py:259 build/serializers.py:999 #: templates/js/translated/build.js:1731 #: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "" -#: build/models.py:261 +#: build/models.py:263 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:266 +#: build/models.py:268 msgid "Destination Location" msgstr "" -#: build/models.py:270 +#: build/models.py:272 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:274 +#: build/models.py:276 msgid "Build Quantity" msgstr "" -#: build/models.py:277 +#: build/models.py:279 msgid "Number of stock items to build" msgstr "" -#: build/models.py:281 +#: build/models.py:283 msgid "Completed items" msgstr "" -#: build/models.py:283 +#: build/models.py:285 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:287 +#: build/models.py:289 msgid "Build Status" msgstr "" -#: build/models.py:291 +#: build/models.py:293 msgid "Build status code" msgstr "" -#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 -#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 +#: build/models.py:302 build/serializers.py:286 order/serializers.py:580 +#: stock/models.py:838 stock/serializers.py:74 stock/serializers.py:1458 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "" -#: build/models.py:304 build/serializers.py:288 +#: build/models.py:306 build/serializers.py:287 msgid "Batch code for this build output" msgstr "" -#: build/models.py:307 order/models.py:316 order/serializers.py:120 -#: part/models.py:1122 part/templates/part/part_base.html:310 +#: build/models.py:309 order/models.py:316 order/serializers.py:119 +#: part/models.py:1115 part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:338 #: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "" -#: build/models.py:311 +#: build/models.py:313 msgid "Target completion date" msgstr "" -#: build/models.py:312 +#: build/models.py:314 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:315 order/models.py:521 order/models.py:2101 +#: build/models.py:317 order/models.py:521 order/models.py:2065 #: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "" -#: build/models.py:321 +#: build/models.py:323 msgid "completed by" msgstr "" -#: build/models.py:329 templates/js/translated/build.js:2207 +#: build/models.py:331 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "" -#: build/models.py:330 +#: build/models.py:332 msgid "User who issued this build order" msgstr "" -#: build/models.py:338 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:145 +#: build/models.py:340 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:147 #: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:232 part/models.py:1139 +#: order/templates/order/sales_order_base.html:232 part/models.py:1132 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_report.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 @@ -1019,31 +927,36 @@ msgstr "" msgid "Responsible" msgstr "" -#: build/models.py:339 +#: build/models.py:341 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:344 build/templates/build/detail.html:108 +#: build/models.py:346 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:184 -#: part/templates/part/part_base.html:383 stock/models.py:836 +#: part/templates/part/part_base.html:383 stock/models.py:834 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "" -#: build/models.py:349 +#: build/models.py:347 common/models.py:3178 part/models.py:956 +#: stock/models.py:834 +msgid "Link to external URL" +msgstr "" + +#: build/models.py:351 msgid "Build Priority" msgstr "" -#: build/models.py:352 +#: build/models.py:354 msgid "Priority of this build order" msgstr "" -#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: build/models.py:361 common/models.py:131 order/admin.py:18 #: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 #: templates/js/translated/build.js:2144 #: templates/js/translated/purchase_order.js:1710 @@ -1054,65 +967,65 @@ msgstr "" msgid "Project Code" msgstr "" -#: build/models.py:360 +#: build/models.py:362 msgid "Project code for this build order" msgstr "" -#: build/models.py:593 build/models.py:658 +#: build/models.py:595 build/models.py:660 msgid "Failed to offload task to complete build allocations" msgstr "" -#: build/models.py:615 +#: build/models.py:617 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:621 +#: build/models.py:623 msgid "A build order has been completed" msgstr "" -#: build/models.py:847 build/models.py:932 +#: build/models.py:849 build/models.py:934 msgid "No build output specified" msgstr "" -#: build/models.py:850 +#: build/models.py:852 msgid "Build output is already completed" msgstr "" -#: build/models.py:853 +#: build/models.py:855 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 -#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 -#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 -#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 +#: build/models.py:938 build/serializers.py:219 build/serializers.py:268 +#: build/serializers.py:866 order/models.py:559 order/serializers.py:432 +#: order/serializers.py:575 part/serializers.py:1484 part/serializers.py:1884 +#: stock/models.py:677 stock/models.py:1495 stock/serializers.py:603 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:941 build/serializers.py:225 +#: build/models.py:943 build/serializers.py:224 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1001 build/serializers.py:548 +#: build/models.py:1003 build/serializers.py:547 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1352 +#: build/models.py:1344 msgid "Build Order Line Item" msgstr "" -#: build/models.py:1377 +#: build/models.py:1369 msgid "Build object" msgstr "" -#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 -#: build/serializers.py:254 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2539 -#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 -#: part/forms.py:48 part/models.py:3205 part/models.py:4078 +#: build/models.py:1383 build/models.py:1639 build/serializers.py:206 +#: build/serializers.py:253 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2509 +#: order/models.py:1272 order/models.py:1931 order/serializers.py:1327 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3170 part/models.py:4058 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1121,8 +1034,8 @@ msgstr "" #: report/templates/report/inventree_sales_order_report.html:29 #: report/templates/report/inventree_stock_location_report.html:104 #: report/templates/report/inventree_test_report.html:90 -#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 -#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:125 stock/serializers.py:165 stock/serializers.py:594 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1133,8 +1046,8 @@ msgstr "" #: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 #: templates/js/translated/model_renderers.js:236 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:962 +#: templates/js/translated/part.js:1812 templates/js/translated/part.js:3342 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1154,38 +1067,38 @@ msgstr "" msgid "Quantity" msgstr "" -#: build/models.py:1392 +#: build/models.py:1384 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1472 +#: build/models.py:1464 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1481 +#: build/models.py:1473 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1491 order/models.py:1918 +#: build/models.py:1483 order/models.py:1882 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1497 order/models.py:1921 +#: build/models.py:1489 order/models.py:1885 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1503 +#: build/models.py:1495 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1562 +#: build/models.py:1554 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 -#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 -#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: build/models.py:1626 build/serializers.py:846 order/serializers.py:1171 +#: order/serializers.py:1192 stock/models.py:358 stock/serializers.py:91 +#: stock/serializers.py:697 stock/serializers.py:1177 stock/serializers.py:1289 #: stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 @@ -1201,70 +1114,70 @@ msgstr "" msgid "Stock Item" msgstr "" -#: build/models.py:1635 +#: build/models.py:1627 msgid "Source stock item" msgstr "" -#: build/models.py:1648 +#: build/models.py:1640 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1656 +#: build/models.py:1648 msgid "Install into" msgstr "" -#: build/models.py:1657 +#: build/models.py:1649 msgid "Destination stock item" msgstr "" -#: build/serializers.py:157 build/serializers.py:876 +#: build/serializers.py:156 build/serializers.py:875 #: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "" -#: build/serializers.py:169 +#: build/serializers.py:168 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:173 +#: build/serializers.py:172 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:177 +#: build/serializers.py:176 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:188 +#: build/serializers.py:187 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:208 build/serializers.py:255 +#: build/serializers.py:207 build/serializers.py:254 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:276 +#: build/serializers.py:275 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:279 +#: build/serializers.py:278 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:294 order/serializers.py:589 order/serializers.py:1343 -#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:293 order/serializers.py:588 order/serializers.py:1331 +#: stock/serializers.py:614 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:295 +#: build/serializers.py:294 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 -#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 -#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 -#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 -#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 +#: build/serializers.py:299 build/serializers.py:440 build/serializers.py:512 +#: order/serializers.py:564 order/serializers.py:672 order/serializers.py:1656 +#: part/serializers.py:1140 stock/serializers.py:100 stock/serializers.py:625 +#: stock/serializers.py:785 stock/serializers.py:881 stock/serializers.py:1321 +#: stock/serializers.py:1577 stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:1001 #: templates/js/translated/build.js:2372 @@ -1280,54 +1193,54 @@ msgstr "" msgid "Location" msgstr "" -#: build/serializers.py:301 +#: build/serializers.py:300 msgid "Stock location for build output" msgstr "" -#: build/serializers.py:315 +#: build/serializers.py:314 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:316 +#: build/serializers.py:315 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:331 +#: build/serializers.py:330 msgid "Serial numbers must be provided for trackable parts" msgstr "" -#: build/serializers.py:356 stock/api.py:1031 +#: build/serializers.py:355 stock/api.py:1041 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:403 build/serializers.py:465 build/serializers.py:554 +#: build/serializers.py:402 build/serializers.py:464 build/serializers.py:553 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:442 +#: build/serializers.py:441 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:448 +#: build/serializers.py:447 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:449 +#: build/serializers.py:448 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:454 +#: build/serializers.py:453 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:514 +#: build/serializers.py:513 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:520 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:952 -#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 -#: stock/serializers.py:930 stock/serializers.py:1469 +#: build/serializers.py:519 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2044 order/serializers.py:596 stock/admin.py:164 +#: stock/serializers.py:932 stock/serializers.py:1465 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 @@ -1339,188 +1252,188 @@ msgstr "" msgid "Status" msgstr "" -#: build/serializers.py:526 +#: build/serializers.py:525 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:527 +#: build/serializers.py:526 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:611 msgid "Consume Allocated Stock" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:612 msgid "Consume any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:619 +#: build/serializers.py:618 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:620 +#: build/serializers.py:619 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:646 msgid "Not permitted" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:647 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:648 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:679 +#: build/serializers.py:678 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:681 +#: build/serializers.py:680 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:691 +#: build/serializers.py:690 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:696 +#: build/serializers.py:695 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:697 +#: build/serializers.py:696 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:707 templates/js/translated/build.js:315 +#: build/serializers.py:706 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:712 order/serializers.py:301 order/serializers.py:1246 +#: build/serializers.py:711 order/serializers.py:300 order/serializers.py:1234 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:713 +#: build/serializers.py:712 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:723 templates/js/translated/build.js:319 +#: build/serializers.py:722 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:732 templates/js/translated/build.js:303 +#: build/serializers.py:731 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:770 +#: build/serializers.py:769 msgid "Build Line" msgstr "" -#: build/serializers.py:780 +#: build/serializers.py:779 msgid "Build output" msgstr "" -#: build/serializers.py:788 +#: build/serializers.py:787 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:824 +#: build/serializers.py:823 msgid "Build Line Item" msgstr "" -#: build/serializers.py:838 +#: build/serializers.py:837 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:853 stock/serializers.py:1194 +#: build/serializers.py:852 stock/serializers.py:1190 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:901 order/serializers.py:1237 +#: build/serializers.py:900 order/serializers.py:1225 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:907 +#: build/serializers.py:906 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:914 +#: build/serializers.py:913 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:938 order/serializers.py:1489 +#: build/serializers.py:937 order/serializers.py:1477 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:1001 +#: build/serializers.py:1000 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:1009 +#: build/serializers.py:1008 msgid "Exclude Location" msgstr "" -#: build/serializers.py:1010 +#: build/serializers.py:1009 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:1015 +#: build/serializers.py:1014 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:1016 +#: build/serializers.py:1015 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:1021 +#: build/serializers.py:1020 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:1022 +#: build/serializers.py:1021 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:1027 +#: build/serializers.py:1026 msgid "Optional Items" msgstr "" -#: build/serializers.py:1028 +#: build/serializers.py:1027 msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1050 +#: build/serializers.py:1049 msgid "Failed to start auto-allocation task" msgstr "" -#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 -#: stock/api.py:794 +#: build/serializers.py:1139 part/models.py:3953 part/models.py:4387 +#: stock/api.py:804 msgid "BOM Item" msgstr "" -#: build/serializers.py:1149 templates/js/translated/index.js:130 +#: build/serializers.py:1148 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:832 part/serializers.py:1506 +#: build/serializers.py:1153 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:828 part/serializers.py:1502 #: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 -#: templates/js/translated/build.js:2613 templates/js/translated/part.js:709 -#: templates/js/translated/part.js:2148 +#: templates/js/translated/build.js:2613 templates/js/translated/part.js:710 +#: templates/js/translated/part.js:2149 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1159 part/serializers.py:1508 +#: build/serializers.py:1158 part/serializers.py:1504 #: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 +#: build/serializers.py:1163 part/bom.py:172 part/serializers.py:1527 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1929 msgid "Available Stock" @@ -1544,7 +1457,7 @@ msgstr "" #: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 #: order/status_codes.py:44 order/status_codes.py:69 #: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:165 report/models.py:443 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 msgid "Complete" msgstr "" @@ -1674,11 +1587,11 @@ msgstr "" #: build/templates/build/build_base.html:160 #: build/templates/build/detail.html:138 order/models.py:309 -#: order/models.py:1343 order/templates/order/order_base.html:186 +#: order/models.py:1307 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:196 #: report/templates/report/inventree_build_order_report.html:125 -#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1831 #: templates/js/translated/purchase_order.js:1739 #: templates/js/translated/purchase_order.js:2147 #: templates/js/translated/return_order.js:346 @@ -1711,8 +1624,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 -#: order/models.py:1587 order/models.py:1701 order/models.py:1855 +#: build/templates/build/detail.html:101 order/api.py:1463 order/models.py:845 +#: order/models.py:1551 order/models.py:1665 order/models.py:1819 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_report.html:135 @@ -1762,7 +1675,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1479 +#: build/templates/build/detail.html:49 order/models.py:1443 #: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "" @@ -1775,7 +1688,7 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:163 +#: build/templates/build/detail.html:80 stock/admin.py:162 #: stock/templates/stock/item_base.html:162 #: templates/js/translated/build.js:1380 #: templates/js/translated/model_renderers.js:241 @@ -1894,11 +1807,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:436 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -1914,6 +1827,34 @@ msgstr "" msgid "Incomplete Outputs" msgstr "" +#: common/api.py:689 +msgid "Is Link" +msgstr "" + +#: common/api.py:697 +msgid "Is File" +msgstr "" + +#: common/api.py:739 +msgid "User does not have permission to delete this attachment" +msgstr "" + +#: common/currency.py:130 +msgid "Invalid currency code" +msgstr "" + +#: common/currency.py:132 +msgid "Duplicate currency code" +msgstr "" + +#: common/currency.py:137 +msgid "No valid currency codes provided" +msgstr "" + +#: common/currency.py:154 +msgid "No plugin" +msgstr "" + #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1952,1507 +1893,1512 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:71 +#: common/models.py:73 msgid "Updated" msgstr "" -#: common/models.py:72 +#: common/models.py:74 msgid "Timestamp of last update" msgstr "" -#: common/models.py:105 +#: common/models.py:107 msgid "Site URL is locked by configuration" msgstr "" -#: common/models.py:130 +#: common/models.py:132 msgid "Unique project code" msgstr "" -#: common/models.py:137 +#: common/models.py:139 msgid "Project description" msgstr "" -#: common/models.py:146 +#: common/models.py:148 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:766 +#: common/models.py:765 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:770 +#: common/models.py:769 msgid "Settings value" msgstr "" -#: common/models.py:822 +#: common/models.py:821 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:838 +#: common/models.py:837 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:846 +#: common/models.py:845 msgid "Value must be an integer value" msgstr "" -#: common/models.py:883 +#: common/models.py:882 msgid "Key string must be unique" msgstr "" -#: common/models.py:1115 +#: common/models.py:1114 msgid "No group" msgstr "" -#: common/models.py:1158 -msgid "An empty domain is not allowed." -msgstr "" - -#: common/models.py:1160 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "" - -#: common/models.py:1172 -msgid "No plugin" -msgstr "" - -#: common/models.py:1260 +#: common/models.py:1213 msgid "Restart required" msgstr "" -#: common/models.py:1262 +#: common/models.py:1215 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1269 +#: common/models.py:1222 msgid "Pending migrations" msgstr "" -#: common/models.py:1270 +#: common/models.py:1223 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1275 +#: common/models.py:1228 msgid "Server Instance Name" msgstr "" -#: common/models.py:1277 +#: common/models.py:1230 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1281 +#: common/models.py:1234 msgid "Use instance name" msgstr "" -#: common/models.py:1282 +#: common/models.py:1235 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1287 +#: common/models.py:1240 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1288 +#: common/models.py:1241 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1293 company/models.py:108 company/models.py:109 +#: common/models.py:1246 company/models.py:111 company/models.py:112 msgid "Company name" msgstr "" -#: common/models.py:1294 +#: common/models.py:1247 msgid "Internal company name" msgstr "" -#: common/models.py:1298 +#: common/models.py:1251 msgid "Base URL" msgstr "" -#: common/models.py:1299 +#: common/models.py:1252 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1305 +#: common/models.py:1258 msgid "Default Currency" msgstr "" -#: common/models.py:1306 +#: common/models.py:1259 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1312 +#: common/models.py:1265 +msgid "Supported Currencies" +msgstr "" + +#: common/models.py:1266 +msgid "List of supported currency codes" +msgstr "" + +#: common/models.py:1272 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1314 +#: common/models.py:1274 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1317 common/models.py:1373 common/models.py:1386 -#: common/models.py:1394 common/models.py:1403 common/models.py:1412 -#: common/models.py:1620 common/models.py:1642 common/models.py:1757 -#: common/models.py:2076 +#: common/models.py:1277 common/models.py:1333 common/models.py:1346 +#: common/models.py:1354 common/models.py:1363 common/models.py:1372 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:2046 msgid "days" msgstr "" -#: common/models.py:1321 +#: common/models.py:1281 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1322 +#: common/models.py:1282 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1327 +#: common/models.py:1287 msgid "Download from URL" msgstr "" -#: common/models.py:1329 +#: common/models.py:1289 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1335 +#: common/models.py:1295 msgid "Download Size Limit" msgstr "" -#: common/models.py:1336 +#: common/models.py:1296 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1342 +#: common/models.py:1302 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1344 +#: common/models.py:1304 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:1349 +#: common/models.py:1309 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1350 +#: common/models.py:1310 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1355 +#: common/models.py:1315 msgid "Require confirm" msgstr "" -#: common/models.py:1356 +#: common/models.py:1316 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1361 +#: common/models.py:1321 msgid "Tree Depth" msgstr "" -#: common/models.py:1363 +#: common/models.py:1323 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1369 +#: common/models.py:1329 msgid "Update Check Interval" msgstr "" -#: common/models.py:1370 +#: common/models.py:1330 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1376 +#: common/models.py:1336 msgid "Automatic Backup" msgstr "" -#: common/models.py:1377 +#: common/models.py:1337 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1382 +#: common/models.py:1342 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1383 +#: common/models.py:1343 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1389 +#: common/models.py:1349 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1391 +#: common/models.py:1351 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1398 +#: common/models.py:1358 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1400 +#: common/models.py:1360 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1407 +#: common/models.py:1367 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1409 +#: common/models.py:1369 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1416 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1376 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1417 +#: common/models.py:1377 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1422 +#: common/models.py:1382 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1423 +#: common/models.py:1383 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1429 +#: common/models.py:1389 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1430 +#: common/models.py:1390 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1435 +#: common/models.py:1395 msgid "Part Revisions" msgstr "" -#: common/models.py:1436 +#: common/models.py:1396 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1441 +#: common/models.py:1401 msgid "Allow Deletion from Assembly" msgstr "" -#: common/models.py:1442 +#: common/models.py:1402 msgid "Allow deletion of parts which are used in an assembly" msgstr "" -#: common/models.py:1447 +#: common/models.py:1407 msgid "IPN Regex" msgstr "" -#: common/models.py:1448 +#: common/models.py:1408 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1451 +#: common/models.py:1411 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1452 +#: common/models.py:1412 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1457 +#: common/models.py:1417 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1458 +#: common/models.py:1418 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1463 +#: common/models.py:1423 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1464 +#: common/models.py:1424 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1469 +#: common/models.py:1429 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1470 +#: common/models.py:1430 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1475 +#: common/models.py:1435 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1476 +#: common/models.py:1436 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1481 +#: common/models.py:1441 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1482 +#: common/models.py:1442 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1487 part/admin.py:108 part/models.py:3815 -#: report/models.py:293 report/models.py:360 report/serializers.py:90 -#: report/serializers.py:131 stock/serializers.py:228 +#: common/models.py:1447 part/admin.py:108 part/models.py:3795 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:227 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1488 +#: common/models.py:1448 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 +#: common/models.py:1453 part/admin.py:91 part/admin.py:425 part/models.py:1052 #: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" msgstr "" -#: common/models.py:1494 +#: common/models.py:1454 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1499 part/admin.py:95 part/models.py:1065 +#: common/models.py:1459 part/admin.py:95 part/models.py:1058 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1500 +#: common/models.py:1460 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1505 part/admin.py:100 part/models.py:1077 +#: common/models.py:1465 part/admin.py:100 part/models.py:1070 msgid "Purchaseable" msgstr "" -#: common/models.py:1506 +#: common/models.py:1466 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1511 part/admin.py:104 part/models.py:1083 +#: common/models.py:1471 part/admin.py:104 part/models.py:1076 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1512 +#: common/models.py:1472 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1517 part/admin.py:113 part/models.py:1071 +#: common/models.py:1477 part/admin.py:113 part/models.py:1064 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" msgstr "" -#: common/models.py:1518 +#: common/models.py:1478 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1523 part/admin.py:117 part/models.py:1093 +#: common/models.py:1483 part/admin.py:117 part/models.py:1086 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" msgstr "" -#: common/models.py:1524 +#: common/models.py:1484 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1529 +#: common/models.py:1489 msgid "Show Import in Views" msgstr "" -#: common/models.py:1530 +#: common/models.py:1490 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1535 +#: common/models.py:1495 msgid "Show related parts" msgstr "" -#: common/models.py:1536 +#: common/models.py:1496 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1541 +#: common/models.py:1501 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1542 +#: common/models.py:1502 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1547 templates/js/translated/part.js:107 +#: common/models.py:1507 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1549 +#: common/models.py:1509 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1555 +#: common/models.py:1515 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1556 +#: common/models.py:1516 msgid "Format to display the part name" msgstr "" -#: common/models.py:1562 +#: common/models.py:1522 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1563 +#: common/models.py:1523 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1567 +#: common/models.py:1527 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1569 +#: common/models.py:1529 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1575 +#: common/models.py:1535 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1577 +#: common/models.py:1537 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1583 +#: common/models.py:1548 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1585 +#: common/models.py:1550 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1591 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1593 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1599 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1601 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1607 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1609 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1615 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1617 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1630 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1632 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1638 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1640 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1647 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1648 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1653 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1655 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1661 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1662 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1667 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1669 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1675 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1676 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1681 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1682 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1687 +#: common/models.py:1657 msgid "Log Report Errors" msgstr "" -#: common/models.py:1688 +#: common/models.py:1658 msgid "Log errors which occur when generating reports" msgstr "" -#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:301 +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:302 msgid "Page Size" msgstr "" -#: common/models.py:1694 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1699 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1700 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1705 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1707 +#: common/models.py:1677 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1713 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1714 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1719 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1720 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1725 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1727 +#: common/models.py:1697 msgid "Determines default behavior when a stock item is depleted" msgstr "" -#: common/models.py:1733 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1735 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1740 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1741 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1746 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1747 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1752 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1754 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1761 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1762 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1767 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1768 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1773 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1774 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1778 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1779 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1784 +#: common/models.py:1754 msgid "Check BOM when installing items" msgstr "" -#: common/models.py:1786 +#: common/models.py:1756 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "" -#: common/models.py:1792 +#: common/models.py:1762 msgid "Allow Out of Stock Transfer" msgstr "" -#: common/models.py:1794 +#: common/models.py:1764 msgid "Allow stock items which are not in stock to be transferred between stock locations" msgstr "" -#: common/models.py:1800 +#: common/models.py:1770 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1802 +#: common/models.py:1772 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1808 common/models.py:1836 common/models.py:1858 -#: common/models.py:1894 +#: common/models.py:1778 common/models.py:1806 common/models.py:1828 +#: common/models.py:1864 msgid "Require Responsible Owner" msgstr "" -#: common/models.py:1809 common/models.py:1837 common/models.py:1859 -#: common/models.py:1895 +#: common/models.py:1779 common/models.py:1807 common/models.py:1829 +#: common/models.py:1865 msgid "A responsible owner must be assigned to each order" msgstr "" -#: common/models.py:1814 +#: common/models.py:1784 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1816 +#: common/models.py:1786 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:1822 +#: common/models.py:1792 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1823 +#: common/models.py:1793 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1828 +#: common/models.py:1798 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1830 +#: common/models.py:1800 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1842 +#: common/models.py:1812 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1844 +#: common/models.py:1814 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1850 +#: common/models.py:1820 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1852 +#: common/models.py:1822 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1864 +#: common/models.py:1834 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1865 +#: common/models.py:1835 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1870 +#: common/models.py:1840 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1872 +#: common/models.py:1842 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1878 +#: common/models.py:1848 msgid "Mark Shipped Orders as Complete" msgstr "" -#: common/models.py:1880 +#: common/models.py:1850 msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" msgstr "" -#: common/models.py:1886 +#: common/models.py:1856 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1888 +#: common/models.py:1858 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1900 +#: common/models.py:1870 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1902 +#: common/models.py:1872 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1908 +#: common/models.py:1878 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1910 +#: common/models.py:1880 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1917 +#: common/models.py:1887 msgid "Enable password forgot" msgstr "" -#: common/models.py:1918 +#: common/models.py:1888 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1923 +#: common/models.py:1893 msgid "Enable registration" msgstr "" -#: common/models.py:1924 +#: common/models.py:1894 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1929 +#: common/models.py:1899 msgid "Enable SSO" msgstr "" -#: common/models.py:1930 +#: common/models.py:1900 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1935 +#: common/models.py:1905 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1937 +#: common/models.py:1907 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1943 +#: common/models.py:1913 msgid "Email required" msgstr "" -#: common/models.py:1944 +#: common/models.py:1914 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1949 +#: common/models.py:1919 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1951 +#: common/models.py:1921 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1957 +#: common/models.py:1927 msgid "Mail twice" msgstr "" -#: common/models.py:1958 +#: common/models.py:1928 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1963 +#: common/models.py:1933 msgid "Password twice" msgstr "" -#: common/models.py:1964 +#: common/models.py:1934 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1969 +#: common/models.py:1939 msgid "Allowed domains" msgstr "" -#: common/models.py:1971 +#: common/models.py:1941 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1977 +#: common/models.py:1947 msgid "Group on signup" msgstr "" -#: common/models.py:1978 +#: common/models.py:1948 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1983 +#: common/models.py:1953 msgid "Enforce MFA" msgstr "" -#: common/models.py:1984 +#: common/models.py:1954 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1989 +#: common/models.py:1959 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1991 +#: common/models.py:1961 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1999 +#: common/models.py:1969 msgid "Check for plugin updates" msgstr "" -#: common/models.py:2000 +#: common/models.py:1970 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:2006 +#: common/models.py:1976 msgid "Enable URL integration" msgstr "" -#: common/models.py:2007 +#: common/models.py:1977 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:2013 +#: common/models.py:1983 msgid "Enable navigation integration" msgstr "" -#: common/models.py:2014 +#: common/models.py:1984 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:2020 +#: common/models.py:1990 msgid "Enable app integration" msgstr "" -#: common/models.py:2021 +#: common/models.py:1991 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:2027 +#: common/models.py:1997 msgid "Enable schedule integration" msgstr "" -#: common/models.py:2028 +#: common/models.py:1998 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:2034 +#: common/models.py:2004 msgid "Enable event integration" msgstr "" -#: common/models.py:2035 +#: common/models.py:2005 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:2041 +#: common/models.py:2011 msgid "Enable project codes" msgstr "" -#: common/models.py:2042 +#: common/models.py:2012 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:2047 +#: common/models.py:2017 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:2049 +#: common/models.py:2019 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:2055 +#: common/models.py:2025 msgid "Exclude External Locations" msgstr "" -#: common/models.py:2057 +#: common/models.py:2027 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:2063 +#: common/models.py:2033 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:2065 +#: common/models.py:2035 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:2071 +#: common/models.py:2041 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:2073 +#: common/models.py:2043 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:2080 +#: common/models.py:2050 msgid "Display Users full names" msgstr "" -#: common/models.py:2081 +#: common/models.py:2051 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:2086 +#: common/models.py:2056 msgid "Enable Test Station Data" msgstr "" -#: common/models.py:2087 +#: common/models.py:2057 msgid "Enable test station data collection for test results" msgstr "" -#: common/models.py:2099 common/models.py:2509 +#: common/models.py:2069 common/models.py:2479 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2142 +#: common/models.py:2112 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2144 +#: common/models.py:2114 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2150 +#: common/models.py:2120 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2151 +#: common/models.py:2121 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2156 +#: common/models.py:2126 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2157 +#: common/models.py:2127 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2162 +#: common/models.py:2132 msgid "Show latest parts" msgstr "" -#: common/models.py:2163 +#: common/models.py:2133 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2168 +#: common/models.py:2138 msgid "Show invalid BOMs" msgstr "" -#: common/models.py:2169 +#: common/models.py:2139 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2174 +#: common/models.py:2144 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2175 +#: common/models.py:2145 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2180 +#: common/models.py:2150 msgid "Show low stock" msgstr "" -#: common/models.py:2181 +#: common/models.py:2151 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2186 +#: common/models.py:2156 msgid "Show depleted stock" msgstr "" -#: common/models.py:2187 +#: common/models.py:2157 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2192 +#: common/models.py:2162 msgid "Show needed stock" msgstr "" -#: common/models.py:2193 +#: common/models.py:2163 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2198 +#: common/models.py:2168 msgid "Show expired stock" msgstr "" -#: common/models.py:2199 +#: common/models.py:2169 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2204 +#: common/models.py:2174 msgid "Show stale stock" msgstr "" -#: common/models.py:2205 +#: common/models.py:2175 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2210 +#: common/models.py:2180 msgid "Show pending builds" msgstr "" -#: common/models.py:2211 +#: common/models.py:2181 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2216 +#: common/models.py:2186 msgid "Show overdue builds" msgstr "" -#: common/models.py:2217 +#: common/models.py:2187 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2222 +#: common/models.py:2192 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2223 +#: common/models.py:2193 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2228 +#: common/models.py:2198 msgid "Show overdue POs" msgstr "" -#: common/models.py:2229 +#: common/models.py:2199 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2234 +#: common/models.py:2204 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2235 +#: common/models.py:2205 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2240 +#: common/models.py:2210 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2241 +#: common/models.py:2211 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2246 +#: common/models.py:2216 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2247 +#: common/models.py:2217 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2252 +#: common/models.py:2222 msgid "Show News" msgstr "" -#: common/models.py:2253 +#: common/models.py:2223 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2258 +#: common/models.py:2228 msgid "Inline label display" msgstr "" -#: common/models.py:2260 +#: common/models.py:2230 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2266 +#: common/models.py:2236 msgid "Default label printer" msgstr "" -#: common/models.py:2268 +#: common/models.py:2238 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2274 +#: common/models.py:2244 msgid "Inline report display" msgstr "" -#: common/models.py:2276 +#: common/models.py:2246 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2282 +#: common/models.py:2252 msgid "Search Parts" msgstr "" -#: common/models.py:2283 +#: common/models.py:2253 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2288 +#: common/models.py:2258 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2289 +#: common/models.py:2259 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2294 +#: common/models.py:2264 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2295 +#: common/models.py:2265 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2300 +#: common/models.py:2270 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2301 +#: common/models.py:2271 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2306 +#: common/models.py:2276 msgid "Search Categories" msgstr "" -#: common/models.py:2307 +#: common/models.py:2277 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2312 +#: common/models.py:2282 msgid "Search Stock" msgstr "" -#: common/models.py:2313 +#: common/models.py:2283 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2318 +#: common/models.py:2288 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2320 +#: common/models.py:2290 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2326 +#: common/models.py:2296 msgid "Search Locations" msgstr "" -#: common/models.py:2327 +#: common/models.py:2297 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2332 +#: common/models.py:2302 msgid "Search Companies" msgstr "" -#: common/models.py:2333 +#: common/models.py:2303 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2338 +#: common/models.py:2308 msgid "Search Build Orders" msgstr "" -#: common/models.py:2339 +#: common/models.py:2309 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2344 +#: common/models.py:2314 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2345 +#: common/models.py:2315 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2350 +#: common/models.py:2320 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2352 +#: common/models.py:2322 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2358 +#: common/models.py:2328 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2359 +#: common/models.py:2329 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2364 +#: common/models.py:2334 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2366 +#: common/models.py:2336 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2372 +#: common/models.py:2342 msgid "Search Return Orders" msgstr "" -#: common/models.py:2373 +#: common/models.py:2343 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2378 +#: common/models.py:2348 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2380 +#: common/models.py:2350 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2386 +#: common/models.py:2356 msgid "Search Preview Results" msgstr "" -#: common/models.py:2388 +#: common/models.py:2358 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2394 +#: common/models.py:2364 msgid "Regex Search" msgstr "" -#: common/models.py:2395 +#: common/models.py:2365 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2400 +#: common/models.py:2370 msgid "Whole Word Search" msgstr "" -#: common/models.py:2401 +#: common/models.py:2371 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2406 +#: common/models.py:2376 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2407 +#: common/models.py:2377 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2412 +#: common/models.py:2382 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2413 +#: common/models.py:2383 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2418 +#: common/models.py:2388 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2419 +#: common/models.py:2389 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2424 +#: common/models.py:2394 msgid "Date Format" msgstr "" -#: common/models.py:2425 +#: common/models.py:2395 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2438 part/templates/part/detail.html:41 +#: common/models.py:2408 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2439 +#: common/models.py:2409 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2444 part/templates/part/detail.html:62 +#: common/models.py:2414 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2446 +#: common/models.py:2416 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2452 +#: common/models.py:2422 msgid "Table String Length" msgstr "" -#: common/models.py:2454 +#: common/models.py:2424 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2460 +#: common/models.py:2430 msgid "Default part label template" msgstr "" -#: common/models.py:2461 +#: common/models.py:2431 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2466 +#: common/models.py:2436 msgid "Default stock item template" msgstr "" -#: common/models.py:2468 +#: common/models.py:2438 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2474 +#: common/models.py:2444 msgid "Default stock location label template" msgstr "" -#: common/models.py:2476 +#: common/models.py:2446 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2482 +#: common/models.py:2452 msgid "Default build line label template" msgstr "" -#: common/models.py:2484 +#: common/models.py:2454 msgid "The build line label template to be automatically selected" msgstr "" -#: common/models.py:2490 +#: common/models.py:2460 msgid "Receive error reports" msgstr "" -#: common/models.py:2491 +#: common/models.py:2461 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2496 +#: common/models.py:2466 msgid "Last used printing machines" msgstr "" -#: common/models.py:2497 +#: common/models.py:2467 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2540 +#: common/models.py:2487 common/models.py:2488 common/models.py:2636 +#: common/models.py:2637 common/models.py:2882 common/models.py:2883 +#: common/models.py:3193 common/models.py:3194 part/models.py:3193 +#: part/models.py:3280 part/models.py:3353 part/models.py:3381 +#: plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "" + +#: common/models.py:2510 msgid "Price break quantity" msgstr "" -#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1382 order/models.py:2301 -#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 +#: common/models.py:2517 company/serializers.py:472 order/admin.py:42 +#: order/models.py:1346 order/models.py:2265 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1886 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:740 msgid "Price" msgstr "" -#: common/models.py:2548 +#: common/models.py:2518 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2719 common/models.py:2904 +#: common/models.py:2613 common/models.py:2798 msgid "Endpoint" msgstr "" -#: common/models.py:2720 +#: common/models.py:2614 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2730 +#: common/models.py:2624 msgid "Name for this webhook" msgstr "" -#: common/models.py:2734 company/models.py:160 company/models.py:814 -#: machine/models.py:39 part/admin.py:88 part/models.py:1088 -#: plugin/models.py:65 templates/js/translated/company.js:523 +#: common/models.py:2628 company/models.py:163 company/models.py:782 +#: machine/models.py:39 part/admin.py:88 part/models.py:1081 +#: plugin/models.py:66 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3462,101 +3408,118 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2734 +#: common/models.py:2628 msgid "Is this webhook active" msgstr "" -#: common/models.py:2750 users/models.py:159 +#: common/models.py:2644 users/models.py:159 msgid "Token" msgstr "" -#: common/models.py:2751 +#: common/models.py:2645 msgid "Token for access" msgstr "" -#: common/models.py:2759 +#: common/models.py:2653 msgid "Secret" msgstr "" -#: common/models.py:2760 +#: common/models.py:2654 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2868 +#: common/models.py:2762 msgid "Message ID" msgstr "" -#: common/models.py:2869 +#: common/models.py:2763 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2877 +#: common/models.py:2771 msgid "Host" msgstr "" -#: common/models.py:2878 +#: common/models.py:2772 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2886 +#: common/models.py:2780 msgid "Header" msgstr "" -#: common/models.py:2887 +#: common/models.py:2781 msgid "Header of this message" msgstr "" -#: common/models.py:2894 +#: common/models.py:2788 msgid "Body" msgstr "" -#: common/models.py:2895 +#: common/models.py:2789 msgid "Body of this message" msgstr "" -#: common/models.py:2905 +#: common/models.py:2799 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2910 +#: common/models.py:2804 msgid "Worked on" msgstr "" -#: common/models.py:2911 +#: common/models.py:2805 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:3037 +#: common/models.py:2931 msgid "Id" msgstr "" -#: common/models.py:3039 templates/js/translated/company.js:965 +#: common/models.py:2933 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:3043 templates/js/translated/news.js:60 +#: common/models.py:2935 common/models.py:3177 company/models.py:149 +#: company/models.py:440 company/models.py:500 company/models.py:799 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +#: part/admin.py:55 part/models.py:955 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "" + +#: common/models.py:2937 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:3045 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2939 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:3047 templates/js/translated/news.js:52 +#: common/models.py:2941 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Read" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Was this news item read?" msgstr "" -#: common/models.py:3067 company/models.py:156 part/models.py:972 +#: common/models.py:2961 company/models.py:159 part/models.py:965 #: 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.html:35 @@ -3566,34 +3529,89 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:3067 +#: common/models.py:2961 msgid "Image file" msgstr "" -#: common/models.py:3109 +#: common/models.py:2973 common/models.py:3161 +msgid "Target model type for this image" +msgstr "" + +#: common/models.py:2977 +msgid "Target model ID for this image" +msgstr "" + +#: common/models.py:3018 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3128 +#: common/models.py:3037 msgid "Unit name" msgstr "" -#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3044 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3136 +#: common/models.py:3045 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3052 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3144 +#: common/models.py:3053 msgid "Unit definition" msgstr "" +#: common/models.py:3111 common/models.py:3168 stock/models.py:2426 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "" + +#: common/models.py:3123 +msgid "Missing file" +msgstr "" + +#: common/models.py:3124 +msgid "Missing external link" +msgstr "" + +#: common/models.py:3169 +msgid "Select file to attach" +msgstr "" + +#: common/models.py:3184 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "" + +#: common/models.py:3185 +msgid "Attachment comment" +msgstr "" + +#: common/models.py:3201 +msgid "Upload date" +msgstr "" + +#: common/models.py:3202 +msgid "Date the file was uploaded" +msgstr "" + +#: common/models.py:3206 +msgid "File size" +msgstr "" + +#: common/models.py:3206 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3244 common/serializers.py:553 +msgid "Invalid model type specified for attachment" +msgstr "" + #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" @@ -3628,66 +3646,103 @@ msgstr "" msgid "Error raised by plugin" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:371 msgid "Is Running" msgstr "" -#: common/serializers.py:372 +#: common/serializers.py:377 msgid "Pending Tasks" msgstr "" -#: common/serializers.py:378 +#: common/serializers.py:383 msgid "Scheduled Tasks" msgstr "" -#: common/serializers.py:384 +#: common/serializers.py:389 msgid "Failed Tasks" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Task ID" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Unique task ID" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock time" msgstr "" -#: common/serializers.py:403 +#: common/serializers.py:408 msgid "Task name" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function name" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Arguments" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Task arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Keyword Arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Task keyword arguments" msgstr "" +#: common/serializers.py:525 +msgid "Filename" +msgstr "" + +#: common/serializers.py:532 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: common/serializers.py:559 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "" + +#: common/validators.py:33 +msgid "No attachment model type provided" +msgstr "" + +#: common/validators.py:39 +msgid "Invalid attachment model type" +msgstr "" + +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "" + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +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 @@ -3726,210 +3781,222 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/api.py:164 +#: company/api.py:144 msgid "Part is Active" msgstr "" -#: company/api.py:168 +#: company/api.py:148 msgid "Manufacturer is Active" msgstr "" -#: company/api.py:317 +#: company/api.py:281 msgid "Supplier Part is Active" msgstr "" -#: company/api.py:321 +#: company/api.py:285 msgid "Internal Part is Active" msgstr "" -#: company/api.py:325 +#: company/api.py:289 msgid "Supplier is Active" msgstr "" -#: company/models.py:114 +#: company/models.py:100 company/models.py:365 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:822 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "" + +#: company/models.py:117 msgid "Company description" msgstr "" -#: company/models.py:115 +#: company/models.py:118 msgid "Description of the company" msgstr "" -#: company/models.py:120 company/templates/company/company_base.html:106 +#: company/models.py:123 company/templates/company/company_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:532 msgid "Website" msgstr "" -#: company/models.py:120 +#: company/models.py:123 msgid "Company website URL" msgstr "" -#: company/models.py:125 +#: company/models.py:128 msgid "Phone number" msgstr "" -#: company/models.py:127 +#: company/models.py:130 msgid "Contact phone number" msgstr "" -#: company/models.py:134 +#: company/models.py:137 msgid "Contact email address" msgstr "" -#: company/models.py:139 company/templates/company/company_base.html:145 +#: company/models.py:142 company/templates/company/company_base.html:145 #: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "" -#: company/models.py:141 +#: company/models.py:144 msgid "Point of contact" msgstr "" -#: company/models.py:147 +#: company/models.py:150 msgid "Link to external company information" msgstr "" -#: company/models.py:160 +#: company/models.py:163 msgid "Is this company active?" msgstr "" -#: company/models.py:165 +#: company/models.py:168 msgid "is customer" msgstr "" -#: company/models.py:166 +#: company/models.py:169 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:171 +#: company/models.py:174 msgid "is supplier" msgstr "" -#: company/models.py:172 +#: company/models.py:175 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:177 +#: company/models.py:180 msgid "is manufacturer" msgstr "" -#: company/models.py:178 +#: company/models.py:181 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:186 +#: company/models.py:189 msgid "Default currency used for this company" msgstr "" -#: company/models.py:273 company/models.py:382 -#: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:812 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 -msgid "Company" -msgstr "" - -#: company/models.py:383 +#: company/models.py:366 msgid "Select company" msgstr "" -#: company/models.py:388 +#: company/models.py:371 msgid "Address title" msgstr "" -#: company/models.py:389 +#: company/models.py:372 msgid "Title describing the address entry" msgstr "" -#: company/models.py:395 +#: company/models.py:378 msgid "Primary address" msgstr "" -#: company/models.py:396 +#: company/models.py:379 msgid "Set as primary address" msgstr "" -#: company/models.py:401 templates/js/translated/company.js:914 +#: company/models.py:384 templates/js/translated/company.js:914 #: templates/js/translated/company.js:971 msgid "Line 1" msgstr "" -#: company/models.py:402 +#: company/models.py:385 msgid "Address line 1" msgstr "" -#: company/models.py:408 templates/js/translated/company.js:915 +#: company/models.py:391 templates/js/translated/company.js:915 #: templates/js/translated/company.js:977 msgid "Line 2" msgstr "" -#: company/models.py:409 +#: company/models.py:392 msgid "Address line 2" msgstr "" -#: company/models.py:415 company/models.py:416 +#: company/models.py:398 company/models.py:399 #: templates/js/translated/company.js:983 msgid "Postal code" msgstr "" -#: company/models.py:422 +#: company/models.py:405 msgid "City/Region" msgstr "" -#: company/models.py:423 +#: company/models.py:406 msgid "Postal code city/region" msgstr "" -#: company/models.py:429 +#: company/models.py:412 msgid "State/Province" msgstr "" -#: company/models.py:430 +#: company/models.py:413 msgid "State or province" msgstr "" -#: company/models.py:436 templates/js/translated/company.js:1001 +#: company/models.py:419 templates/js/translated/company.js:1001 msgid "Country" msgstr "" -#: company/models.py:437 +#: company/models.py:420 msgid "Address country" msgstr "" -#: company/models.py:443 +#: company/models.py:426 msgid "Courier shipping notes" msgstr "" -#: company/models.py:444 +#: company/models.py:427 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:450 +#: company/models.py:433 msgid "Internal shipping notes" msgstr "" -#: company/models.py:451 +#: company/models.py:434 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:458 +#: company/models.py:441 msgid "Link to address information (external)" msgstr "" -#: company/models.py:489 company/models.py:792 stock/models.py:768 -#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 +#: company/models.py:463 company/models.py:574 company/models.py:792 +#: 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:475 company/models.py:760 stock/models.py:766 +#: stock/serializers.py:422 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:491 company/models.py:794 +#: company/models.py:477 company/models.py:762 msgid "Select part" msgstr "" -#: company/models.py:500 company/templates/company/company_base.html:82 +#: company/models.py:486 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:530 +#: company/templates/company/supplier_part.html:145 part/serializers.py:525 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -3939,152 +4006,154 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:501 +#: company/models.py:487 msgid "Select manufacturer" msgstr "" -#: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:540 +#: company/models.py:493 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:535 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 -#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1801 #: templates/js/translated/purchase_order.js:1851 #: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "" -#: company/models.py:508 +#: company/models.py:494 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:515 +#: company/models.py:501 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:524 +#: company/models.py:510 msgid "Manufacturer part description" msgstr "" -#: company/models.py:581 company/models.py:608 company/models.py:824 -#: 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:615 +#: company/models.py:581 msgid "Parameter name" msgstr "" -#: company/models.py:621 report/templates/report/inventree_test_report.html:104 -#: stock/models.py:2429 templates/js/translated/company.js:1166 -#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 +#: company/models.py:587 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2418 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1493 #: templates/js/translated/stock.js:1522 msgid "Value" msgstr "" -#: company/models.py:622 +#: company/models.py:588 msgid "Parameter value" msgstr "" -#: company/models.py:629 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1052 part/models.py:3666 +#: company/models.py:595 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1045 part/models.py:3646 #: part/templates/part/part_base.html:284 -#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1512 +#: templates/js/translated/part.js:1616 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:630 +#: company/models.py:596 msgid "Parameter units" msgstr "" -#: company/models.py:732 +#: company/models.py:648 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:777 stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "" + +#: company/models.py:700 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:739 +#: company/models.py:707 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:753 +#: company/models.py:721 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/models.py:770 company/templates/company/company_base.html:87 #: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:514 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:509 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:511 -#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1769 #: templates/js/translated/pricing.js:498 #: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "" -#: company/models.py:803 +#: company/models.py:771 msgid "Select supplier" msgstr "" -#: company/models.py:809 part/serializers.py:525 +#: company/models.py:777 part/serializers.py:520 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:815 +#: company/models.py:783 msgid "Is this supplier part active?" msgstr "" -#: company/models.py:825 +#: company/models.py:793 msgid "Select manufacturer part" msgstr "" -#: company/models.py:832 +#: company/models.py:800 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:841 +#: company/models.py:809 msgid "Supplier part description" msgstr "" -#: company/models.py:848 company/templates/company/supplier_part.html:187 -#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 +#: company/models.py:816 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4093 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_purchase_order_report.html:32 #: report/templates/report/inventree_return_order_report.html:27 #: report/templates/report/inventree_sales_order_report.html:32 #: report/templates/report/inventree_stock_location_report.html:105 -#: stock/serializers.py:708 +#: stock/serializers.py:710 msgid "Note" msgstr "" -#: company/models.py:857 part/models.py:2010 +#: company/models.py:825 part/models.py:2003 msgid "base cost" msgstr "" -#: company/models.py:858 part/models.py:2011 +#: company/models.py:826 part/models.py:2004 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:865 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 +#: company/models.py:833 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:797 stock/serializers.py:1475 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 #: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "" -#: company/models.py:866 +#: company/models.py:834 msgid "Part packaging" msgstr "" -#: company/models.py:871 templates/js/translated/company.js:1651 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: company/models.py:839 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:311 #: templates/js/translated/purchase_order.js:841 #: templates/js/translated/purchase_order.js:1103 @@ -4093,35 +4162,35 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:873 +#: company/models.py:841 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:892 part/models.py:2017 +#: company/models.py:860 part/models.py:2010 msgid "multiple" msgstr "" -#: company/models.py:893 +#: company/models.py:861 msgid "Order multiple" msgstr "" -#: company/models.py:905 +#: company/models.py:873 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:911 +#: company/models.py:879 msgid "Availability Updated" msgstr "" -#: company/models.py:912 +#: company/models.py:880 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:163 +#: company/serializers.py:161 msgid "Default currency used for this supplier" msgstr "" -#: company/serializers.py:381 part/admin.py:126 +#: company/serializers.py:357 part/admin.py:126 #: part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1689 #: templates/js/translated/table_filters.js:355 @@ -4133,7 +4202,7 @@ msgstr "" #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 #: templates/js/translated/model_renderers.js:312 -#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +#: templates/js/translated/part.js:815 templates/js/translated/part.js:1219 msgid "Inactive" msgstr "" @@ -4172,7 +4241,7 @@ msgstr "" #: report/templates/report/inventree_purchase_order_report.html:40 #: report/templates/report/inventree_sales_order_report.html:40 #: report/templates/report/inventree_test_report.html:84 -#: report/templates/report/inventree_test_report.html:163 +#: report/templates/report/inventree_test_report.html:162 msgid "Part image" msgstr "" @@ -4191,10 +4260,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:92 order/models.py:940 -#: order/models.py:2068 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:148 stock/models.py:821 -#: stock/models.py:822 stock/serializers.py:1229 +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2032 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:819 +#: stock/models.py:820 stock/serializers.py:1225 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 @@ -4405,7 +4474,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:836 +#: part/admin.py:122 part/serializers.py:832 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4425,8 +4494,8 @@ msgstr "" msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:206 -#: templates/js/translated/part.js:1422 +#: company/templates/company/manufacturer_part.html:196 +#: templates/js/translated/part.js:1423 msgid "Add Parameter" msgstr "" @@ -4454,15 +4523,6 @@ msgstr "" msgid "Addresses" msgstr "" -#: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:452 -#: stock/models.py:779 stock/templates/stock/item_base.html:233 -#: templates/js/translated/company.js:1600 -#: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2280 -msgid "Supplier Part" -msgstr "" - #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1526 msgid "Supplier part actions" @@ -4505,8 +4565,8 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:524 -#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: part/bom.py:311 part/serializers.py:519 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1787 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1850 #: templates/js/translated/purchase_order.js:2028 @@ -4518,12 +4578,12 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:207 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" @@ -4555,15 +4615,15 @@ msgid "Update Part Availability" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:835 part/stocktake.py:223 +#: part/serializers.py:831 part/stocktake.py:224 #: part/templates/part/category.html:183 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:916 stock/serializers.py:1080 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:918 stock/serializers.py:1091 #: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:191 #: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1061 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:206 msgid "Stock Items" @@ -4590,10 +4650,6 @@ msgstr "" 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 "" @@ -4614,7 +4670,7 @@ msgstr "" msgid "Connected" msgstr "" -#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: machine/machine_types/label_printer.py:235 order/api.py:1467 #: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "" @@ -4703,7 +4759,7 @@ msgstr "" msgid "Config type" msgstr "" -#: order/admin.py:30 order/models.py:89 +#: order/admin.py:30 order/models.py:90 #: report/templates/report/inventree_purchase_order_report.html:31 #: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 @@ -4712,30 +4768,30 @@ msgstr "" msgid "Total Price" msgstr "" -#: order/api.py:161 order/serializers.py:91 +#: order/api.py:157 order/serializers.py:90 #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "" -#: order/api.py:165 templates/js/translated/table_filters.js:194 +#: order/api.py:161 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "" -#: order/api.py:240 +#: order/api.py:236 msgid "No matching purchase order found" msgstr "" -#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 -#: order/models.py:1586 order/models.py:1700 order/models.py:1854 -#: order/models.py:2267 order/models.py:2318 +#: order/api.py:435 order/api.py:801 order/models.py:1395 order/models.py:1504 +#: order/models.py:1550 order/models.py:1664 order/models.py:1818 +#: order/models.py:2231 order/models.py:2282 #: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "" -#: order/api.py:441 order/api.py:838 +#: order/api.py:439 order/api.py:822 msgid "Order Complete" msgstr "" @@ -4743,13 +4799,13 @@ msgstr "" msgid "Order Pending" msgstr "" -#: order/api.py:1509 order/models.py:380 order/models.py:1432 -#: order/models.py:1541 order/templates/order/order_base.html:9 +#: order/api.py:1461 order/models.py:380 order/models.py:1396 +#: order/models.py:1505 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_purchase_order_report.html:14 -#: stock/serializers.py:119 stock/templates/stock/item_base.html:176 +#: stock/serializers.py:118 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/part.js:1746 templates/js/translated/pricing.js:804 #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1673 @@ -4757,8 +4813,8 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1513 order/models.py:2017 order/models.py:2268 -#: order/models.py:2319 order/templates/order/return_order_base.html:9 +#: order/api.py:1465 order/models.py:1981 order/models.py:2232 +#: order/models.py:2283 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report.html:13 #: templates/js/translated/return_order.js:280 @@ -4766,15 +4822,15 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/models.py:90 +#: order/models.py:91 msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:71 +#: order/models.py:96 order/serializers.py:70 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:72 +#: order/models.py:99 order/serializers.py:71 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -4790,7 +4846,7 @@ msgstr "" msgid "Select project code for this order" msgstr "" -#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 msgid "Link to external page" msgstr "" @@ -4814,11 +4870,11 @@ msgstr "" msgid "Company address for this order" msgstr "" -#: order/models.py:464 order/models.py:929 +#: order/models.py:464 order/models.py:927 msgid "Order reference" msgstr "" -#: order/models.py:472 order/models.py:953 +#: order/models.py:472 order/models.py:951 msgid "Purchase order status" msgstr "" @@ -4839,15 +4895,15 @@ msgstr "" msgid "received by" msgstr "" -#: order/models.py:514 order/models.py:2094 +#: order/models.py:514 order/models.py:2058 msgid "Issue Date" msgstr "" -#: order/models.py:515 order/models.py:2095 +#: order/models.py:515 order/models.py:2059 msgid "Date order was issued" msgstr "" -#: order/models.py:522 order/models.py:2102 +#: order/models.py:522 order/models.py:2066 msgid "Date order was completed" msgstr "" @@ -4859,94 +4915,94 @@ msgstr "" msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:941 +#: order/models.py:939 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:964 order/models.py:2087 +#: order/models.py:962 order/models.py:2051 msgid "Customer Reference " msgstr "" -#: order/models.py:965 order/models.py:2088 +#: order/models.py:963 order/models.py:2052 msgid "Customer order reference code" msgstr "" -#: order/models.py:969 order/models.py:1707 +#: order/models.py:967 order/models.py:1671 #: templates/js/translated/sales_order.js:879 #: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "" -#: order/models.py:978 +#: order/models.py:976 msgid "shipped by" msgstr "" -#: order/models.py:1027 +#: order/models.py:1025 msgid "Order is already complete" msgstr "" -#: order/models.py:1030 +#: order/models.py:1028 msgid "Order is already cancelled" msgstr "" -#: order/models.py:1034 +#: order/models.py:1032 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:1038 +#: order/models.py:1036 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:1043 +#: order/models.py:1041 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1309 +#: order/models.py:1273 msgid "Item quantity" msgstr "" -#: order/models.py:1326 +#: order/models.py:1290 msgid "Line item reference" msgstr "" -#: order/models.py:1333 +#: order/models.py:1297 msgid "Line item notes" msgstr "" -#: order/models.py:1345 +#: order/models.py:1309 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1366 +#: order/models.py:1330 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1372 +#: order/models.py:1336 msgid "Context" msgstr "" -#: order/models.py:1373 +#: order/models.py:1337 msgid "Additional context for this line" msgstr "" -#: order/models.py:1383 +#: order/models.py:1347 msgid "Unit price" msgstr "" -#: order/models.py:1416 +#: order/models.py:1380 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1423 +#: order/models.py:1387 msgid "deleted" msgstr "" -#: order/models.py:1451 +#: order/models.py:1415 msgid "Supplier part" msgstr "" -#: order/models.py:1458 order/templates/order/order_base.html:196 -#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: order/models.py:1422 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1870 templates/js/translated/part.js:1902 #: templates/js/translated/purchase_order.js:1306 #: templates/js/translated/purchase_order.js:2169 #: templates/js/translated/return_order.js:763 @@ -4955,196 +5011,196 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1459 +#: order/models.py:1423 msgid "Number of items received" msgstr "" -#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 +#: order/models.py:1431 stock/models.py:938 stock/serializers.py:556 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "" -#: order/models.py:1468 +#: order/models.py:1432 msgid "Unit purchase price" msgstr "" -#: order/models.py:1483 +#: order/models.py:1447 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1574 +#: order/models.py:1538 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1579 +#: order/models.py:1543 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1605 part/templates/part/part_pricing.html:107 +#: order/models.py:1569 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:1606 +#: order/models.py:1570 msgid "Unit sale price" msgstr "" -#: order/models.py:1615 order/status_codes.py:43 +#: order/models.py:1579 order/status_codes.py:43 #: templates/js/translated/sales_order.js:1559 #: templates/js/translated/sales_order.js:1680 #: templates/js/translated/sales_order.js:1993 msgid "Shipped" msgstr "" -#: order/models.py:1616 +#: order/models.py:1580 msgid "Shipped quantity" msgstr "" -#: order/models.py:1708 +#: order/models.py:1672 msgid "Date of shipment" msgstr "" -#: order/models.py:1714 templates/js/translated/sales_order.js:1072 +#: order/models.py:1678 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "" -#: order/models.py:1715 +#: order/models.py:1679 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1723 +#: order/models.py:1687 msgid "Checked By" msgstr "" -#: order/models.py:1724 +#: order/models.py:1688 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 -#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 +#: order/models.py:1695 order/models.py:1908 order/serializers.py:1342 +#: order/serializers.py:1452 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "" -#: order/models.py:1732 +#: order/models.py:1696 msgid "Shipment number" msgstr "" -#: order/models.py:1740 +#: order/models.py:1704 msgid "Tracking Number" msgstr "" -#: order/models.py:1741 +#: order/models.py:1705 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1748 +#: order/models.py:1712 msgid "Invoice Number" msgstr "" -#: order/models.py:1749 +#: order/models.py:1713 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1769 +#: order/models.py:1733 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1772 +#: order/models.py:1736 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1890 order/models.py:1892 +#: order/models.py:1854 order/models.py:1856 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1899 +#: order/models.py:1863 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1902 +#: order/models.py:1866 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1905 +#: order/models.py:1869 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1924 order/serializers.py:1231 +#: order/models.py:1888 order/serializers.py:1219 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1927 +#: order/models.py:1891 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1928 plugin/base/barcodes/api.py:481 +#: order/models.py:1892 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1936 +#: order/models.py:1900 msgid "Line" msgstr "" -#: order/models.py:1945 +#: order/models.py:1909 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1958 order/models.py:2275 +#: order/models.py:1922 order/models.py:2239 #: templates/js/translated/return_order.js:721 msgid "Item" msgstr "" -#: order/models.py:1959 +#: order/models.py:1923 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1968 +#: order/models.py:1932 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:2057 +#: order/models.py:2021 msgid "Return Order reference" msgstr "" -#: order/models.py:2069 +#: order/models.py:2033 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:2081 +#: order/models.py:2045 msgid "Return order status" msgstr "" -#: order/models.py:2260 +#: order/models.py:2224 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2276 +#: order/models.py:2240 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2282 +#: order/models.py:2246 msgid "Received Date" msgstr "" -#: order/models.py:2283 +#: order/models.py:2247 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2294 templates/js/translated/return_order.js:732 +#: order/models.py:2258 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2295 +#: order/models.py:2259 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2302 +#: order/models.py:2266 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/serializers.py:79 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_purchase_order_report.html:22 @@ -5153,163 +5209,163 @@ msgstr "" msgid "Line Items" msgstr "" -#: order/serializers.py:84 +#: order/serializers.py:83 msgid "Completed Lines" msgstr "" -#: order/serializers.py:287 +#: order/serializers.py:286 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:302 order/serializers.py:1247 +#: order/serializers.py:301 order/serializers.py:1235 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:312 order/serializers.py:1257 +#: order/serializers.py:311 order/serializers.py:1245 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:440 +#: order/serializers.py:439 msgid "Order is not open" msgstr "" -#: order/serializers.py:461 +#: order/serializers.py:460 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:463 +#: order/serializers.py:462 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:473 +#: order/serializers.py:472 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:478 msgid "Merge Items" msgstr "" -#: order/serializers.py:481 +#: order/serializers.py:480 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:499 +#: order/serializers.py:498 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:502 +#: order/serializers.py:501 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:510 +#: order/serializers.py:509 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:511 +#: order/serializers.py:510 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:550 order/serializers.py:1325 +#: order/serializers.py:549 order/serializers.py:1313 msgid "Line Item" msgstr "" -#: order/serializers.py:556 +#: order/serializers.py:555 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1657 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:581 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:589 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:601 templates/js/translated/barcode.js:52 +#: order/serializers.py:600 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:602 +#: order/serializers.py:601 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:618 +#: order/serializers.py:617 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:642 +#: order/serializers.py:641 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:690 order/serializers.py:1696 +#: order/serializers.py:689 order/serializers.py:1673 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:706 +#: order/serializers.py:705 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:717 +#: order/serializers.py:716 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1074 +#: order/serializers.py:1062 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1134 +#: order/serializers.py:1122 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1195 order/serializers.py:1334 +#: order/serializers.py:1183 order/serializers.py:1322 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1214 +#: order/serializers.py:1202 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1344 +#: order/serializers.py:1332 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1366 order/serializers.py:1472 +#: order/serializers.py:1354 order/serializers.py:1460 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1369 order/serializers.py:1475 +#: order/serializers.py:1357 order/serializers.py:1463 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1416 +#: order/serializers.py:1404 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1423 +#: order/serializers.py:1411 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1650 +#: order/serializers.py:1627 msgid "Return order line item" msgstr "" -#: order/serializers.py:1656 +#: order/serializers.py:1633 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1659 +#: order/serializers.py:1636 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1688 +#: order/serializers.py:1665 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1766 +#: order/serializers.py:1743 msgid "Line price currency" msgstr "" @@ -5639,7 +5695,7 @@ msgstr "" #: 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/part.js:1073 #: templates/js/translated/purchase_order.js:1752 #: templates/js/translated/return_order.js:380 #: templates/js/translated/sales_order.js:891 @@ -5735,34 +5791,34 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:406 part/models.py:3964 part/stocktake.py:218 -#: stock/admin.py:153 +#: part/admin.py:39 part/admin.py:398 part/models.py:3944 part/stocktake.py:219 +#: stock/admin.py:152 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 -#: stock/admin.py:157 +#: part/admin.py:41 part/admin.py:405 part/models.py:3945 part/stocktake.py:220 +#: stock/admin.py:156 msgid "Part Name" msgstr "" -#: part/admin.py:45 part/stocktake.py:220 +#: part/admin.py:45 part/stocktake.py:221 msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:940 part/templates/part/part_base.html:269 #: report/templates/report/inventree_stock_location_report.html:103 -#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/part.js:1227 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 -#: report/models.py:161 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2346 +#: part/admin.py:50 part/models.py:949 part/templates/part/part_base.html:277 +#: report/models.py:162 templates/js/translated/part.js:1232 +#: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:319 part/models.py:929 +#: part/admin.py:53 part/admin.py:319 part/models.py:922 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5771,11 +5827,11 @@ msgstr "" msgid "Part Image" msgstr "" -#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:222 msgid "Category ID" msgstr "" -#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:223 msgid "Category Name" msgstr "" @@ -5787,11 +5843,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:908 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1036 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5799,26 +5855,26 @@ msgstr "" 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 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:235 +#: templates/js/translated/part.js:715 templates/js/translated/part.js:2153 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3123 part/models.py:3137 -#: templates/js/translated/part.js:969 +#: part/admin.py:155 part/models.py:3088 part/models.py:3102 +#: templates/js/translated/part.js:970 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3130 part/models.py:3144 -#: templates/js/translated/part.js:979 +#: part/admin.py:158 part/models.py:3095 part/models.py:3109 +#: templates/js/translated/part.js:980 msgid "Maximum Cost" msgstr "" -#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 msgid "Parent ID" msgstr "" -#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 msgid "Parent Name" msgstr "" @@ -5827,141 +5883,149 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:325 part/models.py:393 part/serializers.py:117 -#: part/serializers.py:272 part/serializers.py:391 +#: part/admin.py:325 part/models.py:396 part/serializers.py:124 +#: part/serializers.py:267 part/serializers.py:386 #: 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:2803 templates/js/translated/search.js:130 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "" -#: part/admin.py:386 +#: part/admin.py:378 msgid "BOM Level" msgstr "" -#: part/admin.py:389 +#: part/admin.py:381 msgid "BOM Item ID" msgstr "" -#: part/admin.py:399 +#: part/admin.py:391 msgid "Parent IPN" msgstr "" -#: part/admin.py:410 part/models.py:3966 +#: part/admin.py:402 part/models.py:3946 msgid "Part IPN" msgstr "" -#: part/admin.py:423 part/serializers.py:1278 +#: part/admin.py:415 part/serializers.py:1274 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:428 part/serializers.py:1293 +#: part/admin.py:420 part/serializers.py:1289 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:110 +#: part/api.py:104 msgid "Starred" msgstr "" -#: part/api.py:112 +#: part/api.py:106 msgid "Filter by starred categories" msgstr "" -#: part/api.py:129 stock/api.py:318 +#: part/api.py:123 stock/api.py:312 msgid "Depth" msgstr "" -#: part/api.py:129 +#: part/api.py:123 msgid "Filter by category depth" msgstr "" -#: part/api.py:147 stock/api.py:336 +#: part/api.py:141 stock/api.py:330 +msgid "Top Level" +msgstr "" + +#: part/api.py:143 +msgid "Filter by top-level categories" +msgstr "" + +#: part/api.py:156 stock/api.py:345 msgid "Cascade" msgstr "" -#: part/api.py:149 +#: part/api.py:158 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:169 +#: part/api.py:179 templates/js/translated/part.js:308 msgid "Parent" msgstr "" -#: part/api.py:171 +#: part/api.py:181 msgid "Filter by parent category" msgstr "" -#: part/api.py:204 +#: part/api.py:214 msgid "Exclude Tree" msgstr "" -#: part/api.py:206 +#: part/api.py:216 msgid "Exclude sub-categories under the specified category" msgstr "" -#: part/api.py:455 +#: part/api.py:449 msgid "Has Results" msgstr "" -#: part/api.py:622 +#: part/api.py:616 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:640 +#: part/api.py:634 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:656 +#: part/api.py:650 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:740 +#: part/api.py:734 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:887 +#: part/api.py:881 msgid "Valid" msgstr "" -#: part/api.py:888 +#: part/api.py:882 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:894 +#: part/api.py:888 msgid "This option must be selected" msgstr "" -#: part/api.py:1111 +#: part/api.py:1105 msgid "BOM Valid" msgstr "" -#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 -#: part/serializers.py:406 part/serializers.py:1134 -#: part/templates/part/part_base.html:260 stock/api.py:781 +#: part/api.py:1508 part/models.py:932 part/models.py:3374 part/models.py:3889 +#: part/serializers.py:401 part/serializers.py:1130 +#: part/templates/part/part_base.html:260 stock/api.py:791 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2376 +#: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/api.py:1803 +#: part/api.py:1796 msgid "Uses" msgstr "" -#: part/bom.py:170 part/models.py:102 part/models.py:982 +#: part/bom.py:170 part/models.py:104 part/models.py:975 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 part/serializers.py:837 +#: part/bom.py:171 part/serializers.py:833 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5970,1054 +6034,1066 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 +#: part/models.py:85 part/models.py:3890 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:84 part/templates/part/category.html:136 +#: part/models.py:86 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "" -#: part/models.py:103 +#: part/models.py:105 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 +#: part/models.py:110 stock/models.py:174 templates/js/translated/part.js:2810 #: templates/js/translated/stock.js:2772 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:110 +#: part/models.py:112 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:119 +#: part/models.py:121 msgid "Default keywords" msgstr "" -#: part/models.py:120 +#: part/models.py:122 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 stock/models.py:85 stock/models.py:156 +#: part/models.py:128 stock/models.py:86 stock/models.py:157 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:127 stock/models.py:157 +#: part/models.py:129 stock/models.py:158 msgid "Icon (optional)" msgstr "" -#: part/models.py:149 +#: part/models.py:151 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:482 +#: part/models.py:485 msgid "Cannot delete this part as it is still active" msgstr "" -#: part/models.py:489 +#: part/models.py:490 msgid "Cannot delete this part as it is used in an assembly" msgstr "" -#: part/models.py:527 +#: part/models.py:528 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:575 part/models.py:582 +#: part/models.py:576 part/models.py:583 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:594 +#: part/models.py:595 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:659 +#: part/models.py:658 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:739 +#: part/models.py:736 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:844 +#: part/models.py:837 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:854 +#: part/models.py:847 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:869 +#: part/models.py:862 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:898 part/models.py:3965 +#: part/models.py:891 part/models.py:3945 msgid "Part name" msgstr "" -#: part/models.py:903 +#: part/models.py:896 msgid "Is Template" msgstr "" -#: part/models.py:904 +#: part/models.py:897 msgid "Is this part a template part?" msgstr "" -#: part/models.py:914 +#: part/models.py:907 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:922 +#: part/models.py:915 msgid "Part description (optional)" msgstr "" -#: part/models.py:930 +#: part/models.py:923 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:940 +#: part/models.py:933 msgid "Part category" msgstr "" -#: part/models.py:948 +#: part/models.py:941 msgid "Internal Part Number" msgstr "" -#: part/models.py:955 +#: part/models.py:948 msgid "Part revision or version number" msgstr "" -#: part/models.py:980 +#: part/models.py:973 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:1026 part/templates/part/part_base.html:376 +#: part/models.py:1019 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:1027 +#: part/models.py:1020 msgid "Default supplier part" msgstr "" -#: part/models.py:1034 +#: part/models.py:1027 msgid "Default Expiry" msgstr "" -#: part/models.py:1035 +#: part/models.py:1028 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:1044 +#: part/models.py:1037 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:1053 +#: part/models.py:1046 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1060 +#: part/models.py:1053 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1066 +#: part/models.py:1059 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1072 +#: part/models.py:1065 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1078 +#: part/models.py:1071 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1084 +#: part/models.py:1077 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1088 +#: part/models.py:1081 msgid "Is this part active?" msgstr "" -#: part/models.py:1094 +#: part/models.py:1087 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1100 +#: part/models.py:1093 msgid "BOM checksum" msgstr "" -#: part/models.py:1101 +#: part/models.py:1094 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1109 +#: part/models.py:1102 msgid "BOM checked by" msgstr "" -#: part/models.py:1114 +#: part/models.py:1107 msgid "BOM checked date" msgstr "" -#: part/models.py:1130 +#: part/models.py:1123 msgid "Creation User" msgstr "" -#: part/models.py:1140 +#: part/models.py:1133 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1145 part/templates/part/part_base.html:339 +#: part/models.py:1138 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2470 +#: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:2018 +#: part/models.py:2011 msgid "Sell multiple" msgstr "" -#: part/models.py:3037 +#: part/models.py:3002 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:3053 +#: part/models.py:3018 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:3054 +#: part/models.py:3019 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:3060 +#: part/models.py:3025 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3026 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:3067 +#: part/models.py:3032 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3033 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3074 +#: part/models.py:3039 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3040 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3046 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3047 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3053 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3054 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3060 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3096 +#: part/models.py:3061 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3102 +#: part/models.py:3067 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3103 +#: part/models.py:3068 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3109 +#: part/models.py:3074 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3110 +#: part/models.py:3075 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3116 +#: part/models.py:3081 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3117 +#: part/models.py:3082 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3124 +#: part/models.py:3089 msgid "Override minimum cost" msgstr "" -#: part/models.py:3131 +#: part/models.py:3096 msgid "Override maximum cost" msgstr "" -#: part/models.py:3138 +#: part/models.py:3103 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3145 +#: part/models.py:3110 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3151 +#: part/models.py:3116 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3152 +#: part/models.py:3117 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3158 +#: part/models.py:3123 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3159 +#: part/models.py:3124 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3165 +#: part/models.py:3130 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3131 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3172 +#: part/models.py:3137 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3138 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3192 +#: part/models.py:3157 msgid "Part for stocktake" msgstr "" -#: part/models.py:3197 +#: part/models.py:3162 msgid "Item Count" msgstr "" -#: part/models.py:3198 +#: part/models.py:3163 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3206 +#: part/models.py:3171 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3210 part/models.py:3293 +#: part/models.py:3175 part/models.py:3258 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report.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/part.js:1086 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" -#: part/models.py:3211 +#: part/models.py:3176 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3219 +#: part/models.py:3184 msgid "Additional notes" msgstr "" -#: part/models.py:3229 +#: part/models.py:3194 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3235 +#: part/models.py:3200 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3236 +#: part/models.py:3201 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3242 +#: part/models.py:3207 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3243 +#: part/models.py:3208 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3264 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3300 +#: part/models.py:3265 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3270 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3306 +#: part/models.py:3271 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3316 +#: part/models.py:3281 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3478 +#: part/models.py:3423 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3489 +#: part/models.py:3444 part/models.py:3608 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3455 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3500 +#: part/models.py:3466 msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3517 templates/js/translated/part.js:2878 +#: part/models.py:3483 templates/js/translated/part.js:2880 msgid "Test Name" msgstr "" -#: part/models.py:3518 +#: part/models.py:3484 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3524 +#: part/models.py:3490 msgid "Test Key" msgstr "" -#: part/models.py:3525 +#: part/models.py:3491 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3532 +#: part/models.py:3498 msgid "Test Description" msgstr "" -#: part/models.py:3533 +#: part/models.py:3499 msgid "Enter description for this test" msgstr "" -#: part/models.py:3537 report/models.py:208 -#: templates/js/translated/part.js:2899 +#: part/models.py:3503 report/models.py:209 +#: templates/js/translated/part.js:2901 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" -#: part/models.py:3537 +#: part/models.py:3503 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3542 templates/js/translated/part.js:2907 +#: part/models.py:3508 templates/js/translated/part.js:2909 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3543 +#: part/models.py:3509 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3548 templates/js/translated/part.js:2915 +#: part/models.py:3514 templates/js/translated/part.js:2917 msgid "Requires Value" msgstr "" -#: part/models.py:3549 +#: part/models.py:3515 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3554 templates/js/translated/part.js:2922 +#: part/models.py:3520 templates/js/translated/part.js:2924 msgid "Requires Attachment" msgstr "" -#: part/models.py:3556 +#: part/models.py:3522 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3603 +#: part/models.py:3528 part/models.py:3667 templates/js/translated/part.js:1637 +msgid "Choices" +msgstr "" + +#: part/models.py:3529 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3583 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3608 +#: part/models.py:3588 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3628 -msgid "Choices must be unique" -msgstr "" - -#: part/models.py:3645 +#: part/models.py:3625 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3660 +#: part/models.py:3640 msgid "Parameter Name" msgstr "" -#: part/models.py:3667 +#: part/models.py:3647 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3675 +#: part/models.py:3655 msgid "Parameter description" msgstr "" -#: part/models.py:3681 templates/js/translated/part.js:1627 +#: part/models.py:3661 templates/js/translated/part.js:1628 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "" -#: part/models.py:3682 +#: part/models.py:3662 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3687 templates/js/translated/part.js:1636 -msgid "Choices" -msgstr "" - -#: part/models.py:3688 +#: part/models.py:3668 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3765 +#: part/models.py:3745 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3808 +#: part/models.py:3788 msgid "Parent Part" msgstr "" -#: part/models.py:3816 part/models.py:3917 part/models.py:3918 +#: part/models.py:3796 part/models.py:3897 part/models.py:3898 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3821 +#: part/models.py:3801 msgid "Data" msgstr "" -#: part/models.py:3822 +#: part/models.py:3802 msgid "Parameter Value" msgstr "" -#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3904 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3925 +#: part/models.py:3905 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3963 +#: part/models.py:3943 msgid "Part ID or part name" msgstr "" -#: part/models.py:3964 +#: part/models.py:3944 msgid "Unique part ID value" msgstr "" -#: part/models.py:3966 +#: part/models.py:3946 msgid "Part IPN value" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "Level" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "BOM level" msgstr "" -#: part/models.py:4057 +#: part/models.py:4037 msgid "Select parent part" msgstr "" -#: part/models.py:4067 +#: part/models.py:4047 msgid "Sub part" msgstr "" -#: part/models.py:4068 +#: part/models.py:4048 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4079 +#: part/models.py:4059 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4085 +#: part/models.py:4065 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4091 +#: part/models.py:4071 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4098 part/templates/part/upload_bom.html:55 +#: part/models.py:4078 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4099 +#: part/models.py:4079 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4106 +#: part/models.py:4086 msgid "BOM item reference" msgstr "" -#: part/models.py:4114 +#: part/models.py:4094 msgid "BOM item notes" msgstr "" -#: part/models.py:4120 +#: part/models.py:4100 msgid "Checksum" msgstr "" -#: part/models.py:4121 +#: part/models.py:4101 msgid "BOM line checksum" msgstr "" -#: part/models.py:4126 templates/js/translated/table_filters.js:174 +#: part/models.py:4106 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4127 +#: part/models.py:4107 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4132 part/templates/part/upload_bom.html:57 +#: part/models.py:4112 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:4133 +#: part/models.py:4113 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4138 part/templates/part/upload_bom.html:56 +#: part/models.py:4118 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4139 +#: part/models.py:4119 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4224 stock/models.py:664 +#: part/models.py:4204 stock/models.py:662 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4234 part/models.py:4236 +#: part/models.py:4214 part/models.py:4216 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4376 +#: part/models.py:4354 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4397 +#: part/models.py:4375 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4410 +#: part/models.py:4388 msgid "Parent BOM item" msgstr "" -#: part/models.py:4418 +#: part/models.py:4396 msgid "Substitute part" msgstr "" -#: part/models.py:4434 +#: part/models.py:4412 msgid "Part 1" msgstr "" -#: part/models.py:4442 +#: part/models.py:4420 msgid "Part 2" msgstr "" -#: part/models.py:4443 +#: part/models.py:4421 msgid "Select Related Part" msgstr "" -#: part/models.py:4462 +#: part/models.py:4440 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4467 +#: part/models.py:4445 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:119 part/serializers.py:141 +#: part/serializers.py:118 +msgid "Parent Category" +msgstr "" + +#: part/serializers.py:119 templates/js/translated/part.js:309 +msgid "Parent part category" +msgstr "" + +#: part/serializers.py:126 part/serializers.py:148 #: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/serializers.py:185 +#: part/serializers.py:180 msgid "Results" msgstr "" -#: part/serializers.py:186 +#: part/serializers.py:181 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 +#: part/serializers.py:205 part/serializers.py:223 stock/serializers.py:562 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:273 +#: part/serializers.py:268 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:397 +#: part/serializers.py:392 msgid "No parts selected" msgstr "" -#: part/serializers.py:407 +#: part/serializers.py:402 msgid "Select category" msgstr "" -#: part/serializers.py:442 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:443 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:448 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:449 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:455 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:456 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:463 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:488 +#: part/serializers.py:483 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:490 +#: part/serializers.py:485 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:497 +#: part/serializers.py:492 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:493 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:510 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:531 +#: part/serializers.py:526 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:541 +#: part/serializers.py:536 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:548 +#: part/serializers.py:543 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:557 +#: part/serializers.py:552 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:568 +#: part/serializers.py:563 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:575 +#: part/serializers.py:570 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:834 msgid "External Stock" msgstr "" -#: part/serializers.py:840 +#: part/serializers.py:836 msgid "Unallocated Stock" msgstr "" -#: part/serializers.py:843 +#: part/serializers.py:839 msgid "Variant Stock" msgstr "" -#: part/serializers.py:873 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:471 +#: part/serializers.py:869 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:472 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:870 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:880 templates/js/translated/part.js:102 +#: part/serializers.py:876 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:881 +#: part/serializers.py:877 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:887 +#: part/serializers.py:883 msgid "Supplier Information" msgstr "" -#: part/serializers.py:888 +#: part/serializers.py:884 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:896 +#: part/serializers.py:892 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:897 +#: part/serializers.py:893 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:902 +#: part/serializers.py:898 msgid "Existing Image" msgstr "" -#: part/serializers.py:903 +#: part/serializers.py:899 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:920 +#: part/serializers.py:916 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1126 +#: part/serializers.py:1122 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1136 +#: part/serializers.py:1132 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1146 +#: part/serializers.py:1142 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1152 +#: part/serializers.py:1148 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1153 +#: part/serializers.py:1149 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1158 +#: part/serializers.py:1154 msgid "Generate Report" msgstr "" -#: part/serializers.py:1159 +#: part/serializers.py:1155 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1164 +#: part/serializers.py:1160 msgid "Update Parts" msgstr "" -#: part/serializers.py:1165 +#: part/serializers.py:1161 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1173 +#: part/serializers.py:1169 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1279 +#: part/serializers.py:1275 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1286 +#: part/serializers.py:1282 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1294 +#: part/serializers.py:1290 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1301 +#: part/serializers.py:1297 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1330 +#: part/serializers.py:1326 msgid "Update" msgstr "" -#: part/serializers.py:1331 +#: part/serializers.py:1327 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1354 +#: part/serializers.py:1350 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1361 +#: part/serializers.py:1357 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1364 +#: part/serializers.py:1360 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1727 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1739 +#: part/serializers.py:1735 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1740 +#: part/serializers.py:1736 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1745 +#: part/serializers.py:1741 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1746 +#: part/serializers.py:1742 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1747 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1752 +#: part/serializers.py:1748 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1757 +#: part/serializers.py:1753 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1758 +#: part/serializers.py:1754 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1792 +#: part/serializers.py:1788 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1793 +#: part/serializers.py:1789 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1823 +#: part/serializers.py:1819 msgid "No part column specified" msgstr "" -#: part/serializers.py:1867 +#: part/serializers.py:1863 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1870 +#: part/serializers.py:1866 msgid "No matching part found" msgstr "" -#: part/serializers.py:1873 +#: part/serializers.py:1869 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1882 +#: part/serializers.py:1878 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1890 +#: part/serializers.py:1886 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1911 +#: part/serializers.py:1907 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 +#: part/stocktake.py:225 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "" -#: part/stocktake.py:225 +#: part/stocktake.py:226 msgid "Total Cost Min" msgstr "" -#: part/stocktake.py:226 +#: part/stocktake.py:227 msgid "Total Cost Max" msgstr "" -#: part/stocktake.py:284 +#: part/stocktake.py:285 msgid "Stocktake Report Available" msgstr "" -#: part/stocktake.py:285 +#: part/stocktake.py:286 msgid "A new stocktake report is available for download" msgstr "" @@ -7151,7 +7227,7 @@ 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 +#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" @@ -7251,15 +7327,15 @@ msgstr "" msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:655 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:663 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:748 +#: part/templates/part/detail.html:750 msgid "Add Test Result Template" msgstr "" @@ -7340,7 +7416,7 @@ msgstr "" msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" msgstr "" @@ -7412,7 +7488,7 @@ 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:2443 +#: templates/js/translated/part.js:1265 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7505,8 +7581,8 @@ msgstr "" #: 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:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/part.js:1243 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 #: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7549,7 +7625,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:247 +#: part/templates/part/prices.html:28 stock/admin.py:251 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 @@ -7626,8 +7702,8 @@ msgstr "" #: part/templates/part/stock_count.html:7 #: templates/js/translated/model_renderers.js:227 -#: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 -#: templates/js/translated/part.js:2142 +#: templates/js/translated/part.js:705 templates/js/translated/part.js:2141 +#: templates/js/translated/part.js:2143 msgid "No Stock" msgstr "" @@ -7999,7 +8075,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:308 msgid "Landscape" msgstr "" @@ -8112,62 +8188,62 @@ msgstr "" msgid "Uninstalled plugin successfully" msgstr "" -#: plugin/models.py:35 +#: plugin/models.py:36 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:36 +#: plugin/models.py:37 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:42 users/models.py:100 +#: plugin/models.py:43 users/models.py:100 msgid "Key" msgstr "" -#: plugin/models.py:43 +#: plugin/models.py:44 msgid "Key of plugin" msgstr "" -#: plugin/models.py:51 +#: plugin/models.py:52 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:58 plugin/serializers.py:90 +#: plugin/models.py:59 plugin/serializers.py:90 msgid "Package Name" msgstr "" -#: plugin/models.py:60 +#: plugin/models.py:61 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:65 +#: plugin/models.py:66 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:156 templates/js/translated/table_filters.js:370 +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "" -#: plugin/models.py:165 +#: plugin/models.py:166 msgid "Sample plugin" msgstr "" -#: plugin/models.py:173 +#: plugin/models.py:174 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:181 +#: plugin/models.py:182 msgid "Package Plugin" msgstr "" -#: plugin/models.py:205 report/models.py:474 +#: plugin/models.py:220 report/models.py:475 #: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:252 +#: plugin/models.py:267 msgid "Method" msgstr "" @@ -8175,17 +8251,17 @@ msgstr "" msgid "No author found" msgstr "" -#: plugin/registry.py:597 +#: plugin/registry.py:534 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:600 +#: plugin/registry.py:537 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:602 +#: plugin/registry.py:539 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -8300,23 +8376,19 @@ msgstr "" msgid "Activate this plugin" msgstr "" -#: plugin/serializers.py:234 +#: plugin/serializers.py:226 msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:235 +#: plugin/serializers.py:227 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:77 +#: report/api.py:88 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:89 report/serializers.py:53 -msgid "Model Type" -msgstr "" - -#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/api.py:103 report/models.py:439 report/serializers.py:98 #: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 #: templates/js/translated/return_order.js:353 #: templates/js/translated/sales_order.js:887 @@ -8324,176 +8396,176 @@ msgstr "" msgid "Items" msgstr "" -#: report/api.py:168 +#: report/api.py:180 msgid "Plugin not found" msgstr "" -#: report/api.py:170 +#: report/api.py:182 msgid "Plugin is not active" msgstr "" -#: report/api.py:172 +#: report/api.py:184 msgid "Plugin does not support label printing" msgstr "" -#: report/api.py:221 +#: report/api.py:233 msgid "Invalid label dimensions" msgstr "" -#: report/api.py:236 report/api.py:316 +#: report/api.py:248 report/api.py:329 msgid "No valid items provided to template" msgstr "" -#: report/api.py:271 +#: report/api.py:283 msgid "Error printing label" msgstr "" -#: report/api.py:362 report/api.py:398 +#: report/api.py:375 report/api.py:411 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/helpers.py:41 +#: report/helpers.py:43 msgid "A4" msgstr "" -#: report/helpers.py:42 +#: report/helpers.py:44 msgid "A3" msgstr "" -#: report/helpers.py:43 +#: report/helpers.py:45 msgid "Legal" msgstr "" -#: report/helpers.py:44 +#: report/helpers.py:46 msgid "Letter" msgstr "" -#: report/models.py:118 +#: report/models.py:119 msgid "Template file with this name already exists" msgstr "" -#: report/models.py:150 +#: report/models.py:151 msgid "Template name" msgstr "" -#: report/models.py:156 +#: report/models.py:157 msgid "Template description" msgstr "" -#: report/models.py:162 +#: report/models.py:163 msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Filename Pattern" msgstr "" -#: report/models.py:203 +#: report/models.py:204 msgid "Pattern for generating filenames" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Template is enabled" msgstr "" -#: report/models.py:214 +#: report/models.py:215 msgid "Target model type for template" msgstr "" -#: report/models.py:234 +#: report/models.py:235 msgid "Filters" msgstr "" -#: report/models.py:235 +#: report/models.py:236 msgid "Template query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:294 report/models.py:361 +#: report/models.py:295 report/models.py:362 msgid "Template file" msgstr "" -#: report/models.py:302 +#: report/models.py:303 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:308 +#: report/models.py:309 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:367 +#: report/models.py:368 msgid "Width [mm]" msgstr "" -#: report/models.py:368 +#: report/models.py:369 msgid "Label width, specified in mm" msgstr "" -#: report/models.py:374 +#: report/models.py:375 msgid "Height [mm]" msgstr "" -#: report/models.py:375 +#: report/models.py:376 msgid "Label height, specified in mm" msgstr "" -#: report/models.py:438 +#: report/models.py:439 msgid "Number of items to process" msgstr "" -#: report/models.py:444 +#: report/models.py:445 msgid "Report generation is complete" msgstr "" -#: report/models.py:448 templates/js/translated/build.js:2177 +#: report/models.py:449 templates/js/translated/build.js:2177 msgid "Progress" msgstr "" -#: report/models.py:448 +#: report/models.py:449 msgid "Report generation progress" msgstr "" -#: report/models.py:456 +#: report/models.py:457 msgid "Report Template" msgstr "" -#: report/models.py:463 report/models.py:486 +#: report/models.py:464 report/models.py:487 msgid "Output File" msgstr "" -#: report/models.py:464 report/models.py:487 +#: report/models.py:465 report/models.py:488 msgid "Generated output file" msgstr "" -#: report/models.py:475 +#: report/models.py:476 msgid "Label output plugin" msgstr "" -#: report/models.py:479 +#: report/models.py:480 msgid "Label Template" msgstr "" -#: report/models.py:502 +#: report/models.py:503 msgid "Snippet" msgstr "" -#: report/models.py:503 +#: report/models.py:504 msgid "Report snippet file" msgstr "" -#: report/models.py:510 +#: report/models.py:511 msgid "Snippet file description" msgstr "" -#: report/models.py:528 +#: report/models.py:529 msgid "Asset" msgstr "" -#: report/models.py:529 +#: report/models.py:530 msgid "Report asset file" msgstr "" -#: report/models.py:536 +#: report/models.py:537 msgid "Asset file description" msgstr "" @@ -8566,8 +8638,8 @@ msgid "Total" msgstr "" #: report/templates/report/inventree_return_order_report.html:25 -#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 -#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:824 +#: stock/serializers.py:149 stock/templates/stock/item_base.html:311 #: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 #: templates/js/translated/build.js:2355 #: templates/js/translated/model_renderers.js:230 @@ -8597,32 +8669,32 @@ msgstr "" msgid "Test" msgstr "" -#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2412 msgid "Result" msgstr "" -#: report/templates/report/inventree_test_report.html:130 +#: report/templates/report/inventree_test_report.html:129 msgid "Pass" msgstr "" -#: report/templates/report/inventree_test_report.html:132 +#: report/templates/report/inventree_test_report.html:131 msgid "Fail" msgstr "" -#: report/templates/report/inventree_test_report.html:139 +#: report/templates/report/inventree_test_report.html:138 msgid "No result (required)" msgstr "" -#: report/templates/report/inventree_test_report.html:141 +#: report/templates/report/inventree_test_report.html:140 msgid "No result" msgstr "" -#: report/templates/report/inventree_test_report.html:154 +#: report/templates/report/inventree_test_report.html:153 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "" -#: report/templates/report/inventree_test_report.html:168 stock/admin.py:162 +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 #: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 #: templates/js/translated/stock.js:3110 msgid "Serial" @@ -8644,654 +8716,670 @@ msgstr "" msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:172 +#: stock/admin.py:51 stock/admin.py:171 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:176 +#: stock/admin.py:53 stock/admin.py:175 msgid "Location Name" msgstr "" -#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/admin.py:63 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:149 +#: stock/admin.py:148 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:168 +#: stock/admin.py:167 msgid "Status Code" msgstr "" -#: stock/admin.py:180 +#: stock/admin.py:179 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:185 +#: stock/admin.py:184 +msgid "Supplier Part SKU" +msgstr "" + +#: stock/admin.py:189 msgid "Supplier ID" msgstr "" -#: stock/admin.py:191 +#: stock/admin.py:195 msgid "Supplier Name" msgstr "" -#: stock/admin.py:196 +#: stock/admin.py:200 msgid "Customer ID" msgstr "" -#: stock/admin.py:201 stock/models.py:806 +#: stock/admin.py:205 stock/models.py:804 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:206 +#: stock/admin.py:210 msgid "Build ID" msgstr "" -#: stock/admin.py:216 +#: stock/admin.py:220 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:221 +#: stock/admin.py:225 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:236 +#: stock/admin.py:240 msgid "Review Needed" msgstr "" -#: stock/admin.py:241 +#: stock/admin.py:245 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:256 stock/models.py:900 +#: stock/admin.py:260 stock/models.py:898 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "" -#: stock/api.py:318 +#: stock/api.py:312 msgid "Filter by location depth" msgstr "" -#: stock/api.py:338 +#: stock/api.py:332 +msgid "Filter by top-level locations" +msgstr "" + +#: stock/api.py:347 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:359 +#: stock/api.py:369 stock/serializers.py:1085 msgid "Parent Location" msgstr "" -#: stock/api.py:360 +#: stock/api.py:370 msgid "Filter by parent location" msgstr "" -#: stock/api.py:615 templates/js/translated/table_filters.js:427 +#: stock/api.py:625 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:803 +#: stock/api.py:813 msgid "Part Tree" msgstr "" -#: stock/api.py:833 +#: stock/api.py:843 msgid "Expiry date before" msgstr "" -#: stock/api.py:837 +#: stock/api.py:847 msgid "Expiry date after" msgstr "" -#: stock/api.py:840 stock/templates/stock/item_base.html:439 +#: stock/api.py:850 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:927 +#: stock/api.py:937 msgid "Quantity is required" msgstr "" -#: stock/api.py:933 +#: stock/api.py:943 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:964 +#: stock/api.py:974 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:974 +#: stock/api.py:984 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:1005 +#: stock/api.py:1015 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:59 +#: stock/models.py:60 msgid "Stock Location type" msgstr "" -#: stock/models.py:60 +#: stock/models.py:61 msgid "Stock Location types" msgstr "" -#: stock/models.py:86 +#: stock/models.py:87 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:123 stock/models.py:788 +#: stock/models.py:124 stock/models.py:786 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:124 stock/templates/stock/location.html:186 +#: stock/models.py:125 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "" -#: stock/models.py:166 stock/models.py:949 +#: stock/models.py:167 stock/models.py:947 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:167 stock/models.py:950 +#: stock/models.py:168 stock/models.py:948 msgid "Select Owner" msgstr "" -#: stock/models.py:175 +#: stock/models.py:176 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:182 templates/js/translated/stock.js:2781 +#: stock/models.py:183 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:183 +#: stock/models.py:184 msgid "This is an external stock location" msgstr "" -#: stock/models.py:189 templates/js/translated/stock.js:2790 +#: stock/models.py:190 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" -#: stock/models.py:193 +#: stock/models.py:194 msgid "Stock location type of this location" msgstr "" -#: stock/models.py:262 +#: stock/models.py:261 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:643 +#: stock/models.py:641 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:670 stock/serializers.py:419 +#: stock/models.py:668 stock/serializers.py:446 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:687 +#: stock/models.py:685 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:697 stock/models.py:710 +#: stock/models.py:695 stock/models.py:708 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:700 +#: stock/models.py:698 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:724 +#: stock/models.py:722 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:729 +#: stock/models.py:727 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:742 +#: stock/models.py:740 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:758 +#: stock/models.py:756 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:770 +#: stock/models.py:768 msgid "Base part" msgstr "" -#: stock/models.py:780 +#: stock/models.py:778 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:792 +#: stock/models.py:790 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:800 stock/serializers.py:1480 +#: stock/models.py:798 stock/serializers.py:1476 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:811 +#: stock/models.py:809 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:830 +#: stock/models.py:828 msgid "Serial number for this item" msgstr "" -#: stock/models.py:844 stock/serializers.py:1463 +#: stock/models.py:842 stock/serializers.py:1459 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:849 +#: stock/models.py:847 msgid "Stock Quantity" msgstr "" -#: stock/models.py:859 +#: stock/models.py:857 msgid "Source Build" msgstr "" -#: stock/models.py:862 +#: stock/models.py:860 msgid "Build for this stock item" msgstr "" -#: stock/models.py:869 stock/templates/stock/item_base.html:363 +#: stock/models.py:867 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:872 +#: stock/models.py:870 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:881 +#: stock/models.py:879 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:885 +#: stock/models.py:883 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:891 +#: stock/models.py:889 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:902 +#: stock/models.py:900 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:920 +#: stock/models.py:918 msgid "Delete on deplete" msgstr "" -#: stock/models.py:921 +#: stock/models.py:919 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:941 +#: stock/models.py:939 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:972 +#: stock/models.py:970 msgid "Converted to part" msgstr "" -#: stock/models.py:1490 +#: stock/models.py:1486 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1496 +#: stock/models.py:1492 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1500 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1510 +#: stock/models.py:1506 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1515 +#: stock/models.py:1511 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1523 stock/serializers.py:658 +#: stock/models.py:1519 stock/serializers.py:660 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1620 +#: stock/models.py:1616 msgid "Test template does not exist" msgstr "" -#: stock/models.py:1638 +#: stock/models.py:1634 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1642 +#: stock/models.py:1638 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1645 +#: stock/models.py:1641 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1648 +#: stock/models.py:1644 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1651 +#: stock/models.py:1647 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1654 +#: stock/models.py:1650 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1661 stock/serializers.py:1369 +#: stock/models.py:1657 stock/serializers.py:1365 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1665 +#: stock/models.py:1661 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1673 +#: stock/models.py:1669 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1678 +#: stock/models.py:1674 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1905 +#: stock/models.py:1901 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2310 msgid "Entry notes" msgstr "" -#: stock/models.py:2391 +#: stock/models.py:2378 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2396 +#: stock/models.py:2383 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2423 +#: stock/models.py:2388 +msgid "Invalid value for this test" +msgstr "" + +#: stock/models.py:2412 msgid "Test result" msgstr "" -#: stock/models.py:2430 +#: stock/models.py:2419 msgid "Test output value" msgstr "" -#: stock/models.py:2438 +#: stock/models.py:2427 msgid "Test result attachment" msgstr "" -#: stock/models.py:2442 +#: stock/models.py:2431 msgid "Test notes" msgstr "" -#: stock/models.py:2450 templates/js/translated/stock.js:1548 +#: stock/models.py:2439 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2440 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2457 +#: stock/models.py:2446 msgid "Started" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2447 msgid "The timestamp of the test start" msgstr "" -#: stock/models.py:2464 +#: stock/models.py:2453 msgid "Finished" msgstr "" -#: stock/models.py:2465 +#: stock/models.py:2454 msgid "The timestamp of the test finish" msgstr "" -#: stock/serializers.py:75 +#: stock/serializers.py:74 msgid "Generated batch code" msgstr "" -#: stock/serializers.py:84 +#: stock/serializers.py:83 msgid "Select build order" msgstr "" -#: stock/serializers.py:93 +#: stock/serializers.py:92 msgid "Select stock item to generate batch code for" msgstr "" -#: stock/serializers.py:102 +#: stock/serializers.py:101 msgid "Select location to generate batch code for" msgstr "" -#: stock/serializers.py:111 +#: stock/serializers.py:110 msgid "Select part to generate batch code for" msgstr "" -#: stock/serializers.py:120 +#: stock/serializers.py:119 msgid "Select purchase order" msgstr "" -#: stock/serializers.py:127 +#: stock/serializers.py:126 msgid "Enter quantity for batch code" msgstr "" -#: stock/serializers.py:150 +#: stock/serializers.py:149 msgid "Generated serial number" msgstr "" -#: stock/serializers.py:159 +#: stock/serializers.py:158 msgid "Select part to generate serial number for" msgstr "" -#: stock/serializers.py:167 +#: stock/serializers.py:166 msgid "Quantity of serial numbers to generate" msgstr "" -#: stock/serializers.py:229 +#: stock/serializers.py:228 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:248 +#: stock/serializers.py:247 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:280 +#: stock/serializers.py:279 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:313 +#: stock/serializers.py:315 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:411 +#: stock/serializers.py:438 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:531 +#: stock/serializers.py:558 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:595 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:606 +#: stock/serializers.py:608 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:613 +#: stock/serializers.py:615 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 +#: stock/serializers.py:626 stock/serializers.py:1322 stock/serializers.py:1578 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:631 +#: stock/serializers.py:633 msgid "Optional note field" msgstr "" -#: stock/serializers.py:641 +#: stock/serializers.py:643 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:696 +#: stock/serializers.py:698 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:703 +#: stock/serializers.py:705 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:704 +#: stock/serializers.py:706 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 -#: stock/serializers.py:935 +#: stock/serializers.py:711 stock/serializers.py:791 stock/serializers.py:887 +#: stock/serializers.py:937 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:719 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:725 +#: stock/serializers.py:727 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:736 +#: stock/serializers.py:738 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:749 +#: stock/serializers.py:751 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:784 +#: stock/serializers.py:786 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:819 +#: stock/serializers.py:821 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:834 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:849 +#: stock/serializers.py:851 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:880 +#: stock/serializers.py:882 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:917 +#: stock/serializers.py:919 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:923 +#: stock/serializers.py:925 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:1019 stock/serializers.py:1082 +#: stock/serializers.py:1021 stock/serializers.py:1093 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:220 +#: stock/templates/stock/location.html:222 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1198 +#: stock/serializers.py:1086 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: stock/serializers.py:1194 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1202 +#: stock/serializers.py:1198 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1206 +#: stock/serializers.py:1202 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1230 +#: stock/serializers.py:1226 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1236 +#: stock/serializers.py:1232 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1244 +#: stock/serializers.py:1240 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1254 stock/serializers.py:1508 +#: stock/serializers.py:1250 stock/serializers.py:1504 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1333 +#: stock/serializers.py:1329 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1338 +#: stock/serializers.py:1334 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1339 +#: stock/serializers.py:1335 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1344 +#: stock/serializers.py:1340 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1345 +#: stock/serializers.py:1341 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1355 +#: stock/serializers.py:1351 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1422 +#: stock/serializers.py:1418 msgid "No Change" msgstr "" -#: stock/serializers.py:1451 +#: stock/serializers.py:1447 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1470 +#: stock/serializers.py:1466 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1498 +#: stock/serializers.py:1494 msgid "Stock transaction notes" msgstr "" @@ -9444,7 +9532,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276 msgid "Delete Test Data" msgstr "" @@ -9464,11 +9552,11 @@ msgstr "" msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:272 +#: stock/templates/stock/item.html:264 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "" @@ -9754,28 +9842,28 @@ msgstr "" msgid "Location Type" msgstr "" -#: stock/templates/stock/location.html:224 +#: stock/templates/stock/location.html:226 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:225 +#: stock/templates/stock/location.html:227 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:295 +#: stock/templates/stock/location.html:299 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:317 +#: stock/templates/stock/location.html:321 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:390 +#: stock/templates/stock/location.html:394 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:401 +#: stock/templates/stock/location.html:405 msgid "Link Barcode to Stock Location" msgstr "" @@ -10199,20 +10287,20 @@ msgstr "" msgid "Pricing Settings" msgstr "" -#: templates/InvenTree/settings/pricing.html:34 +#: templates/InvenTree/settings/pricing.html:35 msgid "Exchange Rates" msgstr "" -#: templates/InvenTree/settings/pricing.html:38 +#: templates/InvenTree/settings/pricing.html:39 msgid "Update Now" msgstr "" -#: templates/InvenTree/settings/pricing.html:46 -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 msgid "Last Update" msgstr "" -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:51 msgid "Never" msgstr "" @@ -10269,8 +10357,8 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:547 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 +#: templates/js/translated/part.js:393 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:402 msgid "Delete" msgstr "" @@ -10310,12 +10398,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 -#: templates/js/translated/part.js:1645 +#: templates/js/translated/part.js:1646 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 -#: templates/js/translated/part.js:1646 +#: templates/js/translated/part.js:1647 msgid "Delete Template" msgstr "" @@ -10705,7 +10793,7 @@ msgid "Submit Bug Report" msgstr "" #: templates/about.html:91 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 +#: templates/js/translated/helpers.js:589 msgid "copy to clipboard" msgstr "" @@ -10769,7 +10857,7 @@ 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 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45 msgid "Return to Site" msgstr "" @@ -10883,15 +10971,19 @@ msgstr "" msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "" -#: templates/allauth_2fa/setup.html:23 +#: templates/allauth_2fa/setup.html:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 msgid "Step 2" msgstr "" -#: templates/allauth_2fa/setup.html:27 +#: templates/allauth_2fa/setup.html:28 msgid "Input a token generated by the app:" msgstr "" -#: templates/allauth_2fa/setup.html:37 +#: templates/allauth_2fa/setup.html:38 msgid "Verify" msgstr "" @@ -10970,7 +11062,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3217 +#: templates/js/translated/part.js:3219 msgid "Minimum Quantity" msgstr "" @@ -11058,27 +11150,27 @@ msgstr "" msgid "Delete attachments" msgstr "" -#: templates/js/translated/attachment.js:253 +#: templates/js/translated/attachment.js:260 msgid "Attachment actions" msgstr "" -#: templates/js/translated/attachment.js:275 +#: templates/js/translated/attachment.js:294 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:315 +#: templates/js/translated/attachment.js:334 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:365 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:366 +#: templates/js/translated/attachment.js:385 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:374 +#: templates/js/translated/attachment.js:393 msgid "Delete attachment" msgstr "" @@ -11359,7 +11451,7 @@ msgid "Includes variant and substitute stock" msgstr "" #: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 -#: templates/js/translated/part.js:1256 +#: templates/js/translated/part.js:1257 #: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" @@ -11686,7 +11778,7 @@ msgstr "" #: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 #: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 -#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11729,8 +11821,8 @@ msgstr "" msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 -#: templates/js/translated/part.js:1202 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:791 +#: templates/js/translated/part.js:1203 msgid "Trackable part" msgstr "" @@ -11916,7 +12008,7 @@ msgid "Delete Parameters" msgstr "" #: templates/js/translated/company.js:1191 -#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2244 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2245 msgid "Order parts" msgstr "" @@ -11933,34 +12025,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:1279 -#: templates/js/translated/company.js:1567 templates/js/translated/part.js:798 -#: templates/js/translated/part.js:1210 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Template part" msgstr "" #: templates/js/translated/company.js:1283 -#: templates/js/translated/company.js:1571 templates/js/translated/part.js:802 -#: templates/js/translated/part.js:1214 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:803 +#: templates/js/translated/part.js:1215 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1464 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1465 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1527 +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1528 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1528 +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1529 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1433 +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1434 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1549 +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1550 msgid "Delete Parameter" msgstr "" @@ -12094,23 +12186,23 @@ msgstr "" msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2499 +#: templates/js/translated/forms.js:2500 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3113 +#: templates/js/translated/forms.js:3114 msgid "Select Columns" msgstr "" @@ -12211,7 +12303,7 @@ msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 -#: templates/js/translated/part.js:1604 +#: templates/js/translated/part.js:1605 msgid "ID" msgstr "" @@ -12292,347 +12384,343 @@ msgstr "" 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 +#: templates/js/translated/part.js:333 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:355 +#: templates/js/translated/part.js:356 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:356 +#: templates/js/translated/part.js:357 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:370 +#: templates/js/translated/part.js:371 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:383 +#: templates/js/translated/part.js:384 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:388 +#: templates/js/translated/part.js:389 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:397 +#: templates/js/translated/part.js:398 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:401 +#: templates/js/translated/part.js:402 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:406 +#: templates/js/translated/part.js:407 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:430 +#: templates/js/translated/part.js:431 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:432 +#: templates/js/translated/part.js:433 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:433 +#: templates/js/translated/part.js:434 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:462 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:463 +#: templates/js/translated/part.js:464 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:474 +#: templates/js/translated/part.js:475 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:531 +#: templates/js/translated/part.js:532 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:532 +#: templates/js/translated/part.js:533 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:546 +#: templates/js/translated/part.js:547 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:548 +#: templates/js/translated/part.js:549 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:549 +#: templates/js/translated/part.js:550 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:550 +#: templates/js/translated/part.js:551 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:557 +#: templates/js/translated/part.js:558 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:593 +#: templates/js/translated/part.js:594 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:595 +#: templates/js/translated/part.js:596 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:600 +#: templates/js/translated/part.js:601 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:602 +#: templates/js/translated/part.js:603 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:619 +#: templates/js/translated/part.js:620 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:629 +#: templates/js/translated/part.js:630 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:632 +#: templates/js/translated/part.js:633 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:657 +#: templates/js/translated/part.js:658 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:685 +#: templates/js/translated/part.js:686 #: templates/js/translated/table_filters.js:747 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:688 +#: templates/js/translated/part.js:689 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:748 +#: templates/js/translated/part.js:749 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:771 +#: templates/js/translated/part.js:772 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +#: templates/js/translated/part.js:795 templates/js/translated/part.js:1207 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:806 +#: templates/js/translated/part.js:807 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:810 +#: templates/js/translated/part.js:811 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:897 +#: templates/js/translated/part.js:898 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:901 +#: templates/js/translated/part.js:902 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1050 +#: templates/js/translated/part.js:1051 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1145 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +#: templates/js/translated/part.js:1113 templates/js/translated/part.js:1155 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1281 +#: templates/js/translated/part.js:1282 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1599 +#: templates/js/translated/part.js:1600 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1662 +#: templates/js/translated/part.js:1663 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1674 +#: templates/js/translated/part.js:1675 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1682 +#: templates/js/translated/part.js:1683 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1716 +#: templates/js/translated/part.js:1717 #: templates/js/translated/purchase_order.js:1654 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1860 +#: templates/js/translated/part.js:1861 #: templates/js/translated/purchase_order.js:2153 #: templates/js/translated/return_order.js:755 #: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1906 +#: templates/js/translated/part.js:1907 #: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1970 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1991 +#: templates/js/translated/part.js:1992 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 +#: templates/js/translated/part.js:2080 templates/js/translated/part.js:2506 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2200 +#: templates/js/translated/part.js:2201 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2205 +#: templates/js/translated/part.js:2206 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2235 +#: templates/js/translated/part.js:2236 msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2286 +#: templates/js/translated/part.js:2287 msgid "part" msgstr "" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2288 msgid "parts" msgstr "" -#: templates/js/translated/part.js:2383 +#: templates/js/translated/part.js:2384 msgid "No category" msgstr "" -#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2546 +#: templates/js/translated/part.js:2547 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2644 +#: templates/js/translated/part.js:2645 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2760 +#: templates/js/translated/part.js:2761 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2776 +#: templates/js/translated/part.js:2777 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2865 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2887 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/part.js:2938 templates/js/translated/stock.js:1457 #: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2940 +#: templates/js/translated/part.js:2942 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2956 +#: templates/js/translated/part.js:2958 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2970 +#: templates/js/translated/part.js:2972 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3051 templates/js/translated/part.js:3052 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3052 +#: templates/js/translated/part.js:3054 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3058 +#: templates/js/translated/part.js:3060 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3108 +#: templates/js/translated/part.js:3110 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3114 +#: templates/js/translated/part.js:3116 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3210 +#: templates/js/translated/part.js:3212 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3226 +#: templates/js/translated/part.js:3228 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3271 +#: templates/js/translated/part.js:3273 msgid "Minimum Stock Level" msgstr "" @@ -13240,10 +13328,6 @@ msgstr "" 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 "" @@ -13412,7 +13496,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:401 +#: templates/js/translated/stock.js:1042 users/models.py:392 msgid "Add" msgstr "" @@ -14303,34 +14387,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:384 +#: users/models.py:375 msgid "Permission set" msgstr "" -#: users/models.py:393 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "View" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "Permission to view items" msgstr "" -#: users/models.py:401 +#: users/models.py:392 msgid "Permission to add items" msgstr "" -#: users/models.py:405 +#: users/models.py:396 msgid "Change" msgstr "" -#: users/models.py:407 +#: users/models.py:398 msgid "Permissions to edit items" msgstr "" -#: users/models.py:413 +#: users/models.py:404 msgid "Permission to delete items" msgstr "" + diff --git a/src/backend/InvenTree/locale/lv/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/lv/LC_MESSAGES/django.po index 8fbe805bf1..c5268a646a 100644 --- a/src/backend/InvenTree/locale/lv/LC_MESSAGES/django.po +++ b/src/backend/InvenTree/locale/lv/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-05-31 07:08+0000\n" -"PO-Revision-Date: 2024-05-27 11:55\n" +"POT-Creation-Date: 2024-06-26 03:18+0000\n" +"PO-Revision-Date: 2024-06-26 06:05\n" "Last-Translator: \n" "Language-Team: Latvian\n" "Language: lv_LV\n" @@ -21,7 +21,7 @@ msgstr "" msgid "API endpoint not found" msgstr "API galapunkts nav atrasts" -#: InvenTree/api.py:536 +#: InvenTree/api.py:520 msgid "User does not have permission to view this model" msgstr "Lietotājam nav atļaujas, lai apskatītu šo modeli" @@ -52,25 +52,25 @@ msgstr "" msgid "Error details can be found in the admin panel" msgstr "" -#: InvenTree/fields.py:139 +#: InvenTree/fields.py:136 msgid "Enter date" msgstr "Ievadiet datumu" -#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 -#: build/serializers.py:531 build/templates/build/sidebar.html:21 -#: company/models.py:849 company/templates/company/sidebar.html:37 -#: order/models.py:1332 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:205 InvenTree/models.py:918 build/serializers.py:452 +#: build/serializers.py:530 build/templates/build/sidebar.html:21 +#: company/models.py:817 company/templates/company/sidebar.html:37 +#: order/models.py:1296 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:3218 part/templates/part/part_sidebar.html:63 +#: part/models.py:3183 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_report.html:172 -#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 -#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 -#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 -#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:230 stock/models.py:2309 stock/models.py:2431 +#: stock/serializers.py:632 stock/serializers.py:790 stock/serializers.py:886 +#: stock/serializers.py:936 stock/serializers.py:1239 stock/serializers.py:1328 +#: stock/serializers.py:1493 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1080 +#: templates/js/translated/part.js:1081 #: templates/js/translated/purchase_order.js:2200 #: templates/js/translated/return_order.js:775 #: templates/js/translated/sales_order.js:1103 @@ -120,15 +120,15 @@ msgstr "E-pasta adreses apstiprinājums" msgid "You must type the same email each time." msgstr "Katru reizi jāievada viena un tā pati e-pasta adrese." -#: InvenTree/forms.py:253 InvenTree/forms.py:261 +#: InvenTree/forms.py:248 InvenTree/forms.py:256 msgid "The provided primary email address is not valid." msgstr "Norādītā primārā e-pasta adrese nav derīga." -#: InvenTree/forms.py:268 +#: InvenTree/forms.py:263 msgid "The provided email domain is not approved." msgstr "Norādītais e-pasta domēns nav apstiprināts." -#: InvenTree/forms.py:395 +#: InvenTree/forms.py:390 msgid "Registration is disabled." msgstr "Reģistrācija ir izslēgta." @@ -171,35 +171,35 @@ msgstr "Unikālo sērijas numuru skaitam ({len(serials)}) jāatbilst daudzumam ( msgid "Remove HTML tags from this value" msgstr "Noņemiet HTML tagus no šīs vērtības" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Connection error" msgstr "Savienojuma kļūda" -#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 msgid "Server responded with invalid status code" msgstr "Serveris atbildēja ar nederīgu statusa kodu" -#: InvenTree/helpers_model.py:158 +#: InvenTree/helpers_model.py:148 msgid "Exception occurred" msgstr "Radās izņēmums" -#: InvenTree/helpers_model.py:168 +#: InvenTree/helpers_model.py:158 msgid "Server responded with invalid Content-Length value" msgstr "Serveris atbildēja ar nederīgu Content-Length vērtību" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:161 msgid "Image size is too large" msgstr "Attēla izmērs ir pārāk liels" -#: InvenTree/helpers_model.py:183 +#: InvenTree/helpers_model.py:173 msgid "Image download exceeded maximum size" msgstr "Attēla lejupielāde pārsniedz maksimālo izmēru" -#: InvenTree/helpers_model.py:188 +#: InvenTree/helpers_model.py:178 msgid "Remote server returned empty response" msgstr "Attālais serveris atgrieza tukšu atbildi" -#: InvenTree/helpers_model.py:196 +#: InvenTree/helpers_model.py:186 msgid "Supplied URL is not a valid image file" msgstr "Norādītajā URL nav derīgs attēla fails" @@ -296,46 +296,50 @@ msgid "Portuguese (Brazilian)" msgstr "" #: InvenTree/locales.py:41 -msgid "Russian" +msgid "Romanian" msgstr "" #: InvenTree/locales.py:42 -msgid "Slovak" +msgid "Russian" msgstr "" #: InvenTree/locales.py:43 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: InvenTree/locales.py:44 -msgid "Serbian" +msgid "Slovenian" msgstr "" #: InvenTree/locales.py:45 -msgid "Swedish" +msgid "Serbian" msgstr "" #: InvenTree/locales.py:46 -msgid "Thai" +msgid "Swedish" msgstr "" #: InvenTree/locales.py:47 -msgid "Turkish" +msgid "Thai" msgstr "" #: InvenTree/locales.py:48 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: InvenTree/locales.py:49 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: InvenTree/locales.py:50 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: InvenTree/locales.py:51 +msgid "Chinese (Simplified)" +msgstr "" + +#: InvenTree/locales.py:52 msgid "Chinese (Traditional)" msgstr "" @@ -344,153 +348,65 @@ msgstr "" msgid "[{site_name}] Log in to the app" msgstr "" -#: InvenTree/magic_login.py:38 company/models.py:133 +#: InvenTree/magic_login.py:38 company/models.py:136 #: company/templates/company/company_base.html:138 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:677 msgid "Email" msgstr "" -#: InvenTree/models.py:107 +#: InvenTree/models.py:105 msgid "Error running plugin validation" msgstr "" -#: InvenTree/models.py:176 +#: InvenTree/models.py:174 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:182 +#: InvenTree/models.py:180 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:183 +#: InvenTree/models.py:181 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:413 +#: InvenTree/models.py:408 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:420 +#: InvenTree/models.py:415 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:426 +#: InvenTree/models.py:421 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:437 +#: InvenTree/models.py:432 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:445 +#: InvenTree/models.py:440 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:476 +#: InvenTree/models.py:471 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:550 -msgid "Missing file" -msgstr "" - -#: InvenTree/models.py:551 -msgid "Missing external link" -msgstr "" - -#: InvenTree/models.py:572 stock/models.py:2437 -#: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:326 -msgid "Attachment" -msgstr "" - -#: InvenTree/models.py:573 -msgid "Select file to attach" -msgstr "" - -#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:831 -#: order/models.py:303 order/models.py:1337 order/models.py:1753 -#: part/admin.py:55 part/models.py:962 -#: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_report.html:164 -#: stock/admin.py:225 templates/js/translated/company.js:1319 -#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2455 -#: templates/js/translated/purchase_order.js:2040 -#: templates/js/translated/purchase_order.js:2204 -#: templates/js/translated/return_order.js:779 -#: templates/js/translated/sales_order.js:1092 -#: templates/js/translated/sales_order.js:2023 -msgid "Link" -msgstr "" - -#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 -#: stock/models.py:836 -msgid "Link to external URL" -msgstr "" - -#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:341 -msgid "Comment" -msgstr "" - -#: InvenTree/models.py:589 -msgid "File comment" -msgstr "" - -#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 -#: common/models.py:2518 common/models.py:2742 common/models.py:2743 -#: common/models.py:2988 common/models.py:2989 part/models.py:3228 -#: part/models.py:3315 part/models.py:3408 part/models.py:3436 -#: plugin/models.py:259 plugin/models.py:260 -#: report/templates/report/inventree_test_report.html:105 -#: templates/js/translated/stock.js:3036 users/models.py:111 -msgid "User" -msgstr "" - -#: InvenTree/models.py:602 -msgid "upload date" -msgstr "" - -#: InvenTree/models.py:624 -msgid "Filename must not be empty" -msgstr "" - -#: InvenTree/models.py:635 -msgid "Invalid attachment directory" -msgstr "" - -#: InvenTree/models.py:665 -#, python-brace-format -msgid "Filename contains illegal character '{c}'" -msgstr "" - -#: InvenTree/models.py:668 -msgid "Filename missing extension" -msgstr "" - -#: InvenTree/models.py:677 -msgid "Attachment with this filename already exists" -msgstr "" - -#: InvenTree/models.py:684 -msgid "Error renaming file" -msgstr "" - -#: InvenTree/models.py:860 +#: InvenTree/models.py:719 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:877 +#: InvenTree/models.py:736 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 -#: common/serializers.py:403 company/models.py:614 machine/models.py:24 -#: part/models.py:898 part/models.py:3659 plugin/models.py:50 -#: report/models.py:149 stock/models.py:72 +#: InvenTree/models.py:766 common/models.py:2623 common/models.py:3036 +#: common/serializers.py:408 company/models.py:580 machine/models.py:24 +#: part/models.py:891 part/models.py:3639 plugin/models.py:51 +#: report/models.py:150 stock/models.py:73 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:83 @@ -501,25 +417,25 @@ msgstr "" #: templates/js/translated/company.js:724 #: templates/js/translated/company.js:913 #: templates/js/translated/company.js:1165 -#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 -#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1187 +#: templates/js/translated/part.js:1475 templates/js/translated/part.js:1611 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "" -#: InvenTree/models.py:913 build/models.py:218 -#: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:523 company/models.py:840 +#: InvenTree/models.py:772 build/models.py:220 +#: build/templates/build/detail.html:24 common/models.py:138 +#: company/models.py:509 company/models.py:808 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 order/models.py:289 -#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 -#: part/models.py:3674 part/templates/part/category.html:82 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:914 +#: part/models.py:3654 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:155 -#: report/models.py:509 report/models.py:535 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 #: report/templates/report/inventree_build_order_report.html:117 -#: stock/admin.py:55 stock/models.py:78 stock/templates/stock/location.html:125 +#: stock/admin.py:54 stock/models.py:79 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 @@ -528,10 +444,10 @@ msgstr "" #: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 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:2354 -#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1239 +#: templates/js/translated/part.js:1484 templates/js/translated/part.js:1622 +#: templates/js/translated/part.js:1959 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2897 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1706 #: templates/js/translated/purchase_order.js:1849 @@ -544,149 +460,141 @@ msgstr "" msgid "Description" msgstr "" -#: InvenTree/models.py:914 stock/models.py:79 +#: InvenTree/models.py:773 stock/models.py:80 msgid "Description (optional)" msgstr "" -#: InvenTree/models.py:923 -msgid "parent" -msgstr "" - -#: InvenTree/models.py:929 templates/js/translated/part.js:2793 +#: InvenTree/models.py:788 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "" -#: InvenTree/models.py:1035 +#: InvenTree/models.py:918 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:1064 +#: InvenTree/models.py:947 msgid "Barcode Data" msgstr "" -#: InvenTree/models.py:1065 +#: InvenTree/models.py:948 msgid "Third party barcode data" msgstr "" -#: InvenTree/models.py:1071 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:1072 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:1125 +#: InvenTree/models.py:1008 msgid "Existing barcode found" msgstr "" -#: InvenTree/models.py:1168 +#: InvenTree/models.py:1051 msgid "Server Error" msgstr "" -#: InvenTree/models.py:1169 +#: InvenTree/models.py:1052 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:62 part/models.py:4212 +#: InvenTree/serializers.py:63 part/models.py:4192 msgid "Must be a valid number" msgstr "" -#: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:3036 +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3001 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "" -#: InvenTree/serializers.py:102 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:441 +#: InvenTree/serializers.py:442 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:453 +#: InvenTree/serializers.py:454 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:472 +#: InvenTree/serializers.py:473 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:474 +#: InvenTree/serializers.py:475 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:481 +#: InvenTree/serializers.py:482 msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:542 -msgid "Filename" -msgstr "" - -#: InvenTree/serializers.py:576 +#: InvenTree/serializers.py:540 msgid "Invalid value" msgstr "" -#: InvenTree/serializers.py:596 +#: InvenTree/serializers.py:560 msgid "Data File" msgstr "" -#: InvenTree/serializers.py:597 +#: InvenTree/serializers.py:561 msgid "Select data file for upload" msgstr "" -#: InvenTree/serializers.py:614 +#: InvenTree/serializers.py:578 msgid "Unsupported file type" msgstr "" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:584 msgid "File is too large" msgstr "" -#: InvenTree/serializers.py:641 +#: InvenTree/serializers.py:605 msgid "No columns found in file" msgstr "" -#: InvenTree/serializers.py:644 +#: InvenTree/serializers.py:608 msgid "No data rows found in file" msgstr "" -#: InvenTree/serializers.py:757 +#: InvenTree/serializers.py:721 msgid "No data rows provided" msgstr "" -#: InvenTree/serializers.py:760 +#: InvenTree/serializers.py:724 msgid "No data columns supplied" msgstr "" -#: InvenTree/serializers.py:827 +#: InvenTree/serializers.py:791 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "" -#: InvenTree/serializers.py:836 +#: InvenTree/serializers.py:800 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/serializers.py:859 +#: InvenTree/serializers.py:840 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:860 +#: InvenTree/serializers.py:841 msgid "URL of remote image file" msgstr "" -#: InvenTree/serializers.py:878 +#: InvenTree/serializers.py:859 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/status.py:66 part/serializers.py:1178 +#: InvenTree/status.py:66 part/serializers.py:1174 msgid "Background worker check failed" msgstr "" @@ -698,27 +606,27 @@ msgstr "" msgid "InvenTree system health checks failed" msgstr "" -#: InvenTree/templatetags/inventree_extras.py:183 +#: InvenTree/templatetags/inventree_extras.py:184 msgid "Unknown database" msgstr "" -#: InvenTree/validators.py:31 InvenTree/validators.py:33 +#: InvenTree/validators.py:32 InvenTree/validators.py:34 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:39 +#: InvenTree/validators.py:40 msgid "Not a valid currency code" msgstr "" -#: InvenTree/validators.py:121 InvenTree/validators.py:137 +#: InvenTree/validators.py:118 InvenTree/validators.py:134 msgid "Overage value must not be negative" msgstr "" -#: InvenTree/validators.py:139 +#: InvenTree/validators.py:136 msgid "Overage must not exceed 100%" msgstr "" -#: InvenTree/validators.py:145 +#: InvenTree/validators.py:142 msgid "Invalid value for overage" msgstr "" @@ -750,14 +658,14 @@ msgstr "" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: build/api.py:299 part/models.py:4070 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:300 part/models.py:4084 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4064 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2529 #: templates/js/translated/table_filters.js:186 @@ -778,30 +686,30 @@ msgstr "" msgid "Allocated" msgstr "" -#: build/api.py:311 company/models.py:904 company/serializers.py:383 +#: build/api.py:311 company/models.py:872 company/serializers.py:359 #: 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:2561 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:234 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 -#: templates/js/translated/part.js:699 +#: templates/js/translated/part.js:693 templates/js/translated/part.js:695 +#: templates/js/translated/part.js:700 #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:575 msgid "Available" msgstr "" -#: build/models.py:83 build/templates/build/build_base.html:9 +#: build/models.py:85 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_report.html:105 -#: stock/serializers.py:83 templates/email/build_order_completed.html:16 +#: stock/serializers.py:82 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:2892 msgid "Build Order" msgstr "" -#: build/models.py:84 build/templates/build/build_base.html:13 +#: build/models.py:86 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 @@ -812,25 +720,25 @@ msgstr "" msgid "Build Orders" msgstr "" -#: build/models.py:131 +#: build/models.py:133 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:142 order/models.py:240 +#: build/models.py:144 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "" -#: build/models.py:148 +#: build/models.py:150 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:209 +#: build/models.py:211 msgid "Build Order Reference" msgstr "" -#: build/models.py:210 order/models.py:463 order/models.py:928 -#: order/models.py:1325 order/models.py:2056 part/admin.py:419 -#: part/models.py:4105 part/templates/part/upload_bom.html:54 +#: build/models.py:212 order/models.py:463 order/models.py:926 +#: order/models.py:1289 order/models.py:2020 part/admin.py:411 +#: part/models.py:4085 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_purchase_order_report.html:28 #: report/templates/report/inventree_return_order_report.html:26 @@ -844,27 +752,27 @@ msgstr "" msgid "Reference" msgstr "" -#: build/models.py:221 +#: build/models.py:223 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:229 build/templates/build/build_base.html:183 +#: build/models.py:231 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:230 +#: build/models.py:232 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:235 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 -#: order/models.py:1450 order/models.py:1595 order/models.py:1596 -#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 -#: part/models.py:3191 part/models.py:3335 part/models.py:3358 -#: part/models.py:3379 part/models.py:3401 part/models.py:3511 -#: part/models.py:3807 part/models.py:3963 part/models.py:4056 -#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 +#: build/models.py:237 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1026 order/api.py:805 +#: order/models.py:1414 order/models.py:1559 order/models.py:1560 +#: part/api.py:1494 part/api.py:1788 part/models.py:395 part/models.py:3012 +#: part/models.py:3156 part/models.py:3303 part/models.py:3324 +#: part/models.py:3346 part/models.py:3477 part/models.py:3787 +#: part/models.py:3943 part/models.py:4036 part/models.py:4395 +#: part/serializers.py:1120 part/serializers.py:1726 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -875,8 +783,8 @@ msgstr "" #: report/templates/report/inventree_return_order_report.html:24 #: report/templates/report/inventree_sales_order_report.html:27 #: report/templates/report/inventree_stock_location_report.html:102 -#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 -#: stock/serializers.py:818 templates/InvenTree/search.html:82 +#: stock/serializers.py:109 stock/serializers.py:157 stock/serializers.py:423 +#: stock/serializers.py:820 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 @@ -889,8 +797,8 @@ msgstr "" #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 -#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2323 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:1944 templates/js/translated/part.js:2016 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 #: templates/js/translated/purchase_order.js:751 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1848 @@ -908,107 +816,107 @@ msgstr "" msgid "Part" msgstr "" -#: build/models.py:243 +#: build/models.py:245 msgid "Select part to build" msgstr "" -#: build/models.py:248 +#: build/models.py:250 msgid "Sales Order Reference" msgstr "" -#: build/models.py:252 +#: build/models.py:254 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:257 build/serializers.py:1000 +#: build/models.py:259 build/serializers.py:999 #: templates/js/translated/build.js:1731 #: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "" -#: build/models.py:261 +#: build/models.py:263 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:266 +#: build/models.py:268 msgid "Destination Location" msgstr "" -#: build/models.py:270 +#: build/models.py:272 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:274 +#: build/models.py:276 msgid "Build Quantity" msgstr "" -#: build/models.py:277 +#: build/models.py:279 msgid "Number of stock items to build" msgstr "" -#: build/models.py:281 +#: build/models.py:283 msgid "Completed items" msgstr "" -#: build/models.py:283 +#: build/models.py:285 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:287 +#: build/models.py:289 msgid "Build Status" msgstr "" -#: build/models.py:291 +#: build/models.py:293 msgid "Build status code" msgstr "" -#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 -#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 +#: build/models.py:302 build/serializers.py:286 order/serializers.py:580 +#: stock/models.py:838 stock/serializers.py:74 stock/serializers.py:1458 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "" -#: build/models.py:304 build/serializers.py:288 +#: build/models.py:306 build/serializers.py:287 msgid "Batch code for this build output" msgstr "" -#: build/models.py:307 order/models.py:316 order/serializers.py:120 -#: part/models.py:1122 part/templates/part/part_base.html:310 +#: build/models.py:309 order/models.py:316 order/serializers.py:119 +#: part/models.py:1115 part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:338 #: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "" -#: build/models.py:311 +#: build/models.py:313 msgid "Target completion date" msgstr "" -#: build/models.py:312 +#: build/models.py:314 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:315 order/models.py:521 order/models.py:2101 +#: build/models.py:317 order/models.py:521 order/models.py:2065 #: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "" -#: build/models.py:321 +#: build/models.py:323 msgid "completed by" msgstr "" -#: build/models.py:329 templates/js/translated/build.js:2207 +#: build/models.py:331 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "" -#: build/models.py:330 +#: build/models.py:332 msgid "User who issued this build order" msgstr "" -#: build/models.py:338 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:145 +#: build/models.py:340 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:147 #: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:232 part/models.py:1139 +#: order/templates/order/sales_order_base.html:232 part/models.py:1132 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_report.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 @@ -1019,31 +927,36 @@ msgstr "" msgid "Responsible" msgstr "" -#: build/models.py:339 +#: build/models.py:341 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:344 build/templates/build/detail.html:108 +#: build/models.py:346 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:184 -#: part/templates/part/part_base.html:383 stock/models.py:836 +#: part/templates/part/part_base.html:383 stock/models.py:834 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "" -#: build/models.py:349 +#: build/models.py:347 common/models.py:3178 part/models.py:956 +#: stock/models.py:834 +msgid "Link to external URL" +msgstr "" + +#: build/models.py:351 msgid "Build Priority" msgstr "" -#: build/models.py:352 +#: build/models.py:354 msgid "Priority of this build order" msgstr "" -#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: build/models.py:361 common/models.py:131 order/admin.py:18 #: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 #: templates/js/translated/build.js:2144 #: templates/js/translated/purchase_order.js:1710 @@ -1054,65 +967,65 @@ msgstr "" msgid "Project Code" msgstr "" -#: build/models.py:360 +#: build/models.py:362 msgid "Project code for this build order" msgstr "" -#: build/models.py:593 build/models.py:658 +#: build/models.py:595 build/models.py:660 msgid "Failed to offload task to complete build allocations" msgstr "" -#: build/models.py:615 +#: build/models.py:617 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:621 +#: build/models.py:623 msgid "A build order has been completed" msgstr "" -#: build/models.py:847 build/models.py:932 +#: build/models.py:849 build/models.py:934 msgid "No build output specified" msgstr "" -#: build/models.py:850 +#: build/models.py:852 msgid "Build output is already completed" msgstr "" -#: build/models.py:853 +#: build/models.py:855 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 -#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 -#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 -#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 +#: build/models.py:938 build/serializers.py:219 build/serializers.py:268 +#: build/serializers.py:866 order/models.py:559 order/serializers.py:432 +#: order/serializers.py:575 part/serializers.py:1484 part/serializers.py:1884 +#: stock/models.py:677 stock/models.py:1495 stock/serializers.py:603 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:941 build/serializers.py:225 +#: build/models.py:943 build/serializers.py:224 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1001 build/serializers.py:548 +#: build/models.py:1003 build/serializers.py:547 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1352 +#: build/models.py:1344 msgid "Build Order Line Item" msgstr "" -#: build/models.py:1377 +#: build/models.py:1369 msgid "Build object" msgstr "" -#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 -#: build/serializers.py:254 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2539 -#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 -#: part/forms.py:48 part/models.py:3205 part/models.py:4078 +#: build/models.py:1383 build/models.py:1639 build/serializers.py:206 +#: build/serializers.py:253 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2509 +#: order/models.py:1272 order/models.py:1931 order/serializers.py:1327 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3170 part/models.py:4058 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1121,8 +1034,8 @@ msgstr "" #: report/templates/report/inventree_sales_order_report.html:29 #: report/templates/report/inventree_stock_location_report.html:104 #: report/templates/report/inventree_test_report.html:90 -#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 -#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:125 stock/serializers.py:165 stock/serializers.py:594 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1133,8 +1046,8 @@ msgstr "" #: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 #: templates/js/translated/model_renderers.js:236 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:962 +#: templates/js/translated/part.js:1812 templates/js/translated/part.js:3342 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1154,38 +1067,38 @@ msgstr "" msgid "Quantity" msgstr "" -#: build/models.py:1392 +#: build/models.py:1384 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1472 +#: build/models.py:1464 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1481 +#: build/models.py:1473 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1491 order/models.py:1918 +#: build/models.py:1483 order/models.py:1882 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1497 order/models.py:1921 +#: build/models.py:1489 order/models.py:1885 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1503 +#: build/models.py:1495 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1562 +#: build/models.py:1554 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 -#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 -#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: build/models.py:1626 build/serializers.py:846 order/serializers.py:1171 +#: order/serializers.py:1192 stock/models.py:358 stock/serializers.py:91 +#: stock/serializers.py:697 stock/serializers.py:1177 stock/serializers.py:1289 #: stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 @@ -1201,70 +1114,70 @@ msgstr "" msgid "Stock Item" msgstr "" -#: build/models.py:1635 +#: build/models.py:1627 msgid "Source stock item" msgstr "" -#: build/models.py:1648 +#: build/models.py:1640 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1656 +#: build/models.py:1648 msgid "Install into" msgstr "" -#: build/models.py:1657 +#: build/models.py:1649 msgid "Destination stock item" msgstr "" -#: build/serializers.py:157 build/serializers.py:876 +#: build/serializers.py:156 build/serializers.py:875 #: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "" -#: build/serializers.py:169 +#: build/serializers.py:168 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:173 +#: build/serializers.py:172 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:177 +#: build/serializers.py:176 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:188 +#: build/serializers.py:187 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:208 build/serializers.py:255 +#: build/serializers.py:207 build/serializers.py:254 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:276 +#: build/serializers.py:275 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:279 +#: build/serializers.py:278 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:294 order/serializers.py:589 order/serializers.py:1343 -#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:293 order/serializers.py:588 order/serializers.py:1331 +#: stock/serializers.py:614 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:295 +#: build/serializers.py:294 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 -#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 -#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 -#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 -#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 +#: build/serializers.py:299 build/serializers.py:440 build/serializers.py:512 +#: order/serializers.py:564 order/serializers.py:672 order/serializers.py:1656 +#: part/serializers.py:1140 stock/serializers.py:100 stock/serializers.py:625 +#: stock/serializers.py:785 stock/serializers.py:881 stock/serializers.py:1321 +#: stock/serializers.py:1577 stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:1001 #: templates/js/translated/build.js:2372 @@ -1280,54 +1193,54 @@ msgstr "" msgid "Location" msgstr "" -#: build/serializers.py:301 +#: build/serializers.py:300 msgid "Stock location for build output" msgstr "" -#: build/serializers.py:315 +#: build/serializers.py:314 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:316 +#: build/serializers.py:315 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:331 +#: build/serializers.py:330 msgid "Serial numbers must be provided for trackable parts" msgstr "" -#: build/serializers.py:356 stock/api.py:1031 +#: build/serializers.py:355 stock/api.py:1041 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:403 build/serializers.py:465 build/serializers.py:554 +#: build/serializers.py:402 build/serializers.py:464 build/serializers.py:553 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:442 +#: build/serializers.py:441 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:448 +#: build/serializers.py:447 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:449 +#: build/serializers.py:448 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:454 +#: build/serializers.py:453 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:514 +#: build/serializers.py:513 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:520 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:952 -#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 -#: stock/serializers.py:930 stock/serializers.py:1469 +#: build/serializers.py:519 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2044 order/serializers.py:596 stock/admin.py:164 +#: stock/serializers.py:932 stock/serializers.py:1465 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 @@ -1339,188 +1252,188 @@ msgstr "" msgid "Status" msgstr "" -#: build/serializers.py:526 +#: build/serializers.py:525 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:527 +#: build/serializers.py:526 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:611 msgid "Consume Allocated Stock" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:612 msgid "Consume any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:619 +#: build/serializers.py:618 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:620 +#: build/serializers.py:619 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:646 msgid "Not permitted" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:647 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:648 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:679 +#: build/serializers.py:678 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:681 +#: build/serializers.py:680 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:691 +#: build/serializers.py:690 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:696 +#: build/serializers.py:695 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:697 +#: build/serializers.py:696 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:707 templates/js/translated/build.js:315 +#: build/serializers.py:706 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:712 order/serializers.py:301 order/serializers.py:1246 +#: build/serializers.py:711 order/serializers.py:300 order/serializers.py:1234 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:713 +#: build/serializers.py:712 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:723 templates/js/translated/build.js:319 +#: build/serializers.py:722 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:732 templates/js/translated/build.js:303 +#: build/serializers.py:731 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:770 +#: build/serializers.py:769 msgid "Build Line" msgstr "" -#: build/serializers.py:780 +#: build/serializers.py:779 msgid "Build output" msgstr "" -#: build/serializers.py:788 +#: build/serializers.py:787 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:824 +#: build/serializers.py:823 msgid "Build Line Item" msgstr "" -#: build/serializers.py:838 +#: build/serializers.py:837 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:853 stock/serializers.py:1194 +#: build/serializers.py:852 stock/serializers.py:1190 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:901 order/serializers.py:1237 +#: build/serializers.py:900 order/serializers.py:1225 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:907 +#: build/serializers.py:906 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:914 +#: build/serializers.py:913 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:938 order/serializers.py:1489 +#: build/serializers.py:937 order/serializers.py:1477 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:1001 +#: build/serializers.py:1000 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:1009 +#: build/serializers.py:1008 msgid "Exclude Location" msgstr "" -#: build/serializers.py:1010 +#: build/serializers.py:1009 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:1015 +#: build/serializers.py:1014 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:1016 +#: build/serializers.py:1015 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:1021 +#: build/serializers.py:1020 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:1022 +#: build/serializers.py:1021 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:1027 +#: build/serializers.py:1026 msgid "Optional Items" msgstr "" -#: build/serializers.py:1028 +#: build/serializers.py:1027 msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1050 +#: build/serializers.py:1049 msgid "Failed to start auto-allocation task" msgstr "" -#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 -#: stock/api.py:794 +#: build/serializers.py:1139 part/models.py:3953 part/models.py:4387 +#: stock/api.py:804 msgid "BOM Item" msgstr "" -#: build/serializers.py:1149 templates/js/translated/index.js:130 +#: build/serializers.py:1148 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:832 part/serializers.py:1506 +#: build/serializers.py:1153 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:828 part/serializers.py:1502 #: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 -#: templates/js/translated/build.js:2613 templates/js/translated/part.js:709 -#: templates/js/translated/part.js:2148 +#: templates/js/translated/build.js:2613 templates/js/translated/part.js:710 +#: templates/js/translated/part.js:2149 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1159 part/serializers.py:1508 +#: build/serializers.py:1158 part/serializers.py:1504 #: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 +#: build/serializers.py:1163 part/bom.py:172 part/serializers.py:1527 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1929 msgid "Available Stock" @@ -1544,7 +1457,7 @@ msgstr "" #: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 #: order/status_codes.py:44 order/status_codes.py:69 #: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:165 report/models.py:443 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 msgid "Complete" msgstr "" @@ -1674,11 +1587,11 @@ msgstr "" #: build/templates/build/build_base.html:160 #: build/templates/build/detail.html:138 order/models.py:309 -#: order/models.py:1343 order/templates/order/order_base.html:186 +#: order/models.py:1307 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:196 #: report/templates/report/inventree_build_order_report.html:125 -#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1831 #: templates/js/translated/purchase_order.js:1739 #: templates/js/translated/purchase_order.js:2147 #: templates/js/translated/return_order.js:346 @@ -1711,8 +1624,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 -#: order/models.py:1587 order/models.py:1701 order/models.py:1855 +#: build/templates/build/detail.html:101 order/api.py:1463 order/models.py:845 +#: order/models.py:1551 order/models.py:1665 order/models.py:1819 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_report.html:135 @@ -1762,7 +1675,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1479 +#: build/templates/build/detail.html:49 order/models.py:1443 #: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "" @@ -1775,7 +1688,7 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:163 +#: build/templates/build/detail.html:80 stock/admin.py:162 #: stock/templates/stock/item_base.html:162 #: templates/js/translated/build.js:1380 #: templates/js/translated/model_renderers.js:241 @@ -1894,11 +1807,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:436 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -1914,6 +1827,34 @@ msgstr "" msgid "Incomplete Outputs" msgstr "" +#: common/api.py:689 +msgid "Is Link" +msgstr "" + +#: common/api.py:697 +msgid "Is File" +msgstr "" + +#: common/api.py:739 +msgid "User does not have permission to delete this attachment" +msgstr "" + +#: common/currency.py:130 +msgid "Invalid currency code" +msgstr "" + +#: common/currency.py:132 +msgid "Duplicate currency code" +msgstr "" + +#: common/currency.py:137 +msgid "No valid currency codes provided" +msgstr "" + +#: common/currency.py:154 +msgid "No plugin" +msgstr "" + #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1952,1507 +1893,1512 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:71 +#: common/models.py:73 msgid "Updated" msgstr "" -#: common/models.py:72 +#: common/models.py:74 msgid "Timestamp of last update" msgstr "" -#: common/models.py:105 +#: common/models.py:107 msgid "Site URL is locked by configuration" msgstr "" -#: common/models.py:130 +#: common/models.py:132 msgid "Unique project code" msgstr "" -#: common/models.py:137 +#: common/models.py:139 msgid "Project description" msgstr "" -#: common/models.py:146 +#: common/models.py:148 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:766 +#: common/models.py:765 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:770 +#: common/models.py:769 msgid "Settings value" msgstr "" -#: common/models.py:822 +#: common/models.py:821 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:838 +#: common/models.py:837 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:846 +#: common/models.py:845 msgid "Value must be an integer value" msgstr "" -#: common/models.py:883 +#: common/models.py:882 msgid "Key string must be unique" msgstr "" -#: common/models.py:1115 +#: common/models.py:1114 msgid "No group" msgstr "" -#: common/models.py:1158 -msgid "An empty domain is not allowed." -msgstr "" - -#: common/models.py:1160 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "" - -#: common/models.py:1172 -msgid "No plugin" -msgstr "" - -#: common/models.py:1260 +#: common/models.py:1213 msgid "Restart required" msgstr "" -#: common/models.py:1262 +#: common/models.py:1215 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1269 +#: common/models.py:1222 msgid "Pending migrations" msgstr "" -#: common/models.py:1270 +#: common/models.py:1223 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1275 +#: common/models.py:1228 msgid "Server Instance Name" msgstr "" -#: common/models.py:1277 +#: common/models.py:1230 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1281 +#: common/models.py:1234 msgid "Use instance name" msgstr "" -#: common/models.py:1282 +#: common/models.py:1235 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1287 +#: common/models.py:1240 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1288 +#: common/models.py:1241 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1293 company/models.py:108 company/models.py:109 +#: common/models.py:1246 company/models.py:111 company/models.py:112 msgid "Company name" msgstr "" -#: common/models.py:1294 +#: common/models.py:1247 msgid "Internal company name" msgstr "" -#: common/models.py:1298 +#: common/models.py:1251 msgid "Base URL" msgstr "" -#: common/models.py:1299 +#: common/models.py:1252 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1305 +#: common/models.py:1258 msgid "Default Currency" msgstr "" -#: common/models.py:1306 +#: common/models.py:1259 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1312 +#: common/models.py:1265 +msgid "Supported Currencies" +msgstr "" + +#: common/models.py:1266 +msgid "List of supported currency codes" +msgstr "" + +#: common/models.py:1272 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1314 +#: common/models.py:1274 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1317 common/models.py:1373 common/models.py:1386 -#: common/models.py:1394 common/models.py:1403 common/models.py:1412 -#: common/models.py:1620 common/models.py:1642 common/models.py:1757 -#: common/models.py:2076 +#: common/models.py:1277 common/models.py:1333 common/models.py:1346 +#: common/models.py:1354 common/models.py:1363 common/models.py:1372 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:2046 msgid "days" msgstr "" -#: common/models.py:1321 +#: common/models.py:1281 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1322 +#: common/models.py:1282 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1327 +#: common/models.py:1287 msgid "Download from URL" msgstr "" -#: common/models.py:1329 +#: common/models.py:1289 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1335 +#: common/models.py:1295 msgid "Download Size Limit" msgstr "" -#: common/models.py:1336 +#: common/models.py:1296 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1342 +#: common/models.py:1302 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1344 +#: common/models.py:1304 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:1349 +#: common/models.py:1309 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1350 +#: common/models.py:1310 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1355 +#: common/models.py:1315 msgid "Require confirm" msgstr "" -#: common/models.py:1356 +#: common/models.py:1316 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1361 +#: common/models.py:1321 msgid "Tree Depth" msgstr "" -#: common/models.py:1363 +#: common/models.py:1323 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1369 +#: common/models.py:1329 msgid "Update Check Interval" msgstr "" -#: common/models.py:1370 +#: common/models.py:1330 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1376 +#: common/models.py:1336 msgid "Automatic Backup" msgstr "" -#: common/models.py:1377 +#: common/models.py:1337 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1382 +#: common/models.py:1342 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1383 +#: common/models.py:1343 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1389 +#: common/models.py:1349 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1391 +#: common/models.py:1351 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1398 +#: common/models.py:1358 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1400 +#: common/models.py:1360 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1407 +#: common/models.py:1367 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1409 +#: common/models.py:1369 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1416 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1376 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1417 +#: common/models.py:1377 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1422 +#: common/models.py:1382 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1423 +#: common/models.py:1383 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1429 +#: common/models.py:1389 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1430 +#: common/models.py:1390 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1435 +#: common/models.py:1395 msgid "Part Revisions" msgstr "" -#: common/models.py:1436 +#: common/models.py:1396 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1441 +#: common/models.py:1401 msgid "Allow Deletion from Assembly" msgstr "" -#: common/models.py:1442 +#: common/models.py:1402 msgid "Allow deletion of parts which are used in an assembly" msgstr "" -#: common/models.py:1447 +#: common/models.py:1407 msgid "IPN Regex" msgstr "" -#: common/models.py:1448 +#: common/models.py:1408 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1451 +#: common/models.py:1411 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1452 +#: common/models.py:1412 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1457 +#: common/models.py:1417 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1458 +#: common/models.py:1418 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1463 +#: common/models.py:1423 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1464 +#: common/models.py:1424 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1469 +#: common/models.py:1429 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1470 +#: common/models.py:1430 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1475 +#: common/models.py:1435 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1476 +#: common/models.py:1436 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1481 +#: common/models.py:1441 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1482 +#: common/models.py:1442 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1487 part/admin.py:108 part/models.py:3815 -#: report/models.py:293 report/models.py:360 report/serializers.py:90 -#: report/serializers.py:131 stock/serializers.py:228 +#: common/models.py:1447 part/admin.py:108 part/models.py:3795 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:227 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1488 +#: common/models.py:1448 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 +#: common/models.py:1453 part/admin.py:91 part/admin.py:425 part/models.py:1052 #: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" msgstr "" -#: common/models.py:1494 +#: common/models.py:1454 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1499 part/admin.py:95 part/models.py:1065 +#: common/models.py:1459 part/admin.py:95 part/models.py:1058 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1500 +#: common/models.py:1460 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1505 part/admin.py:100 part/models.py:1077 +#: common/models.py:1465 part/admin.py:100 part/models.py:1070 msgid "Purchaseable" msgstr "" -#: common/models.py:1506 +#: common/models.py:1466 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1511 part/admin.py:104 part/models.py:1083 +#: common/models.py:1471 part/admin.py:104 part/models.py:1076 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1512 +#: common/models.py:1472 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1517 part/admin.py:113 part/models.py:1071 +#: common/models.py:1477 part/admin.py:113 part/models.py:1064 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" msgstr "" -#: common/models.py:1518 +#: common/models.py:1478 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1523 part/admin.py:117 part/models.py:1093 +#: common/models.py:1483 part/admin.py:117 part/models.py:1086 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" msgstr "" -#: common/models.py:1524 +#: common/models.py:1484 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1529 +#: common/models.py:1489 msgid "Show Import in Views" msgstr "" -#: common/models.py:1530 +#: common/models.py:1490 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1535 +#: common/models.py:1495 msgid "Show related parts" msgstr "" -#: common/models.py:1536 +#: common/models.py:1496 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1541 +#: common/models.py:1501 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1542 +#: common/models.py:1502 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1547 templates/js/translated/part.js:107 +#: common/models.py:1507 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1549 +#: common/models.py:1509 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1555 +#: common/models.py:1515 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1556 +#: common/models.py:1516 msgid "Format to display the part name" msgstr "" -#: common/models.py:1562 +#: common/models.py:1522 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1563 +#: common/models.py:1523 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1567 +#: common/models.py:1527 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1569 +#: common/models.py:1529 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1575 +#: common/models.py:1535 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1577 +#: common/models.py:1537 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1583 +#: common/models.py:1548 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1585 +#: common/models.py:1550 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1591 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1593 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1599 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1601 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1607 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1609 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1615 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1617 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1630 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1632 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1638 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1640 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1647 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1648 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1653 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1655 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1661 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1662 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1667 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1669 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1675 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1676 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1681 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1682 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1687 +#: common/models.py:1657 msgid "Log Report Errors" msgstr "" -#: common/models.py:1688 +#: common/models.py:1658 msgid "Log errors which occur when generating reports" msgstr "" -#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:301 +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:302 msgid "Page Size" msgstr "" -#: common/models.py:1694 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1699 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1700 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1705 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1707 +#: common/models.py:1677 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1713 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1714 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1719 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1720 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1725 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1727 +#: common/models.py:1697 msgid "Determines default behavior when a stock item is depleted" msgstr "" -#: common/models.py:1733 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1735 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1740 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1741 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1746 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1747 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1752 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1754 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1761 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1762 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1767 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1768 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1773 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1774 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1778 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1779 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1784 +#: common/models.py:1754 msgid "Check BOM when installing items" msgstr "" -#: common/models.py:1786 +#: common/models.py:1756 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "" -#: common/models.py:1792 +#: common/models.py:1762 msgid "Allow Out of Stock Transfer" msgstr "" -#: common/models.py:1794 +#: common/models.py:1764 msgid "Allow stock items which are not in stock to be transferred between stock locations" msgstr "" -#: common/models.py:1800 +#: common/models.py:1770 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1802 +#: common/models.py:1772 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1808 common/models.py:1836 common/models.py:1858 -#: common/models.py:1894 +#: common/models.py:1778 common/models.py:1806 common/models.py:1828 +#: common/models.py:1864 msgid "Require Responsible Owner" msgstr "" -#: common/models.py:1809 common/models.py:1837 common/models.py:1859 -#: common/models.py:1895 +#: common/models.py:1779 common/models.py:1807 common/models.py:1829 +#: common/models.py:1865 msgid "A responsible owner must be assigned to each order" msgstr "" -#: common/models.py:1814 +#: common/models.py:1784 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1816 +#: common/models.py:1786 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:1822 +#: common/models.py:1792 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1823 +#: common/models.py:1793 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1828 +#: common/models.py:1798 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1830 +#: common/models.py:1800 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1842 +#: common/models.py:1812 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1844 +#: common/models.py:1814 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1850 +#: common/models.py:1820 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1852 +#: common/models.py:1822 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1864 +#: common/models.py:1834 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1865 +#: common/models.py:1835 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1870 +#: common/models.py:1840 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1872 +#: common/models.py:1842 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1878 +#: common/models.py:1848 msgid "Mark Shipped Orders as Complete" msgstr "" -#: common/models.py:1880 +#: common/models.py:1850 msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" msgstr "" -#: common/models.py:1886 +#: common/models.py:1856 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1888 +#: common/models.py:1858 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1900 +#: common/models.py:1870 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1902 +#: common/models.py:1872 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1908 +#: common/models.py:1878 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1910 +#: common/models.py:1880 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1917 +#: common/models.py:1887 msgid "Enable password forgot" msgstr "" -#: common/models.py:1918 +#: common/models.py:1888 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1923 +#: common/models.py:1893 msgid "Enable registration" msgstr "" -#: common/models.py:1924 +#: common/models.py:1894 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1929 +#: common/models.py:1899 msgid "Enable SSO" msgstr "" -#: common/models.py:1930 +#: common/models.py:1900 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1935 +#: common/models.py:1905 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1937 +#: common/models.py:1907 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1943 +#: common/models.py:1913 msgid "Email required" msgstr "" -#: common/models.py:1944 +#: common/models.py:1914 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1949 +#: common/models.py:1919 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1951 +#: common/models.py:1921 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1957 +#: common/models.py:1927 msgid "Mail twice" msgstr "" -#: common/models.py:1958 +#: common/models.py:1928 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1963 +#: common/models.py:1933 msgid "Password twice" msgstr "" -#: common/models.py:1964 +#: common/models.py:1934 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1969 +#: common/models.py:1939 msgid "Allowed domains" msgstr "" -#: common/models.py:1971 +#: common/models.py:1941 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1977 +#: common/models.py:1947 msgid "Group on signup" msgstr "" -#: common/models.py:1978 +#: common/models.py:1948 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1983 +#: common/models.py:1953 msgid "Enforce MFA" msgstr "" -#: common/models.py:1984 +#: common/models.py:1954 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1989 +#: common/models.py:1959 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1991 +#: common/models.py:1961 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1999 +#: common/models.py:1969 msgid "Check for plugin updates" msgstr "" -#: common/models.py:2000 +#: common/models.py:1970 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:2006 +#: common/models.py:1976 msgid "Enable URL integration" msgstr "" -#: common/models.py:2007 +#: common/models.py:1977 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:2013 +#: common/models.py:1983 msgid "Enable navigation integration" msgstr "" -#: common/models.py:2014 +#: common/models.py:1984 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:2020 +#: common/models.py:1990 msgid "Enable app integration" msgstr "" -#: common/models.py:2021 +#: common/models.py:1991 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:2027 +#: common/models.py:1997 msgid "Enable schedule integration" msgstr "" -#: common/models.py:2028 +#: common/models.py:1998 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:2034 +#: common/models.py:2004 msgid "Enable event integration" msgstr "" -#: common/models.py:2035 +#: common/models.py:2005 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:2041 +#: common/models.py:2011 msgid "Enable project codes" msgstr "" -#: common/models.py:2042 +#: common/models.py:2012 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:2047 +#: common/models.py:2017 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:2049 +#: common/models.py:2019 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:2055 +#: common/models.py:2025 msgid "Exclude External Locations" msgstr "" -#: common/models.py:2057 +#: common/models.py:2027 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:2063 +#: common/models.py:2033 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:2065 +#: common/models.py:2035 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:2071 +#: common/models.py:2041 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:2073 +#: common/models.py:2043 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:2080 +#: common/models.py:2050 msgid "Display Users full names" msgstr "" -#: common/models.py:2081 +#: common/models.py:2051 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:2086 +#: common/models.py:2056 msgid "Enable Test Station Data" msgstr "" -#: common/models.py:2087 +#: common/models.py:2057 msgid "Enable test station data collection for test results" msgstr "" -#: common/models.py:2099 common/models.py:2509 +#: common/models.py:2069 common/models.py:2479 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2142 +#: common/models.py:2112 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2144 +#: common/models.py:2114 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2150 +#: common/models.py:2120 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2151 +#: common/models.py:2121 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2156 +#: common/models.py:2126 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2157 +#: common/models.py:2127 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2162 +#: common/models.py:2132 msgid "Show latest parts" msgstr "" -#: common/models.py:2163 +#: common/models.py:2133 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2168 +#: common/models.py:2138 msgid "Show invalid BOMs" msgstr "" -#: common/models.py:2169 +#: common/models.py:2139 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2174 +#: common/models.py:2144 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2175 +#: common/models.py:2145 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2180 +#: common/models.py:2150 msgid "Show low stock" msgstr "" -#: common/models.py:2181 +#: common/models.py:2151 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2186 +#: common/models.py:2156 msgid "Show depleted stock" msgstr "" -#: common/models.py:2187 +#: common/models.py:2157 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2192 +#: common/models.py:2162 msgid "Show needed stock" msgstr "" -#: common/models.py:2193 +#: common/models.py:2163 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2198 +#: common/models.py:2168 msgid "Show expired stock" msgstr "" -#: common/models.py:2199 +#: common/models.py:2169 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2204 +#: common/models.py:2174 msgid "Show stale stock" msgstr "" -#: common/models.py:2205 +#: common/models.py:2175 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2210 +#: common/models.py:2180 msgid "Show pending builds" msgstr "" -#: common/models.py:2211 +#: common/models.py:2181 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2216 +#: common/models.py:2186 msgid "Show overdue builds" msgstr "" -#: common/models.py:2217 +#: common/models.py:2187 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2222 +#: common/models.py:2192 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2223 +#: common/models.py:2193 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2228 +#: common/models.py:2198 msgid "Show overdue POs" msgstr "" -#: common/models.py:2229 +#: common/models.py:2199 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2234 +#: common/models.py:2204 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2235 +#: common/models.py:2205 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2240 +#: common/models.py:2210 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2241 +#: common/models.py:2211 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2246 +#: common/models.py:2216 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2247 +#: common/models.py:2217 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2252 +#: common/models.py:2222 msgid "Show News" msgstr "" -#: common/models.py:2253 +#: common/models.py:2223 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2258 +#: common/models.py:2228 msgid "Inline label display" msgstr "" -#: common/models.py:2260 +#: common/models.py:2230 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2266 +#: common/models.py:2236 msgid "Default label printer" msgstr "" -#: common/models.py:2268 +#: common/models.py:2238 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2274 +#: common/models.py:2244 msgid "Inline report display" msgstr "" -#: common/models.py:2276 +#: common/models.py:2246 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2282 +#: common/models.py:2252 msgid "Search Parts" msgstr "" -#: common/models.py:2283 +#: common/models.py:2253 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2288 +#: common/models.py:2258 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2289 +#: common/models.py:2259 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2294 +#: common/models.py:2264 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2295 +#: common/models.py:2265 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2300 +#: common/models.py:2270 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2301 +#: common/models.py:2271 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2306 +#: common/models.py:2276 msgid "Search Categories" msgstr "" -#: common/models.py:2307 +#: common/models.py:2277 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2312 +#: common/models.py:2282 msgid "Search Stock" msgstr "" -#: common/models.py:2313 +#: common/models.py:2283 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2318 +#: common/models.py:2288 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2320 +#: common/models.py:2290 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2326 +#: common/models.py:2296 msgid "Search Locations" msgstr "" -#: common/models.py:2327 +#: common/models.py:2297 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2332 +#: common/models.py:2302 msgid "Search Companies" msgstr "" -#: common/models.py:2333 +#: common/models.py:2303 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2338 +#: common/models.py:2308 msgid "Search Build Orders" msgstr "" -#: common/models.py:2339 +#: common/models.py:2309 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2344 +#: common/models.py:2314 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2345 +#: common/models.py:2315 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2350 +#: common/models.py:2320 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2352 +#: common/models.py:2322 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2358 +#: common/models.py:2328 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2359 +#: common/models.py:2329 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2364 +#: common/models.py:2334 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2366 +#: common/models.py:2336 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2372 +#: common/models.py:2342 msgid "Search Return Orders" msgstr "" -#: common/models.py:2373 +#: common/models.py:2343 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2378 +#: common/models.py:2348 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2380 +#: common/models.py:2350 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2386 +#: common/models.py:2356 msgid "Search Preview Results" msgstr "" -#: common/models.py:2388 +#: common/models.py:2358 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2394 +#: common/models.py:2364 msgid "Regex Search" msgstr "" -#: common/models.py:2395 +#: common/models.py:2365 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2400 +#: common/models.py:2370 msgid "Whole Word Search" msgstr "" -#: common/models.py:2401 +#: common/models.py:2371 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2406 +#: common/models.py:2376 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2407 +#: common/models.py:2377 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2412 +#: common/models.py:2382 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2413 +#: common/models.py:2383 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2418 +#: common/models.py:2388 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2419 +#: common/models.py:2389 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2424 +#: common/models.py:2394 msgid "Date Format" msgstr "" -#: common/models.py:2425 +#: common/models.py:2395 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2438 part/templates/part/detail.html:41 +#: common/models.py:2408 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2439 +#: common/models.py:2409 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2444 part/templates/part/detail.html:62 +#: common/models.py:2414 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2446 +#: common/models.py:2416 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2452 +#: common/models.py:2422 msgid "Table String Length" msgstr "" -#: common/models.py:2454 +#: common/models.py:2424 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2460 +#: common/models.py:2430 msgid "Default part label template" msgstr "" -#: common/models.py:2461 +#: common/models.py:2431 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2466 +#: common/models.py:2436 msgid "Default stock item template" msgstr "" -#: common/models.py:2468 +#: common/models.py:2438 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2474 +#: common/models.py:2444 msgid "Default stock location label template" msgstr "" -#: common/models.py:2476 +#: common/models.py:2446 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2482 +#: common/models.py:2452 msgid "Default build line label template" msgstr "" -#: common/models.py:2484 +#: common/models.py:2454 msgid "The build line label template to be automatically selected" msgstr "" -#: common/models.py:2490 +#: common/models.py:2460 msgid "Receive error reports" msgstr "" -#: common/models.py:2491 +#: common/models.py:2461 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2496 +#: common/models.py:2466 msgid "Last used printing machines" msgstr "" -#: common/models.py:2497 +#: common/models.py:2467 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2540 +#: common/models.py:2487 common/models.py:2488 common/models.py:2636 +#: common/models.py:2637 common/models.py:2882 common/models.py:2883 +#: common/models.py:3193 common/models.py:3194 part/models.py:3193 +#: part/models.py:3280 part/models.py:3353 part/models.py:3381 +#: plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "" + +#: common/models.py:2510 msgid "Price break quantity" msgstr "" -#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1382 order/models.py:2301 -#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 +#: common/models.py:2517 company/serializers.py:472 order/admin.py:42 +#: order/models.py:1346 order/models.py:2265 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1886 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:740 msgid "Price" msgstr "" -#: common/models.py:2548 +#: common/models.py:2518 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2719 common/models.py:2904 +#: common/models.py:2613 common/models.py:2798 msgid "Endpoint" msgstr "" -#: common/models.py:2720 +#: common/models.py:2614 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2730 +#: common/models.py:2624 msgid "Name for this webhook" msgstr "" -#: common/models.py:2734 company/models.py:160 company/models.py:814 -#: machine/models.py:39 part/admin.py:88 part/models.py:1088 -#: plugin/models.py:65 templates/js/translated/company.js:523 +#: common/models.py:2628 company/models.py:163 company/models.py:782 +#: machine/models.py:39 part/admin.py:88 part/models.py:1081 +#: plugin/models.py:66 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3462,101 +3408,118 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2734 +#: common/models.py:2628 msgid "Is this webhook active" msgstr "" -#: common/models.py:2750 users/models.py:159 +#: common/models.py:2644 users/models.py:159 msgid "Token" msgstr "" -#: common/models.py:2751 +#: common/models.py:2645 msgid "Token for access" msgstr "" -#: common/models.py:2759 +#: common/models.py:2653 msgid "Secret" msgstr "" -#: common/models.py:2760 +#: common/models.py:2654 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2868 +#: common/models.py:2762 msgid "Message ID" msgstr "" -#: common/models.py:2869 +#: common/models.py:2763 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2877 +#: common/models.py:2771 msgid "Host" msgstr "" -#: common/models.py:2878 +#: common/models.py:2772 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2886 +#: common/models.py:2780 msgid "Header" msgstr "" -#: common/models.py:2887 +#: common/models.py:2781 msgid "Header of this message" msgstr "" -#: common/models.py:2894 +#: common/models.py:2788 msgid "Body" msgstr "" -#: common/models.py:2895 +#: common/models.py:2789 msgid "Body of this message" msgstr "" -#: common/models.py:2905 +#: common/models.py:2799 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2910 +#: common/models.py:2804 msgid "Worked on" msgstr "" -#: common/models.py:2911 +#: common/models.py:2805 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:3037 +#: common/models.py:2931 msgid "Id" msgstr "" -#: common/models.py:3039 templates/js/translated/company.js:965 +#: common/models.py:2933 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:3043 templates/js/translated/news.js:60 +#: common/models.py:2935 common/models.py:3177 company/models.py:149 +#: company/models.py:440 company/models.py:500 company/models.py:799 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +#: part/admin.py:55 part/models.py:955 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "" + +#: common/models.py:2937 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:3045 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2939 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:3047 templates/js/translated/news.js:52 +#: common/models.py:2941 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Read" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Was this news item read?" msgstr "" -#: common/models.py:3067 company/models.py:156 part/models.py:972 +#: common/models.py:2961 company/models.py:159 part/models.py:965 #: 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.html:35 @@ -3566,34 +3529,89 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:3067 +#: common/models.py:2961 msgid "Image file" msgstr "" -#: common/models.py:3109 +#: common/models.py:2973 common/models.py:3161 +msgid "Target model type for this image" +msgstr "" + +#: common/models.py:2977 +msgid "Target model ID for this image" +msgstr "" + +#: common/models.py:3018 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3128 +#: common/models.py:3037 msgid "Unit name" msgstr "" -#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3044 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3136 +#: common/models.py:3045 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3052 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3144 +#: common/models.py:3053 msgid "Unit definition" msgstr "" +#: common/models.py:3111 common/models.py:3168 stock/models.py:2426 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "" + +#: common/models.py:3123 +msgid "Missing file" +msgstr "" + +#: common/models.py:3124 +msgid "Missing external link" +msgstr "" + +#: common/models.py:3169 +msgid "Select file to attach" +msgstr "" + +#: common/models.py:3184 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "" + +#: common/models.py:3185 +msgid "Attachment comment" +msgstr "" + +#: common/models.py:3201 +msgid "Upload date" +msgstr "" + +#: common/models.py:3202 +msgid "Date the file was uploaded" +msgstr "" + +#: common/models.py:3206 +msgid "File size" +msgstr "" + +#: common/models.py:3206 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3244 common/serializers.py:553 +msgid "Invalid model type specified for attachment" +msgstr "" + #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" @@ -3628,66 +3646,103 @@ msgstr "" msgid "Error raised by plugin" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:371 msgid "Is Running" msgstr "" -#: common/serializers.py:372 +#: common/serializers.py:377 msgid "Pending Tasks" msgstr "" -#: common/serializers.py:378 +#: common/serializers.py:383 msgid "Scheduled Tasks" msgstr "" -#: common/serializers.py:384 +#: common/serializers.py:389 msgid "Failed Tasks" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Task ID" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Unique task ID" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock time" msgstr "" -#: common/serializers.py:403 +#: common/serializers.py:408 msgid "Task name" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function name" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Arguments" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Task arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Keyword Arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Task keyword arguments" msgstr "" +#: common/serializers.py:525 +msgid "Filename" +msgstr "" + +#: common/serializers.py:532 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: common/serializers.py:559 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "" + +#: common/validators.py:33 +msgid "No attachment model type provided" +msgstr "" + +#: common/validators.py:39 +msgid "Invalid attachment model type" +msgstr "" + +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "" + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +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 @@ -3726,210 +3781,222 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/api.py:164 +#: company/api.py:144 msgid "Part is Active" msgstr "" -#: company/api.py:168 +#: company/api.py:148 msgid "Manufacturer is Active" msgstr "" -#: company/api.py:317 +#: company/api.py:281 msgid "Supplier Part is Active" msgstr "" -#: company/api.py:321 +#: company/api.py:285 msgid "Internal Part is Active" msgstr "" -#: company/api.py:325 +#: company/api.py:289 msgid "Supplier is Active" msgstr "" -#: company/models.py:114 +#: company/models.py:100 company/models.py:365 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:822 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "" + +#: company/models.py:117 msgid "Company description" msgstr "" -#: company/models.py:115 +#: company/models.py:118 msgid "Description of the company" msgstr "" -#: company/models.py:120 company/templates/company/company_base.html:106 +#: company/models.py:123 company/templates/company/company_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:532 msgid "Website" msgstr "" -#: company/models.py:120 +#: company/models.py:123 msgid "Company website URL" msgstr "" -#: company/models.py:125 +#: company/models.py:128 msgid "Phone number" msgstr "" -#: company/models.py:127 +#: company/models.py:130 msgid "Contact phone number" msgstr "" -#: company/models.py:134 +#: company/models.py:137 msgid "Contact email address" msgstr "" -#: company/models.py:139 company/templates/company/company_base.html:145 +#: company/models.py:142 company/templates/company/company_base.html:145 #: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "" -#: company/models.py:141 +#: company/models.py:144 msgid "Point of contact" msgstr "" -#: company/models.py:147 +#: company/models.py:150 msgid "Link to external company information" msgstr "" -#: company/models.py:160 +#: company/models.py:163 msgid "Is this company active?" msgstr "" -#: company/models.py:165 +#: company/models.py:168 msgid "is customer" msgstr "" -#: company/models.py:166 +#: company/models.py:169 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:171 +#: company/models.py:174 msgid "is supplier" msgstr "" -#: company/models.py:172 +#: company/models.py:175 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:177 +#: company/models.py:180 msgid "is manufacturer" msgstr "" -#: company/models.py:178 +#: company/models.py:181 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:186 +#: company/models.py:189 msgid "Default currency used for this company" msgstr "" -#: company/models.py:273 company/models.py:382 -#: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:812 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 -msgid "Company" -msgstr "" - -#: company/models.py:383 +#: company/models.py:366 msgid "Select company" msgstr "" -#: company/models.py:388 +#: company/models.py:371 msgid "Address title" msgstr "" -#: company/models.py:389 +#: company/models.py:372 msgid "Title describing the address entry" msgstr "" -#: company/models.py:395 +#: company/models.py:378 msgid "Primary address" msgstr "" -#: company/models.py:396 +#: company/models.py:379 msgid "Set as primary address" msgstr "" -#: company/models.py:401 templates/js/translated/company.js:914 +#: company/models.py:384 templates/js/translated/company.js:914 #: templates/js/translated/company.js:971 msgid "Line 1" msgstr "" -#: company/models.py:402 +#: company/models.py:385 msgid "Address line 1" msgstr "" -#: company/models.py:408 templates/js/translated/company.js:915 +#: company/models.py:391 templates/js/translated/company.js:915 #: templates/js/translated/company.js:977 msgid "Line 2" msgstr "" -#: company/models.py:409 +#: company/models.py:392 msgid "Address line 2" msgstr "" -#: company/models.py:415 company/models.py:416 +#: company/models.py:398 company/models.py:399 #: templates/js/translated/company.js:983 msgid "Postal code" msgstr "" -#: company/models.py:422 +#: company/models.py:405 msgid "City/Region" msgstr "" -#: company/models.py:423 +#: company/models.py:406 msgid "Postal code city/region" msgstr "" -#: company/models.py:429 +#: company/models.py:412 msgid "State/Province" msgstr "" -#: company/models.py:430 +#: company/models.py:413 msgid "State or province" msgstr "" -#: company/models.py:436 templates/js/translated/company.js:1001 +#: company/models.py:419 templates/js/translated/company.js:1001 msgid "Country" msgstr "" -#: company/models.py:437 +#: company/models.py:420 msgid "Address country" msgstr "" -#: company/models.py:443 +#: company/models.py:426 msgid "Courier shipping notes" msgstr "" -#: company/models.py:444 +#: company/models.py:427 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:450 +#: company/models.py:433 msgid "Internal shipping notes" msgstr "" -#: company/models.py:451 +#: company/models.py:434 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:458 +#: company/models.py:441 msgid "Link to address information (external)" msgstr "" -#: company/models.py:489 company/models.py:792 stock/models.py:768 -#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 +#: company/models.py:463 company/models.py:574 company/models.py:792 +#: 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:475 company/models.py:760 stock/models.py:766 +#: stock/serializers.py:422 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:491 company/models.py:794 +#: company/models.py:477 company/models.py:762 msgid "Select part" msgstr "" -#: company/models.py:500 company/templates/company/company_base.html:82 +#: company/models.py:486 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:530 +#: company/templates/company/supplier_part.html:145 part/serializers.py:525 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -3939,152 +4006,154 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:501 +#: company/models.py:487 msgid "Select manufacturer" msgstr "" -#: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:540 +#: company/models.py:493 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:535 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 -#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1801 #: templates/js/translated/purchase_order.js:1851 #: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "" -#: company/models.py:508 +#: company/models.py:494 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:515 +#: company/models.py:501 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:524 +#: company/models.py:510 msgid "Manufacturer part description" msgstr "" -#: company/models.py:581 company/models.py:608 company/models.py:824 -#: 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:615 +#: company/models.py:581 msgid "Parameter name" msgstr "" -#: company/models.py:621 report/templates/report/inventree_test_report.html:104 -#: stock/models.py:2429 templates/js/translated/company.js:1166 -#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 +#: company/models.py:587 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2418 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1493 #: templates/js/translated/stock.js:1522 msgid "Value" msgstr "" -#: company/models.py:622 +#: company/models.py:588 msgid "Parameter value" msgstr "" -#: company/models.py:629 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1052 part/models.py:3666 +#: company/models.py:595 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1045 part/models.py:3646 #: part/templates/part/part_base.html:284 -#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1512 +#: templates/js/translated/part.js:1616 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:630 +#: company/models.py:596 msgid "Parameter units" msgstr "" -#: company/models.py:732 +#: company/models.py:648 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:777 stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "" + +#: company/models.py:700 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:739 +#: company/models.py:707 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:753 +#: company/models.py:721 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/models.py:770 company/templates/company/company_base.html:87 #: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:514 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:509 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:511 -#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1769 #: templates/js/translated/pricing.js:498 #: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "" -#: company/models.py:803 +#: company/models.py:771 msgid "Select supplier" msgstr "" -#: company/models.py:809 part/serializers.py:525 +#: company/models.py:777 part/serializers.py:520 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:815 +#: company/models.py:783 msgid "Is this supplier part active?" msgstr "" -#: company/models.py:825 +#: company/models.py:793 msgid "Select manufacturer part" msgstr "" -#: company/models.py:832 +#: company/models.py:800 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:841 +#: company/models.py:809 msgid "Supplier part description" msgstr "" -#: company/models.py:848 company/templates/company/supplier_part.html:187 -#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 +#: company/models.py:816 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4093 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_purchase_order_report.html:32 #: report/templates/report/inventree_return_order_report.html:27 #: report/templates/report/inventree_sales_order_report.html:32 #: report/templates/report/inventree_stock_location_report.html:105 -#: stock/serializers.py:708 +#: stock/serializers.py:710 msgid "Note" msgstr "" -#: company/models.py:857 part/models.py:2010 +#: company/models.py:825 part/models.py:2003 msgid "base cost" msgstr "" -#: company/models.py:858 part/models.py:2011 +#: company/models.py:826 part/models.py:2004 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:865 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 +#: company/models.py:833 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:797 stock/serializers.py:1475 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 #: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "" -#: company/models.py:866 +#: company/models.py:834 msgid "Part packaging" msgstr "" -#: company/models.py:871 templates/js/translated/company.js:1651 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: company/models.py:839 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:311 #: templates/js/translated/purchase_order.js:841 #: templates/js/translated/purchase_order.js:1103 @@ -4093,35 +4162,35 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:873 +#: company/models.py:841 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:892 part/models.py:2017 +#: company/models.py:860 part/models.py:2010 msgid "multiple" msgstr "" -#: company/models.py:893 +#: company/models.py:861 msgid "Order multiple" msgstr "" -#: company/models.py:905 +#: company/models.py:873 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:911 +#: company/models.py:879 msgid "Availability Updated" msgstr "" -#: company/models.py:912 +#: company/models.py:880 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:163 +#: company/serializers.py:161 msgid "Default currency used for this supplier" msgstr "" -#: company/serializers.py:381 part/admin.py:126 +#: company/serializers.py:357 part/admin.py:126 #: part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1689 #: templates/js/translated/table_filters.js:355 @@ -4133,7 +4202,7 @@ msgstr "" #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 #: templates/js/translated/model_renderers.js:312 -#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +#: templates/js/translated/part.js:815 templates/js/translated/part.js:1219 msgid "Inactive" msgstr "" @@ -4172,7 +4241,7 @@ msgstr "" #: report/templates/report/inventree_purchase_order_report.html:40 #: report/templates/report/inventree_sales_order_report.html:40 #: report/templates/report/inventree_test_report.html:84 -#: report/templates/report/inventree_test_report.html:163 +#: report/templates/report/inventree_test_report.html:162 msgid "Part image" msgstr "" @@ -4191,10 +4260,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:92 order/models.py:940 -#: order/models.py:2068 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:148 stock/models.py:821 -#: stock/models.py:822 stock/serializers.py:1229 +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2032 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:819 +#: stock/models.py:820 stock/serializers.py:1225 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 @@ -4405,7 +4474,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:836 +#: part/admin.py:122 part/serializers.py:832 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4425,8 +4494,8 @@ msgstr "" msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:206 -#: templates/js/translated/part.js:1422 +#: company/templates/company/manufacturer_part.html:196 +#: templates/js/translated/part.js:1423 msgid "Add Parameter" msgstr "" @@ -4454,15 +4523,6 @@ msgstr "" msgid "Addresses" msgstr "" -#: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:452 -#: stock/models.py:779 stock/templates/stock/item_base.html:233 -#: templates/js/translated/company.js:1600 -#: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2280 -msgid "Supplier Part" -msgstr "" - #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1526 msgid "Supplier part actions" @@ -4505,8 +4565,8 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:524 -#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: part/bom.py:311 part/serializers.py:519 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1787 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1850 #: templates/js/translated/purchase_order.js:2028 @@ -4518,12 +4578,12 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:207 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" @@ -4555,15 +4615,15 @@ msgid "Update Part Availability" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:835 part/stocktake.py:223 +#: part/serializers.py:831 part/stocktake.py:224 #: part/templates/part/category.html:183 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:916 stock/serializers.py:1080 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:918 stock/serializers.py:1091 #: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:191 #: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1061 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:206 msgid "Stock Items" @@ -4590,10 +4650,6 @@ msgstr "" 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 "" @@ -4614,7 +4670,7 @@ msgstr "" msgid "Connected" msgstr "" -#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: machine/machine_types/label_printer.py:235 order/api.py:1467 #: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "" @@ -4703,7 +4759,7 @@ msgstr "" msgid "Config type" msgstr "" -#: order/admin.py:30 order/models.py:89 +#: order/admin.py:30 order/models.py:90 #: report/templates/report/inventree_purchase_order_report.html:31 #: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 @@ -4712,30 +4768,30 @@ msgstr "" msgid "Total Price" msgstr "" -#: order/api.py:161 order/serializers.py:91 +#: order/api.py:157 order/serializers.py:90 #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "" -#: order/api.py:165 templates/js/translated/table_filters.js:194 +#: order/api.py:161 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "" -#: order/api.py:240 +#: order/api.py:236 msgid "No matching purchase order found" msgstr "" -#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 -#: order/models.py:1586 order/models.py:1700 order/models.py:1854 -#: order/models.py:2267 order/models.py:2318 +#: order/api.py:435 order/api.py:801 order/models.py:1395 order/models.py:1504 +#: order/models.py:1550 order/models.py:1664 order/models.py:1818 +#: order/models.py:2231 order/models.py:2282 #: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "" -#: order/api.py:441 order/api.py:838 +#: order/api.py:439 order/api.py:822 msgid "Order Complete" msgstr "" @@ -4743,13 +4799,13 @@ msgstr "" msgid "Order Pending" msgstr "" -#: order/api.py:1509 order/models.py:380 order/models.py:1432 -#: order/models.py:1541 order/templates/order/order_base.html:9 +#: order/api.py:1461 order/models.py:380 order/models.py:1396 +#: order/models.py:1505 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_purchase_order_report.html:14 -#: stock/serializers.py:119 stock/templates/stock/item_base.html:176 +#: stock/serializers.py:118 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/part.js:1746 templates/js/translated/pricing.js:804 #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1673 @@ -4757,8 +4813,8 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1513 order/models.py:2017 order/models.py:2268 -#: order/models.py:2319 order/templates/order/return_order_base.html:9 +#: order/api.py:1465 order/models.py:1981 order/models.py:2232 +#: order/models.py:2283 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report.html:13 #: templates/js/translated/return_order.js:280 @@ -4766,15 +4822,15 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/models.py:90 +#: order/models.py:91 msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:71 +#: order/models.py:96 order/serializers.py:70 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:72 +#: order/models.py:99 order/serializers.py:71 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -4790,7 +4846,7 @@ msgstr "" msgid "Select project code for this order" msgstr "" -#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 msgid "Link to external page" msgstr "" @@ -4814,11 +4870,11 @@ msgstr "" msgid "Company address for this order" msgstr "" -#: order/models.py:464 order/models.py:929 +#: order/models.py:464 order/models.py:927 msgid "Order reference" msgstr "" -#: order/models.py:472 order/models.py:953 +#: order/models.py:472 order/models.py:951 msgid "Purchase order status" msgstr "" @@ -4839,15 +4895,15 @@ msgstr "" msgid "received by" msgstr "" -#: order/models.py:514 order/models.py:2094 +#: order/models.py:514 order/models.py:2058 msgid "Issue Date" msgstr "" -#: order/models.py:515 order/models.py:2095 +#: order/models.py:515 order/models.py:2059 msgid "Date order was issued" msgstr "" -#: order/models.py:522 order/models.py:2102 +#: order/models.py:522 order/models.py:2066 msgid "Date order was completed" msgstr "" @@ -4859,94 +4915,94 @@ msgstr "" msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:941 +#: order/models.py:939 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:964 order/models.py:2087 +#: order/models.py:962 order/models.py:2051 msgid "Customer Reference " msgstr "" -#: order/models.py:965 order/models.py:2088 +#: order/models.py:963 order/models.py:2052 msgid "Customer order reference code" msgstr "" -#: order/models.py:969 order/models.py:1707 +#: order/models.py:967 order/models.py:1671 #: templates/js/translated/sales_order.js:879 #: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "" -#: order/models.py:978 +#: order/models.py:976 msgid "shipped by" msgstr "" -#: order/models.py:1027 +#: order/models.py:1025 msgid "Order is already complete" msgstr "" -#: order/models.py:1030 +#: order/models.py:1028 msgid "Order is already cancelled" msgstr "" -#: order/models.py:1034 +#: order/models.py:1032 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:1038 +#: order/models.py:1036 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:1043 +#: order/models.py:1041 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1309 +#: order/models.py:1273 msgid "Item quantity" msgstr "" -#: order/models.py:1326 +#: order/models.py:1290 msgid "Line item reference" msgstr "" -#: order/models.py:1333 +#: order/models.py:1297 msgid "Line item notes" msgstr "" -#: order/models.py:1345 +#: order/models.py:1309 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1366 +#: order/models.py:1330 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1372 +#: order/models.py:1336 msgid "Context" msgstr "" -#: order/models.py:1373 +#: order/models.py:1337 msgid "Additional context for this line" msgstr "" -#: order/models.py:1383 +#: order/models.py:1347 msgid "Unit price" msgstr "" -#: order/models.py:1416 +#: order/models.py:1380 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1423 +#: order/models.py:1387 msgid "deleted" msgstr "" -#: order/models.py:1451 +#: order/models.py:1415 msgid "Supplier part" msgstr "" -#: order/models.py:1458 order/templates/order/order_base.html:196 -#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: order/models.py:1422 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1870 templates/js/translated/part.js:1902 #: templates/js/translated/purchase_order.js:1306 #: templates/js/translated/purchase_order.js:2169 #: templates/js/translated/return_order.js:763 @@ -4955,196 +5011,196 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1459 +#: order/models.py:1423 msgid "Number of items received" msgstr "" -#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 +#: order/models.py:1431 stock/models.py:938 stock/serializers.py:556 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "" -#: order/models.py:1468 +#: order/models.py:1432 msgid "Unit purchase price" msgstr "" -#: order/models.py:1483 +#: order/models.py:1447 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1574 +#: order/models.py:1538 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1579 +#: order/models.py:1543 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1605 part/templates/part/part_pricing.html:107 +#: order/models.py:1569 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:1606 +#: order/models.py:1570 msgid "Unit sale price" msgstr "" -#: order/models.py:1615 order/status_codes.py:43 +#: order/models.py:1579 order/status_codes.py:43 #: templates/js/translated/sales_order.js:1559 #: templates/js/translated/sales_order.js:1680 #: templates/js/translated/sales_order.js:1993 msgid "Shipped" msgstr "" -#: order/models.py:1616 +#: order/models.py:1580 msgid "Shipped quantity" msgstr "" -#: order/models.py:1708 +#: order/models.py:1672 msgid "Date of shipment" msgstr "" -#: order/models.py:1714 templates/js/translated/sales_order.js:1072 +#: order/models.py:1678 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "" -#: order/models.py:1715 +#: order/models.py:1679 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1723 +#: order/models.py:1687 msgid "Checked By" msgstr "" -#: order/models.py:1724 +#: order/models.py:1688 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 -#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 +#: order/models.py:1695 order/models.py:1908 order/serializers.py:1342 +#: order/serializers.py:1452 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "" -#: order/models.py:1732 +#: order/models.py:1696 msgid "Shipment number" msgstr "" -#: order/models.py:1740 +#: order/models.py:1704 msgid "Tracking Number" msgstr "" -#: order/models.py:1741 +#: order/models.py:1705 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1748 +#: order/models.py:1712 msgid "Invoice Number" msgstr "" -#: order/models.py:1749 +#: order/models.py:1713 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1769 +#: order/models.py:1733 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1772 +#: order/models.py:1736 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1890 order/models.py:1892 +#: order/models.py:1854 order/models.py:1856 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1899 +#: order/models.py:1863 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1902 +#: order/models.py:1866 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1905 +#: order/models.py:1869 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1924 order/serializers.py:1231 +#: order/models.py:1888 order/serializers.py:1219 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1927 +#: order/models.py:1891 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1928 plugin/base/barcodes/api.py:481 +#: order/models.py:1892 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1936 +#: order/models.py:1900 msgid "Line" msgstr "" -#: order/models.py:1945 +#: order/models.py:1909 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1958 order/models.py:2275 +#: order/models.py:1922 order/models.py:2239 #: templates/js/translated/return_order.js:721 msgid "Item" msgstr "" -#: order/models.py:1959 +#: order/models.py:1923 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1968 +#: order/models.py:1932 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:2057 +#: order/models.py:2021 msgid "Return Order reference" msgstr "" -#: order/models.py:2069 +#: order/models.py:2033 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:2081 +#: order/models.py:2045 msgid "Return order status" msgstr "" -#: order/models.py:2260 +#: order/models.py:2224 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2276 +#: order/models.py:2240 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2282 +#: order/models.py:2246 msgid "Received Date" msgstr "" -#: order/models.py:2283 +#: order/models.py:2247 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2294 templates/js/translated/return_order.js:732 +#: order/models.py:2258 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2295 +#: order/models.py:2259 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2302 +#: order/models.py:2266 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/serializers.py:79 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_purchase_order_report.html:22 @@ -5153,163 +5209,163 @@ msgstr "" msgid "Line Items" msgstr "" -#: order/serializers.py:84 +#: order/serializers.py:83 msgid "Completed Lines" msgstr "" -#: order/serializers.py:287 +#: order/serializers.py:286 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:302 order/serializers.py:1247 +#: order/serializers.py:301 order/serializers.py:1235 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:312 order/serializers.py:1257 +#: order/serializers.py:311 order/serializers.py:1245 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:440 +#: order/serializers.py:439 msgid "Order is not open" msgstr "" -#: order/serializers.py:461 +#: order/serializers.py:460 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:463 +#: order/serializers.py:462 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:473 +#: order/serializers.py:472 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:478 msgid "Merge Items" msgstr "" -#: order/serializers.py:481 +#: order/serializers.py:480 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:499 +#: order/serializers.py:498 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:502 +#: order/serializers.py:501 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:510 +#: order/serializers.py:509 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:511 +#: order/serializers.py:510 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:550 order/serializers.py:1325 +#: order/serializers.py:549 order/serializers.py:1313 msgid "Line Item" msgstr "" -#: order/serializers.py:556 +#: order/serializers.py:555 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1657 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:581 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:589 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:601 templates/js/translated/barcode.js:52 +#: order/serializers.py:600 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:602 +#: order/serializers.py:601 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:618 +#: order/serializers.py:617 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:642 +#: order/serializers.py:641 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:690 order/serializers.py:1696 +#: order/serializers.py:689 order/serializers.py:1673 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:706 +#: order/serializers.py:705 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:717 +#: order/serializers.py:716 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1074 +#: order/serializers.py:1062 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1134 +#: order/serializers.py:1122 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1195 order/serializers.py:1334 +#: order/serializers.py:1183 order/serializers.py:1322 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1214 +#: order/serializers.py:1202 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1344 +#: order/serializers.py:1332 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1366 order/serializers.py:1472 +#: order/serializers.py:1354 order/serializers.py:1460 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1369 order/serializers.py:1475 +#: order/serializers.py:1357 order/serializers.py:1463 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1416 +#: order/serializers.py:1404 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1423 +#: order/serializers.py:1411 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1650 +#: order/serializers.py:1627 msgid "Return order line item" msgstr "" -#: order/serializers.py:1656 +#: order/serializers.py:1633 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1659 +#: order/serializers.py:1636 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1688 +#: order/serializers.py:1665 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1766 +#: order/serializers.py:1743 msgid "Line price currency" msgstr "" @@ -5639,7 +5695,7 @@ msgstr "" #: 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/part.js:1073 #: templates/js/translated/purchase_order.js:1752 #: templates/js/translated/return_order.js:380 #: templates/js/translated/sales_order.js:891 @@ -5735,34 +5791,34 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:406 part/models.py:3964 part/stocktake.py:218 -#: stock/admin.py:153 +#: part/admin.py:39 part/admin.py:398 part/models.py:3944 part/stocktake.py:219 +#: stock/admin.py:152 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 -#: stock/admin.py:157 +#: part/admin.py:41 part/admin.py:405 part/models.py:3945 part/stocktake.py:220 +#: stock/admin.py:156 msgid "Part Name" msgstr "" -#: part/admin.py:45 part/stocktake.py:220 +#: part/admin.py:45 part/stocktake.py:221 msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:940 part/templates/part/part_base.html:269 #: report/templates/report/inventree_stock_location_report.html:103 -#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/part.js:1227 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 -#: report/models.py:161 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2346 +#: part/admin.py:50 part/models.py:949 part/templates/part/part_base.html:277 +#: report/models.py:162 templates/js/translated/part.js:1232 +#: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:319 part/models.py:929 +#: part/admin.py:53 part/admin.py:319 part/models.py:922 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5771,11 +5827,11 @@ msgstr "" msgid "Part Image" msgstr "" -#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:222 msgid "Category ID" msgstr "" -#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:223 msgid "Category Name" msgstr "" @@ -5787,11 +5843,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:908 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1036 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5799,26 +5855,26 @@ msgstr "" 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 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:235 +#: templates/js/translated/part.js:715 templates/js/translated/part.js:2153 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3123 part/models.py:3137 -#: templates/js/translated/part.js:969 +#: part/admin.py:155 part/models.py:3088 part/models.py:3102 +#: templates/js/translated/part.js:970 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3130 part/models.py:3144 -#: templates/js/translated/part.js:979 +#: part/admin.py:158 part/models.py:3095 part/models.py:3109 +#: templates/js/translated/part.js:980 msgid "Maximum Cost" msgstr "" -#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 msgid "Parent ID" msgstr "" -#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 msgid "Parent Name" msgstr "" @@ -5827,141 +5883,149 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:325 part/models.py:393 part/serializers.py:117 -#: part/serializers.py:272 part/serializers.py:391 +#: part/admin.py:325 part/models.py:396 part/serializers.py:124 +#: part/serializers.py:267 part/serializers.py:386 #: 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:2803 templates/js/translated/search.js:130 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "" -#: part/admin.py:386 +#: part/admin.py:378 msgid "BOM Level" msgstr "" -#: part/admin.py:389 +#: part/admin.py:381 msgid "BOM Item ID" msgstr "" -#: part/admin.py:399 +#: part/admin.py:391 msgid "Parent IPN" msgstr "" -#: part/admin.py:410 part/models.py:3966 +#: part/admin.py:402 part/models.py:3946 msgid "Part IPN" msgstr "" -#: part/admin.py:423 part/serializers.py:1278 +#: part/admin.py:415 part/serializers.py:1274 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:428 part/serializers.py:1293 +#: part/admin.py:420 part/serializers.py:1289 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:110 +#: part/api.py:104 msgid "Starred" msgstr "" -#: part/api.py:112 +#: part/api.py:106 msgid "Filter by starred categories" msgstr "" -#: part/api.py:129 stock/api.py:318 +#: part/api.py:123 stock/api.py:312 msgid "Depth" msgstr "" -#: part/api.py:129 +#: part/api.py:123 msgid "Filter by category depth" msgstr "" -#: part/api.py:147 stock/api.py:336 +#: part/api.py:141 stock/api.py:330 +msgid "Top Level" +msgstr "" + +#: part/api.py:143 +msgid "Filter by top-level categories" +msgstr "" + +#: part/api.py:156 stock/api.py:345 msgid "Cascade" msgstr "" -#: part/api.py:149 +#: part/api.py:158 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:169 +#: part/api.py:179 templates/js/translated/part.js:308 msgid "Parent" msgstr "" -#: part/api.py:171 +#: part/api.py:181 msgid "Filter by parent category" msgstr "" -#: part/api.py:204 +#: part/api.py:214 msgid "Exclude Tree" msgstr "" -#: part/api.py:206 +#: part/api.py:216 msgid "Exclude sub-categories under the specified category" msgstr "" -#: part/api.py:455 +#: part/api.py:449 msgid "Has Results" msgstr "" -#: part/api.py:622 +#: part/api.py:616 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:640 +#: part/api.py:634 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:656 +#: part/api.py:650 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:740 +#: part/api.py:734 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:887 +#: part/api.py:881 msgid "Valid" msgstr "" -#: part/api.py:888 +#: part/api.py:882 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:894 +#: part/api.py:888 msgid "This option must be selected" msgstr "" -#: part/api.py:1111 +#: part/api.py:1105 msgid "BOM Valid" msgstr "" -#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 -#: part/serializers.py:406 part/serializers.py:1134 -#: part/templates/part/part_base.html:260 stock/api.py:781 +#: part/api.py:1508 part/models.py:932 part/models.py:3374 part/models.py:3889 +#: part/serializers.py:401 part/serializers.py:1130 +#: part/templates/part/part_base.html:260 stock/api.py:791 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2376 +#: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/api.py:1803 +#: part/api.py:1796 msgid "Uses" msgstr "" -#: part/bom.py:170 part/models.py:102 part/models.py:982 +#: part/bom.py:170 part/models.py:104 part/models.py:975 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 part/serializers.py:837 +#: part/bom.py:171 part/serializers.py:833 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5970,1054 +6034,1066 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 +#: part/models.py:85 part/models.py:3890 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:84 part/templates/part/category.html:136 +#: part/models.py:86 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "" -#: part/models.py:103 +#: part/models.py:105 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 +#: part/models.py:110 stock/models.py:174 templates/js/translated/part.js:2810 #: templates/js/translated/stock.js:2772 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:110 +#: part/models.py:112 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:119 +#: part/models.py:121 msgid "Default keywords" msgstr "" -#: part/models.py:120 +#: part/models.py:122 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 stock/models.py:85 stock/models.py:156 +#: part/models.py:128 stock/models.py:86 stock/models.py:157 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:127 stock/models.py:157 +#: part/models.py:129 stock/models.py:158 msgid "Icon (optional)" msgstr "" -#: part/models.py:149 +#: part/models.py:151 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:482 +#: part/models.py:485 msgid "Cannot delete this part as it is still active" msgstr "" -#: part/models.py:489 +#: part/models.py:490 msgid "Cannot delete this part as it is used in an assembly" msgstr "" -#: part/models.py:527 +#: part/models.py:528 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:575 part/models.py:582 +#: part/models.py:576 part/models.py:583 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:594 +#: part/models.py:595 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:659 +#: part/models.py:658 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:739 +#: part/models.py:736 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:844 +#: part/models.py:837 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:854 +#: part/models.py:847 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:869 +#: part/models.py:862 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:898 part/models.py:3965 +#: part/models.py:891 part/models.py:3945 msgid "Part name" msgstr "" -#: part/models.py:903 +#: part/models.py:896 msgid "Is Template" msgstr "" -#: part/models.py:904 +#: part/models.py:897 msgid "Is this part a template part?" msgstr "" -#: part/models.py:914 +#: part/models.py:907 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:922 +#: part/models.py:915 msgid "Part description (optional)" msgstr "" -#: part/models.py:930 +#: part/models.py:923 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:940 +#: part/models.py:933 msgid "Part category" msgstr "" -#: part/models.py:948 +#: part/models.py:941 msgid "Internal Part Number" msgstr "" -#: part/models.py:955 +#: part/models.py:948 msgid "Part revision or version number" msgstr "" -#: part/models.py:980 +#: part/models.py:973 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:1026 part/templates/part/part_base.html:376 +#: part/models.py:1019 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:1027 +#: part/models.py:1020 msgid "Default supplier part" msgstr "" -#: part/models.py:1034 +#: part/models.py:1027 msgid "Default Expiry" msgstr "" -#: part/models.py:1035 +#: part/models.py:1028 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:1044 +#: part/models.py:1037 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:1053 +#: part/models.py:1046 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1060 +#: part/models.py:1053 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1066 +#: part/models.py:1059 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1072 +#: part/models.py:1065 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1078 +#: part/models.py:1071 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1084 +#: part/models.py:1077 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1088 +#: part/models.py:1081 msgid "Is this part active?" msgstr "" -#: part/models.py:1094 +#: part/models.py:1087 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1100 +#: part/models.py:1093 msgid "BOM checksum" msgstr "" -#: part/models.py:1101 +#: part/models.py:1094 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1109 +#: part/models.py:1102 msgid "BOM checked by" msgstr "" -#: part/models.py:1114 +#: part/models.py:1107 msgid "BOM checked date" msgstr "" -#: part/models.py:1130 +#: part/models.py:1123 msgid "Creation User" msgstr "" -#: part/models.py:1140 +#: part/models.py:1133 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1145 part/templates/part/part_base.html:339 +#: part/models.py:1138 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2470 +#: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:2018 +#: part/models.py:2011 msgid "Sell multiple" msgstr "" -#: part/models.py:3037 +#: part/models.py:3002 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:3053 +#: part/models.py:3018 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:3054 +#: part/models.py:3019 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:3060 +#: part/models.py:3025 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3026 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:3067 +#: part/models.py:3032 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3033 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3074 +#: part/models.py:3039 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3040 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3046 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3047 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3053 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3054 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3060 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3096 +#: part/models.py:3061 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3102 +#: part/models.py:3067 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3103 +#: part/models.py:3068 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3109 +#: part/models.py:3074 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3110 +#: part/models.py:3075 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3116 +#: part/models.py:3081 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3117 +#: part/models.py:3082 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3124 +#: part/models.py:3089 msgid "Override minimum cost" msgstr "" -#: part/models.py:3131 +#: part/models.py:3096 msgid "Override maximum cost" msgstr "" -#: part/models.py:3138 +#: part/models.py:3103 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3145 +#: part/models.py:3110 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3151 +#: part/models.py:3116 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3152 +#: part/models.py:3117 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3158 +#: part/models.py:3123 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3159 +#: part/models.py:3124 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3165 +#: part/models.py:3130 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3131 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3172 +#: part/models.py:3137 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3138 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3192 +#: part/models.py:3157 msgid "Part for stocktake" msgstr "" -#: part/models.py:3197 +#: part/models.py:3162 msgid "Item Count" msgstr "" -#: part/models.py:3198 +#: part/models.py:3163 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3206 +#: part/models.py:3171 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3210 part/models.py:3293 +#: part/models.py:3175 part/models.py:3258 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report.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/part.js:1086 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" -#: part/models.py:3211 +#: part/models.py:3176 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3219 +#: part/models.py:3184 msgid "Additional notes" msgstr "" -#: part/models.py:3229 +#: part/models.py:3194 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3235 +#: part/models.py:3200 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3236 +#: part/models.py:3201 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3242 +#: part/models.py:3207 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3243 +#: part/models.py:3208 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3264 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3300 +#: part/models.py:3265 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3270 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3306 +#: part/models.py:3271 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3316 +#: part/models.py:3281 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3478 +#: part/models.py:3423 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3489 +#: part/models.py:3444 part/models.py:3608 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3455 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3500 +#: part/models.py:3466 msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3517 templates/js/translated/part.js:2878 +#: part/models.py:3483 templates/js/translated/part.js:2880 msgid "Test Name" msgstr "" -#: part/models.py:3518 +#: part/models.py:3484 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3524 +#: part/models.py:3490 msgid "Test Key" msgstr "" -#: part/models.py:3525 +#: part/models.py:3491 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3532 +#: part/models.py:3498 msgid "Test Description" msgstr "" -#: part/models.py:3533 +#: part/models.py:3499 msgid "Enter description for this test" msgstr "" -#: part/models.py:3537 report/models.py:208 -#: templates/js/translated/part.js:2899 +#: part/models.py:3503 report/models.py:209 +#: templates/js/translated/part.js:2901 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" -#: part/models.py:3537 +#: part/models.py:3503 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3542 templates/js/translated/part.js:2907 +#: part/models.py:3508 templates/js/translated/part.js:2909 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3543 +#: part/models.py:3509 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3548 templates/js/translated/part.js:2915 +#: part/models.py:3514 templates/js/translated/part.js:2917 msgid "Requires Value" msgstr "" -#: part/models.py:3549 +#: part/models.py:3515 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3554 templates/js/translated/part.js:2922 +#: part/models.py:3520 templates/js/translated/part.js:2924 msgid "Requires Attachment" msgstr "" -#: part/models.py:3556 +#: part/models.py:3522 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3603 +#: part/models.py:3528 part/models.py:3667 templates/js/translated/part.js:1637 +msgid "Choices" +msgstr "" + +#: part/models.py:3529 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3583 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3608 +#: part/models.py:3588 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3628 -msgid "Choices must be unique" -msgstr "" - -#: part/models.py:3645 +#: part/models.py:3625 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3660 +#: part/models.py:3640 msgid "Parameter Name" msgstr "" -#: part/models.py:3667 +#: part/models.py:3647 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3675 +#: part/models.py:3655 msgid "Parameter description" msgstr "" -#: part/models.py:3681 templates/js/translated/part.js:1627 +#: part/models.py:3661 templates/js/translated/part.js:1628 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "" -#: part/models.py:3682 +#: part/models.py:3662 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3687 templates/js/translated/part.js:1636 -msgid "Choices" -msgstr "" - -#: part/models.py:3688 +#: part/models.py:3668 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3765 +#: part/models.py:3745 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3808 +#: part/models.py:3788 msgid "Parent Part" msgstr "" -#: part/models.py:3816 part/models.py:3917 part/models.py:3918 +#: part/models.py:3796 part/models.py:3897 part/models.py:3898 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3821 +#: part/models.py:3801 msgid "Data" msgstr "" -#: part/models.py:3822 +#: part/models.py:3802 msgid "Parameter Value" msgstr "" -#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3904 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3925 +#: part/models.py:3905 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3963 +#: part/models.py:3943 msgid "Part ID or part name" msgstr "" -#: part/models.py:3964 +#: part/models.py:3944 msgid "Unique part ID value" msgstr "" -#: part/models.py:3966 +#: part/models.py:3946 msgid "Part IPN value" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "Level" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "BOM level" msgstr "" -#: part/models.py:4057 +#: part/models.py:4037 msgid "Select parent part" msgstr "" -#: part/models.py:4067 +#: part/models.py:4047 msgid "Sub part" msgstr "" -#: part/models.py:4068 +#: part/models.py:4048 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4079 +#: part/models.py:4059 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4085 +#: part/models.py:4065 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4091 +#: part/models.py:4071 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4098 part/templates/part/upload_bom.html:55 +#: part/models.py:4078 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4099 +#: part/models.py:4079 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4106 +#: part/models.py:4086 msgid "BOM item reference" msgstr "" -#: part/models.py:4114 +#: part/models.py:4094 msgid "BOM item notes" msgstr "" -#: part/models.py:4120 +#: part/models.py:4100 msgid "Checksum" msgstr "" -#: part/models.py:4121 +#: part/models.py:4101 msgid "BOM line checksum" msgstr "" -#: part/models.py:4126 templates/js/translated/table_filters.js:174 +#: part/models.py:4106 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4127 +#: part/models.py:4107 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4132 part/templates/part/upload_bom.html:57 +#: part/models.py:4112 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:4133 +#: part/models.py:4113 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4138 part/templates/part/upload_bom.html:56 +#: part/models.py:4118 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4139 +#: part/models.py:4119 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4224 stock/models.py:664 +#: part/models.py:4204 stock/models.py:662 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4234 part/models.py:4236 +#: part/models.py:4214 part/models.py:4216 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4376 +#: part/models.py:4354 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4397 +#: part/models.py:4375 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4410 +#: part/models.py:4388 msgid "Parent BOM item" msgstr "" -#: part/models.py:4418 +#: part/models.py:4396 msgid "Substitute part" msgstr "" -#: part/models.py:4434 +#: part/models.py:4412 msgid "Part 1" msgstr "" -#: part/models.py:4442 +#: part/models.py:4420 msgid "Part 2" msgstr "" -#: part/models.py:4443 +#: part/models.py:4421 msgid "Select Related Part" msgstr "" -#: part/models.py:4462 +#: part/models.py:4440 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4467 +#: part/models.py:4445 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:119 part/serializers.py:141 +#: part/serializers.py:118 +msgid "Parent Category" +msgstr "" + +#: part/serializers.py:119 templates/js/translated/part.js:309 +msgid "Parent part category" +msgstr "" + +#: part/serializers.py:126 part/serializers.py:148 #: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/serializers.py:185 +#: part/serializers.py:180 msgid "Results" msgstr "" -#: part/serializers.py:186 +#: part/serializers.py:181 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 +#: part/serializers.py:205 part/serializers.py:223 stock/serializers.py:562 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:273 +#: part/serializers.py:268 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:397 +#: part/serializers.py:392 msgid "No parts selected" msgstr "" -#: part/serializers.py:407 +#: part/serializers.py:402 msgid "Select category" msgstr "" -#: part/serializers.py:442 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:443 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:448 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:449 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:455 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:456 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:463 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:488 +#: part/serializers.py:483 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:490 +#: part/serializers.py:485 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:497 +#: part/serializers.py:492 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:493 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:510 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:531 +#: part/serializers.py:526 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:541 +#: part/serializers.py:536 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:548 +#: part/serializers.py:543 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:557 +#: part/serializers.py:552 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:568 +#: part/serializers.py:563 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:575 +#: part/serializers.py:570 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:834 msgid "External Stock" msgstr "" -#: part/serializers.py:840 +#: part/serializers.py:836 msgid "Unallocated Stock" msgstr "" -#: part/serializers.py:843 +#: part/serializers.py:839 msgid "Variant Stock" msgstr "" -#: part/serializers.py:873 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:471 +#: part/serializers.py:869 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:472 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:870 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:880 templates/js/translated/part.js:102 +#: part/serializers.py:876 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:881 +#: part/serializers.py:877 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:887 +#: part/serializers.py:883 msgid "Supplier Information" msgstr "" -#: part/serializers.py:888 +#: part/serializers.py:884 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:896 +#: part/serializers.py:892 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:897 +#: part/serializers.py:893 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:902 +#: part/serializers.py:898 msgid "Existing Image" msgstr "" -#: part/serializers.py:903 +#: part/serializers.py:899 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:920 +#: part/serializers.py:916 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1126 +#: part/serializers.py:1122 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1136 +#: part/serializers.py:1132 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1146 +#: part/serializers.py:1142 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1152 +#: part/serializers.py:1148 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1153 +#: part/serializers.py:1149 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1158 +#: part/serializers.py:1154 msgid "Generate Report" msgstr "" -#: part/serializers.py:1159 +#: part/serializers.py:1155 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1164 +#: part/serializers.py:1160 msgid "Update Parts" msgstr "" -#: part/serializers.py:1165 +#: part/serializers.py:1161 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1173 +#: part/serializers.py:1169 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1279 +#: part/serializers.py:1275 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1286 +#: part/serializers.py:1282 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1294 +#: part/serializers.py:1290 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1301 +#: part/serializers.py:1297 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1330 +#: part/serializers.py:1326 msgid "Update" msgstr "" -#: part/serializers.py:1331 +#: part/serializers.py:1327 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1354 +#: part/serializers.py:1350 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1361 +#: part/serializers.py:1357 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1364 +#: part/serializers.py:1360 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1727 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1739 +#: part/serializers.py:1735 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1740 +#: part/serializers.py:1736 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1745 +#: part/serializers.py:1741 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1746 +#: part/serializers.py:1742 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1747 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1752 +#: part/serializers.py:1748 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1757 +#: part/serializers.py:1753 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1758 +#: part/serializers.py:1754 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1792 +#: part/serializers.py:1788 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1793 +#: part/serializers.py:1789 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1823 +#: part/serializers.py:1819 msgid "No part column specified" msgstr "" -#: part/serializers.py:1867 +#: part/serializers.py:1863 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1870 +#: part/serializers.py:1866 msgid "No matching part found" msgstr "" -#: part/serializers.py:1873 +#: part/serializers.py:1869 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1882 +#: part/serializers.py:1878 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1890 +#: part/serializers.py:1886 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1911 +#: part/serializers.py:1907 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 +#: part/stocktake.py:225 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "" -#: part/stocktake.py:225 +#: part/stocktake.py:226 msgid "Total Cost Min" msgstr "" -#: part/stocktake.py:226 +#: part/stocktake.py:227 msgid "Total Cost Max" msgstr "" -#: part/stocktake.py:284 +#: part/stocktake.py:285 msgid "Stocktake Report Available" msgstr "" -#: part/stocktake.py:285 +#: part/stocktake.py:286 msgid "A new stocktake report is available for download" msgstr "" @@ -7151,7 +7227,7 @@ 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 +#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" @@ -7251,15 +7327,15 @@ msgstr "" msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:655 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:663 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:748 +#: part/templates/part/detail.html:750 msgid "Add Test Result Template" msgstr "" @@ -7340,7 +7416,7 @@ msgstr "" msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" msgstr "" @@ -7412,7 +7488,7 @@ 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:2443 +#: templates/js/translated/part.js:1265 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7505,8 +7581,8 @@ msgstr "" #: 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:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/part.js:1243 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 #: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7549,7 +7625,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:247 +#: part/templates/part/prices.html:28 stock/admin.py:251 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 @@ -7626,8 +7702,8 @@ msgstr "" #: part/templates/part/stock_count.html:7 #: templates/js/translated/model_renderers.js:227 -#: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 -#: templates/js/translated/part.js:2142 +#: templates/js/translated/part.js:705 templates/js/translated/part.js:2141 +#: templates/js/translated/part.js:2143 msgid "No Stock" msgstr "" @@ -7999,7 +8075,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:308 msgid "Landscape" msgstr "" @@ -8112,62 +8188,62 @@ msgstr "" msgid "Uninstalled plugin successfully" msgstr "" -#: plugin/models.py:35 +#: plugin/models.py:36 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:36 +#: plugin/models.py:37 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:42 users/models.py:100 +#: plugin/models.py:43 users/models.py:100 msgid "Key" msgstr "" -#: plugin/models.py:43 +#: plugin/models.py:44 msgid "Key of plugin" msgstr "" -#: plugin/models.py:51 +#: plugin/models.py:52 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:58 plugin/serializers.py:90 +#: plugin/models.py:59 plugin/serializers.py:90 msgid "Package Name" msgstr "" -#: plugin/models.py:60 +#: plugin/models.py:61 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:65 +#: plugin/models.py:66 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:156 templates/js/translated/table_filters.js:370 +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "" -#: plugin/models.py:165 +#: plugin/models.py:166 msgid "Sample plugin" msgstr "" -#: plugin/models.py:173 +#: plugin/models.py:174 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:181 +#: plugin/models.py:182 msgid "Package Plugin" msgstr "" -#: plugin/models.py:205 report/models.py:474 +#: plugin/models.py:220 report/models.py:475 #: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:252 +#: plugin/models.py:267 msgid "Method" msgstr "" @@ -8175,17 +8251,17 @@ msgstr "" msgid "No author found" msgstr "" -#: plugin/registry.py:597 +#: plugin/registry.py:534 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:600 +#: plugin/registry.py:537 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:602 +#: plugin/registry.py:539 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -8300,23 +8376,19 @@ msgstr "" msgid "Activate this plugin" msgstr "" -#: plugin/serializers.py:234 +#: plugin/serializers.py:226 msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:235 +#: plugin/serializers.py:227 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:77 +#: report/api.py:88 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:89 report/serializers.py:53 -msgid "Model Type" -msgstr "" - -#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/api.py:103 report/models.py:439 report/serializers.py:98 #: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 #: templates/js/translated/return_order.js:353 #: templates/js/translated/sales_order.js:887 @@ -8324,176 +8396,176 @@ msgstr "" msgid "Items" msgstr "" -#: report/api.py:168 +#: report/api.py:180 msgid "Plugin not found" msgstr "" -#: report/api.py:170 +#: report/api.py:182 msgid "Plugin is not active" msgstr "" -#: report/api.py:172 +#: report/api.py:184 msgid "Plugin does not support label printing" msgstr "" -#: report/api.py:221 +#: report/api.py:233 msgid "Invalid label dimensions" msgstr "" -#: report/api.py:236 report/api.py:316 +#: report/api.py:248 report/api.py:329 msgid "No valid items provided to template" msgstr "" -#: report/api.py:271 +#: report/api.py:283 msgid "Error printing label" msgstr "" -#: report/api.py:362 report/api.py:398 +#: report/api.py:375 report/api.py:411 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/helpers.py:41 +#: report/helpers.py:43 msgid "A4" msgstr "" -#: report/helpers.py:42 +#: report/helpers.py:44 msgid "A3" msgstr "" -#: report/helpers.py:43 +#: report/helpers.py:45 msgid "Legal" msgstr "" -#: report/helpers.py:44 +#: report/helpers.py:46 msgid "Letter" msgstr "" -#: report/models.py:118 +#: report/models.py:119 msgid "Template file with this name already exists" msgstr "" -#: report/models.py:150 +#: report/models.py:151 msgid "Template name" msgstr "" -#: report/models.py:156 +#: report/models.py:157 msgid "Template description" msgstr "" -#: report/models.py:162 +#: report/models.py:163 msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Filename Pattern" msgstr "" -#: report/models.py:203 +#: report/models.py:204 msgid "Pattern for generating filenames" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Template is enabled" msgstr "" -#: report/models.py:214 +#: report/models.py:215 msgid "Target model type for template" msgstr "" -#: report/models.py:234 +#: report/models.py:235 msgid "Filters" msgstr "" -#: report/models.py:235 +#: report/models.py:236 msgid "Template query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:294 report/models.py:361 +#: report/models.py:295 report/models.py:362 msgid "Template file" msgstr "" -#: report/models.py:302 +#: report/models.py:303 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:308 +#: report/models.py:309 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:367 +#: report/models.py:368 msgid "Width [mm]" msgstr "" -#: report/models.py:368 +#: report/models.py:369 msgid "Label width, specified in mm" msgstr "" -#: report/models.py:374 +#: report/models.py:375 msgid "Height [mm]" msgstr "" -#: report/models.py:375 +#: report/models.py:376 msgid "Label height, specified in mm" msgstr "" -#: report/models.py:438 +#: report/models.py:439 msgid "Number of items to process" msgstr "" -#: report/models.py:444 +#: report/models.py:445 msgid "Report generation is complete" msgstr "" -#: report/models.py:448 templates/js/translated/build.js:2177 +#: report/models.py:449 templates/js/translated/build.js:2177 msgid "Progress" msgstr "" -#: report/models.py:448 +#: report/models.py:449 msgid "Report generation progress" msgstr "" -#: report/models.py:456 +#: report/models.py:457 msgid "Report Template" msgstr "" -#: report/models.py:463 report/models.py:486 +#: report/models.py:464 report/models.py:487 msgid "Output File" msgstr "" -#: report/models.py:464 report/models.py:487 +#: report/models.py:465 report/models.py:488 msgid "Generated output file" msgstr "" -#: report/models.py:475 +#: report/models.py:476 msgid "Label output plugin" msgstr "" -#: report/models.py:479 +#: report/models.py:480 msgid "Label Template" msgstr "" -#: report/models.py:502 +#: report/models.py:503 msgid "Snippet" msgstr "" -#: report/models.py:503 +#: report/models.py:504 msgid "Report snippet file" msgstr "" -#: report/models.py:510 +#: report/models.py:511 msgid "Snippet file description" msgstr "" -#: report/models.py:528 +#: report/models.py:529 msgid "Asset" msgstr "" -#: report/models.py:529 +#: report/models.py:530 msgid "Report asset file" msgstr "" -#: report/models.py:536 +#: report/models.py:537 msgid "Asset file description" msgstr "" @@ -8566,8 +8638,8 @@ msgid "Total" msgstr "" #: report/templates/report/inventree_return_order_report.html:25 -#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 -#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:824 +#: stock/serializers.py:149 stock/templates/stock/item_base.html:311 #: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 #: templates/js/translated/build.js:2355 #: templates/js/translated/model_renderers.js:230 @@ -8597,32 +8669,32 @@ msgstr "" msgid "Test" msgstr "" -#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2412 msgid "Result" msgstr "" -#: report/templates/report/inventree_test_report.html:130 +#: report/templates/report/inventree_test_report.html:129 msgid "Pass" msgstr "" -#: report/templates/report/inventree_test_report.html:132 +#: report/templates/report/inventree_test_report.html:131 msgid "Fail" msgstr "" -#: report/templates/report/inventree_test_report.html:139 +#: report/templates/report/inventree_test_report.html:138 msgid "No result (required)" msgstr "" -#: report/templates/report/inventree_test_report.html:141 +#: report/templates/report/inventree_test_report.html:140 msgid "No result" msgstr "" -#: report/templates/report/inventree_test_report.html:154 +#: report/templates/report/inventree_test_report.html:153 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "" -#: report/templates/report/inventree_test_report.html:168 stock/admin.py:162 +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 #: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 #: templates/js/translated/stock.js:3110 msgid "Serial" @@ -8644,654 +8716,670 @@ msgstr "" msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:172 +#: stock/admin.py:51 stock/admin.py:171 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:176 +#: stock/admin.py:53 stock/admin.py:175 msgid "Location Name" msgstr "" -#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/admin.py:63 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:149 +#: stock/admin.py:148 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:168 +#: stock/admin.py:167 msgid "Status Code" msgstr "" -#: stock/admin.py:180 +#: stock/admin.py:179 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:185 +#: stock/admin.py:184 +msgid "Supplier Part SKU" +msgstr "" + +#: stock/admin.py:189 msgid "Supplier ID" msgstr "" -#: stock/admin.py:191 +#: stock/admin.py:195 msgid "Supplier Name" msgstr "" -#: stock/admin.py:196 +#: stock/admin.py:200 msgid "Customer ID" msgstr "" -#: stock/admin.py:201 stock/models.py:806 +#: stock/admin.py:205 stock/models.py:804 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:206 +#: stock/admin.py:210 msgid "Build ID" msgstr "" -#: stock/admin.py:216 +#: stock/admin.py:220 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:221 +#: stock/admin.py:225 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:236 +#: stock/admin.py:240 msgid "Review Needed" msgstr "" -#: stock/admin.py:241 +#: stock/admin.py:245 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:256 stock/models.py:900 +#: stock/admin.py:260 stock/models.py:898 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "" -#: stock/api.py:318 +#: stock/api.py:312 msgid "Filter by location depth" msgstr "" -#: stock/api.py:338 +#: stock/api.py:332 +msgid "Filter by top-level locations" +msgstr "" + +#: stock/api.py:347 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:359 +#: stock/api.py:369 stock/serializers.py:1085 msgid "Parent Location" msgstr "" -#: stock/api.py:360 +#: stock/api.py:370 msgid "Filter by parent location" msgstr "" -#: stock/api.py:615 templates/js/translated/table_filters.js:427 +#: stock/api.py:625 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:803 +#: stock/api.py:813 msgid "Part Tree" msgstr "" -#: stock/api.py:833 +#: stock/api.py:843 msgid "Expiry date before" msgstr "" -#: stock/api.py:837 +#: stock/api.py:847 msgid "Expiry date after" msgstr "" -#: stock/api.py:840 stock/templates/stock/item_base.html:439 +#: stock/api.py:850 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:927 +#: stock/api.py:937 msgid "Quantity is required" msgstr "" -#: stock/api.py:933 +#: stock/api.py:943 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:964 +#: stock/api.py:974 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:974 +#: stock/api.py:984 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:1005 +#: stock/api.py:1015 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:59 +#: stock/models.py:60 msgid "Stock Location type" msgstr "" -#: stock/models.py:60 +#: stock/models.py:61 msgid "Stock Location types" msgstr "" -#: stock/models.py:86 +#: stock/models.py:87 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:123 stock/models.py:788 +#: stock/models.py:124 stock/models.py:786 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:124 stock/templates/stock/location.html:186 +#: stock/models.py:125 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "" -#: stock/models.py:166 stock/models.py:949 +#: stock/models.py:167 stock/models.py:947 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:167 stock/models.py:950 +#: stock/models.py:168 stock/models.py:948 msgid "Select Owner" msgstr "" -#: stock/models.py:175 +#: stock/models.py:176 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:182 templates/js/translated/stock.js:2781 +#: stock/models.py:183 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:183 +#: stock/models.py:184 msgid "This is an external stock location" msgstr "" -#: stock/models.py:189 templates/js/translated/stock.js:2790 +#: stock/models.py:190 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" -#: stock/models.py:193 +#: stock/models.py:194 msgid "Stock location type of this location" msgstr "" -#: stock/models.py:262 +#: stock/models.py:261 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:643 +#: stock/models.py:641 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:670 stock/serializers.py:419 +#: stock/models.py:668 stock/serializers.py:446 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:687 +#: stock/models.py:685 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:697 stock/models.py:710 +#: stock/models.py:695 stock/models.py:708 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:700 +#: stock/models.py:698 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:724 +#: stock/models.py:722 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:729 +#: stock/models.py:727 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:742 +#: stock/models.py:740 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:758 +#: stock/models.py:756 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:770 +#: stock/models.py:768 msgid "Base part" msgstr "" -#: stock/models.py:780 +#: stock/models.py:778 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:792 +#: stock/models.py:790 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:800 stock/serializers.py:1480 +#: stock/models.py:798 stock/serializers.py:1476 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:811 +#: stock/models.py:809 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:830 +#: stock/models.py:828 msgid "Serial number for this item" msgstr "" -#: stock/models.py:844 stock/serializers.py:1463 +#: stock/models.py:842 stock/serializers.py:1459 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:849 +#: stock/models.py:847 msgid "Stock Quantity" msgstr "" -#: stock/models.py:859 +#: stock/models.py:857 msgid "Source Build" msgstr "" -#: stock/models.py:862 +#: stock/models.py:860 msgid "Build for this stock item" msgstr "" -#: stock/models.py:869 stock/templates/stock/item_base.html:363 +#: stock/models.py:867 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:872 +#: stock/models.py:870 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:881 +#: stock/models.py:879 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:885 +#: stock/models.py:883 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:891 +#: stock/models.py:889 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:902 +#: stock/models.py:900 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:920 +#: stock/models.py:918 msgid "Delete on deplete" msgstr "" -#: stock/models.py:921 +#: stock/models.py:919 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:941 +#: stock/models.py:939 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:972 +#: stock/models.py:970 msgid "Converted to part" msgstr "" -#: stock/models.py:1490 +#: stock/models.py:1486 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1496 +#: stock/models.py:1492 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1500 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1510 +#: stock/models.py:1506 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1515 +#: stock/models.py:1511 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1523 stock/serializers.py:658 +#: stock/models.py:1519 stock/serializers.py:660 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1620 +#: stock/models.py:1616 msgid "Test template does not exist" msgstr "" -#: stock/models.py:1638 +#: stock/models.py:1634 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1642 +#: stock/models.py:1638 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1645 +#: stock/models.py:1641 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1648 +#: stock/models.py:1644 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1651 +#: stock/models.py:1647 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1654 +#: stock/models.py:1650 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1661 stock/serializers.py:1369 +#: stock/models.py:1657 stock/serializers.py:1365 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1665 +#: stock/models.py:1661 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1673 +#: stock/models.py:1669 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1678 +#: stock/models.py:1674 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1905 +#: stock/models.py:1901 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2310 msgid "Entry notes" msgstr "" -#: stock/models.py:2391 +#: stock/models.py:2378 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2396 +#: stock/models.py:2383 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2423 +#: stock/models.py:2388 +msgid "Invalid value for this test" +msgstr "" + +#: stock/models.py:2412 msgid "Test result" msgstr "" -#: stock/models.py:2430 +#: stock/models.py:2419 msgid "Test output value" msgstr "" -#: stock/models.py:2438 +#: stock/models.py:2427 msgid "Test result attachment" msgstr "" -#: stock/models.py:2442 +#: stock/models.py:2431 msgid "Test notes" msgstr "" -#: stock/models.py:2450 templates/js/translated/stock.js:1548 +#: stock/models.py:2439 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2440 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2457 +#: stock/models.py:2446 msgid "Started" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2447 msgid "The timestamp of the test start" msgstr "" -#: stock/models.py:2464 +#: stock/models.py:2453 msgid "Finished" msgstr "" -#: stock/models.py:2465 +#: stock/models.py:2454 msgid "The timestamp of the test finish" msgstr "" -#: stock/serializers.py:75 +#: stock/serializers.py:74 msgid "Generated batch code" msgstr "" -#: stock/serializers.py:84 +#: stock/serializers.py:83 msgid "Select build order" msgstr "" -#: stock/serializers.py:93 +#: stock/serializers.py:92 msgid "Select stock item to generate batch code for" msgstr "" -#: stock/serializers.py:102 +#: stock/serializers.py:101 msgid "Select location to generate batch code for" msgstr "" -#: stock/serializers.py:111 +#: stock/serializers.py:110 msgid "Select part to generate batch code for" msgstr "" -#: stock/serializers.py:120 +#: stock/serializers.py:119 msgid "Select purchase order" msgstr "" -#: stock/serializers.py:127 +#: stock/serializers.py:126 msgid "Enter quantity for batch code" msgstr "" -#: stock/serializers.py:150 +#: stock/serializers.py:149 msgid "Generated serial number" msgstr "" -#: stock/serializers.py:159 +#: stock/serializers.py:158 msgid "Select part to generate serial number for" msgstr "" -#: stock/serializers.py:167 +#: stock/serializers.py:166 msgid "Quantity of serial numbers to generate" msgstr "" -#: stock/serializers.py:229 +#: stock/serializers.py:228 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:248 +#: stock/serializers.py:247 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:280 +#: stock/serializers.py:279 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:313 +#: stock/serializers.py:315 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:411 +#: stock/serializers.py:438 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:531 +#: stock/serializers.py:558 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:595 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:606 +#: stock/serializers.py:608 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:613 +#: stock/serializers.py:615 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 +#: stock/serializers.py:626 stock/serializers.py:1322 stock/serializers.py:1578 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:631 +#: stock/serializers.py:633 msgid "Optional note field" msgstr "" -#: stock/serializers.py:641 +#: stock/serializers.py:643 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:696 +#: stock/serializers.py:698 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:703 +#: stock/serializers.py:705 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:704 +#: stock/serializers.py:706 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 -#: stock/serializers.py:935 +#: stock/serializers.py:711 stock/serializers.py:791 stock/serializers.py:887 +#: stock/serializers.py:937 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:719 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:725 +#: stock/serializers.py:727 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:736 +#: stock/serializers.py:738 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:749 +#: stock/serializers.py:751 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:784 +#: stock/serializers.py:786 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:819 +#: stock/serializers.py:821 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:834 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:849 +#: stock/serializers.py:851 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:880 +#: stock/serializers.py:882 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:917 +#: stock/serializers.py:919 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:923 +#: stock/serializers.py:925 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:1019 stock/serializers.py:1082 +#: stock/serializers.py:1021 stock/serializers.py:1093 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:220 +#: stock/templates/stock/location.html:222 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1198 +#: stock/serializers.py:1086 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: stock/serializers.py:1194 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1202 +#: stock/serializers.py:1198 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1206 +#: stock/serializers.py:1202 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1230 +#: stock/serializers.py:1226 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1236 +#: stock/serializers.py:1232 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1244 +#: stock/serializers.py:1240 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1254 stock/serializers.py:1508 +#: stock/serializers.py:1250 stock/serializers.py:1504 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1333 +#: stock/serializers.py:1329 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1338 +#: stock/serializers.py:1334 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1339 +#: stock/serializers.py:1335 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1344 +#: stock/serializers.py:1340 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1345 +#: stock/serializers.py:1341 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1355 +#: stock/serializers.py:1351 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1422 +#: stock/serializers.py:1418 msgid "No Change" msgstr "" -#: stock/serializers.py:1451 +#: stock/serializers.py:1447 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1470 +#: stock/serializers.py:1466 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1498 +#: stock/serializers.py:1494 msgid "Stock transaction notes" msgstr "" @@ -9444,7 +9532,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276 msgid "Delete Test Data" msgstr "" @@ -9464,11 +9552,11 @@ msgstr "" msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:272 +#: stock/templates/stock/item.html:264 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "" @@ -9754,28 +9842,28 @@ msgstr "" msgid "Location Type" msgstr "" -#: stock/templates/stock/location.html:224 +#: stock/templates/stock/location.html:226 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:225 +#: stock/templates/stock/location.html:227 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:295 +#: stock/templates/stock/location.html:299 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:317 +#: stock/templates/stock/location.html:321 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:390 +#: stock/templates/stock/location.html:394 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:401 +#: stock/templates/stock/location.html:405 msgid "Link Barcode to Stock Location" msgstr "" @@ -10199,20 +10287,20 @@ msgstr "" msgid "Pricing Settings" msgstr "" -#: templates/InvenTree/settings/pricing.html:34 +#: templates/InvenTree/settings/pricing.html:35 msgid "Exchange Rates" msgstr "" -#: templates/InvenTree/settings/pricing.html:38 +#: templates/InvenTree/settings/pricing.html:39 msgid "Update Now" msgstr "" -#: templates/InvenTree/settings/pricing.html:46 -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 msgid "Last Update" msgstr "" -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:51 msgid "Never" msgstr "" @@ -10269,8 +10357,8 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:547 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 +#: templates/js/translated/part.js:393 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:402 msgid "Delete" msgstr "" @@ -10310,12 +10398,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 -#: templates/js/translated/part.js:1645 +#: templates/js/translated/part.js:1646 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 -#: templates/js/translated/part.js:1646 +#: templates/js/translated/part.js:1647 msgid "Delete Template" msgstr "" @@ -10705,7 +10793,7 @@ msgid "Submit Bug Report" msgstr "" #: templates/about.html:91 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 +#: templates/js/translated/helpers.js:589 msgid "copy to clipboard" msgstr "" @@ -10769,7 +10857,7 @@ 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 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45 msgid "Return to Site" msgstr "" @@ -10883,15 +10971,19 @@ msgstr "" msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "" -#: templates/allauth_2fa/setup.html:23 +#: templates/allauth_2fa/setup.html:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 msgid "Step 2" msgstr "" -#: templates/allauth_2fa/setup.html:27 +#: templates/allauth_2fa/setup.html:28 msgid "Input a token generated by the app:" msgstr "" -#: templates/allauth_2fa/setup.html:37 +#: templates/allauth_2fa/setup.html:38 msgid "Verify" msgstr "" @@ -10970,7 +11062,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3217 +#: templates/js/translated/part.js:3219 msgid "Minimum Quantity" msgstr "" @@ -11058,27 +11150,27 @@ msgstr "" msgid "Delete attachments" msgstr "" -#: templates/js/translated/attachment.js:253 +#: templates/js/translated/attachment.js:260 msgid "Attachment actions" msgstr "" -#: templates/js/translated/attachment.js:275 +#: templates/js/translated/attachment.js:294 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:315 +#: templates/js/translated/attachment.js:334 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:365 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:366 +#: templates/js/translated/attachment.js:385 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:374 +#: templates/js/translated/attachment.js:393 msgid "Delete attachment" msgstr "" @@ -11359,7 +11451,7 @@ msgid "Includes variant and substitute stock" msgstr "" #: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 -#: templates/js/translated/part.js:1256 +#: templates/js/translated/part.js:1257 #: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" @@ -11686,7 +11778,7 @@ msgstr "" #: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 #: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 -#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11729,8 +11821,8 @@ msgstr "" msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 -#: templates/js/translated/part.js:1202 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:791 +#: templates/js/translated/part.js:1203 msgid "Trackable part" msgstr "" @@ -11916,7 +12008,7 @@ msgid "Delete Parameters" msgstr "" #: templates/js/translated/company.js:1191 -#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2244 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2245 msgid "Order parts" msgstr "" @@ -11933,34 +12025,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:1279 -#: templates/js/translated/company.js:1567 templates/js/translated/part.js:798 -#: templates/js/translated/part.js:1210 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Template part" msgstr "" #: templates/js/translated/company.js:1283 -#: templates/js/translated/company.js:1571 templates/js/translated/part.js:802 -#: templates/js/translated/part.js:1214 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:803 +#: templates/js/translated/part.js:1215 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1464 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1465 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1527 +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1528 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1528 +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1529 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1433 +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1434 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1549 +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1550 msgid "Delete Parameter" msgstr "" @@ -12094,23 +12186,23 @@ msgstr "" msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2499 +#: templates/js/translated/forms.js:2500 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3113 +#: templates/js/translated/forms.js:3114 msgid "Select Columns" msgstr "" @@ -12211,7 +12303,7 @@ msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 -#: templates/js/translated/part.js:1604 +#: templates/js/translated/part.js:1605 msgid "ID" msgstr "" @@ -12292,347 +12384,343 @@ msgstr "" 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 +#: templates/js/translated/part.js:333 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:355 +#: templates/js/translated/part.js:356 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:356 +#: templates/js/translated/part.js:357 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:370 +#: templates/js/translated/part.js:371 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:383 +#: templates/js/translated/part.js:384 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:388 +#: templates/js/translated/part.js:389 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:397 +#: templates/js/translated/part.js:398 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:401 +#: templates/js/translated/part.js:402 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:406 +#: templates/js/translated/part.js:407 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:430 +#: templates/js/translated/part.js:431 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:432 +#: templates/js/translated/part.js:433 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:433 +#: templates/js/translated/part.js:434 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:462 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:463 +#: templates/js/translated/part.js:464 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:474 +#: templates/js/translated/part.js:475 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:531 +#: templates/js/translated/part.js:532 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:532 +#: templates/js/translated/part.js:533 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:546 +#: templates/js/translated/part.js:547 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:548 +#: templates/js/translated/part.js:549 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:549 +#: templates/js/translated/part.js:550 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:550 +#: templates/js/translated/part.js:551 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:557 +#: templates/js/translated/part.js:558 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:593 +#: templates/js/translated/part.js:594 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:595 +#: templates/js/translated/part.js:596 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:600 +#: templates/js/translated/part.js:601 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:602 +#: templates/js/translated/part.js:603 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:619 +#: templates/js/translated/part.js:620 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:629 +#: templates/js/translated/part.js:630 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:632 +#: templates/js/translated/part.js:633 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:657 +#: templates/js/translated/part.js:658 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:685 +#: templates/js/translated/part.js:686 #: templates/js/translated/table_filters.js:747 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:688 +#: templates/js/translated/part.js:689 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:748 +#: templates/js/translated/part.js:749 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:771 +#: templates/js/translated/part.js:772 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +#: templates/js/translated/part.js:795 templates/js/translated/part.js:1207 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:806 +#: templates/js/translated/part.js:807 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:810 +#: templates/js/translated/part.js:811 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:897 +#: templates/js/translated/part.js:898 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:901 +#: templates/js/translated/part.js:902 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1050 +#: templates/js/translated/part.js:1051 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1145 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +#: templates/js/translated/part.js:1113 templates/js/translated/part.js:1155 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1281 +#: templates/js/translated/part.js:1282 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1599 +#: templates/js/translated/part.js:1600 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1662 +#: templates/js/translated/part.js:1663 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1674 +#: templates/js/translated/part.js:1675 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1682 +#: templates/js/translated/part.js:1683 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1716 +#: templates/js/translated/part.js:1717 #: templates/js/translated/purchase_order.js:1654 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1860 +#: templates/js/translated/part.js:1861 #: templates/js/translated/purchase_order.js:2153 #: templates/js/translated/return_order.js:755 #: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1906 +#: templates/js/translated/part.js:1907 #: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1970 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1991 +#: templates/js/translated/part.js:1992 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 +#: templates/js/translated/part.js:2080 templates/js/translated/part.js:2506 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2200 +#: templates/js/translated/part.js:2201 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2205 +#: templates/js/translated/part.js:2206 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2235 +#: templates/js/translated/part.js:2236 msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2286 +#: templates/js/translated/part.js:2287 msgid "part" msgstr "" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2288 msgid "parts" msgstr "" -#: templates/js/translated/part.js:2383 +#: templates/js/translated/part.js:2384 msgid "No category" msgstr "" -#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2546 +#: templates/js/translated/part.js:2547 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2644 +#: templates/js/translated/part.js:2645 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2760 +#: templates/js/translated/part.js:2761 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2776 +#: templates/js/translated/part.js:2777 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2865 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2887 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/part.js:2938 templates/js/translated/stock.js:1457 #: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2940 +#: templates/js/translated/part.js:2942 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2956 +#: templates/js/translated/part.js:2958 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2970 +#: templates/js/translated/part.js:2972 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3051 templates/js/translated/part.js:3052 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3052 +#: templates/js/translated/part.js:3054 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3058 +#: templates/js/translated/part.js:3060 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3108 +#: templates/js/translated/part.js:3110 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3114 +#: templates/js/translated/part.js:3116 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3210 +#: templates/js/translated/part.js:3212 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3226 +#: templates/js/translated/part.js:3228 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3271 +#: templates/js/translated/part.js:3273 msgid "Minimum Stock Level" msgstr "" @@ -13240,10 +13328,6 @@ msgstr "" 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 "" @@ -13412,7 +13496,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:401 +#: templates/js/translated/stock.js:1042 users/models.py:392 msgid "Add" msgstr "" @@ -14303,34 +14387,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:384 +#: users/models.py:375 msgid "Permission set" msgstr "" -#: users/models.py:393 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "View" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "Permission to view items" msgstr "" -#: users/models.py:401 +#: users/models.py:392 msgid "Permission to add items" msgstr "" -#: users/models.py:405 +#: users/models.py:396 msgid "Change" msgstr "" -#: users/models.py:407 +#: users/models.py:398 msgid "Permissions to edit items" msgstr "" -#: users/models.py:413 +#: users/models.py:404 msgid "Permission to delete items" msgstr "" + diff --git a/src/backend/InvenTree/locale/nl/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/nl/LC_MESSAGES/django.po index 5524c4bd1b..35270d08ea 100644 --- a/src/backend/InvenTree/locale/nl/LC_MESSAGES/django.po +++ b/src/backend/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-05-31 07:08+0000\n" -"PO-Revision-Date: 2024-05-27 11:54\n" +"POT-Creation-Date: 2024-06-26 03:18+0000\n" +"PO-Revision-Date: 2024-06-26 06:04\n" "Last-Translator: \n" "Language-Team: Dutch\n" "Language: nl_NL\n" @@ -21,7 +21,7 @@ msgstr "" msgid "API endpoint not found" msgstr "API eindpunt niet gevonden" -#: InvenTree/api.py:536 +#: InvenTree/api.py:520 msgid "User does not have permission to view this model" msgstr "Gebruiker heeft geen rechten om dit model te bekijken" @@ -52,25 +52,25 @@ msgstr "Ongeldige hoeveelheid ingegeven ({exc})" msgid "Error details can be found in the admin panel" msgstr "Error details kunnen worden gevonden in het admin scherm" -#: InvenTree/fields.py:139 +#: InvenTree/fields.py:136 msgid "Enter date" msgstr "Voer datum in" -#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 -#: build/serializers.py:531 build/templates/build/sidebar.html:21 -#: company/models.py:849 company/templates/company/sidebar.html:37 -#: order/models.py:1332 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:205 InvenTree/models.py:918 build/serializers.py:452 +#: build/serializers.py:530 build/templates/build/sidebar.html:21 +#: company/models.py:817 company/templates/company/sidebar.html:37 +#: order/models.py:1296 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:3218 part/templates/part/part_sidebar.html:63 +#: part/models.py:3183 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_report.html:172 -#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 -#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 -#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 -#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:230 stock/models.py:2309 stock/models.py:2431 +#: stock/serializers.py:632 stock/serializers.py:790 stock/serializers.py:886 +#: stock/serializers.py:936 stock/serializers.py:1239 stock/serializers.py:1328 +#: stock/serializers.py:1493 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1080 +#: templates/js/translated/part.js:1081 #: templates/js/translated/purchase_order.js:2200 #: templates/js/translated/return_order.js:775 #: templates/js/translated/sales_order.js:1103 @@ -120,15 +120,15 @@ msgstr "E-mailadres bevestiging" msgid "You must type the same email each time." msgstr "Er moet hetzelfde e-mailadres ingevoerd worden." -#: InvenTree/forms.py:253 InvenTree/forms.py:261 +#: InvenTree/forms.py:248 InvenTree/forms.py:256 msgid "The provided primary email address is not valid." msgstr "Het opgegeven primaire e-mailadres is ongeldig." -#: InvenTree/forms.py:268 +#: InvenTree/forms.py:263 msgid "The provided email domain is not approved." msgstr "Het ingevoerde e-maildomein is niet goedgekeurd." -#: InvenTree/forms.py:395 +#: InvenTree/forms.py:390 msgid "Registration is disabled." msgstr "Registratie is uitgeschakeld." @@ -171,35 +171,35 @@ msgstr "" msgid "Remove HTML tags from this value" msgstr "Verwijder HTML tags van deze waarde" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Connection error" msgstr "Verbindingsfout" -#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 msgid "Server responded with invalid status code" msgstr "Server reageerde met ongeldige statuscode" -#: InvenTree/helpers_model.py:158 +#: InvenTree/helpers_model.py:148 msgid "Exception occurred" msgstr "Uitzondering opgetreden" -#: InvenTree/helpers_model.py:168 +#: InvenTree/helpers_model.py:158 msgid "Server responded with invalid Content-Length value" msgstr "Server reageerde met ongeldige Content-Length waarde" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:161 msgid "Image size is too large" msgstr "Afbeeldingsformaat is te groot" -#: InvenTree/helpers_model.py:183 +#: InvenTree/helpers_model.py:173 msgid "Image download exceeded maximum size" msgstr "Beelddownload overschrijdt de maximale grootte" -#: InvenTree/helpers_model.py:188 +#: InvenTree/helpers_model.py:178 msgid "Remote server returned empty response" msgstr "Externe server heeft lege reactie teruggegeven" -#: InvenTree/helpers_model.py:196 +#: InvenTree/helpers_model.py:186 msgid "Supplied URL is not a valid image file" msgstr "Opgegeven URL is geen geldig afbeeldingsbestand" @@ -296,46 +296,50 @@ msgid "Portuguese (Brazilian)" msgstr "Portugees (Braziliaans)" #: InvenTree/locales.py:41 +msgid "Romanian" +msgstr "" + +#: InvenTree/locales.py:42 msgid "Russian" msgstr "Russisch" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:43 msgid "Slovak" msgstr "" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:44 msgid "Slovenian" msgstr "Sloveens" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:45 msgid "Serbian" msgstr "Servisch" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:46 msgid "Swedish" msgstr "Zweeds" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:47 msgid "Thai" msgstr "Thais" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:48 msgid "Turkish" msgstr "Turks" -#: InvenTree/locales.py:48 +#: InvenTree/locales.py:49 msgid "Ukrainian" msgstr "" -#: InvenTree/locales.py:49 +#: InvenTree/locales.py:50 msgid "Vietnamese" msgstr "Vietnamees" -#: InvenTree/locales.py:50 +#: InvenTree/locales.py:51 msgid "Chinese (Simplified)" msgstr "Chinees (vereenvoudigd)" -#: InvenTree/locales.py:51 +#: InvenTree/locales.py:52 msgid "Chinese (Traditional)" msgstr "Chinees (traditioneel)" @@ -344,153 +348,65 @@ msgstr "Chinees (traditioneel)" msgid "[{site_name}] Log in to the app" msgstr "" -#: InvenTree/magic_login.py:38 company/models.py:133 +#: InvenTree/magic_login.py:38 company/models.py:136 #: company/templates/company/company_base.html:138 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:677 msgid "Email" msgstr "" -#: InvenTree/models.py:107 +#: InvenTree/models.py:105 msgid "Error running plugin validation" msgstr "" -#: InvenTree/models.py:176 +#: InvenTree/models.py:174 msgid "Metadata must be a python dict object" msgstr "Metadata moeten een python dict object zijn" -#: InvenTree/models.py:182 +#: InvenTree/models.py:180 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:183 +#: InvenTree/models.py:181 msgid "JSON metadata field, for use by external plugins" msgstr "JSON metadata veld, voor gebruik door externe plugins" -#: InvenTree/models.py:413 +#: InvenTree/models.py:408 msgid "Improperly formatted pattern" msgstr "Onjuist opgemaakt patroon" -#: InvenTree/models.py:420 +#: InvenTree/models.py:415 msgid "Unknown format key specified" msgstr "Onbekende opmaaksleutel gespecificeerd" -#: InvenTree/models.py:426 +#: InvenTree/models.py:421 msgid "Missing required format key" msgstr "Vereiste opmaaksleutel ontbreekt" -#: InvenTree/models.py:437 +#: InvenTree/models.py:432 msgid "Reference field cannot be empty" msgstr "Referentieveld mag niet leeg zijn" -#: InvenTree/models.py:445 +#: InvenTree/models.py:440 msgid "Reference must match required pattern" msgstr "Referentie moet overeenkomen met verplicht patroon" -#: InvenTree/models.py:476 +#: InvenTree/models.py:471 msgid "Reference number is too large" msgstr "Referentienummer is te groot" -#: InvenTree/models.py:550 -msgid "Missing file" -msgstr "Ontbrekend bestand" - -#: InvenTree/models.py:551 -msgid "Missing external link" -msgstr "Externe link ontbreekt" - -#: InvenTree/models.py:572 stock/models.py:2437 -#: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:326 -msgid "Attachment" -msgstr "Bijlage" - -#: InvenTree/models.py:573 -msgid "Select file to attach" -msgstr "Bestand als bijlage selecteren" - -#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:831 -#: order/models.py:303 order/models.py:1337 order/models.py:1753 -#: part/admin.py:55 part/models.py:962 -#: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_report.html:164 -#: stock/admin.py:225 templates/js/translated/company.js:1319 -#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2455 -#: templates/js/translated/purchase_order.js:2040 -#: templates/js/translated/purchase_order.js:2204 -#: templates/js/translated/return_order.js:779 -#: templates/js/translated/sales_order.js:1092 -#: templates/js/translated/sales_order.js:2023 -msgid "Link" -msgstr "" - -#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 -#: stock/models.py:836 -msgid "Link to external URL" -msgstr "Link naar externe URL" - -#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:341 -msgid "Comment" -msgstr "Opmerking" - -#: InvenTree/models.py:589 -msgid "File comment" -msgstr "Bestand opmerking" - -#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 -#: common/models.py:2518 common/models.py:2742 common/models.py:2743 -#: common/models.py:2988 common/models.py:2989 part/models.py:3228 -#: part/models.py:3315 part/models.py:3408 part/models.py:3436 -#: plugin/models.py:259 plugin/models.py:260 -#: report/templates/report/inventree_test_report.html:105 -#: templates/js/translated/stock.js:3036 users/models.py:111 -msgid "User" -msgstr "Gebruiker" - -#: InvenTree/models.py:602 -msgid "upload date" -msgstr "uploaddatum" - -#: InvenTree/models.py:624 -msgid "Filename must not be empty" -msgstr "Bestandsnaam mag niet leeg zijn" - -#: InvenTree/models.py:635 -msgid "Invalid attachment directory" -msgstr "Foute bijlagemap" - -#: InvenTree/models.py:665 -#, python-brace-format -msgid "Filename contains illegal character '{c}'" -msgstr "Bestandsnaam bevat illegale teken '{c}'" - -#: InvenTree/models.py:668 -msgid "Filename missing extension" -msgstr "Bestandsnaam mist extensie" - -#: InvenTree/models.py:677 -msgid "Attachment with this filename already exists" -msgstr "Bijlage met deze bestandsnaam bestaat al" - -#: InvenTree/models.py:684 -msgid "Error renaming file" -msgstr "Fout bij hernoemen bestand" - -#: InvenTree/models.py:860 +#: InvenTree/models.py:719 msgid "Duplicate names cannot exist under the same parent" msgstr "Dubbele namen kunnen niet bestaan onder hetzelfde bovenliggende object" -#: InvenTree/models.py:877 +#: InvenTree/models.py:736 msgid "Invalid choice" msgstr "Ongeldige keuze" -#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 -#: common/serializers.py:403 company/models.py:614 machine/models.py:24 -#: part/models.py:898 part/models.py:3659 plugin/models.py:50 -#: report/models.py:149 stock/models.py:72 +#: InvenTree/models.py:766 common/models.py:2623 common/models.py:3036 +#: common/serializers.py:408 company/models.py:580 machine/models.py:24 +#: part/models.py:891 part/models.py:3639 plugin/models.py:51 +#: report/models.py:150 stock/models.py:73 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:83 @@ -501,25 +417,25 @@ msgstr "Ongeldige keuze" #: templates/js/translated/company.js:724 #: templates/js/translated/company.js:913 #: templates/js/translated/company.js:1165 -#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 -#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1187 +#: templates/js/translated/part.js:1475 templates/js/translated/part.js:1611 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Naam" -#: InvenTree/models.py:913 build/models.py:218 -#: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:523 company/models.py:840 +#: InvenTree/models.py:772 build/models.py:220 +#: build/templates/build/detail.html:24 common/models.py:138 +#: company/models.py:509 company/models.py:808 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 order/models.py:289 -#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 -#: part/models.py:3674 part/templates/part/category.html:82 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:914 +#: part/models.py:3654 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:155 -#: report/models.py:509 report/models.py:535 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 #: report/templates/report/inventree_build_order_report.html:117 -#: stock/admin.py:55 stock/models.py:78 stock/templates/stock/location.html:125 +#: stock/admin.py:54 stock/models.py:79 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 @@ -528,10 +444,10 @@ msgstr "Naam" #: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 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:2354 -#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1239 +#: templates/js/translated/part.js:1484 templates/js/translated/part.js:1622 +#: templates/js/translated/part.js:1959 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2897 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1706 #: templates/js/translated/purchase_order.js:1849 @@ -544,149 +460,141 @@ msgstr "Naam" msgid "Description" msgstr "Omschrijving" -#: InvenTree/models.py:914 stock/models.py:79 +#: InvenTree/models.py:773 stock/models.py:80 msgid "Description (optional)" msgstr "Omschrijving (optioneel)" -#: InvenTree/models.py:923 -msgid "parent" -msgstr "bovenliggende" - -#: InvenTree/models.py:929 templates/js/translated/part.js:2793 +#: InvenTree/models.py:788 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Pad" -#: InvenTree/models.py:1035 +#: InvenTree/models.py:918 msgid "Markdown notes (optional)" msgstr "Markdown notitie (optioneel)" -#: InvenTree/models.py:1064 +#: InvenTree/models.py:947 msgid "Barcode Data" msgstr "Streepjescode gegevens" -#: InvenTree/models.py:1065 +#: InvenTree/models.py:948 msgid "Third party barcode data" msgstr "Streepjescode van derden" -#: InvenTree/models.py:1071 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "Hash van Streepjescode" -#: InvenTree/models.py:1072 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "Unieke hash van barcode gegevens" -#: InvenTree/models.py:1125 +#: InvenTree/models.py:1008 msgid "Existing barcode found" msgstr "Bestaande barcode gevonden" -#: InvenTree/models.py:1168 +#: InvenTree/models.py:1051 msgid "Server Error" msgstr "Serverfout" -#: InvenTree/models.py:1169 +#: InvenTree/models.py:1052 msgid "An error has been logged by the server." msgstr "Er is een fout gelogd door de server." -#: InvenTree/serializers.py:62 part/models.py:4212 +#: InvenTree/serializers.py:63 part/models.py:4192 msgid "Must be a valid number" msgstr "Moet een geldig nummer zijn" -#: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:3036 +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3001 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Valuta" -#: InvenTree/serializers.py:102 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "Selecteer valuta uit beschikbare opties" -#: InvenTree/serializers.py:441 +#: InvenTree/serializers.py:442 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:453 +#: InvenTree/serializers.py:454 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:472 +#: InvenTree/serializers.py:473 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:474 +#: InvenTree/serializers.py:475 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:481 +#: InvenTree/serializers.py:482 msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:542 -msgid "Filename" -msgstr "Bestandsnaam" - -#: InvenTree/serializers.py:576 +#: InvenTree/serializers.py:540 msgid "Invalid value" msgstr "Ongeldige waarde" -#: InvenTree/serializers.py:596 +#: InvenTree/serializers.py:560 msgid "Data File" msgstr "Data bestand" -#: InvenTree/serializers.py:597 +#: InvenTree/serializers.py:561 msgid "Select data file for upload" msgstr "Selecteer een bestand om te uploaden" -#: InvenTree/serializers.py:614 +#: InvenTree/serializers.py:578 msgid "Unsupported file type" msgstr "Niet ondersteund bestandstype" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:584 msgid "File is too large" msgstr "Bestand is te groot" -#: InvenTree/serializers.py:641 +#: InvenTree/serializers.py:605 msgid "No columns found in file" msgstr "Geen kolommen gevonden in het bestand" -#: InvenTree/serializers.py:644 +#: InvenTree/serializers.py:608 msgid "No data rows found in file" msgstr "Geen data rijen gevonden in dit bestand" -#: InvenTree/serializers.py:757 +#: InvenTree/serializers.py:721 msgid "No data rows provided" msgstr "Geen data rijen opgegeven" -#: InvenTree/serializers.py:760 +#: InvenTree/serializers.py:724 msgid "No data columns supplied" msgstr "Geen gegevenskolommen opgegeven" -#: InvenTree/serializers.py:827 +#: InvenTree/serializers.py:791 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Verplichte kolom ontbreekt: '{name}'" -#: InvenTree/serializers.py:836 +#: InvenTree/serializers.py:800 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Dubbele kolom: '{col}'" -#: InvenTree/serializers.py:859 +#: InvenTree/serializers.py:840 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:860 +#: InvenTree/serializers.py:841 msgid "URL of remote image file" msgstr "URL van extern afbeeldingsbestand" -#: InvenTree/serializers.py:878 +#: InvenTree/serializers.py:859 msgid "Downloading images from remote URL is not enabled" msgstr "Afbeeldingen van externe URL downloaden is niet ingeschakeld" -#: InvenTree/status.py:66 part/serializers.py:1178 +#: InvenTree/status.py:66 part/serializers.py:1174 msgid "Background worker check failed" msgstr "Achtergrondwerker check is gefaald" @@ -698,27 +606,27 @@ msgstr "E-mailbackend niet geconfigureerd" msgid "InvenTree system health checks failed" msgstr "InvenTree gezondsheidschecks mislukt" -#: InvenTree/templatetags/inventree_extras.py:183 +#: InvenTree/templatetags/inventree_extras.py:184 msgid "Unknown database" msgstr "" -#: InvenTree/validators.py:31 InvenTree/validators.py:33 +#: InvenTree/validators.py:32 InvenTree/validators.py:34 msgid "Invalid physical unit" msgstr "Ongeldige fysieke eenheid" -#: InvenTree/validators.py:39 +#: InvenTree/validators.py:40 msgid "Not a valid currency code" msgstr "Geen geldige valutacode" -#: InvenTree/validators.py:121 InvenTree/validators.py:137 +#: InvenTree/validators.py:118 InvenTree/validators.py:134 msgid "Overage value must not be negative" msgstr "Overschotwaarde mag niet negatief zijn" -#: InvenTree/validators.py:139 +#: InvenTree/validators.py:136 msgid "Overage must not exceed 100%" msgstr "Overschot mag niet groter zijn dan 100%" -#: InvenTree/validators.py:145 +#: InvenTree/validators.py:142 msgid "Invalid value for overage" msgstr "Ongeldige waarde voor overschot" @@ -750,14 +658,14 @@ 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:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: build/api.py:299 part/models.py:4070 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "Verbruiksartikelen" -#: build/api.py:300 part/models.py:4084 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4064 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2529 #: templates/js/translated/table_filters.js:186 @@ -778,30 +686,30 @@ msgstr "Gevolgd" msgid "Allocated" msgstr "Toegewezen" -#: build/api.py:311 company/models.py:904 company/serializers.py:383 +#: build/api.py:311 company/models.py:872 company/serializers.py:359 #: 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:2561 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:234 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 -#: templates/js/translated/part.js:699 +#: templates/js/translated/part.js:693 templates/js/translated/part.js:695 +#: templates/js/translated/part.js:700 #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:575 msgid "Available" msgstr "Beschikbaar" -#: build/models.py:83 build/templates/build/build_base.html:9 +#: build/models.py:85 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_report.html:105 -#: stock/serializers.py:83 templates/email/build_order_completed.html:16 +#: stock/serializers.py:82 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:2892 msgid "Build Order" msgstr "Productieorder" -#: build/models.py:84 build/templates/build/build_base.html:13 +#: build/models.py:86 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 @@ -812,25 +720,25 @@ msgstr "Productieorder" msgid "Build Orders" msgstr "Productieorders" -#: build/models.py:131 +#: build/models.py:133 msgid "Invalid choice for parent build" msgstr "Ongeldige keuze voor bovenliggende productie" -#: build/models.py:142 order/models.py:240 +#: build/models.py:144 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "" -#: build/models.py:148 +#: build/models.py:150 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:209 +#: build/models.py:211 msgid "Build Order Reference" msgstr "Productieorderreferentie" -#: build/models.py:210 order/models.py:463 order/models.py:928 -#: order/models.py:1325 order/models.py:2056 part/admin.py:419 -#: part/models.py:4105 part/templates/part/upload_bom.html:54 +#: build/models.py:212 order/models.py:463 order/models.py:926 +#: order/models.py:1289 order/models.py:2020 part/admin.py:411 +#: part/models.py:4085 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_purchase_order_report.html:28 #: report/templates/report/inventree_return_order_report.html:26 @@ -844,27 +752,27 @@ msgstr "Productieorderreferentie" msgid "Reference" msgstr "Referentie" -#: build/models.py:221 +#: build/models.py:223 msgid "Brief description of the build (optional)" msgstr "Korte beschrijving van de build (optioneel)" -#: build/models.py:229 build/templates/build/build_base.html:183 +#: build/models.py:231 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Bovenliggende Productie" -#: build/models.py:230 +#: build/models.py:232 msgid "BuildOrder to which this build is allocated" msgstr "Productieorder waar deze productie aan is toegewezen" -#: build/models.py:235 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 -#: order/models.py:1450 order/models.py:1595 order/models.py:1596 -#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 -#: part/models.py:3191 part/models.py:3335 part/models.py:3358 -#: part/models.py:3379 part/models.py:3401 part/models.py:3511 -#: part/models.py:3807 part/models.py:3963 part/models.py:4056 -#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 +#: build/models.py:237 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1026 order/api.py:805 +#: order/models.py:1414 order/models.py:1559 order/models.py:1560 +#: part/api.py:1494 part/api.py:1788 part/models.py:395 part/models.py:3012 +#: part/models.py:3156 part/models.py:3303 part/models.py:3324 +#: part/models.py:3346 part/models.py:3477 part/models.py:3787 +#: part/models.py:3943 part/models.py:4036 part/models.py:4395 +#: part/serializers.py:1120 part/serializers.py:1726 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -875,8 +783,8 @@ msgstr "Productieorder waar deze productie aan is toegewezen" #: report/templates/report/inventree_return_order_report.html:24 #: report/templates/report/inventree_sales_order_report.html:27 #: report/templates/report/inventree_stock_location_report.html:102 -#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 -#: stock/serializers.py:818 templates/InvenTree/search.html:82 +#: stock/serializers.py:109 stock/serializers.py:157 stock/serializers.py:423 +#: stock/serializers.py:820 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 @@ -889,8 +797,8 @@ msgstr "Productieorder waar deze productie aan is toegewezen" #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 -#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2323 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:1944 templates/js/translated/part.js:2016 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 #: templates/js/translated/purchase_order.js:751 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1848 @@ -908,107 +816,107 @@ msgstr "Productieorder waar deze productie aan is toegewezen" msgid "Part" msgstr "Onderdeel" -#: build/models.py:243 +#: build/models.py:245 msgid "Select part to build" msgstr "Selecteer onderdeel om te produceren" -#: build/models.py:248 +#: build/models.py:250 msgid "Sales Order Reference" msgstr "Verkooporder Referentie" -#: build/models.py:252 +#: build/models.py:254 msgid "SalesOrder to which this build is allocated" msgstr "Verkooporder waar deze productie aan is toegewezen" -#: build/models.py:257 build/serializers.py:1000 +#: build/models.py:259 build/serializers.py:999 #: templates/js/translated/build.js:1731 #: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "Bronlocatie" -#: build/models.py:261 +#: build/models.py:263 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:266 +#: build/models.py:268 msgid "Destination Location" msgstr "Bestemmings Locatie" -#: build/models.py:270 +#: build/models.py:272 msgid "Select location where the completed items will be stored" msgstr "Selecteer locatie waar de voltooide items zullen worden opgeslagen" -#: build/models.py:274 +#: build/models.py:276 msgid "Build Quantity" msgstr "Productiehoeveelheid" -#: build/models.py:277 +#: build/models.py:279 msgid "Number of stock items to build" msgstr "Aantal voorraaditems om te produceren" -#: build/models.py:281 +#: build/models.py:283 msgid "Completed items" msgstr "Voltooide voorraadartikelen" -#: build/models.py:283 +#: build/models.py:285 msgid "Number of stock items which have been completed" msgstr "Aantal voorraadartikelen die zijn voltooid" -#: build/models.py:287 +#: build/models.py:289 msgid "Build Status" msgstr "Productiestatus" -#: build/models.py:291 +#: build/models.py:293 msgid "Build status code" msgstr "Productiestatuscode" -#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 -#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 +#: build/models.py:302 build/serializers.py:286 order/serializers.py:580 +#: stock/models.py:838 stock/serializers.py:74 stock/serializers.py:1458 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Batchcode" -#: build/models.py:304 build/serializers.py:288 +#: build/models.py:306 build/serializers.py:287 msgid "Batch code for this build output" msgstr "Batchcode voor deze productieuitvoer" -#: build/models.py:307 order/models.py:316 order/serializers.py:120 -#: part/models.py:1122 part/templates/part/part_base.html:310 +#: build/models.py:309 order/models.py:316 order/serializers.py:119 +#: part/models.py:1115 part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:338 #: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "Aanmaakdatum" -#: build/models.py:311 +#: build/models.py:313 msgid "Target completion date" msgstr "Verwachte opleveringsdatum" -#: build/models.py:312 +#: build/models.py:314 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:315 order/models.py:521 order/models.py:2101 +#: build/models.py:317 order/models.py:521 order/models.py:2065 #: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "Opleveringsdatum" -#: build/models.py:321 +#: build/models.py:323 msgid "completed by" msgstr "voltooid door" -#: build/models.py:329 templates/js/translated/build.js:2207 +#: build/models.py:331 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "Uitgegeven door" -#: build/models.py:330 +#: build/models.py:332 msgid "User who issued this build order" msgstr "Gebruiker die de productieorder heeft gegeven" -#: build/models.py:338 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:145 +#: build/models.py:340 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:147 #: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:232 part/models.py:1139 +#: order/templates/order/sales_order_base.html:232 part/models.py:1132 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_report.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 @@ -1019,31 +927,36 @@ msgstr "Gebruiker die de productieorder heeft gegeven" msgid "Responsible" msgstr "Verantwoordelijke" -#: build/models.py:339 +#: build/models.py:341 msgid "User or group responsible for this build order" msgstr "Gebruiker of groep verantwoordelijk voor deze bouwopdracht" -#: build/models.py:344 build/templates/build/detail.html:108 +#: build/models.py:346 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:184 -#: part/templates/part/part_base.html:383 stock/models.py:836 +#: part/templates/part/part_base.html:383 stock/models.py:834 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "Externe Link" -#: build/models.py:349 +#: build/models.py:347 common/models.py:3178 part/models.py:956 +#: stock/models.py:834 +msgid "Link to external URL" +msgstr "Link naar externe URL" + +#: build/models.py:351 msgid "Build Priority" msgstr "Bouw prioriteit" -#: build/models.py:352 +#: build/models.py:354 msgid "Priority of this build order" msgstr "Prioriteit van deze bouwopdracht" -#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: build/models.py:361 common/models.py:131 order/admin.py:18 #: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 #: templates/js/translated/build.js:2144 #: templates/js/translated/purchase_order.js:1710 @@ -1054,65 +967,65 @@ msgstr "Prioriteit van deze bouwopdracht" msgid "Project Code" msgstr "" -#: build/models.py:360 +#: build/models.py:362 msgid "Project code for this build order" msgstr "Project code voor deze build order" -#: build/models.py:593 build/models.py:658 +#: build/models.py:595 build/models.py:660 msgid "Failed to offload task to complete build allocations" msgstr "" -#: build/models.py:615 +#: build/models.py:617 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Productieorder {build} is voltooid" -#: build/models.py:621 +#: build/models.py:623 msgid "A build order has been completed" msgstr "Een productieorder is voltooid" -#: build/models.py:847 build/models.py:932 +#: build/models.py:849 build/models.py:934 msgid "No build output specified" msgstr "Geen productie uitvoer opgegeven" -#: build/models.py:850 +#: build/models.py:852 msgid "Build output is already completed" msgstr "Productie uitvoer is al voltooid" -#: build/models.py:853 +#: build/models.py:855 msgid "Build output does not match Build Order" msgstr "Productuitvoer komt niet overeen met de Productieorder" -#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 -#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 -#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 -#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 +#: build/models.py:938 build/serializers.py:219 build/serializers.py:268 +#: build/serializers.py:866 order/models.py:559 order/serializers.py:432 +#: order/serializers.py:575 part/serializers.py:1484 part/serializers.py:1884 +#: stock/models.py:677 stock/models.py:1495 stock/serializers.py:603 msgid "Quantity must be greater than zero" msgstr "Hoeveelheid moet groter zijn dan nul" -#: build/models.py:941 build/serializers.py:225 +#: build/models.py:943 build/serializers.py:224 msgid "Quantity cannot be greater than the output quantity" msgstr "Hoeveelheid kan niet groter zijn dan aantal" -#: build/models.py:1001 build/serializers.py:548 +#: build/models.py:1003 build/serializers.py:547 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1352 +#: build/models.py:1344 msgid "Build Order Line Item" msgstr "" -#: build/models.py:1377 +#: build/models.py:1369 msgid "Build object" msgstr "Bouw object" -#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 -#: build/serializers.py:254 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2539 -#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 -#: part/forms.py:48 part/models.py:3205 part/models.py:4078 +#: build/models.py:1383 build/models.py:1639 build/serializers.py:206 +#: build/serializers.py:253 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2509 +#: order/models.py:1272 order/models.py:1931 order/serializers.py:1327 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3170 part/models.py:4058 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1121,8 +1034,8 @@ msgstr "Bouw object" #: report/templates/report/inventree_sales_order_report.html:29 #: report/templates/report/inventree_stock_location_report.html:104 #: report/templates/report/inventree_test_report.html:90 -#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 -#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:125 stock/serializers.py:165 stock/serializers.py:594 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1133,8 +1046,8 @@ msgstr "Bouw object" #: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 #: templates/js/translated/model_renderers.js:236 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:962 +#: templates/js/translated/part.js:1812 templates/js/translated/part.js:3342 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1154,38 +1067,38 @@ msgstr "Bouw object" msgid "Quantity" msgstr "Hoeveelheid" -#: build/models.py:1392 +#: build/models.py:1384 msgid "Required quantity for build order" msgstr "Vereiste hoeveelheid voor bouwopdracht" -#: build/models.py:1472 +#: build/models.py:1464 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:1481 +#: build/models.py:1473 #, 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:1491 order/models.py:1918 +#: build/models.py:1483 order/models.py:1882 msgid "Stock item is over-allocated" msgstr "Voorraad item is te veel toegewezen" -#: build/models.py:1497 order/models.py:1921 +#: build/models.py:1489 order/models.py:1885 msgid "Allocation quantity must be greater than zero" msgstr "Toewijzing hoeveelheid moet groter zijn dan nul" -#: build/models.py:1503 +#: build/models.py:1495 msgid "Quantity must be 1 for serialized stock" msgstr "Hoeveelheid moet 1 zijn voor geserialiseerde voorraad" -#: build/models.py:1562 +#: build/models.py:1554 msgid "Selected stock item does not match BOM line" msgstr "Geselecteerde voorraadartikelen komen niet overeen met de BOM-regel" -#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 -#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 -#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: build/models.py:1626 build/serializers.py:846 order/serializers.py:1171 +#: order/serializers.py:1192 stock/models.py:358 stock/serializers.py:91 +#: stock/serializers.py:697 stock/serializers.py:1177 stock/serializers.py:1289 #: stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 @@ -1201,70 +1114,70 @@ msgstr "Geselecteerde voorraadartikelen komen niet overeen met de BOM-regel" msgid "Stock Item" msgstr "Voorraadartikel" -#: build/models.py:1635 +#: build/models.py:1627 msgid "Source stock item" msgstr "Bron voorraadartikel" -#: build/models.py:1648 +#: build/models.py:1640 msgid "Stock quantity to allocate to build" msgstr "Voorraad hoeveelheid toe te wijzen aan productie" -#: build/models.py:1656 +#: build/models.py:1648 msgid "Install into" msgstr "Installeren in" -#: build/models.py:1657 +#: build/models.py:1649 msgid "Destination stock item" msgstr "Bestemming voorraadartikel" -#: build/serializers.py:157 build/serializers.py:876 +#: build/serializers.py:156 build/serializers.py:875 #: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "Productieuitvoer" -#: build/serializers.py:169 +#: build/serializers.py:168 msgid "Build output does not match the parent build" msgstr "Productieuitvoer komt niet overeen met de bovenliggende productie" -#: build/serializers.py:173 +#: build/serializers.py:172 msgid "Output part does not match BuildOrder part" msgstr "Uitvoeronderdeel komt niet overeen met productieorderonderdeel" -#: build/serializers.py:177 +#: build/serializers.py:176 msgid "This build output has already been completed" msgstr "Deze productieuitvoer is al voltooid" -#: build/serializers.py:188 +#: build/serializers.py:187 msgid "This build output is not fully allocated" msgstr "Deze productieuitvoer is niet volledig toegewezen" -#: build/serializers.py:208 build/serializers.py:255 +#: build/serializers.py:207 build/serializers.py:254 msgid "Enter quantity for build output" msgstr "Voer hoeveelheid in voor productie uitvoer" -#: build/serializers.py:276 +#: build/serializers.py:275 msgid "Integer quantity required for trackable parts" msgstr "Hoeveelheid als geheel getal vereist voor traceerbare onderdelen" -#: build/serializers.py:279 +#: build/serializers.py:278 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:294 order/serializers.py:589 order/serializers.py:1343 -#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:293 order/serializers.py:588 order/serializers.py:1331 +#: stock/serializers.py:614 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Serienummers" -#: build/serializers.py:295 +#: build/serializers.py:294 msgid "Enter serial numbers for build outputs" msgstr "Voer serienummers in voor productieuitvoeren" -#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 -#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 -#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 -#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 -#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 +#: build/serializers.py:299 build/serializers.py:440 build/serializers.py:512 +#: order/serializers.py:564 order/serializers.py:672 order/serializers.py:1656 +#: part/serializers.py:1140 stock/serializers.py:100 stock/serializers.py:625 +#: stock/serializers.py:785 stock/serializers.py:881 stock/serializers.py:1321 +#: stock/serializers.py:1577 stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:1001 #: templates/js/translated/build.js:2372 @@ -1280,54 +1193,54 @@ msgstr "Voer serienummers in voor productieuitvoeren" msgid "Location" msgstr "Locatie" -#: build/serializers.py:301 +#: build/serializers.py:300 msgid "Stock location for build output" msgstr "" -#: build/serializers.py:315 +#: build/serializers.py:314 msgid "Auto Allocate Serial Numbers" msgstr "Serienummers automatisch toewijzen" -#: build/serializers.py:316 +#: build/serializers.py:315 msgid "Automatically allocate required items with matching serial numbers" msgstr "Vereiste artikelen automatisch toewijzen met overeenkomende serienummers" -#: build/serializers.py:331 +#: build/serializers.py:330 msgid "Serial numbers must be provided for trackable parts" msgstr "" -#: build/serializers.py:356 stock/api.py:1031 +#: build/serializers.py:355 stock/api.py:1041 msgid "The following serial numbers already exist or are invalid" msgstr "De volgende serienummers bestaan al of zijn ongeldig" -#: build/serializers.py:403 build/serializers.py:465 build/serializers.py:554 +#: build/serializers.py:402 build/serializers.py:464 build/serializers.py:553 msgid "A list of build outputs must be provided" msgstr "Een lijst van productieuitvoeren moet worden verstrekt" -#: build/serializers.py:442 +#: build/serializers.py:441 msgid "Stock location for scrapped outputs" msgstr "Voorraadlocatie voor geannuleerde outputs" -#: build/serializers.py:448 +#: build/serializers.py:447 msgid "Discard Allocations" msgstr "Toewijzingen weggooien" -#: build/serializers.py:449 +#: build/serializers.py:448 msgid "Discard any stock allocations for scrapped outputs" msgstr "Verwijder alle voorraadtoewijzingen voor geannuleerde outputs" -#: build/serializers.py:454 +#: build/serializers.py:453 msgid "Reason for scrapping build output(s)" msgstr "Reden voor annulering van bouworder(s)" -#: build/serializers.py:514 +#: build/serializers.py:513 msgid "Location for completed build outputs" msgstr "Locatie van voltooide productieuitvoeren" -#: build/serializers.py:520 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:952 -#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 -#: stock/serializers.py:930 stock/serializers.py:1469 +#: build/serializers.py:519 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2044 order/serializers.py:596 stock/admin.py:164 +#: stock/serializers.py:932 stock/serializers.py:1465 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 @@ -1339,188 +1252,188 @@ msgstr "Locatie van voltooide productieuitvoeren" msgid "Status" msgstr "" -#: build/serializers.py:526 +#: build/serializers.py:525 msgid "Accept Incomplete Allocation" msgstr "Incomplete Toewijzing Accepteren" -#: build/serializers.py:527 +#: build/serializers.py:526 msgid "Complete outputs if stock has not been fully allocated" msgstr "Voltooi de uitvoer als de voorraad niet volledig is toegewezen" -#: build/serializers.py:612 +#: build/serializers.py:611 msgid "Consume Allocated Stock" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:612 msgid "Consume any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:619 +#: build/serializers.py:618 msgid "Remove Incomplete Outputs" msgstr "Verwijder Incomplete Uitvoeren" -#: build/serializers.py:620 +#: build/serializers.py:619 msgid "Delete any build outputs which have not been completed" msgstr "Verwijder alle productieuitvoeren die niet zijn voltooid" -#: build/serializers.py:647 +#: build/serializers.py:646 msgid "Not permitted" msgstr "Niet toegestaan" -#: build/serializers.py:648 +#: build/serializers.py:647 msgid "Accept as consumed by this build order" msgstr "Accepteer zoals geconsumeerd onder deze bouwopdracht" -#: build/serializers.py:649 +#: build/serializers.py:648 msgid "Deallocate before completing this build order" msgstr "De-alloceren voordat deze bouwopdracht voltooid wordt" -#: build/serializers.py:679 +#: build/serializers.py:678 msgid "Overallocated Stock" msgstr "Overgealloceerde voorraad" -#: build/serializers.py:681 +#: build/serializers.py:680 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:691 +#: build/serializers.py:690 msgid "Some stock items have been overallocated" msgstr "Sommige voorraadartikelen zijn overalloceerd" -#: build/serializers.py:696 +#: build/serializers.py:695 msgid "Accept Unallocated" msgstr "Accepteer Niet-toegewezen" -#: build/serializers.py:697 +#: build/serializers.py:696 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:707 templates/js/translated/build.js:315 +#: build/serializers.py:706 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "Vereiste voorraad is niet volledig toegewezen" -#: build/serializers.py:712 order/serializers.py:301 order/serializers.py:1246 +#: build/serializers.py:711 order/serializers.py:300 order/serializers.py:1234 msgid "Accept Incomplete" msgstr "Accepteer Onvolledig" -#: build/serializers.py:713 +#: build/serializers.py:712 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:723 templates/js/translated/build.js:319 +#: build/serializers.py:722 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "Vereiste productiehoeveelheid is voltooid" -#: build/serializers.py:732 templates/js/translated/build.js:303 +#: build/serializers.py:731 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "Productieorder heeft onvolledige uitvoeren" -#: build/serializers.py:770 +#: build/serializers.py:769 msgid "Build Line" msgstr "Productielijn" -#: build/serializers.py:780 +#: build/serializers.py:779 msgid "Build output" msgstr "Productieuitvoer" -#: build/serializers.py:788 +#: build/serializers.py:787 msgid "Build output must point to the same build" msgstr "Productieuitvoer moet naar dezelfde productie wijzen" -#: build/serializers.py:824 +#: build/serializers.py:823 msgid "Build Line Item" msgstr "Bouw lijn-item" -#: build/serializers.py:838 +#: build/serializers.py:837 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:853 stock/serializers.py:1194 +#: build/serializers.py:852 stock/serializers.py:1190 msgid "Item must be in stock" msgstr "Artikel moet op voorraad zijn" -#: build/serializers.py:901 order/serializers.py:1237 +#: build/serializers.py:900 order/serializers.py:1225 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Beschikbare hoeveelheid ({q}) overschreden" -#: build/serializers.py:907 +#: build/serializers.py:906 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:914 +#: build/serializers.py:913 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:938 order/serializers.py:1489 +#: build/serializers.py:937 order/serializers.py:1477 msgid "Allocation items must be provided" msgstr "Allocaties voor artikelen moeten worden opgegeven" -#: build/serializers.py:1001 +#: build/serializers.py:1000 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:1009 +#: build/serializers.py:1008 msgid "Exclude Location" msgstr "Locatie uitsluiten" -#: build/serializers.py:1010 +#: build/serializers.py:1009 msgid "Exclude stock items from this selected location" msgstr "Voorraadartikelen van deze geselecteerde locatie uitsluiten" -#: build/serializers.py:1015 +#: build/serializers.py:1014 msgid "Interchangeable Stock" msgstr "Uitwisselbare voorraad" -#: build/serializers.py:1016 +#: build/serializers.py:1015 msgid "Stock items in multiple locations can be used interchangeably" msgstr "Voorraadartikelen op meerdere locaties kunnen uitwisselbaar worden gebruikt" -#: build/serializers.py:1021 +#: build/serializers.py:1020 msgid "Substitute Stock" msgstr "Vervangende Voorraad" -#: build/serializers.py:1022 +#: build/serializers.py:1021 msgid "Allow allocation of substitute parts" msgstr "Toewijzing van vervangende onderdelen toestaan" -#: build/serializers.py:1027 +#: build/serializers.py:1026 msgid "Optional Items" msgstr "Optionele Items" -#: build/serializers.py:1028 +#: build/serializers.py:1027 msgid "Allocate optional BOM items to build order" msgstr "Alloceer optionele BOM items om bestelling te bouwen" -#: build/serializers.py:1050 +#: build/serializers.py:1049 msgid "Failed to start auto-allocation task" msgstr "" -#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 -#: stock/api.py:794 +#: build/serializers.py:1139 part/models.py:3953 part/models.py:4387 +#: stock/api.py:804 msgid "BOM Item" msgstr "Stuklijstartikel" -#: build/serializers.py:1149 templates/js/translated/index.js:130 +#: build/serializers.py:1148 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:832 part/serializers.py:1506 +#: build/serializers.py:1153 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:828 part/serializers.py:1502 #: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 -#: templates/js/translated/build.js:2613 templates/js/translated/part.js:709 -#: templates/js/translated/part.js:2148 +#: templates/js/translated/build.js:2613 templates/js/translated/part.js:710 +#: templates/js/translated/part.js:2149 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "In bestelling" -#: build/serializers.py:1159 part/serializers.py:1508 +#: build/serializers.py:1158 part/serializers.py:1504 #: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 +#: build/serializers.py:1163 part/bom.py:172 part/serializers.py:1527 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1929 msgid "Available Stock" @@ -1544,7 +1457,7 @@ msgstr "Geannuleerd" #: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 #: order/status_codes.py:44 order/status_codes.py:69 #: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:165 report/models.py:443 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 msgid "Complete" msgstr "Voltooid" @@ -1674,11 +1587,11 @@ 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:309 -#: order/models.py:1343 order/templates/order/order_base.html:186 +#: order/models.py:1307 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:196 #: report/templates/report/inventree_build_order_report.html:125 -#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1831 #: templates/js/translated/purchase_order.js:1739 #: templates/js/translated/purchase_order.js:2147 #: templates/js/translated/return_order.js:346 @@ -1711,8 +1624,8 @@ msgid "Completed Outputs" msgstr "Voltooide Uitvoeren" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 -#: order/models.py:1587 order/models.py:1701 order/models.py:1855 +#: build/templates/build/detail.html:101 order/api.py:1463 order/models.py:845 +#: order/models.py:1551 order/models.py:1665 order/models.py:1819 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_report.html:135 @@ -1762,7 +1675,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:1479 +#: build/templates/build/detail.html:49 order/models.py:1443 #: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "Bestemming" @@ -1775,7 +1688,7 @@ msgstr "Bestemmingslocatie niet opgegeven" msgid "Allocated Parts" msgstr "Toegewezen Onderdelen" -#: build/templates/build/detail.html:80 stock/admin.py:163 +#: build/templates/build/detail.html:80 stock/admin.py:162 #: stock/templates/stock/item_base.html:162 #: templates/js/translated/build.js:1380 #: templates/js/translated/model_renderers.js:241 @@ -1894,11 +1807,11 @@ msgstr "Bijlagen" msgid "Build Notes" msgstr "Productie notities" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:436 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -1914,6 +1827,34 @@ msgstr "Productieorderdetails" msgid "Incomplete Outputs" msgstr "Onvolledige Productieuitvoeren" +#: common/api.py:689 +msgid "Is Link" +msgstr "" + +#: common/api.py:697 +msgid "Is File" +msgstr "" + +#: common/api.py:739 +msgid "User does not have permission to delete this attachment" +msgstr "" + +#: common/currency.py:130 +msgid "Invalid currency code" +msgstr "" + +#: common/currency.py:132 +msgid "Duplicate currency code" +msgstr "" + +#: common/currency.py:137 +msgid "No valid currency codes provided" +msgstr "" + +#: common/currency.py:154 +msgid "No plugin" +msgstr "Geen plug-in gevonden" + #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1952,1509 +1893,1512 @@ msgstr "{name.title()} Bestand" msgid "Select {name} file to upload" msgstr "Kies {name} bestand om te uploaden" -#: common/models.py:71 +#: common/models.py:73 msgid "Updated" msgstr "Bijgewerkt" -#: common/models.py:72 +#: common/models.py:74 msgid "Timestamp of last update" msgstr "Tijdstempel van laatste update" -#: common/models.py:105 +#: common/models.py:107 msgid "Site URL is locked by configuration" msgstr "" -#: common/models.py:130 +#: common/models.py:132 msgid "Unique project code" msgstr "Unieke projectcode" -#: common/models.py:137 +#: common/models.py:139 msgid "Project description" msgstr "Projectbeschrijving" -#: common/models.py:146 +#: common/models.py:148 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:766 +#: common/models.py:765 msgid "Settings key (must be unique - case insensitive)" msgstr "Instellingssleutel (moet uniek zijn - hoofdletter ongevoelig)" -#: common/models.py:770 +#: common/models.py:769 msgid "Settings value" msgstr "Instellingswaarde" -#: common/models.py:822 +#: common/models.py:821 msgid "Chosen value is not a valid option" msgstr "Gekozen waarde is geen geldige optie" -#: common/models.py:838 +#: common/models.py:837 msgid "Value must be a boolean value" msgstr "Waarde moet een booleaanse waarde zijn" -#: common/models.py:846 +#: common/models.py:845 msgid "Value must be an integer value" msgstr "Waarde moet een geheel getal zijn" -#: common/models.py:883 +#: common/models.py:882 msgid "Key string must be unique" msgstr "Sleutelreeks moet uniek zijn" -#: common/models.py:1115 +#: common/models.py:1114 msgid "No group" msgstr "Geen groep" -#: common/models.py:1158 -msgid "An empty domain is not allowed." -msgstr "Een leeg domein is niet toegestaan." - -#: common/models.py:1160 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "Ongeldige domeinnaam: {domain}" - -#: common/models.py:1172 -msgid "No plugin" -msgstr "Geen plug-in gevonden" - -#: common/models.py:1260 +#: common/models.py:1213 msgid "Restart required" msgstr "Opnieuw opstarten vereist" -#: common/models.py:1262 +#: common/models.py:1215 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:1269 +#: common/models.py:1222 msgid "Pending migrations" msgstr "Migraties in behandeling" -#: common/models.py:1270 +#: common/models.py:1223 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1275 +#: common/models.py:1228 msgid "Server Instance Name" msgstr "ID Serverinstantie" -#: common/models.py:1277 +#: common/models.py:1230 msgid "String descriptor for the server instance" msgstr "Stringbeschrijving voor de server instantie" -#: common/models.py:1281 +#: common/models.py:1234 msgid "Use instance name" msgstr "Gebruik de instantie naam" -#: common/models.py:1282 +#: common/models.py:1235 msgid "Use the instance name in the title-bar" msgstr "Gebruik de naam van de instantie in de titelbalk" -#: common/models.py:1287 +#: common/models.py:1240 msgid "Restrict showing `about`" msgstr "Tonen `over` beperken" -#: common/models.py:1288 +#: common/models.py:1241 msgid "Show the `about` modal only to superusers" msgstr "Toon de `over` modal alleen aan superusers" -#: common/models.py:1293 company/models.py:108 company/models.py:109 +#: common/models.py:1246 company/models.py:111 company/models.py:112 msgid "Company name" msgstr "Bedrijfsnaam" -#: common/models.py:1294 +#: common/models.py:1247 msgid "Internal company name" msgstr "Interne bedrijfsnaam" -#: common/models.py:1298 +#: common/models.py:1251 msgid "Base URL" msgstr "Basis-URL" -#: common/models.py:1299 +#: common/models.py:1252 msgid "Base URL for server instance" msgstr "Basis URL voor serverinstantie" -#: common/models.py:1305 +#: common/models.py:1258 msgid "Default Currency" msgstr "Standaard Valuta" -#: common/models.py:1306 +#: common/models.py:1259 msgid "Select base currency for pricing calculations" msgstr "Selecteer basisvaluta voor de berekening van prijzen" -#: common/models.py:1312 +#: common/models.py:1265 +msgid "Supported Currencies" +msgstr "" + +#: common/models.py:1266 +msgid "List of supported currency codes" +msgstr "" + +#: common/models.py:1272 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1314 +#: common/models.py:1274 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1317 common/models.py:1373 common/models.py:1386 -#: common/models.py:1394 common/models.py:1403 common/models.py:1412 -#: common/models.py:1620 common/models.py:1642 common/models.py:1757 -#: common/models.py:2076 +#: common/models.py:1277 common/models.py:1333 common/models.py:1346 +#: common/models.py:1354 common/models.py:1363 common/models.py:1372 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:2046 msgid "days" msgstr "dagen" -#: common/models.py:1321 +#: common/models.py:1281 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1322 +#: common/models.py:1282 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1327 +#: common/models.py:1287 msgid "Download from URL" msgstr "Download van URL" -#: common/models.py:1329 +#: common/models.py:1289 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:1335 +#: common/models.py:1295 msgid "Download Size Limit" msgstr "Download limiet" -#: common/models.py:1336 +#: common/models.py:1296 msgid "Maximum allowable download size for remote image" msgstr "Maximale downloadgrootte voor externe afbeelding" -#: common/models.py:1342 +#: common/models.py:1302 msgid "User-agent used to download from URL" msgstr "User-agent gebruikt om te downloaden van URL" -#: common/models.py:1344 +#: common/models.py:1304 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:1349 +#: common/models.py:1309 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1350 +#: common/models.py:1310 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1355 +#: common/models.py:1315 msgid "Require confirm" msgstr "Bevestiging vereist" -#: common/models.py:1356 +#: common/models.py:1316 msgid "Require explicit user confirmation for certain action." msgstr "Vereis expliciete bevestiging van de gebruiker voor bepaalde actie." -#: common/models.py:1361 +#: common/models.py:1321 msgid "Tree Depth" msgstr "Boomstructuur Diepte" -#: common/models.py:1363 +#: common/models.py:1323 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:1369 +#: common/models.py:1329 msgid "Update Check Interval" msgstr "Interval voor update" -#: common/models.py:1370 +#: common/models.py:1330 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:1376 +#: common/models.py:1336 msgid "Automatic Backup" msgstr "Automatische backup" -#: common/models.py:1377 +#: common/models.py:1337 msgid "Enable automatic backup of database and media files" msgstr "Automatische back-up van database- en mediabestanden inschakelen" -#: common/models.py:1382 +#: common/models.py:1342 msgid "Auto Backup Interval" msgstr "Automatische backup interval" -#: common/models.py:1383 +#: common/models.py:1343 msgid "Specify number of days between automated backup events" msgstr "Geef het aantal dagen op tussen geautomatiseerde backup" -#: common/models.py:1389 +#: common/models.py:1349 msgid "Task Deletion Interval" msgstr "Interval Taak Verwijderen" -#: common/models.py:1391 +#: common/models.py:1351 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:1398 +#: common/models.py:1358 msgid "Error Log Deletion Interval" msgstr "Error Log Verwijderings Interval" -#: common/models.py:1400 +#: common/models.py:1360 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:1407 +#: common/models.py:1367 msgid "Notification Deletion Interval" msgstr "Interval Verwijderen Notificatie" -#: common/models.py:1409 +#: common/models.py:1369 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:1416 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1376 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Streepjescodeondersteuning" -#: common/models.py:1417 +#: common/models.py:1377 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1422 +#: common/models.py:1382 msgid "Barcode Input Delay" msgstr "Barcode Invoer Vertraging" -#: common/models.py:1423 +#: common/models.py:1383 msgid "Barcode input processing delay time" msgstr "Barcode invoerverwerking vertraging" -#: common/models.py:1429 +#: common/models.py:1389 msgid "Barcode Webcam Support" msgstr "Barcode Webcam Ondersteuning" -#: common/models.py:1430 +#: common/models.py:1390 msgid "Allow barcode scanning via webcam in browser" msgstr "Barcode via webcam scannen in browser toestaan" -#: common/models.py:1435 +#: common/models.py:1395 msgid "Part Revisions" msgstr "Herzieningen onderdeel" -#: common/models.py:1436 +#: common/models.py:1396 msgid "Enable revision field for Part" msgstr "Revisieveld voor onderdeel inschakelen" -#: common/models.py:1441 +#: common/models.py:1401 msgid "Allow Deletion from Assembly" msgstr "" -#: common/models.py:1442 +#: common/models.py:1402 msgid "Allow deletion of parts which are used in an assembly" msgstr "" -#: common/models.py:1447 +#: common/models.py:1407 msgid "IPN Regex" msgstr "" -#: common/models.py:1448 +#: common/models.py:1408 msgid "Regular expression pattern for matching Part IPN" msgstr "Regulier expressiepatroon voor het overeenkomende Onderdeel IPN" -#: common/models.py:1451 +#: common/models.py:1411 msgid "Allow Duplicate IPN" msgstr "Duplicaat IPN toestaan" -#: common/models.py:1452 +#: common/models.py:1412 msgid "Allow multiple parts to share the same IPN" msgstr "Toestaan dat meerdere onderdelen dezelfde IPN gebruiken" -#: common/models.py:1457 +#: common/models.py:1417 msgid "Allow Editing IPN" msgstr "Bewerken IPN toestaan" -#: common/models.py:1458 +#: common/models.py:1418 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:1463 +#: common/models.py:1423 msgid "Copy Part BOM Data" msgstr "Kopieer Onderdeel Stuklijstgegevens" -#: common/models.py:1464 +#: common/models.py:1424 msgid "Copy BOM data by default when duplicating a part" msgstr "Kopieer standaard stuklijstgegevens bij het dupliceren van een onderdeel" -#: common/models.py:1469 +#: common/models.py:1429 msgid "Copy Part Parameter Data" msgstr "Kopieer Onderdeel Parametergegevens" -#: common/models.py:1470 +#: common/models.py:1430 msgid "Copy parameter data by default when duplicating a part" msgstr "Parametergegevens standaard kopiëren bij het dupliceren van een onderdeel" -#: common/models.py:1475 +#: common/models.py:1435 msgid "Copy Part Test Data" msgstr "Kopieer Onderdeel Testdata" -#: common/models.py:1476 +#: common/models.py:1436 msgid "Copy test data by default when duplicating a part" msgstr "Testdata standaard kopiëren bij het dupliceren van een onderdeel" -#: common/models.py:1481 +#: common/models.py:1441 msgid "Copy Category Parameter Templates" msgstr "Kopiëer Categorieparameter Sjablonen" -#: common/models.py:1482 +#: common/models.py:1442 msgid "Copy category parameter templates when creating a part" msgstr "Kopieer categorieparameter sjablonen bij het aanmaken van een onderdeel" -#: common/models.py:1487 part/admin.py:108 part/models.py:3815 -#: report/models.py:293 report/models.py:360 report/serializers.py:90 -#: report/serializers.py:131 stock/serializers.py:228 +#: common/models.py:1447 part/admin.py:108 part/models.py:3795 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:227 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "Sjabloon" -#: common/models.py:1488 +#: common/models.py:1448 msgid "Parts are templates by default" msgstr "Onderdelen zijn standaard sjablonen" -#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 +#: common/models.py:1453 part/admin.py:91 part/admin.py:425 part/models.py:1052 #: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" msgstr "Samenstelling" -#: common/models.py:1494 +#: common/models.py:1454 msgid "Parts can be assembled from other components by default" msgstr "Onderdelen kunnen standaard vanuit andere componenten worden samengesteld" -#: common/models.py:1499 part/admin.py:95 part/models.py:1065 +#: common/models.py:1459 part/admin.py:95 part/models.py:1058 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1500 +#: common/models.py:1460 msgid "Parts can be used as sub-components by default" msgstr "Onderdelen kunnen standaard worden gebruikt als subcomponenten" -#: common/models.py:1505 part/admin.py:100 part/models.py:1077 +#: common/models.py:1465 part/admin.py:100 part/models.py:1070 msgid "Purchaseable" msgstr "Koopbaar" -#: common/models.py:1506 +#: common/models.py:1466 msgid "Parts are purchaseable by default" msgstr "Onderdelen kunnen standaard gekocht worden" -#: common/models.py:1511 part/admin.py:104 part/models.py:1083 +#: common/models.py:1471 part/admin.py:104 part/models.py:1076 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "Verkoopbaar" -#: common/models.py:1512 +#: common/models.py:1472 msgid "Parts are salable by default" msgstr "Onderdelen kunnen standaard verkocht worden" -#: common/models.py:1517 part/admin.py:113 part/models.py:1071 +#: common/models.py:1477 part/admin.py:113 part/models.py:1064 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" msgstr "Volgbaar" -#: common/models.py:1518 +#: common/models.py:1478 msgid "Parts are trackable by default" msgstr "Onderdelen kunnen standaard gevolgd worden" -#: common/models.py:1523 part/admin.py:117 part/models.py:1093 +#: common/models.py:1483 part/admin.py:117 part/models.py:1086 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" msgstr "Virtueel" -#: common/models.py:1524 +#: common/models.py:1484 msgid "Parts are virtual by default" msgstr "Onderdelen zijn standaard virtueel" -#: common/models.py:1529 +#: common/models.py:1489 msgid "Show Import in Views" msgstr "Toon Import in Weergaven" -#: common/models.py:1530 +#: common/models.py:1490 msgid "Display the import wizard in some part views" msgstr "Toon de importwizard in sommige onderdelenweergaven" -#: common/models.py:1535 +#: common/models.py:1495 msgid "Show related parts" msgstr "Verwante onderdelen tonen" -#: common/models.py:1536 +#: common/models.py:1496 msgid "Display related parts for a part" msgstr "Verwante onderdelen voor een onderdeel tonen" -#: common/models.py:1541 +#: common/models.py:1501 msgid "Initial Stock Data" msgstr "Initiële voorraadgegevens" -#: common/models.py:1542 +#: common/models.py:1502 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:1547 templates/js/translated/part.js:107 +#: common/models.py:1507 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Initiële leveranciergegevens" -#: common/models.py:1549 +#: common/models.py:1509 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:1555 +#: common/models.py:1515 msgid "Part Name Display Format" msgstr "Onderdelennaam Weergaveopmaak" -#: common/models.py:1556 +#: common/models.py:1516 msgid "Format to display the part name" msgstr "Opmaak om de onderdeelnaam weer te geven" -#: common/models.py:1562 +#: common/models.py:1522 msgid "Part Category Default Icon" msgstr "Standaardicoon voor onderdeel catagorie" -#: common/models.py:1563 +#: common/models.py:1523 msgid "Part category default icon (empty means no icon)" msgstr "Standaardicoon voor onderdeel catagorie (leeg betekent geen pictogram)" -#: common/models.py:1567 +#: common/models.py:1527 msgid "Enforce Parameter Units" msgstr "Forceer Parameter Eenheden" -#: common/models.py:1569 +#: common/models.py:1529 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:1575 +#: common/models.py:1535 msgid "Minimum Pricing Decimal Places" msgstr "Minimaal aantal prijs decimalen" -#: common/models.py:1577 +#: common/models.py:1537 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:1583 +#: common/models.py:1548 msgid "Maximum Pricing Decimal Places" msgstr "Maximum prijs decimalen" -#: common/models.py:1585 +#: common/models.py:1550 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:1591 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "Gebruik leveranciersprijzen" -#: common/models.py:1593 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "Prijsvoordelen leveranciers opnemen in de totale prijsberekening" -#: common/models.py:1599 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "Aankoopgeschiedenis overschrijven" -#: common/models.py:1601 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "Historische order prijzen overschrijven de prijzen van de leverancier" -#: common/models.py:1607 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "Gebruik voorraaditem prijzen" -#: common/models.py:1609 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "Gebruik prijzen van handmatig ingevoerde voorraadgegevens voor prijsberekeningen" -#: common/models.py:1615 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "Voorraad artikelprijs leeftijd" -#: common/models.py:1617 +#: common/models.py:1587 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:1624 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "Gebruik variantprijzen" -#: common/models.py:1625 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "Variantenprijzen opnemen in de totale prijsberekening" -#: common/models.py:1630 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "Alleen actieve varianten" -#: common/models.py:1632 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "Gebruik alleen actieve variantonderdelen voor het berekenen van variantprijzen" -#: common/models.py:1638 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "Prijzen Herbouw interval" -#: common/models.py:1640 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "Aantal dagen voordat de prijzen voor onderdelen automatisch worden bijgewerkt" -#: common/models.py:1647 +#: common/models.py:1617 msgid "Internal Prices" msgstr "Interne Prijzen" -#: common/models.py:1648 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "Inschakelen van interne prijzen voor onderdelen" -#: common/models.py:1653 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "Interne prijs overschrijven" -#: common/models.py:1655 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "Indien beschikbaar, interne prijzen overschrijven berekeningen van prijsbereik" -#: common/models.py:1661 +#: common/models.py:1631 msgid "Enable label printing" msgstr "Printen van labels Inschakelen" -#: common/models.py:1662 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "Printen van labels via de webinterface inschakelen" -#: common/models.py:1667 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "Label Afbeelding DPI" -#: common/models.py:1669 +#: common/models.py:1639 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:1675 +#: common/models.py:1645 msgid "Enable Reports" msgstr "Activeer Rapportages" -#: common/models.py:1676 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "Activeer het genereren van rapporten" -#: common/models.py:1681 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "Foutopsporingsmodus" -#: common/models.py:1682 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "Rapporten genereren in debug modus (HTML uitvoer)" -#: common/models.py:1687 +#: common/models.py:1657 msgid "Log Report Errors" msgstr "" -#: common/models.py:1688 +#: common/models.py:1658 msgid "Log errors which occur when generating reports" msgstr "" -#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:301 +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:302 msgid "Page Size" msgstr "Paginagrootte" -#: common/models.py:1694 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "Standaard paginagrootte voor PDF rapporten" -#: common/models.py:1699 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "Activeer Testrapporten" -#: common/models.py:1700 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "Activeer het genereren van testrapporten" -#: common/models.py:1705 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "Testrapporten Toevoegen" -#: common/models.py:1707 +#: common/models.py:1677 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:1713 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "Globaal unieke serienummers" -#: common/models.py:1714 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "Serienummers voor voorraaditems moeten globaal uniek zijn" -#: common/models.py:1719 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "Serienummers automatisch invullen" -#: common/models.py:1720 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "Automatisch invullen van serienummer in formulieren" -#: common/models.py:1725 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "Verwijder uitgeputte voorraad" -#: common/models.py:1727 +#: common/models.py:1697 msgid "Determines default behavior when a stock item is depleted" msgstr "" -#: common/models.py:1733 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "Batchcode Sjabloon" -#: common/models.py:1735 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "Sjabloon voor het genereren van standaard batchcodes voor voorraadartikelen" -#: common/models.py:1740 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "Verlopen Voorraad" -#: common/models.py:1741 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "Verlopen voorraad functionaliteit inschakelen" -#: common/models.py:1746 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "Verkoop Verlopen Voorraad" -#: common/models.py:1747 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "Verkoop verlopen voorraad toestaan" -#: common/models.py:1752 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "Voorraad Vervaltijd" -#: common/models.py:1754 +#: common/models.py:1724 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:1761 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "Produceer Verlopen Voorraad" -#: common/models.py:1762 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "Sta productie met verlopen voorraad toe" -#: common/models.py:1767 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "Voorraad Eigenaar Toezicht" -#: common/models.py:1768 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "Eigenaarstoezicht over voorraadlocaties en items inschakelen" -#: common/models.py:1773 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "Voorraadlocatie standaard icoon" -#: common/models.py:1774 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "Standaard locatie pictogram (leeg betekent geen icoon)" -#: common/models.py:1778 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "Geïnstalleerde voorraad items weergeven" -#: common/models.py:1779 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "Geïnstalleerde voorraadartikelen in voorraadtabellen tonen" -#: common/models.py:1784 +#: common/models.py:1754 msgid "Check BOM when installing items" msgstr "" -#: common/models.py:1786 +#: common/models.py:1756 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "" -#: common/models.py:1792 +#: common/models.py:1762 msgid "Allow Out of Stock Transfer" msgstr "" -#: common/models.py:1794 +#: common/models.py:1764 msgid "Allow stock items which are not in stock to be transferred between stock locations" msgstr "" -#: common/models.py:1800 +#: common/models.py:1770 msgid "Build Order Reference Pattern" msgstr "Productieorderreferentiepatroon" -#: common/models.py:1802 +#: common/models.py:1772 msgid "Required pattern for generating Build Order reference field" msgstr "Vereist patroon voor het genereren van het Bouworderreferentieveld" -#: common/models.py:1808 common/models.py:1836 common/models.py:1858 -#: common/models.py:1894 +#: common/models.py:1778 common/models.py:1806 common/models.py:1828 +#: common/models.py:1864 msgid "Require Responsible Owner" msgstr "" -#: common/models.py:1809 common/models.py:1837 common/models.py:1859 -#: common/models.py:1895 +#: common/models.py:1779 common/models.py:1807 common/models.py:1829 +#: common/models.py:1865 msgid "A responsible owner must be assigned to each order" msgstr "" -#: common/models.py:1814 +#: common/models.py:1784 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1816 +#: common/models.py:1786 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:1822 +#: common/models.py:1792 msgid "Enable Return Orders" msgstr "Retourorders inschakelen" -#: common/models.py:1823 +#: common/models.py:1793 msgid "Enable return order functionality in the user interface" msgstr "Retourorder functionaliteit inschakelen in de gebruikersinterface" -#: common/models.py:1828 +#: common/models.py:1798 msgid "Return Order Reference Pattern" msgstr "Retourorder referentie patroon" -#: common/models.py:1830 +#: common/models.py:1800 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1842 +#: common/models.py:1812 msgid "Edit Completed Return Orders" msgstr "Bewerk voltooide retourorders" -#: common/models.py:1844 +#: common/models.py:1814 msgid "Allow editing of return orders after they have been completed" msgstr "Bewerken van retourorders toestaan nadat deze zijn voltooid" -#: common/models.py:1850 +#: common/models.py:1820 msgid "Sales Order Reference Pattern" msgstr "Verkooporderreferentiepatroon" -#: common/models.py:1852 +#: common/models.py:1822 msgid "Required pattern for generating Sales Order reference field" msgstr "Vereist patroon voor het genereren van het Verkooporderreferentieveld" -#: common/models.py:1864 +#: common/models.py:1834 msgid "Sales Order Default Shipment" msgstr "Standaard Verzending Verkooporder" -#: common/models.py:1865 +#: common/models.py:1835 msgid "Enable creation of default shipment with sales orders" msgstr "Aanmaken standaard verzending bij verkooporders inschakelen" -#: common/models.py:1870 +#: common/models.py:1840 msgid "Edit Completed Sales Orders" msgstr "Bewerk voltooide verkooporders" -#: common/models.py:1872 +#: common/models.py:1842 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:1878 -#, fuzzy -#| msgid "Mark order as complete" +#: common/models.py:1848 msgid "Mark Shipped Orders as Complete" -msgstr "Order markeren als voltooid" +msgstr "" -#: common/models.py:1880 +#: common/models.py:1850 msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" msgstr "" -#: common/models.py:1886 +#: common/models.py:1856 msgid "Purchase Order Reference Pattern" msgstr "Inkooporderreferentiepatroon" -#: common/models.py:1888 +#: common/models.py:1858 msgid "Required pattern for generating Purchase Order reference field" msgstr "Vereist patroon voor het genereren van het Inkooporderreferentieveld" -#: common/models.py:1900 +#: common/models.py:1870 msgid "Edit Completed Purchase Orders" msgstr "Bewerk voltooide verkooporders" -#: common/models.py:1902 +#: common/models.py:1872 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:1908 +#: common/models.py:1878 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1910 +#: common/models.py:1880 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1917 +#: common/models.py:1887 msgid "Enable password forgot" msgstr "Wachtwoord vergeten functie inschakelen" -#: common/models.py:1918 +#: common/models.py:1888 msgid "Enable password forgot function on the login pages" msgstr "Wachtwoord vergeten functie inschakelen op de inlogpagina's" -#: common/models.py:1923 +#: common/models.py:1893 msgid "Enable registration" msgstr "Registratie inschakelen" -#: common/models.py:1924 +#: common/models.py:1894 msgid "Enable self-registration for users on the login pages" msgstr "Zelfregistratie voor gebruikers op de inlogpagina's inschakelen" -#: common/models.py:1929 +#: common/models.py:1899 msgid "Enable SSO" msgstr "SSO inschakelen" -#: common/models.py:1930 +#: common/models.py:1900 msgid "Enable SSO on the login pages" msgstr "SSO inschakelen op de inlogpagina's" -#: common/models.py:1935 +#: common/models.py:1905 msgid "Enable SSO registration" msgstr "Schakel gebruikersregistratie met SSO in" -#: common/models.py:1937 +#: common/models.py:1907 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:1943 +#: common/models.py:1913 msgid "Email required" msgstr "E-mailadres verplicht" -#: common/models.py:1944 +#: common/models.py:1914 msgid "Require user to supply mail on signup" msgstr "Vereis gebruiker om e-mailadres te registreren bij aanmelding" -#: common/models.py:1949 +#: common/models.py:1919 msgid "Auto-fill SSO users" msgstr "SSO-gebruikers automatisch invullen" -#: common/models.py:1951 +#: common/models.py:1921 msgid "Automatically fill out user-details from SSO account-data" msgstr "Gebruikersdetails van SSO-accountgegevens automatisch invullen" -#: common/models.py:1957 +#: common/models.py:1927 msgid "Mail twice" msgstr "E-mail twee keer" -#: common/models.py:1958 +#: common/models.py:1928 msgid "On signup ask users twice for their mail" msgstr "Bij inschrijving gebruikers twee keer om hun e-mail vragen" -#: common/models.py:1963 +#: common/models.py:1933 msgid "Password twice" msgstr "Wachtwoord tweemaal" -#: common/models.py:1964 +#: common/models.py:1934 msgid "On signup ask users twice for their password" msgstr "Laat gebruikers twee keer om hun wachtwoord vragen tijdens het aanmelden" -#: common/models.py:1969 +#: common/models.py:1939 msgid "Allowed domains" msgstr "Toegestane domeinen" -#: common/models.py:1971 +#: common/models.py:1941 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "Inschrijven beperken tot bepaalde domeinen (komma-gescheiden, beginnend met @)" -#: common/models.py:1977 +#: common/models.py:1947 msgid "Group on signup" msgstr "Groep bij aanmelding" -#: common/models.py:1978 +#: common/models.py:1948 msgid "Group to which new users are assigned on registration" msgstr "Groep waaraan nieuwe gebruikers worden toegewezen bij registratie" -#: common/models.py:1983 +#: common/models.py:1953 msgid "Enforce MFA" msgstr "MFA afdwingen" -#: common/models.py:1984 +#: common/models.py:1954 msgid "Users must use multifactor security." msgstr "Gebruikers moeten multifactor-beveiliging gebruiken." -#: common/models.py:1989 +#: common/models.py:1959 msgid "Check plugins on startup" msgstr "Controleer plugins bij het opstarten" -#: common/models.py:1991 +#: common/models.py:1961 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:1999 +#: common/models.py:1969 msgid "Check for plugin updates" msgstr "" -#: common/models.py:2000 +#: common/models.py:1970 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:2006 +#: common/models.py:1976 msgid "Enable URL integration" msgstr "Activeer URL-integratie" -#: common/models.py:2007 +#: common/models.py:1977 msgid "Enable plugins to add URL routes" msgstr "Plugins toestaan om URL-routes toe te voegen" -#: common/models.py:2013 +#: common/models.py:1983 msgid "Enable navigation integration" msgstr "Activeer navigatie integratie" -#: common/models.py:2014 +#: common/models.py:1984 msgid "Enable plugins to integrate into navigation" msgstr "Plugins toestaan om te integreren in navigatie" -#: common/models.py:2020 +#: common/models.py:1990 msgid "Enable app integration" msgstr "Activeer app integratie" -#: common/models.py:2021 +#: common/models.py:1991 msgid "Enable plugins to add apps" msgstr "Activeer plug-ins om apps toe te voegen" -#: common/models.py:2027 +#: common/models.py:1997 msgid "Enable schedule integration" msgstr "Activeer planning integratie" -#: common/models.py:2028 +#: common/models.py:1998 msgid "Enable plugins to run scheduled tasks" msgstr "Activeer plugin om periodiek taken uit te voeren" -#: common/models.py:2034 +#: common/models.py:2004 msgid "Enable event integration" msgstr "Activeer evenement integratie" -#: common/models.py:2035 +#: common/models.py:2005 msgid "Enable plugins to respond to internal events" msgstr "Activeer plugin om op interne evenementen te reageren" -#: common/models.py:2041 +#: common/models.py:2011 msgid "Enable project codes" msgstr "Activeer project codes" -#: common/models.py:2042 +#: common/models.py:2012 msgid "Enable project codes for tracking projects" msgstr "Activeer project codes voor het bijhouden van projecten" -#: common/models.py:2047 +#: common/models.py:2017 msgid "Stocktake Functionality" msgstr "Voorraadcontrole functionaliteit" -#: common/models.py:2049 +#: common/models.py:2019 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:2055 +#: common/models.py:2025 msgid "Exclude External Locations" msgstr "Externe locaties uitsluiten" -#: common/models.py:2057 +#: common/models.py:2027 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "Voorraadartikelen op externe locaties uitsluiten van voorraadberekeningen" -#: common/models.py:2063 +#: common/models.py:2033 msgid "Automatic Stocktake Period" msgstr "Automatische Voorraadcontrole Periode" -#: common/models.py:2065 +#: common/models.py:2035 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:2071 +#: common/models.py:2041 msgid "Report Deletion Interval" msgstr "Rapport Verwijdering Interval" -#: common/models.py:2073 +#: common/models.py:2043 msgid "Stocktake reports will be deleted after specified number of days" msgstr "Voorraadrapportage zal worden verwijderd na het opgegeven aantal dagen" -#: common/models.py:2080 +#: common/models.py:2050 msgid "Display Users full names" msgstr "" -#: common/models.py:2081 +#: common/models.py:2051 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:2086 +#: common/models.py:2056 msgid "Enable Test Station Data" msgstr "" -#: common/models.py:2087 +#: common/models.py:2057 msgid "Enable test station data collection for test results" msgstr "" -#: common/models.py:2099 common/models.py:2509 +#: common/models.py:2069 common/models.py:2479 msgid "Settings key (must be unique - case insensitive" msgstr "Instellingssleutel (moet uniek zijn - hoofdletter ongevoelig" -#: common/models.py:2142 +#: common/models.py:2112 msgid "Hide inactive parts" msgstr "Inactieve Onderdelen Verbergen" -#: common/models.py:2144 +#: common/models.py:2114 msgid "Hide inactive parts in results displayed on the homepage" msgstr "Verberg inactieve delen bij items op de homepage" -#: common/models.py:2150 +#: common/models.py:2120 msgid "Show subscribed parts" msgstr "Toon geabonneerde onderdelen" -#: common/models.py:2151 +#: common/models.py:2121 msgid "Show subscribed parts on the homepage" msgstr "Toon geabonneerde onderdelen op de homepage" -#: common/models.py:2156 +#: common/models.py:2126 msgid "Show subscribed categories" msgstr "Toon geabonneerde categorieën" -#: common/models.py:2157 +#: common/models.py:2127 msgid "Show subscribed part categories on the homepage" msgstr "Toon geabonneerde onderdeel categorieën op de startpagina" -#: common/models.py:2162 +#: common/models.py:2132 msgid "Show latest parts" msgstr "Toon laatste onderdelen" -#: common/models.py:2163 +#: common/models.py:2133 msgid "Show latest parts on the homepage" msgstr "Toon laatste onderdelen op de startpagina" -#: common/models.py:2168 +#: common/models.py:2138 msgid "Show invalid BOMs" msgstr "" -#: common/models.py:2169 +#: common/models.py:2139 msgid "Show BOMs that await validation on the homepage" msgstr "Laat BOMs zien die wachten op validatie op de startpagina" -#: common/models.py:2174 +#: common/models.py:2144 msgid "Show recent stock changes" msgstr "Toon recente voorraadwijzigingen" -#: common/models.py:2175 +#: common/models.py:2145 msgid "Show recently changed stock items on the homepage" msgstr "Toon recent aangepaste voorraadartikelen op de startpagina" -#: common/models.py:2180 +#: common/models.py:2150 msgid "Show low stock" msgstr "Toon lage voorraad" -#: common/models.py:2181 +#: common/models.py:2151 msgid "Show low stock items on the homepage" msgstr "Toon lage voorraad van artikelen op de startpagina" -#: common/models.py:2186 +#: common/models.py:2156 msgid "Show depleted stock" msgstr "Toon lege voorraad" -#: common/models.py:2187 +#: common/models.py:2157 msgid "Show depleted stock items on the homepage" msgstr "Toon lege voorraad van artikelen op de startpagina" -#: common/models.py:2192 +#: common/models.py:2162 msgid "Show needed stock" msgstr "Toon benodigde voorraad" -#: common/models.py:2193 +#: common/models.py:2163 msgid "Show stock items needed for builds on the homepage" msgstr "Toon benodigde voorraad van artikelen voor productie op de startpagina" -#: common/models.py:2198 +#: common/models.py:2168 msgid "Show expired stock" msgstr "Toon verlopen voorraad" -#: common/models.py:2199 +#: common/models.py:2169 msgid "Show expired stock items on the homepage" msgstr "Toon verlopen voorraad van artikelen op de startpagina" -#: common/models.py:2204 +#: common/models.py:2174 msgid "Show stale stock" msgstr "Toon verouderde voorraad" -#: common/models.py:2205 +#: common/models.py:2175 msgid "Show stale stock items on the homepage" msgstr "Toon verouderde voorraad van artikelen op de startpagina" -#: common/models.py:2210 +#: common/models.py:2180 msgid "Show pending builds" msgstr "Toon openstaande producties" -#: common/models.py:2211 +#: common/models.py:2181 msgid "Show pending builds on the homepage" msgstr "Toon openstaande producties op de startpagina" -#: common/models.py:2216 +#: common/models.py:2186 msgid "Show overdue builds" msgstr "Toon achterstallige productie" -#: common/models.py:2217 +#: common/models.py:2187 msgid "Show overdue builds on the homepage" msgstr "Toon achterstallige producties op de startpagina" -#: common/models.py:2222 +#: common/models.py:2192 msgid "Show outstanding POs" msgstr "Toon uitstaande PO's" -#: common/models.py:2223 +#: common/models.py:2193 msgid "Show outstanding POs on the homepage" msgstr "Toon uitstaande PO's op de startpagina" -#: common/models.py:2228 +#: common/models.py:2198 msgid "Show overdue POs" msgstr "Toon achterstallige PO's" -#: common/models.py:2229 +#: common/models.py:2199 msgid "Show overdue POs on the homepage" msgstr "Toon achterstallige PO's op de startpagina" -#: common/models.py:2234 +#: common/models.py:2204 msgid "Show outstanding SOs" msgstr "Toon uitstaande SO's" -#: common/models.py:2235 +#: common/models.py:2205 msgid "Show outstanding SOs on the homepage" msgstr "Toon uitstaande SO's op de startpagina" -#: common/models.py:2240 +#: common/models.py:2210 msgid "Show overdue SOs" msgstr "Toon achterstallige SO's" -#: common/models.py:2241 +#: common/models.py:2211 msgid "Show overdue SOs on the homepage" msgstr "Toon achterstallige SO's op de startpagina" -#: common/models.py:2246 +#: common/models.py:2216 msgid "Show pending SO shipments" msgstr "Toon in behandeling SO verzendingen" -#: common/models.py:2247 +#: common/models.py:2217 msgid "Show pending SO shipments on the homepage" msgstr "Toon in behandeling zijnde SO verzendingen op de startpagina" -#: common/models.py:2252 +#: common/models.py:2222 msgid "Show News" msgstr "Nieuws tonen" -#: common/models.py:2253 +#: common/models.py:2223 msgid "Show news on the homepage" msgstr "Nieuws op de startpagina weergeven" -#: common/models.py:2258 +#: common/models.py:2228 msgid "Inline label display" msgstr "Inline labelweergave" -#: common/models.py:2260 +#: common/models.py:2230 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:2266 +#: common/models.py:2236 msgid "Default label printer" msgstr "Standaard label printer" -#: common/models.py:2268 +#: common/models.py:2238 msgid "Configure which label printer should be selected by default" msgstr "Instellen welke label printer standaard moet worden geselecteerd" -#: common/models.py:2274 +#: common/models.py:2244 msgid "Inline report display" msgstr "Inline rapport weergeven" -#: common/models.py:2276 +#: common/models.py:2246 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:2282 +#: common/models.py:2252 msgid "Search Parts" msgstr "Zoek Onderdelen" -#: common/models.py:2283 +#: common/models.py:2253 msgid "Display parts in search preview window" msgstr "Onderdelen weergeven in zoekscherm" -#: common/models.py:2288 +#: common/models.py:2258 msgid "Search Supplier Parts" msgstr "Zoek leveranciersonderdelen" -#: common/models.py:2289 +#: common/models.py:2259 msgid "Display supplier parts in search preview window" msgstr "Leveranciersonderdelen weergeven in zoekscherm" -#: common/models.py:2294 +#: common/models.py:2264 msgid "Search Manufacturer Parts" msgstr "Fabrikant onderdelen zoeken" -#: common/models.py:2295 +#: common/models.py:2265 msgid "Display manufacturer parts in search preview window" msgstr "Fabrikant onderdelen weergeven in zoekscherm" -#: common/models.py:2300 +#: common/models.py:2270 msgid "Hide Inactive Parts" msgstr "Inactieve Onderdelen Verbergen" -#: common/models.py:2301 +#: common/models.py:2271 msgid "Excluded inactive parts from search preview window" msgstr "Inactieve verkooporders weglaten in het zoekvenster" -#: common/models.py:2306 +#: common/models.py:2276 msgid "Search Categories" msgstr "Zoek categorieën" -#: common/models.py:2307 +#: common/models.py:2277 msgid "Display part categories in search preview window" msgstr "Toon onderdeelcategorieën in zoekvenster" -#: common/models.py:2312 +#: common/models.py:2282 msgid "Search Stock" msgstr "Zoek in Voorraad" -#: common/models.py:2313 +#: common/models.py:2283 msgid "Display stock items in search preview window" msgstr "Toon voorraad items in zoekvenster" -#: common/models.py:2318 +#: common/models.py:2288 msgid "Hide Unavailable Stock Items" msgstr "Verberg niet beschikbare voorraad items" -#: common/models.py:2320 +#: common/models.py:2290 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:2326 +#: common/models.py:2296 msgid "Search Locations" msgstr "Locaties doorzoeken" -#: common/models.py:2327 +#: common/models.py:2297 msgid "Display stock locations in search preview window" msgstr "Toon voorraadlocaties in zoekvenster" -#: common/models.py:2332 +#: common/models.py:2302 msgid "Search Companies" msgstr "Zoek bedrijven" -#: common/models.py:2333 +#: common/models.py:2303 msgid "Display companies in search preview window" msgstr "Toon bedrijven in zoekvenster" -#: common/models.py:2338 +#: common/models.py:2308 msgid "Search Build Orders" msgstr "Zoek Bouworders" -#: common/models.py:2339 +#: common/models.py:2309 msgid "Display build orders in search preview window" msgstr "Toon bouworders in zoekvenster" -#: common/models.py:2344 +#: common/models.py:2314 msgid "Search Purchase Orders" msgstr "Inkooporders Zoeken" -#: common/models.py:2345 +#: common/models.py:2315 msgid "Display purchase orders in search preview window" msgstr "Toon inkooporders in het zoekvenster" -#: common/models.py:2350 +#: common/models.py:2320 msgid "Exclude Inactive Purchase Orders" msgstr "Inactieve Inkooporders Weglaten" -#: common/models.py:2352 +#: common/models.py:2322 msgid "Exclude inactive purchase orders from search preview window" msgstr "Inactieve inkooporders weglaten in het zoekvenster" -#: common/models.py:2358 +#: common/models.py:2328 msgid "Search Sales Orders" msgstr "Verkooporders zoeken" -#: common/models.py:2359 +#: common/models.py:2329 msgid "Display sales orders in search preview window" msgstr "Toon verkooporders in het zoekvenster" -#: common/models.py:2364 +#: common/models.py:2334 msgid "Exclude Inactive Sales Orders" msgstr "Inactieve Verkooporders Weglaten" -#: common/models.py:2366 +#: common/models.py:2336 msgid "Exclude inactive sales orders from search preview window" msgstr "Inactieve verkooporders weglaten in het zoekvenster" -#: common/models.py:2372 +#: common/models.py:2342 msgid "Search Return Orders" msgstr "Zoek retourorders" -#: common/models.py:2373 +#: common/models.py:2343 msgid "Display return orders in search preview window" msgstr "Toon bouworders in zoekvenster" -#: common/models.py:2378 +#: common/models.py:2348 msgid "Exclude Inactive Return Orders" msgstr "Inactieve retourbestellingen weglaten" -#: common/models.py:2380 +#: common/models.py:2350 msgid "Exclude inactive return orders from search preview window" msgstr "Inactieve retourorders uitsluiten in zoekvenster" -#: common/models.py:2386 +#: common/models.py:2356 msgid "Search Preview Results" msgstr "Zoekvoorbeeld resultaten" -#: common/models.py:2388 +#: common/models.py:2358 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:2394 +#: common/models.py:2364 msgid "Regex Search" msgstr "Regex zoeken" -#: common/models.py:2395 +#: common/models.py:2365 msgid "Enable regular expressions in search queries" msgstr "Schakel reguliere expressies in zoekopdrachten in" -#: common/models.py:2400 +#: common/models.py:2370 msgid "Whole Word Search" msgstr "Hele woorden zoeken" -#: common/models.py:2401 +#: common/models.py:2371 msgid "Search queries return results for whole word matches" msgstr "Zoekopdrachten geven resultaat voor hele woord overeenkomsten" -#: common/models.py:2406 +#: common/models.py:2376 msgid "Show Quantity in Forms" msgstr "Toon hoeveelheid in formulieren" -#: common/models.py:2407 +#: common/models.py:2377 msgid "Display available part quantity in some forms" msgstr "Hoeveelheid beschikbare onderdelen in sommige formulieren weergeven" -#: common/models.py:2412 +#: common/models.py:2382 msgid "Escape Key Closes Forms" msgstr "Escape-toets sluit formulieren" -#: common/models.py:2413 +#: common/models.py:2383 msgid "Use the escape key to close modal forms" msgstr "Gebruik de Escape-toets om standaard formulieren te sluiten" -#: common/models.py:2418 +#: common/models.py:2388 msgid "Fixed Navbar" msgstr "Vaste navigatiebalk" -#: common/models.py:2419 +#: common/models.py:2389 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:2424 +#: common/models.py:2394 msgid "Date Format" msgstr "Datum formaat" -#: common/models.py:2425 +#: common/models.py:2395 msgid "Preferred format for displaying dates" msgstr "Voorkeursindeling voor weergave van datums" -#: common/models.py:2438 part/templates/part/detail.html:41 +#: common/models.py:2408 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Onderdeel planning" -#: common/models.py:2439 +#: common/models.py:2409 msgid "Display part scheduling information" msgstr "Toon informatie voor het plannen van onderdelen" -#: common/models.py:2444 part/templates/part/detail.html:62 +#: common/models.py:2414 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "Voorraadcontrole onderdeel" -#: common/models.py:2446 +#: common/models.py:2416 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "Toon voorraadinformatie van onderdeel (als voorraadcontrole functionaliteit is ingeschakeld)" -#: common/models.py:2452 +#: common/models.py:2422 msgid "Table String Length" msgstr "Tabel tekenreekslengte" -#: common/models.py:2454 +#: common/models.py:2424 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2460 +#: common/models.py:2430 msgid "Default part label template" msgstr "Standaard sjabloon product onderdeel" -#: common/models.py:2461 +#: common/models.py:2431 msgid "The part label template to be automatically selected" msgstr "Het onderdeellabelsjabloon dat automatisch wordt geselecteerd" -#: common/models.py:2466 +#: common/models.py:2436 msgid "Default stock item template" msgstr "Standaard sjabloon voorraad onderdeel" -#: common/models.py:2468 +#: common/models.py:2438 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2474 +#: common/models.py:2444 msgid "Default stock location label template" msgstr "Standaard label van voorraadlocatie" -#: common/models.py:2476 +#: common/models.py:2446 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2482 +#: common/models.py:2452 msgid "Default build line label template" msgstr "" -#: common/models.py:2484 +#: common/models.py:2454 msgid "The build line label template to be automatically selected" msgstr "" -#: common/models.py:2490 +#: common/models.py:2460 msgid "Receive error reports" msgstr "Foutrapportages ontvangen" -#: common/models.py:2491 +#: common/models.py:2461 msgid "Receive notifications for system errors" msgstr "Meldingen ontvangen van systeemfouten" -#: common/models.py:2496 +#: common/models.py:2466 msgid "Last used printing machines" msgstr "" -#: common/models.py:2497 +#: common/models.py:2467 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2540 +#: common/models.py:2487 common/models.py:2488 common/models.py:2636 +#: common/models.py:2637 common/models.py:2882 common/models.py:2883 +#: common/models.py:3193 common/models.py:3194 part/models.py:3193 +#: part/models.py:3280 part/models.py:3353 part/models.py:3381 +#: plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "Gebruiker" + +#: common/models.py:2510 msgid "Price break quantity" msgstr "" -#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1382 order/models.py:2301 -#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 +#: common/models.py:2517 company/serializers.py:472 order/admin.py:42 +#: order/models.py:1346 order/models.py:2265 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1886 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:740 msgid "Price" msgstr "Prijs" -#: common/models.py:2548 +#: common/models.py:2518 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2719 common/models.py:2904 +#: common/models.py:2613 common/models.py:2798 msgid "Endpoint" msgstr "Eindpunt" -#: common/models.py:2720 +#: common/models.py:2614 msgid "Endpoint at which this webhook is received" msgstr "Eindpunt waarop deze webhook wordt ontvangen" -#: common/models.py:2730 +#: common/models.py:2624 msgid "Name for this webhook" msgstr "Naam van deze webhook" -#: common/models.py:2734 company/models.py:160 company/models.py:814 -#: machine/models.py:39 part/admin.py:88 part/models.py:1088 -#: plugin/models.py:65 templates/js/translated/company.js:523 +#: common/models.py:2628 company/models.py:163 company/models.py:782 +#: machine/models.py:39 part/admin.py:88 part/models.py:1081 +#: plugin/models.py:66 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3464,101 +3408,118 @@ msgstr "Naam van deze webhook" msgid "Active" msgstr "Actief" -#: common/models.py:2734 +#: common/models.py:2628 msgid "Is this webhook active" msgstr "Is deze webhook actief" -#: common/models.py:2750 users/models.py:159 +#: common/models.py:2644 users/models.py:159 msgid "Token" msgstr "" -#: common/models.py:2751 +#: common/models.py:2645 msgid "Token for access" msgstr "Token voor toegang" -#: common/models.py:2759 +#: common/models.py:2653 msgid "Secret" msgstr "Geheim" -#: common/models.py:2760 +#: common/models.py:2654 msgid "Shared secret for HMAC" msgstr "Gedeeld geheim voor HMAC" -#: common/models.py:2868 +#: common/models.py:2762 msgid "Message ID" msgstr "Bericht ID" -#: common/models.py:2869 +#: common/models.py:2763 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2877 +#: common/models.py:2771 msgid "Host" msgstr "" -#: common/models.py:2878 +#: common/models.py:2772 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2886 +#: common/models.py:2780 msgid "Header" msgstr "Koptekst" -#: common/models.py:2887 +#: common/models.py:2781 msgid "Header of this message" msgstr "Koptekst van dit bericht" -#: common/models.py:2894 +#: common/models.py:2788 msgid "Body" msgstr "Berichtinhoud" -#: common/models.py:2895 +#: common/models.py:2789 msgid "Body of this message" msgstr "Inhoud van dit bericht" -#: common/models.py:2905 +#: common/models.py:2799 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2910 +#: common/models.py:2804 msgid "Worked on" msgstr "Aan gewerkt" -#: common/models.py:2911 +#: common/models.py:2805 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:3037 +#: common/models.py:2931 msgid "Id" msgstr "" -#: common/models.py:3039 templates/js/translated/company.js:965 +#: common/models.py:2933 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "Titel" -#: common/models.py:3043 templates/js/translated/news.js:60 +#: common/models.py:2935 common/models.py:3177 company/models.py:149 +#: company/models.py:440 company/models.py:500 company/models.py:799 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +#: part/admin.py:55 part/models.py:955 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "" + +#: common/models.py:2937 templates/js/translated/news.js:60 msgid "Published" msgstr "Gepubliceerd" -#: common/models.py:3045 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2939 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:3047 templates/js/translated/news.js:52 +#: common/models.py:2941 templates/js/translated/news.js:52 msgid "Summary" msgstr "Samenvatting" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Read" msgstr "Gelezen" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Was this news item read?" msgstr "" -#: common/models.py:3067 company/models.py:156 part/models.py:972 +#: common/models.py:2961 company/models.py:159 part/models.py:965 #: 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.html:35 @@ -3568,34 +3529,89 @@ msgstr "" msgid "Image" msgstr "Afbeelding" -#: common/models.py:3067 +#: common/models.py:2961 msgid "Image file" msgstr "Afbeelding" -#: common/models.py:3109 +#: common/models.py:2973 common/models.py:3161 +msgid "Target model type for this image" +msgstr "" + +#: common/models.py:2977 +msgid "Target model ID for this image" +msgstr "" + +#: common/models.py:3018 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3128 +#: common/models.py:3037 msgid "Unit name" msgstr "" -#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3044 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "Symbool" -#: common/models.py:3136 +#: common/models.py:3045 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3052 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "Definitie" -#: common/models.py:3144 +#: common/models.py:3053 msgid "Unit definition" msgstr "" +#: common/models.py:3111 common/models.py:3168 stock/models.py:2426 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "Bijlage" + +#: common/models.py:3123 +msgid "Missing file" +msgstr "Ontbrekend bestand" + +#: common/models.py:3124 +msgid "Missing external link" +msgstr "Externe link ontbreekt" + +#: common/models.py:3169 +msgid "Select file to attach" +msgstr "Bestand als bijlage selecteren" + +#: common/models.py:3184 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "Opmerking" + +#: common/models.py:3185 +msgid "Attachment comment" +msgstr "" + +#: common/models.py:3201 +msgid "Upload date" +msgstr "" + +#: common/models.py:3202 +msgid "Date the file was uploaded" +msgstr "" + +#: common/models.py:3206 +msgid "File size" +msgstr "" + +#: common/models.py:3206 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3244 common/serializers.py:553 +msgid "Invalid model type specified for attachment" +msgstr "" + #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" @@ -3630,66 +3646,103 @@ msgstr "" msgid "Error raised by plugin" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:371 msgid "Is Running" msgstr "" -#: common/serializers.py:372 +#: common/serializers.py:377 msgid "Pending Tasks" msgstr "" -#: common/serializers.py:378 +#: common/serializers.py:383 msgid "Scheduled Tasks" msgstr "" -#: common/serializers.py:384 +#: common/serializers.py:389 msgid "Failed Tasks" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Task ID" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Unique task ID" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock time" msgstr "" -#: common/serializers.py:403 +#: common/serializers.py:408 msgid "Task name" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function name" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Arguments" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Task arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Keyword Arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Task keyword arguments" msgstr "" +#: common/serializers.py:525 +msgid "Filename" +msgstr "Bestandsnaam" + +#: common/serializers.py:532 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: common/serializers.py:559 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "" + +#: common/validators.py:33 +msgid "No attachment model type provided" +msgstr "" + +#: common/validators.py:39 +msgid "Invalid attachment model type" +msgstr "" + +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "Een leeg domein is niet toegestaan." + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +msgstr "Ongeldige domeinnaam: {domain}" + #: 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 @@ -3728,210 +3781,222 @@ msgstr "Geïmporteerde onderdelen" msgid "Previous Step" msgstr "Vorige Stap" -#: company/api.py:164 +#: company/api.py:144 msgid "Part is Active" msgstr "" -#: company/api.py:168 +#: company/api.py:148 msgid "Manufacturer is Active" msgstr "" -#: company/api.py:317 +#: company/api.py:281 msgid "Supplier Part is Active" msgstr "" -#: company/api.py:321 +#: company/api.py:285 msgid "Internal Part is Active" msgstr "" -#: company/api.py:325 +#: company/api.py:289 msgid "Supplier is Active" msgstr "" -#: company/models.py:114 +#: company/models.py:100 company/models.py:365 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:822 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "Bedrijf" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "Bedrijven" + +#: company/models.py:117 msgid "Company description" msgstr "" -#: company/models.py:115 +#: company/models.py:118 msgid "Description of the company" msgstr "" -#: company/models.py:120 company/templates/company/company_base.html:106 +#: company/models.py:123 company/templates/company/company_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:532 msgid "Website" msgstr "" -#: company/models.py:120 +#: company/models.py:123 msgid "Company website URL" msgstr "URL bedrijfswebsite" -#: company/models.py:125 +#: company/models.py:128 msgid "Phone number" msgstr "Telefoonnummer" -#: company/models.py:127 +#: company/models.py:130 msgid "Contact phone number" msgstr "Telefoonnummer voor contact" -#: company/models.py:134 +#: company/models.py:137 msgid "Contact email address" msgstr "Contact e-mailadres" -#: company/models.py:139 company/templates/company/company_base.html:145 +#: company/models.py:142 company/templates/company/company_base.html:145 #: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "" -#: company/models.py:141 +#: company/models.py:144 msgid "Point of contact" msgstr "Contactpunt" -#: company/models.py:147 +#: company/models.py:150 msgid "Link to external company information" msgstr "Link naar externe bedrijfsinformatie" -#: company/models.py:160 +#: company/models.py:163 msgid "Is this company active?" msgstr "" -#: company/models.py:165 +#: company/models.py:168 msgid "is customer" msgstr "is klant" -#: company/models.py:166 +#: company/models.py:169 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:171 +#: company/models.py:174 msgid "is supplier" msgstr "is leverancier" -#: company/models.py:172 +#: company/models.py:175 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:177 +#: company/models.py:180 msgid "is manufacturer" msgstr "is fabrikant" -#: company/models.py:178 +#: company/models.py:181 msgid "Does this company manufacture parts?" msgstr "Fabriceert dit bedrijf onderdelen?" -#: company/models.py:186 +#: company/models.py:189 msgid "Default currency used for this company" msgstr "Standaardvaluta die gebruikt wordt voor dit bedrijf" -#: company/models.py:273 company/models.py:382 -#: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:812 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 -msgid "Company" -msgstr "Bedrijf" - -#: company/models.py:383 +#: company/models.py:366 msgid "Select company" msgstr "" -#: company/models.py:388 +#: company/models.py:371 msgid "Address title" msgstr "" -#: company/models.py:389 +#: company/models.py:372 msgid "Title describing the address entry" msgstr "" -#: company/models.py:395 +#: company/models.py:378 msgid "Primary address" msgstr "" -#: company/models.py:396 +#: company/models.py:379 msgid "Set as primary address" msgstr "" -#: company/models.py:401 templates/js/translated/company.js:914 +#: company/models.py:384 templates/js/translated/company.js:914 #: templates/js/translated/company.js:971 msgid "Line 1" msgstr "" -#: company/models.py:402 +#: company/models.py:385 msgid "Address line 1" msgstr "" -#: company/models.py:408 templates/js/translated/company.js:915 +#: company/models.py:391 templates/js/translated/company.js:915 #: templates/js/translated/company.js:977 msgid "Line 2" msgstr "" -#: company/models.py:409 +#: company/models.py:392 msgid "Address line 2" msgstr "" -#: company/models.py:415 company/models.py:416 +#: company/models.py:398 company/models.py:399 #: templates/js/translated/company.js:983 msgid "Postal code" msgstr "" -#: company/models.py:422 +#: company/models.py:405 msgid "City/Region" msgstr "" -#: company/models.py:423 +#: company/models.py:406 msgid "Postal code city/region" msgstr "" -#: company/models.py:429 +#: company/models.py:412 msgid "State/Province" msgstr "" -#: company/models.py:430 +#: company/models.py:413 msgid "State or province" msgstr "" -#: company/models.py:436 templates/js/translated/company.js:1001 +#: company/models.py:419 templates/js/translated/company.js:1001 msgid "Country" msgstr "" -#: company/models.py:437 +#: company/models.py:420 msgid "Address country" msgstr "" -#: company/models.py:443 +#: company/models.py:426 msgid "Courier shipping notes" msgstr "" -#: company/models.py:444 +#: company/models.py:427 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:450 +#: company/models.py:433 msgid "Internal shipping notes" msgstr "" -#: company/models.py:451 +#: company/models.py:434 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:458 +#: company/models.py:441 msgid "Link to address information (external)" msgstr "" -#: company/models.py:489 company/models.py:792 stock/models.py:768 -#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 +#: company/models.py:463 company/models.py:574 company/models.py:792 +#: 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:475 company/models.py:760 stock/models.py:766 +#: stock/serializers.py:422 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Basis onderdeel" -#: company/models.py:491 company/models.py:794 +#: company/models.py:477 company/models.py:762 msgid "Select part" msgstr "Onderdeel selecteren" -#: company/models.py:500 company/templates/company/company_base.html:82 +#: company/models.py:486 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:530 +#: company/templates/company/supplier_part.html:145 part/serializers.py:525 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -3941,152 +4006,154 @@ msgstr "Onderdeel selecteren" msgid "Manufacturer" msgstr "Fabrikant" -#: company/models.py:501 +#: company/models.py:487 msgid "Select manufacturer" msgstr "Fabrikant selecteren" -#: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:540 +#: company/models.py:493 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:535 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 -#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1801 #: templates/js/translated/purchase_order.js:1851 #: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "" -#: company/models.py:508 +#: company/models.py:494 msgid "Manufacturer Part Number" msgstr "Fabrikant artikel nummer (MPN)" -#: company/models.py:515 +#: company/models.py:501 msgid "URL for external manufacturer part link" msgstr "URL voor externe link van het fabrikant onderdeel" -#: company/models.py:524 +#: company/models.py:510 msgid "Manufacturer part description" msgstr "Omschrijving onderdeel fabrikant" -#: company/models.py:581 company/models.py:608 company/models.py:824 -#: 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:615 +#: company/models.py:581 msgid "Parameter name" msgstr "Parameternaam" -#: company/models.py:621 report/templates/report/inventree_test_report.html:104 -#: stock/models.py:2429 templates/js/translated/company.js:1166 -#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 +#: company/models.py:587 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2418 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1493 #: templates/js/translated/stock.js:1522 msgid "Value" msgstr "Waarde" -#: company/models.py:622 +#: company/models.py:588 msgid "Parameter value" msgstr "Parameterwaarde" -#: company/models.py:629 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1052 part/models.py:3666 +#: company/models.py:595 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1045 part/models.py:3646 #: part/templates/part/part_base.html:284 -#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1512 +#: templates/js/translated/part.js:1616 templates/js/translated/part.js:2370 msgid "Units" msgstr "Eenheden" -#: company/models.py:630 +#: company/models.py:596 msgid "Parameter units" msgstr "Parameter eenheden" -#: company/models.py:732 +#: company/models.py:648 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:777 stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "Leveranciersonderdeel" + +#: company/models.py:700 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:739 +#: company/models.py:707 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:753 +#: company/models.py:721 msgid "Linked manufacturer part must reference the same base part" msgstr "Gekoppeld fabrikant onderdeel moet verwijzen naar hetzelfde basis onderdeel" -#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/models.py:770 company/templates/company/company_base.html:87 #: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:514 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:509 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:511 -#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1769 #: templates/js/translated/pricing.js:498 #: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "Leverancier" -#: company/models.py:803 +#: company/models.py:771 msgid "Select supplier" msgstr "Leverancier selecteren" -#: company/models.py:809 part/serializers.py:525 +#: company/models.py:777 part/serializers.py:520 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:815 +#: company/models.py:783 msgid "Is this supplier part active?" msgstr "" -#: company/models.py:825 +#: company/models.py:793 msgid "Select manufacturer part" msgstr "Selecteer fabrikant onderdeel" -#: company/models.py:832 +#: company/models.py:800 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:841 +#: company/models.py:809 msgid "Supplier part description" msgstr "" -#: company/models.py:848 company/templates/company/supplier_part.html:187 -#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 +#: company/models.py:816 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4093 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_purchase_order_report.html:32 #: report/templates/report/inventree_return_order_report.html:27 #: report/templates/report/inventree_sales_order_report.html:32 #: report/templates/report/inventree_stock_location_report.html:105 -#: stock/serializers.py:708 +#: stock/serializers.py:710 msgid "Note" msgstr "Opmerking" -#: company/models.py:857 part/models.py:2010 +#: company/models.py:825 part/models.py:2003 msgid "base cost" msgstr "basisprijs" -#: company/models.py:858 part/models.py:2011 +#: company/models.py:826 part/models.py:2004 msgid "Minimum charge (e.g. stocking fee)" msgstr "Minimale kosten (bijv. voorraadkosten)" -#: company/models.py:865 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 +#: company/models.py:833 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:797 stock/serializers.py:1475 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 #: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "" -#: company/models.py:866 +#: company/models.py:834 msgid "Part packaging" msgstr "" -#: company/models.py:871 templates/js/translated/company.js:1651 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: company/models.py:839 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:311 #: templates/js/translated/purchase_order.js:841 #: templates/js/translated/purchase_order.js:1103 @@ -4095,35 +4162,35 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:873 +#: company/models.py:841 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:892 part/models.py:2017 +#: company/models.py:860 part/models.py:2010 msgid "multiple" msgstr "meerdere" -#: company/models.py:893 +#: company/models.py:861 msgid "Order multiple" msgstr "Order meerdere" -#: company/models.py:905 +#: company/models.py:873 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:911 +#: company/models.py:879 msgid "Availability Updated" msgstr "" -#: company/models.py:912 +#: company/models.py:880 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:163 +#: company/serializers.py:161 msgid "Default currency used for this supplier" msgstr "" -#: company/serializers.py:381 part/admin.py:126 +#: company/serializers.py:357 part/admin.py:126 #: part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1689 #: templates/js/translated/table_filters.js:355 @@ -4135,7 +4202,7 @@ msgstr "" #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 #: templates/js/translated/model_renderers.js:312 -#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +#: templates/js/translated/part.js:815 templates/js/translated/part.js:1219 msgid "Inactive" msgstr "" @@ -4174,7 +4241,7 @@ msgstr "Bedrijf verwijderen" #: report/templates/report/inventree_purchase_order_report.html:40 #: report/templates/report/inventree_sales_order_report.html:40 #: report/templates/report/inventree_test_report.html:84 -#: report/templates/report/inventree_test_report.html:163 +#: report/templates/report/inventree_test_report.html:162 msgid "Part image" msgstr "Afbeelding onderdeel" @@ -4193,10 +4260,10 @@ msgstr "Afbeelding downloaden van URL" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:92 order/models.py:940 -#: order/models.py:2068 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:148 stock/models.py:821 -#: stock/models.py:822 stock/serializers.py:1229 +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2032 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:819 +#: stock/models.py:820 stock/serializers.py:1225 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 @@ -4407,7 +4474,7 @@ msgstr "Geen fabrikanten informatie beschikbaar" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:836 +#: part/admin.py:122 part/serializers.py:832 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4427,8 +4494,8 @@ msgstr "" msgid "New Parameter" msgstr "Nieuwe Parameter" -#: company/templates/company/manufacturer_part.html:206 -#: templates/js/translated/part.js:1422 +#: company/templates/company/manufacturer_part.html:196 +#: templates/js/translated/part.js:1423 msgid "Add Parameter" msgstr "" @@ -4456,15 +4523,6 @@ msgstr "" msgid "Addresses" msgstr "" -#: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:452 -#: stock/models.py:779 stock/templates/stock/item_base.html:233 -#: templates/js/translated/company.js:1600 -#: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2280 -msgid "Supplier Part" -msgstr "Leveranciersonderdeel" - #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1526 msgid "Supplier part actions" @@ -4507,8 +4565,8 @@ msgid "No supplier information available" msgstr "Geen leveranciersinformatie beschikbaar" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:524 -#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: part/bom.py:311 part/serializers.py:519 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1787 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1850 #: templates/js/translated/purchase_order.js:2028 @@ -4520,12 +4578,12 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:207 msgid "Create new stock item" msgstr "Nieuw voorraadartikel aanmaken" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "Nieuw Voorraadartikel" @@ -4557,15 +4615,15 @@ msgid "Update Part Availability" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:835 part/stocktake.py:223 +#: part/serializers.py:831 part/stocktake.py:224 #: part/templates/part/category.html:183 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:916 stock/serializers.py:1080 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:918 stock/serializers.py:1091 #: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:191 #: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1061 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:206 msgid "Stock Items" @@ -4592,10 +4650,6 @@ msgstr "Klanten" msgid "New Customer" msgstr "Nieuwe Klant" -#: company/views.py:51 templates/js/translated/search.js:192 -msgid "Companies" -msgstr "Bedrijven" - #: company/views.py:52 msgid "New Company" msgstr "Nieuw Bedrijf" @@ -4616,7 +4670,7 @@ msgstr "" msgid "Connected" msgstr "" -#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: machine/machine_types/label_printer.py:235 order/api.py:1467 #: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "" @@ -4705,7 +4759,7 @@ msgstr "" msgid "Config type" msgstr "" -#: order/admin.py:30 order/models.py:89 +#: order/admin.py:30 order/models.py:90 #: report/templates/report/inventree_purchase_order_report.html:31 #: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 @@ -4714,30 +4768,30 @@ msgstr "" msgid "Total Price" msgstr "Totaalprijs" -#: order/api.py:161 order/serializers.py:91 +#: order/api.py:157 order/serializers.py:90 #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "" -#: order/api.py:165 templates/js/translated/table_filters.js:194 +#: order/api.py:161 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "" -#: order/api.py:240 +#: order/api.py:236 msgid "No matching purchase order found" msgstr "" -#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 -#: order/models.py:1586 order/models.py:1700 order/models.py:1854 -#: order/models.py:2267 order/models.py:2318 +#: order/api.py:435 order/api.py:801 order/models.py:1395 order/models.py:1504 +#: order/models.py:1550 order/models.py:1664 order/models.py:1818 +#: order/models.py:2231 order/models.py:2282 #: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "" -#: order/api.py:441 order/api.py:838 +#: order/api.py:439 order/api.py:822 msgid "Order Complete" msgstr "" @@ -4745,13 +4799,13 @@ msgstr "" msgid "Order Pending" msgstr "" -#: order/api.py:1509 order/models.py:380 order/models.py:1432 -#: order/models.py:1541 order/templates/order/order_base.html:9 +#: order/api.py:1461 order/models.py:380 order/models.py:1396 +#: order/models.py:1505 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_purchase_order_report.html:14 -#: stock/serializers.py:119 stock/templates/stock/item_base.html:176 +#: stock/serializers.py:118 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/part.js:1746 templates/js/translated/pricing.js:804 #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1673 @@ -4759,8 +4813,8 @@ msgstr "" msgid "Purchase Order" msgstr "Inkooporder" -#: order/api.py:1513 order/models.py:2017 order/models.py:2268 -#: order/models.py:2319 order/templates/order/return_order_base.html:9 +#: order/api.py:1465 order/models.py:1981 order/models.py:2232 +#: order/models.py:2283 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report.html:13 #: templates/js/translated/return_order.js:280 @@ -4768,15 +4822,15 @@ msgstr "Inkooporder" msgid "Return Order" msgstr "" -#: order/models.py:90 +#: order/models.py:91 msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:71 +#: order/models.py:96 order/serializers.py:70 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:72 +#: order/models.py:99 order/serializers.py:71 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -4792,7 +4846,7 @@ msgstr "" msgid "Select project code for this order" msgstr "" -#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 msgid "Link to external page" msgstr "Link naar externe pagina" @@ -4816,11 +4870,11 @@ msgstr "" msgid "Company address for this order" msgstr "" -#: order/models.py:464 order/models.py:929 +#: order/models.py:464 order/models.py:927 msgid "Order reference" msgstr "Orderreferentie" -#: order/models.py:472 order/models.py:953 +#: order/models.py:472 order/models.py:951 msgid "Purchase order status" msgstr "Inkooporder status" @@ -4841,15 +4895,15 @@ msgstr "Order referentiecode van leverancier" msgid "received by" msgstr "ontvangen door" -#: order/models.py:514 order/models.py:2094 +#: order/models.py:514 order/models.py:2058 msgid "Issue Date" msgstr "Datum van uitgifte" -#: order/models.py:515 order/models.py:2095 +#: order/models.py:515 order/models.py:2059 msgid "Date order was issued" msgstr "Order uitgegeven op datum" -#: order/models.py:522 order/models.py:2102 +#: order/models.py:522 order/models.py:2066 msgid "Date order was completed" msgstr "Order voltooid op datum" @@ -4861,98 +4915,94 @@ msgstr "Onderdeelleverancier moet overeenkomen met de Inkooporderleverancier" msgid "Quantity must be a positive number" msgstr "Hoeveelheid moet een positief getal zijn" -#: order/models.py:941 +#: order/models.py:939 msgid "Company to which the items are being sold" msgstr "Bedrijf waaraan de artikelen worden verkocht" -#: order/models.py:964 order/models.py:2087 +#: order/models.py:962 order/models.py:2051 msgid "Customer Reference " msgstr "Klantreferentie " -#: order/models.py:965 order/models.py:2088 +#: order/models.py:963 order/models.py:2052 msgid "Customer order reference code" msgstr "Klant order referentiecode" -#: order/models.py:969 order/models.py:1707 +#: order/models.py:967 order/models.py:1671 #: templates/js/translated/sales_order.js:879 #: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "Verzenddatum" -#: order/models.py:978 +#: order/models.py:976 msgid "shipped by" msgstr "verzonden door" -#: order/models.py:1027 -#, fuzzy -#| msgid "Build output is already completed" +#: order/models.py:1025 msgid "Order is already complete" -msgstr "Productie uitvoer is al voltooid" +msgstr "" -#: order/models.py:1030 -#, fuzzy -#| msgid "Order cannot be cancelled" +#: order/models.py:1028 msgid "Order is already cancelled" -msgstr "Order kan niet worden geannuleerd" +msgstr "" -#: order/models.py:1034 +#: order/models.py:1032 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:1038 +#: order/models.py:1036 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:1043 +#: order/models.py:1041 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:1309 +#: order/models.py:1273 msgid "Item quantity" msgstr "Hoeveelheid artikelen" -#: order/models.py:1326 +#: order/models.py:1290 msgid "Line item reference" msgstr "Artikelregel referentie" -#: order/models.py:1333 +#: order/models.py:1297 msgid "Line item notes" msgstr "Artikel notities" -#: order/models.py:1345 +#: order/models.py:1309 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1366 +#: order/models.py:1330 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1372 +#: order/models.py:1336 msgid "Context" msgstr "" -#: order/models.py:1373 +#: order/models.py:1337 msgid "Additional context for this line" msgstr "Additionele context voor deze regel" -#: order/models.py:1383 +#: order/models.py:1347 msgid "Unit price" msgstr "Stukprijs" -#: order/models.py:1416 +#: order/models.py:1380 msgid "Supplier part must match supplier" msgstr "Leveranciersonderdeel moet overeenkomen met leverancier" -#: order/models.py:1423 +#: order/models.py:1387 msgid "deleted" msgstr "verwijderd" -#: order/models.py:1451 +#: order/models.py:1415 msgid "Supplier part" msgstr "Leveranciersonderdeel" -#: order/models.py:1458 order/templates/order/order_base.html:196 -#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: order/models.py:1422 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1870 templates/js/translated/part.js:1902 #: templates/js/translated/purchase_order.js:1306 #: templates/js/translated/purchase_order.js:2169 #: templates/js/translated/return_order.js:763 @@ -4961,196 +5011,196 @@ msgstr "Leveranciersonderdeel" msgid "Received" msgstr "Ontvangen" -#: order/models.py:1459 +#: order/models.py:1423 msgid "Number of items received" msgstr "Aantal ontvangen artikelen" -#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 +#: order/models.py:1431 stock/models.py:938 stock/serializers.py:556 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "Inkoopprijs" -#: order/models.py:1468 +#: order/models.py:1432 msgid "Unit purchase price" msgstr "Aankoopprijs per stuk" -#: order/models.py:1483 +#: order/models.py:1447 msgid "Where does the Purchaser want this item to be stored?" msgstr "Waar wil de inkoper dat dit artikel opgeslagen wordt?" -#: order/models.py:1574 +#: order/models.py:1538 msgid "Virtual part cannot be assigned to a sales order" msgstr "Virtueel onderdeel kan niet worden toegewezen aan een verkooporder" -#: order/models.py:1579 +#: order/models.py:1543 msgid "Only salable parts can be assigned to a sales order" msgstr "Alleen verkoopbare onderdelen kunnen aan een verkooporder worden toegewezen" -#: order/models.py:1605 part/templates/part/part_pricing.html:107 +#: order/models.py:1569 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:1606 +#: order/models.py:1570 msgid "Unit sale price" msgstr "Prijs per stuk" -#: order/models.py:1615 order/status_codes.py:43 +#: order/models.py:1579 order/status_codes.py:43 #: templates/js/translated/sales_order.js:1559 #: templates/js/translated/sales_order.js:1680 #: templates/js/translated/sales_order.js:1993 msgid "Shipped" msgstr "Verzonden" -#: order/models.py:1616 +#: order/models.py:1580 msgid "Shipped quantity" msgstr "Verzonden hoeveelheid" -#: order/models.py:1708 +#: order/models.py:1672 msgid "Date of shipment" msgstr "Datum van verzending" -#: order/models.py:1714 templates/js/translated/sales_order.js:1072 +#: order/models.py:1678 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "" -#: order/models.py:1715 +#: order/models.py:1679 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1723 +#: order/models.py:1687 msgid "Checked By" msgstr "Gecontroleerd door" -#: order/models.py:1724 +#: order/models.py:1688 msgid "User who checked this shipment" msgstr "Gebruiker die deze zending gecontroleerd heeft" -#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 -#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 +#: order/models.py:1695 order/models.py:1908 order/serializers.py:1342 +#: order/serializers.py:1452 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "Zending" -#: order/models.py:1732 +#: order/models.py:1696 msgid "Shipment number" msgstr "Zendingsnummer" -#: order/models.py:1740 +#: order/models.py:1704 msgid "Tracking Number" msgstr "Volgnummer" -#: order/models.py:1741 +#: order/models.py:1705 msgid "Shipment tracking information" msgstr "Zending volginformatie" -#: order/models.py:1748 +#: order/models.py:1712 msgid "Invoice Number" msgstr "Factuurnummer" -#: order/models.py:1749 +#: order/models.py:1713 msgid "Reference number for associated invoice" msgstr "Referentienummer voor bijbehorende factuur" -#: order/models.py:1769 +#: order/models.py:1733 msgid "Shipment has already been sent" msgstr "Verzending is al verzonden" -#: order/models.py:1772 +#: order/models.py:1736 msgid "Shipment has no allocated stock items" msgstr "Zending heeft geen toegewezen voorraadartikelen" -#: order/models.py:1890 order/models.py:1892 +#: order/models.py:1854 order/models.py:1856 msgid "Stock item has not been assigned" msgstr "Voorraadartikel is niet toegewezen" -#: order/models.py:1899 +#: order/models.py:1863 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:1902 +#: order/models.py:1866 msgid "Cannot allocate stock to a line without a part" msgstr "Kan voorraad niet toewijzen aan een regel zonder onderdeel" -#: order/models.py:1905 +#: order/models.py:1869 msgid "Allocation quantity cannot exceed stock quantity" msgstr "Toewijzingshoeveelheid kan niet hoger zijn dan de voorraadhoeveelheid" -#: order/models.py:1924 order/serializers.py:1231 +#: order/models.py:1888 order/serializers.py:1219 msgid "Quantity must be 1 for serialized stock item" msgstr "Hoeveelheid moet 1 zijn voor geserialiseerd voorraadartikel" -#: order/models.py:1927 +#: order/models.py:1891 msgid "Sales order does not match shipment" msgstr "Verkooporder komt niet overeen met zending" -#: order/models.py:1928 plugin/base/barcodes/api.py:481 +#: order/models.py:1892 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "Verzending komt niet overeen met verkooporder" -#: order/models.py:1936 +#: order/models.py:1900 msgid "Line" msgstr "Regel" -#: order/models.py:1945 +#: order/models.py:1909 msgid "Sales order shipment reference" msgstr "Verzendreferentie verkooporder" -#: order/models.py:1958 order/models.py:2275 +#: order/models.py:1922 order/models.py:2239 #: templates/js/translated/return_order.js:721 msgid "Item" msgstr "Artikel" -#: order/models.py:1959 +#: order/models.py:1923 msgid "Select stock item to allocate" msgstr "Selecteer voorraadartikel om toe te wijzen" -#: order/models.py:1968 +#: order/models.py:1932 msgid "Enter stock allocation quantity" msgstr "Voer voorraadtoewijzingshoeveelheid in" -#: order/models.py:2057 +#: order/models.py:2021 msgid "Return Order reference" msgstr "" -#: order/models.py:2069 +#: order/models.py:2033 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:2081 +#: order/models.py:2045 msgid "Return order status" msgstr "" -#: order/models.py:2260 +#: order/models.py:2224 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2276 +#: order/models.py:2240 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2282 +#: order/models.py:2246 msgid "Received Date" msgstr "" -#: order/models.py:2283 +#: order/models.py:2247 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2294 templates/js/translated/return_order.js:732 +#: order/models.py:2258 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2295 +#: order/models.py:2259 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2302 +#: order/models.py:2266 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/serializers.py:79 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_purchase_order_report.html:22 @@ -5159,163 +5209,163 @@ msgstr "" msgid "Line Items" msgstr "Artikelen" -#: order/serializers.py:84 +#: order/serializers.py:83 msgid "Completed Lines" msgstr "" -#: order/serializers.py:287 +#: order/serializers.py:286 msgid "Order cannot be cancelled" msgstr "Order kan niet worden geannuleerd" -#: order/serializers.py:302 order/serializers.py:1247 +#: order/serializers.py:301 order/serializers.py:1235 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:312 order/serializers.py:1257 +#: order/serializers.py:311 order/serializers.py:1245 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:440 +#: order/serializers.py:439 msgid "Order is not open" msgstr "Order is niet open" -#: order/serializers.py:461 +#: order/serializers.py:460 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:463 +#: order/serializers.py:462 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:473 +#: order/serializers.py:472 msgid "Purchase price currency" msgstr "Valuta Inkoopprijs" -#: order/serializers.py:479 +#: order/serializers.py:478 msgid "Merge Items" msgstr "" -#: order/serializers.py:481 +#: order/serializers.py:480 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:499 +#: order/serializers.py:498 msgid "Supplier part must be specified" msgstr "Leveranciersonderdeel moet worden gespecificeerd" -#: order/serializers.py:502 +#: order/serializers.py:501 msgid "Purchase order must be specified" msgstr "Inkooporder moet worden gespecificeerd" -#: order/serializers.py:510 +#: order/serializers.py:509 msgid "Supplier must match purchase order" msgstr "De leverancier moet overeenkomen met de inkooporder" -#: order/serializers.py:511 +#: order/serializers.py:510 msgid "Purchase order must match supplier" msgstr "Inkooporder moet overeenkomen met de leverancier" -#: order/serializers.py:550 order/serializers.py:1325 +#: order/serializers.py:549 order/serializers.py:1313 msgid "Line Item" msgstr "Artikel" -#: order/serializers.py:556 +#: order/serializers.py:555 msgid "Line item does not match purchase order" msgstr "Artikelregel komt niet overeen met inkooporder" -#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1657 msgid "Select destination location for received items" msgstr "Selecteer bestemmingslocatie voor ontvangen artikelen" -#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:581 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:589 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "Voer serienummers in voor inkomende voorraadartikelen" -#: order/serializers.py:601 templates/js/translated/barcode.js:52 +#: order/serializers.py:600 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:602 +#: order/serializers.py:601 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:618 +#: order/serializers.py:617 msgid "Barcode is already in use" msgstr "Streepjescode is al in gebruik" -#: order/serializers.py:642 +#: order/serializers.py:641 msgid "An integer quantity must be provided for trackable parts" msgstr "Hoeveelheid als geheel getal vereist voor traceerbare onderdelen" -#: order/serializers.py:690 order/serializers.py:1696 +#: order/serializers.py:689 order/serializers.py:1673 msgid "Line items must be provided" msgstr "Artikelen moeten worden opgegeven" -#: order/serializers.py:706 +#: order/serializers.py:705 msgid "Destination location must be specified" msgstr "Bestemmingslocatie moet worden opgegeven" -#: order/serializers.py:717 +#: order/serializers.py:716 msgid "Supplied barcode values must be unique" msgstr "Geleverde streepjescodewaarden moeten uniek zijn" -#: order/serializers.py:1074 +#: order/serializers.py:1062 msgid "Sale price currency" msgstr "Valuta verkoopprijs" -#: order/serializers.py:1134 +#: order/serializers.py:1122 msgid "No shipment details provided" msgstr "Geen verzenddetails opgegeven" -#: order/serializers.py:1195 order/serializers.py:1334 +#: order/serializers.py:1183 order/serializers.py:1322 msgid "Line item is not associated with this order" msgstr "Artikelregel is niet gekoppeld aan deze bestelling" -#: order/serializers.py:1214 +#: order/serializers.py:1202 msgid "Quantity must be positive" msgstr "Hoeveelheid moet positief zijn" -#: order/serializers.py:1344 +#: order/serializers.py:1332 msgid "Enter serial numbers to allocate" msgstr "Voer serienummers in om toe te wijzen" -#: order/serializers.py:1366 order/serializers.py:1472 +#: order/serializers.py:1354 order/serializers.py:1460 msgid "Shipment has already been shipped" msgstr "Verzending is al verzonden" -#: order/serializers.py:1369 order/serializers.py:1475 +#: order/serializers.py:1357 order/serializers.py:1463 msgid "Shipment is not associated with this order" msgstr "Zending is niet gekoppeld aan deze bestelling" -#: order/serializers.py:1416 +#: order/serializers.py:1404 msgid "No match found for the following serial numbers" msgstr "Geen overeenkomst gevonden voor de volgende serienummers" -#: order/serializers.py:1423 +#: order/serializers.py:1411 msgid "The following serial numbers are already allocated" msgstr "De volgende serienummers zijn al toegewezen" -#: order/serializers.py:1650 +#: order/serializers.py:1627 msgid "Return order line item" msgstr "" -#: order/serializers.py:1656 +#: order/serializers.py:1633 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1659 +#: order/serializers.py:1636 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1688 +#: order/serializers.py:1665 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1766 +#: order/serializers.py:1743 msgid "Line price currency" msgstr "" @@ -5645,7 +5695,7 @@ msgstr "Klantreferentie" #: 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/part.js:1073 #: templates/js/translated/purchase_order.js:1752 #: templates/js/translated/return_order.js:380 #: templates/js/translated/sales_order.js:891 @@ -5741,34 +5791,34 @@ 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:406 part/models.py:3964 part/stocktake.py:218 -#: stock/admin.py:153 +#: part/admin.py:39 part/admin.py:398 part/models.py:3944 part/stocktake.py:219 +#: stock/admin.py:152 msgid "Part ID" msgstr "Onderdeel-id" -#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 -#: stock/admin.py:157 +#: part/admin.py:41 part/admin.py:405 part/models.py:3945 part/stocktake.py:220 +#: stock/admin.py:156 msgid "Part Name" msgstr "Onderdeel naam" -#: part/admin.py:45 part/stocktake.py:220 +#: part/admin.py:45 part/stocktake.py:221 msgid "Part Description" msgstr "Onderdeel omschrijving" -#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:940 part/templates/part/part_base.html:269 #: report/templates/report/inventree_stock_location_report.html:103 -#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/part.js:1227 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 -#: report/models.py:161 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2346 +#: part/admin.py:50 part/models.py:949 part/templates/part/part_base.html:277 +#: report/models.py:162 templates/js/translated/part.js:1232 +#: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:319 part/models.py:929 +#: part/admin.py:53 part/admin.py:319 part/models.py:922 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5777,11 +5827,11 @@ msgstr "" msgid "Part Image" msgstr "" -#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:222 msgid "Category ID" msgstr "" -#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:223 msgid "Category Name" msgstr "" @@ -5793,11 +5843,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:908 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1036 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5805,26 +5855,26 @@ msgstr "" 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 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:235 +#: templates/js/translated/part.js:715 templates/js/translated/part.js:2153 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3123 part/models.py:3137 -#: templates/js/translated/part.js:969 +#: part/admin.py:155 part/models.py:3088 part/models.py:3102 +#: templates/js/translated/part.js:970 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3130 part/models.py:3144 -#: templates/js/translated/part.js:979 +#: part/admin.py:158 part/models.py:3095 part/models.py:3109 +#: templates/js/translated/part.js:980 msgid "Maximum Cost" msgstr "" -#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 msgid "Parent ID" msgstr "" -#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 msgid "Parent Name" msgstr "" @@ -5833,141 +5883,149 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:325 part/models.py:393 part/serializers.py:117 -#: part/serializers.py:272 part/serializers.py:391 +#: part/admin.py:325 part/models.py:396 part/serializers.py:124 +#: part/serializers.py:267 part/serializers.py:386 #: 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:2803 templates/js/translated/search.js:130 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "Onderdelen" -#: part/admin.py:386 +#: part/admin.py:378 msgid "BOM Level" msgstr "" -#: part/admin.py:389 +#: part/admin.py:381 msgid "BOM Item ID" msgstr "" -#: part/admin.py:399 +#: part/admin.py:391 msgid "Parent IPN" msgstr "" -#: part/admin.py:410 part/models.py:3966 +#: part/admin.py:402 part/models.py:3946 msgid "Part IPN" msgstr "" -#: part/admin.py:423 part/serializers.py:1278 +#: part/admin.py:415 part/serializers.py:1274 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:428 part/serializers.py:1293 +#: part/admin.py:420 part/serializers.py:1289 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:110 +#: part/api.py:104 msgid "Starred" msgstr "" -#: part/api.py:112 +#: part/api.py:106 msgid "Filter by starred categories" msgstr "" -#: part/api.py:129 stock/api.py:318 +#: part/api.py:123 stock/api.py:312 msgid "Depth" msgstr "" -#: part/api.py:129 +#: part/api.py:123 msgid "Filter by category depth" msgstr "" -#: part/api.py:147 stock/api.py:336 +#: part/api.py:141 stock/api.py:330 +msgid "Top Level" +msgstr "" + +#: part/api.py:143 +msgid "Filter by top-level categories" +msgstr "" + +#: part/api.py:156 stock/api.py:345 msgid "Cascade" msgstr "" -#: part/api.py:149 +#: part/api.py:158 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:169 +#: part/api.py:179 templates/js/translated/part.js:308 msgid "Parent" msgstr "" -#: part/api.py:171 +#: part/api.py:181 msgid "Filter by parent category" msgstr "" -#: part/api.py:204 +#: part/api.py:214 msgid "Exclude Tree" msgstr "" -#: part/api.py:206 +#: part/api.py:216 msgid "Exclude sub-categories under the specified category" msgstr "" -#: part/api.py:455 +#: part/api.py:449 msgid "Has Results" msgstr "" -#: part/api.py:622 +#: part/api.py:616 msgid "Incoming Purchase Order" msgstr "Binnenkomende Inkooporder" -#: part/api.py:640 +#: part/api.py:634 msgid "Outgoing Sales Order" msgstr "Uitgaande Verkooporder" -#: part/api.py:656 +#: part/api.py:650 msgid "Stock produced by Build Order" msgstr "Geproduceerde voorraad door Productieorder" -#: part/api.py:740 +#: part/api.py:734 msgid "Stock required for Build Order" msgstr "Voorraad vereist voor Productieorder" -#: part/api.py:887 +#: part/api.py:881 msgid "Valid" msgstr "" -#: part/api.py:888 +#: part/api.py:882 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:894 +#: part/api.py:888 msgid "This option must be selected" msgstr "" -#: part/api.py:1111 +#: part/api.py:1105 msgid "BOM Valid" msgstr "" -#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 -#: part/serializers.py:406 part/serializers.py:1134 -#: part/templates/part/part_base.html:260 stock/api.py:781 +#: part/api.py:1508 part/models.py:932 part/models.py:3374 part/models.py:3889 +#: part/serializers.py:401 part/serializers.py:1130 +#: part/templates/part/part_base.html:260 stock/api.py:791 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2376 +#: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/api.py:1803 +#: part/api.py:1796 msgid "Uses" msgstr "" -#: part/bom.py:170 part/models.py:102 part/models.py:982 +#: part/bom.py:170 part/models.py:104 part/models.py:975 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Standaard locatie" -#: part/bom.py:171 part/serializers.py:837 +#: part/bom.py:171 part/serializers.py:833 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "Totale Voorraad" @@ -5976,1054 +6034,1066 @@ msgstr "Totale Voorraad" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 +#: part/models.py:85 part/models.py:3890 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Onderdeel Categorie" -#: part/models.py:84 part/templates/part/category.html:136 +#: part/models.py:86 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "Onderdeel Categorieën" -#: part/models.py:103 +#: part/models.py:105 msgid "Default location for parts in this category" msgstr "Standaard locatie voor onderdelen in deze categorie" -#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 +#: part/models.py:110 stock/models.py:174 templates/js/translated/part.js:2810 #: templates/js/translated/stock.js:2772 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:110 +#: part/models.py:112 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:119 +#: part/models.py:121 msgid "Default keywords" msgstr "" -#: part/models.py:120 +#: part/models.py:122 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 stock/models.py:85 stock/models.py:156 +#: part/models.py:128 stock/models.py:86 stock/models.py:157 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:127 stock/models.py:157 +#: part/models.py:129 stock/models.py:158 msgid "Icon (optional)" msgstr "" -#: part/models.py:149 +#: part/models.py:151 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:482 +#: part/models.py:485 msgid "Cannot delete this part as it is still active" msgstr "" -#: part/models.py:489 +#: part/models.py:490 msgid "Cannot delete this part as it is used in an assembly" msgstr "" -#: part/models.py:527 +#: part/models.py:528 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:575 part/models.py:582 +#: part/models.py:576 part/models.py:583 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:594 +#: part/models.py:595 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:659 +#: part/models.py:658 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:739 +#: part/models.py:736 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:844 +#: part/models.py:837 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:854 +#: part/models.py:847 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:869 +#: part/models.py:862 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:898 part/models.py:3965 +#: part/models.py:891 part/models.py:3945 msgid "Part name" msgstr "Onderdeel naam" -#: part/models.py:903 +#: part/models.py:896 msgid "Is Template" msgstr "" -#: part/models.py:904 +#: part/models.py:897 msgid "Is this part a template part?" msgstr "" -#: part/models.py:914 +#: part/models.py:907 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:922 +#: part/models.py:915 msgid "Part description (optional)" msgstr "" -#: part/models.py:930 +#: part/models.py:923 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:940 +#: part/models.py:933 msgid "Part category" msgstr "Onderdeel Categorie" -#: part/models.py:948 +#: part/models.py:941 msgid "Internal Part Number" msgstr "Intern Onderdeelnummer" -#: part/models.py:955 +#: part/models.py:948 msgid "Part revision or version number" msgstr "" -#: part/models.py:980 +#: part/models.py:973 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:1026 part/templates/part/part_base.html:376 +#: part/models.py:1019 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:1027 +#: part/models.py:1020 msgid "Default supplier part" msgstr "Standaardleverancier" -#: part/models.py:1034 +#: part/models.py:1027 msgid "Default Expiry" msgstr "" -#: part/models.py:1035 +#: part/models.py:1028 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:1044 +#: part/models.py:1037 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:1053 +#: part/models.py:1046 msgid "Units of measure for this part" msgstr "Eenheden voor dit onderdeel" -#: part/models.py:1060 +#: part/models.py:1053 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1066 +#: part/models.py:1059 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1072 +#: part/models.py:1065 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1078 +#: part/models.py:1071 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1084 +#: part/models.py:1077 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1088 +#: part/models.py:1081 msgid "Is this part active?" msgstr "" -#: part/models.py:1094 +#: part/models.py:1087 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1100 +#: part/models.py:1093 msgid "BOM checksum" msgstr "" -#: part/models.py:1101 +#: part/models.py:1094 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1109 +#: part/models.py:1102 msgid "BOM checked by" msgstr "" -#: part/models.py:1114 +#: part/models.py:1107 msgid "BOM checked date" msgstr "" -#: part/models.py:1130 +#: part/models.py:1123 msgid "Creation User" msgstr "" -#: part/models.py:1140 +#: part/models.py:1133 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1145 part/templates/part/part_base.html:339 +#: part/models.py:1138 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2470 +#: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:2018 +#: part/models.py:2011 msgid "Sell multiple" msgstr "" -#: part/models.py:3037 +#: part/models.py:3002 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:3053 +#: part/models.py:3018 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:3054 +#: part/models.py:3019 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:3060 +#: part/models.py:3025 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3026 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:3067 +#: part/models.py:3032 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3033 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3074 +#: part/models.py:3039 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3040 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3046 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3047 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3053 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3054 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3060 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3096 +#: part/models.py:3061 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3102 +#: part/models.py:3067 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3103 +#: part/models.py:3068 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3109 +#: part/models.py:3074 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3110 +#: part/models.py:3075 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3116 +#: part/models.py:3081 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3117 +#: part/models.py:3082 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3124 +#: part/models.py:3089 msgid "Override minimum cost" msgstr "" -#: part/models.py:3131 +#: part/models.py:3096 msgid "Override maximum cost" msgstr "" -#: part/models.py:3138 +#: part/models.py:3103 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3145 +#: part/models.py:3110 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3151 +#: part/models.py:3116 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3152 +#: part/models.py:3117 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3158 +#: part/models.py:3123 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3159 +#: part/models.py:3124 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3165 +#: part/models.py:3130 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3131 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3172 +#: part/models.py:3137 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3138 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3192 +#: part/models.py:3157 msgid "Part for stocktake" msgstr "Onderdeel voor voorraadcontrole" -#: part/models.py:3197 +#: part/models.py:3162 msgid "Item Count" msgstr "" -#: part/models.py:3198 +#: part/models.py:3163 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3206 +#: part/models.py:3171 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3210 part/models.py:3293 +#: part/models.py:3175 part/models.py:3258 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report.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/part.js:1086 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "Datum" -#: part/models.py:3211 +#: part/models.py:3176 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3219 +#: part/models.py:3184 msgid "Additional notes" msgstr "" -#: part/models.py:3229 +#: part/models.py:3194 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3235 +#: part/models.py:3200 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3236 +#: part/models.py:3201 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3242 +#: part/models.py:3207 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3243 +#: part/models.py:3208 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3264 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3300 +#: part/models.py:3265 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3270 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "Aantal onderdelen" -#: part/models.py:3306 +#: part/models.py:3271 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3316 +#: part/models.py:3281 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3478 +#: part/models.py:3423 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3489 +#: part/models.py:3444 part/models.py:3608 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3455 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3500 +#: part/models.py:3466 msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3517 templates/js/translated/part.js:2878 +#: part/models.py:3483 templates/js/translated/part.js:2880 msgid "Test Name" msgstr "" -#: part/models.py:3518 +#: part/models.py:3484 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3524 +#: part/models.py:3490 msgid "Test Key" msgstr "" -#: part/models.py:3525 +#: part/models.py:3491 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3532 +#: part/models.py:3498 msgid "Test Description" msgstr "" -#: part/models.py:3533 +#: part/models.py:3499 msgid "Enter description for this test" msgstr "" -#: part/models.py:3537 report/models.py:208 -#: templates/js/translated/part.js:2899 +#: part/models.py:3503 report/models.py:209 +#: templates/js/translated/part.js:2901 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "Ingeschakeld" -#: part/models.py:3537 +#: part/models.py:3503 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3542 templates/js/translated/part.js:2907 +#: part/models.py:3508 templates/js/translated/part.js:2909 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3543 +#: part/models.py:3509 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3548 templates/js/translated/part.js:2915 +#: part/models.py:3514 templates/js/translated/part.js:2917 msgid "Requires Value" msgstr "" -#: part/models.py:3549 +#: part/models.py:3515 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3554 templates/js/translated/part.js:2922 +#: part/models.py:3520 templates/js/translated/part.js:2924 msgid "Requires Attachment" msgstr "" -#: part/models.py:3556 +#: part/models.py:3522 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3603 +#: part/models.py:3528 part/models.py:3667 templates/js/translated/part.js:1637 +msgid "Choices" +msgstr "" + +#: part/models.py:3529 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3583 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3608 +#: part/models.py:3588 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3628 -msgid "Choices must be unique" -msgstr "" - -#: part/models.py:3645 +#: part/models.py:3625 msgid "Parameter template name must be unique" msgstr "De template van de parameter moet uniek zijn" -#: part/models.py:3660 +#: part/models.py:3640 msgid "Parameter Name" msgstr "Parameternaam" -#: part/models.py:3667 +#: part/models.py:3647 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3675 +#: part/models.py:3655 msgid "Parameter description" msgstr "" -#: part/models.py:3681 templates/js/translated/part.js:1627 +#: part/models.py:3661 templates/js/translated/part.js:1628 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "" -#: part/models.py:3682 +#: part/models.py:3662 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3687 templates/js/translated/part.js:1636 -msgid "Choices" -msgstr "" - -#: part/models.py:3688 +#: part/models.py:3668 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3765 +#: part/models.py:3745 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3808 +#: part/models.py:3788 msgid "Parent Part" msgstr "" -#: part/models.py:3816 part/models.py:3917 part/models.py:3918 +#: part/models.py:3796 part/models.py:3897 part/models.py:3898 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3821 +#: part/models.py:3801 msgid "Data" msgstr "" -#: part/models.py:3822 +#: part/models.py:3802 msgid "Parameter Value" msgstr "Parameterwaarde" -#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3904 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3925 +#: part/models.py:3905 msgid "Default Parameter Value" msgstr "Standaard Parameter Waarde" -#: part/models.py:3963 +#: part/models.py:3943 msgid "Part ID or part name" msgstr "" -#: part/models.py:3964 +#: part/models.py:3944 msgid "Unique part ID value" msgstr "" -#: part/models.py:3966 +#: part/models.py:3946 msgid "Part IPN value" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "Level" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "BOM level" msgstr "" -#: part/models.py:4057 +#: part/models.py:4037 msgid "Select parent part" msgstr "" -#: part/models.py:4067 +#: part/models.py:4047 msgid "Sub part" msgstr "" -#: part/models.py:4068 +#: part/models.py:4048 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4079 +#: part/models.py:4059 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4085 +#: part/models.py:4065 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4091 +#: part/models.py:4071 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4098 part/templates/part/upload_bom.html:55 +#: part/models.py:4078 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4099 +#: part/models.py:4079 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4106 +#: part/models.py:4086 msgid "BOM item reference" msgstr "" -#: part/models.py:4114 +#: part/models.py:4094 msgid "BOM item notes" msgstr "" -#: part/models.py:4120 +#: part/models.py:4100 msgid "Checksum" msgstr "" -#: part/models.py:4121 +#: part/models.py:4101 msgid "BOM line checksum" msgstr "" -#: part/models.py:4126 templates/js/translated/table_filters.js:174 +#: part/models.py:4106 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4127 +#: part/models.py:4107 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4132 part/templates/part/upload_bom.html:57 +#: part/models.py:4112 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:4133 +#: part/models.py:4113 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4138 part/templates/part/upload_bom.html:56 +#: part/models.py:4118 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4139 +#: part/models.py:4119 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4224 stock/models.py:664 +#: part/models.py:4204 stock/models.py:662 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4234 part/models.py:4236 +#: part/models.py:4214 part/models.py:4216 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4376 +#: part/models.py:4354 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4397 +#: part/models.py:4375 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4410 +#: part/models.py:4388 msgid "Parent BOM item" msgstr "" -#: part/models.py:4418 +#: part/models.py:4396 msgid "Substitute part" msgstr "" -#: part/models.py:4434 +#: part/models.py:4412 msgid "Part 1" msgstr "" -#: part/models.py:4442 +#: part/models.py:4420 msgid "Part 2" msgstr "" -#: part/models.py:4443 +#: part/models.py:4421 msgid "Select Related Part" msgstr "" -#: part/models.py:4462 +#: part/models.py:4440 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4467 +#: part/models.py:4445 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:119 part/serializers.py:141 +#: part/serializers.py:118 +msgid "Parent Category" +msgstr "" + +#: part/serializers.py:119 templates/js/translated/part.js:309 +msgid "Parent part category" +msgstr "" + +#: part/serializers.py:126 part/serializers.py:148 #: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/serializers.py:185 +#: part/serializers.py:180 msgid "Results" msgstr "" -#: part/serializers.py:186 +#: part/serializers.py:181 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 +#: part/serializers.py:205 part/serializers.py:223 stock/serializers.py:562 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:273 +#: part/serializers.py:268 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:397 +#: part/serializers.py:392 msgid "No parts selected" msgstr "Geen onderdelen geselecteerd" -#: part/serializers.py:407 +#: part/serializers.py:402 msgid "Select category" msgstr "" -#: part/serializers.py:442 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:443 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:448 +#: part/serializers.py:443 msgid "Copy Image" msgstr "Afbeelding kopiëren" -#: part/serializers.py:449 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "Afbeelding kopiëren van het oorspronkelijke onderdeel" -#: part/serializers.py:455 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:456 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "Parameters kopiëren" -#: part/serializers.py:463 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "Parameter data kopiëren van het originele onderdeel" -#: part/serializers.py:469 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:488 +#: part/serializers.py:483 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:490 +#: part/serializers.py:485 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:497 +#: part/serializers.py:492 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:493 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:510 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:531 +#: part/serializers.py:526 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:541 +#: part/serializers.py:536 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:548 +#: part/serializers.py:543 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:557 +#: part/serializers.py:552 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:568 +#: part/serializers.py:563 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:575 +#: part/serializers.py:570 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:834 msgid "External Stock" msgstr "" -#: part/serializers.py:840 +#: part/serializers.py:836 msgid "Unallocated Stock" msgstr "" -#: part/serializers.py:843 +#: part/serializers.py:839 msgid "Variant Stock" msgstr "" -#: part/serializers.py:873 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:471 +#: part/serializers.py:869 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:472 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:870 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:880 templates/js/translated/part.js:102 +#: part/serializers.py:876 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:881 +#: part/serializers.py:877 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:887 +#: part/serializers.py:883 msgid "Supplier Information" msgstr "" -#: part/serializers.py:888 +#: part/serializers.py:884 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:896 +#: part/serializers.py:892 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:897 +#: part/serializers.py:893 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:902 +#: part/serializers.py:898 msgid "Existing Image" msgstr "" -#: part/serializers.py:903 +#: part/serializers.py:899 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:920 +#: part/serializers.py:916 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1126 +#: part/serializers.py:1122 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1136 +#: part/serializers.py:1132 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1146 +#: part/serializers.py:1142 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1152 +#: part/serializers.py:1148 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1153 +#: part/serializers.py:1149 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1158 +#: part/serializers.py:1154 msgid "Generate Report" msgstr "" -#: part/serializers.py:1159 +#: part/serializers.py:1155 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1164 +#: part/serializers.py:1160 msgid "Update Parts" msgstr "" -#: part/serializers.py:1165 +#: part/serializers.py:1161 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1173 +#: part/serializers.py:1169 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1279 +#: part/serializers.py:1275 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1286 +#: part/serializers.py:1282 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1294 +#: part/serializers.py:1290 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1301 +#: part/serializers.py:1297 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1330 +#: part/serializers.py:1326 msgid "Update" msgstr "" -#: part/serializers.py:1331 +#: part/serializers.py:1327 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1354 +#: part/serializers.py:1350 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1361 +#: part/serializers.py:1357 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1364 +#: part/serializers.py:1360 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1727 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1739 +#: part/serializers.py:1735 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1740 +#: part/serializers.py:1736 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1745 +#: part/serializers.py:1741 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1746 +#: part/serializers.py:1742 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1747 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1752 +#: part/serializers.py:1748 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1757 +#: part/serializers.py:1753 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1758 +#: part/serializers.py:1754 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1792 +#: part/serializers.py:1788 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1793 +#: part/serializers.py:1789 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1823 +#: part/serializers.py:1819 msgid "No part column specified" msgstr "" -#: part/serializers.py:1867 +#: part/serializers.py:1863 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1870 +#: part/serializers.py:1866 msgid "No matching part found" msgstr "" -#: part/serializers.py:1873 +#: part/serializers.py:1869 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1882 +#: part/serializers.py:1878 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1890 +#: part/serializers.py:1886 msgid "Invalid quantity" msgstr "Ongeldige hoeveelheid" -#: part/serializers.py:1911 +#: part/serializers.py:1907 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 +#: part/stocktake.py:225 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "" -#: part/stocktake.py:225 +#: part/stocktake.py:226 msgid "Total Cost Min" msgstr "" -#: part/stocktake.py:226 +#: part/stocktake.py:227 msgid "Total Cost Max" msgstr "" -#: part/stocktake.py:284 +#: part/stocktake.py:285 msgid "Stocktake Report Available" msgstr "" -#: part/stocktake.py:285 +#: part/stocktake.py:286 msgid "A new stocktake report is available for download" msgstr "" @@ -7157,7 +7227,7 @@ 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 +#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" @@ -7257,15 +7327,15 @@ msgstr "" msgid "Part Manufacturers" msgstr "Onderdeelfabrikanten" -#: part/templates/part/detail.html:655 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:663 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:748 +#: part/templates/part/detail.html:750 msgid "Add Test Result Template" msgstr "" @@ -7346,7 +7416,7 @@ msgstr "" msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" msgstr "" @@ -7418,7 +7488,7 @@ 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:2443 +#: templates/js/translated/part.js:1265 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7511,8 +7581,8 @@ msgstr "" #: 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:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/part.js:1243 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 #: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "Voorraad" @@ -7555,7 +7625,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:247 +#: part/templates/part/prices.html:28 stock/admin.py:251 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 @@ -7632,8 +7702,8 @@ msgstr "" #: part/templates/part/stock_count.html:7 #: templates/js/translated/model_renderers.js:227 -#: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 -#: templates/js/translated/part.js:2142 +#: templates/js/translated/part.js:705 templates/js/translated/part.js:2141 +#: templates/js/translated/part.js:2143 msgid "No Stock" msgstr "" @@ -8005,7 +8075,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:308 msgid "Landscape" msgstr "" @@ -8118,62 +8188,62 @@ msgstr "" msgid "Uninstalled plugin successfully" msgstr "" -#: plugin/models.py:35 +#: plugin/models.py:36 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:36 +#: plugin/models.py:37 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:42 users/models.py:100 +#: plugin/models.py:43 users/models.py:100 msgid "Key" msgstr "" -#: plugin/models.py:43 +#: plugin/models.py:44 msgid "Key of plugin" msgstr "" -#: plugin/models.py:51 +#: plugin/models.py:52 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:58 plugin/serializers.py:90 +#: plugin/models.py:59 plugin/serializers.py:90 msgid "Package Name" msgstr "" -#: plugin/models.py:60 +#: plugin/models.py:61 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:65 +#: plugin/models.py:66 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:156 templates/js/translated/table_filters.js:370 +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "" -#: plugin/models.py:165 +#: plugin/models.py:166 msgid "Sample plugin" msgstr "" -#: plugin/models.py:173 +#: plugin/models.py:174 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:181 +#: plugin/models.py:182 msgid "Package Plugin" msgstr "" -#: plugin/models.py:205 report/models.py:474 +#: plugin/models.py:220 report/models.py:475 #: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:252 +#: plugin/models.py:267 msgid "Method" msgstr "" @@ -8181,17 +8251,17 @@ msgstr "" msgid "No author found" msgstr "" -#: plugin/registry.py:597 +#: plugin/registry.py:534 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:600 +#: plugin/registry.py:537 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:602 +#: plugin/registry.py:539 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -8306,23 +8376,19 @@ msgstr "" msgid "Activate this plugin" msgstr "" -#: plugin/serializers.py:234 +#: plugin/serializers.py:226 msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:235 +#: plugin/serializers.py:227 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:77 +#: report/api.py:88 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:89 report/serializers.py:53 -msgid "Model Type" -msgstr "" - -#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/api.py:103 report/models.py:439 report/serializers.py:98 #: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 #: templates/js/translated/return_order.js:353 #: templates/js/translated/sales_order.js:887 @@ -8330,176 +8396,176 @@ msgstr "" msgid "Items" msgstr "" -#: report/api.py:168 +#: report/api.py:180 msgid "Plugin not found" msgstr "" -#: report/api.py:170 +#: report/api.py:182 msgid "Plugin is not active" msgstr "" -#: report/api.py:172 +#: report/api.py:184 msgid "Plugin does not support label printing" msgstr "" -#: report/api.py:221 +#: report/api.py:233 msgid "Invalid label dimensions" msgstr "" -#: report/api.py:236 report/api.py:316 +#: report/api.py:248 report/api.py:329 msgid "No valid items provided to template" msgstr "" -#: report/api.py:271 +#: report/api.py:283 msgid "Error printing label" msgstr "" -#: report/api.py:362 report/api.py:398 +#: report/api.py:375 report/api.py:411 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/helpers.py:41 +#: report/helpers.py:43 msgid "A4" msgstr "" -#: report/helpers.py:42 +#: report/helpers.py:44 msgid "A3" msgstr "" -#: report/helpers.py:43 +#: report/helpers.py:45 msgid "Legal" msgstr "" -#: report/helpers.py:44 +#: report/helpers.py:46 msgid "Letter" msgstr "" -#: report/models.py:118 +#: report/models.py:119 msgid "Template file with this name already exists" msgstr "" -#: report/models.py:150 +#: report/models.py:151 msgid "Template name" msgstr "" -#: report/models.py:156 +#: report/models.py:157 msgid "Template description" msgstr "" -#: report/models.py:162 +#: report/models.py:163 msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Filename Pattern" msgstr "Bestandsnaam Patroon" -#: report/models.py:203 +#: report/models.py:204 msgid "Pattern for generating filenames" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Template is enabled" msgstr "" -#: report/models.py:214 +#: report/models.py:215 msgid "Target model type for template" msgstr "" -#: report/models.py:234 +#: report/models.py:235 msgid "Filters" msgstr "" -#: report/models.py:235 +#: report/models.py:236 msgid "Template query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:294 report/models.py:361 +#: report/models.py:295 report/models.py:362 msgid "Template file" msgstr "" -#: report/models.py:302 +#: report/models.py:303 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:308 +#: report/models.py:309 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:367 +#: report/models.py:368 msgid "Width [mm]" msgstr "Breedte [mm]" -#: report/models.py:368 +#: report/models.py:369 msgid "Label width, specified in mm" msgstr "Label breedte, gespecificeerd in mm" -#: report/models.py:374 +#: report/models.py:375 msgid "Height [mm]" msgstr "Hoogte [mm]" -#: report/models.py:375 +#: report/models.py:376 msgid "Label height, specified in mm" msgstr "Label hoogte, gespecificeerd in mm" -#: report/models.py:438 +#: report/models.py:439 msgid "Number of items to process" msgstr "" -#: report/models.py:444 +#: report/models.py:445 msgid "Report generation is complete" msgstr "" -#: report/models.py:448 templates/js/translated/build.js:2177 +#: report/models.py:449 templates/js/translated/build.js:2177 msgid "Progress" msgstr "" -#: report/models.py:448 +#: report/models.py:449 msgid "Report generation progress" msgstr "" -#: report/models.py:456 +#: report/models.py:457 msgid "Report Template" msgstr "" -#: report/models.py:463 report/models.py:486 +#: report/models.py:464 report/models.py:487 msgid "Output File" msgstr "" -#: report/models.py:464 report/models.py:487 +#: report/models.py:465 report/models.py:488 msgid "Generated output file" msgstr "" -#: report/models.py:475 +#: report/models.py:476 msgid "Label output plugin" msgstr "" -#: report/models.py:479 +#: report/models.py:480 msgid "Label Template" msgstr "" -#: report/models.py:502 +#: report/models.py:503 msgid "Snippet" msgstr "" -#: report/models.py:503 +#: report/models.py:504 msgid "Report snippet file" msgstr "" -#: report/models.py:510 +#: report/models.py:511 msgid "Snippet file description" msgstr "" -#: report/models.py:528 +#: report/models.py:529 msgid "Asset" msgstr "" -#: report/models.py:529 +#: report/models.py:530 msgid "Report asset file" msgstr "" -#: report/models.py:536 +#: report/models.py:537 msgid "Asset file description" msgstr "" @@ -8572,8 +8638,8 @@ msgid "Total" msgstr "Totaal" #: report/templates/report/inventree_return_order_report.html:25 -#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 -#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:824 +#: stock/serializers.py:149 stock/templates/stock/item_base.html:311 #: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 #: templates/js/translated/build.js:2355 #: templates/js/translated/model_renderers.js:230 @@ -8603,32 +8669,32 @@ msgstr "" msgid "Test" msgstr "" -#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2412 msgid "Result" msgstr "" -#: report/templates/report/inventree_test_report.html:130 +#: report/templates/report/inventree_test_report.html:129 msgid "Pass" msgstr "" -#: report/templates/report/inventree_test_report.html:132 +#: report/templates/report/inventree_test_report.html:131 msgid "Fail" msgstr "" -#: report/templates/report/inventree_test_report.html:139 +#: report/templates/report/inventree_test_report.html:138 msgid "No result (required)" msgstr "" -#: report/templates/report/inventree_test_report.html:141 +#: report/templates/report/inventree_test_report.html:140 msgid "No result" msgstr "" -#: report/templates/report/inventree_test_report.html:154 +#: report/templates/report/inventree_test_report.html:153 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "" -#: report/templates/report/inventree_test_report.html:168 stock/admin.py:162 +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 #: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 #: templates/js/translated/stock.js:3110 msgid "Serial" @@ -8650,654 +8716,670 @@ msgstr "" msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:172 +#: stock/admin.py:51 stock/admin.py:171 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:176 +#: stock/admin.py:53 stock/admin.py:175 msgid "Location Name" msgstr "" -#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/admin.py:63 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:149 +#: stock/admin.py:148 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:168 +#: stock/admin.py:167 msgid "Status Code" msgstr "" -#: stock/admin.py:180 +#: stock/admin.py:179 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:185 +#: stock/admin.py:184 +msgid "Supplier Part SKU" +msgstr "" + +#: stock/admin.py:189 msgid "Supplier ID" msgstr "" -#: stock/admin.py:191 +#: stock/admin.py:195 msgid "Supplier Name" msgstr "" -#: stock/admin.py:196 +#: stock/admin.py:200 msgid "Customer ID" msgstr "" -#: stock/admin.py:201 stock/models.py:806 +#: stock/admin.py:205 stock/models.py:804 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:206 +#: stock/admin.py:210 msgid "Build ID" msgstr "" -#: stock/admin.py:216 +#: stock/admin.py:220 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:221 +#: stock/admin.py:225 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:236 +#: stock/admin.py:240 msgid "Review Needed" msgstr "" -#: stock/admin.py:241 +#: stock/admin.py:245 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:256 stock/models.py:900 +#: stock/admin.py:260 stock/models.py:898 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "" -#: stock/api.py:318 +#: stock/api.py:312 msgid "Filter by location depth" msgstr "" -#: stock/api.py:338 +#: stock/api.py:332 +msgid "Filter by top-level locations" +msgstr "" + +#: stock/api.py:347 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:359 +#: stock/api.py:369 stock/serializers.py:1085 msgid "Parent Location" msgstr "" -#: stock/api.py:360 +#: stock/api.py:370 msgid "Filter by parent location" msgstr "" -#: stock/api.py:615 templates/js/translated/table_filters.js:427 +#: stock/api.py:625 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:803 +#: stock/api.py:813 msgid "Part Tree" msgstr "" -#: stock/api.py:833 +#: stock/api.py:843 msgid "Expiry date before" msgstr "" -#: stock/api.py:837 +#: stock/api.py:847 msgid "Expiry date after" msgstr "" -#: stock/api.py:840 stock/templates/stock/item_base.html:439 +#: stock/api.py:850 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:927 +#: stock/api.py:937 msgid "Quantity is required" msgstr "" -#: stock/api.py:933 +#: stock/api.py:943 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:964 +#: stock/api.py:974 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:974 +#: stock/api.py:984 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:1005 +#: stock/api.py:1015 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:59 +#: stock/models.py:60 msgid "Stock Location type" msgstr "" -#: stock/models.py:60 +#: stock/models.py:61 msgid "Stock Location types" msgstr "" -#: stock/models.py:86 +#: stock/models.py:87 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:123 stock/models.py:788 +#: stock/models.py:124 stock/models.py:786 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Voorraadlocatie" -#: stock/models.py:124 stock/templates/stock/location.html:186 +#: stock/models.py:125 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "Voorraadlocaties" -#: stock/models.py:166 stock/models.py:949 +#: stock/models.py:167 stock/models.py:947 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:167 stock/models.py:950 +#: stock/models.py:168 stock/models.py:948 msgid "Select Owner" msgstr "" -#: stock/models.py:175 +#: stock/models.py:176 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:182 templates/js/translated/stock.js:2781 +#: stock/models.py:183 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:183 +#: stock/models.py:184 msgid "This is an external stock location" msgstr "" -#: stock/models.py:189 templates/js/translated/stock.js:2790 +#: stock/models.py:190 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" -#: stock/models.py:193 +#: stock/models.py:194 msgid "Stock location type of this location" msgstr "" -#: stock/models.py:262 +#: stock/models.py:261 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:643 +#: stock/models.py:641 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:670 stock/serializers.py:419 +#: stock/models.py:668 stock/serializers.py:446 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:687 +#: stock/models.py:685 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:697 stock/models.py:710 +#: stock/models.py:695 stock/models.py:708 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:700 +#: stock/models.py:698 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:724 +#: stock/models.py:722 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:729 +#: stock/models.py:727 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:742 +#: stock/models.py:740 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:758 +#: stock/models.py:756 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:770 +#: stock/models.py:768 msgid "Base part" msgstr "" -#: stock/models.py:780 +#: stock/models.py:778 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:792 +#: stock/models.py:790 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:800 stock/serializers.py:1480 +#: stock/models.py:798 stock/serializers.py:1476 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:811 +#: stock/models.py:809 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:830 +#: stock/models.py:828 msgid "Serial number for this item" msgstr "" -#: stock/models.py:844 stock/serializers.py:1463 +#: stock/models.py:842 stock/serializers.py:1459 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:849 +#: stock/models.py:847 msgid "Stock Quantity" msgstr "" -#: stock/models.py:859 +#: stock/models.py:857 msgid "Source Build" msgstr "" -#: stock/models.py:862 +#: stock/models.py:860 msgid "Build for this stock item" msgstr "" -#: stock/models.py:869 stock/templates/stock/item_base.html:363 +#: stock/models.py:867 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:872 +#: stock/models.py:870 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:881 +#: stock/models.py:879 msgid "Source Purchase Order" msgstr "Inkooporder Bron" -#: stock/models.py:885 +#: stock/models.py:883 msgid "Purchase order for this stock item" msgstr "Inkooporder voor dit voorraadartikel" -#: stock/models.py:891 +#: stock/models.py:889 msgid "Destination Sales Order" msgstr "Bestemming Verkooporder" -#: stock/models.py:902 +#: stock/models.py:900 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:920 +#: stock/models.py:918 msgid "Delete on deplete" msgstr "" -#: stock/models.py:921 +#: stock/models.py:919 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:941 +#: stock/models.py:939 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:972 +#: stock/models.py:970 msgid "Converted to part" msgstr "" -#: stock/models.py:1490 +#: stock/models.py:1486 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1496 +#: stock/models.py:1492 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1500 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1510 +#: stock/models.py:1506 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1515 +#: stock/models.py:1511 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1523 stock/serializers.py:658 +#: stock/models.py:1519 stock/serializers.py:660 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1620 +#: stock/models.py:1616 msgid "Test template does not exist" msgstr "" -#: stock/models.py:1638 +#: stock/models.py:1634 msgid "Stock item has been assigned to a sales order" msgstr "Voorraadartikel is toegewezen aan een verkooporder" -#: stock/models.py:1642 +#: stock/models.py:1638 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1645 +#: stock/models.py:1641 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1648 +#: stock/models.py:1644 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1651 +#: stock/models.py:1647 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1654 +#: stock/models.py:1650 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1661 stock/serializers.py:1369 +#: stock/models.py:1657 stock/serializers.py:1365 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1665 +#: stock/models.py:1661 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1673 +#: stock/models.py:1669 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1678 +#: stock/models.py:1674 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1905 +#: stock/models.py:1901 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2310 msgid "Entry notes" msgstr "" -#: stock/models.py:2391 +#: stock/models.py:2378 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2396 +#: stock/models.py:2383 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2423 +#: stock/models.py:2388 +msgid "Invalid value for this test" +msgstr "" + +#: stock/models.py:2412 msgid "Test result" msgstr "" -#: stock/models.py:2430 +#: stock/models.py:2419 msgid "Test output value" msgstr "" -#: stock/models.py:2438 +#: stock/models.py:2427 msgid "Test result attachment" msgstr "" -#: stock/models.py:2442 +#: stock/models.py:2431 msgid "Test notes" msgstr "" -#: stock/models.py:2450 templates/js/translated/stock.js:1548 +#: stock/models.py:2439 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2440 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2457 +#: stock/models.py:2446 msgid "Started" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2447 msgid "The timestamp of the test start" msgstr "" -#: stock/models.py:2464 +#: stock/models.py:2453 msgid "Finished" msgstr "" -#: stock/models.py:2465 +#: stock/models.py:2454 msgid "The timestamp of the test finish" msgstr "" -#: stock/serializers.py:75 +#: stock/serializers.py:74 msgid "Generated batch code" msgstr "" -#: stock/serializers.py:84 +#: stock/serializers.py:83 msgid "Select build order" msgstr "" -#: stock/serializers.py:93 +#: stock/serializers.py:92 msgid "Select stock item to generate batch code for" msgstr "" -#: stock/serializers.py:102 +#: stock/serializers.py:101 msgid "Select location to generate batch code for" msgstr "" -#: stock/serializers.py:111 +#: stock/serializers.py:110 msgid "Select part to generate batch code for" msgstr "" -#: stock/serializers.py:120 +#: stock/serializers.py:119 msgid "Select purchase order" msgstr "" -#: stock/serializers.py:127 +#: stock/serializers.py:126 msgid "Enter quantity for batch code" msgstr "" -#: stock/serializers.py:150 +#: stock/serializers.py:149 msgid "Generated serial number" msgstr "" -#: stock/serializers.py:159 +#: stock/serializers.py:158 msgid "Select part to generate serial number for" msgstr "" -#: stock/serializers.py:167 +#: stock/serializers.py:166 msgid "Quantity of serial numbers to generate" msgstr "" -#: stock/serializers.py:229 +#: stock/serializers.py:228 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:248 +#: stock/serializers.py:247 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:280 +#: stock/serializers.py:279 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:313 +#: stock/serializers.py:315 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:411 +#: stock/serializers.py:438 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:531 +#: stock/serializers.py:558 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:595 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:606 +#: stock/serializers.py:608 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:613 +#: stock/serializers.py:615 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 +#: stock/serializers.py:626 stock/serializers.py:1322 stock/serializers.py:1578 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:631 +#: stock/serializers.py:633 msgid "Optional note field" msgstr "" -#: stock/serializers.py:641 +#: stock/serializers.py:643 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:696 +#: stock/serializers.py:698 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:703 +#: stock/serializers.py:705 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:704 +#: stock/serializers.py:706 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 -#: stock/serializers.py:935 +#: stock/serializers.py:711 stock/serializers.py:791 stock/serializers.py:887 +#: stock/serializers.py:937 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:719 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:725 +#: stock/serializers.py:727 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:736 +#: stock/serializers.py:738 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:749 +#: stock/serializers.py:751 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:784 +#: stock/serializers.py:786 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:819 +#: stock/serializers.py:821 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:834 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:849 +#: stock/serializers.py:851 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:880 +#: stock/serializers.py:882 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:917 +#: stock/serializers.py:919 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:923 +#: stock/serializers.py:925 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:1019 stock/serializers.py:1082 +#: stock/serializers.py:1021 stock/serializers.py:1093 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:220 +#: stock/templates/stock/location.html:222 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "Sublocaties" -#: stock/serializers.py:1198 +#: stock/serializers.py:1086 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: stock/serializers.py:1194 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1202 +#: stock/serializers.py:1198 msgid "Item is allocated to a sales order" msgstr "Artikel is toegewezen aan een verkooporder" -#: stock/serializers.py:1206 +#: stock/serializers.py:1202 msgid "Item is allocated to a build order" msgstr "Artikel is toegewezen aan een productieorder" -#: stock/serializers.py:1230 +#: stock/serializers.py:1226 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1236 +#: stock/serializers.py:1232 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1244 +#: stock/serializers.py:1240 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1254 stock/serializers.py:1508 +#: stock/serializers.py:1250 stock/serializers.py:1504 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1333 +#: stock/serializers.py:1329 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1338 +#: stock/serializers.py:1334 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1339 +#: stock/serializers.py:1335 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1344 +#: stock/serializers.py:1340 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1345 +#: stock/serializers.py:1341 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1355 +#: stock/serializers.py:1351 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1422 +#: stock/serializers.py:1418 msgid "No Change" msgstr "" -#: stock/serializers.py:1451 +#: stock/serializers.py:1447 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1470 +#: stock/serializers.py:1466 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1498 +#: stock/serializers.py:1494 msgid "Stock transaction notes" msgstr "" @@ -9450,7 +9532,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276 msgid "Delete Test Data" msgstr "" @@ -9470,11 +9552,11 @@ msgstr "" msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:272 +#: stock/templates/stock/item.html:264 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "" @@ -9760,28 +9842,28 @@ msgstr "U staat niet in de lijst van eigenaars van deze locatie. Deze voorraadlo msgid "Location Type" msgstr "" -#: stock/templates/stock/location.html:224 +#: stock/templates/stock/location.html:226 msgid "Create new stock location" msgstr "Maak nieuwe voorraadlocatie" -#: stock/templates/stock/location.html:225 +#: stock/templates/stock/location.html:227 msgid "New Location" msgstr "Nieuwe Locatie" -#: stock/templates/stock/location.html:295 +#: stock/templates/stock/location.html:299 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:317 +#: stock/templates/stock/location.html:321 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:390 +#: stock/templates/stock/location.html:394 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:401 +#: stock/templates/stock/location.html:405 msgid "Link Barcode to Stock Location" msgstr "" @@ -10205,20 +10287,20 @@ msgstr "Inkooporder Instellingen" msgid "Pricing Settings" msgstr "" -#: templates/InvenTree/settings/pricing.html:34 +#: templates/InvenTree/settings/pricing.html:35 msgid "Exchange Rates" msgstr "" -#: templates/InvenTree/settings/pricing.html:38 +#: templates/InvenTree/settings/pricing.html:39 msgid "Update Now" msgstr "" -#: templates/InvenTree/settings/pricing.html:46 -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 msgid "Last Update" msgstr "" -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:51 msgid "Never" msgstr "" @@ -10275,8 +10357,8 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:547 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 +#: templates/js/translated/part.js:393 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:402 msgid "Delete" msgstr "Verwijderen" @@ -10316,12 +10398,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 -#: templates/js/translated/part.js:1645 +#: templates/js/translated/part.js:1646 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 -#: templates/js/translated/part.js:1646 +#: templates/js/translated/part.js:1647 msgid "Delete Template" msgstr "" @@ -10711,7 +10793,7 @@ msgid "Submit Bug Report" msgstr "" #: templates/about.html:91 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 +#: templates/js/translated/helpers.js:589 msgid "copy to clipboard" msgstr "" @@ -10775,7 +10857,7 @@ 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 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45 msgid "Return to Site" msgstr "" @@ -10889,15 +10971,19 @@ msgstr "" msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "" -#: templates/allauth_2fa/setup.html:23 +#: templates/allauth_2fa/setup.html:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 msgid "Step 2" msgstr "" -#: templates/allauth_2fa/setup.html:27 +#: templates/allauth_2fa/setup.html:28 msgid "Input a token generated by the app:" msgstr "" -#: templates/allauth_2fa/setup.html:37 +#: templates/allauth_2fa/setup.html:38 msgid "Verify" msgstr "" @@ -10976,7 +11062,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3217 +#: templates/js/translated/part.js:3219 msgid "Minimum Quantity" msgstr "" @@ -11064,27 +11150,27 @@ msgstr "" msgid "Delete attachments" msgstr "" -#: templates/js/translated/attachment.js:253 +#: templates/js/translated/attachment.js:260 msgid "Attachment actions" msgstr "" -#: templates/js/translated/attachment.js:275 +#: templates/js/translated/attachment.js:294 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:315 +#: templates/js/translated/attachment.js:334 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:365 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:366 +#: templates/js/translated/attachment.js:385 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:374 +#: templates/js/translated/attachment.js:393 msgid "Delete attachment" msgstr "" @@ -11365,7 +11451,7 @@ msgid "Includes variant and substitute stock" msgstr "" #: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 -#: templates/js/translated/part.js:1256 +#: templates/js/translated/part.js:1257 #: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" @@ -11692,7 +11778,7 @@ msgstr "" #: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 #: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 -#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11735,8 +11821,8 @@ msgstr "" msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 -#: templates/js/translated/part.js:1202 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:791 +#: templates/js/translated/part.js:1203 msgid "Trackable part" msgstr "" @@ -11922,7 +12008,7 @@ msgid "Delete Parameters" msgstr "" #: templates/js/translated/company.js:1191 -#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2244 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2245 msgid "Order parts" msgstr "" @@ -11939,34 +12025,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:1279 -#: templates/js/translated/company.js:1567 templates/js/translated/part.js:798 -#: templates/js/translated/part.js:1210 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Template part" msgstr "" #: templates/js/translated/company.js:1283 -#: templates/js/translated/company.js:1571 templates/js/translated/part.js:802 -#: templates/js/translated/part.js:1214 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:803 +#: templates/js/translated/part.js:1215 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1464 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1465 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1527 +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1528 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1528 +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1529 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1433 +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1434 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1549 +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1550 msgid "Delete Parameter" msgstr "" @@ -12100,23 +12186,23 @@ msgstr "" msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2499 +#: templates/js/translated/forms.js:2500 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3113 +#: templates/js/translated/forms.js:3114 msgid "Select Columns" msgstr "" @@ -12217,7 +12303,7 @@ msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 -#: templates/js/translated/part.js:1604 +#: templates/js/translated/part.js:1605 msgid "ID" msgstr "" @@ -12298,347 +12384,343 @@ msgstr "" 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 +#: templates/js/translated/part.js:333 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:355 +#: templates/js/translated/part.js:356 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:356 +#: templates/js/translated/part.js:357 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:370 +#: templates/js/translated/part.js:371 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:383 +#: templates/js/translated/part.js:384 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:388 +#: templates/js/translated/part.js:389 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:397 +#: templates/js/translated/part.js:398 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:401 +#: templates/js/translated/part.js:402 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:406 +#: templates/js/translated/part.js:407 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:430 +#: templates/js/translated/part.js:431 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:432 +#: templates/js/translated/part.js:433 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:433 +#: templates/js/translated/part.js:434 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:462 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:463 +#: templates/js/translated/part.js:464 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:474 +#: templates/js/translated/part.js:475 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:531 +#: templates/js/translated/part.js:532 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:532 +#: templates/js/translated/part.js:533 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:546 +#: templates/js/translated/part.js:547 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:548 +#: templates/js/translated/part.js:549 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:549 +#: templates/js/translated/part.js:550 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:550 +#: templates/js/translated/part.js:551 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:557 +#: templates/js/translated/part.js:558 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:593 +#: templates/js/translated/part.js:594 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:595 +#: templates/js/translated/part.js:596 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:600 +#: templates/js/translated/part.js:601 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:602 +#: templates/js/translated/part.js:603 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:619 +#: templates/js/translated/part.js:620 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:629 +#: templates/js/translated/part.js:630 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:632 +#: templates/js/translated/part.js:633 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:657 +#: templates/js/translated/part.js:658 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:685 +#: templates/js/translated/part.js:686 #: templates/js/translated/table_filters.js:747 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:688 +#: templates/js/translated/part.js:689 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:748 +#: templates/js/translated/part.js:749 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:771 +#: templates/js/translated/part.js:772 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +#: templates/js/translated/part.js:795 templates/js/translated/part.js:1207 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:806 +#: templates/js/translated/part.js:807 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:810 +#: templates/js/translated/part.js:811 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:897 +#: templates/js/translated/part.js:898 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:901 +#: templates/js/translated/part.js:902 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1050 +#: templates/js/translated/part.js:1051 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1145 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +#: templates/js/translated/part.js:1113 templates/js/translated/part.js:1155 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1281 +#: templates/js/translated/part.js:1282 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1599 +#: templates/js/translated/part.js:1600 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1662 +#: templates/js/translated/part.js:1663 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1674 +#: templates/js/translated/part.js:1675 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1682 +#: templates/js/translated/part.js:1683 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1716 +#: templates/js/translated/part.js:1717 #: templates/js/translated/purchase_order.js:1654 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1860 +#: templates/js/translated/part.js:1861 #: templates/js/translated/purchase_order.js:2153 #: templates/js/translated/return_order.js:755 #: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1906 +#: templates/js/translated/part.js:1907 #: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1970 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1991 +#: templates/js/translated/part.js:1992 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 +#: templates/js/translated/part.js:2080 templates/js/translated/part.js:2506 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2200 +#: templates/js/translated/part.js:2201 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2205 +#: templates/js/translated/part.js:2206 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2235 +#: templates/js/translated/part.js:2236 msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2286 +#: templates/js/translated/part.js:2287 msgid "part" msgstr "" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2288 msgid "parts" msgstr "" -#: templates/js/translated/part.js:2383 +#: templates/js/translated/part.js:2384 msgid "No category" msgstr "" -#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2546 +#: templates/js/translated/part.js:2547 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2644 +#: templates/js/translated/part.js:2645 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2760 +#: templates/js/translated/part.js:2761 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2776 +#: templates/js/translated/part.js:2777 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2865 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2887 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/part.js:2938 templates/js/translated/stock.js:1457 #: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2940 +#: templates/js/translated/part.js:2942 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2956 +#: templates/js/translated/part.js:2958 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2970 +#: templates/js/translated/part.js:2972 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3051 templates/js/translated/part.js:3052 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3052 +#: templates/js/translated/part.js:3054 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3058 +#: templates/js/translated/part.js:3060 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3108 +#: templates/js/translated/part.js:3110 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3114 +#: templates/js/translated/part.js:3116 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3210 +#: templates/js/translated/part.js:3212 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3226 +#: templates/js/translated/part.js:3228 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3271 +#: templates/js/translated/part.js:3273 msgid "Minimum Stock Level" msgstr "" @@ -13246,10 +13328,6 @@ msgstr "" 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 "" @@ -13418,7 +13496,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:401 +#: templates/js/translated/stock.js:1042 users/models.py:392 msgid "Add" msgstr "" @@ -14309,34 +14387,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:384 +#: users/models.py:375 msgid "Permission set" msgstr "" -#: users/models.py:393 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "View" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "Permission to view items" msgstr "" -#: users/models.py:401 +#: users/models.py:392 msgid "Permission to add items" msgstr "" -#: users/models.py:405 +#: users/models.py:396 msgid "Change" msgstr "" -#: users/models.py:407 +#: users/models.py:398 msgid "Permissions to edit items" msgstr "" -#: users/models.py:413 +#: users/models.py:404 msgid "Permission to delete items" msgstr "" + diff --git a/src/backend/InvenTree/locale/no/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/no/LC_MESSAGES/django.po index 482a4ae280..6d544c763b 100644 --- a/src/backend/InvenTree/locale/no/LC_MESSAGES/django.po +++ b/src/backend/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-05-31 07:08+0000\n" -"PO-Revision-Date: 2024-05-27 11:54\n" +"POT-Creation-Date: 2024-06-26 03:18+0000\n" +"PO-Revision-Date: 2024-06-26 06:04\n" "Last-Translator: \n" "Language-Team: Norwegian\n" "Language: no_NO\n" @@ -21,7 +21,7 @@ msgstr "" msgid "API endpoint not found" msgstr "API-endepunkt ikke funnet" -#: InvenTree/api.py:536 +#: InvenTree/api.py:520 msgid "User does not have permission to view this model" msgstr "Brukeren har ikke rettigheter til å se denne modellen" @@ -52,25 +52,25 @@ msgstr "Ugyldig mengde oppgitt ({exc})" msgid "Error details can be found in the admin panel" msgstr "Feildetaljer kan finnes i admin-panelet" -#: InvenTree/fields.py:139 +#: InvenTree/fields.py:136 msgid "Enter date" msgstr "Oppgi dato" -#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 -#: build/serializers.py:531 build/templates/build/sidebar.html:21 -#: company/models.py:849 company/templates/company/sidebar.html:37 -#: order/models.py:1332 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:205 InvenTree/models.py:918 build/serializers.py:452 +#: build/serializers.py:530 build/templates/build/sidebar.html:21 +#: company/models.py:817 company/templates/company/sidebar.html:37 +#: order/models.py:1296 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:3218 part/templates/part/part_sidebar.html:63 +#: part/models.py:3183 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_report.html:172 -#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 -#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 -#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 -#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:230 stock/models.py:2309 stock/models.py:2431 +#: stock/serializers.py:632 stock/serializers.py:790 stock/serializers.py:886 +#: stock/serializers.py:936 stock/serializers.py:1239 stock/serializers.py:1328 +#: stock/serializers.py:1493 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1080 +#: templates/js/translated/part.js:1081 #: templates/js/translated/purchase_order.js:2200 #: templates/js/translated/return_order.js:775 #: templates/js/translated/sales_order.js:1103 @@ -120,15 +120,15 @@ msgstr "Bekreft e-postaddresse" msgid "You must type the same email each time." msgstr "Du må angi samme e-post hver gang." -#: InvenTree/forms.py:253 InvenTree/forms.py:261 +#: InvenTree/forms.py:248 InvenTree/forms.py:256 msgid "The provided primary email address is not valid." msgstr "Den oppgitte primære e-postadressen er ikke gyldig." -#: InvenTree/forms.py:268 +#: InvenTree/forms.py:263 msgid "The provided email domain is not approved." msgstr "Det oppgitte e-postdomenet er ikke godkjent." -#: InvenTree/forms.py:395 +#: InvenTree/forms.py:390 msgid "Registration is disabled." msgstr "Registrering er deaktivert." @@ -171,35 +171,35 @@ msgstr "Antall unike serienumre ({len(serials)}) må samsvare med antallet ({exp msgid "Remove HTML tags from this value" msgstr "Fjern HTML-tagger fra denne verdien" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Connection error" msgstr "Tilkoblingsfeil" -#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 msgid "Server responded with invalid status code" msgstr "Serveren svarte med ugyldig statuskode" -#: InvenTree/helpers_model.py:158 +#: InvenTree/helpers_model.py:148 msgid "Exception occurred" msgstr "Det har oppstått et unntak" -#: InvenTree/helpers_model.py:168 +#: InvenTree/helpers_model.py:158 msgid "Server responded with invalid Content-Length value" msgstr "Serveren svarte med ugyldig \"Content-Length\"-verdi" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:161 msgid "Image size is too large" msgstr "Bildestørrelsen er for stor" -#: InvenTree/helpers_model.py:183 +#: InvenTree/helpers_model.py:173 msgid "Image download exceeded maximum size" msgstr "Bildenedlasting overskred maksimal størrelse" -#: InvenTree/helpers_model.py:188 +#: InvenTree/helpers_model.py:178 msgid "Remote server returned empty response" msgstr "Ekstern server returnerte tomt svar" -#: InvenTree/helpers_model.py:196 +#: InvenTree/helpers_model.py:186 msgid "Supplied URL is not a valid image file" msgstr "Angitt URL er ikke en gyldig bildefil" @@ -296,46 +296,50 @@ msgid "Portuguese (Brazilian)" msgstr "Portugisisk (Brasil)" #: InvenTree/locales.py:41 +msgid "Romanian" +msgstr "" + +#: InvenTree/locales.py:42 msgid "Russian" msgstr "Russisk" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:43 msgid "Slovak" msgstr "Slovakisk" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:44 msgid "Slovenian" msgstr "Slovensk" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:45 msgid "Serbian" msgstr "Serbisk" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:46 msgid "Swedish" msgstr "Svensk" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:47 msgid "Thai" msgstr "Thailandsk" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:48 msgid "Turkish" msgstr "Tyrkisk" -#: InvenTree/locales.py:48 +#: InvenTree/locales.py:49 msgid "Ukrainian" msgstr "" -#: InvenTree/locales.py:49 +#: InvenTree/locales.py:50 msgid "Vietnamese" msgstr "Vietnamesisk" -#: InvenTree/locales.py:50 +#: InvenTree/locales.py:51 msgid "Chinese (Simplified)" msgstr "Kinesisk (forenklet)" -#: InvenTree/locales.py:51 +#: InvenTree/locales.py:52 msgid "Chinese (Traditional)" msgstr "Kinesisk (tradisjonell)" @@ -344,153 +348,65 @@ msgstr "Kinesisk (tradisjonell)" msgid "[{site_name}] Log in to the app" msgstr "[{site_name}] Logg inn på appen" -#: InvenTree/magic_login.py:38 company/models.py:133 +#: InvenTree/magic_login.py:38 company/models.py:136 #: company/templates/company/company_base.html:138 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:677 msgid "Email" msgstr "E-post" -#: InvenTree/models.py:107 +#: InvenTree/models.py:105 msgid "Error running plugin validation" msgstr "Feil under validering av utvidelse" -#: InvenTree/models.py:176 +#: InvenTree/models.py:174 msgid "Metadata must be a python dict object" msgstr "Metadata må være et python dict-objekt" -#: InvenTree/models.py:182 +#: InvenTree/models.py:180 msgid "Plugin Metadata" msgstr "Utvidelse-metadata" -#: InvenTree/models.py:183 +#: InvenTree/models.py:181 msgid "JSON metadata field, for use by external plugins" msgstr "JSON-metadatafelt, for bruk av eksterne utvidelser" -#: InvenTree/models.py:413 +#: InvenTree/models.py:408 msgid "Improperly formatted pattern" msgstr "Uriktig formatert mønster" -#: InvenTree/models.py:420 +#: InvenTree/models.py:415 msgid "Unknown format key specified" msgstr "Ukjent formatnøkkel spesifisert" -#: InvenTree/models.py:426 +#: InvenTree/models.py:421 msgid "Missing required format key" msgstr "Mangler nødvendig formatnøkkel" -#: InvenTree/models.py:437 +#: InvenTree/models.py:432 msgid "Reference field cannot be empty" msgstr "Referansefeltet kan ikke være tomt" -#: InvenTree/models.py:445 +#: InvenTree/models.py:440 msgid "Reference must match required pattern" msgstr "Referansen må samsvare påkrevd mønster" -#: InvenTree/models.py:476 +#: InvenTree/models.py:471 msgid "Reference number is too large" msgstr "Referansenummeret er for stort" -#: InvenTree/models.py:550 -msgid "Missing file" -msgstr "Fil mangler" - -#: InvenTree/models.py:551 -msgid "Missing external link" -msgstr "Mangler eksternlenke" - -#: InvenTree/models.py:572 stock/models.py:2437 -#: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:326 -msgid "Attachment" -msgstr "Vedlegg" - -#: InvenTree/models.py:573 -msgid "Select file to attach" -msgstr "Velg fil å legge ved" - -#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:831 -#: order/models.py:303 order/models.py:1337 order/models.py:1753 -#: part/admin.py:55 part/models.py:962 -#: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_report.html:164 -#: stock/admin.py:225 templates/js/translated/company.js:1319 -#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2455 -#: templates/js/translated/purchase_order.js:2040 -#: templates/js/translated/purchase_order.js:2204 -#: templates/js/translated/return_order.js:779 -#: templates/js/translated/sales_order.js:1092 -#: templates/js/translated/sales_order.js:2023 -msgid "Link" -msgstr "Lenke" - -#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 -#: stock/models.py:836 -msgid "Link to external URL" -msgstr "Lenke til ekstern URL" - -#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:341 -msgid "Comment" -msgstr "Kommentar" - -#: InvenTree/models.py:589 -msgid "File comment" -msgstr "Kommentar til fil" - -#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 -#: common/models.py:2518 common/models.py:2742 common/models.py:2743 -#: common/models.py:2988 common/models.py:2989 part/models.py:3228 -#: part/models.py:3315 part/models.py:3408 part/models.py:3436 -#: plugin/models.py:259 plugin/models.py:260 -#: report/templates/report/inventree_test_report.html:105 -#: templates/js/translated/stock.js:3036 users/models.py:111 -msgid "User" -msgstr "Bruker" - -#: InvenTree/models.py:602 -msgid "upload date" -msgstr "opplastet dato" - -#: InvenTree/models.py:624 -msgid "Filename must not be empty" -msgstr "Filnavn kan ikke være tomt" - -#: InvenTree/models.py:635 -msgid "Invalid attachment directory" -msgstr "Ugyldig vedleggskatalog" - -#: InvenTree/models.py:665 -#, python-brace-format -msgid "Filename contains illegal character '{c}'" -msgstr "Filnavn inneholder ugyldig tegn '{c}'" - -#: InvenTree/models.py:668 -msgid "Filename missing extension" -msgstr "Filnavn mangler filtype" - -#: InvenTree/models.py:677 -msgid "Attachment with this filename already exists" -msgstr "Vedlegg med dette filnavnet finnes allerede" - -#: InvenTree/models.py:684 -msgid "Error renaming file" -msgstr "Feil ved endring av filnavn" - -#: InvenTree/models.py:860 +#: InvenTree/models.py:719 msgid "Duplicate names cannot exist under the same parent" msgstr "Duplikatnavn kan ikke eksistere under samme overordnede" -#: InvenTree/models.py:877 +#: InvenTree/models.py:736 msgid "Invalid choice" msgstr "Ugyldig valg" -#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 -#: common/serializers.py:403 company/models.py:614 machine/models.py:24 -#: part/models.py:898 part/models.py:3659 plugin/models.py:50 -#: report/models.py:149 stock/models.py:72 +#: InvenTree/models.py:766 common/models.py:2623 common/models.py:3036 +#: common/serializers.py:408 company/models.py:580 machine/models.py:24 +#: part/models.py:891 part/models.py:3639 plugin/models.py:51 +#: report/models.py:150 stock/models.py:73 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:83 @@ -501,25 +417,25 @@ msgstr "Ugyldig valg" #: templates/js/translated/company.js:724 #: templates/js/translated/company.js:913 #: templates/js/translated/company.js:1165 -#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 -#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1187 +#: templates/js/translated/part.js:1475 templates/js/translated/part.js:1611 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Navn" -#: InvenTree/models.py:913 build/models.py:218 -#: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:523 company/models.py:840 +#: InvenTree/models.py:772 build/models.py:220 +#: build/templates/build/detail.html:24 common/models.py:138 +#: company/models.py:509 company/models.py:808 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 order/models.py:289 -#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 -#: part/models.py:3674 part/templates/part/category.html:82 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:914 +#: part/models.py:3654 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:155 -#: report/models.py:509 report/models.py:535 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 #: report/templates/report/inventree_build_order_report.html:117 -#: stock/admin.py:55 stock/models.py:78 stock/templates/stock/location.html:125 +#: stock/admin.py:54 stock/models.py:79 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 @@ -528,10 +444,10 @@ msgstr "Navn" #: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 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:2354 -#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1239 +#: templates/js/translated/part.js:1484 templates/js/translated/part.js:1622 +#: templates/js/translated/part.js:1959 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2897 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1706 #: templates/js/translated/purchase_order.js:1849 @@ -544,149 +460,141 @@ msgstr "Navn" msgid "Description" msgstr "Beskrivelse" -#: InvenTree/models.py:914 stock/models.py:79 +#: InvenTree/models.py:773 stock/models.py:80 msgid "Description (optional)" msgstr "Beskrivelse (valgfritt)" -#: InvenTree/models.py:923 -msgid "parent" -msgstr "overkategori" - -#: InvenTree/models.py:929 templates/js/translated/part.js:2793 +#: InvenTree/models.py:788 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Sti" -#: InvenTree/models.py:1035 +#: InvenTree/models.py:918 msgid "Markdown notes (optional)" msgstr "Markdown-notater (valgfritt)" -#: InvenTree/models.py:1064 +#: InvenTree/models.py:947 msgid "Barcode Data" msgstr "Strekkodedata" -#: InvenTree/models.py:1065 +#: InvenTree/models.py:948 msgid "Third party barcode data" msgstr "Tredjeparts strekkodedata" -#: InvenTree/models.py:1071 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "Strekkode-hash" -#: InvenTree/models.py:1072 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "Unik hash av strekkodedata" -#: InvenTree/models.py:1125 +#: InvenTree/models.py:1008 msgid "Existing barcode found" msgstr "Eksisterende strekkode funnet" -#: InvenTree/models.py:1168 +#: InvenTree/models.py:1051 msgid "Server Error" msgstr "Serverfeil" -#: InvenTree/models.py:1169 +#: InvenTree/models.py:1052 msgid "An error has been logged by the server." msgstr "En feil har blitt logget av serveren." -#: InvenTree/serializers.py:62 part/models.py:4212 +#: InvenTree/serializers.py:63 part/models.py:4192 msgid "Must be a valid number" msgstr "Må være et gyldig tall" -#: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:3036 +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3001 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Valuta" -#: InvenTree/serializers.py:102 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "Velg valuta ut fra tilgjengelige alternativer" -#: InvenTree/serializers.py:441 +#: InvenTree/serializers.py:442 msgid "You do not have permission to change this user role." msgstr "Du har ikke tillatelse til å endre denne brukerrollen." -#: InvenTree/serializers.py:453 +#: InvenTree/serializers.py:454 msgid "Only superusers can create new users" msgstr "Bare superbrukere kan opprette nye brukere" -#: InvenTree/serializers.py:472 +#: InvenTree/serializers.py:473 msgid "Your account has been created." msgstr "Din konto er opprettet." -#: InvenTree/serializers.py:474 +#: InvenTree/serializers.py:475 msgid "Please use the password reset function to login" msgstr "Vennligst bruk funksjonen for å tilbakestille passord for å logge inn" -#: InvenTree/serializers.py:481 +#: InvenTree/serializers.py:482 msgid "Welcome to InvenTree" msgstr "Velkommen til InvenTree" -#: InvenTree/serializers.py:542 -msgid "Filename" -msgstr "Filnavn" - -#: InvenTree/serializers.py:576 +#: InvenTree/serializers.py:540 msgid "Invalid value" msgstr "Ugyldig verdi" -#: InvenTree/serializers.py:596 +#: InvenTree/serializers.py:560 msgid "Data File" msgstr "Datafil" -#: InvenTree/serializers.py:597 +#: InvenTree/serializers.py:561 msgid "Select data file for upload" msgstr "Velg datafil for opplasting" -#: InvenTree/serializers.py:614 +#: InvenTree/serializers.py:578 msgid "Unsupported file type" msgstr "Filtypen støttes ikke" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:584 msgid "File is too large" msgstr "Filen er for stor" -#: InvenTree/serializers.py:641 +#: InvenTree/serializers.py:605 msgid "No columns found in file" msgstr "Ingen kolonner funnet i filen" -#: InvenTree/serializers.py:644 +#: InvenTree/serializers.py:608 msgid "No data rows found in file" msgstr "Ingen datarader funnet i fil" -#: InvenTree/serializers.py:757 +#: InvenTree/serializers.py:721 msgid "No data rows provided" msgstr "Ingen datarader oppgitt" -#: InvenTree/serializers.py:760 +#: InvenTree/serializers.py:724 msgid "No data columns supplied" msgstr "Ingen datakolonner angitt" -#: InvenTree/serializers.py:827 +#: InvenTree/serializers.py:791 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Mangler påkrevd kolonne: '{name}'" -#: InvenTree/serializers.py:836 +#: InvenTree/serializers.py:800 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Dupliaktkolonne: '{col}'" -#: InvenTree/serializers.py:859 +#: InvenTree/serializers.py:840 msgid "Remote Image" msgstr "Eksternt bilde" -#: InvenTree/serializers.py:860 +#: InvenTree/serializers.py:841 msgid "URL of remote image file" msgstr "URLtil ekstern bildefil" -#: InvenTree/serializers.py:878 +#: InvenTree/serializers.py:859 msgid "Downloading images from remote URL is not enabled" msgstr "Nedlasting av bilder fra ekstern URL er ikke aktivert" -#: InvenTree/status.py:66 part/serializers.py:1178 +#: InvenTree/status.py:66 part/serializers.py:1174 msgid "Background worker check failed" msgstr "Sjekk av bakgrunnsarbeider mislyktes" @@ -698,27 +606,27 @@ msgstr "E-post backend ikke konfigurert" msgid "InvenTree system health checks failed" msgstr "InvenTree's-systemets helsesjekker mislyktes" -#: InvenTree/templatetags/inventree_extras.py:183 +#: InvenTree/templatetags/inventree_extras.py:184 msgid "Unknown database" msgstr "Ukjent database" -#: InvenTree/validators.py:31 InvenTree/validators.py:33 +#: InvenTree/validators.py:32 InvenTree/validators.py:34 msgid "Invalid physical unit" msgstr "Ugyldig fysisk enhet" -#: InvenTree/validators.py:39 +#: InvenTree/validators.py:40 msgid "Not a valid currency code" msgstr "Ikke en gyldig valutakode" -#: InvenTree/validators.py:121 InvenTree/validators.py:137 +#: InvenTree/validators.py:118 InvenTree/validators.py:134 msgid "Overage value must not be negative" msgstr "Svinn-verdien kan ikke være negativ" -#: InvenTree/validators.py:139 +#: InvenTree/validators.py:136 msgid "Overage must not exceed 100%" msgstr "Svinn kan ikke overstige 100%" -#: InvenTree/validators.py:145 +#: InvenTree/validators.py:142 msgid "Invalid value for overage" msgstr "Ugyldig verdi for svinn" @@ -750,14 +658,14 @@ 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:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: build/api.py:299 part/models.py:4070 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "Forbruksvare" -#: build/api.py:300 part/models.py:4084 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4064 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2529 #: templates/js/translated/table_filters.js:186 @@ -778,30 +686,30 @@ msgstr "Spores" msgid "Allocated" msgstr "Tildelt" -#: build/api.py:311 company/models.py:904 company/serializers.py:383 +#: build/api.py:311 company/models.py:872 company/serializers.py:359 #: 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:2561 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:234 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 -#: templates/js/translated/part.js:699 +#: templates/js/translated/part.js:693 templates/js/translated/part.js:695 +#: templates/js/translated/part.js:700 #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:575 msgid "Available" msgstr "Tilgjengelig" -#: build/models.py:83 build/templates/build/build_base.html:9 +#: build/models.py:85 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_report.html:105 -#: stock/serializers.py:83 templates/email/build_order_completed.html:16 +#: stock/serializers.py:82 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:2892 msgid "Build Order" msgstr "Produksjonsordre" -#: build/models.py:84 build/templates/build/build_base.html:13 +#: build/models.py:86 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 @@ -812,25 +720,25 @@ msgstr "Produksjonsordre" msgid "Build Orders" msgstr "Produksjonsordrer" -#: build/models.py:131 +#: build/models.py:133 msgid "Invalid choice for parent build" msgstr "Ugyldig valg for overordnet produksjon" -#: build/models.py:142 order/models.py:240 +#: build/models.py:144 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "" -#: build/models.py:148 +#: build/models.py:150 msgid "Build order part cannot be changed" msgstr "Produksjonsordrens del kan ikke endres" -#: build/models.py:209 +#: build/models.py:211 msgid "Build Order Reference" msgstr "Produksjonsordre-referanse" -#: build/models.py:210 order/models.py:463 order/models.py:928 -#: order/models.py:1325 order/models.py:2056 part/admin.py:419 -#: part/models.py:4105 part/templates/part/upload_bom.html:54 +#: build/models.py:212 order/models.py:463 order/models.py:926 +#: order/models.py:1289 order/models.py:2020 part/admin.py:411 +#: part/models.py:4085 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_purchase_order_report.html:28 #: report/templates/report/inventree_return_order_report.html:26 @@ -844,27 +752,27 @@ msgstr "Produksjonsordre-referanse" msgid "Reference" msgstr "Referanse" -#: build/models.py:221 +#: build/models.py:223 msgid "Brief description of the build (optional)" msgstr "Kort beskrivelse av produksjonen (valgfritt)" -#: build/models.py:229 build/templates/build/build_base.html:183 +#: build/models.py:231 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Overordnet produksjon" -#: build/models.py:230 +#: build/models.py:232 msgid "BuildOrder to which this build is allocated" msgstr "Produksjonsordre som denne produksjonen er tildelt" -#: build/models.py:235 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 -#: order/models.py:1450 order/models.py:1595 order/models.py:1596 -#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 -#: part/models.py:3191 part/models.py:3335 part/models.py:3358 -#: part/models.py:3379 part/models.py:3401 part/models.py:3511 -#: part/models.py:3807 part/models.py:3963 part/models.py:4056 -#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 +#: build/models.py:237 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1026 order/api.py:805 +#: order/models.py:1414 order/models.py:1559 order/models.py:1560 +#: part/api.py:1494 part/api.py:1788 part/models.py:395 part/models.py:3012 +#: part/models.py:3156 part/models.py:3303 part/models.py:3324 +#: part/models.py:3346 part/models.py:3477 part/models.py:3787 +#: part/models.py:3943 part/models.py:4036 part/models.py:4395 +#: part/serializers.py:1120 part/serializers.py:1726 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -875,8 +783,8 @@ msgstr "Produksjonsordre som denne produksjonen er tildelt" #: report/templates/report/inventree_return_order_report.html:24 #: report/templates/report/inventree_sales_order_report.html:27 #: report/templates/report/inventree_stock_location_report.html:102 -#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 -#: stock/serializers.py:818 templates/InvenTree/search.html:82 +#: stock/serializers.py:109 stock/serializers.py:157 stock/serializers.py:423 +#: stock/serializers.py:820 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 @@ -889,8 +797,8 @@ msgstr "Produksjonsordre som denne produksjonen er tildelt" #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 -#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2323 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:1944 templates/js/translated/part.js:2016 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 #: templates/js/translated/purchase_order.js:751 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1848 @@ -908,107 +816,107 @@ msgstr "Produksjonsordre som denne produksjonen er tildelt" msgid "Part" msgstr "Del" -#: build/models.py:243 +#: build/models.py:245 msgid "Select part to build" msgstr "Velg del å produsere" -#: build/models.py:248 +#: build/models.py:250 msgid "Sales Order Reference" msgstr "Salgsordrereferanse" -#: build/models.py:252 +#: build/models.py:254 msgid "SalesOrder to which this build is allocated" msgstr "Salgsordren denne produksjonen er tildelt til" -#: build/models.py:257 build/serializers.py:1000 +#: build/models.py:259 build/serializers.py:999 #: templates/js/translated/build.js:1731 #: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "Kildeplassering" -#: build/models.py:261 +#: build/models.py:263 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:266 +#: build/models.py:268 msgid "Destination Location" msgstr "Fullført plassering" -#: build/models.py:270 +#: build/models.py:272 msgid "Select location where the completed items will be stored" msgstr "Velg plassering der fullførte artikler vil bli lagret" -#: build/models.py:274 +#: build/models.py:276 msgid "Build Quantity" msgstr "Produksjonsmengde" -#: build/models.py:277 +#: build/models.py:279 msgid "Number of stock items to build" msgstr "Antall lagervarer å produsere" -#: build/models.py:281 +#: build/models.py:283 msgid "Completed items" msgstr "Fullførte artikler" -#: build/models.py:283 +#: build/models.py:285 msgid "Number of stock items which have been completed" msgstr "Antall lagervarer som er fullført" -#: build/models.py:287 +#: build/models.py:289 msgid "Build Status" msgstr "Produksjonsstatus" -#: build/models.py:291 +#: build/models.py:293 msgid "Build status code" msgstr "Produksjonsstatuskode" -#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 -#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 +#: build/models.py:302 build/serializers.py:286 order/serializers.py:580 +#: stock/models.py:838 stock/serializers.py:74 stock/serializers.py:1458 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Batchkode" -#: build/models.py:304 build/serializers.py:288 +#: build/models.py:306 build/serializers.py:287 msgid "Batch code for this build output" msgstr "Batchkode for denne produksjonsartikkelen" -#: build/models.py:307 order/models.py:316 order/serializers.py:120 -#: part/models.py:1122 part/templates/part/part_base.html:310 +#: build/models.py:309 order/models.py:316 order/serializers.py:119 +#: part/models.py:1115 part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:338 #: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "Opprettelsesdato" -#: build/models.py:311 +#: build/models.py:313 msgid "Target completion date" msgstr "Forventet sluttdato" -#: build/models.py:312 +#: build/models.py:314 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:315 order/models.py:521 order/models.py:2101 +#: build/models.py:317 order/models.py:521 order/models.py:2065 #: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "Fullført dato" -#: build/models.py:321 +#: build/models.py:323 msgid "completed by" msgstr "fullført av" -#: build/models.py:329 templates/js/translated/build.js:2207 +#: build/models.py:331 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "Utstedt av" -#: build/models.py:330 +#: build/models.py:332 msgid "User who issued this build order" msgstr "Brukeren som utstedte denne produksjonsordren" -#: build/models.py:338 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:145 +#: build/models.py:340 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:147 #: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:232 part/models.py:1139 +#: order/templates/order/sales_order_base.html:232 part/models.py:1132 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_report.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 @@ -1019,31 +927,36 @@ msgstr "Brukeren som utstedte denne produksjonsordren" msgid "Responsible" msgstr "Ansvarlig" -#: build/models.py:339 +#: build/models.py:341 msgid "User or group responsible for this build order" msgstr "Bruker eller gruppe ansvarlig for produksjonsordren" -#: build/models.py:344 build/templates/build/detail.html:108 +#: build/models.py:346 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:184 -#: part/templates/part/part_base.html:383 stock/models.py:836 +#: part/templates/part/part_base.html:383 stock/models.py:834 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "Ekstern lenke" -#: build/models.py:349 +#: build/models.py:347 common/models.py:3178 part/models.py:956 +#: stock/models.py:834 +msgid "Link to external URL" +msgstr "Lenke til ekstern URL" + +#: build/models.py:351 msgid "Build Priority" msgstr "Produksjonsprioritet" -#: build/models.py:352 +#: build/models.py:354 msgid "Priority of this build order" msgstr "Produksjonsordrens prioritet" -#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: build/models.py:361 common/models.py:131 order/admin.py:18 #: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 #: templates/js/translated/build.js:2144 #: templates/js/translated/purchase_order.js:1710 @@ -1054,65 +967,65 @@ msgstr "Produksjonsordrens prioritet" msgid "Project Code" msgstr "Prosjektkode" -#: build/models.py:360 +#: build/models.py:362 msgid "Project code for this build order" msgstr "Prosjektkode for denne produksjonsordren" -#: build/models.py:593 build/models.py:658 +#: build/models.py:595 build/models.py:660 msgid "Failed to offload task to complete build allocations" msgstr "" -#: build/models.py:615 +#: build/models.py:617 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Produksjonsordre {build} er fullført" -#: build/models.py:621 +#: build/models.py:623 msgid "A build order has been completed" msgstr "En produksjonsordre er fullført" -#: build/models.py:847 build/models.py:932 +#: build/models.py:849 build/models.py:934 msgid "No build output specified" msgstr "Ingen produksjonsartikkel spesifisert" -#: build/models.py:850 +#: build/models.py:852 msgid "Build output is already completed" msgstr "Produksjonsartikkelen er allerede fullført" -#: build/models.py:853 +#: build/models.py:855 msgid "Build output does not match Build Order" msgstr "Produksjonsartikkelen samsvarer ikke med produksjonsordren" -#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 -#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 -#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 -#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 +#: build/models.py:938 build/serializers.py:219 build/serializers.py:268 +#: build/serializers.py:866 order/models.py:559 order/serializers.py:432 +#: order/serializers.py:575 part/serializers.py:1484 part/serializers.py:1884 +#: stock/models.py:677 stock/models.py:1495 stock/serializers.py:603 msgid "Quantity must be greater than zero" msgstr "Mengden må være større enn null" -#: build/models.py:941 build/serializers.py:225 +#: build/models.py:943 build/serializers.py:224 msgid "Quantity cannot be greater than the output quantity" msgstr "Kvantitet kan ikke være større enn utgangsantallet" -#: build/models.py:1001 build/serializers.py:548 +#: build/models.py:1003 build/serializers.py:547 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1352 +#: build/models.py:1344 msgid "Build Order Line Item" msgstr "" -#: build/models.py:1377 +#: build/models.py:1369 msgid "Build object" msgstr "Produksjonsobjekt" -#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 -#: build/serializers.py:254 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2539 -#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 -#: part/forms.py:48 part/models.py:3205 part/models.py:4078 +#: build/models.py:1383 build/models.py:1639 build/serializers.py:206 +#: build/serializers.py:253 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2509 +#: order/models.py:1272 order/models.py:1931 order/serializers.py:1327 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3170 part/models.py:4058 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1121,8 +1034,8 @@ msgstr "Produksjonsobjekt" #: report/templates/report/inventree_sales_order_report.html:29 #: report/templates/report/inventree_stock_location_report.html:104 #: report/templates/report/inventree_test_report.html:90 -#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 -#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:125 stock/serializers.py:165 stock/serializers.py:594 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1133,8 +1046,8 @@ msgstr "Produksjonsobjekt" #: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 #: templates/js/translated/model_renderers.js:236 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:962 +#: templates/js/translated/part.js:1812 templates/js/translated/part.js:3342 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1154,38 +1067,38 @@ msgstr "Produksjonsobjekt" msgid "Quantity" msgstr "Antall" -#: build/models.py:1392 +#: build/models.py:1384 msgid "Required quantity for build order" msgstr "Påkrevd antall for produksjonsordre" -#: build/models.py:1472 +#: build/models.py:1464 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:1481 +#: build/models.py:1473 #, 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:1491 order/models.py:1918 +#: build/models.py:1483 order/models.py:1882 msgid "Stock item is over-allocated" msgstr "Lagervaren er overtildelt" -#: build/models.py:1497 order/models.py:1921 +#: build/models.py:1489 order/models.py:1885 msgid "Allocation quantity must be greater than zero" msgstr "Tildelingsantall må være større enn null" -#: build/models.py:1503 +#: build/models.py:1495 msgid "Quantity must be 1 for serialized stock" msgstr "Mengden må være 1 for serialisert lagervare" -#: build/models.py:1562 +#: build/models.py:1554 msgid "Selected stock item does not match BOM line" msgstr "Valgt lagervare samsvarer ikke med BOM-linjen" -#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 -#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 -#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: build/models.py:1626 build/serializers.py:846 order/serializers.py:1171 +#: order/serializers.py:1192 stock/models.py:358 stock/serializers.py:91 +#: stock/serializers.py:697 stock/serializers.py:1177 stock/serializers.py:1289 #: stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 @@ -1201,70 +1114,70 @@ msgstr "Valgt lagervare samsvarer ikke med BOM-linjen" msgid "Stock Item" msgstr "Lagervare" -#: build/models.py:1635 +#: build/models.py:1627 msgid "Source stock item" msgstr "Kildelagervare" -#: build/models.py:1648 +#: build/models.py:1640 msgid "Stock quantity to allocate to build" msgstr "Lagerantall å tildele til produksjonen" -#: build/models.py:1656 +#: build/models.py:1648 msgid "Install into" msgstr "Monteres i" -#: build/models.py:1657 +#: build/models.py:1649 msgid "Destination stock item" msgstr "Lagervare for montering" -#: build/serializers.py:157 build/serializers.py:876 +#: build/serializers.py:156 build/serializers.py:875 #: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "Produksjonsartikkel" -#: build/serializers.py:169 +#: build/serializers.py:168 msgid "Build output does not match the parent build" msgstr "Produksjonsartikkel samsvarer ikke med overordnet produksjon" -#: build/serializers.py:173 +#: build/serializers.py:172 msgid "Output part does not match BuildOrder part" msgstr "Resultatdel samsvarer ikke med produksjonsordredel" -#: build/serializers.py:177 +#: build/serializers.py:176 msgid "This build output has already been completed" msgstr "Denne produksjonsartikkelen er allerede fullført" -#: build/serializers.py:188 +#: build/serializers.py:187 msgid "This build output is not fully allocated" msgstr "Denne produksjonsartikkelen er ikke fullt tildelt" -#: build/serializers.py:208 build/serializers.py:255 +#: build/serializers.py:207 build/serializers.py:254 msgid "Enter quantity for build output" msgstr "Angi antall for produksjonsartikkel" -#: build/serializers.py:276 +#: build/serializers.py:275 msgid "Integer quantity required for trackable parts" msgstr "Heltallsverdi kreves for sporbare deler" -#: build/serializers.py:279 +#: build/serializers.py:278 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "Heltallsverdi kreves, da stykklisten inneholder sporbare deler" -#: build/serializers.py:294 order/serializers.py:589 order/serializers.py:1343 -#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:293 order/serializers.py:588 order/serializers.py:1331 +#: stock/serializers.py:614 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Serienummer" -#: build/serializers.py:295 +#: build/serializers.py:294 msgid "Enter serial numbers for build outputs" msgstr "Angi serienummer for produksjonsartikler" -#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 -#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 -#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 -#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 -#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 +#: build/serializers.py:299 build/serializers.py:440 build/serializers.py:512 +#: order/serializers.py:564 order/serializers.py:672 order/serializers.py:1656 +#: part/serializers.py:1140 stock/serializers.py:100 stock/serializers.py:625 +#: stock/serializers.py:785 stock/serializers.py:881 stock/serializers.py:1321 +#: stock/serializers.py:1577 stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:1001 #: templates/js/translated/build.js:2372 @@ -1280,54 +1193,54 @@ msgstr "Angi serienummer for produksjonsartikler" msgid "Location" msgstr "Plassering" -#: build/serializers.py:301 +#: build/serializers.py:300 msgid "Stock location for build output" msgstr "" -#: build/serializers.py:315 +#: build/serializers.py:314 msgid "Auto Allocate Serial Numbers" msgstr "Automatisk tildeling av serienummer" -#: build/serializers.py:316 +#: build/serializers.py:315 msgid "Automatically allocate required items with matching serial numbers" msgstr "Automatisk tildeling av nødvendige artikler med tilsvarende serienummer" -#: build/serializers.py:331 +#: build/serializers.py:330 msgid "Serial numbers must be provided for trackable parts" msgstr "" -#: build/serializers.py:356 stock/api.py:1031 +#: build/serializers.py:355 stock/api.py:1041 msgid "The following serial numbers already exist or are invalid" msgstr "Følgende serienummer finnes allerede eller er ugyldige" -#: build/serializers.py:403 build/serializers.py:465 build/serializers.py:554 +#: build/serializers.py:402 build/serializers.py:464 build/serializers.py:553 msgid "A list of build outputs must be provided" msgstr "En liste over produksjonsartikler må oppgis" -#: build/serializers.py:442 +#: build/serializers.py:441 msgid "Stock location for scrapped outputs" msgstr "Lagerplassering for skrotede produksjonsartikler" -#: build/serializers.py:448 +#: build/serializers.py:447 msgid "Discard Allocations" msgstr "Forkast tildelinger" -#: build/serializers.py:449 +#: build/serializers.py:448 msgid "Discard any stock allocations for scrapped outputs" msgstr "Forkast tildelinger fra skrotede produksjonsartikler" -#: build/serializers.py:454 +#: build/serializers.py:453 msgid "Reason for scrapping build output(s)" msgstr "Grunn for skroting av produksjonsartikler" -#: build/serializers.py:514 +#: build/serializers.py:513 msgid "Location for completed build outputs" msgstr "Plassering for ferdige produksjonsartikler" -#: build/serializers.py:520 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:952 -#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 -#: stock/serializers.py:930 stock/serializers.py:1469 +#: build/serializers.py:519 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2044 order/serializers.py:596 stock/admin.py:164 +#: stock/serializers.py:932 stock/serializers.py:1465 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 @@ -1339,188 +1252,188 @@ msgstr "Plassering for ferdige produksjonsartikler" msgid "Status" msgstr "" -#: build/serializers.py:526 +#: build/serializers.py:525 msgid "Accept Incomplete Allocation" msgstr "Godta ufullstendig tildeling" -#: build/serializers.py:527 +#: build/serializers.py:526 msgid "Complete outputs if stock has not been fully allocated" msgstr "Fullfør artikler dersom lagerbeholdning ikke er fullt tildelt" -#: build/serializers.py:612 +#: build/serializers.py:611 msgid "Consume Allocated Stock" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:612 msgid "Consume any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:619 +#: build/serializers.py:618 msgid "Remove Incomplete Outputs" msgstr "Fjern ufullstendige artikler" -#: build/serializers.py:620 +#: build/serializers.py:619 msgid "Delete any build outputs which have not been completed" msgstr "Slett alle produksjonsartikler som ikke er fullført" -#: build/serializers.py:647 +#: build/serializers.py:646 msgid "Not permitted" msgstr "Ikke tillatt" -#: build/serializers.py:648 +#: build/serializers.py:647 msgid "Accept as consumed by this build order" msgstr "Godta som brukt av denne produksjonsordren" -#: build/serializers.py:649 +#: build/serializers.py:648 msgid "Deallocate before completing this build order" msgstr "Fjern tildeling før produksjonsordren fullføres" -#: build/serializers.py:679 +#: build/serializers.py:678 msgid "Overallocated Stock" msgstr "Overtildelt lagerbeholdning" -#: build/serializers.py:681 +#: build/serializers.py:680 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:691 +#: build/serializers.py:690 msgid "Some stock items have been overallocated" msgstr "Noen lagervarer har blitt overtildelt" -#: build/serializers.py:696 +#: build/serializers.py:695 msgid "Accept Unallocated" msgstr "Godta ikke tildelt" -#: build/serializers.py:697 +#: build/serializers.py:696 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:707 templates/js/translated/build.js:315 +#: build/serializers.py:706 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:712 order/serializers.py:301 order/serializers.py:1246 +#: build/serializers.py:711 order/serializers.py:300 order/serializers.py:1234 msgid "Accept Incomplete" msgstr "Godta uferdig" -#: build/serializers.py:713 +#: build/serializers.py:712 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:723 templates/js/translated/build.js:319 +#: build/serializers.py:722 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:732 templates/js/translated/build.js:303 +#: build/serializers.py:731 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "Produksjonsordren har uferdige artikler" -#: build/serializers.py:770 +#: build/serializers.py:769 msgid "Build Line" msgstr "Produksjonslinje" -#: build/serializers.py:780 +#: build/serializers.py:779 msgid "Build output" msgstr "Produksjonsartikkel" -#: build/serializers.py:788 +#: build/serializers.py:787 msgid "Build output must point to the same build" msgstr "Produksjonsartikkel må peke til samme produksjon" -#: build/serializers.py:824 +#: build/serializers.py:823 msgid "Build Line Item" msgstr "Produksjonsartikkel" -#: build/serializers.py:838 +#: build/serializers.py:837 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:853 stock/serializers.py:1194 +#: build/serializers.py:852 stock/serializers.py:1190 msgid "Item must be in stock" msgstr "Artikkelen må være på lager" -#: build/serializers.py:901 order/serializers.py:1237 +#: build/serializers.py:900 order/serializers.py:1225 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Tilgjengelig antall ({q}) overskredet" -#: build/serializers.py:907 +#: build/serializers.py:906 msgid "Build output must be specified for allocation of tracked parts" msgstr "Produksjonsartikkel må spesifiseres for tildeling av sporede deler" -#: build/serializers.py:914 +#: build/serializers.py:913 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "Produksjonsartikkel kan ikke spesifiseres for tildeling av usporede deler" -#: build/serializers.py:938 order/serializers.py:1489 +#: build/serializers.py:937 order/serializers.py:1477 msgid "Allocation items must be provided" msgstr "Tildelingsartikler må oppgis" -#: build/serializers.py:1001 +#: build/serializers.py:1000 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:1009 +#: build/serializers.py:1008 msgid "Exclude Location" msgstr "Eksluderer plassering" -#: build/serializers.py:1010 +#: build/serializers.py:1009 msgid "Exclude stock items from this selected location" msgstr "Ekskluder lagervarer fra denne valgte plasseringen" -#: build/serializers.py:1015 +#: build/serializers.py:1014 msgid "Interchangeable Stock" msgstr "Utskiftbar lagerbeholdning" -#: build/serializers.py:1016 +#: build/serializers.py:1015 msgid "Stock items in multiple locations can be used interchangeably" msgstr "Lagervarer ved flere plasseringer kan brukes om hverandre" -#: build/serializers.py:1021 +#: build/serializers.py:1020 msgid "Substitute Stock" msgstr "Erstatning-lagerbeholdning" -#: build/serializers.py:1022 +#: build/serializers.py:1021 msgid "Allow allocation of substitute parts" msgstr "Tilatt tildelling av erstatningsdeler" -#: build/serializers.py:1027 +#: build/serializers.py:1026 msgid "Optional Items" msgstr "Valgfrie artikler" -#: build/serializers.py:1028 +#: build/serializers.py:1027 msgid "Allocate optional BOM items to build order" msgstr "Tildel valgfrie BOM-artikler til produksjonsordre" -#: build/serializers.py:1050 +#: build/serializers.py:1049 msgid "Failed to start auto-allocation task" msgstr "" -#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 -#: stock/api.py:794 +#: build/serializers.py:1139 part/models.py:3953 part/models.py:4387 +#: stock/api.py:804 msgid "BOM Item" msgstr "BOM-artikkel" -#: build/serializers.py:1149 templates/js/translated/index.js:130 +#: build/serializers.py:1148 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "Tildelt lagerbeholdning" -#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:832 part/serializers.py:1506 +#: build/serializers.py:1153 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:828 part/serializers.py:1502 #: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 -#: templates/js/translated/build.js:2613 templates/js/translated/part.js:709 -#: templates/js/translated/part.js:2148 +#: templates/js/translated/build.js:2613 templates/js/translated/part.js:710 +#: templates/js/translated/part.js:2149 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "I bestilling" -#: build/serializers.py:1159 part/serializers.py:1508 +#: build/serializers.py:1158 part/serializers.py:1504 #: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "I produksjon" -#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 +#: build/serializers.py:1163 part/bom.py:172 part/serializers.py:1527 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1929 msgid "Available Stock" @@ -1544,7 +1457,7 @@ msgstr "Kansellert" #: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 #: order/status_codes.py:44 order/status_codes.py:69 #: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:165 report/models.py:443 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 msgid "Complete" msgstr "Fullført" @@ -1674,11 +1587,11 @@ 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:309 -#: order/models.py:1343 order/templates/order/order_base.html:186 +#: order/models.py:1307 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:196 #: report/templates/report/inventree_build_order_report.html:125 -#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1831 #: templates/js/translated/purchase_order.js:1739 #: templates/js/translated/purchase_order.js:2147 #: templates/js/translated/return_order.js:346 @@ -1711,8 +1624,8 @@ msgid "Completed Outputs" msgstr "Fullførte byggeresultater" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 -#: order/models.py:1587 order/models.py:1701 order/models.py:1855 +#: build/templates/build/detail.html:101 order/api.py:1463 order/models.py:845 +#: order/models.py:1551 order/models.py:1665 order/models.py:1819 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_report.html:135 @@ -1762,7 +1675,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:1479 +#: build/templates/build/detail.html:49 order/models.py:1443 #: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "Destinasjon" @@ -1775,7 +1688,7 @@ msgstr "Målplassering er ikke spesifisert" msgid "Allocated Parts" msgstr "Tildelte deler" -#: build/templates/build/detail.html:80 stock/admin.py:163 +#: build/templates/build/detail.html:80 stock/admin.py:162 #: stock/templates/stock/item_base.html:162 #: templates/js/translated/build.js:1380 #: templates/js/translated/model_renderers.js:241 @@ -1894,11 +1807,11 @@ msgstr "Vedlegg" msgid "Build Notes" msgstr "Produksjonsnotater" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "Tildeling fullført" -#: build/templates/build/detail.html:436 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "Alle linjer er fullt tildelt" @@ -1914,6 +1827,34 @@ msgstr "Produksjonsordre-detaljer" msgid "Incomplete Outputs" msgstr "Ufullstendige artikler" +#: common/api.py:689 +msgid "Is Link" +msgstr "" + +#: common/api.py:697 +msgid "Is File" +msgstr "" + +#: common/api.py:739 +msgid "User does not have permission to delete this attachment" +msgstr "" + +#: common/currency.py:130 +msgid "Invalid currency code" +msgstr "" + +#: common/currency.py:132 +msgid "Duplicate currency code" +msgstr "" + +#: common/currency.py:137 +msgid "No valid currency codes provided" +msgstr "" + +#: common/currency.py:154 +msgid "No plugin" +msgstr "Ingen programtillegg" + #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1952,1509 +1893,1512 @@ msgstr "{name.title()} Fil" msgid "Select {name} file to upload" msgstr "Velg {name} fil som skal lastes opp" -#: common/models.py:71 +#: common/models.py:73 msgid "Updated" msgstr "Oppdatert" -#: common/models.py:72 +#: common/models.py:74 msgid "Timestamp of last update" msgstr "Tidsstempel for forrige oppdatering" -#: common/models.py:105 +#: common/models.py:107 msgid "Site URL is locked by configuration" msgstr "" -#: common/models.py:130 +#: common/models.py:132 msgid "Unique project code" msgstr "Unik prosjektkode" -#: common/models.py:137 +#: common/models.py:139 msgid "Project description" msgstr "Prosjektbeskrivelse" -#: common/models.py:146 +#: common/models.py:148 msgid "User or group responsible for this project" msgstr "Bruker eller gruppe ansvarlig for dette prosjektet" -#: common/models.py:766 +#: common/models.py:765 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:770 +#: common/models.py:769 msgid "Settings value" msgstr "Innstillings verdi" -#: common/models.py:822 +#: common/models.py:821 msgid "Chosen value is not a valid option" msgstr "Valgt verdi er ikke et gyldig alternativ" -#: common/models.py:838 +#: common/models.py:837 msgid "Value must be a boolean value" msgstr "Verdien må være en boolsk verdi" -#: common/models.py:846 +#: common/models.py:845 msgid "Value must be an integer value" msgstr "Verdien må være et heltall" -#: common/models.py:883 +#: common/models.py:882 msgid "Key string must be unique" msgstr "Nøkkelstreng må være unik" -#: common/models.py:1115 +#: common/models.py:1114 msgid "No group" msgstr "Ingen gruppe" -#: common/models.py:1158 -msgid "An empty domain is not allowed." -msgstr "Et tomt domene er ikke tillatt." - -#: common/models.py:1160 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "Ugyldig domenenavn: {domain}" - -#: common/models.py:1172 -msgid "No plugin" -msgstr "Ingen programtillegg" - -#: common/models.py:1260 +#: common/models.py:1213 msgid "Restart required" msgstr "Omstart kreves" -#: common/models.py:1262 +#: common/models.py:1215 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:1269 +#: common/models.py:1222 msgid "Pending migrations" msgstr "Ventende migrasjoner" -#: common/models.py:1270 +#: common/models.py:1223 msgid "Number of pending database migrations" msgstr "Antall ventende databasemigreringer" -#: common/models.py:1275 +#: common/models.py:1228 msgid "Server Instance Name" msgstr "Navn på serverinstans" -#: common/models.py:1277 +#: common/models.py:1230 msgid "String descriptor for the server instance" msgstr "Strengbeskrivelse for serverinstansen" -#: common/models.py:1281 +#: common/models.py:1234 msgid "Use instance name" msgstr "Bruk instansnavn" -#: common/models.py:1282 +#: common/models.py:1235 msgid "Use the instance name in the title-bar" msgstr "Bruk instansnavnet på tittellinjen" -#: common/models.py:1287 +#: common/models.py:1240 msgid "Restrict showing `about`" msgstr "Begrens visning av 'om'" -#: common/models.py:1288 +#: common/models.py:1241 msgid "Show the `about` modal only to superusers" msgstr "Vis `about`-modal kun til superbrukere" -#: common/models.py:1293 company/models.py:108 company/models.py:109 +#: common/models.py:1246 company/models.py:111 company/models.py:112 msgid "Company name" msgstr "Firmanavn" -#: common/models.py:1294 +#: common/models.py:1247 msgid "Internal company name" msgstr "Internt firmanavn" -#: common/models.py:1298 +#: common/models.py:1251 msgid "Base URL" msgstr "Base-URL" -#: common/models.py:1299 +#: common/models.py:1252 msgid "Base URL for server instance" msgstr "Base-URL for serverinstans" -#: common/models.py:1305 +#: common/models.py:1258 msgid "Default Currency" msgstr "Standardvaluta" -#: common/models.py:1306 +#: common/models.py:1259 msgid "Select base currency for pricing calculations" msgstr "Velg grunnvalutaen for prisberegninger" -#: common/models.py:1312 +#: common/models.py:1265 +msgid "Supported Currencies" +msgstr "" + +#: common/models.py:1266 +msgid "List of supported currency codes" +msgstr "" + +#: common/models.py:1272 msgid "Currency Update Interval" msgstr "Oppdateringsintervall for valuta" -#: common/models.py:1314 +#: common/models.py:1274 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:1317 common/models.py:1373 common/models.py:1386 -#: common/models.py:1394 common/models.py:1403 common/models.py:1412 -#: common/models.py:1620 common/models.py:1642 common/models.py:1757 -#: common/models.py:2076 +#: common/models.py:1277 common/models.py:1333 common/models.py:1346 +#: common/models.py:1354 common/models.py:1363 common/models.py:1372 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:2046 msgid "days" msgstr "dager" -#: common/models.py:1321 +#: common/models.py:1281 msgid "Currency Update Plugin" msgstr "Valutaoppdaterings-plugin" -#: common/models.py:1322 +#: common/models.py:1282 msgid "Currency update plugin to use" msgstr "Valgt valutaoppdaterings-plugin" -#: common/models.py:1327 +#: common/models.py:1287 msgid "Download from URL" msgstr "Last ned fra URL" -#: common/models.py:1329 +#: common/models.py:1289 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:1335 +#: common/models.py:1295 msgid "Download Size Limit" msgstr "Nedlastingsgrense" -#: common/models.py:1336 +#: common/models.py:1296 msgid "Maximum allowable download size for remote image" msgstr "Maksimal tillatt nedlastingsstørrelse for eksternt bilde" -#: common/models.py:1342 +#: common/models.py:1302 msgid "User-agent used to download from URL" msgstr "User-Agent brukt for å laste ned fra URL" -#: common/models.py:1344 +#: common/models.py:1304 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:1349 +#: common/models.py:1309 msgid "Strict URL Validation" msgstr "Streng URL-validering" -#: common/models.py:1350 +#: common/models.py:1310 msgid "Require schema specification when validating URLs" msgstr "Krev skjemaspesifikasjon ved validering av URLer" -#: common/models.py:1355 +#: common/models.py:1315 msgid "Require confirm" msgstr "Krev bekreftelse" -#: common/models.py:1356 +#: common/models.py:1316 msgid "Require explicit user confirmation for certain action." msgstr "Krev eksplisitt brukerbekreftelse for visse handlinger." -#: common/models.py:1361 +#: common/models.py:1321 msgid "Tree Depth" msgstr "Tredybde" -#: common/models.py:1363 +#: common/models.py:1323 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:1369 +#: common/models.py:1329 msgid "Update Check Interval" msgstr "Intervall for oppdateringssjekk" -#: common/models.py:1370 +#: common/models.py:1330 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:1376 +#: common/models.py:1336 msgid "Automatic Backup" msgstr "Automatisk sikkerhetskopiering" -#: common/models.py:1377 +#: common/models.py:1337 msgid "Enable automatic backup of database and media files" msgstr "Aktiver automatisk sikkerhetskopiering av database og mediafiler" -#: common/models.py:1382 +#: common/models.py:1342 msgid "Auto Backup Interval" msgstr "Automatisk sikkerhetskopieringsintervall" -#: common/models.py:1383 +#: common/models.py:1343 msgid "Specify number of days between automated backup events" msgstr "Angi antall dager mellom automatiske sikkerhetskopieringshendelser" -#: common/models.py:1389 +#: common/models.py:1349 msgid "Task Deletion Interval" msgstr "Slettingsintervall for oppgaver" -#: common/models.py:1391 +#: common/models.py:1351 msgid "Background task results will be deleted after specified number of days" msgstr "Bakgrunnsoppgaveresultater vil bli slettet etter antall angitte dager" -#: common/models.py:1398 +#: common/models.py:1358 msgid "Error Log Deletion Interval" msgstr "Slettingsintervall for feillogg" -#: common/models.py:1400 +#: common/models.py:1360 msgid "Error logs will be deleted after specified number of days" msgstr "Feilloggene vil bli slettet etter et angitt antall dager" -#: common/models.py:1407 +#: common/models.py:1367 msgid "Notification Deletion Interval" msgstr "Slettingsintervall for varsler" -#: common/models.py:1409 +#: common/models.py:1369 msgid "User notifications will be deleted after specified number of days" msgstr "Brukervarsler slettes etter angitt antall dager" -#: common/models.py:1416 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1376 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Strekkodestøtte" -#: common/models.py:1417 +#: common/models.py:1377 msgid "Enable barcode scanner support in the web interface" msgstr "Aktiver støtte for strekkodeleser i webgrensesnittet" -#: common/models.py:1422 +#: common/models.py:1382 msgid "Barcode Input Delay" msgstr "Innlesingsforsinkelse for strekkode" -#: common/models.py:1423 +#: common/models.py:1383 msgid "Barcode input processing delay time" msgstr "Tidsforsinkelse for behandling av strekkode" -#: common/models.py:1429 +#: common/models.py:1389 msgid "Barcode Webcam Support" msgstr "Støtte for strekkodewebkamera" -#: common/models.py:1430 +#: common/models.py:1390 msgid "Allow barcode scanning via webcam in browser" msgstr "Tillat strekkodelesning via webkamera i nettleseren" -#: common/models.py:1435 +#: common/models.py:1395 msgid "Part Revisions" msgstr "Delrevisjoner" -#: common/models.py:1436 +#: common/models.py:1396 msgid "Enable revision field for Part" msgstr "Aktiver revisjonsfeltet for Del" -#: common/models.py:1441 +#: common/models.py:1401 msgid "Allow Deletion from Assembly" msgstr "" -#: common/models.py:1442 +#: common/models.py:1402 msgid "Allow deletion of parts which are used in an assembly" msgstr "" -#: common/models.py:1447 +#: common/models.py:1407 msgid "IPN Regex" msgstr "IPN regex" -#: common/models.py:1448 +#: common/models.py:1408 msgid "Regular expression pattern for matching Part IPN" msgstr "Regulært uttrykksmønster for matching av internt delnummer" -#: common/models.py:1451 +#: common/models.py:1411 msgid "Allow Duplicate IPN" msgstr "Tilat duplikat av internt delnummer" -#: common/models.py:1452 +#: common/models.py:1412 msgid "Allow multiple parts to share the same IPN" msgstr "Tillat flere deler å dele samme interne delnummer" -#: common/models.py:1457 +#: common/models.py:1417 msgid "Allow Editing IPN" msgstr "Tillat redigering av internt delnummer" -#: common/models.py:1458 +#: common/models.py:1418 msgid "Allow changing the IPN value while editing a part" msgstr "Tillat endring av IPN-verdien mens du redigerer en del" -#: common/models.py:1463 +#: common/models.py:1423 msgid "Copy Part BOM Data" msgstr "Kopier BOM-data fra del" -#: common/models.py:1464 +#: common/models.py:1424 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:1469 +#: common/models.py:1429 msgid "Copy Part Parameter Data" msgstr "Kopier parameterdata fra del" -#: common/models.py:1470 +#: common/models.py:1430 msgid "Copy parameter data by default when duplicating a part" msgstr "Kopier parameterdata som standard ved duplisering av en del" -#: common/models.py:1475 +#: common/models.py:1435 msgid "Copy Part Test Data" msgstr "Kopier testdata fra del" -#: common/models.py:1476 +#: common/models.py:1436 msgid "Copy test data by default when duplicating a part" msgstr "Kopier testdata som standard ved duplisering av en del" -#: common/models.py:1481 +#: common/models.py:1441 msgid "Copy Category Parameter Templates" msgstr "Kopier designmaler for kategoriparametere" -#: common/models.py:1482 +#: common/models.py:1442 msgid "Copy category parameter templates when creating a part" msgstr "Kopier parametermaler for kategori ved oppretting av en del" -#: common/models.py:1487 part/admin.py:108 part/models.py:3815 -#: report/models.py:293 report/models.py:360 report/serializers.py:90 -#: report/serializers.py:131 stock/serializers.py:228 +#: common/models.py:1447 part/admin.py:108 part/models.py:3795 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:227 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "Mal" -#: common/models.py:1488 +#: common/models.py:1448 msgid "Parts are templates by default" msgstr "Deler er maler som standard" -#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 +#: common/models.py:1453 part/admin.py:91 part/admin.py:425 part/models.py:1052 #: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" msgstr "Sammenstilling" -#: common/models.py:1494 +#: common/models.py:1454 msgid "Parts can be assembled from other components by default" msgstr "Deler kan settes sammen fra andre komponenter som standard" -#: common/models.py:1499 part/admin.py:95 part/models.py:1065 +#: common/models.py:1459 part/admin.py:95 part/models.py:1058 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "Komponent" -#: common/models.py:1500 +#: common/models.py:1460 msgid "Parts can be used as sub-components by default" msgstr "Deler kan bli brukt som underkomponenter som standard" -#: common/models.py:1505 part/admin.py:100 part/models.py:1077 +#: common/models.py:1465 part/admin.py:100 part/models.py:1070 msgid "Purchaseable" msgstr "Kjøpbar" -#: common/models.py:1506 +#: common/models.py:1466 msgid "Parts are purchaseable by default" msgstr "Deler er kjøpbare som standard" -#: common/models.py:1511 part/admin.py:104 part/models.py:1083 +#: common/models.py:1471 part/admin.py:104 part/models.py:1076 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "Salgbar" -#: common/models.py:1512 +#: common/models.py:1472 msgid "Parts are salable by default" msgstr "Deler er salgbare som standard" -#: common/models.py:1517 part/admin.py:113 part/models.py:1071 +#: common/models.py:1477 part/admin.py:113 part/models.py:1064 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" msgstr "Sporbar" -#: common/models.py:1518 +#: common/models.py:1478 msgid "Parts are trackable by default" msgstr "Deler er sporbare som standard" -#: common/models.py:1523 part/admin.py:117 part/models.py:1093 +#: common/models.py:1483 part/admin.py:117 part/models.py:1086 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" msgstr "Virtuelle" -#: common/models.py:1524 +#: common/models.py:1484 msgid "Parts are virtual by default" msgstr "Deler er virtuelle som standard" -#: common/models.py:1529 +#: common/models.py:1489 msgid "Show Import in Views" msgstr "Vis import i visninger" -#: common/models.py:1530 +#: common/models.py:1490 msgid "Display the import wizard in some part views" msgstr "Vis importveiviseren i noen deler visninger" -#: common/models.py:1535 +#: common/models.py:1495 msgid "Show related parts" msgstr "Vis relaterte deler" -#: common/models.py:1536 +#: common/models.py:1496 msgid "Display related parts for a part" msgstr "Vis relaterte deler i en del" -#: common/models.py:1541 +#: common/models.py:1501 msgid "Initial Stock Data" msgstr "Innledende lagerbeholdningsdata" -#: common/models.py:1542 +#: common/models.py:1502 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:1547 templates/js/translated/part.js:107 +#: common/models.py:1507 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Innledende leverandørdata" -#: common/models.py:1549 +#: common/models.py:1509 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:1555 +#: common/models.py:1515 msgid "Part Name Display Format" msgstr "Visningsformat for delnavn" -#: common/models.py:1556 +#: common/models.py:1516 msgid "Format to display the part name" msgstr "Format for å vise delnavnet" -#: common/models.py:1562 +#: common/models.py:1522 msgid "Part Category Default Icon" msgstr "Standardikon for delkategorier" -#: common/models.py:1563 +#: common/models.py:1523 msgid "Part category default icon (empty means no icon)" msgstr "Standardikon for delkategorier (tomt betyr ingen ikon)" -#: common/models.py:1567 +#: common/models.py:1527 msgid "Enforce Parameter Units" msgstr "Tving parameterenheter" -#: common/models.py:1569 +#: common/models.py:1529 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:1575 +#: common/models.py:1535 msgid "Minimum Pricing Decimal Places" msgstr "Minimum antall desimalplasser for priser" -#: common/models.py:1577 +#: common/models.py:1537 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:1583 +#: common/models.py:1548 msgid "Maximum Pricing Decimal Places" msgstr "Maksimalt antall desimalplasser for priser" -#: common/models.py:1585 +#: common/models.py:1550 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:1591 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "Bruk leverandørpriser" -#: common/models.py:1593 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "Inkluder leverandørprisbrudd i beregninger av totalpriser" -#: common/models.py:1599 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "Innkjøpshistorikkoverstyring" -#: common/models.py:1601 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "Historiske innkjøpspriser overstyrer leverandørprisnivåer" -#: common/models.py:1607 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "Bruk lagervarepriser" -#: common/models.py:1609 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "Bruk priser fra manuelt innlagte lagervarer for prisberegninger" -#: common/models.py:1615 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "Lagervare prisalder" -#: common/models.py:1617 +#: common/models.py:1587 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:1624 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "Bruk Variantpriser" -#: common/models.py:1625 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "Inkluder variantpriser i beregninger av totale priser" -#: common/models.py:1630 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "Kun aktive varianter" -#: common/models.py:1632 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "Bruk kun aktive variantdeler til beregning av variantprising" -#: common/models.py:1638 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "Intervall for rekalkulering av priser" -#: common/models.py:1640 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "Antall dager før delpriser blir automatisk oppdatert" -#: common/models.py:1647 +#: common/models.py:1617 msgid "Internal Prices" msgstr "Interne Priser" -#: common/models.py:1648 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "Aktiver interne priser for deler" -#: common/models.py:1653 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "Intern prisoverstyring" -#: common/models.py:1655 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "Hvis tilgjengelig, overstyrer interne priser kalkulering av prisområde" -#: common/models.py:1661 +#: common/models.py:1631 msgid "Enable label printing" msgstr "Aktiver etikettutskrift" -#: common/models.py:1662 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "Aktiver utskrift av etiketter fra nettleseren" -#: common/models.py:1667 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "Etikettbilde-DPI" -#: common/models.py:1669 +#: common/models.py:1639 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:1675 +#: common/models.py:1645 msgid "Enable Reports" msgstr "Aktiver Rapporter" -#: common/models.py:1676 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "Aktiver generering av rapporter" -#: common/models.py:1681 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "Feilsøkingsmodus" -#: common/models.py:1682 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "Generer rapporter i feilsøkingsmodus (HTML-output)" -#: common/models.py:1687 +#: common/models.py:1657 msgid "Log Report Errors" msgstr "" -#: common/models.py:1688 +#: common/models.py:1658 msgid "Log errors which occur when generating reports" msgstr "" -#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:301 +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:302 msgid "Page Size" msgstr "Sidestørrelse" -#: common/models.py:1694 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "Standard sidestørrelse for PDF-rapporter" -#: common/models.py:1699 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "Aktiver Testrapporter" -#: common/models.py:1700 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "Aktiver generering av testrapporter" -#: common/models.py:1705 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "Legg ved testrapporter" -#: common/models.py:1707 +#: common/models.py:1677 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:1713 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "Globalt Unike Serienummer" -#: common/models.py:1714 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "Serienummer for lagervarer må være globalt unike" -#: common/models.py:1719 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "Automatisk tildeling av Serienummer" -#: common/models.py:1720 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "Aumatisk fyll ut serienummer i skjemaer" -#: common/models.py:1725 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "Slett oppbrukt lagerbeholdning" -#: common/models.py:1727 +#: common/models.py:1697 msgid "Determines default behavior when a stock item is depleted" msgstr "" -#: common/models.py:1733 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "Batchkodemal" -#: common/models.py:1735 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "Mal for generering av standard batchkoder for lagervarer" -#: common/models.py:1740 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "Lagerbeholdning utløper" -#: common/models.py:1741 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "Aktiver funksjonalitet for utløp av lagerbeholdning" -#: common/models.py:1746 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "Selg utløpt lagerbeholdning" -#: common/models.py:1747 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "Tillat salg av utgått lagerbeholdning" -#: common/models.py:1752 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "Foreldet lagerbeholdning tidsintervall" -#: common/models.py:1754 +#: common/models.py:1724 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:1761 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "Produsér Utløpt Lagerbeholdning" -#: common/models.py:1762 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "Tillat produksjon med utløpt lagerbeholdning" -#: common/models.py:1767 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "Kontroll over eierskap av lagerbeholdning" -#: common/models.py:1768 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "Aktiver eierskap over lagerplasseringer og -varer" -#: common/models.py:1773 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "Lagerplassering standard ikon" -#: common/models.py:1774 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "Lagerplassering standard ikon (tomt betyr ingen ikon)" -#: common/models.py:1778 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "Vis installerte lagervarer" -#: common/models.py:1779 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "Vis installerte lagervarer i lagertabeller" -#: common/models.py:1784 +#: common/models.py:1754 msgid "Check BOM when installing items" msgstr "" -#: common/models.py:1786 +#: common/models.py:1756 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "" -#: common/models.py:1792 +#: common/models.py:1762 msgid "Allow Out of Stock Transfer" msgstr "" -#: common/models.py:1794 +#: common/models.py:1764 msgid "Allow stock items which are not in stock to be transferred between stock locations" msgstr "" -#: common/models.py:1800 +#: common/models.py:1770 msgid "Build Order Reference Pattern" msgstr "Produksjonsordre-referansemønster" -#: common/models.py:1802 +#: common/models.py:1772 msgid "Required pattern for generating Build Order reference field" msgstr "Nødvendig mønster for å generere Produksjonsordre-referansefeltet" -#: common/models.py:1808 common/models.py:1836 common/models.py:1858 -#: common/models.py:1894 +#: common/models.py:1778 common/models.py:1806 common/models.py:1828 +#: common/models.py:1864 msgid "Require Responsible Owner" msgstr "" -#: common/models.py:1809 common/models.py:1837 common/models.py:1859 -#: common/models.py:1895 +#: common/models.py:1779 common/models.py:1807 common/models.py:1829 +#: common/models.py:1865 msgid "A responsible owner must be assigned to each order" msgstr "" -#: common/models.py:1814 +#: common/models.py:1784 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1816 +#: common/models.py:1786 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:1822 +#: common/models.py:1792 msgid "Enable Return Orders" msgstr "Aktiver returordrer" -#: common/models.py:1823 +#: common/models.py:1793 msgid "Enable return order functionality in the user interface" msgstr "Aktiver returordrefunksjonalitet i brukergrensesnittet" -#: common/models.py:1828 +#: common/models.py:1798 msgid "Return Order Reference Pattern" msgstr "Returordre-referansemønster" -#: common/models.py:1830 +#: common/models.py:1800 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1842 +#: common/models.py:1812 msgid "Edit Completed Return Orders" msgstr "Rediger fullførte returordrer" -#: common/models.py:1844 +#: common/models.py:1814 msgid "Allow editing of return orders after they have been completed" msgstr "Tillat redigering av returordrer etter de er fullført" -#: common/models.py:1850 +#: common/models.py:1820 msgid "Sales Order Reference Pattern" msgstr "Salgsordre-referansemønster" -#: common/models.py:1852 +#: common/models.py:1822 msgid "Required pattern for generating Sales Order reference field" msgstr "Påkrevd mønster for å generere salgsordrereferansefelt" -#: common/models.py:1864 +#: common/models.py:1834 msgid "Sales Order Default Shipment" msgstr "Salgsordre standard fraktmetode" -#: common/models.py:1865 +#: common/models.py:1835 msgid "Enable creation of default shipment with sales orders" msgstr "Aktiver opprettelse av standard forsendelse med salgsordrer" -#: common/models.py:1870 +#: common/models.py:1840 msgid "Edit Completed Sales Orders" msgstr "Rediger fullførte salgsordrer" -#: common/models.py:1872 +#: common/models.py:1842 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:1878 -#, fuzzy -#| msgid "Mark order as complete" +#: common/models.py:1848 msgid "Mark Shipped Orders as Complete" -msgstr "Merk ordren som fullført" +msgstr "" -#: common/models.py:1880 +#: common/models.py:1850 msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" msgstr "" -#: common/models.py:1886 +#: common/models.py:1856 msgid "Purchase Order Reference Pattern" msgstr "Referansemønster for innkjøpsordre" -#: common/models.py:1888 +#: common/models.py:1858 msgid "Required pattern for generating Purchase Order reference field" msgstr "Obligatorisk mønster for generering av referansefelt for innkjøpsordre" -#: common/models.py:1900 +#: common/models.py:1870 msgid "Edit Completed Purchase Orders" msgstr "Rediger fullførte innkjøpsordre" -#: common/models.py:1902 +#: common/models.py:1872 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:1908 +#: common/models.py:1878 msgid "Auto Complete Purchase Orders" msgstr "Autofullfør innkjøpsordrer" -#: common/models.py:1910 +#: common/models.py:1880 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "Automatisk merk innkjøpsordre som fullført når alle ordrelinjer er mottatt" -#: common/models.py:1917 +#: common/models.py:1887 msgid "Enable password forgot" msgstr "Aktiver passord glemt" -#: common/models.py:1918 +#: common/models.py:1888 msgid "Enable password forgot function on the login pages" msgstr "Ativer funskjon for glemt passord på innloggingssidene" -#: common/models.py:1923 +#: common/models.py:1893 msgid "Enable registration" msgstr "Aktiver registrering" -#: common/models.py:1924 +#: common/models.py:1894 msgid "Enable self-registration for users on the login pages" msgstr "Aktiver egenregistrerting for brukerer på påloggingssidene" -#: common/models.py:1929 +#: common/models.py:1899 msgid "Enable SSO" msgstr "Aktiver SSO" -#: common/models.py:1930 +#: common/models.py:1900 msgid "Enable SSO on the login pages" msgstr "Aktiver SSO på innloggingssidene" -#: common/models.py:1935 +#: common/models.py:1905 msgid "Enable SSO registration" msgstr "Aktiver SSO-registrering" -#: common/models.py:1937 +#: common/models.py:1907 msgid "Enable self-registration via SSO for users on the login pages" msgstr "Aktiver selvregistrering via SSO for brukere på innloggingssiden" -#: common/models.py:1943 +#: common/models.py:1913 msgid "Email required" msgstr "E-postadresse kreves" -#: common/models.py:1944 +#: common/models.py:1914 msgid "Require user to supply mail on signup" msgstr "Krevt at brukere angir e-post ved registrering" -#: common/models.py:1949 +#: common/models.py:1919 msgid "Auto-fill SSO users" msgstr "Auto-utfyll SSO-brukere" -#: common/models.py:1951 +#: common/models.py:1921 msgid "Automatically fill out user-details from SSO account-data" msgstr "Fyll automatisk ut brukeropplysninger fra SSO-kontodata" -#: common/models.py:1957 +#: common/models.py:1927 msgid "Mail twice" msgstr "E-post to ganger" -#: common/models.py:1958 +#: common/models.py:1928 msgid "On signup ask users twice for their mail" msgstr "Spør brukeren om e-post to ganger ved registrering" -#: common/models.py:1963 +#: common/models.py:1933 msgid "Password twice" msgstr "Passord to ganger" -#: common/models.py:1964 +#: common/models.py:1934 msgid "On signup ask users twice for their password" msgstr "Spør brukeren om passord to ganger ved registrering" -#: common/models.py:1969 +#: common/models.py:1939 msgid "Allowed domains" msgstr "Tillatte domener" -#: common/models.py:1971 +#: common/models.py:1941 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "Begrens registrering til bestemte domener (kommaseparert, begynner med @)" -#: common/models.py:1977 +#: common/models.py:1947 msgid "Group on signup" msgstr "Gruppe ved registrering" -#: common/models.py:1978 +#: common/models.py:1948 msgid "Group to which new users are assigned on registration" msgstr "Gruppe nye brukere blir tilknyttet ved registrering" -#: common/models.py:1983 +#: common/models.py:1953 msgid "Enforce MFA" msgstr "Krev MFA" -#: common/models.py:1984 +#: common/models.py:1954 msgid "Users must use multifactor security." msgstr "Brukere må bruke flerfaktorsikkerhet." -#: common/models.py:1989 +#: common/models.py:1959 msgid "Check plugins on startup" msgstr "Sjekk utvidelser ved oppstart" -#: common/models.py:1991 +#: common/models.py:1961 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:1999 +#: common/models.py:1969 msgid "Check for plugin updates" msgstr "" -#: common/models.py:2000 +#: common/models.py:1970 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:2006 +#: common/models.py:1976 msgid "Enable URL integration" msgstr "Aktiver URL-integrasjon" -#: common/models.py:2007 +#: common/models.py:1977 msgid "Enable plugins to add URL routes" msgstr "Tillat utvidelser å legge til URL-ruter" -#: common/models.py:2013 +#: common/models.py:1983 msgid "Enable navigation integration" msgstr "Aktiver navigasjonsintegrasjon" -#: common/models.py:2014 +#: common/models.py:1984 msgid "Enable plugins to integrate into navigation" msgstr "Tillat utvidelser å integrere mot navigasjon" -#: common/models.py:2020 +#: common/models.py:1990 msgid "Enable app integration" msgstr "Aktiver app-integrasjon" -#: common/models.py:2021 +#: common/models.py:1991 msgid "Enable plugins to add apps" msgstr "Tillat utvidelser å legge til apper" -#: common/models.py:2027 +#: common/models.py:1997 msgid "Enable schedule integration" msgstr "Aktiver tidsplanintegrasjon" -#: common/models.py:2028 +#: common/models.py:1998 msgid "Enable plugins to run scheduled tasks" msgstr "Tillat utvidelser å kjøre planlagte oppgaver" -#: common/models.py:2034 +#: common/models.py:2004 msgid "Enable event integration" msgstr "Aktiver hendelsesintegrasjon" -#: common/models.py:2035 +#: common/models.py:2005 msgid "Enable plugins to respond to internal events" msgstr "Tillat utvidelser å reagere på interne hendelser" -#: common/models.py:2041 +#: common/models.py:2011 msgid "Enable project codes" msgstr "Aktiver prosjektkoder" -#: common/models.py:2042 +#: common/models.py:2012 msgid "Enable project codes for tracking projects" msgstr "Aktiver prosjektkoder for å spore prosjekter" -#: common/models.py:2047 +#: common/models.py:2017 msgid "Stocktake Functionality" msgstr "Varetellingsfunksjonalitet" -#: common/models.py:2049 +#: common/models.py:2019 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:2055 +#: common/models.py:2025 msgid "Exclude External Locations" msgstr "Ekskluder eksterne plasseringer" -#: common/models.py:2057 +#: common/models.py:2027 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "Eksluder lagervarer i eksterne plasseringer fra varetellinger" -#: common/models.py:2063 +#: common/models.py:2033 msgid "Automatic Stocktake Period" msgstr "Automatisk varetellingsperiode" -#: common/models.py:2065 +#: common/models.py:2035 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:2071 +#: common/models.py:2041 msgid "Report Deletion Interval" msgstr "Rapportslettingsintervall" -#: common/models.py:2073 +#: common/models.py:2043 msgid "Stocktake reports will be deleted after specified number of days" msgstr "Varetellingsrapporter vil slettes etter angitt antall dager" -#: common/models.py:2080 +#: common/models.py:2050 msgid "Display Users full names" msgstr "Vis brukernes fulle navn" -#: common/models.py:2081 +#: common/models.py:2051 msgid "Display Users full names instead of usernames" msgstr "Vis brukernes fulle navn istedet for brukernavn" -#: common/models.py:2086 +#: common/models.py:2056 msgid "Enable Test Station Data" msgstr "" -#: common/models.py:2087 +#: common/models.py:2057 msgid "Enable test station data collection for test results" msgstr "" -#: common/models.py:2099 common/models.py:2509 +#: common/models.py:2069 common/models.py:2479 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:2142 +#: common/models.py:2112 msgid "Hide inactive parts" msgstr "Skjul inaktive elementer" -#: common/models.py:2144 +#: common/models.py:2114 msgid "Hide inactive parts in results displayed on the homepage" msgstr "Skjul inaktive deler i resultater som vises på hjemmesiden" -#: common/models.py:2150 +#: common/models.py:2120 msgid "Show subscribed parts" msgstr "Vis abonnerte deler" -#: common/models.py:2151 +#: common/models.py:2121 msgid "Show subscribed parts on the homepage" msgstr "Vis abonnerte deler på startsiden" -#: common/models.py:2156 +#: common/models.py:2126 msgid "Show subscribed categories" msgstr "Vis abonnerte kategorier" -#: common/models.py:2157 +#: common/models.py:2127 msgid "Show subscribed part categories on the homepage" msgstr "Vis abonnerte delkatekorier på startsiden" -#: common/models.py:2162 +#: common/models.py:2132 msgid "Show latest parts" msgstr "Vis nyeste deler" -#: common/models.py:2163 +#: common/models.py:2133 msgid "Show latest parts on the homepage" msgstr "Vis nyeste deler på startsiden" -#: common/models.py:2168 +#: common/models.py:2138 msgid "Show invalid BOMs" msgstr "" -#: common/models.py:2169 +#: common/models.py:2139 msgid "Show BOMs that await validation on the homepage" msgstr "Vis stykklister som venter på validering på startsiden" -#: common/models.py:2174 +#: common/models.py:2144 msgid "Show recent stock changes" msgstr "Vis nylige lagerendringer" -#: common/models.py:2175 +#: common/models.py:2145 msgid "Show recently changed stock items on the homepage" msgstr "Vis nylig endrede lagervarer på startsiden" -#: common/models.py:2180 +#: common/models.py:2150 msgid "Show low stock" msgstr "Vis lav lagerbeholdning" -#: common/models.py:2181 +#: common/models.py:2151 msgid "Show low stock items on the homepage" msgstr "Vis lave lagervarer på startsiden" -#: common/models.py:2186 +#: common/models.py:2156 msgid "Show depleted stock" msgstr "Vis tomme lagervarer" -#: common/models.py:2187 +#: common/models.py:2157 msgid "Show depleted stock items on the homepage" msgstr "Vis tom lagerbeholdning på startsiden" -#: common/models.py:2192 +#: common/models.py:2162 msgid "Show needed stock" msgstr "Vis nødvendig lagerbeholdning" -#: common/models.py:2193 +#: common/models.py:2163 msgid "Show stock items needed for builds on the homepage" msgstr "Vis lagervarer som trengs for produksjon på startsiden" -#: common/models.py:2198 +#: common/models.py:2168 msgid "Show expired stock" msgstr "Vis utløpt lagerbeholdning" -#: common/models.py:2199 +#: common/models.py:2169 msgid "Show expired stock items on the homepage" msgstr "Vis utløpte lagervarer på startsiden" -#: common/models.py:2204 +#: common/models.py:2174 msgid "Show stale stock" msgstr "Vis foreldet lagerbeholdning" -#: common/models.py:2205 +#: common/models.py:2175 msgid "Show stale stock items on the homepage" msgstr "Vis foreldet lagerbeholdning på startsiden" -#: common/models.py:2210 +#: common/models.py:2180 msgid "Show pending builds" msgstr "Vis ventende produksjoner" -#: common/models.py:2211 +#: common/models.py:2181 msgid "Show pending builds on the homepage" msgstr "Vi ventende produksjoner på startsiden" -#: common/models.py:2216 +#: common/models.py:2186 msgid "Show overdue builds" msgstr "Vis forfalte produksjoner" -#: common/models.py:2217 +#: common/models.py:2187 msgid "Show overdue builds on the homepage" msgstr "Vis forfalte produksjoner på startsiden" -#: common/models.py:2222 +#: common/models.py:2192 msgid "Show outstanding POs" msgstr "Vis utestående Innkjøpsordrer" -#: common/models.py:2223 +#: common/models.py:2193 msgid "Show outstanding POs on the homepage" msgstr "Vis utestående Innkjøpsordrer på startsiden" -#: common/models.py:2228 +#: common/models.py:2198 msgid "Show overdue POs" msgstr "Vis forfalte Innkjøpsordrer" -#: common/models.py:2229 +#: common/models.py:2199 msgid "Show overdue POs on the homepage" msgstr "Vis forfalte Innkjøpsordrer på startsiden" -#: common/models.py:2234 +#: common/models.py:2204 msgid "Show outstanding SOs" msgstr "Vis utestående Salgsordrer" -#: common/models.py:2235 +#: common/models.py:2205 msgid "Show outstanding SOs on the homepage" msgstr "Vis utestående Salgsordrer på startsiden" -#: common/models.py:2240 +#: common/models.py:2210 msgid "Show overdue SOs" msgstr "Vis forfalte SOer" -#: common/models.py:2241 +#: common/models.py:2211 msgid "Show overdue SOs on the homepage" msgstr "Vis forfalte SOer på startsiden" -#: common/models.py:2246 +#: common/models.py:2216 msgid "Show pending SO shipments" msgstr "Vis ventende SO-forsendelser" -#: common/models.py:2247 +#: common/models.py:2217 msgid "Show pending SO shipments on the homepage" msgstr "Vis ventende SO-forsendelser på startsiden" -#: common/models.py:2252 +#: common/models.py:2222 msgid "Show News" msgstr "Vis Nyheter" -#: common/models.py:2253 +#: common/models.py:2223 msgid "Show news on the homepage" msgstr "Vis nyheter på startsiden" -#: common/models.py:2258 +#: common/models.py:2228 msgid "Inline label display" msgstr "Innebygd etikettvisning" -#: common/models.py:2260 +#: common/models.py:2230 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:2266 +#: common/models.py:2236 msgid "Default label printer" msgstr "Standard etikettskriver" -#: common/models.py:2268 +#: common/models.py:2238 msgid "Configure which label printer should be selected by default" msgstr "Konfigurer hvilken etikettskriver som skal være valgt som standard" -#: common/models.py:2274 +#: common/models.py:2244 msgid "Inline report display" msgstr "Innebygd rapportvisning" -#: common/models.py:2276 +#: common/models.py:2246 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:2282 +#: common/models.py:2252 msgid "Search Parts" msgstr "Søk i Deler" -#: common/models.py:2283 +#: common/models.py:2253 msgid "Display parts in search preview window" msgstr "Vis deler i forhåndsvsningsvinduet for søk" -#: common/models.py:2288 +#: common/models.py:2258 msgid "Search Supplier Parts" msgstr "Søk i Leverandørdeler" -#: common/models.py:2289 +#: common/models.py:2259 msgid "Display supplier parts in search preview window" msgstr "Vis leverandørdeler i forhåndsvisningsvinduet for søk" -#: common/models.py:2294 +#: common/models.py:2264 msgid "Search Manufacturer Parts" msgstr "Søk i Produsentdeler" -#: common/models.py:2295 +#: common/models.py:2265 msgid "Display manufacturer parts in search preview window" msgstr "Vis produsentdeler i forhåndsvisningsvinduet for søk" -#: common/models.py:2300 +#: common/models.py:2270 msgid "Hide Inactive Parts" msgstr "Skjul Inaktive Deler" -#: common/models.py:2301 +#: common/models.py:2271 msgid "Excluded inactive parts from search preview window" msgstr "Ekskluder inaktive deler fra forhåndsvisningsvinduet for søk" -#: common/models.py:2306 +#: common/models.py:2276 msgid "Search Categories" msgstr "Søk i kategorier" -#: common/models.py:2307 +#: common/models.py:2277 msgid "Display part categories in search preview window" msgstr "Vis delkategorier i forhåndsvisningsvinduet for søk" -#: common/models.py:2312 +#: common/models.py:2282 msgid "Search Stock" msgstr "Søk i lagerbeholdning" -#: common/models.py:2313 +#: common/models.py:2283 msgid "Display stock items in search preview window" msgstr "Vis lagervarer i forhåndsvisningsvinduet for søk" -#: common/models.py:2318 +#: common/models.py:2288 msgid "Hide Unavailable Stock Items" msgstr "Skjul utilgjengelige Lagervarer" -#: common/models.py:2320 +#: common/models.py:2290 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:2326 +#: common/models.py:2296 msgid "Search Locations" msgstr "Søk i Plasseringer" -#: common/models.py:2327 +#: common/models.py:2297 msgid "Display stock locations in search preview window" msgstr "Vis lagerplasseringer i forhåndsvisningsvinduet for søk" -#: common/models.py:2332 +#: common/models.py:2302 msgid "Search Companies" msgstr "Søk i Firma" -#: common/models.py:2333 +#: common/models.py:2303 msgid "Display companies in search preview window" msgstr "Vis firma i forhåndsvsningsvinduet for søk" -#: common/models.py:2338 +#: common/models.py:2308 msgid "Search Build Orders" msgstr "Søk i Produksjonsordrer" -#: common/models.py:2339 +#: common/models.py:2309 msgid "Display build orders in search preview window" msgstr "Vis produksjonsordrer i forhåndsvisningsvinduet for søk" -#: common/models.py:2344 +#: common/models.py:2314 msgid "Search Purchase Orders" msgstr "Søk i Innkjøpsordrer" -#: common/models.py:2345 +#: common/models.py:2315 msgid "Display purchase orders in search preview window" msgstr "Vis innkjøpsordrer i forhåndsvisningsvinduet for søk" -#: common/models.py:2350 +#: common/models.py:2320 msgid "Exclude Inactive Purchase Orders" msgstr "Ekskluder inaktive Innkjøpsordrer" -#: common/models.py:2352 +#: common/models.py:2322 msgid "Exclude inactive purchase orders from search preview window" msgstr "Ekskluder inaktive innkjøpsordrer fra forhåndsvisningsvinduet for søk" -#: common/models.py:2358 +#: common/models.py:2328 msgid "Search Sales Orders" msgstr "Søk i Salgsordrer" -#: common/models.py:2359 +#: common/models.py:2329 msgid "Display sales orders in search preview window" msgstr "Vis salgsordrer i forhåndsvisningsvinduet for søk" -#: common/models.py:2364 +#: common/models.py:2334 msgid "Exclude Inactive Sales Orders" msgstr "Ekskluder Inaktive Salgsordrer" -#: common/models.py:2366 +#: common/models.py:2336 msgid "Exclude inactive sales orders from search preview window" msgstr "Ekskluder inaktive salgsordrer fra forhåndsvisningsvinduet for søk" -#: common/models.py:2372 +#: common/models.py:2342 msgid "Search Return Orders" msgstr "Søk i Returordrer" -#: common/models.py:2373 +#: common/models.py:2343 msgid "Display return orders in search preview window" msgstr "Vis returordrer i forhåndsvisningsvinduet for søk" -#: common/models.py:2378 +#: common/models.py:2348 msgid "Exclude Inactive Return Orders" msgstr "Ekskluder Inaktive Returordrer" -#: common/models.py:2380 +#: common/models.py:2350 msgid "Exclude inactive return orders from search preview window" msgstr "Ekskluder inaktive returordrer fra forhåndsvisningsvinduet for søk" -#: common/models.py:2386 +#: common/models.py:2356 msgid "Search Preview Results" msgstr "Forhåndsvisning av søkeresultater" -#: common/models.py:2388 +#: common/models.py:2358 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:2394 +#: common/models.py:2364 msgid "Regex Search" msgstr "Regex-søk" -#: common/models.py:2395 +#: common/models.py:2365 msgid "Enable regular expressions in search queries" msgstr "Aktiver regulære uttrykk i søkeord" -#: common/models.py:2400 +#: common/models.py:2370 msgid "Whole Word Search" msgstr "Helordsøk" -#: common/models.py:2401 +#: common/models.py:2371 msgid "Search queries return results for whole word matches" msgstr "Søk returnerer resultater for treff med hele ord" -#: common/models.py:2406 +#: common/models.py:2376 msgid "Show Quantity in Forms" msgstr "Vis antall i skjemaer" -#: common/models.py:2407 +#: common/models.py:2377 msgid "Display available part quantity in some forms" msgstr "Vis antall tilgjengelige deler i noen skjemaer" -#: common/models.py:2412 +#: common/models.py:2382 msgid "Escape Key Closes Forms" msgstr "Escape-knappen lukker skjemaer" -#: common/models.py:2413 +#: common/models.py:2383 msgid "Use the escape key to close modal forms" msgstr "Bruk Escape-knappen for å lukke modal-skjemaer" -#: common/models.py:2418 +#: common/models.py:2388 msgid "Fixed Navbar" msgstr "Fast navigasjonsbar" -#: common/models.py:2419 +#: common/models.py:2389 msgid "The navbar position is fixed to the top of the screen" msgstr "Navigasjonsbarens posisjon er fast på toppen av skjermen" -#: common/models.py:2424 +#: common/models.py:2394 msgid "Date Format" msgstr "Datoformat" -#: common/models.py:2425 +#: common/models.py:2395 msgid "Preferred format for displaying dates" msgstr "Foretrukket format for å vise datoer" -#: common/models.py:2438 part/templates/part/detail.html:41 +#: common/models.py:2408 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Delplanlegging" -#: common/models.py:2439 +#: common/models.py:2409 msgid "Display part scheduling information" msgstr "Vis delplanleggingsinformasjon" -#: common/models.py:2444 part/templates/part/detail.html:62 +#: common/models.py:2414 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "Lagertelling for Del" -#: common/models.py:2446 +#: common/models.py:2416 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "Vis lagertellingsinformasjon for del (om lagertellingsfunksjonalitet er aktivert)" -#: common/models.py:2452 +#: common/models.py:2422 msgid "Table String Length" msgstr "Tabellstrenglengde" -#: common/models.py:2454 +#: common/models.py:2424 msgid "Maximum length limit for strings displayed in table views" msgstr "Maksimal lengdegrense for tekst vist i tabeller" -#: common/models.py:2460 +#: common/models.py:2430 msgid "Default part label template" msgstr "Standard etikettmal for del" -#: common/models.py:2461 +#: common/models.py:2431 msgid "The part label template to be automatically selected" msgstr "Etikettmalen for del som velges automatisk" -#: common/models.py:2466 +#: common/models.py:2436 msgid "Default stock item template" msgstr "Standard etikettmal for lagervare" -#: common/models.py:2468 +#: common/models.py:2438 msgid "The stock item label template to be automatically selected" msgstr "Etikettmalen for lagervare som velges automatisk" -#: common/models.py:2474 +#: common/models.py:2444 msgid "Default stock location label template" msgstr "Standard etikettmal for lagerplassering" -#: common/models.py:2476 +#: common/models.py:2446 msgid "The stock location label template to be automatically selected" msgstr "Etikettmalen for lagerplassering som velges automatisk" -#: common/models.py:2482 +#: common/models.py:2452 msgid "Default build line label template" msgstr "" -#: common/models.py:2484 +#: common/models.py:2454 msgid "The build line label template to be automatically selected" msgstr "" -#: common/models.py:2490 +#: common/models.py:2460 msgid "Receive error reports" msgstr "Motta feilrapporter" -#: common/models.py:2491 +#: common/models.py:2461 msgid "Receive notifications for system errors" msgstr "Motta varsler om systemfeil" -#: common/models.py:2496 +#: common/models.py:2466 msgid "Last used printing machines" msgstr "" -#: common/models.py:2497 +#: common/models.py:2467 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2540 +#: common/models.py:2487 common/models.py:2488 common/models.py:2636 +#: common/models.py:2637 common/models.py:2882 common/models.py:2883 +#: common/models.py:3193 common/models.py:3194 part/models.py:3193 +#: part/models.py:3280 part/models.py:3353 part/models.py:3381 +#: plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "Bruker" + +#: common/models.py:2510 msgid "Price break quantity" msgstr "Antall for prisbrudd" -#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1382 order/models.py:2301 -#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 +#: common/models.py:2517 company/serializers.py:472 order/admin.py:42 +#: order/models.py:1346 order/models.py:2265 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1886 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:740 msgid "Price" msgstr "Pris" -#: common/models.py:2548 +#: common/models.py:2518 msgid "Unit price at specified quantity" msgstr "Enhetspris på spesifisert antall" -#: common/models.py:2719 common/models.py:2904 +#: common/models.py:2613 common/models.py:2798 msgid "Endpoint" msgstr "Endepunkt" -#: common/models.py:2720 +#: common/models.py:2614 msgid "Endpoint at which this webhook is received" msgstr "Endepunktet hvor denne webhooken er mottatt" -#: common/models.py:2730 +#: common/models.py:2624 msgid "Name for this webhook" msgstr "Navn for webhooken" -#: common/models.py:2734 company/models.py:160 company/models.py:814 -#: machine/models.py:39 part/admin.py:88 part/models.py:1088 -#: plugin/models.py:65 templates/js/translated/company.js:523 +#: common/models.py:2628 company/models.py:163 company/models.py:782 +#: machine/models.py:39 part/admin.py:88 part/models.py:1081 +#: plugin/models.py:66 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3464,101 +3408,118 @@ msgstr "Navn for webhooken" msgid "Active" msgstr "Aktiv" -#: common/models.py:2734 +#: common/models.py:2628 msgid "Is this webhook active" msgstr "Er webhooken aktiv" -#: common/models.py:2750 users/models.py:159 +#: common/models.py:2644 users/models.py:159 msgid "Token" msgstr "Sjetong" -#: common/models.py:2751 +#: common/models.py:2645 msgid "Token for access" msgstr "Nøkkel for tilgang" -#: common/models.py:2759 +#: common/models.py:2653 msgid "Secret" msgstr "Hemmelig" -#: common/models.py:2760 +#: common/models.py:2654 msgid "Shared secret for HMAC" msgstr "Delt hemmlighet for HMAC" -#: common/models.py:2868 +#: common/models.py:2762 msgid "Message ID" msgstr "Melding ID" -#: common/models.py:2869 +#: common/models.py:2763 msgid "Unique identifier for this message" msgstr "Unik Id for denne meldingen" -#: common/models.py:2877 +#: common/models.py:2771 msgid "Host" msgstr "Vert" -#: common/models.py:2878 +#: common/models.py:2772 msgid "Host from which this message was received" msgstr "Verten denne meldingen ble mottatt fra" -#: common/models.py:2886 +#: common/models.py:2780 msgid "Header" msgstr "Tittel" -#: common/models.py:2887 +#: common/models.py:2781 msgid "Header of this message" msgstr "Overskrift for denne meldingen" -#: common/models.py:2894 +#: common/models.py:2788 msgid "Body" msgstr "Brødtekst" -#: common/models.py:2895 +#: common/models.py:2789 msgid "Body of this message" msgstr "Innholdet i meldingen" -#: common/models.py:2905 +#: common/models.py:2799 msgid "Endpoint on which this message was received" msgstr "Endepunktet meldingen ble mottatt fra" -#: common/models.py:2910 +#: common/models.py:2804 msgid "Worked on" msgstr "Arbeidet med" -#: common/models.py:2911 +#: common/models.py:2805 msgid "Was the work on this message finished?" msgstr "Var arbeidet med denne meldingen ferdig?" -#: common/models.py:3037 +#: common/models.py:2931 msgid "Id" msgstr "" -#: common/models.py:3039 templates/js/translated/company.js:965 +#: common/models.py:2933 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "Tittel" -#: common/models.py:3043 templates/js/translated/news.js:60 +#: common/models.py:2935 common/models.py:3177 company/models.py:149 +#: company/models.py:440 company/models.py:500 company/models.py:799 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +#: part/admin.py:55 part/models.py:955 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "Lenke" + +#: common/models.py:2937 templates/js/translated/news.js:60 msgid "Published" msgstr "Publisert" -#: common/models.py:3045 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2939 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:3047 templates/js/translated/news.js:52 +#: common/models.py:2941 templates/js/translated/news.js:52 msgid "Summary" msgstr "Sammendrag" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Read" msgstr "Les" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Was this news item read?" msgstr "Er dette nyhetselementet lest?" -#: common/models.py:3067 company/models.py:156 part/models.py:972 +#: common/models.py:2961 company/models.py:159 part/models.py:965 #: 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.html:35 @@ -3568,34 +3529,89 @@ msgstr "Er dette nyhetselementet lest?" msgid "Image" msgstr "Bilde" -#: common/models.py:3067 +#: common/models.py:2961 msgid "Image file" msgstr "Bildefil" -#: common/models.py:3109 +#: common/models.py:2973 common/models.py:3161 +msgid "Target model type for this image" +msgstr "" + +#: common/models.py:2977 +msgid "Target model ID for this image" +msgstr "" + +#: common/models.py:3018 msgid "Unit name must be a valid identifier" msgstr "Enhetsnavn må være en gyldig identifikator" -#: common/models.py:3128 +#: common/models.py:3037 msgid "Unit name" msgstr "Enhetsnavn" -#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3044 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3136 +#: common/models.py:3045 msgid "Optional unit symbol" msgstr "Valgfritt enhetssymbol" -#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3052 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "Definisjon" -#: common/models.py:3144 +#: common/models.py:3053 msgid "Unit definition" msgstr "Enhetsdefinisjon" +#: common/models.py:3111 common/models.py:3168 stock/models.py:2426 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "Vedlegg" + +#: common/models.py:3123 +msgid "Missing file" +msgstr "Fil mangler" + +#: common/models.py:3124 +msgid "Missing external link" +msgstr "Mangler eksternlenke" + +#: common/models.py:3169 +msgid "Select file to attach" +msgstr "Velg fil å legge ved" + +#: common/models.py:3184 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "Kommentar" + +#: common/models.py:3185 +msgid "Attachment comment" +msgstr "" + +#: common/models.py:3201 +msgid "Upload date" +msgstr "" + +#: common/models.py:3202 +msgid "Date the file was uploaded" +msgstr "" + +#: common/models.py:3206 +msgid "File size" +msgstr "" + +#: common/models.py:3206 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3244 common/serializers.py:553 +msgid "Invalid model type specified for attachment" +msgstr "" + #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" @@ -3630,66 +3646,103 @@ msgstr "Artikler har blitt mottatt mot en returordre" msgid "Error raised by plugin" msgstr "Feil oppstått i utvidelse" -#: common/serializers.py:366 +#: common/serializers.py:371 msgid "Is Running" msgstr "Kjører" -#: common/serializers.py:372 +#: common/serializers.py:377 msgid "Pending Tasks" msgstr "Ventende oppgaver" -#: common/serializers.py:378 +#: common/serializers.py:383 msgid "Scheduled Tasks" msgstr "Planlagte oppgaver" -#: common/serializers.py:384 +#: common/serializers.py:389 msgid "Failed Tasks" msgstr "Mislykkede oppgaver" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Task ID" msgstr "Oppgave-ID" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Unique task ID" msgstr "Unik oppgave-ID" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock" msgstr "Lås" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock time" msgstr "Låsetidspunkt" -#: common/serializers.py:403 +#: common/serializers.py:408 msgid "Task name" msgstr "Oppgavenavn" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function" msgstr "Funksjon" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function name" msgstr "Funksjonsnavn" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Arguments" msgstr "Argumenter" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Task arguments" msgstr "Oppgaveargumenter" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Keyword Arguments" msgstr "Nøkkelordargumenter" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Task keyword arguments" msgstr "Nøkkelordargumenter for oppgave" +#: common/serializers.py:525 +msgid "Filename" +msgstr "Filnavn" + +#: common/serializers.py:532 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: common/serializers.py:559 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "" + +#: common/validators.py:33 +msgid "No attachment model type provided" +msgstr "" + +#: common/validators.py:39 +msgid "Invalid attachment model type" +msgstr "" + +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "Et tomt domene er ikke tillatt." + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +msgstr "Ugyldig domenenavn: {domain}" + #: 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 @@ -3728,210 +3781,222 @@ msgstr "Deler importert" msgid "Previous Step" msgstr "Forrige trinn" -#: company/api.py:164 +#: company/api.py:144 msgid "Part is Active" msgstr "" -#: company/api.py:168 +#: company/api.py:148 msgid "Manufacturer is Active" msgstr "" -#: company/api.py:317 +#: company/api.py:281 msgid "Supplier Part is Active" msgstr "" -#: company/api.py:321 +#: company/api.py:285 msgid "Internal Part is Active" msgstr "" -#: company/api.py:325 +#: company/api.py:289 msgid "Supplier is Active" msgstr "" -#: company/models.py:114 +#: company/models.py:100 company/models.py:365 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:822 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "Firma" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "Firmaer" + +#: company/models.py:117 msgid "Company description" msgstr "Beskrivelse av firma" -#: company/models.py:115 +#: company/models.py:118 msgid "Description of the company" msgstr "Beskrivelse av firmaet" -#: company/models.py:120 company/templates/company/company_base.html:106 +#: company/models.py:123 company/templates/company/company_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:532 msgid "Website" msgstr "Nettside" -#: company/models.py:120 +#: company/models.py:123 msgid "Company website URL" msgstr "Bedriftens nettside URL" -#: company/models.py:125 +#: company/models.py:128 msgid "Phone number" msgstr "Telefonnummer" -#: company/models.py:127 +#: company/models.py:130 msgid "Contact phone number" msgstr "Kontakt-telefonnummer" -#: company/models.py:134 +#: company/models.py:137 msgid "Contact email address" msgstr "Kontakt e-post" -#: company/models.py:139 company/templates/company/company_base.html:145 +#: company/models.py:142 company/templates/company/company_base.html:145 #: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "Kontakt" -#: company/models.py:141 +#: company/models.py:144 msgid "Point of contact" msgstr "Kontaktpunkt" -#: company/models.py:147 +#: company/models.py:150 msgid "Link to external company information" msgstr "Link til ekstern bedriftsinformasjon" -#: company/models.py:160 +#: company/models.py:163 msgid "Is this company active?" msgstr "" -#: company/models.py:165 +#: company/models.py:168 msgid "is customer" msgstr "er kunde" -#: company/models.py:166 +#: company/models.py:169 msgid "Do you sell items to this company?" msgstr "Selger du varer til dette firmaet?" -#: company/models.py:171 +#: company/models.py:174 msgid "is supplier" msgstr "er leverandør" -#: company/models.py:172 +#: company/models.py:175 msgid "Do you purchase items from this company?" msgstr "Kjøper du varer fra dette firmaet?" -#: company/models.py:177 +#: company/models.py:180 msgid "is manufacturer" msgstr "er produsent" -#: company/models.py:178 +#: company/models.py:181 msgid "Does this company manufacture parts?" msgstr "Produserer dette firmaet deler?" -#: company/models.py:186 +#: company/models.py:189 msgid "Default currency used for this company" msgstr "Standardvaluta brukt for dette firmaet" -#: company/models.py:273 company/models.py:382 -#: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:812 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 -msgid "Company" -msgstr "Firma" - -#: company/models.py:383 +#: company/models.py:366 msgid "Select company" msgstr "Velg selskap" -#: company/models.py:388 +#: company/models.py:371 msgid "Address title" msgstr "Adressetittel" -#: company/models.py:389 +#: company/models.py:372 msgid "Title describing the address entry" msgstr "Tittel som beskriver addressen" -#: company/models.py:395 +#: company/models.py:378 msgid "Primary address" msgstr "Hovedadresse" -#: company/models.py:396 +#: company/models.py:379 msgid "Set as primary address" msgstr "Sett som hovedadresse" -#: company/models.py:401 templates/js/translated/company.js:914 +#: company/models.py:384 templates/js/translated/company.js:914 #: templates/js/translated/company.js:971 msgid "Line 1" msgstr "Linje 1" -#: company/models.py:402 +#: company/models.py:385 msgid "Address line 1" msgstr "Adresselinje 1" -#: company/models.py:408 templates/js/translated/company.js:915 +#: company/models.py:391 templates/js/translated/company.js:915 #: templates/js/translated/company.js:977 msgid "Line 2" msgstr "Linje 2" -#: company/models.py:409 +#: company/models.py:392 msgid "Address line 2" msgstr "Adresselinje 2" -#: company/models.py:415 company/models.py:416 +#: company/models.py:398 company/models.py:399 #: templates/js/translated/company.js:983 msgid "Postal code" msgstr "Postnummer" -#: company/models.py:422 +#: company/models.py:405 msgid "City/Region" msgstr "Poststed/område" -#: company/models.py:423 +#: company/models.py:406 msgid "Postal code city/region" msgstr "Postnummerets by/område" -#: company/models.py:429 +#: company/models.py:412 msgid "State/Province" msgstr "Delstat/provins" -#: company/models.py:430 +#: company/models.py:413 msgid "State or province" msgstr "Delstat eller provins" -#: company/models.py:436 templates/js/translated/company.js:1001 +#: company/models.py:419 templates/js/translated/company.js:1001 msgid "Country" msgstr "Land" -#: company/models.py:437 +#: company/models.py:420 msgid "Address country" msgstr "Adressens land" -#: company/models.py:443 +#: company/models.py:426 msgid "Courier shipping notes" msgstr "Notater til transportør" -#: company/models.py:444 +#: company/models.py:427 msgid "Notes for shipping courier" msgstr "Notater for transportør" -#: company/models.py:450 +#: company/models.py:433 msgid "Internal shipping notes" msgstr "Interne fraktnotater" -#: company/models.py:451 +#: company/models.py:434 msgid "Shipping notes for internal use" msgstr "Fraktnotater for internt bruk" -#: company/models.py:458 +#: company/models.py:441 msgid "Link to address information (external)" msgstr "Lenke til adresseinformasjon (ekstern)" -#: company/models.py:489 company/models.py:792 stock/models.py:768 -#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 +#: company/models.py:463 company/models.py:574 company/models.py:792 +#: 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:475 company/models.py:760 stock/models.py:766 +#: stock/serializers.py:422 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Basisdel" -#: company/models.py:491 company/models.py:794 +#: company/models.py:477 company/models.py:762 msgid "Select part" msgstr "Velg del" -#: company/models.py:500 company/templates/company/company_base.html:82 +#: company/models.py:486 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:530 +#: company/templates/company/supplier_part.html:145 part/serializers.py:525 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -3941,152 +4006,154 @@ msgstr "Velg del" msgid "Manufacturer" msgstr "Produsent" -#: company/models.py:501 +#: company/models.py:487 msgid "Select manufacturer" msgstr "Velg produsent" -#: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:540 +#: company/models.py:493 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:535 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 -#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1801 #: templates/js/translated/purchase_order.js:1851 #: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "" -#: company/models.py:508 +#: company/models.py:494 msgid "Manufacturer Part Number" msgstr "Produsentens varenummer" -#: company/models.py:515 +#: company/models.py:501 msgid "URL for external manufacturer part link" msgstr "URL for ekstern produsentdel-lenke" -#: company/models.py:524 +#: company/models.py:510 msgid "Manufacturer part description" msgstr "Produsentens delbeskrivelse" -#: company/models.py:581 company/models.py:608 company/models.py:824 -#: 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:615 +#: company/models.py:581 msgid "Parameter name" msgstr "Parameternavn" -#: company/models.py:621 report/templates/report/inventree_test_report.html:104 -#: stock/models.py:2429 templates/js/translated/company.js:1166 -#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 +#: company/models.py:587 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2418 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1493 #: templates/js/translated/stock.js:1522 msgid "Value" msgstr "Verdi" -#: company/models.py:622 +#: company/models.py:588 msgid "Parameter value" msgstr "Parameterverdi" -#: company/models.py:629 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1052 part/models.py:3666 +#: company/models.py:595 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1045 part/models.py:3646 #: part/templates/part/part_base.html:284 -#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1512 +#: templates/js/translated/part.js:1616 templates/js/translated/part.js:2370 msgid "Units" msgstr "Enheter" -#: company/models.py:630 +#: company/models.py:596 msgid "Parameter units" msgstr "Parameterenheter" -#: company/models.py:732 +#: company/models.py:648 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:777 stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "Leverandørdel" + +#: company/models.py:700 msgid "Pack units must be compatible with the base part units" msgstr "Pakkeenhetene må være komptible med delens basisenhet" -#: company/models.py:739 +#: company/models.py:707 msgid "Pack units must be greater than zero" msgstr "Pakkeenhet må være mer enn null" -#: company/models.py:753 +#: company/models.py:721 msgid "Linked manufacturer part must reference the same base part" msgstr "Den sammenkoblede produsentdelen må referere til samme basisdel" -#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/models.py:770 company/templates/company/company_base.html:87 #: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:514 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:509 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:511 -#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1769 #: templates/js/translated/pricing.js:498 #: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "Leverandør" -#: company/models.py:803 +#: company/models.py:771 msgid "Select supplier" msgstr "Velg leverandør" -#: company/models.py:809 part/serializers.py:525 +#: company/models.py:777 part/serializers.py:520 msgid "Supplier stock keeping unit" msgstr "Leverandørens lagerbeholdningsenhet" -#: company/models.py:815 +#: company/models.py:783 msgid "Is this supplier part active?" msgstr "" -#: company/models.py:825 +#: company/models.py:793 msgid "Select manufacturer part" msgstr "Velg produsentdel" -#: company/models.py:832 +#: company/models.py:800 msgid "URL for external supplier part link" msgstr "URL for ekstern leverandørdel-lenke" -#: company/models.py:841 +#: company/models.py:809 msgid "Supplier part description" msgstr "Leverandørens delbeskrivelse" -#: company/models.py:848 company/templates/company/supplier_part.html:187 -#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 +#: company/models.py:816 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4093 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_purchase_order_report.html:32 #: report/templates/report/inventree_return_order_report.html:27 #: report/templates/report/inventree_sales_order_report.html:32 #: report/templates/report/inventree_stock_location_report.html:105 -#: stock/serializers.py:708 +#: stock/serializers.py:710 msgid "Note" msgstr "Notat" -#: company/models.py:857 part/models.py:2010 +#: company/models.py:825 part/models.py:2003 msgid "base cost" msgstr "grunnkostnad" -#: company/models.py:858 part/models.py:2011 +#: company/models.py:826 part/models.py:2004 msgid "Minimum charge (e.g. stocking fee)" msgstr "Minimum betaling (f.eks. lageravgift)" -#: company/models.py:865 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 +#: company/models.py:833 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:797 stock/serializers.py:1475 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 #: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "Emballasje" -#: company/models.py:866 +#: company/models.py:834 msgid "Part packaging" msgstr "Delemballasje" -#: company/models.py:871 templates/js/translated/company.js:1651 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: company/models.py:839 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:311 #: templates/js/translated/purchase_order.js:841 #: templates/js/translated/purchase_order.js:1103 @@ -4095,35 +4162,35 @@ msgstr "Delemballasje" msgid "Pack Quantity" msgstr "Pakkeantall" -#: company/models.py:873 +#: company/models.py:841 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:892 part/models.py:2017 +#: company/models.py:860 part/models.py:2010 msgid "multiple" msgstr "flere" -#: company/models.py:893 +#: company/models.py:861 msgid "Order multiple" msgstr "Bestill flere" -#: company/models.py:905 +#: company/models.py:873 msgid "Quantity available from supplier" msgstr "Antall tilgjengelig fra leverandør" -#: company/models.py:911 +#: company/models.py:879 msgid "Availability Updated" msgstr "Tilgjengelighet oppdatert" -#: company/models.py:912 +#: company/models.py:880 msgid "Date of last update of availability data" msgstr "Dato for siste oppdatering av tilgjengelighetsdata" -#: company/serializers.py:163 +#: company/serializers.py:161 msgid "Default currency used for this supplier" msgstr "Standardvaluta brukt for denne leverandøren" -#: company/serializers.py:381 part/admin.py:126 +#: company/serializers.py:357 part/admin.py:126 #: part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1689 #: templates/js/translated/table_filters.js:355 @@ -4135,7 +4202,7 @@ msgstr "På lager" #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 #: templates/js/translated/model_renderers.js:312 -#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +#: templates/js/translated/part.js:815 templates/js/translated/part.js:1219 msgid "Inactive" msgstr "Inaktiv" @@ -4174,7 +4241,7 @@ msgstr "Slett Firma" #: report/templates/report/inventree_purchase_order_report.html:40 #: report/templates/report/inventree_sales_order_report.html:40 #: report/templates/report/inventree_test_report.html:84 -#: report/templates/report/inventree_test_report.html:163 +#: report/templates/report/inventree_test_report.html:162 msgid "Part image" msgstr "Bilde av del" @@ -4193,10 +4260,10 @@ msgstr "Last ned bilde fra URL" msgid "Delete image" msgstr "Slett bilde" -#: company/templates/company/company_base.html:92 order/models.py:940 -#: order/models.py:2068 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:148 stock/models.py:821 -#: stock/models.py:822 stock/serializers.py:1229 +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2032 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:819 +#: stock/models.py:820 stock/serializers.py:1225 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 @@ -4407,7 +4474,7 @@ msgstr "Ingen produsentinformasjon tilgjengelig" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:836 +#: part/admin.py:122 part/serializers.py:832 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4427,8 +4494,8 @@ msgstr "Parametere" msgid "New Parameter" msgstr "Nytt Parameter" -#: company/templates/company/manufacturer_part.html:206 -#: templates/js/translated/part.js:1422 +#: company/templates/company/manufacturer_part.html:196 +#: templates/js/translated/part.js:1423 msgid "Add Parameter" msgstr "" @@ -4456,15 +4523,6 @@ msgstr "Kontakter" msgid "Addresses" msgstr "Adresser" -#: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:452 -#: stock/models.py:779 stock/templates/stock/item_base.html:233 -#: templates/js/translated/company.js:1600 -#: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2280 -msgid "Supplier Part" -msgstr "Leverandørdel" - #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1526 msgid "Supplier part actions" @@ -4507,8 +4565,8 @@ msgid "No supplier information available" msgstr "Ingen leverandørinformasjon tilgjengelig" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:524 -#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: part/bom.py:311 part/serializers.py:519 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1787 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1850 #: templates/js/translated/purchase_order.js:2028 @@ -4520,12 +4578,12 @@ msgid "Supplier Part Stock" msgstr "Leverandørs lagerbeholdning" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:207 msgid "Create new stock item" msgstr "Opprett ny lagervare" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "Ny Lagervare" @@ -4557,15 +4615,15 @@ msgid "Update Part Availability" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:835 part/stocktake.py:223 +#: part/serializers.py:831 part/stocktake.py:224 #: part/templates/part/category.html:183 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:916 stock/serializers.py:1080 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:918 stock/serializers.py:1091 #: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:191 #: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1061 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:206 msgid "Stock Items" @@ -4592,10 +4650,6 @@ msgstr "Kunder" msgid "New Customer" msgstr "Ny Kunde" -#: company/views.py:51 templates/js/translated/search.js:192 -msgid "Companies" -msgstr "Firmaer" - #: company/views.py:52 msgid "New Company" msgstr "Nytt Firma" @@ -4616,7 +4670,7 @@ msgstr "" msgid "Connected" msgstr "" -#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: machine/machine_types/label_printer.py:235 order/api.py:1467 #: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "Ukjent" @@ -4705,7 +4759,7 @@ msgstr "" msgid "Config type" msgstr "" -#: order/admin.py:30 order/models.py:89 +#: order/admin.py:30 order/models.py:90 #: report/templates/report/inventree_purchase_order_report.html:31 #: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 @@ -4714,30 +4768,30 @@ msgstr "" msgid "Total Price" msgstr "Total pris" -#: order/api.py:161 order/serializers.py:91 +#: order/api.py:157 order/serializers.py:90 #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "Ordrestatus" -#: order/api.py:165 templates/js/translated/table_filters.js:194 +#: order/api.py:161 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "" -#: order/api.py:240 +#: order/api.py:236 msgid "No matching purchase order found" msgstr "Ingen samsvarende innkjøpsordre funnet" -#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 -#: order/models.py:1586 order/models.py:1700 order/models.py:1854 -#: order/models.py:2267 order/models.py:2318 +#: order/api.py:435 order/api.py:801 order/models.py:1395 order/models.py:1504 +#: order/models.py:1550 order/models.py:1664 order/models.py:1818 +#: order/models.py:2231 order/models.py:2282 #: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "Ordre" -#: order/api.py:441 order/api.py:838 +#: order/api.py:439 order/api.py:822 msgid "Order Complete" msgstr "" @@ -4745,13 +4799,13 @@ msgstr "" msgid "Order Pending" msgstr "" -#: order/api.py:1509 order/models.py:380 order/models.py:1432 -#: order/models.py:1541 order/templates/order/order_base.html:9 +#: order/api.py:1461 order/models.py:380 order/models.py:1396 +#: order/models.py:1505 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_purchase_order_report.html:14 -#: stock/serializers.py:119 stock/templates/stock/item_base.html:176 +#: stock/serializers.py:118 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/part.js:1746 templates/js/translated/pricing.js:804 #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1673 @@ -4759,8 +4813,8 @@ msgstr "" msgid "Purchase Order" msgstr "Innkjøpsordre" -#: order/api.py:1513 order/models.py:2017 order/models.py:2268 -#: order/models.py:2319 order/templates/order/return_order_base.html:9 +#: order/api.py:1465 order/models.py:1981 order/models.py:2232 +#: order/models.py:2283 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report.html:13 #: templates/js/translated/return_order.js:280 @@ -4768,15 +4822,15 @@ msgstr "Innkjøpsordre" msgid "Return Order" msgstr "Returordre" -#: order/models.py:90 +#: order/models.py:91 msgid "Total price for this order" msgstr "Total pris for denne ordren" -#: order/models.py:95 order/serializers.py:71 +#: order/models.py:96 order/serializers.py:70 msgid "Order Currency" msgstr "Ordrevaluta" -#: order/models.py:98 order/serializers.py:72 +#: order/models.py:99 order/serializers.py:71 msgid "Currency for this order (leave blank to use company default)" msgstr "Valuta for denne ordren (la stå tom for å bruke firmastandard)" @@ -4792,7 +4846,7 @@ msgstr "Ordrebeskrivelse (valgfritt)" msgid "Select project code for this order" msgstr "Velg prosjektkode for denne ordren" -#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 msgid "Link to external page" msgstr "Lenke til ekstern side" @@ -4816,11 +4870,11 @@ msgstr "Kontaktpunkt for denne ordren" msgid "Company address for this order" msgstr "Selskapsadresse for denne ordren" -#: order/models.py:464 order/models.py:929 +#: order/models.py:464 order/models.py:927 msgid "Order reference" msgstr "Ordrereferanse" -#: order/models.py:472 order/models.py:953 +#: order/models.py:472 order/models.py:951 msgid "Purchase order status" msgstr "Status for innkjøpsordre" @@ -4841,15 +4895,15 @@ msgstr "Leverandørens ordrereferanse" msgid "received by" msgstr "mottatt av" -#: order/models.py:514 order/models.py:2094 +#: order/models.py:514 order/models.py:2058 msgid "Issue Date" msgstr "Sendt dato" -#: order/models.py:515 order/models.py:2095 +#: order/models.py:515 order/models.py:2059 msgid "Date order was issued" msgstr "Dato bestillingen ble sendt" -#: order/models.py:522 order/models.py:2102 +#: order/models.py:522 order/models.py:2066 msgid "Date order was completed" msgstr "Dato ordre ble fullført" @@ -4861,98 +4915,94 @@ msgstr "Delleverandør må matche PO-leverandør" msgid "Quantity must be a positive number" msgstr "Mengde må være positiv" -#: order/models.py:941 +#: order/models.py:939 msgid "Company to which the items are being sold" msgstr "Firma som varene selges til" -#: order/models.py:964 order/models.py:2087 +#: order/models.py:962 order/models.py:2051 msgid "Customer Reference " msgstr "Kundereferanse " -#: order/models.py:965 order/models.py:2088 +#: order/models.py:963 order/models.py:2052 msgid "Customer order reference code" msgstr "Kundens ordrereferanse" -#: order/models.py:969 order/models.py:1707 +#: order/models.py:967 order/models.py:1671 #: templates/js/translated/sales_order.js:879 #: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "Forsendelsesdato" -#: order/models.py:978 +#: order/models.py:976 msgid "shipped by" msgstr "sendt av" -#: order/models.py:1027 -#, fuzzy -#| msgid "Build output is already completed" +#: order/models.py:1025 msgid "Order is already complete" -msgstr "Produksjonsartikkelen er allerede fullført" +msgstr "" -#: order/models.py:1030 -#, fuzzy -#| msgid "Order cannot be cancelled" +#: order/models.py:1028 msgid "Order is already cancelled" -msgstr "Ordren kan ikke kanselleres" +msgstr "" -#: order/models.py:1034 +#: order/models.py:1032 msgid "Only an open order can be marked as complete" msgstr "Kun en åpen ordre kan merkes som fullført" -#: order/models.py:1038 +#: order/models.py:1036 msgid "Order cannot be completed as there are incomplete shipments" msgstr "Bestillingen kan ikke fullføres da det finnes ufullstendige forsendelser" -#: order/models.py:1043 +#: order/models.py:1041 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:1309 +#: order/models.py:1273 msgid "Item quantity" msgstr "Antall" -#: order/models.py:1326 +#: order/models.py:1290 msgid "Line item reference" msgstr "Linjereferanse" -#: order/models.py:1333 +#: order/models.py:1297 msgid "Line item notes" msgstr "Linjenotater" -#: order/models.py:1345 +#: order/models.py:1309 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:1366 +#: order/models.py:1330 msgid "Line item description (optional)" msgstr "Linjeelementbeskrivelse (valgfritt)" -#: order/models.py:1372 +#: order/models.py:1336 msgid "Context" msgstr "Kontekst" -#: order/models.py:1373 +#: order/models.py:1337 msgid "Additional context for this line" msgstr "Ytterligere kontekst for denne linjen" -#: order/models.py:1383 +#: order/models.py:1347 msgid "Unit price" msgstr "Enhetspris" -#: order/models.py:1416 +#: order/models.py:1380 msgid "Supplier part must match supplier" msgstr "Delens leverandør må samsvare med leverandør" -#: order/models.py:1423 +#: order/models.py:1387 msgid "deleted" msgstr "slettet" -#: order/models.py:1451 +#: order/models.py:1415 msgid "Supplier part" msgstr "Leverandørdel" -#: order/models.py:1458 order/templates/order/order_base.html:196 -#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: order/models.py:1422 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1870 templates/js/translated/part.js:1902 #: templates/js/translated/purchase_order.js:1306 #: templates/js/translated/purchase_order.js:2169 #: templates/js/translated/return_order.js:763 @@ -4961,196 +5011,196 @@ msgstr "Leverandørdel" msgid "Received" msgstr "Mottatt" -#: order/models.py:1459 +#: order/models.py:1423 msgid "Number of items received" msgstr "Antall enheter mottatt" -#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 +#: order/models.py:1431 stock/models.py:938 stock/serializers.py:556 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "Innkjøpspris" -#: order/models.py:1468 +#: order/models.py:1432 msgid "Unit purchase price" msgstr "Enhet-innkjøpspris" -#: order/models.py:1483 +#: order/models.py:1447 msgid "Where does the Purchaser want this item to be stored?" msgstr "Hvor vil innkjøper at artikkelen skal lagres?" -#: order/models.py:1574 +#: order/models.py:1538 msgid "Virtual part cannot be assigned to a sales order" msgstr "Virtuell del kan ikke tildeles salgsordre" -#: order/models.py:1579 +#: order/models.py:1543 msgid "Only salable parts can be assigned to a sales order" msgstr "Kun salgbare deler kan tildeles en salgsordre" -#: order/models.py:1605 part/templates/part/part_pricing.html:107 +#: order/models.py:1569 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:1606 +#: order/models.py:1570 msgid "Unit sale price" msgstr "Enhets-salgspris" -#: order/models.py:1615 order/status_codes.py:43 +#: order/models.py:1579 order/status_codes.py:43 #: templates/js/translated/sales_order.js:1559 #: templates/js/translated/sales_order.js:1680 #: templates/js/translated/sales_order.js:1993 msgid "Shipped" msgstr "Sendt" -#: order/models.py:1616 +#: order/models.py:1580 msgid "Shipped quantity" msgstr "Sendt antall" -#: order/models.py:1708 +#: order/models.py:1672 msgid "Date of shipment" msgstr "Dato for forsendelse" -#: order/models.py:1714 templates/js/translated/sales_order.js:1072 +#: order/models.py:1678 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "Leveringsdato" -#: order/models.py:1715 +#: order/models.py:1679 msgid "Date of delivery of shipment" msgstr "Dato for levering av forsendelse" -#: order/models.py:1723 +#: order/models.py:1687 msgid "Checked By" msgstr "Sjekket Av" -#: order/models.py:1724 +#: order/models.py:1688 msgid "User who checked this shipment" msgstr "Brukeren som sjekket forsendelsen" -#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 -#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 +#: order/models.py:1695 order/models.py:1908 order/serializers.py:1342 +#: order/serializers.py:1452 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "Forsendelse" -#: order/models.py:1732 +#: order/models.py:1696 msgid "Shipment number" msgstr "Forsendelsesnummer" -#: order/models.py:1740 +#: order/models.py:1704 msgid "Tracking Number" msgstr "Sporingsnummer" -#: order/models.py:1741 +#: order/models.py:1705 msgid "Shipment tracking information" msgstr "Sporingsinformasjon for forsendelse" -#: order/models.py:1748 +#: order/models.py:1712 msgid "Invoice Number" msgstr "Fakturanummer" -#: order/models.py:1749 +#: order/models.py:1713 msgid "Reference number for associated invoice" msgstr "Referansenummer for tilknyttet faktura" -#: order/models.py:1769 +#: order/models.py:1733 msgid "Shipment has already been sent" msgstr "Forsendelsen er allerede sendt" -#: order/models.py:1772 +#: order/models.py:1736 msgid "Shipment has no allocated stock items" msgstr "Forsendelsen har ingen tildelte lagervarer" -#: order/models.py:1890 order/models.py:1892 +#: order/models.py:1854 order/models.py:1856 msgid "Stock item has not been assigned" msgstr "Lagervarer er ikke blitt tildelt" -#: order/models.py:1899 +#: order/models.py:1863 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:1902 +#: order/models.py:1866 msgid "Cannot allocate stock to a line without a part" msgstr "Kan ikke tildele lagerbeholdning til en linje uten en del" -#: order/models.py:1905 +#: order/models.py:1869 msgid "Allocation quantity cannot exceed stock quantity" msgstr "Tildelingsantall kan ikke overstige tilgjengelig lagerbeholdning" -#: order/models.py:1924 order/serializers.py:1231 +#: order/models.py:1888 order/serializers.py:1219 msgid "Quantity must be 1 for serialized stock item" msgstr "Antall må være 1 for serialisert lagervare" -#: order/models.py:1927 +#: order/models.py:1891 msgid "Sales order does not match shipment" msgstr "Salgsordre samsvarer ikke med forsendelse" -#: order/models.py:1928 plugin/base/barcodes/api.py:481 +#: order/models.py:1892 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "Forsendelsen samsvarer ikke med salgsordre" -#: order/models.py:1936 +#: order/models.py:1900 msgid "Line" msgstr "Linje" -#: order/models.py:1945 +#: order/models.py:1909 msgid "Sales order shipment reference" msgstr "Forsendelsesreferanse for salgsordre" -#: order/models.py:1958 order/models.py:2275 +#: order/models.py:1922 order/models.py:2239 #: templates/js/translated/return_order.js:721 msgid "Item" msgstr "Artikkel" -#: order/models.py:1959 +#: order/models.py:1923 msgid "Select stock item to allocate" msgstr "Velg lagervare å tildele" -#: order/models.py:1968 +#: order/models.py:1932 msgid "Enter stock allocation quantity" msgstr "Angi lagertildelingsmengde" -#: order/models.py:2057 +#: order/models.py:2021 msgid "Return Order reference" msgstr "Returordre-referanse" -#: order/models.py:2069 +#: order/models.py:2033 msgid "Company from which items are being returned" msgstr "Firmaet delen skal returneres fra" -#: order/models.py:2081 +#: order/models.py:2045 msgid "Return order status" msgstr "Returordrestatus" -#: order/models.py:2260 +#: order/models.py:2224 msgid "Only serialized items can be assigned to a Return Order" msgstr "Kun serialiserte artikler kan tilordnes en Returordre" -#: order/models.py:2276 +#: order/models.py:2240 msgid "Select item to return from customer" msgstr "Velg artikkel som skal returneres fra kunde" -#: order/models.py:2282 +#: order/models.py:2246 msgid "Received Date" msgstr "Mottatt Dato" -#: order/models.py:2283 +#: order/models.py:2247 msgid "The date this this return item was received" msgstr "Datoen denne returartikkelen ble mottatt" -#: order/models.py:2294 templates/js/translated/return_order.js:732 +#: order/models.py:2258 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "Utfall" -#: order/models.py:2295 +#: order/models.py:2259 msgid "Outcome for this line item" msgstr "Utfall for dette linjeelementet" -#: order/models.py:2302 +#: order/models.py:2266 msgid "Cost associated with return or repair for this line item" msgstr "Kostnad forbundet med retur eller reparasjon for dette linjeelementet" -#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/serializers.py:79 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_purchase_order_report.html:22 @@ -5159,163 +5209,163 @@ msgstr "Kostnad forbundet med retur eller reparasjon for dette linjeelementet" msgid "Line Items" msgstr "Linjeelementer" -#: order/serializers.py:84 +#: order/serializers.py:83 msgid "Completed Lines" msgstr "" -#: order/serializers.py:287 +#: order/serializers.py:286 msgid "Order cannot be cancelled" msgstr "Ordren kan ikke kanselleres" -#: order/serializers.py:302 order/serializers.py:1247 +#: order/serializers.py:301 order/serializers.py:1235 msgid "Allow order to be closed with incomplete line items" msgstr "Tillat ordre å lukkes med ufullstendige linjeelementer" -#: order/serializers.py:312 order/serializers.py:1257 +#: order/serializers.py:311 order/serializers.py:1245 msgid "Order has incomplete line items" msgstr "Ordren har ufullstendige linjeelementer" -#: order/serializers.py:440 +#: order/serializers.py:439 msgid "Order is not open" msgstr "Ordren er ikke åpen" -#: order/serializers.py:461 +#: order/serializers.py:460 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:463 +#: order/serializers.py:462 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:473 +#: order/serializers.py:472 msgid "Purchase price currency" msgstr "Innkjøpsvaluta" -#: order/serializers.py:479 +#: order/serializers.py:478 msgid "Merge Items" msgstr "" -#: order/serializers.py:481 +#: order/serializers.py:480 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:499 +#: order/serializers.py:498 msgid "Supplier part must be specified" msgstr "Leverandørdel må angis" -#: order/serializers.py:502 +#: order/serializers.py:501 msgid "Purchase order must be specified" msgstr "Innkjøpsordre må angis" -#: order/serializers.py:510 +#: order/serializers.py:509 msgid "Supplier must match purchase order" msgstr "Leverandør må samsvare med innkjøpsordre" -#: order/serializers.py:511 +#: order/serializers.py:510 msgid "Purchase order must match supplier" msgstr "Innkjøpsordre må samsvare med leverandør" -#: order/serializers.py:550 order/serializers.py:1325 +#: order/serializers.py:549 order/serializers.py:1313 msgid "Line Item" msgstr "Ordrelinje" -#: order/serializers.py:556 +#: order/serializers.py:555 msgid "Line item does not match purchase order" msgstr "Linjeelementet samsvarer ikke med innkjøpsordre" -#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1657 msgid "Select destination location for received items" msgstr "Velg lagerplassering for mottatte enheter" -#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:581 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "Angi batchkode for innkommende lagervarer" -#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:589 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "Angi serienummer for innkommende lagervarer" -#: order/serializers.py:601 templates/js/translated/barcode.js:52 +#: order/serializers.py:600 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Strekkode" -#: order/serializers.py:602 +#: order/serializers.py:601 msgid "Scanned barcode" msgstr "Skannet strekkode" -#: order/serializers.py:618 +#: order/serializers.py:617 msgid "Barcode is already in use" msgstr "Strekkode allerede i bruk" -#: order/serializers.py:642 +#: order/serializers.py:641 msgid "An integer quantity must be provided for trackable parts" msgstr "Heltallsverdi må angis for sporbare deler" -#: order/serializers.py:690 order/serializers.py:1696 +#: order/serializers.py:689 order/serializers.py:1673 msgid "Line items must be provided" msgstr "Linjeelementer må være oppgitt" -#: order/serializers.py:706 +#: order/serializers.py:705 msgid "Destination location must be specified" msgstr "Målplassering må angis" -#: order/serializers.py:717 +#: order/serializers.py:716 msgid "Supplied barcode values must be unique" msgstr "Angitte strekkodeverdier må være unike" -#: order/serializers.py:1074 +#: order/serializers.py:1062 msgid "Sale price currency" msgstr "Valuta for salgspris" -#: order/serializers.py:1134 +#: order/serializers.py:1122 msgid "No shipment details provided" msgstr "Ingen forsendelsesopplysninger oppgitt" -#: order/serializers.py:1195 order/serializers.py:1334 +#: order/serializers.py:1183 order/serializers.py:1322 msgid "Line item is not associated with this order" msgstr "Linjeelement er ikke knyttet til denne ordren" -#: order/serializers.py:1214 +#: order/serializers.py:1202 msgid "Quantity must be positive" msgstr "Mengden må være positiv" -#: order/serializers.py:1344 +#: order/serializers.py:1332 msgid "Enter serial numbers to allocate" msgstr "Skriv inn serienummer for å tildele" -#: order/serializers.py:1366 order/serializers.py:1472 +#: order/serializers.py:1354 order/serializers.py:1460 msgid "Shipment has already been shipped" msgstr "Forsendelsen er allerede sendt" -#: order/serializers.py:1369 order/serializers.py:1475 +#: order/serializers.py:1357 order/serializers.py:1463 msgid "Shipment is not associated with this order" msgstr "Forsendelsen er ikke knyttet til denne ordren" -#: order/serializers.py:1416 +#: order/serializers.py:1404 msgid "No match found for the following serial numbers" msgstr "Ingen treff funnet for følgende serienummer" -#: order/serializers.py:1423 +#: order/serializers.py:1411 msgid "The following serial numbers are already allocated" msgstr "Følgende serienummer er allerede tildelt" -#: order/serializers.py:1650 +#: order/serializers.py:1627 msgid "Return order line item" msgstr "Returordrelinje" -#: order/serializers.py:1656 +#: order/serializers.py:1633 msgid "Line item does not match return order" msgstr "Linjeelementet samsvarer ikke med returordre" -#: order/serializers.py:1659 +#: order/serializers.py:1636 msgid "Line item has already been received" msgstr "Linjeelementet er allerede mottatt" -#: order/serializers.py:1688 +#: order/serializers.py:1665 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:1766 +#: order/serializers.py:1743 msgid "Line price currency" msgstr "Valuta for linje" @@ -5645,7 +5695,7 @@ msgstr "Kundereferanse" #: 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/part.js:1073 #: templates/js/translated/purchase_order.js:1752 #: templates/js/translated/return_order.js:380 #: templates/js/translated/sales_order.js:891 @@ -5741,34 +5791,34 @@ 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:406 part/models.py:3964 part/stocktake.py:218 -#: stock/admin.py:153 +#: part/admin.py:39 part/admin.py:398 part/models.py:3944 part/stocktake.py:219 +#: stock/admin.py:152 msgid "Part ID" msgstr "Del-ID" -#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 -#: stock/admin.py:157 +#: part/admin.py:41 part/admin.py:405 part/models.py:3945 part/stocktake.py:220 +#: stock/admin.py:156 msgid "Part Name" msgstr "Delnavn" -#: part/admin.py:45 part/stocktake.py:220 +#: part/admin.py:45 part/stocktake.py:221 msgid "Part Description" msgstr "Delbeskrivelse" -#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:940 part/templates/part/part_base.html:269 #: report/templates/report/inventree_stock_location_report.html:103 -#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/part.js:1227 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 -#: report/models.py:161 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2346 +#: part/admin.py:50 part/models.py:949 part/templates/part/part_base.html:277 +#: report/models.py:162 templates/js/translated/part.js:1232 +#: templates/js/translated/part.js:2347 msgid "Revision" msgstr "Revisjon" -#: part/admin.py:53 part/admin.py:319 part/models.py:929 +#: part/admin.py:53 part/admin.py:319 part/models.py:922 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "Nøkkelord" @@ -5777,11 +5827,11 @@ msgstr "Nøkkelord" msgid "Part Image" msgstr "Del-bilde" -#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:222 msgid "Category ID" msgstr "Kategori-ID" -#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:223 msgid "Category Name" msgstr "Kategorinavn" @@ -5793,11 +5843,11 @@ msgstr "Standard plasserings-ID" msgid "Default Supplier ID" msgstr "Standard leverandør-ID" -#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:908 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "Variant av" -#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1036 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "Minimal lagerbeholdning" @@ -5805,26 +5855,26 @@ msgstr "Minimal lagerbeholdning" msgid "Used In" msgstr "Brukt i" -#: 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 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:235 +#: templates/js/translated/part.js:715 templates/js/translated/part.js:2153 msgid "Building" msgstr "Produseres" -#: part/admin.py:155 part/models.py:3123 part/models.py:3137 -#: templates/js/translated/part.js:969 +#: part/admin.py:155 part/models.py:3088 part/models.py:3102 +#: templates/js/translated/part.js:970 msgid "Minimum Cost" msgstr "Minimal kostnad" -#: part/admin.py:158 part/models.py:3130 part/models.py:3144 -#: templates/js/translated/part.js:979 +#: part/admin.py:158 part/models.py:3095 part/models.py:3109 +#: templates/js/translated/part.js:980 msgid "Maximum Cost" msgstr "Maksimal kostnad" -#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 msgid "Parent ID" msgstr "Overordnet ID" -#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 msgid "Parent Name" msgstr "Overordnet navn" @@ -5833,141 +5883,149 @@ msgstr "Overordnet navn" msgid "Category Path" msgstr "Sti til kategori" -#: part/admin.py:325 part/models.py:393 part/serializers.py:117 -#: part/serializers.py:272 part/serializers.py:391 +#: part/admin.py:325 part/models.py:396 part/serializers.py:124 +#: part/serializers.py:267 part/serializers.py:386 #: 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:2803 templates/js/translated/search.js:130 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "Deler" -#: part/admin.py:386 +#: part/admin.py:378 msgid "BOM Level" msgstr "BOM-nivå" -#: part/admin.py:389 +#: part/admin.py:381 msgid "BOM Item ID" msgstr "BOM artikkel-ID" -#: part/admin.py:399 +#: part/admin.py:391 msgid "Parent IPN" msgstr "Overodnet IPN" -#: part/admin.py:410 part/models.py:3966 +#: part/admin.py:402 part/models.py:3946 msgid "Part IPN" msgstr "Del -IPN" -#: part/admin.py:423 part/serializers.py:1278 +#: part/admin.py:415 part/serializers.py:1274 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "Minstepris" -#: part/admin.py:428 part/serializers.py:1293 +#: part/admin.py:420 part/serializers.py:1289 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "Makspris" -#: part/api.py:110 +#: part/api.py:104 msgid "Starred" msgstr "" -#: part/api.py:112 +#: part/api.py:106 msgid "Filter by starred categories" msgstr "" -#: part/api.py:129 stock/api.py:318 +#: part/api.py:123 stock/api.py:312 msgid "Depth" msgstr "" -#: part/api.py:129 +#: part/api.py:123 msgid "Filter by category depth" msgstr "" -#: part/api.py:147 stock/api.py:336 +#: part/api.py:141 stock/api.py:330 +msgid "Top Level" +msgstr "" + +#: part/api.py:143 +msgid "Filter by top-level categories" +msgstr "" + +#: part/api.py:156 stock/api.py:345 msgid "Cascade" msgstr "" -#: part/api.py:149 +#: part/api.py:158 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:169 +#: part/api.py:179 templates/js/translated/part.js:308 msgid "Parent" msgstr "" -#: part/api.py:171 +#: part/api.py:181 msgid "Filter by parent category" msgstr "" -#: part/api.py:204 +#: part/api.py:214 msgid "Exclude Tree" msgstr "" -#: part/api.py:206 +#: part/api.py:216 msgid "Exclude sub-categories under the specified category" msgstr "" -#: part/api.py:455 +#: part/api.py:449 msgid "Has Results" msgstr "" -#: part/api.py:622 +#: part/api.py:616 msgid "Incoming Purchase Order" msgstr "Innkommende innkjøpsordre" -#: part/api.py:640 +#: part/api.py:634 msgid "Outgoing Sales Order" msgstr "Utgående salgsordre" -#: part/api.py:656 +#: part/api.py:650 msgid "Stock produced by Build Order" msgstr "Lagervarer produsert av en produksjonsordre" -#: part/api.py:740 +#: part/api.py:734 msgid "Stock required for Build Order" msgstr "Lagervarer påkrevd for produksjonsordre" -#: part/api.py:887 +#: part/api.py:881 msgid "Valid" msgstr "Gyldig" -#: part/api.py:888 +#: part/api.py:882 msgid "Validate entire Bill of Materials" msgstr "Godkjenn hele Stykklisten" -#: part/api.py:894 +#: part/api.py:888 msgid "This option must be selected" msgstr "Dette alternativet må være valgt" -#: part/api.py:1111 +#: part/api.py:1105 msgid "BOM Valid" msgstr "" -#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 -#: part/serializers.py:406 part/serializers.py:1134 -#: part/templates/part/part_base.html:260 stock/api.py:781 +#: part/api.py:1508 part/models.py:932 part/models.py:3374 part/models.py:3889 +#: part/serializers.py:401 part/serializers.py:1130 +#: part/templates/part/part_base.html:260 stock/api.py:791 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2376 +#: templates/js/translated/part.js:2377 msgid "Category" msgstr "Kategori" -#: part/api.py:1803 +#: part/api.py:1796 msgid "Uses" msgstr "" -#: part/bom.py:170 part/models.py:102 part/models.py:982 +#: part/bom.py:170 part/models.py:104 part/models.py:975 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Standard plassering" -#: part/bom.py:171 part/serializers.py:837 +#: part/bom.py:171 part/serializers.py:833 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "Total lagerbeholdning" @@ -5976,1054 +6034,1066 @@ msgstr "Total lagerbeholdning" msgid "Input quantity for price calculation" msgstr "Sett inn antall for prisberegning" -#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 +#: part/models.py:85 part/models.py:3890 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Delkategori" -#: part/models.py:84 part/templates/part/category.html:136 +#: part/models.py:86 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "Delkategorier" -#: part/models.py:103 +#: part/models.py:105 msgid "Default location for parts in this category" msgstr "Standardplassering for deler i denne kategorien" -#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 +#: part/models.py:110 stock/models.py:174 templates/js/translated/part.js:2810 #: templates/js/translated/stock.js:2772 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "Strukturell" -#: part/models.py:110 +#: part/models.py:112 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:119 +#: part/models.py:121 msgid "Default keywords" msgstr "Standard nøkkelord" -#: part/models.py:120 +#: part/models.py:122 msgid "Default keywords for parts in this category" msgstr "Standard nøkkelord for deler i denne kategorien" -#: part/models.py:126 stock/models.py:85 stock/models.py:156 +#: part/models.py:128 stock/models.py:86 stock/models.py:157 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "Ikon" -#: part/models.py:127 stock/models.py:157 +#: part/models.py:129 stock/models.py:158 msgid "Icon (optional)" msgstr "Ikon (valgfritt)" -#: part/models.py:149 +#: part/models.py:151 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:482 +#: part/models.py:485 msgid "Cannot delete this part as it is still active" msgstr "" -#: part/models.py:489 +#: part/models.py:490 msgid "Cannot delete this part as it is used in an assembly" msgstr "" -#: part/models.py:527 +#: part/models.py:528 msgid "Invalid choice for parent part" msgstr "Ugyldig valg for overordnet del" -#: part/models.py:575 part/models.py:582 +#: part/models.py:576 part/models.py:583 #, 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:594 +#: part/models.py:595 #, 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:659 +#: part/models.py:658 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "IPN må samsvare med regex-mønsteret {pattern}" -#: part/models.py:739 +#: part/models.py:736 msgid "Stock item with this serial number already exists" msgstr "Lagervare med dette serienummeret eksisterer allerede" -#: part/models.py:844 +#: part/models.py:837 msgid "Duplicate IPN not allowed in part settings" msgstr "Duplikat av internt delnummer er ikke tillatt i delinnstillinger" -#: part/models.py:854 +#: part/models.py:847 msgid "Part with this Name, IPN and Revision already exists." msgstr "Del med dette Navnet, internt delnummer og Revisjon eksisterer allerede." -#: part/models.py:869 +#: part/models.py:862 msgid "Parts cannot be assigned to structural part categories!" msgstr "Deler kan ikke tilordnes strukturelle delkategorier!" -#: part/models.py:898 part/models.py:3965 +#: part/models.py:891 part/models.py:3945 msgid "Part name" msgstr "Delnavn" -#: part/models.py:903 +#: part/models.py:896 msgid "Is Template" msgstr "Er Mal" -#: part/models.py:904 +#: part/models.py:897 msgid "Is this part a template part?" msgstr "Er delen en maldel?" -#: part/models.py:914 +#: part/models.py:907 msgid "Is this part a variant of another part?" msgstr "Er delen en variant av en annen del?" -#: part/models.py:922 +#: part/models.py:915 msgid "Part description (optional)" msgstr "Delbeskrivelse (valgfritt)" -#: part/models.py:930 +#: part/models.py:923 msgid "Part keywords to improve visibility in search results" msgstr "Del-nøkkelord for å øke synligheten i søkeresultater" -#: part/models.py:940 +#: part/models.py:933 msgid "Part category" msgstr "Delkategori" -#: part/models.py:948 +#: part/models.py:941 msgid "Internal Part Number" msgstr "Internt delnummer" -#: part/models.py:955 +#: part/models.py:948 msgid "Part revision or version number" msgstr "Delrevisjon eller versjonsnummer" -#: part/models.py:980 +#: part/models.py:973 msgid "Where is this item normally stored?" msgstr "Hvor er denne artikkelen vanligvis lagret?" -#: part/models.py:1026 part/templates/part/part_base.html:376 +#: part/models.py:1019 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "Standard leverandør" -#: part/models.py:1027 +#: part/models.py:1020 msgid "Default supplier part" msgstr "Standard leverandørdel" -#: part/models.py:1034 +#: part/models.py:1027 msgid "Default Expiry" msgstr "Standard utløp" -#: part/models.py:1035 +#: part/models.py:1028 msgid "Expiry time (in days) for stock items of this part" msgstr "Utløpstid (i dager) for lagervarer av denne delen" -#: part/models.py:1044 +#: part/models.py:1037 msgid "Minimum allowed stock level" msgstr "Minimum tillatt lagernivå" -#: part/models.py:1053 +#: part/models.py:1046 msgid "Units of measure for this part" msgstr "Måleenheter for denne delen" -#: part/models.py:1060 +#: part/models.py:1053 msgid "Can this part be built from other parts?" msgstr "Kan denne delen bygges fra andre deler?" -#: part/models.py:1066 +#: part/models.py:1059 msgid "Can this part be used to build other parts?" msgstr "Kan denne delen brukes til å bygge andre deler?" -#: part/models.py:1072 +#: part/models.py:1065 msgid "Does this part have tracking for unique items?" msgstr "Har denne delen sporing av unike artikler?" -#: part/models.py:1078 +#: part/models.py:1071 msgid "Can this part be purchased from external suppliers?" msgstr "Kan denne delen kjøpes inn fra eksterne leverandører?" -#: part/models.py:1084 +#: part/models.py:1077 msgid "Can this part be sold to customers?" msgstr "Kan denne delen selges til kunder?" -#: part/models.py:1088 +#: part/models.py:1081 msgid "Is this part active?" msgstr "Er denne delen aktiv?" -#: part/models.py:1094 +#: part/models.py:1087 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:1100 +#: part/models.py:1093 msgid "BOM checksum" msgstr "Kontrollsum for BOM" -#: part/models.py:1101 +#: part/models.py:1094 msgid "Stored BOM checksum" msgstr "Lagret BOM-kontrollsum" -#: part/models.py:1109 +#: part/models.py:1102 msgid "BOM checked by" msgstr "Stykkliste sjekket av" -#: part/models.py:1114 +#: part/models.py:1107 msgid "BOM checked date" msgstr "Stykkliste sjekket dato" -#: part/models.py:1130 +#: part/models.py:1123 msgid "Creation User" msgstr "Opprettingsbruker" -#: part/models.py:1140 +#: part/models.py:1133 msgid "Owner responsible for this part" msgstr "Eier ansvarlig for denne delen" -#: part/models.py:1145 part/templates/part/part_base.html:339 +#: part/models.py:1138 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2470 +#: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "Siste lagertelling" -#: part/models.py:2018 +#: part/models.py:2011 msgid "Sell multiple" msgstr "Selg flere" -#: part/models.py:3037 +#: part/models.py:3002 msgid "Currency used to cache pricing calculations" msgstr "Valuta som brukes til å bufre prisberegninger" -#: part/models.py:3053 +#: part/models.py:3018 msgid "Minimum BOM Cost" msgstr "Minimal BOM-kostnad" -#: part/models.py:3054 +#: part/models.py:3019 msgid "Minimum cost of component parts" msgstr "Minste kostnad for komponentdeler" -#: part/models.py:3060 +#: part/models.py:3025 msgid "Maximum BOM Cost" msgstr "Maksimal BOM-kostnad" -#: part/models.py:3061 +#: part/models.py:3026 msgid "Maximum cost of component parts" msgstr "Maksimal kostnad for komponentdeler" -#: part/models.py:3067 +#: part/models.py:3032 msgid "Minimum Purchase Cost" msgstr "Minimal innkjøpskostnad" -#: part/models.py:3068 +#: part/models.py:3033 msgid "Minimum historical purchase cost" msgstr "Minimal historisk innkjøpskostnad" -#: part/models.py:3074 +#: part/models.py:3039 msgid "Maximum Purchase Cost" msgstr "Maksimal innkjøpskostnad" -#: part/models.py:3075 +#: part/models.py:3040 msgid "Maximum historical purchase cost" msgstr "Maksimal historisk innkjøpskostnad" -#: part/models.py:3081 +#: part/models.py:3046 msgid "Minimum Internal Price" msgstr "Minimal intern pris" -#: part/models.py:3082 +#: part/models.py:3047 msgid "Minimum cost based on internal price breaks" msgstr "Minimal kostnad basert på interne prisbrudd" -#: part/models.py:3088 +#: part/models.py:3053 msgid "Maximum Internal Price" msgstr "Maksimal intern pris" -#: part/models.py:3089 +#: part/models.py:3054 msgid "Maximum cost based on internal price breaks" msgstr "Maksimal kostnad basert på interne prisbrudd" -#: part/models.py:3095 +#: part/models.py:3060 msgid "Minimum Supplier Price" msgstr "Minimal leverandørpris" -#: part/models.py:3096 +#: part/models.py:3061 msgid "Minimum price of part from external suppliers" msgstr "Minimumspris for del fra eksterne leverandører" -#: part/models.py:3102 +#: part/models.py:3067 msgid "Maximum Supplier Price" msgstr "Maksimal leverandørpris" -#: part/models.py:3103 +#: part/models.py:3068 msgid "Maximum price of part from external suppliers" msgstr "Maksimalpris for del fra eksterne leverandører" -#: part/models.py:3109 +#: part/models.py:3074 msgid "Minimum Variant Cost" msgstr "Minimal Variantkostnad" -#: part/models.py:3110 +#: part/models.py:3075 msgid "Calculated minimum cost of variant parts" msgstr "Beregnet minimal kostnad for variantdeler" -#: part/models.py:3116 +#: part/models.py:3081 msgid "Maximum Variant Cost" msgstr "Maksimal Variantkostnad" -#: part/models.py:3117 +#: part/models.py:3082 msgid "Calculated maximum cost of variant parts" msgstr "Beregnet maksimal kostnad for variantdeler" -#: part/models.py:3124 +#: part/models.py:3089 msgid "Override minimum cost" msgstr "Overstyr minstekostnad" -#: part/models.py:3131 +#: part/models.py:3096 msgid "Override maximum cost" msgstr "Overstyr maksimal kostnad" -#: part/models.py:3138 +#: part/models.py:3103 msgid "Calculated overall minimum cost" msgstr "Beregnet samlet minimal kostnad" -#: part/models.py:3145 +#: part/models.py:3110 msgid "Calculated overall maximum cost" msgstr "Beregnet samlet maksimal kostnad" -#: part/models.py:3151 +#: part/models.py:3116 msgid "Minimum Sale Price" msgstr "Minimal salgspris" -#: part/models.py:3152 +#: part/models.py:3117 msgid "Minimum sale price based on price breaks" msgstr "Minimal salgspris basert på prisbrudd" -#: part/models.py:3158 +#: part/models.py:3123 msgid "Maximum Sale Price" msgstr "Maksimal Salgspris" -#: part/models.py:3159 +#: part/models.py:3124 msgid "Maximum sale price based on price breaks" msgstr "Maksimal salgspris basert på prisbrudd" -#: part/models.py:3165 +#: part/models.py:3130 msgid "Minimum Sale Cost" msgstr "Minimal Salgskostnad" -#: part/models.py:3166 +#: part/models.py:3131 msgid "Minimum historical sale price" msgstr "Minimal historisk salgspris" -#: part/models.py:3172 +#: part/models.py:3137 msgid "Maximum Sale Cost" msgstr "Maksimal Salgskostnad" -#: part/models.py:3173 +#: part/models.py:3138 msgid "Maximum historical sale price" msgstr "Maksimal historisk salgspris" -#: part/models.py:3192 +#: part/models.py:3157 msgid "Part for stocktake" msgstr "Del for varetelling" -#: part/models.py:3197 +#: part/models.py:3162 msgid "Item Count" msgstr "Antall" -#: part/models.py:3198 +#: part/models.py:3163 msgid "Number of individual stock entries at time of stocktake" msgstr "Antall individuelle lagerenheter på tidspunkt for varetelling" -#: part/models.py:3206 +#: part/models.py:3171 msgid "Total available stock at time of stocktake" msgstr "Total tilgjengelig lagerbeholdning på tidspunkt for varetelling" -#: part/models.py:3210 part/models.py:3293 +#: part/models.py:3175 part/models.py:3258 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report.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/part.js:1086 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "Dato" -#: part/models.py:3211 +#: part/models.py:3176 msgid "Date stocktake was performed" msgstr "Dato for utført lagertelling" -#: part/models.py:3219 +#: part/models.py:3184 msgid "Additional notes" msgstr "Flere notater" -#: part/models.py:3229 +#: part/models.py:3194 msgid "User who performed this stocktake" msgstr "Bruker som utførte denne lagertellingen" -#: part/models.py:3235 +#: part/models.py:3200 msgid "Minimum Stock Cost" msgstr "Minimal lagerkostnad" -#: part/models.py:3236 +#: part/models.py:3201 msgid "Estimated minimum cost of stock on hand" msgstr "Estimert minimal kostnad for lagerbeholdning" -#: part/models.py:3242 +#: part/models.py:3207 msgid "Maximum Stock Cost" msgstr "Maksimal lagerkostnad" -#: part/models.py:3243 +#: part/models.py:3208 msgid "Estimated maximum cost of stock on hand" msgstr "Estimert maksimal kostnad for lagerbeholdning" -#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3264 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "Rapport" -#: part/models.py:3300 +#: part/models.py:3265 msgid "Stocktake report file (generated internally)" msgstr "Lagertellingsrapportfil (generert internt)" -#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3270 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "Antall deler" -#: part/models.py:3306 +#: part/models.py:3271 msgid "Number of parts covered by stocktake" msgstr "Antall deler dekket av varetellingen" -#: part/models.py:3316 +#: part/models.py:3281 msgid "User who requested this stocktake report" msgstr "Bruker som forespurte varetellingsrapporten" -#: part/models.py:3478 +#: part/models.py:3423 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3489 +#: part/models.py:3444 part/models.py:3608 +msgid "Choices must be unique" +msgstr "Valg må være unike" + +#: part/models.py:3455 msgid "Test templates can only be created for trackable parts" msgstr "Testmaler kan bare bli opprettet for sporbare deler" -#: part/models.py:3500 +#: part/models.py:3466 msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3517 templates/js/translated/part.js:2878 +#: part/models.py:3483 templates/js/translated/part.js:2880 msgid "Test Name" msgstr "Testnavn" -#: part/models.py:3518 +#: part/models.py:3484 msgid "Enter a name for the test" msgstr "Angi et navn for testen" -#: part/models.py:3524 +#: part/models.py:3490 msgid "Test Key" msgstr "" -#: part/models.py:3525 +#: part/models.py:3491 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3532 +#: part/models.py:3498 msgid "Test Description" msgstr "Testbeskrivelse" -#: part/models.py:3533 +#: part/models.py:3499 msgid "Enter description for this test" msgstr "Legg inn beskrivelse for denne testen" -#: part/models.py:3537 report/models.py:208 -#: templates/js/translated/part.js:2899 +#: part/models.py:3503 report/models.py:209 +#: templates/js/translated/part.js:2901 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "Aktivert" -#: part/models.py:3537 +#: part/models.py:3503 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3542 templates/js/translated/part.js:2907 +#: part/models.py:3508 templates/js/translated/part.js:2909 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Påkrevd" -#: part/models.py:3543 +#: part/models.py:3509 msgid "Is this test required to pass?" msgstr "Er det påkrevd at denne testen bestås?" -#: part/models.py:3548 templates/js/translated/part.js:2915 +#: part/models.py:3514 templates/js/translated/part.js:2917 msgid "Requires Value" msgstr "Krever verdi" -#: part/models.py:3549 +#: part/models.py:3515 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:3554 templates/js/translated/part.js:2922 +#: part/models.py:3520 templates/js/translated/part.js:2924 msgid "Requires Attachment" msgstr "Krever vedlegg" -#: part/models.py:3556 +#: part/models.py:3522 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:3603 +#: part/models.py:3528 part/models.py:3667 templates/js/translated/part.js:1637 +msgid "Choices" +msgstr "Valg" + +#: part/models.py:3529 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3583 msgid "Checkbox parameters cannot have units" msgstr "Sjekkboksparameter kan ikke ha enheter" -#: part/models.py:3608 +#: part/models.py:3588 msgid "Checkbox parameters cannot have choices" msgstr "Sjekkboksparameter kan ikke ha valg" -#: part/models.py:3628 -msgid "Choices must be unique" -msgstr "Valg må være unike" - -#: part/models.py:3645 +#: part/models.py:3625 msgid "Parameter template name must be unique" msgstr "Navn på parametermal må være unikt" -#: part/models.py:3660 +#: part/models.py:3640 msgid "Parameter Name" msgstr "Parameternavn" -#: part/models.py:3667 +#: part/models.py:3647 msgid "Physical units for this parameter" msgstr "Fysisk enheter for denne parameteren" -#: part/models.py:3675 +#: part/models.py:3655 msgid "Parameter description" msgstr "Parameterbeskrivelse" -#: part/models.py:3681 templates/js/translated/part.js:1627 +#: part/models.py:3661 templates/js/translated/part.js:1628 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "Sjekkboks" -#: part/models.py:3682 +#: part/models.py:3662 msgid "Is this parameter a checkbox?" msgstr "Er dette parameteret en sjekkboks?" -#: part/models.py:3687 templates/js/translated/part.js:1636 -msgid "Choices" -msgstr "Valg" - -#: part/models.py:3688 +#: part/models.py:3668 msgid "Valid choices for this parameter (comma-separated)" msgstr "Gyldige valg for denne parameteren (kommaseparert)" -#: part/models.py:3765 +#: part/models.py:3745 msgid "Invalid choice for parameter value" msgstr "Ugyldig valg for parameterverdi" -#: part/models.py:3808 +#: part/models.py:3788 msgid "Parent Part" msgstr "Overordnet del" -#: part/models.py:3816 part/models.py:3917 part/models.py:3918 +#: part/models.py:3796 part/models.py:3897 part/models.py:3898 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "Parametermal" -#: part/models.py:3821 +#: part/models.py:3801 msgid "Data" msgstr "" -#: part/models.py:3822 +#: part/models.py:3802 msgid "Parameter Value" msgstr "Parameterverdi" -#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3904 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "Standardverdi" -#: part/models.py:3925 +#: part/models.py:3905 msgid "Default Parameter Value" msgstr "Standard Parameterverdi" -#: part/models.py:3963 +#: part/models.py:3943 msgid "Part ID or part name" msgstr "Del-ID eller delnavn" -#: part/models.py:3964 +#: part/models.py:3944 msgid "Unique part ID value" msgstr "Unik del-ID-verdi" -#: part/models.py:3966 +#: part/models.py:3946 msgid "Part IPN value" msgstr "Delens interne delnummerverdi" -#: part/models.py:3967 +#: part/models.py:3947 msgid "Level" msgstr "Nivå" -#: part/models.py:3967 +#: part/models.py:3947 msgid "BOM level" msgstr "BOM-nivå" -#: part/models.py:4057 +#: part/models.py:4037 msgid "Select parent part" msgstr "Velg overordnet del" -#: part/models.py:4067 +#: part/models.py:4047 msgid "Sub part" msgstr "Underordnet del" -#: part/models.py:4068 +#: part/models.py:4048 msgid "Select part to be used in BOM" msgstr "Velg del som skal brukes i BOM" -#: part/models.py:4079 +#: part/models.py:4059 msgid "BOM quantity for this BOM item" msgstr "BOM-antall for denne BOM-artikkelen" -#: part/models.py:4085 +#: part/models.py:4065 msgid "This BOM item is optional" msgstr "Denne BOM-artikkelen er valgfri" -#: part/models.py:4091 +#: part/models.py:4071 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:4098 part/templates/part/upload_bom.html:55 +#: part/models.py:4078 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Svinn" -#: part/models.py:4099 +#: part/models.py:4079 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "Forventet produksjonssvinn (absolutt eller prosent)" -#: part/models.py:4106 +#: part/models.py:4086 msgid "BOM item reference" msgstr "BOM-artikkelreferanse" -#: part/models.py:4114 +#: part/models.py:4094 msgid "BOM item notes" msgstr "BOM-artikkelnotater" -#: part/models.py:4120 +#: part/models.py:4100 msgid "Checksum" msgstr "Kontrollsum" -#: part/models.py:4121 +#: part/models.py:4101 msgid "BOM line checksum" msgstr "BOM-linje kontrollsum" -#: part/models.py:4126 templates/js/translated/table_filters.js:174 +#: part/models.py:4106 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "Godkjent" -#: part/models.py:4127 +#: part/models.py:4107 msgid "This BOM item has been validated" msgstr "Denne BOM-artikkelen er godkjent" -#: part/models.py:4132 part/templates/part/upload_bom.html:57 +#: part/models.py:4112 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:4133 +#: part/models.py:4113 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "Denne BOM-artikkelen er arvet fra stykkliste for variantdeler" -#: part/models.py:4138 part/templates/part/upload_bom.html:56 +#: part/models.py:4118 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "Tillat Varianter" -#: part/models.py:4139 +#: part/models.py:4119 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:4224 stock/models.py:664 +#: part/models.py:4204 stock/models.py:662 msgid "Quantity must be integer value for trackable parts" msgstr "Antall må være heltallsverdi for sporbare deler" -#: part/models.py:4234 part/models.py:4236 +#: part/models.py:4214 part/models.py:4216 msgid "Sub part must be specified" msgstr "Underordnet del må angis" -#: part/models.py:4376 +#: part/models.py:4354 msgid "BOM Item Substitute" msgstr "BOM-artikkel erstatning" -#: part/models.py:4397 +#: part/models.py:4375 msgid "Substitute part cannot be the same as the master part" msgstr "Erstatningsdel kan ikke være samme som hoveddelen" -#: part/models.py:4410 +#: part/models.py:4388 msgid "Parent BOM item" msgstr "Overordnet BOM-artikkel" -#: part/models.py:4418 +#: part/models.py:4396 msgid "Substitute part" msgstr "Erstatningsdel" -#: part/models.py:4434 +#: part/models.py:4412 msgid "Part 1" msgstr "Del 1" -#: part/models.py:4442 +#: part/models.py:4420 msgid "Part 2" msgstr "Del 2" -#: part/models.py:4443 +#: part/models.py:4421 msgid "Select Related Part" msgstr "Velg relatert del" -#: part/models.py:4462 +#: part/models.py:4440 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:4467 +#: part/models.py:4445 msgid "Duplicate relationship already exists" msgstr "Duplikatforhold eksisterer allerede" -#: part/serializers.py:119 part/serializers.py:141 +#: part/serializers.py:118 +msgid "Parent Category" +msgstr "" + +#: part/serializers.py:119 templates/js/translated/part.js:309 +msgid "Parent part category" +msgstr "" + +#: part/serializers.py:126 part/serializers.py:148 #: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "Underkategorier" -#: part/serializers.py:185 +#: part/serializers.py:180 msgid "Results" msgstr "" -#: part/serializers.py:186 +#: part/serializers.py:181 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 +#: part/serializers.py:205 part/serializers.py:223 stock/serializers.py:562 msgid "Purchase currency of this stock item" msgstr "Innkjøpsvaluta for lagervaren" -#: part/serializers.py:273 +#: part/serializers.py:268 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:397 +#: part/serializers.py:392 msgid "No parts selected" msgstr "Ingen deler valgt" -#: part/serializers.py:407 +#: part/serializers.py:402 msgid "Select category" msgstr "Velg kategori" -#: part/serializers.py:442 +#: part/serializers.py:437 msgid "Original Part" msgstr "Original Del" -#: part/serializers.py:443 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "Velg original del å duplisere" -#: part/serializers.py:448 +#: part/serializers.py:443 msgid "Copy Image" msgstr "Kopier Bilde" -#: part/serializers.py:449 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "Kopier bilde fra originaldel" -#: part/serializers.py:455 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "Kopier Stykkliste" -#: part/serializers.py:456 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "Kopier stykkliste fra original del" -#: part/serializers.py:462 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "Kopier parametere" -#: part/serializers.py:463 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "Kopier parameterdata fra originaldel" -#: part/serializers.py:469 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "Kopier notater" -#: part/serializers.py:470 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "Kopier notater fra originaldel" -#: part/serializers.py:488 +#: part/serializers.py:483 msgid "Initial Stock Quantity" msgstr "Innledende lagerbeholdning" -#: part/serializers.py:490 +#: part/serializers.py:485 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "Angi initiell lagermengde for denne delen. Hvis antall er null, er ingen lagerbeholdning lagt til." -#: part/serializers.py:497 +#: part/serializers.py:492 msgid "Initial Stock Location" msgstr "Innledende lagerplassering" -#: part/serializers.py:498 +#: part/serializers.py:493 msgid "Specify initial stock location for this Part" msgstr "Angi initiell lagerplasering for denne delen" -#: part/serializers.py:515 +#: part/serializers.py:510 msgid "Select supplier (or leave blank to skip)" msgstr "Velg leverandør (eller la stå tom for å hoppe over)" -#: part/serializers.py:531 +#: part/serializers.py:526 msgid "Select manufacturer (or leave blank to skip)" msgstr "Velg produsent (eller la stå tom for å hoppe over)" -#: part/serializers.py:541 +#: part/serializers.py:536 msgid "Manufacturer part number" msgstr "Produsentens delenummer" -#: part/serializers.py:548 +#: part/serializers.py:543 msgid "Selected company is not a valid supplier" msgstr "Valgt firma er ikke en gyldig leverandør" -#: part/serializers.py:557 +#: part/serializers.py:552 msgid "Selected company is not a valid manufacturer" msgstr "Valgt firma er ikke en gyldig produsent" -#: part/serializers.py:568 +#: part/serializers.py:563 msgid "Manufacturer part matching this MPN already exists" msgstr "Produsentdel som matcher dette MPN-et, finnes allerede" -#: part/serializers.py:575 +#: part/serializers.py:570 msgid "Supplier part matching this SKU already exists" msgstr "Leverandørdel som matcher denne SKU-en, finnes allerede" -#: part/serializers.py:838 +#: part/serializers.py:834 msgid "External Stock" msgstr "" -#: part/serializers.py:840 +#: part/serializers.py:836 msgid "Unallocated Stock" msgstr "" -#: part/serializers.py:843 +#: part/serializers.py:839 msgid "Variant Stock" msgstr "" -#: part/serializers.py:873 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:471 +#: part/serializers.py:869 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:472 msgid "Duplicate Part" msgstr "Dupliser del" -#: part/serializers.py:874 +#: part/serializers.py:870 msgid "Copy initial data from another Part" msgstr "Kopier innledende data fra en annen del" -#: part/serializers.py:880 templates/js/translated/part.js:102 +#: part/serializers.py:876 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "Innledende lagerbeholdning" -#: part/serializers.py:881 +#: part/serializers.py:877 msgid "Create Part with initial stock quantity" msgstr "Lag en del med innledende lagermengde" -#: part/serializers.py:887 +#: part/serializers.py:883 msgid "Supplier Information" msgstr "Leverandøropplysninger" -#: part/serializers.py:888 +#: part/serializers.py:884 msgid "Add initial supplier information for this part" msgstr "Legg til innledende leverandørinformasjon for denne delen" -#: part/serializers.py:896 +#: part/serializers.py:892 msgid "Copy Category Parameters" msgstr "Kopier kategoriparametre" -#: part/serializers.py:897 +#: part/serializers.py:893 msgid "Copy parameter templates from selected part category" msgstr "Kopier parametermaler fra valgt delkategori" -#: part/serializers.py:902 +#: part/serializers.py:898 msgid "Existing Image" msgstr "Eksisterende bilde" -#: part/serializers.py:903 +#: part/serializers.py:899 msgid "Filename of an existing part image" msgstr "Filnavn for et eksisterende del-bilde" -#: part/serializers.py:920 +#: part/serializers.py:916 msgid "Image file does not exist" msgstr "Bildefilen finnes ikke" -#: part/serializers.py:1126 +#: part/serializers.py:1122 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:1136 +#: part/serializers.py:1132 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:1146 +#: part/serializers.py:1142 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:1152 +#: part/serializers.py:1148 msgid "Exclude External Stock" msgstr "Ekskluder ekstern lagerbeholdning" -#: part/serializers.py:1153 +#: part/serializers.py:1149 msgid "Exclude stock items in external locations" msgstr "Ekskluder lagervarer i eksterne lokasjoner" -#: part/serializers.py:1158 +#: part/serializers.py:1154 msgid "Generate Report" msgstr "Generer rapport" -#: part/serializers.py:1159 +#: part/serializers.py:1155 msgid "Generate report file containing calculated stocktake data" msgstr "Genererer rapport som inneholder beregnede lagerdata" -#: part/serializers.py:1164 +#: part/serializers.py:1160 msgid "Update Parts" msgstr "Oppdater deler" -#: part/serializers.py:1165 +#: part/serializers.py:1161 msgid "Update specified parts with calculated stocktake data" msgstr "Oppdater spesifiserte deler med beregnede lagerbeholdningsdata" -#: part/serializers.py:1173 +#: part/serializers.py:1169 msgid "Stocktake functionality is not enabled" msgstr "Lagerbeholdningsfunksjonalitet er ikke aktivert" -#: part/serializers.py:1279 +#: part/serializers.py:1275 msgid "Override calculated value for minimum price" msgstr "Overstyr beregnet verdi for minimumspris" -#: part/serializers.py:1286 +#: part/serializers.py:1282 msgid "Minimum price currency" msgstr "Valuta for minstepris" -#: part/serializers.py:1294 +#: part/serializers.py:1290 msgid "Override calculated value for maximum price" msgstr "Overstyr beregnet verdi for maksimal pris" -#: part/serializers.py:1301 +#: part/serializers.py:1297 msgid "Maximum price currency" msgstr "Valuta for maksimal pris" -#: part/serializers.py:1330 +#: part/serializers.py:1326 msgid "Update" msgstr "Oppdater" -#: part/serializers.py:1331 +#: part/serializers.py:1327 msgid "Update pricing for this part" msgstr "Oppdater priser for denne delen" -#: part/serializers.py:1354 +#: part/serializers.py:1350 #, 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:1361 +#: part/serializers.py:1357 msgid "Minimum price must not be greater than maximum price" msgstr "Minsteprisen kan ikke være større enn maksimal pris" -#: part/serializers.py:1364 +#: part/serializers.py:1360 msgid "Maximum price must not be less than minimum price" msgstr "Maksimal pris kan ikke være mindre enn minstepris" -#: part/serializers.py:1731 +#: part/serializers.py:1727 msgid "Select part to copy BOM from" msgstr "Velg del å kopiere BOM fra" -#: part/serializers.py:1739 +#: part/serializers.py:1735 msgid "Remove Existing Data" msgstr "Fjern eksisterende data" -#: part/serializers.py:1740 +#: part/serializers.py:1736 msgid "Remove existing BOM items before copying" msgstr "Fjern eksisterende BOM-artikler før kopiering" -#: part/serializers.py:1745 +#: part/serializers.py:1741 msgid "Include Inherited" msgstr "Inkluder arvede" -#: part/serializers.py:1746 +#: part/serializers.py:1742 msgid "Include BOM items which are inherited from templated parts" msgstr "Inkluder BOM-artikler som er arvet fra maldeler" -#: part/serializers.py:1751 +#: part/serializers.py:1747 msgid "Skip Invalid Rows" msgstr "Hopp over ugyldige rader" -#: part/serializers.py:1752 +#: part/serializers.py:1748 msgid "Enable this option to skip invalid rows" msgstr "Aktiver dette alternativet for å hoppe over ugyldige rader" -#: part/serializers.py:1757 +#: part/serializers.py:1753 msgid "Copy Substitute Parts" msgstr "Kopier erstatningsdeler" -#: part/serializers.py:1758 +#: part/serializers.py:1754 msgid "Copy substitute parts when duplicate BOM items" msgstr "Kopier erstatningsdeler når BOM-elementer dupliseres" -#: part/serializers.py:1792 +#: part/serializers.py:1788 msgid "Clear Existing BOM" msgstr "Nullstill eksisterende BOM" -#: part/serializers.py:1793 +#: part/serializers.py:1789 msgid "Delete existing BOM items before uploading" msgstr "Fjern eksisterende BOM-artikler før opplastning" -#: part/serializers.py:1823 +#: part/serializers.py:1819 msgid "No part column specified" msgstr "Ingen del-kolonne angitt" -#: part/serializers.py:1867 +#: part/serializers.py:1863 msgid "Multiple matching parts found" msgstr "Flere samsvarende deler funnet" -#: part/serializers.py:1870 +#: part/serializers.py:1866 msgid "No matching part found" msgstr "Ingen samsvarende del funnet" -#: part/serializers.py:1873 +#: part/serializers.py:1869 msgid "Part is not designated as a component" msgstr "Delen er ikke betegnet som en komponent" -#: part/serializers.py:1882 +#: part/serializers.py:1878 msgid "Quantity not provided" msgstr "Antall ikke oppgitt" -#: part/serializers.py:1890 +#: part/serializers.py:1886 msgid "Invalid quantity" msgstr "Ugyldig antall" -#: part/serializers.py:1911 +#: part/serializers.py:1907 msgid "At least one BOM item is required" msgstr "Minst en BOM-artikkel kreves" -#: part/stocktake.py:224 templates/js/translated/part.js:1066 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: part/stocktake.py:225 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "Totalt Antall" -#: part/stocktake.py:225 +#: part/stocktake.py:226 msgid "Total Cost Min" msgstr "Total Kostnad Min" -#: part/stocktake.py:226 +#: part/stocktake.py:227 msgid "Total Cost Max" msgstr "Total Kostnad Max" -#: part/stocktake.py:284 +#: part/stocktake.py:285 msgid "Stocktake Report Available" msgstr "Lagertellingsrapport tilgjengelig" -#: part/stocktake.py:285 +#: part/stocktake.py:286 msgid "A new stocktake report is available for download" msgstr "En ny lagertellingsrapport er tilgjengelig for nedlasting" @@ -7157,7 +7227,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:251 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" @@ -7257,15 +7327,15 @@ msgstr "Deleleverandører" msgid "Part Manufacturers" msgstr "Deleprodusenter" -#: part/templates/part/detail.html:655 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:663 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:748 +#: part/templates/part/detail.html:750 msgid "Add Test Result Template" msgstr "" @@ -7346,7 +7416,7 @@ msgstr "Tell delbeholdning" msgid "Transfer part stock" msgstr "Overfør delbeholdning" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" msgstr "Delhandlinger" @@ -7418,7 +7488,7 @@ msgid "Minimum stock level" msgstr "Minimalt lagerbeholdningsnivå" #: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 -#: templates/js/translated/part.js:1264 templates/js/translated/part.js:2443 +#: templates/js/translated/part.js:1265 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7511,8 +7581,8 @@ msgstr "Varianter" #: 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:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/part.js:1243 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 #: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "Lagerbeholdning" @@ -7555,7 +7625,7 @@ msgstr "Overstyr delprising" msgid "Edit" msgstr "Rediger" -#: part/templates/part/prices.html:28 stock/admin.py:247 +#: part/templates/part/prices.html:28 stock/admin.py:251 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 @@ -7632,8 +7702,8 @@ msgstr "" #: part/templates/part/stock_count.html:7 #: templates/js/translated/model_renderers.js:227 -#: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 -#: templates/js/translated/part.js:2142 +#: templates/js/translated/part.js:705 templates/js/translated/part.js:2141 +#: templates/js/translated/part.js:2143 msgid "No Stock" msgstr "Ingen lagerbeholdning" @@ -8005,7 +8075,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:307 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:308 msgid "Landscape" msgstr "Liggende" @@ -8118,62 +8188,62 @@ msgstr "" msgid "Uninstalled plugin successfully" msgstr "" -#: plugin/models.py:35 +#: plugin/models.py:36 msgid "Plugin Configuration" msgstr "Konfigurasjon av utvidelse" -#: plugin/models.py:36 +#: plugin/models.py:37 msgid "Plugin Configurations" msgstr "Konfigurasjon av utvidelser" -#: plugin/models.py:42 users/models.py:100 +#: plugin/models.py:43 users/models.py:100 msgid "Key" msgstr "Nøkkel" -#: plugin/models.py:43 +#: plugin/models.py:44 msgid "Key of plugin" msgstr "Utvidelsens \"Key\"" -#: plugin/models.py:51 +#: plugin/models.py:52 msgid "PluginName of the plugin" msgstr "Navn på utvidelsen" -#: plugin/models.py:58 plugin/serializers.py:90 +#: plugin/models.py:59 plugin/serializers.py:90 msgid "Package Name" msgstr "Pakkenavn" -#: plugin/models.py:60 +#: plugin/models.py:61 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:65 +#: plugin/models.py:66 msgid "Is the plugin active" msgstr "Er utvidelsen aktiv" -#: plugin/models.py:156 templates/js/translated/table_filters.js:370 +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "Installert" -#: plugin/models.py:165 +#: plugin/models.py:166 msgid "Sample plugin" msgstr "Eksempel-utvidelse" -#: plugin/models.py:173 +#: plugin/models.py:174 msgid "Builtin Plugin" msgstr "Innebygd utvidelse" -#: plugin/models.py:181 +#: plugin/models.py:182 msgid "Package Plugin" msgstr "" -#: plugin/models.py:205 report/models.py:474 +#: plugin/models.py:220 report/models.py:475 #: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "Utvidelse" -#: plugin/models.py:252 +#: plugin/models.py:267 msgid "Method" msgstr "Metode" @@ -8181,17 +8251,17 @@ msgstr "Metode" msgid "No author found" msgstr "Ingen forfatter funnet" -#: plugin/registry.py:597 +#: plugin/registry.py:534 #, 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:600 +#: plugin/registry.py:537 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "Utvidelsen krever minst versjon {v}" -#: plugin/registry.py:602 +#: plugin/registry.py:539 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "Utvidelsen krever maks versjon {v}" @@ -8306,23 +8376,19 @@ msgstr "Aktivér utvidelse" msgid "Activate this plugin" msgstr "Aktivér denne utvidelsen" -#: plugin/serializers.py:234 +#: plugin/serializers.py:226 msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:235 +#: plugin/serializers.py:227 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:77 +#: report/api.py:88 msgid "No valid objects provided to template" msgstr "Ingen gyldige objekter angitt for mal" -#: report/api.py:89 report/serializers.py:53 -msgid "Model Type" -msgstr "" - -#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/api.py:103 report/models.py:439 report/serializers.py:98 #: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 #: templates/js/translated/return_order.js:353 #: templates/js/translated/sales_order.js:887 @@ -8330,176 +8396,176 @@ msgstr "" msgid "Items" msgstr "" -#: report/api.py:168 +#: report/api.py:180 msgid "Plugin not found" msgstr "" -#: report/api.py:170 +#: report/api.py:182 msgid "Plugin is not active" msgstr "" -#: report/api.py:172 +#: report/api.py:184 msgid "Plugin does not support label printing" msgstr "" -#: report/api.py:221 +#: report/api.py:233 msgid "Invalid label dimensions" msgstr "" -#: report/api.py:236 report/api.py:316 +#: report/api.py:248 report/api.py:329 msgid "No valid items provided to template" msgstr "" -#: report/api.py:271 +#: report/api.py:283 msgid "Error printing label" msgstr "" -#: report/api.py:362 report/api.py:398 +#: report/api.py:375 report/api.py:411 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "Malfil '{template}' mangler eller eksisterer ikke" -#: report/helpers.py:41 +#: report/helpers.py:43 msgid "A4" msgstr "" -#: report/helpers.py:42 +#: report/helpers.py:44 msgid "A3" msgstr "" -#: report/helpers.py:43 +#: report/helpers.py:45 msgid "Legal" msgstr "" -#: report/helpers.py:44 +#: report/helpers.py:46 msgid "Letter" msgstr "" -#: report/models.py:118 +#: report/models.py:119 msgid "Template file with this name already exists" msgstr "" -#: report/models.py:150 +#: report/models.py:151 msgid "Template name" msgstr "Malnavn" -#: report/models.py:156 +#: report/models.py:157 msgid "Template description" msgstr "" -#: report/models.py:162 +#: report/models.py:163 msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Filename Pattern" msgstr "Filnavnmønster" -#: report/models.py:203 +#: report/models.py:204 msgid "Pattern for generating filenames" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Template is enabled" msgstr "" -#: report/models.py:214 +#: report/models.py:215 msgid "Target model type for template" msgstr "" -#: report/models.py:234 +#: report/models.py:235 msgid "Filters" msgstr "Filtre" -#: report/models.py:235 +#: report/models.py:236 msgid "Template query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:294 report/models.py:361 +#: report/models.py:295 report/models.py:362 msgid "Template file" msgstr "" -#: report/models.py:302 +#: report/models.py:303 msgid "Page size for PDF reports" msgstr "Sidestørrelse for PDF-rapporter" -#: report/models.py:308 +#: report/models.py:309 msgid "Render report in landscape orientation" msgstr "Generer rapport i landskapsorientering" -#: report/models.py:367 +#: report/models.py:368 msgid "Width [mm]" msgstr "Bredde [mm]" -#: report/models.py:368 +#: report/models.py:369 msgid "Label width, specified in mm" msgstr "Etikettbredde, spesifisert i mm" -#: report/models.py:374 +#: report/models.py:375 msgid "Height [mm]" msgstr "Høyde [mm]" -#: report/models.py:375 +#: report/models.py:376 msgid "Label height, specified in mm" msgstr "Etiketthøyde, spesifisert i mm" -#: report/models.py:438 +#: report/models.py:439 msgid "Number of items to process" msgstr "" -#: report/models.py:444 +#: report/models.py:445 msgid "Report generation is complete" msgstr "" -#: report/models.py:448 templates/js/translated/build.js:2177 +#: report/models.py:449 templates/js/translated/build.js:2177 msgid "Progress" msgstr "" -#: report/models.py:448 +#: report/models.py:449 msgid "Report generation progress" msgstr "" -#: report/models.py:456 +#: report/models.py:457 msgid "Report Template" msgstr "" -#: report/models.py:463 report/models.py:486 +#: report/models.py:464 report/models.py:487 msgid "Output File" msgstr "" -#: report/models.py:464 report/models.py:487 +#: report/models.py:465 report/models.py:488 msgid "Generated output file" msgstr "" -#: report/models.py:475 +#: report/models.py:476 msgid "Label output plugin" msgstr "" -#: report/models.py:479 +#: report/models.py:480 msgid "Label Template" msgstr "" -#: report/models.py:502 +#: report/models.py:503 msgid "Snippet" msgstr "Snutt" -#: report/models.py:503 +#: report/models.py:504 msgid "Report snippet file" msgstr "Rapportsnuttfil" -#: report/models.py:510 +#: report/models.py:511 msgid "Snippet file description" msgstr "Filbeskrivelse for snutt" -#: report/models.py:528 +#: report/models.py:529 msgid "Asset" msgstr "Ressurs" -#: report/models.py:529 +#: report/models.py:530 msgid "Report asset file" msgstr "Rapportressursfil" -#: report/models.py:536 +#: report/models.py:537 msgid "Asset file description" msgstr "Ressursfilbeskrivelse" @@ -8572,8 +8638,8 @@ msgid "Total" msgstr "" #: report/templates/report/inventree_return_order_report.html:25 -#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 -#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:824 +#: stock/serializers.py:149 stock/templates/stock/item_base.html:311 #: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 #: templates/js/translated/build.js:2355 #: templates/js/translated/model_renderers.js:230 @@ -8603,32 +8669,32 @@ msgstr "Testresultater" msgid "Test" msgstr "" -#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2412 msgid "Result" msgstr "Resultat" -#: report/templates/report/inventree_test_report.html:130 +#: report/templates/report/inventree_test_report.html:129 msgid "Pass" msgstr "Bestått" -#: report/templates/report/inventree_test_report.html:132 +#: report/templates/report/inventree_test_report.html:131 msgid "Fail" msgstr "Mislykket" -#: report/templates/report/inventree_test_report.html:139 +#: report/templates/report/inventree_test_report.html:138 msgid "No result (required)" msgstr "Ingen resultat (obligatorisk)" -#: report/templates/report/inventree_test_report.html:141 +#: report/templates/report/inventree_test_report.html:140 msgid "No result" msgstr "Ingen resultat" -#: report/templates/report/inventree_test_report.html:154 +#: report/templates/report/inventree_test_report.html:153 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "Installerte artikler" -#: report/templates/report/inventree_test_report.html:168 stock/admin.py:162 +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 #: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 #: templates/js/translated/stock.js:3110 msgid "Serial" @@ -8650,654 +8716,670 @@ msgstr "part_image-taggen krever en Part-instans" msgid "company_image tag requires a Company instance" msgstr "company_image-taggen krever en Company-instans" -#: stock/admin.py:52 stock/admin.py:172 +#: stock/admin.py:51 stock/admin.py:171 msgid "Location ID" msgstr "Plasserings-ID" -#: stock/admin.py:54 stock/admin.py:176 +#: stock/admin.py:53 stock/admin.py:175 msgid "Location Name" msgstr "Plasseringsnavn" -#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/admin.py:63 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "Plasserings-sti" -#: stock/admin.py:149 +#: stock/admin.py:148 msgid "Stock Item ID" msgstr "Lagervare-ID" -#: stock/admin.py:168 +#: stock/admin.py:167 msgid "Status Code" msgstr "Statuskode" -#: stock/admin.py:180 +#: stock/admin.py:179 msgid "Supplier Part ID" msgstr "Leverandørdel-ID" -#: stock/admin.py:185 +#: stock/admin.py:184 +msgid "Supplier Part SKU" +msgstr "" + +#: stock/admin.py:189 msgid "Supplier ID" msgstr "Leverandør-ID" -#: stock/admin.py:191 +#: stock/admin.py:195 msgid "Supplier Name" msgstr "Leverandørnavn" -#: stock/admin.py:196 +#: stock/admin.py:200 msgid "Customer ID" msgstr "Kunde-ID" -#: stock/admin.py:201 stock/models.py:806 +#: stock/admin.py:205 stock/models.py:804 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "Installert i" -#: stock/admin.py:206 +#: stock/admin.py:210 msgid "Build ID" msgstr "Produksjons-ID" -#: stock/admin.py:216 +#: stock/admin.py:220 msgid "Sales Order ID" msgstr "Salgsordre-ID" -#: stock/admin.py:221 +#: stock/admin.py:225 msgid "Purchase Order ID" msgstr "Innkjøpsordre-ID" -#: stock/admin.py:236 +#: stock/admin.py:240 msgid "Review Needed" msgstr "Gjennomgang kreves" -#: stock/admin.py:241 +#: stock/admin.py:245 msgid "Delete on Deplete" msgstr "Slett når oppbrukt" -#: stock/admin.py:256 stock/models.py:900 +#: stock/admin.py:260 stock/models.py:898 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "Utløpsdato" -#: stock/api.py:318 +#: stock/api.py:312 msgid "Filter by location depth" msgstr "" -#: stock/api.py:338 +#: stock/api.py:332 +msgid "Filter by top-level locations" +msgstr "" + +#: stock/api.py:347 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:359 +#: stock/api.py:369 stock/serializers.py:1085 msgid "Parent Location" msgstr "" -#: stock/api.py:360 +#: stock/api.py:370 msgid "Filter by parent location" msgstr "" -#: stock/api.py:615 templates/js/translated/table_filters.js:427 +#: stock/api.py:625 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "Ekstern plassering" -#: stock/api.py:803 +#: stock/api.py:813 msgid "Part Tree" msgstr "Del-tre" -#: stock/api.py:833 +#: stock/api.py:843 msgid "Expiry date before" msgstr "Utløpsdato før" -#: stock/api.py:837 +#: stock/api.py:847 msgid "Expiry date after" msgstr "Utløpsdato etter" -#: stock/api.py:840 stock/templates/stock/item_base.html:439 +#: stock/api.py:850 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "Foreldet" -#: stock/api.py:927 +#: stock/api.py:937 msgid "Quantity is required" msgstr "Antall kreves" -#: stock/api.py:933 +#: stock/api.py:943 msgid "Valid part must be supplied" msgstr "Gyldig del må oppgis" -#: stock/api.py:964 +#: stock/api.py:974 msgid "The given supplier part does not exist" msgstr "Oppgitt leverandørdel eksisterer ikke" -#: stock/api.py:974 +#: stock/api.py:984 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:1005 +#: stock/api.py:1015 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "Serienumre kan ikke angis for en ikke-sporbar del" -#: stock/models.py:59 +#: stock/models.py:60 msgid "Stock Location type" msgstr "Lagerplasseringstype" -#: stock/models.py:60 +#: stock/models.py:61 msgid "Stock Location types" msgstr "Lagerplasseringstyper" -#: stock/models.py:86 +#: stock/models.py:87 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:123 stock/models.py:788 +#: stock/models.py:124 stock/models.py:786 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Lagerplassering" -#: stock/models.py:124 stock/templates/stock/location.html:186 +#: stock/models.py:125 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "Lagerplasseringer" -#: stock/models.py:166 stock/models.py:949 +#: stock/models.py:167 stock/models.py:947 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "Eier" -#: stock/models.py:167 stock/models.py:950 +#: stock/models.py:168 stock/models.py:948 msgid "Select Owner" msgstr "Velg eier" -#: stock/models.py:175 +#: stock/models.py:176 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "Lagervarer kan ikke knyttes direkte mot en strukturell lagerplassering, men kan knyttes mot underplasseringer." -#: stock/models.py:182 templates/js/translated/stock.js:2781 +#: stock/models.py:183 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "Ekstern" -#: stock/models.py:183 +#: stock/models.py:184 msgid "This is an external stock location" msgstr "Dette er en ekstern lagerplassering" -#: stock/models.py:189 templates/js/translated/stock.js:2790 +#: stock/models.py:190 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "Plasseringstype" -#: stock/models.py:193 +#: stock/models.py:194 msgid "Stock location type of this location" msgstr "Lagerplasseringstype for denne plasseringen" -#: stock/models.py:262 +#: stock/models.py:261 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:643 +#: stock/models.py:641 msgid "Stock items cannot be located into structural stock locations!" msgstr "Lagervarer kan ikke plasseres i strukturelle plasseringer!" -#: stock/models.py:670 stock/serializers.py:419 +#: stock/models.py:668 stock/serializers.py:446 msgid "Stock item cannot be created for virtual parts" msgstr "Lagervare kan ikke opprettes for virtuelle deler" -#: stock/models.py:687 +#: stock/models.py:685 #, 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:697 stock/models.py:710 +#: stock/models.py:695 stock/models.py:708 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:700 +#: stock/models.py:698 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:724 +#: stock/models.py:722 msgid "Item cannot belong to itself" msgstr "Elementet kan ikke tilhøre seg selv" -#: stock/models.py:729 +#: stock/models.py:727 msgid "Item must have a build reference if is_building=True" msgstr "Elementet må ha en produksjonsrefereanse om is_building=True" -#: stock/models.py:742 +#: stock/models.py:740 msgid "Build reference does not point to the same part object" msgstr "Produksjonsreferanse peker ikke til samme del-objekt" -#: stock/models.py:758 +#: stock/models.py:756 msgid "Parent Stock Item" msgstr "Overordnet lagervare" -#: stock/models.py:770 +#: stock/models.py:768 msgid "Base part" msgstr "Basisdel" -#: stock/models.py:780 +#: stock/models.py:778 msgid "Select a matching supplier part for this stock item" msgstr "Velg en tilsvarende leverandørdel for denne lagervaren" -#: stock/models.py:792 +#: stock/models.py:790 msgid "Where is this stock item located?" msgstr "Hvor er denne lagervaren plassert?" -#: stock/models.py:800 stock/serializers.py:1480 +#: stock/models.py:798 stock/serializers.py:1476 msgid "Packaging this stock item is stored in" msgstr "Inpakningen denne lagervaren er lagret i" -#: stock/models.py:811 +#: stock/models.py:809 msgid "Is this item installed in another item?" msgstr "Er denne artikkelen montert i en annen artikkel?" -#: stock/models.py:830 +#: stock/models.py:828 msgid "Serial number for this item" msgstr "Serienummer for denne artikkelen" -#: stock/models.py:844 stock/serializers.py:1463 +#: stock/models.py:842 stock/serializers.py:1459 msgid "Batch code for this stock item" msgstr "Batchkode for denne lagervaren" -#: stock/models.py:849 +#: stock/models.py:847 msgid "Stock Quantity" msgstr "Lagerantall" -#: stock/models.py:859 +#: stock/models.py:857 msgid "Source Build" msgstr "Kildeproduksjon" -#: stock/models.py:862 +#: stock/models.py:860 msgid "Build for this stock item" msgstr "Produksjon for denne lagervaren" -#: stock/models.py:869 stock/templates/stock/item_base.html:363 +#: stock/models.py:867 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "Brukt av" -#: stock/models.py:872 +#: stock/models.py:870 msgid "Build order which consumed this stock item" msgstr "Produksjonsordren som brukte denne lagervaren" -#: stock/models.py:881 +#: stock/models.py:879 msgid "Source Purchase Order" msgstr "Kildeinnkjøpsordre" -#: stock/models.py:885 +#: stock/models.py:883 msgid "Purchase order for this stock item" msgstr "Innkjøpsordre for denne lagervaren" -#: stock/models.py:891 +#: stock/models.py:889 msgid "Destination Sales Order" msgstr "Tildelt Salgsordre" -#: stock/models.py:902 +#: stock/models.py:900 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:920 +#: stock/models.py:918 msgid "Delete on deplete" msgstr "Slett når oppbrukt" -#: stock/models.py:921 +#: stock/models.py:919 msgid "Delete this Stock Item when stock is depleted" msgstr "Slett lagervaren når beholdningen er oppbrukt" -#: stock/models.py:941 +#: stock/models.py:939 msgid "Single unit purchase price at time of purchase" msgstr "Innkjøpspris per enhet på kjøpstidspunktet" -#: stock/models.py:972 +#: stock/models.py:970 msgid "Converted to part" msgstr "Konvertert til del" -#: stock/models.py:1490 +#: stock/models.py:1486 msgid "Part is not set as trackable" msgstr "Delen er ikke angitt som sporbar" -#: stock/models.py:1496 +#: stock/models.py:1492 msgid "Quantity must be integer" msgstr "Antall må være heltall" -#: stock/models.py:1504 +#: stock/models.py:1500 #, 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:1510 +#: stock/models.py:1506 msgid "Serial numbers must be a list of integers" msgstr "Serienumre må være en liste over tall" -#: stock/models.py:1515 +#: stock/models.py:1511 msgid "Quantity does not match serial numbers" msgstr "Antallet stemmer ikke overens med serienumrene" -#: stock/models.py:1523 stock/serializers.py:658 +#: stock/models.py:1519 stock/serializers.py:660 msgid "Serial numbers already exist" msgstr "Seriernummer eksisterer allerede" -#: stock/models.py:1620 +#: stock/models.py:1616 msgid "Test template does not exist" msgstr "" -#: stock/models.py:1638 +#: stock/models.py:1634 msgid "Stock item has been assigned to a sales order" msgstr "Lagervare har blitt tildelt en salgsordre" -#: stock/models.py:1642 +#: stock/models.py:1638 msgid "Stock item is installed in another item" msgstr "Lagervare er montert i en annen artikkel" -#: stock/models.py:1645 +#: stock/models.py:1641 msgid "Stock item contains other items" msgstr "Lagervare inneholder andre artikler" -#: stock/models.py:1648 +#: stock/models.py:1644 msgid "Stock item has been assigned to a customer" msgstr "Lagervare har blitt tildelt til en kunde" -#: stock/models.py:1651 +#: stock/models.py:1647 msgid "Stock item is currently in production" msgstr "Lagervare er for tiden i produksjon" -#: stock/models.py:1654 +#: stock/models.py:1650 msgid "Serialized stock cannot be merged" msgstr "Serialisert lagerbeholdning kan ikke slås sammen" -#: stock/models.py:1661 stock/serializers.py:1369 +#: stock/models.py:1657 stock/serializers.py:1365 msgid "Duplicate stock items" msgstr "Duplisert lagervare" -#: stock/models.py:1665 +#: stock/models.py:1661 msgid "Stock items must refer to the same part" msgstr "Lagervarer må referere til samme del" -#: stock/models.py:1673 +#: stock/models.py:1669 msgid "Stock items must refer to the same supplier part" msgstr "Lagervarer må referere til samme leverandørdel" -#: stock/models.py:1678 +#: stock/models.py:1674 msgid "Stock status codes must match" msgstr "Lagerstatuskoder må være like" -#: stock/models.py:1905 +#: stock/models.py:1901 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:2326 +#: stock/models.py:2310 msgid "Entry notes" msgstr "Oppføringsnotater" -#: stock/models.py:2391 +#: stock/models.py:2378 msgid "Value must be provided for this test" msgstr "Verdi må angis for denne testen" -#: stock/models.py:2396 +#: stock/models.py:2383 msgid "Attachment must be uploaded for this test" msgstr "Vedlegg må lastes opp for denne testen" -#: stock/models.py:2423 +#: stock/models.py:2388 +msgid "Invalid value for this test" +msgstr "" + +#: stock/models.py:2412 msgid "Test result" msgstr "Testresultat" -#: stock/models.py:2430 +#: stock/models.py:2419 msgid "Test output value" msgstr "Testens verdi" -#: stock/models.py:2438 +#: stock/models.py:2427 msgid "Test result attachment" msgstr "Vedlegg til testresultat" -#: stock/models.py:2442 +#: stock/models.py:2431 msgid "Test notes" msgstr "Testnotater" -#: stock/models.py:2450 templates/js/translated/stock.js:1548 +#: stock/models.py:2439 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2440 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2457 +#: stock/models.py:2446 msgid "Started" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2447 msgid "The timestamp of the test start" msgstr "" -#: stock/models.py:2464 +#: stock/models.py:2453 msgid "Finished" msgstr "" -#: stock/models.py:2465 +#: stock/models.py:2454 msgid "The timestamp of the test finish" msgstr "" -#: stock/serializers.py:75 +#: stock/serializers.py:74 msgid "Generated batch code" msgstr "" -#: stock/serializers.py:84 +#: stock/serializers.py:83 msgid "Select build order" msgstr "" -#: stock/serializers.py:93 +#: stock/serializers.py:92 msgid "Select stock item to generate batch code for" msgstr "" -#: stock/serializers.py:102 +#: stock/serializers.py:101 msgid "Select location to generate batch code for" msgstr "" -#: stock/serializers.py:111 +#: stock/serializers.py:110 msgid "Select part to generate batch code for" msgstr "" -#: stock/serializers.py:120 +#: stock/serializers.py:119 msgid "Select purchase order" msgstr "" -#: stock/serializers.py:127 +#: stock/serializers.py:126 msgid "Enter quantity for batch code" msgstr "" -#: stock/serializers.py:150 +#: stock/serializers.py:149 msgid "Generated serial number" msgstr "" -#: stock/serializers.py:159 +#: stock/serializers.py:158 msgid "Select part to generate serial number for" msgstr "" -#: stock/serializers.py:167 +#: stock/serializers.py:166 msgid "Quantity of serial numbers to generate" msgstr "" -#: stock/serializers.py:229 +#: stock/serializers.py:228 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:248 +#: stock/serializers.py:247 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:280 +#: stock/serializers.py:279 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:313 +#: stock/serializers.py:315 msgid "Serial number is too large" msgstr "Serienummeret er for høyt" -#: stock/serializers.py:411 +#: stock/serializers.py:438 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:531 +#: stock/serializers.py:558 msgid "Purchase price of this stock item, per unit or pack" msgstr "Innkjøpspris for denne lagervaren, per enhet eller forpakning" -#: stock/serializers.py:593 +#: stock/serializers.py:595 msgid "Enter number of stock items to serialize" msgstr "Angi antall lagervarer som skal serialiseres" -#: stock/serializers.py:606 +#: stock/serializers.py:608 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "Antall kan ikke overstige tilgjengelig lagerbeholdning ({q})" -#: stock/serializers.py:613 +#: stock/serializers.py:615 msgid "Enter serial numbers for new items" msgstr "Angi serienummer for nye artikler" -#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 +#: stock/serializers.py:626 stock/serializers.py:1322 stock/serializers.py:1578 msgid "Destination stock location" msgstr "Til Lagerplassering" -#: stock/serializers.py:631 +#: stock/serializers.py:633 msgid "Optional note field" msgstr "Valgfritt notatfelt" -#: stock/serializers.py:641 +#: stock/serializers.py:643 msgid "Serial numbers cannot be assigned to this part" msgstr "Serienummer kan ikke tilordnes denne delen" -#: stock/serializers.py:696 +#: stock/serializers.py:698 msgid "Select stock item to install" msgstr "Velg lagervare å montere" -#: stock/serializers.py:703 +#: stock/serializers.py:705 msgid "Quantity to Install" msgstr "Antall å installere" -#: stock/serializers.py:704 +#: stock/serializers.py:706 msgid "Enter the quantity of items to install" msgstr "Angi antallet elementer som skal installeres" -#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 -#: stock/serializers.py:935 +#: stock/serializers.py:711 stock/serializers.py:791 stock/serializers.py:887 +#: stock/serializers.py:937 msgid "Add transaction note (optional)" msgstr "Legg til transaksjonsnotat (valgfritt)" -#: stock/serializers.py:717 +#: stock/serializers.py:719 msgid "Quantity to install must be at least 1" msgstr "Antall å installere må være minst 1" -#: stock/serializers.py:725 +#: stock/serializers.py:727 msgid "Stock item is unavailable" msgstr "Lagervaren er utilgjengelig" -#: stock/serializers.py:736 +#: stock/serializers.py:738 msgid "Selected part is not in the Bill of Materials" msgstr "Valgt del er ikke i stykklisten" -#: stock/serializers.py:749 +#: stock/serializers.py:751 msgid "Quantity to install must not exceed available quantity" msgstr "Antall å installere må ikke overskride tilgjengelig antall" -#: stock/serializers.py:784 +#: stock/serializers.py:786 msgid "Destination location for uninstalled item" msgstr "Lagerplassering for den avinstallerte artikkelen" -#: stock/serializers.py:819 +#: stock/serializers.py:821 msgid "Select part to convert stock item into" msgstr "Velg del å konvertere lagervare til" -#: stock/serializers.py:832 +#: stock/serializers.py:834 msgid "Selected part is not a valid option for conversion" msgstr "Valgt del er ikke et gyldig alternativ for konvertering" -#: stock/serializers.py:849 +#: stock/serializers.py:851 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "Kan ikke konvertere lagerprodukt med tildelt leverandørdel" -#: stock/serializers.py:880 +#: stock/serializers.py:882 msgid "Destination location for returned item" msgstr "Lagerplassering for returnert artikkel" -#: stock/serializers.py:917 +#: stock/serializers.py:919 msgid "Select stock items to change status" msgstr "Velg lagervarer for å endre status" -#: stock/serializers.py:923 +#: stock/serializers.py:925 msgid "No stock items selected" msgstr "Ingen lagervarer valgt" -#: stock/serializers.py:1019 stock/serializers.py:1082 +#: stock/serializers.py:1021 stock/serializers.py:1093 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:220 +#: stock/templates/stock/location.html:222 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "Underplasseringer" -#: stock/serializers.py:1198 +#: stock/serializers.py:1086 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: stock/serializers.py:1194 msgid "Part must be salable" msgstr "Delen må være salgbar" -#: stock/serializers.py:1202 +#: stock/serializers.py:1198 msgid "Item is allocated to a sales order" msgstr "Artikkelen er tildelt en salgsordre" -#: stock/serializers.py:1206 +#: stock/serializers.py:1202 msgid "Item is allocated to a build order" msgstr "Artikkelen er tildelt en produksjonsordre" -#: stock/serializers.py:1230 +#: stock/serializers.py:1226 msgid "Customer to assign stock items" msgstr "Kunde å tilordne lagervarer" -#: stock/serializers.py:1236 +#: stock/serializers.py:1232 msgid "Selected company is not a customer" msgstr "Valgt firma er ikke en kunde" -#: stock/serializers.py:1244 +#: stock/serializers.py:1240 msgid "Stock assignment notes" msgstr "Lagervare-tildelignsnotater" -#: stock/serializers.py:1254 stock/serializers.py:1508 +#: stock/serializers.py:1250 stock/serializers.py:1504 msgid "A list of stock items must be provided" msgstr "En liste av lagervarer må oppgis" -#: stock/serializers.py:1333 +#: stock/serializers.py:1329 msgid "Stock merging notes" msgstr "Notater om lagersammenslåing" -#: stock/serializers.py:1338 +#: stock/serializers.py:1334 msgid "Allow mismatched suppliers" msgstr "Tillat forskjellige leverandører" -#: stock/serializers.py:1339 +#: stock/serializers.py:1335 msgid "Allow stock items with different supplier parts to be merged" msgstr "Tillat lagervarer med forskjellige leverandørdeler å slås sammen" -#: stock/serializers.py:1344 +#: stock/serializers.py:1340 msgid "Allow mismatched status" msgstr "Tillat forskjellig status" -#: stock/serializers.py:1345 +#: stock/serializers.py:1341 msgid "Allow stock items with different status codes to be merged" msgstr "Tillat lagervarer med forskjellige statuskoder å slås sammen" -#: stock/serializers.py:1355 +#: stock/serializers.py:1351 msgid "At least two stock items must be provided" msgstr "Minst to lagervarer må oppgis" -#: stock/serializers.py:1422 +#: stock/serializers.py:1418 msgid "No Change" msgstr "" -#: stock/serializers.py:1451 +#: stock/serializers.py:1447 msgid "StockItem primary key value" msgstr "Lagervare primærnøkkel verdi" -#: stock/serializers.py:1470 +#: stock/serializers.py:1466 msgid "Stock item status code" msgstr "Lagervare statuskode" -#: stock/serializers.py:1498 +#: stock/serializers.py:1494 msgid "Stock transaction notes" msgstr "Lager transaksjonsnotater" @@ -9450,7 +9532,7 @@ msgstr "Testdata" msgid "Test Report" msgstr "Testrapport" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276 msgid "Delete Test Data" msgstr "Slett testdata" @@ -9470,11 +9552,11 @@ msgstr "Installerte lagervarer" msgid "Install Stock Item" msgstr "Installer lagervare" -#: stock/templates/stock/item.html:272 +#: stock/templates/stock/item.html:264 msgid "Delete all test results for this stock item" msgstr "Slett alle testresultater for denne lagervaren" -#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "" @@ -9760,28 +9842,28 @@ msgstr "Du er ikke i listen over eiere av denne plasseringen. Denne lagerplasser msgid "Location Type" msgstr "" -#: stock/templates/stock/location.html:224 +#: stock/templates/stock/location.html:226 msgid "Create new stock location" msgstr "Opprett ny lagerplassering" -#: stock/templates/stock/location.html:225 +#: stock/templates/stock/location.html:227 msgid "New Location" msgstr "Ny plassering" -#: stock/templates/stock/location.html:295 +#: stock/templates/stock/location.html:299 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:317 +#: stock/templates/stock/location.html:321 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:390 +#: stock/templates/stock/location.html:394 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:401 +#: stock/templates/stock/location.html:405 msgid "Link Barcode to Stock Location" msgstr "" @@ -10205,20 +10287,20 @@ msgstr "Innstillinger for Innkjøpsordre" msgid "Pricing Settings" msgstr "Innstillinger for prising" -#: templates/InvenTree/settings/pricing.html:34 +#: templates/InvenTree/settings/pricing.html:35 msgid "Exchange Rates" msgstr "Valutakurser" -#: templates/InvenTree/settings/pricing.html:38 +#: templates/InvenTree/settings/pricing.html:39 msgid "Update Now" msgstr "Oppdater nå" -#: templates/InvenTree/settings/pricing.html:46 -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 msgid "Last Update" msgstr "Siste oppdatering" -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:51 msgid "Never" msgstr "Aldri" @@ -10275,8 +10357,8 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:547 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 +#: templates/js/translated/part.js:393 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:402 msgid "Delete" msgstr "Slett" @@ -10316,12 +10398,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 -#: templates/js/translated/part.js:1645 +#: templates/js/translated/part.js:1646 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 -#: templates/js/translated/part.js:1646 +#: templates/js/translated/part.js:1647 msgid "Delete Template" msgstr "" @@ -10711,7 +10793,7 @@ msgid "Submit Bug Report" msgstr "Send feilrapport" #: templates/about.html:91 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 +#: templates/js/translated/helpers.js:589 msgid "copy to clipboard" msgstr "kopier til utklippstavle" @@ -10775,7 +10857,7 @@ msgid "Are you sure you want to sign out?" msgstr "Er du sikker på at du vil logge ut?" #: templates/account/logout.html:27 templates/allauth_2fa/backup_tokens.html:35 -#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:44 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45 msgid "Return to Site" msgstr "Gå tilbake til siden" @@ -10889,15 +10971,19 @@ msgstr "Trinn 1" msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "Skann QR-koden nedenfor med en symbolgenerator du velger (for eksempel Google Authenticator)." -#: templates/allauth_2fa/setup.html:23 +#: templates/allauth_2fa/setup.html:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 msgid "Step 2" msgstr "Trinn 2" -#: templates/allauth_2fa/setup.html:27 +#: templates/allauth_2fa/setup.html:28 msgid "Input a token generated by the app:" msgstr "Angi et symbol generert av appen:" -#: templates/allauth_2fa/setup.html:37 +#: templates/allauth_2fa/setup.html:38 msgid "Verify" msgstr "Bekreft" @@ -10976,7 +11062,7 @@ msgid "Click on the following link to view this part" msgstr "Klikk på følgende lenke for å se denne delen" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3217 +#: templates/js/translated/part.js:3219 msgid "Minimum Quantity" msgstr "Minimum antall" @@ -11064,27 +11150,27 @@ msgstr "" msgid "Delete attachments" msgstr "" -#: templates/js/translated/attachment.js:253 +#: templates/js/translated/attachment.js:260 msgid "Attachment actions" msgstr "" -#: templates/js/translated/attachment.js:275 +#: templates/js/translated/attachment.js:294 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:315 +#: templates/js/translated/attachment.js:334 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:365 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:366 +#: templates/js/translated/attachment.js:385 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:374 +#: templates/js/translated/attachment.js:393 msgid "Delete attachment" msgstr "" @@ -11365,7 +11451,7 @@ msgid "Includes variant and substitute stock" msgstr "" #: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 -#: templates/js/translated/part.js:1256 +#: templates/js/translated/part.js:1257 #: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" @@ -11692,7 +11778,7 @@ msgstr "" #: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 #: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 -#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11735,8 +11821,8 @@ msgstr "" msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 -#: templates/js/translated/part.js:1202 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:791 +#: templates/js/translated/part.js:1203 msgid "Trackable part" msgstr "" @@ -11922,7 +12008,7 @@ msgid "Delete Parameters" msgstr "" #: templates/js/translated/company.js:1191 -#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2244 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2245 msgid "Order parts" msgstr "" @@ -11939,34 +12025,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:1279 -#: templates/js/translated/company.js:1567 templates/js/translated/part.js:798 -#: templates/js/translated/part.js:1210 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Template part" msgstr "" #: templates/js/translated/company.js:1283 -#: templates/js/translated/company.js:1571 templates/js/translated/part.js:802 -#: templates/js/translated/part.js:1214 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:803 +#: templates/js/translated/part.js:1215 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1464 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1465 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1527 +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1528 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1528 +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1529 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1433 +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1434 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1549 +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1550 msgid "Delete Parameter" msgstr "" @@ -12100,23 +12186,23 @@ msgstr "Skjemafeil eksisterer" msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2499 +#: templates/js/translated/forms.js:2500 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3113 +#: templates/js/translated/forms.js:3114 msgid "Select Columns" msgstr "" @@ -12217,7 +12303,7 @@ msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 -#: templates/js/translated/part.js:1604 +#: templates/js/translated/part.js:1605 msgid "ID" msgstr "" @@ -12298,347 +12384,343 @@ msgstr "" 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 +#: templates/js/translated/part.js:333 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:355 +#: templates/js/translated/part.js:356 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:356 +#: templates/js/translated/part.js:357 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:370 +#: templates/js/translated/part.js:371 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:383 +#: templates/js/translated/part.js:384 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:388 +#: templates/js/translated/part.js:389 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:397 +#: templates/js/translated/part.js:398 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:401 +#: templates/js/translated/part.js:402 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:406 +#: templates/js/translated/part.js:407 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:430 +#: templates/js/translated/part.js:431 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:432 +#: templates/js/translated/part.js:433 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:433 +#: templates/js/translated/part.js:434 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:462 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:463 +#: templates/js/translated/part.js:464 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:474 +#: templates/js/translated/part.js:475 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:531 +#: templates/js/translated/part.js:532 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:532 +#: templates/js/translated/part.js:533 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:546 +#: templates/js/translated/part.js:547 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:548 +#: templates/js/translated/part.js:549 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:549 +#: templates/js/translated/part.js:550 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:550 +#: templates/js/translated/part.js:551 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:557 +#: templates/js/translated/part.js:558 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:593 +#: templates/js/translated/part.js:594 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:595 +#: templates/js/translated/part.js:596 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:600 +#: templates/js/translated/part.js:601 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:602 +#: templates/js/translated/part.js:603 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:619 +#: templates/js/translated/part.js:620 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:629 +#: templates/js/translated/part.js:630 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:632 +#: templates/js/translated/part.js:633 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:657 +#: templates/js/translated/part.js:658 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:685 +#: templates/js/translated/part.js:686 #: templates/js/translated/table_filters.js:747 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:688 +#: templates/js/translated/part.js:689 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:748 +#: templates/js/translated/part.js:749 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:771 +#: templates/js/translated/part.js:772 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +#: templates/js/translated/part.js:795 templates/js/translated/part.js:1207 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:806 +#: templates/js/translated/part.js:807 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:810 +#: templates/js/translated/part.js:811 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:897 +#: templates/js/translated/part.js:898 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:901 +#: templates/js/translated/part.js:902 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1050 +#: templates/js/translated/part.js:1051 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1145 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +#: templates/js/translated/part.js:1113 templates/js/translated/part.js:1155 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1281 +#: templates/js/translated/part.js:1282 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1599 +#: templates/js/translated/part.js:1600 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1662 +#: templates/js/translated/part.js:1663 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1674 +#: templates/js/translated/part.js:1675 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1682 +#: templates/js/translated/part.js:1683 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1716 +#: templates/js/translated/part.js:1717 #: templates/js/translated/purchase_order.js:1654 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1860 +#: templates/js/translated/part.js:1861 #: templates/js/translated/purchase_order.js:2153 #: templates/js/translated/return_order.js:755 #: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1906 +#: templates/js/translated/part.js:1907 #: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1970 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1991 +#: templates/js/translated/part.js:1992 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 +#: templates/js/translated/part.js:2080 templates/js/translated/part.js:2506 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2200 +#: templates/js/translated/part.js:2201 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2205 +#: templates/js/translated/part.js:2206 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2235 +#: templates/js/translated/part.js:2236 msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2286 +#: templates/js/translated/part.js:2287 msgid "part" msgstr "" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2288 msgid "parts" msgstr "" -#: templates/js/translated/part.js:2383 +#: templates/js/translated/part.js:2384 msgid "No category" msgstr "" -#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2546 +#: templates/js/translated/part.js:2547 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2644 +#: templates/js/translated/part.js:2645 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2760 +#: templates/js/translated/part.js:2761 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2776 +#: templates/js/translated/part.js:2777 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2865 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2887 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/part.js:2938 templates/js/translated/stock.js:1457 #: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2940 +#: templates/js/translated/part.js:2942 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2956 +#: templates/js/translated/part.js:2958 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2970 +#: templates/js/translated/part.js:2972 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3051 templates/js/translated/part.js:3052 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3052 +#: templates/js/translated/part.js:3054 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3058 +#: templates/js/translated/part.js:3060 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3108 +#: templates/js/translated/part.js:3110 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3114 +#: templates/js/translated/part.js:3116 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3210 +#: templates/js/translated/part.js:3212 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3226 +#: templates/js/translated/part.js:3228 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3271 +#: templates/js/translated/part.js:3273 msgid "Minimum Stock Level" msgstr "" @@ -13246,10 +13328,6 @@ msgstr "" 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 "" @@ -13418,7 +13496,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:401 +#: templates/js/translated/stock.js:1042 users/models.py:392 msgid "Add" msgstr "Legg til" @@ -14309,34 +14387,35 @@ msgstr "Sist gang tokenet ble brukt" msgid "Revoked" msgstr "Tilbakekalt" -#: users/models.py:384 +#: users/models.py:375 msgid "Permission set" msgstr "Tillatelse satt" -#: users/models.py:393 +#: users/models.py:384 msgid "Group" msgstr "Gruppe" -#: users/models.py:397 +#: users/models.py:388 msgid "View" msgstr "Visning" -#: users/models.py:397 +#: users/models.py:388 msgid "Permission to view items" msgstr "Tillatelse til å se elementer" -#: users/models.py:401 +#: users/models.py:392 msgid "Permission to add items" msgstr "Tillatelse til å legge til elementer" -#: users/models.py:405 +#: users/models.py:396 msgid "Change" msgstr "Endre" -#: users/models.py:407 +#: users/models.py:398 msgid "Permissions to edit items" msgstr "Tillatelse til å endre elementer" -#: users/models.py:413 +#: users/models.py:404 msgid "Permission to delete items" msgstr "Tillatelse til å slette elementer" + diff --git a/src/backend/InvenTree/locale/pl/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/pl/LC_MESSAGES/django.po index c2a5554875..2393d660c8 100644 --- a/src/backend/InvenTree/locale/pl/LC_MESSAGES/django.po +++ b/src/backend/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-05-31 07:08+0000\n" -"PO-Revision-Date: 2024-05-27 11:54\n" +"POT-Creation-Date: 2024-06-26 03:18+0000\n" +"PO-Revision-Date: 2024-06-26 06:04\n" "Last-Translator: \n" "Language-Team: Polish\n" "Language: pl_PL\n" @@ -21,7 +21,7 @@ msgstr "" msgid "API endpoint not found" msgstr "Nie znaleziono punktu końcowego API" -#: InvenTree/api.py:536 +#: InvenTree/api.py:520 msgid "User does not have permission to view this model" msgstr "Użytkownik nie ma uprawnień do przeglądania tego modelu" @@ -52,25 +52,25 @@ msgstr "Niepoprawna ilość ({exc})" msgid "Error details can be found in the admin panel" msgstr "Szczegóły błędu można znaleźć w panelu administracyjnym" -#: InvenTree/fields.py:139 +#: InvenTree/fields.py:136 msgid "Enter date" msgstr "Wprowadź dane" -#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 -#: build/serializers.py:531 build/templates/build/sidebar.html:21 -#: company/models.py:849 company/templates/company/sidebar.html:37 -#: order/models.py:1332 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:205 InvenTree/models.py:918 build/serializers.py:452 +#: build/serializers.py:530 build/templates/build/sidebar.html:21 +#: company/models.py:817 company/templates/company/sidebar.html:37 +#: order/models.py:1296 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:3218 part/templates/part/part_sidebar.html:63 +#: part/models.py:3183 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_report.html:172 -#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 -#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 -#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 -#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:230 stock/models.py:2309 stock/models.py:2431 +#: stock/serializers.py:632 stock/serializers.py:790 stock/serializers.py:886 +#: stock/serializers.py:936 stock/serializers.py:1239 stock/serializers.py:1328 +#: stock/serializers.py:1493 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1080 +#: templates/js/translated/part.js:1081 #: templates/js/translated/purchase_order.js:2200 #: templates/js/translated/return_order.js:775 #: templates/js/translated/sales_order.js:1103 @@ -120,15 +120,15 @@ msgstr "Potwierdzenie adresu email" msgid "You must type the same email each time." msgstr "Należy ponownie wpisać ten sam adres e-mail." -#: InvenTree/forms.py:253 InvenTree/forms.py:261 +#: InvenTree/forms.py:248 InvenTree/forms.py:256 msgid "The provided primary email address is not valid." msgstr "Podany podstawowy adres e-mail jest nieprawidłowy." -#: InvenTree/forms.py:268 +#: InvenTree/forms.py:263 msgid "The provided email domain is not approved." msgstr "Podany e-mail domeny nie został zatwierdzony." -#: InvenTree/forms.py:395 +#: InvenTree/forms.py:390 msgid "Registration is disabled." msgstr "Rejestracja jest wyłączona." @@ -171,35 +171,35 @@ msgstr "Liczba unikalnych numerów seryjnych ({len(serials)}) musi odpowiadać i msgid "Remove HTML tags from this value" msgstr "Usuń znaczniki HTML z tej wartości" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Connection error" msgstr "Błąd połączenia" -#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 msgid "Server responded with invalid status code" msgstr "Serwer odpowiedział z nieprawidłowym kodem statusu" -#: InvenTree/helpers_model.py:158 +#: InvenTree/helpers_model.py:148 msgid "Exception occurred" msgstr "Wystąpił wyjątek" -#: InvenTree/helpers_model.py:168 +#: InvenTree/helpers_model.py:158 msgid "Server responded with invalid Content-Length value" msgstr "Serwer odpowiedział z nieprawidłową wartością Content-Length" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:161 msgid "Image size is too large" msgstr "Rozmiar obrazu jest zbyt duży" -#: InvenTree/helpers_model.py:183 +#: InvenTree/helpers_model.py:173 msgid "Image download exceeded maximum size" msgstr "Przekroczono maksymalny rozmiar pobieranego obrazu" -#: InvenTree/helpers_model.py:188 +#: InvenTree/helpers_model.py:178 msgid "Remote server returned empty response" msgstr "Zdalny serwer zwrócił pustą odpowiedź" -#: InvenTree/helpers_model.py:196 +#: InvenTree/helpers_model.py:186 msgid "Supplied URL is not a valid image file" msgstr "Podany adres URL nie jest poprawnym plikiem obrazu" @@ -273,7 +273,7 @@ msgstr "Koreański" #: InvenTree/locales.py:35 msgid "Latvian" -msgstr "" +msgstr "Łotewski" #: InvenTree/locales.py:36 msgid "Dutch" @@ -296,46 +296,50 @@ msgid "Portuguese (Brazilian)" msgstr "Portugalski (Brazylijski)" #: InvenTree/locales.py:41 +msgid "Romanian" +msgstr "Rumuński" + +#: InvenTree/locales.py:42 msgid "Russian" msgstr "Rosyjski" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:43 msgid "Slovak" msgstr "Słowacki" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:44 msgid "Slovenian" msgstr "Słoweński" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:45 msgid "Serbian" msgstr "serbski" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:46 msgid "Swedish" msgstr "Szwedzki" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:47 msgid "Thai" msgstr "Tajski" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:48 msgid "Turkish" msgstr "Turecki" -#: InvenTree/locales.py:48 -msgid "Ukrainian" -msgstr "" - #: InvenTree/locales.py:49 +msgid "Ukrainian" +msgstr "Ukraiński" + +#: InvenTree/locales.py:50 msgid "Vietnamese" msgstr "Wietnamski" -#: InvenTree/locales.py:50 +#: InvenTree/locales.py:51 msgid "Chinese (Simplified)" msgstr "chiński (uproszczony)" -#: InvenTree/locales.py:51 +#: InvenTree/locales.py:52 msgid "Chinese (Traditional)" msgstr "chiński (tradycyjny)" @@ -344,153 +348,65 @@ msgstr "chiński (tradycyjny)" msgid "[{site_name}] Log in to the app" msgstr "[{site_name}] Logowanie do aplikacji" -#: InvenTree/magic_login.py:38 company/models.py:133 +#: InvenTree/magic_login.py:38 company/models.py:136 #: company/templates/company/company_base.html:138 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:677 msgid "Email" msgstr "Adres E-Mail" -#: InvenTree/models.py:107 +#: InvenTree/models.py:105 msgid "Error running plugin validation" msgstr "Błąd podczas walidacji wtyczki" -#: InvenTree/models.py:176 +#: InvenTree/models.py:174 msgid "Metadata must be a python dict object" msgstr "Metadane muszą być obiektem typu dict w Python" -#: InvenTree/models.py:182 +#: InvenTree/models.py:180 msgid "Plugin Metadata" msgstr "Wtyczka Metadane" -#: InvenTree/models.py:183 +#: InvenTree/models.py:181 msgid "JSON metadata field, for use by external plugins" msgstr "Pole metadanych JSON, do użycia przez wtyczki zewnętrzne" -#: InvenTree/models.py:413 +#: InvenTree/models.py:408 msgid "Improperly formatted pattern" msgstr "Nieprawidłowo sformatowany wzór" -#: InvenTree/models.py:420 +#: InvenTree/models.py:415 msgid "Unknown format key specified" msgstr "Określono nieznany format klucza" -#: InvenTree/models.py:426 +#: InvenTree/models.py:421 msgid "Missing required format key" msgstr "Brak wymaganego formatu klucza" -#: InvenTree/models.py:437 +#: InvenTree/models.py:432 msgid "Reference field cannot be empty" msgstr "Pole odniesienia nie może być puste" -#: InvenTree/models.py:445 +#: InvenTree/models.py:440 msgid "Reference must match required pattern" msgstr "Odniesienie musi być zgodne z wymaganym wzorem" -#: InvenTree/models.py:476 +#: InvenTree/models.py:471 msgid "Reference number is too large" msgstr "Numer odniesienia jest zbyt duży" -#: InvenTree/models.py:550 -msgid "Missing file" -msgstr "Brak pliku" - -#: InvenTree/models.py:551 -msgid "Missing external link" -msgstr "Brak zewnętrznego odnośnika" - -#: InvenTree/models.py:572 stock/models.py:2437 -#: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:326 -msgid "Attachment" -msgstr "Załącznik" - -#: InvenTree/models.py:573 -msgid "Select file to attach" -msgstr "Wybierz plik do załączenia" - -#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:831 -#: order/models.py:303 order/models.py:1337 order/models.py:1753 -#: part/admin.py:55 part/models.py:962 -#: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_report.html:164 -#: stock/admin.py:225 templates/js/translated/company.js:1319 -#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2455 -#: templates/js/translated/purchase_order.js:2040 -#: templates/js/translated/purchase_order.js:2204 -#: templates/js/translated/return_order.js:779 -#: templates/js/translated/sales_order.js:1092 -#: templates/js/translated/sales_order.js:2023 -msgid "Link" -msgstr "Łącze" - -#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 -#: stock/models.py:836 -msgid "Link to external URL" -msgstr "Link do zewnętrznego adresu URL" - -#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:341 -msgid "Comment" -msgstr "Komentarz" - -#: InvenTree/models.py:589 -msgid "File comment" -msgstr "Komentarz pliku" - -#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 -#: common/models.py:2518 common/models.py:2742 common/models.py:2743 -#: common/models.py:2988 common/models.py:2989 part/models.py:3228 -#: part/models.py:3315 part/models.py:3408 part/models.py:3436 -#: plugin/models.py:259 plugin/models.py:260 -#: report/templates/report/inventree_test_report.html:105 -#: templates/js/translated/stock.js:3036 users/models.py:111 -msgid "User" -msgstr "Użytkownik" - -#: InvenTree/models.py:602 -msgid "upload date" -msgstr "data przesłania" - -#: InvenTree/models.py:624 -msgid "Filename must not be empty" -msgstr "Nazwa pliku nie może być pusta" - -#: InvenTree/models.py:635 -msgid "Invalid attachment directory" -msgstr "Nieprawidłowy katalog załącznika" - -#: InvenTree/models.py:665 -#, python-brace-format -msgid "Filename contains illegal character '{c}'" -msgstr "Nazwa pliku zawiera niedozwolony znak '{c}'" - -#: InvenTree/models.py:668 -msgid "Filename missing extension" -msgstr "Brak rozszerzenia w nazwie pliku" - -#: InvenTree/models.py:677 -msgid "Attachment with this filename already exists" -msgstr "Załącznik o tej nazwie już istnieje" - -#: InvenTree/models.py:684 -msgid "Error renaming file" -msgstr "Błąd zmiany nazwy pliku" - -#: InvenTree/models.py:860 +#: InvenTree/models.py:719 msgid "Duplicate names cannot exist under the same parent" msgstr "Duplikaty nazw nie mogą istnieć pod tym samym rodzicem" -#: InvenTree/models.py:877 +#: InvenTree/models.py:736 msgid "Invalid choice" msgstr "Błędny wybór" -#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 -#: common/serializers.py:403 company/models.py:614 machine/models.py:24 -#: part/models.py:898 part/models.py:3659 plugin/models.py:50 -#: report/models.py:149 stock/models.py:72 +#: InvenTree/models.py:766 common/models.py:2623 common/models.py:3036 +#: common/serializers.py:408 company/models.py:580 machine/models.py:24 +#: part/models.py:891 part/models.py:3639 plugin/models.py:51 +#: report/models.py:150 stock/models.py:73 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:83 @@ -501,25 +417,25 @@ msgstr "Błędny wybór" #: templates/js/translated/company.js:724 #: templates/js/translated/company.js:913 #: templates/js/translated/company.js:1165 -#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 -#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1187 +#: templates/js/translated/part.js:1475 templates/js/translated/part.js:1611 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Nazwa" -#: InvenTree/models.py:913 build/models.py:218 -#: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:523 company/models.py:840 +#: InvenTree/models.py:772 build/models.py:220 +#: build/templates/build/detail.html:24 common/models.py:138 +#: company/models.py:509 company/models.py:808 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 order/models.py:289 -#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 -#: part/models.py:3674 part/templates/part/category.html:82 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:914 +#: part/models.py:3654 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:155 -#: report/models.py:509 report/models.py:535 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 #: report/templates/report/inventree_build_order_report.html:117 -#: stock/admin.py:55 stock/models.py:78 stock/templates/stock/location.html:125 +#: stock/admin.py:54 stock/models.py:79 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 @@ -528,10 +444,10 @@ msgstr "Nazwa" #: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 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:2354 -#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1239 +#: templates/js/translated/part.js:1484 templates/js/translated/part.js:1622 +#: templates/js/translated/part.js:1959 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2897 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1706 #: templates/js/translated/purchase_order.js:1849 @@ -544,149 +460,141 @@ msgstr "Nazwa" msgid "Description" msgstr "Opis" -#: InvenTree/models.py:914 stock/models.py:79 +#: InvenTree/models.py:773 stock/models.py:80 msgid "Description (optional)" msgstr "Opis (opcjonalny)" -#: InvenTree/models.py:923 -msgid "parent" -msgstr "nadrzędny" - -#: InvenTree/models.py:929 templates/js/translated/part.js:2793 +#: InvenTree/models.py:788 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Ścieżka" -#: InvenTree/models.py:1035 +#: InvenTree/models.py:918 msgid "Markdown notes (optional)" msgstr "Notatki Markdown (opcjonalne)" -#: InvenTree/models.py:1064 +#: InvenTree/models.py:947 msgid "Barcode Data" msgstr "Dane kodu kreskowego" -#: InvenTree/models.py:1065 +#: InvenTree/models.py:948 msgid "Third party barcode data" msgstr "Dane kodu kreskowego stron trzecich" -#: InvenTree/models.py:1071 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "Hasz kodu kreskowego" -#: InvenTree/models.py:1072 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "Unikalny hasz danych kodu kreskowego" -#: InvenTree/models.py:1125 +#: InvenTree/models.py:1008 msgid "Existing barcode found" msgstr "Znaleziono istniejący kod kreskowy" -#: InvenTree/models.py:1168 +#: InvenTree/models.py:1051 msgid "Server Error" msgstr "Błąd serwera" -#: InvenTree/models.py:1169 +#: InvenTree/models.py:1052 msgid "An error has been logged by the server." msgstr "Błąd został zapisany w logach serwera." -#: InvenTree/serializers.py:62 part/models.py:4212 +#: InvenTree/serializers.py:63 part/models.py:4192 msgid "Must be a valid number" msgstr "Numer musi być prawidłowy" -#: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:3036 +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3001 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Waluta" -#: InvenTree/serializers.py:102 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "Wybierz walutę z dostępnych opcji" -#: InvenTree/serializers.py:441 +#: InvenTree/serializers.py:442 msgid "You do not have permission to change this user role." msgstr "Nie masz uprawnień do zmiany tej roli użytkownika." -#: InvenTree/serializers.py:453 +#: InvenTree/serializers.py:454 msgid "Only superusers can create new users" msgstr "Tylko superużytkownicy mogą tworzyć nowych użytkowników" -#: InvenTree/serializers.py:472 +#: InvenTree/serializers.py:473 msgid "Your account has been created." msgstr "Twoje konto zostało utworzone." -#: InvenTree/serializers.py:474 +#: InvenTree/serializers.py:475 msgid "Please use the password reset function to login" msgstr "Zresetuj hasło" -#: InvenTree/serializers.py:481 +#: InvenTree/serializers.py:482 msgid "Welcome to InvenTree" msgstr "Witamy w InvenTree" -#: InvenTree/serializers.py:542 -msgid "Filename" -msgstr "Nazwa pliku" - -#: InvenTree/serializers.py:576 +#: InvenTree/serializers.py:540 msgid "Invalid value" msgstr "Nieprawidłowa wartość" -#: InvenTree/serializers.py:596 +#: InvenTree/serializers.py:560 msgid "Data File" msgstr "Plik danych" -#: InvenTree/serializers.py:597 +#: InvenTree/serializers.py:561 msgid "Select data file for upload" msgstr "Wybierz plik danych do przesłania" -#: InvenTree/serializers.py:614 +#: InvenTree/serializers.py:578 msgid "Unsupported file type" msgstr "Nieobsługiwany typ pliku" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:584 msgid "File is too large" msgstr "Plik jest zbyt duży" -#: InvenTree/serializers.py:641 +#: InvenTree/serializers.py:605 msgid "No columns found in file" msgstr "Nie znaleziono kolumn w pliku" -#: InvenTree/serializers.py:644 +#: InvenTree/serializers.py:608 msgid "No data rows found in file" msgstr "Nie znaleziono wierszy danych w pliku" -#: InvenTree/serializers.py:757 +#: InvenTree/serializers.py:721 msgid "No data rows provided" msgstr "Nie podano wierszy danych" -#: InvenTree/serializers.py:760 +#: InvenTree/serializers.py:724 msgid "No data columns supplied" msgstr "Nie podano kolumn danych" -#: InvenTree/serializers.py:827 +#: InvenTree/serializers.py:791 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Brakuje wymaganej kolumny: '{name}'" -#: InvenTree/serializers.py:836 +#: InvenTree/serializers.py:800 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Zduplikowana kolumna: '{col}'" -#: InvenTree/serializers.py:859 +#: InvenTree/serializers.py:840 msgid "Remote Image" msgstr "Obrazek zewnętrzny" -#: InvenTree/serializers.py:860 +#: InvenTree/serializers.py:841 msgid "URL of remote image file" msgstr "Adres URL zdalnego pliku obrazu" -#: InvenTree/serializers.py:878 +#: InvenTree/serializers.py:859 msgid "Downloading images from remote URL is not enabled" msgstr "Pobieranie obrazów ze zdalnego URL nie jest włączone" -#: InvenTree/status.py:66 part/serializers.py:1178 +#: InvenTree/status.py:66 part/serializers.py:1174 msgid "Background worker check failed" msgstr "Sprawdzenie robotnika w tle nie powiodło się" @@ -698,27 +606,27 @@ msgstr "Nie skonfigurowano backendu e-mail" msgid "InvenTree system health checks failed" msgstr "Sprawdzanie poziomu zdrowia InvenTree nie powiodło się" -#: InvenTree/templatetags/inventree_extras.py:183 +#: InvenTree/templatetags/inventree_extras.py:184 msgid "Unknown database" msgstr "Nieznana baza danych" -#: InvenTree/validators.py:31 InvenTree/validators.py:33 +#: InvenTree/validators.py:32 InvenTree/validators.py:34 msgid "Invalid physical unit" msgstr "Niewłaściwa jednostka fizyczna" -#: InvenTree/validators.py:39 +#: InvenTree/validators.py:40 msgid "Not a valid currency code" msgstr "Nieprawidłowy kod waluty" -#: InvenTree/validators.py:121 InvenTree/validators.py:137 +#: InvenTree/validators.py:118 InvenTree/validators.py:134 msgid "Overage value must not be negative" msgstr "Wartość przedawnienia nie może być ujemna" -#: InvenTree/validators.py:139 +#: InvenTree/validators.py:136 msgid "Overage must not exceed 100%" msgstr "Przedawnienie nie może przekroczyć 100 %" -#: InvenTree/validators.py:145 +#: InvenTree/validators.py:142 msgid "Invalid value for overage" msgstr "Nieprawidłowa wartość przedawnienia" @@ -750,14 +658,14 @@ 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:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: build/api.py:299 part/models.py:4070 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "Materiał eksploatacyjny" -#: build/api.py:300 part/models.py:4084 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4064 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2529 #: templates/js/translated/table_filters.js:186 @@ -778,30 +686,30 @@ msgstr "Śledzony" msgid "Allocated" msgstr "Przydzielono" -#: build/api.py:311 company/models.py:904 company/serializers.py:383 +#: build/api.py:311 company/models.py:872 company/serializers.py:359 #: 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:2561 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:234 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 -#: templates/js/translated/part.js:699 +#: templates/js/translated/part.js:693 templates/js/translated/part.js:695 +#: templates/js/translated/part.js:700 #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:575 msgid "Available" msgstr "Dostępne" -#: build/models.py:83 build/templates/build/build_base.html:9 +#: build/models.py:85 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_report.html:105 -#: stock/serializers.py:83 templates/email/build_order_completed.html:16 +#: stock/serializers.py:82 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:2892 msgid "Build Order" msgstr "Zlecenie Budowy" -#: build/models.py:84 build/templates/build/build_base.html:13 +#: build/models.py:86 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 @@ -812,25 +720,25 @@ msgstr "Zlecenie Budowy" msgid "Build Orders" msgstr "Zlecenia budowy" -#: build/models.py:131 +#: build/models.py:133 msgid "Invalid choice for parent build" msgstr "Nieprawidłowy wybór kompilacji nadrzędnej" -#: build/models.py:142 order/models.py:240 +#: build/models.py:144 order/models.py:240 msgid "Responsible user or group must be specified" -msgstr "" +msgstr "Odpowiedzialny użytkownik lub grupa muszą być określone" -#: build/models.py:148 +#: build/models.py:150 msgid "Build order part cannot be changed" msgstr "Nie można zmienić elementu kompletacji" -#: build/models.py:209 +#: build/models.py:211 msgid "Build Order Reference" msgstr "Odwołanie do zamówienia wykonania" -#: build/models.py:210 order/models.py:463 order/models.py:928 -#: order/models.py:1325 order/models.py:2056 part/admin.py:419 -#: part/models.py:4105 part/templates/part/upload_bom.html:54 +#: build/models.py:212 order/models.py:463 order/models.py:926 +#: order/models.py:1289 order/models.py:2020 part/admin.py:411 +#: part/models.py:4085 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_purchase_order_report.html:28 #: report/templates/report/inventree_return_order_report.html:26 @@ -844,27 +752,27 @@ msgstr "Odwołanie do zamówienia wykonania" msgid "Reference" msgstr "Referencja" -#: build/models.py:221 +#: build/models.py:223 msgid "Brief description of the build (optional)" msgstr "Krótki opis produkcji (opcjonalny)" -#: build/models.py:229 build/templates/build/build_base.html:183 +#: build/models.py:231 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Budowa nadrzędna" -#: build/models.py:230 +#: build/models.py:232 msgid "BuildOrder to which this build is allocated" msgstr "Zamówienie budowy, do którego budowa jest przypisana" -#: build/models.py:235 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 -#: order/models.py:1450 order/models.py:1595 order/models.py:1596 -#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 -#: part/models.py:3191 part/models.py:3335 part/models.py:3358 -#: part/models.py:3379 part/models.py:3401 part/models.py:3511 -#: part/models.py:3807 part/models.py:3963 part/models.py:4056 -#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 +#: build/models.py:237 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1026 order/api.py:805 +#: order/models.py:1414 order/models.py:1559 order/models.py:1560 +#: part/api.py:1494 part/api.py:1788 part/models.py:395 part/models.py:3012 +#: part/models.py:3156 part/models.py:3303 part/models.py:3324 +#: part/models.py:3346 part/models.py:3477 part/models.py:3787 +#: part/models.py:3943 part/models.py:4036 part/models.py:4395 +#: part/serializers.py:1120 part/serializers.py:1726 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -875,8 +783,8 @@ msgstr "Zamówienie budowy, do którego budowa jest przypisana" #: report/templates/report/inventree_return_order_report.html:24 #: report/templates/report/inventree_sales_order_report.html:27 #: report/templates/report/inventree_stock_location_report.html:102 -#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 -#: stock/serializers.py:818 templates/InvenTree/search.html:82 +#: stock/serializers.py:109 stock/serializers.py:157 stock/serializers.py:423 +#: stock/serializers.py:820 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 @@ -889,8 +797,8 @@ msgstr "Zamówienie budowy, do którego budowa jest przypisana" #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 -#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2323 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:1944 templates/js/translated/part.js:2016 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 #: templates/js/translated/purchase_order.js:751 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1848 @@ -908,107 +816,107 @@ msgstr "Zamówienie budowy, do którego budowa jest przypisana" msgid "Part" msgstr "Komponent" -#: build/models.py:243 +#: build/models.py:245 msgid "Select part to build" msgstr "Wybierz część do budowy" -#: build/models.py:248 +#: build/models.py:250 msgid "Sales Order Reference" msgstr "Odwołanie do zamówienia sprzedaży" -#: build/models.py:252 +#: build/models.py:254 msgid "SalesOrder to which this build is allocated" msgstr "Zamówienie sprzedaży, do którego budowa jest przypisana" -#: build/models.py:257 build/serializers.py:1000 +#: build/models.py:259 build/serializers.py:999 #: templates/js/translated/build.js:1731 #: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "Lokalizacja źródła" -#: build/models.py:261 +#: build/models.py:263 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:266 +#: build/models.py:268 msgid "Destination Location" msgstr "Lokalizacja docelowa" -#: build/models.py:270 +#: build/models.py:272 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:274 +#: build/models.py:276 msgid "Build Quantity" msgstr "Ilość do stworzenia" -#: build/models.py:277 +#: build/models.py:279 msgid "Number of stock items to build" msgstr "Ilość przedmiotów do zbudowania" -#: build/models.py:281 +#: build/models.py:283 msgid "Completed items" msgstr "Ukończone elementy" -#: build/models.py:283 +#: build/models.py:285 msgid "Number of stock items which have been completed" msgstr "Ilość produktów magazynowych które zostały ukończone" -#: build/models.py:287 +#: build/models.py:289 msgid "Build Status" msgstr "Status budowania" -#: build/models.py:291 +#: build/models.py:293 msgid "Build status code" msgstr "Kod statusu budowania" -#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 -#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 +#: build/models.py:302 build/serializers.py:286 order/serializers.py:580 +#: stock/models.py:838 stock/serializers.py:74 stock/serializers.py:1458 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Kod partii" -#: build/models.py:304 build/serializers.py:288 +#: build/models.py:306 build/serializers.py:287 msgid "Batch code for this build output" msgstr "Kod partii dla wyjścia budowy" -#: build/models.py:307 order/models.py:316 order/serializers.py:120 -#: part/models.py:1122 part/templates/part/part_base.html:310 +#: build/models.py:309 order/models.py:316 order/serializers.py:119 +#: part/models.py:1115 part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:338 #: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "Data utworzenia" -#: build/models.py:311 +#: build/models.py:313 msgid "Target completion date" msgstr "Docelowy termin zakończenia" -#: build/models.py:312 +#: build/models.py:314 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:315 order/models.py:521 order/models.py:2101 +#: build/models.py:317 order/models.py:521 order/models.py:2065 #: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "Data zakończenia" -#: build/models.py:321 +#: build/models.py:323 msgid "completed by" msgstr "zrealizowane przez" -#: build/models.py:329 templates/js/translated/build.js:2207 +#: build/models.py:331 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "Wydany przez" -#: build/models.py:330 +#: build/models.py:332 msgid "User who issued this build order" msgstr "Użytkownik, który wydał to zamówienie" -#: build/models.py:338 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:145 +#: build/models.py:340 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:147 #: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:232 part/models.py:1139 +#: order/templates/order/sales_order_base.html:232 part/models.py:1132 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_report.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 @@ -1019,31 +927,36 @@ msgstr "Użytkownik, który wydał to zamówienie" msgid "Responsible" msgstr "Odpowiedzialny" -#: build/models.py:339 +#: build/models.py:341 msgid "User or group responsible for this build order" msgstr "Użytkownik lub grupa odpowiedzialna za te zlecenie produkcji" -#: build/models.py:344 build/templates/build/detail.html:108 +#: build/models.py:346 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:184 -#: part/templates/part/part_base.html:383 stock/models.py:836 +#: part/templates/part/part_base.html:383 stock/models.py:834 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "Link Zewnętrzny" -#: build/models.py:349 +#: build/models.py:347 common/models.py:3178 part/models.py:956 +#: stock/models.py:834 +msgid "Link to external URL" +msgstr "Link do zewnętrznego adresu URL" + +#: build/models.py:351 msgid "Build Priority" msgstr "Priorytet budowy" -#: build/models.py:352 +#: build/models.py:354 msgid "Priority of this build order" msgstr "Priorytet tego zamówienia produkcji" -#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: build/models.py:361 common/models.py:131 order/admin.py:18 #: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 #: templates/js/translated/build.js:2144 #: templates/js/translated/purchase_order.js:1710 @@ -1054,65 +967,65 @@ msgstr "Priorytet tego zamówienia produkcji" msgid "Project Code" msgstr "Kod projektu" -#: build/models.py:360 +#: build/models.py:362 msgid "Project code for this build order" msgstr "Kod projektu dla tego zlecenia produkcji" -#: build/models.py:593 build/models.py:658 +#: build/models.py:595 build/models.py:660 msgid "Failed to offload task to complete build allocations" msgstr "" -#: build/models.py:615 +#: build/models.py:617 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Kolejność kompilacji {build} została zakończona" -#: build/models.py:621 +#: build/models.py:623 msgid "A build order has been completed" msgstr "Kolejność kompilacji została zakończona" -#: build/models.py:847 build/models.py:932 +#: build/models.py:849 build/models.py:934 msgid "No build output specified" msgstr "Nie określono danych wyjściowych budowy" -#: build/models.py:850 +#: build/models.py:852 msgid "Build output is already completed" msgstr "Budowanie wyjścia jest już ukończone" -#: build/models.py:853 +#: build/models.py:855 msgid "Build output does not match Build Order" msgstr "Skompilowane dane wyjściowe nie pasują do kolejności kompilacji" -#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 -#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 -#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 -#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 +#: build/models.py:938 build/serializers.py:219 build/serializers.py:268 +#: build/serializers.py:866 order/models.py:559 order/serializers.py:432 +#: order/serializers.py:575 part/serializers.py:1484 part/serializers.py:1884 +#: stock/models.py:677 stock/models.py:1495 stock/serializers.py:603 msgid "Quantity must be greater than zero" msgstr "Ilość musi być większa niż zero" -#: build/models.py:941 build/serializers.py:225 +#: build/models.py:943 build/serializers.py:224 msgid "Quantity cannot be greater than the output quantity" msgstr "Ilość nie może być większa niż ilość wyjściowa" -#: build/models.py:1001 build/serializers.py:548 +#: build/models.py:1003 build/serializers.py:547 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "Wyjście budowy {serial} nie przeszło wszystkich testów" -#: build/models.py:1352 +#: build/models.py:1344 msgid "Build Order Line Item" msgstr "" -#: build/models.py:1377 +#: build/models.py:1369 msgid "Build object" msgstr "Zbuduj obiekt" -#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 -#: build/serializers.py:254 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2539 -#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 -#: part/forms.py:48 part/models.py:3205 part/models.py:4078 +#: build/models.py:1383 build/models.py:1639 build/serializers.py:206 +#: build/serializers.py:253 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2509 +#: order/models.py:1272 order/models.py:1931 order/serializers.py:1327 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3170 part/models.py:4058 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1121,8 +1034,8 @@ msgstr "Zbuduj obiekt" #: report/templates/report/inventree_sales_order_report.html:29 #: report/templates/report/inventree_stock_location_report.html:104 #: report/templates/report/inventree_test_report.html:90 -#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 -#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:125 stock/serializers.py:165 stock/serializers.py:594 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1133,8 +1046,8 @@ msgstr "Zbuduj obiekt" #: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 #: templates/js/translated/model_renderers.js:236 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:962 +#: templates/js/translated/part.js:1812 templates/js/translated/part.js:3342 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1154,38 +1067,38 @@ msgstr "Zbuduj obiekt" msgid "Quantity" msgstr "Ilość" -#: build/models.py:1392 +#: build/models.py:1384 msgid "Required quantity for build order" msgstr "Wymagana ilość dla zlecenia produkcji" -#: build/models.py:1472 +#: build/models.py:1464 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1481 +#: build/models.py:1473 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" -msgstr "" +msgstr "Przydzielona ilość ({q}) nie może przekraczać dostępnej ilości zapasów magazynowych ({a})" -#: build/models.py:1491 order/models.py:1918 +#: build/models.py:1483 order/models.py:1882 msgid "Stock item is over-allocated" msgstr "Pozycja magazynowa jest nadmiernie przydzielona" -#: build/models.py:1497 order/models.py:1921 +#: build/models.py:1489 order/models.py:1885 msgid "Allocation quantity must be greater than zero" msgstr "Alokowana ilość musi być większa niż zero" -#: build/models.py:1503 +#: build/models.py:1495 msgid "Quantity must be 1 for serialized stock" msgstr "Ilość musi wynosić 1 dla serializowanych zasobów" -#: build/models.py:1562 +#: build/models.py:1554 msgid "Selected stock item does not match BOM line" msgstr "Wybrana pozycja magazynowa nie pasuje do pozycji w zestawieniu BOM" -#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 -#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 -#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: build/models.py:1626 build/serializers.py:846 order/serializers.py:1171 +#: order/serializers.py:1192 stock/models.py:358 stock/serializers.py:91 +#: stock/serializers.py:697 stock/serializers.py:1177 stock/serializers.py:1289 #: stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 @@ -1201,70 +1114,70 @@ msgstr "Wybrana pozycja magazynowa nie pasuje do pozycji w zestawieniu BOM" msgid "Stock Item" msgstr "Element magazynowy" -#: build/models.py:1635 +#: build/models.py:1627 msgid "Source stock item" msgstr "Lokalizacja magazynowania przedmiotu" -#: build/models.py:1648 +#: build/models.py:1640 msgid "Stock quantity to allocate to build" msgstr "Ilość zapasów do przydzielenia do produkcji" -#: build/models.py:1656 +#: build/models.py:1648 msgid "Install into" msgstr "Zainstaluj do" -#: build/models.py:1657 +#: build/models.py:1649 msgid "Destination stock item" msgstr "Docelowa lokalizacja magazynowa przedmiotu" -#: build/serializers.py:157 build/serializers.py:876 +#: build/serializers.py:156 build/serializers.py:875 #: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "" -#: build/serializers.py:169 +#: build/serializers.py:168 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:173 +#: build/serializers.py:172 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:177 +#: build/serializers.py:176 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:188 +#: build/serializers.py:187 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:208 build/serializers.py:255 +#: build/serializers.py:207 build/serializers.py:254 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:276 +#: build/serializers.py:275 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:279 +#: build/serializers.py:278 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:294 order/serializers.py:589 order/serializers.py:1343 -#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:293 order/serializers.py:588 order/serializers.py:1331 +#: stock/serializers.py:614 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Numer seryjny" -#: build/serializers.py:295 +#: build/serializers.py:294 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 -#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 -#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 -#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 -#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 +#: build/serializers.py:299 build/serializers.py:440 build/serializers.py:512 +#: order/serializers.py:564 order/serializers.py:672 order/serializers.py:1656 +#: part/serializers.py:1140 stock/serializers.py:100 stock/serializers.py:625 +#: stock/serializers.py:785 stock/serializers.py:881 stock/serializers.py:1321 +#: stock/serializers.py:1577 stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:1001 #: templates/js/translated/build.js:2372 @@ -1280,54 +1193,54 @@ msgstr "" msgid "Location" msgstr "Lokalizacja" -#: build/serializers.py:301 +#: build/serializers.py:300 msgid "Stock location for build output" msgstr "" -#: build/serializers.py:315 +#: build/serializers.py:314 msgid "Auto Allocate Serial Numbers" msgstr "Automatycznie przydzielaj numery seryjne" -#: build/serializers.py:316 +#: build/serializers.py:315 msgid "Automatically allocate required items with matching serial numbers" msgstr "Automatycznie przydzielaj wymagane elementy z pasującymi numerami seryjnymi" -#: build/serializers.py:331 +#: build/serializers.py:330 msgid "Serial numbers must be provided for trackable parts" msgstr "" -#: build/serializers.py:356 stock/api.py:1031 +#: build/serializers.py:355 stock/api.py:1041 msgid "The following serial numbers already exist or are invalid" msgstr "Poniższe numery seryjne już istnieją lub są nieprawidłowe" -#: build/serializers.py:403 build/serializers.py:465 build/serializers.py:554 +#: build/serializers.py:402 build/serializers.py:464 build/serializers.py:553 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:442 +#: build/serializers.py:441 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:448 +#: build/serializers.py:447 msgid "Discard Allocations" msgstr "Odrzuć przydziały" -#: build/serializers.py:449 +#: build/serializers.py:448 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:454 +#: build/serializers.py:453 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:514 +#: build/serializers.py:513 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:520 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:952 -#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 -#: stock/serializers.py:930 stock/serializers.py:1469 +#: build/serializers.py:519 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2044 order/serializers.py:596 stock/admin.py:164 +#: stock/serializers.py:932 stock/serializers.py:1465 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 @@ -1339,188 +1252,188 @@ msgstr "" msgid "Status" msgstr "" -#: build/serializers.py:526 +#: build/serializers.py:525 msgid "Accept Incomplete Allocation" msgstr "Zaakceptuj niekompletną alokację" -#: build/serializers.py:527 +#: build/serializers.py:526 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:611 msgid "Consume Allocated Stock" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:612 msgid "Consume any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:619 +#: build/serializers.py:618 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:620 +#: build/serializers.py:619 msgid "Delete any build outputs which have not been completed" msgstr "Usuń produkcje, które nie zostały zakończone" -#: build/serializers.py:647 +#: build/serializers.py:646 msgid "Not permitted" msgstr "Niedozwolone" -#: build/serializers.py:648 +#: build/serializers.py:647 msgid "Accept as consumed by this build order" msgstr "Zaakceptuj jako zużyte przez zlecenie produkcji" -#: build/serializers.py:649 +#: build/serializers.py:648 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:679 +#: build/serializers.py:678 msgid "Overallocated Stock" msgstr "Nadmierny przydział zasobów" -#: build/serializers.py:681 +#: build/serializers.py:680 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:691 +#: build/serializers.py:690 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:696 +#: build/serializers.py:695 msgid "Accept Unallocated" -msgstr "" +msgstr "Zaakceptuj nieprzydzielone" -#: build/serializers.py:697 +#: build/serializers.py:696 msgid "Accept that stock items have not been fully allocated to this build order" -msgstr "" +msgstr "Zaakceptuj, że przedmioty magazynowe nie zostały w pełni przypisane do tego zlecenia budowy" -#: build/serializers.py:707 templates/js/translated/build.js:315 +#: build/serializers.py:706 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" -msgstr "" +msgstr "Wymagany stan nie został w pełni przypisany" -#: build/serializers.py:712 order/serializers.py:301 order/serializers.py:1246 +#: build/serializers.py:711 order/serializers.py:300 order/serializers.py:1234 msgid "Accept Incomplete" msgstr "Akceptuj niekompletne" -#: build/serializers.py:713 +#: build/serializers.py:712 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:723 templates/js/translated/build.js:319 +#: build/serializers.py:722 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:732 templates/js/translated/build.js:303 +#: build/serializers.py:731 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:770 +#: build/serializers.py:769 msgid "Build Line" msgstr "" -#: build/serializers.py:780 +#: build/serializers.py:779 msgid "Build output" msgstr "" -#: build/serializers.py:788 +#: build/serializers.py:787 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:824 +#: build/serializers.py:823 msgid "Build Line Item" msgstr "" -#: build/serializers.py:838 +#: build/serializers.py:837 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:853 stock/serializers.py:1194 +#: build/serializers.py:852 stock/serializers.py:1190 msgid "Item must be in stock" msgstr "Towar musi znajdować się w magazynie" -#: build/serializers.py:901 order/serializers.py:1237 +#: build/serializers.py:900 order/serializers.py:1225 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:907 +#: build/serializers.py:906 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:914 +#: build/serializers.py:913 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:938 order/serializers.py:1489 +#: build/serializers.py:937 order/serializers.py:1477 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:1001 +#: build/serializers.py:1000 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:1009 +#: build/serializers.py:1008 msgid "Exclude Location" msgstr "Wyklucz lokalizację" -#: build/serializers.py:1010 +#: build/serializers.py:1009 msgid "Exclude stock items from this selected location" msgstr "Wyklucz produkty magazynowe z wybranej lokalizacji" -#: build/serializers.py:1015 +#: build/serializers.py:1014 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:1016 +#: build/serializers.py:1015 msgid "Stock items in multiple locations can be used interchangeably" msgstr "Towary magazynowe w wielu lokalizacjach mogą być stosowane zamiennie" -#: build/serializers.py:1021 +#: build/serializers.py:1020 msgid "Substitute Stock" msgstr "Zastępczy magazyn" -#: build/serializers.py:1022 +#: build/serializers.py:1021 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:1027 +#: build/serializers.py:1026 msgid "Optional Items" msgstr "Przedmiot opcjonalny" -#: build/serializers.py:1028 +#: build/serializers.py:1027 msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1050 +#: build/serializers.py:1049 msgid "Failed to start auto-allocation task" msgstr "" -#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 -#: stock/api.py:794 +#: build/serializers.py:1139 part/models.py:3953 part/models.py:4387 +#: stock/api.py:804 msgid "BOM Item" msgstr "Element BOM" -#: build/serializers.py:1149 templates/js/translated/index.js:130 +#: build/serializers.py:1148 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:832 part/serializers.py:1506 +#: build/serializers.py:1153 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:828 part/serializers.py:1502 #: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 -#: templates/js/translated/build.js:2613 templates/js/translated/part.js:709 -#: templates/js/translated/part.js:2148 +#: templates/js/translated/build.js:2613 templates/js/translated/part.js:710 +#: templates/js/translated/part.js:2149 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "W Zamówieniu" -#: build/serializers.py:1159 part/serializers.py:1508 +#: build/serializers.py:1158 part/serializers.py:1504 #: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "W produkcji" -#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 +#: build/serializers.py:1163 part/bom.py:172 part/serializers.py:1527 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1929 msgid "Available Stock" @@ -1544,7 +1457,7 @@ msgstr "Anulowano" #: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 #: order/status_codes.py:44 order/status_codes.py:69 #: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:165 report/models.py:443 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 msgid "Complete" msgstr "Zakończono" @@ -1674,11 +1587,11 @@ msgstr "" #: build/templates/build/build_base.html:160 #: build/templates/build/detail.html:138 order/models.py:309 -#: order/models.py:1343 order/templates/order/order_base.html:186 +#: order/models.py:1307 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:196 #: report/templates/report/inventree_build_order_report.html:125 -#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1831 #: templates/js/translated/purchase_order.js:1739 #: templates/js/translated/purchase_order.js:2147 #: templates/js/translated/return_order.js:346 @@ -1711,8 +1624,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 -#: order/models.py:1587 order/models.py:1701 order/models.py:1855 +#: build/templates/build/detail.html:101 order/api.py:1463 order/models.py:845 +#: order/models.py:1551 order/models.py:1665 order/models.py:1819 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_report.html:135 @@ -1762,7 +1675,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:1479 +#: build/templates/build/detail.html:49 order/models.py:1443 #: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "Przeznaczenie" @@ -1775,7 +1688,7 @@ msgstr "Nie określono lokalizacji docelowej" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:163 +#: build/templates/build/detail.html:80 stock/admin.py:162 #: stock/templates/stock/item_base.html:162 #: templates/js/translated/build.js:1380 #: templates/js/translated/model_renderers.js:241 @@ -1894,11 +1807,11 @@ msgstr "Załączniki" msgid "Build Notes" msgstr "Notatki tworzenia" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:436 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -1914,6 +1827,34 @@ msgstr "" msgid "Incomplete Outputs" msgstr "" +#: common/api.py:689 +msgid "Is Link" +msgstr "" + +#: common/api.py:697 +msgid "Is File" +msgstr "" + +#: common/api.py:739 +msgid "User does not have permission to delete this attachment" +msgstr "" + +#: common/currency.py:130 +msgid "Invalid currency code" +msgstr "" + +#: common/currency.py:132 +msgid "Duplicate currency code" +msgstr "" + +#: common/currency.py:137 +msgid "No valid currency codes provided" +msgstr "" + +#: common/currency.py:154 +msgid "No plugin" +msgstr "Brak wtyczki" + #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1952,1509 +1893,1512 @@ msgstr "{name.title()} Plik" msgid "Select {name} file to upload" msgstr "Wybierz plik {name} do przesłania" -#: common/models.py:71 +#: common/models.py:73 msgid "Updated" msgstr "Zaktualizowany" -#: common/models.py:72 +#: common/models.py:74 msgid "Timestamp of last update" msgstr "Data ostatniej aktualizacji" -#: common/models.py:105 +#: common/models.py:107 msgid "Site URL is locked by configuration" msgstr "" -#: common/models.py:130 +#: common/models.py:132 msgid "Unique project code" msgstr "Unikalny kod projektu" -#: common/models.py:137 +#: common/models.py:139 msgid "Project description" msgstr "Opis projektu" -#: common/models.py:146 +#: common/models.py:148 msgid "User or group responsible for this project" msgstr "Użytkownik lub grupa odpowiedzialna za to zamówienie" -#: common/models.py:766 +#: common/models.py:765 msgid "Settings key (must be unique - case insensitive)" msgstr "Klucz ustawień (musi być unikalny - niewrażliwy na wielkość liter)" -#: common/models.py:770 +#: common/models.py:769 msgid "Settings value" msgstr "Ustawienia wartości" -#: common/models.py:822 +#: common/models.py:821 msgid "Chosen value is not a valid option" msgstr "Wybrana wartość nie jest poprawną opcją" -#: common/models.py:838 +#: common/models.py:837 msgid "Value must be a boolean value" msgstr "Wartość musi być wartością binarną" -#: common/models.py:846 +#: common/models.py:845 msgid "Value must be an integer value" msgstr "Wartość musi być liczbą całkowitą" -#: common/models.py:883 +#: common/models.py:882 msgid "Key string must be unique" msgstr "Ciąg musi być unikatowy" -#: common/models.py:1115 +#: common/models.py:1114 msgid "No group" msgstr "Brak grupy" -#: common/models.py:1158 -msgid "An empty domain is not allowed." -msgstr "Pusta domena nie jest dozwolona." - -#: common/models.py:1160 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "Niepoprawna nazwa domeny: {domain}" - -#: common/models.py:1172 -msgid "No plugin" -msgstr "Brak wtyczki" - -#: common/models.py:1260 +#: common/models.py:1213 msgid "Restart required" msgstr "Wymagane ponowne uruchomienie" -#: common/models.py:1262 +#: common/models.py:1215 msgid "A setting has been changed which requires a server restart" msgstr "Zmieniono ustawienie, które wymaga restartu serwera" -#: common/models.py:1269 +#: common/models.py:1222 msgid "Pending migrations" msgstr "Oczekujące migracje" -#: common/models.py:1270 +#: common/models.py:1223 msgid "Number of pending database migrations" msgstr "Liczba oczekujących migracji bazy danych" -#: common/models.py:1275 +#: common/models.py:1228 msgid "Server Instance Name" msgstr "Nazwa instancji serwera" -#: common/models.py:1277 +#: common/models.py:1230 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1281 +#: common/models.py:1234 msgid "Use instance name" msgstr "Użyj nazwy instancji" -#: common/models.py:1282 +#: common/models.py:1235 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1287 +#: common/models.py:1240 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1288 +#: common/models.py:1241 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1293 company/models.py:108 company/models.py:109 +#: common/models.py:1246 company/models.py:111 company/models.py:112 msgid "Company name" msgstr "Nazwa firmy" -#: common/models.py:1294 +#: common/models.py:1247 msgid "Internal company name" msgstr "Wewnętrzna nazwa firmy" -#: common/models.py:1298 +#: common/models.py:1251 msgid "Base URL" msgstr "Bazowy URL" -#: common/models.py:1299 +#: common/models.py:1252 msgid "Base URL for server instance" msgstr "Bazowy adres URL dla instancji serwera" -#: common/models.py:1305 +#: common/models.py:1258 msgid "Default Currency" msgstr "Domyślna waluta" -#: common/models.py:1306 +#: common/models.py:1259 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1312 +#: common/models.py:1265 +msgid "Supported Currencies" +msgstr "" + +#: common/models.py:1266 +msgid "List of supported currency codes" +msgstr "" + +#: common/models.py:1272 msgid "Currency Update Interval" msgstr "Interwał aktualizacji waluty" -#: common/models.py:1314 +#: common/models.py:1274 msgid "How often to update exchange rates (set to zero to disable)" msgstr "Jak często aktualizować kursy wymiany walut (ustaw zero aby wyłączyć)" -#: common/models.py:1317 common/models.py:1373 common/models.py:1386 -#: common/models.py:1394 common/models.py:1403 common/models.py:1412 -#: common/models.py:1620 common/models.py:1642 common/models.py:1757 -#: common/models.py:2076 +#: common/models.py:1277 common/models.py:1333 common/models.py:1346 +#: common/models.py:1354 common/models.py:1363 common/models.py:1372 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:2046 msgid "days" msgstr "dni" -#: common/models.py:1321 +#: common/models.py:1281 msgid "Currency Update Plugin" msgstr "Wtyczka aktualizacji waluty" -#: common/models.py:1322 +#: common/models.py:1282 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1327 +#: common/models.py:1287 msgid "Download from URL" msgstr "Pobierz z adresu URL" -#: common/models.py:1329 +#: common/models.py:1289 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:1335 +#: common/models.py:1295 msgid "Download Size Limit" msgstr "Limit rozmiaru pobierania" -#: common/models.py:1336 +#: common/models.py:1296 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1342 +#: common/models.py:1302 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1344 +#: common/models.py:1304 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:1349 +#: common/models.py:1309 msgid "Strict URL Validation" msgstr "Ścisła weryfikacja adresu URL" -#: common/models.py:1350 +#: common/models.py:1310 msgid "Require schema specification when validating URLs" msgstr "Wymagaj specyfikacji schematu podczas sprawdzania poprawności adresów URL" -#: common/models.py:1355 +#: common/models.py:1315 msgid "Require confirm" msgstr "Wymagaj potwierdzenia" -#: common/models.py:1356 +#: common/models.py:1316 msgid "Require explicit user confirmation for certain action." msgstr "Wymagaj wyraźnego potwierdzenia dla określonych działań." -#: common/models.py:1361 +#: common/models.py:1321 msgid "Tree Depth" msgstr "Głębokość drzewa" -#: common/models.py:1363 +#: common/models.py:1323 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:1369 +#: common/models.py:1329 msgid "Update Check Interval" msgstr "Częstotliwość sprawdzania aktualizacji" -#: common/models.py:1370 +#: common/models.py:1330 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:1376 +#: common/models.py:1336 msgid "Automatic Backup" msgstr "Automatyczna kopia zapasowa" -#: common/models.py:1377 +#: common/models.py:1337 msgid "Enable automatic backup of database and media files" msgstr "Włącz automatyczną kopię zapasową bazy danych i plików multimedialnych" -#: common/models.py:1382 +#: common/models.py:1342 msgid "Auto Backup Interval" msgstr "Interwał automatycznego tworzenia kopii zapasowych" -#: common/models.py:1383 +#: common/models.py:1343 msgid "Specify number of days between automated backup events" msgstr "Określ liczbę dni między zdarzeniami automatycznej kopii zapasowej" -#: common/models.py:1389 +#: common/models.py:1349 msgid "Task Deletion Interval" msgstr "Interwał usuwania zadań" -#: common/models.py:1391 +#: common/models.py:1351 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1398 +#: common/models.py:1358 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1400 +#: common/models.py:1360 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1407 +#: common/models.py:1367 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1409 +#: common/models.py:1369 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1416 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1376 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Obsługa kodu kreskowego" -#: common/models.py:1417 +#: common/models.py:1377 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1422 +#: common/models.py:1382 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1423 +#: common/models.py:1383 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1429 +#: common/models.py:1389 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1430 +#: common/models.py:1390 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1435 +#: common/models.py:1395 msgid "Part Revisions" msgstr "" -#: common/models.py:1436 +#: common/models.py:1396 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1441 +#: common/models.py:1401 msgid "Allow Deletion from Assembly" msgstr "" -#: common/models.py:1442 +#: common/models.py:1402 msgid "Allow deletion of parts which are used in an assembly" msgstr "" -#: common/models.py:1447 +#: common/models.py:1407 msgid "IPN Regex" msgstr "Wyrażenie regularne IPN" -#: common/models.py:1448 +#: common/models.py:1408 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1451 +#: common/models.py:1411 msgid "Allow Duplicate IPN" msgstr "Zezwól na powtarzający się IPN" -#: common/models.py:1452 +#: common/models.py:1412 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1457 +#: common/models.py:1417 msgid "Allow Editing IPN" msgstr "Zezwól na edycję IPN" -#: common/models.py:1458 +#: common/models.py:1418 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1463 +#: common/models.py:1423 msgid "Copy Part BOM Data" msgstr "Skopiuj BOM komponentu" -#: common/models.py:1464 +#: common/models.py:1424 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1469 +#: common/models.py:1429 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1470 +#: common/models.py:1430 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1475 +#: common/models.py:1435 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1476 +#: common/models.py:1436 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1481 +#: common/models.py:1441 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1482 +#: common/models.py:1442 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1487 part/admin.py:108 part/models.py:3815 -#: report/models.py:293 report/models.py:360 report/serializers.py:90 -#: report/serializers.py:131 stock/serializers.py:228 +#: common/models.py:1447 part/admin.py:108 part/models.py:3795 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:227 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "Szablon" -#: common/models.py:1488 +#: common/models.py:1448 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 +#: common/models.py:1453 part/admin.py:91 part/admin.py:425 part/models.py:1052 #: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" msgstr "Złożenie" -#: common/models.py:1494 +#: common/models.py:1454 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1499 part/admin.py:95 part/models.py:1065 +#: common/models.py:1459 part/admin.py:95 part/models.py:1058 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "Komponent" -#: common/models.py:1500 +#: common/models.py:1460 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1505 part/admin.py:100 part/models.py:1077 +#: common/models.py:1465 part/admin.py:100 part/models.py:1070 msgid "Purchaseable" msgstr "Możliwość zakupu" -#: common/models.py:1506 +#: common/models.py:1466 msgid "Parts are purchaseable by default" msgstr "Części są domyślnie z możliwością zakupu" -#: common/models.py:1511 part/admin.py:104 part/models.py:1083 +#: common/models.py:1471 part/admin.py:104 part/models.py:1076 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "Możliwość sprzedaży" -#: common/models.py:1512 +#: common/models.py:1472 msgid "Parts are salable by default" msgstr "Części są domyślnie z możliwością sprzedaży" -#: common/models.py:1517 part/admin.py:113 part/models.py:1071 +#: common/models.py:1477 part/admin.py:113 part/models.py:1064 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" msgstr "Możliwość śledzenia" -#: common/models.py:1518 +#: common/models.py:1478 msgid "Parts are trackable by default" msgstr "Części są domyślnie z możliwością śledzenia" -#: common/models.py:1523 part/admin.py:117 part/models.py:1093 +#: common/models.py:1483 part/admin.py:117 part/models.py:1086 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" msgstr "Wirtualny" -#: common/models.py:1524 +#: common/models.py:1484 msgid "Parts are virtual by default" msgstr "Części są domyślnie wirtualne" -#: common/models.py:1529 +#: common/models.py:1489 msgid "Show Import in Views" msgstr "" -#: common/models.py:1530 +#: common/models.py:1490 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1535 +#: common/models.py:1495 msgid "Show related parts" -msgstr "" +msgstr "Pokaż powiązane części" -#: common/models.py:1536 +#: common/models.py:1496 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1541 +#: common/models.py:1501 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1542 +#: common/models.py:1502 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1547 templates/js/translated/part.js:107 +#: common/models.py:1507 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1549 +#: common/models.py:1509 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1555 +#: common/models.py:1515 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1556 +#: common/models.py:1516 msgid "Format to display the part name" msgstr "" -#: common/models.py:1562 +#: common/models.py:1522 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1563 +#: common/models.py:1523 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1567 +#: common/models.py:1527 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1569 +#: common/models.py:1529 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1575 +#: common/models.py:1535 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1577 +#: common/models.py:1537 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1583 +#: common/models.py:1548 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1585 +#: common/models.py:1550 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1591 +#: common/models.py:1561 msgid "Use Supplier Pricing" -msgstr "" +msgstr "Użyj cennika dostawcy" -#: common/models.py:1593 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1599 +#: common/models.py:1569 msgid "Purchase History Override" -msgstr "" +msgstr "Nadpisanie historii zakupów" -#: common/models.py:1601 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1607 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1609 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1615 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1617 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1630 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1632 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1638 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1640 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1647 +#: common/models.py:1617 msgid "Internal Prices" msgstr "Ceny wewnętrzne" -#: common/models.py:1648 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1653 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1655 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1661 +#: common/models.py:1631 msgid "Enable label printing" msgstr "Włącz drukowanie etykiet" -#: common/models.py:1662 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "Włącz drukowanie etykiet z interfejsu WWW" -#: common/models.py:1667 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "DPI etykiety" -#: common/models.py:1669 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1675 +#: common/models.py:1645 msgid "Enable Reports" msgstr "Włącz raporty" -#: common/models.py:1676 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1681 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "Tryb Debugowania" -#: common/models.py:1682 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1687 +#: common/models.py:1657 msgid "Log Report Errors" msgstr "" -#: common/models.py:1688 +#: common/models.py:1658 msgid "Log errors which occur when generating reports" msgstr "" -#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:301 +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:302 msgid "Page Size" msgstr "Rozmiar strony" -#: common/models.py:1694 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "Domyślna wielkość strony dla raportów PDF" -#: common/models.py:1699 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1700 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "Włącz generowanie raportów testów" -#: common/models.py:1705 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1707 +#: common/models.py:1677 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1713 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1714 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1719 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1720 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1725 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1727 +#: common/models.py:1697 msgid "Determines default behavior when a stock item is depleted" msgstr "" -#: common/models.py:1733 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1735 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1740 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1741 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1746 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1747 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1752 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1754 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1761 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1762 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1767 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1768 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1773 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1774 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1778 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1779 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1784 +#: common/models.py:1754 msgid "Check BOM when installing items" msgstr "" -#: common/models.py:1786 +#: common/models.py:1756 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "" -#: common/models.py:1792 +#: common/models.py:1762 msgid "Allow Out of Stock Transfer" msgstr "" -#: common/models.py:1794 +#: common/models.py:1764 msgid "Allow stock items which are not in stock to be transferred between stock locations" msgstr "" -#: common/models.py:1800 +#: common/models.py:1770 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1802 +#: common/models.py:1772 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1808 common/models.py:1836 common/models.py:1858 -#: common/models.py:1894 +#: common/models.py:1778 common/models.py:1806 common/models.py:1828 +#: common/models.py:1864 msgid "Require Responsible Owner" msgstr "" -#: common/models.py:1809 common/models.py:1837 common/models.py:1859 -#: common/models.py:1895 +#: common/models.py:1779 common/models.py:1807 common/models.py:1829 +#: common/models.py:1865 msgid "A responsible owner must be assigned to each order" msgstr "" -#: common/models.py:1814 +#: common/models.py:1784 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1816 +#: common/models.py:1786 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:1822 +#: common/models.py:1792 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1823 +#: common/models.py:1793 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1828 +#: common/models.py:1798 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1830 +#: common/models.py:1800 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1842 +#: common/models.py:1812 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1844 +#: common/models.py:1814 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1850 +#: common/models.py:1820 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1852 +#: common/models.py:1822 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1864 +#: common/models.py:1834 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1865 +#: common/models.py:1835 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1870 +#: common/models.py:1840 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1872 +#: common/models.py:1842 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1878 -#, fuzzy -#| msgid "Mark order as complete" +#: common/models.py:1848 msgid "Mark Shipped Orders as Complete" -msgstr "Oznacz zamówienie jako zakończone" +msgstr "" -#: common/models.py:1880 +#: common/models.py:1850 msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" msgstr "" -#: common/models.py:1886 +#: common/models.py:1856 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1888 +#: common/models.py:1858 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1900 +#: common/models.py:1870 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1902 +#: common/models.py:1872 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1908 +#: common/models.py:1878 msgid "Auto Complete Purchase Orders" msgstr "Automatycznie wypełniaj zlecenia zakupu" -#: common/models.py:1910 +#: common/models.py:1880 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "Automatycznie oznacz zlecenia jako zakończone po odebraniu wszystkich pozycji" -#: common/models.py:1917 +#: common/models.py:1887 msgid "Enable password forgot" msgstr "Włącz opcję zapomnianego hasła" -#: common/models.py:1918 +#: common/models.py:1888 msgid "Enable password forgot function on the login pages" msgstr "Włącz funkcję zapomnianego hasła na stronach logowania" -#: common/models.py:1923 +#: common/models.py:1893 msgid "Enable registration" msgstr "Włącz rejestrację" -#: common/models.py:1924 +#: common/models.py:1894 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:1929 +#: common/models.py:1899 msgid "Enable SSO" msgstr "Włącz SSO" -#: common/models.py:1930 +#: common/models.py:1900 msgid "Enable SSO on the login pages" msgstr "Włącz SSO na stronach logowania" -#: common/models.py:1935 +#: common/models.py:1905 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1937 +#: common/models.py:1907 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1943 +#: common/models.py:1913 msgid "Email required" msgstr "Adres e-mail jest wymagany" -#: common/models.py:1944 +#: common/models.py:1914 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1949 +#: common/models.py:1919 msgid "Auto-fill SSO users" msgstr "Autouzupełnianie użytkowników SSO" -#: common/models.py:1951 +#: common/models.py:1921 msgid "Automatically fill out user-details from SSO account-data" msgstr "Automatycznie wypełnij dane użytkownika z danych konta SSO" -#: common/models.py:1957 +#: common/models.py:1927 msgid "Mail twice" msgstr "E-mail dwa razy" -#: common/models.py:1958 +#: common/models.py:1928 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:1963 +#: common/models.py:1933 msgid "Password twice" msgstr "Hasło dwukrotnie" -#: common/models.py:1964 +#: common/models.py:1934 msgid "On signup ask users twice for their password" msgstr "Przy rejestracji dwukrotnie zapytaj użytkowników o ich hasło" -#: common/models.py:1969 +#: common/models.py:1939 msgid "Allowed domains" msgstr "" -#: common/models.py:1971 +#: common/models.py:1941 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1977 +#: common/models.py:1947 msgid "Group on signup" msgstr "Grupuj przy rejestracji" -#: common/models.py:1978 +#: common/models.py:1948 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1983 +#: common/models.py:1953 msgid "Enforce MFA" msgstr "Wymuś MFA" -#: common/models.py:1984 +#: common/models.py:1954 msgid "Users must use multifactor security." msgstr "Użytkownicy muszą używać zabezpieczeń wieloskładnikowych." -#: common/models.py:1989 +#: common/models.py:1959 msgid "Check plugins on startup" msgstr "Sprawdź wtyczki przy starcie" -#: common/models.py:1991 +#: common/models.py:1961 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1999 +#: common/models.py:1969 msgid "Check for plugin updates" msgstr "" -#: common/models.py:2000 +#: common/models.py:1970 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:2006 +#: common/models.py:1976 msgid "Enable URL integration" msgstr "Włącz integrację URL" -#: common/models.py:2007 +#: common/models.py:1977 msgid "Enable plugins to add URL routes" msgstr "Włącz wtyczki, aby dodać ścieżki URL" -#: common/models.py:2013 +#: common/models.py:1983 msgid "Enable navigation integration" msgstr "" -#: common/models.py:2014 +#: common/models.py:1984 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:2020 +#: common/models.py:1990 msgid "Enable app integration" msgstr "Włącz integrację z aplikacją" -#: common/models.py:2021 +#: common/models.py:1991 msgid "Enable plugins to add apps" msgstr "Włącz wtyczki, aby dodać aplikacje" -#: common/models.py:2027 +#: common/models.py:1997 msgid "Enable schedule integration" msgstr "" -#: common/models.py:2028 +#: common/models.py:1998 msgid "Enable plugins to run scheduled tasks" msgstr "Włącz wtyczki, aby uruchamiać zaplanowane zadania" -#: common/models.py:2034 +#: common/models.py:2004 msgid "Enable event integration" msgstr "" -#: common/models.py:2035 +#: common/models.py:2005 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:2041 +#: common/models.py:2011 msgid "Enable project codes" msgstr "" -#: common/models.py:2042 +#: common/models.py:2012 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:2047 +#: common/models.py:2017 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:2049 +#: common/models.py:2019 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:2055 +#: common/models.py:2025 msgid "Exclude External Locations" msgstr "" -#: common/models.py:2057 +#: common/models.py:2027 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:2063 +#: common/models.py:2033 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:2065 +#: common/models.py:2035 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:2071 +#: common/models.py:2041 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:2073 +#: common/models.py:2043 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:2080 +#: common/models.py:2050 msgid "Display Users full names" msgstr "" -#: common/models.py:2081 +#: common/models.py:2051 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:2086 +#: common/models.py:2056 msgid "Enable Test Station Data" msgstr "" -#: common/models.py:2087 +#: common/models.py:2057 msgid "Enable test station data collection for test results" msgstr "" -#: common/models.py:2099 common/models.py:2509 +#: common/models.py:2069 common/models.py:2479 msgid "Settings key (must be unique - case insensitive" msgstr "Klucz ustawień (musi być unikalny - niewrażliwy na wielkość liter" -#: common/models.py:2142 +#: common/models.py:2112 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2144 +#: common/models.py:2114 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2150 +#: common/models.py:2120 msgid "Show subscribed parts" msgstr "Pokaż obserwowane części" -#: common/models.py:2151 +#: common/models.py:2121 msgid "Show subscribed parts on the homepage" msgstr "Pokaż obserwowane części na stronie głównej" -#: common/models.py:2156 +#: common/models.py:2126 msgid "Show subscribed categories" msgstr "Pokaż obserwowane kategorie" -#: common/models.py:2157 +#: common/models.py:2127 msgid "Show subscribed part categories on the homepage" msgstr "Pokaż obserwowane kategorie części na stronie głównej" -#: common/models.py:2162 +#: common/models.py:2132 msgid "Show latest parts" msgstr "Pokaż najnowsze części" -#: common/models.py:2163 +#: common/models.py:2133 msgid "Show latest parts on the homepage" msgstr "Pokaż najnowsze części na stronie głównej" -#: common/models.py:2168 +#: common/models.py:2138 msgid "Show invalid BOMs" msgstr "" -#: common/models.py:2169 +#: common/models.py:2139 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2174 +#: common/models.py:2144 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2175 +#: common/models.py:2145 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2180 +#: common/models.py:2150 msgid "Show low stock" msgstr "Pokaż niski stan magazynowy" -#: common/models.py:2181 +#: common/models.py:2151 msgid "Show low stock items on the homepage" msgstr "Pokaż elementy o niskim stanie na stronie głównej" -#: common/models.py:2186 +#: common/models.py:2156 msgid "Show depleted stock" msgstr "" -#: common/models.py:2187 +#: common/models.py:2157 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2192 +#: common/models.py:2162 msgid "Show needed stock" msgstr "Pokaż wymagany stan zapasów" -#: common/models.py:2193 +#: common/models.py:2163 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2198 +#: common/models.py:2168 msgid "Show expired stock" msgstr "" -#: common/models.py:2199 +#: common/models.py:2169 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2204 +#: common/models.py:2174 msgid "Show stale stock" msgstr "" -#: common/models.py:2205 +#: common/models.py:2175 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2210 +#: common/models.py:2180 msgid "Show pending builds" msgstr "" -#: common/models.py:2211 +#: common/models.py:2181 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2216 +#: common/models.py:2186 msgid "Show overdue builds" msgstr "" -#: common/models.py:2217 +#: common/models.py:2187 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2222 +#: common/models.py:2192 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2223 +#: common/models.py:2193 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2228 +#: common/models.py:2198 msgid "Show overdue POs" msgstr "" -#: common/models.py:2229 +#: common/models.py:2199 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2234 +#: common/models.py:2204 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2235 +#: common/models.py:2205 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2240 +#: common/models.py:2210 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2241 +#: common/models.py:2211 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2246 +#: common/models.py:2216 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2247 +#: common/models.py:2217 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2252 +#: common/models.py:2222 msgid "Show News" msgstr "" -#: common/models.py:2253 +#: common/models.py:2223 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2258 +#: common/models.py:2228 msgid "Inline label display" msgstr "" -#: common/models.py:2260 +#: common/models.py:2230 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2266 +#: common/models.py:2236 msgid "Default label printer" msgstr "" -#: common/models.py:2268 +#: common/models.py:2238 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2274 +#: common/models.py:2244 msgid "Inline report display" msgstr "" -#: common/models.py:2276 +#: common/models.py:2246 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2282 +#: common/models.py:2252 msgid "Search Parts" msgstr "Szukaj części" -#: common/models.py:2283 +#: common/models.py:2253 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2288 +#: common/models.py:2258 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2289 +#: common/models.py:2259 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2294 +#: common/models.py:2264 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2295 +#: common/models.py:2265 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2300 +#: common/models.py:2270 msgid "Hide Inactive Parts" msgstr "Ukryj nieaktywne części" -#: common/models.py:2301 +#: common/models.py:2271 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2306 +#: common/models.py:2276 msgid "Search Categories" msgstr "" -#: common/models.py:2307 +#: common/models.py:2277 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2312 +#: common/models.py:2282 msgid "Search Stock" msgstr "" -#: common/models.py:2313 +#: common/models.py:2283 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2318 +#: common/models.py:2288 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2320 +#: common/models.py:2290 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2326 +#: common/models.py:2296 msgid "Search Locations" msgstr "" -#: common/models.py:2327 +#: common/models.py:2297 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2332 +#: common/models.py:2302 msgid "Search Companies" msgstr "" -#: common/models.py:2333 +#: common/models.py:2303 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2338 +#: common/models.py:2308 msgid "Search Build Orders" msgstr "" -#: common/models.py:2339 +#: common/models.py:2309 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2344 +#: common/models.py:2314 msgid "Search Purchase Orders" msgstr "Wyszukaj zlecenia zakupu" -#: common/models.py:2345 +#: common/models.py:2315 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2350 +#: common/models.py:2320 msgid "Exclude Inactive Purchase Orders" msgstr "Wyklucz nieaktywne zlecenia zakupu" -#: common/models.py:2352 +#: common/models.py:2322 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2358 +#: common/models.py:2328 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2359 +#: common/models.py:2329 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2364 +#: common/models.py:2334 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2366 +#: common/models.py:2336 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2372 +#: common/models.py:2342 msgid "Search Return Orders" msgstr "" -#: common/models.py:2373 +#: common/models.py:2343 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2378 +#: common/models.py:2348 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2380 +#: common/models.py:2350 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2386 +#: common/models.py:2356 msgid "Search Preview Results" msgstr "" -#: common/models.py:2388 +#: common/models.py:2358 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2394 +#: common/models.py:2364 msgid "Regex Search" msgstr "" -#: common/models.py:2395 +#: common/models.py:2365 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2400 +#: common/models.py:2370 msgid "Whole Word Search" msgstr "" -#: common/models.py:2401 +#: common/models.py:2371 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2406 +#: common/models.py:2376 msgid "Show Quantity in Forms" msgstr "Pokaż ilość w formularzach" -#: common/models.py:2407 +#: common/models.py:2377 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2412 +#: common/models.py:2382 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2413 +#: common/models.py:2383 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2418 +#: common/models.py:2388 msgid "Fixed Navbar" msgstr "Stały pasek nawigacyjny" -#: common/models.py:2419 +#: common/models.py:2389 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2424 +#: common/models.py:2394 msgid "Date Format" msgstr "Format daty" -#: common/models.py:2425 +#: common/models.py:2395 msgid "Preferred format for displaying dates" msgstr "Preferowany format wyświetlania dat" -#: common/models.py:2438 part/templates/part/detail.html:41 +#: common/models.py:2408 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Planowanie komponentów" -#: common/models.py:2439 +#: common/models.py:2409 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2444 part/templates/part/detail.html:62 +#: common/models.py:2414 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2446 +#: common/models.py:2416 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2452 +#: common/models.py:2422 msgid "Table String Length" msgstr "" -#: common/models.py:2454 +#: common/models.py:2424 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2460 +#: common/models.py:2430 msgid "Default part label template" msgstr "" -#: common/models.py:2461 +#: common/models.py:2431 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2466 +#: common/models.py:2436 msgid "Default stock item template" msgstr "" -#: common/models.py:2468 +#: common/models.py:2438 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2474 +#: common/models.py:2444 msgid "Default stock location label template" msgstr "" -#: common/models.py:2476 +#: common/models.py:2446 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2482 +#: common/models.py:2452 msgid "Default build line label template" msgstr "" -#: common/models.py:2484 +#: common/models.py:2454 msgid "The build line label template to be automatically selected" msgstr "" -#: common/models.py:2490 +#: common/models.py:2460 msgid "Receive error reports" msgstr "" -#: common/models.py:2491 +#: common/models.py:2461 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2496 +#: common/models.py:2466 msgid "Last used printing machines" msgstr "" -#: common/models.py:2497 +#: common/models.py:2467 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2540 +#: common/models.py:2487 common/models.py:2488 common/models.py:2636 +#: common/models.py:2637 common/models.py:2882 common/models.py:2883 +#: common/models.py:3193 common/models.py:3194 part/models.py:3193 +#: part/models.py:3280 part/models.py:3353 part/models.py:3381 +#: plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "Użytkownik" + +#: common/models.py:2510 msgid "Price break quantity" msgstr "" -#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1382 order/models.py:2301 -#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 +#: common/models.py:2517 company/serializers.py:472 order/admin.py:42 +#: order/models.py:1346 order/models.py:2265 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1886 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:740 msgid "Price" msgstr "Cena" -#: common/models.py:2548 +#: common/models.py:2518 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2719 common/models.py:2904 +#: common/models.py:2613 common/models.py:2798 msgid "Endpoint" msgstr "Punkt końcowy" -#: common/models.py:2720 +#: common/models.py:2614 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2730 +#: common/models.py:2624 msgid "Name for this webhook" msgstr "" -#: common/models.py:2734 company/models.py:160 company/models.py:814 -#: machine/models.py:39 part/admin.py:88 part/models.py:1088 -#: plugin/models.py:65 templates/js/translated/company.js:523 +#: common/models.py:2628 company/models.py:163 company/models.py:782 +#: machine/models.py:39 part/admin.py:88 part/models.py:1081 +#: plugin/models.py:66 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3464,101 +3408,118 @@ msgstr "" msgid "Active" msgstr "Aktywny" -#: common/models.py:2734 +#: common/models.py:2628 msgid "Is this webhook active" msgstr "" -#: common/models.py:2750 users/models.py:159 +#: common/models.py:2644 users/models.py:159 msgid "Token" msgstr "" -#: common/models.py:2751 +#: common/models.py:2645 msgid "Token for access" msgstr "" -#: common/models.py:2759 +#: common/models.py:2653 msgid "Secret" msgstr "Sekret" -#: common/models.py:2760 +#: common/models.py:2654 msgid "Shared secret for HMAC" msgstr "Współdzielony sekret dla HMAC" -#: common/models.py:2868 +#: common/models.py:2762 msgid "Message ID" msgstr "Id wiadomości" -#: common/models.py:2869 +#: common/models.py:2763 msgid "Unique identifier for this message" msgstr "Unikalny identyfikator dla tej wiadomości" -#: common/models.py:2877 +#: common/models.py:2771 msgid "Host" msgstr "" -#: common/models.py:2878 +#: common/models.py:2772 msgid "Host from which this message was received" msgstr "Host, od którego otrzymano tę wiadomość" -#: common/models.py:2886 +#: common/models.py:2780 msgid "Header" msgstr "Nagłówek" -#: common/models.py:2887 +#: common/models.py:2781 msgid "Header of this message" msgstr "Nagłówek tej wiadomości" -#: common/models.py:2894 +#: common/models.py:2788 msgid "Body" msgstr "Zawartość" -#: common/models.py:2895 +#: common/models.py:2789 msgid "Body of this message" msgstr "" -#: common/models.py:2905 +#: common/models.py:2799 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2910 +#: common/models.py:2804 msgid "Worked on" msgstr "" -#: common/models.py:2911 +#: common/models.py:2805 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:3037 +#: common/models.py:2931 msgid "Id" msgstr "" -#: common/models.py:3039 templates/js/translated/company.js:965 +#: common/models.py:2933 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:3043 templates/js/translated/news.js:60 +#: common/models.py:2935 common/models.py:3177 company/models.py:149 +#: company/models.py:440 company/models.py:500 company/models.py:799 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +#: part/admin.py:55 part/models.py:955 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "Łącze" + +#: common/models.py:2937 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:3045 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2939 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:3047 templates/js/translated/news.js:52 +#: common/models.py:2941 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Read" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Was this news item read?" msgstr "" -#: common/models.py:3067 company/models.py:156 part/models.py:972 +#: common/models.py:2961 company/models.py:159 part/models.py:965 #: 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.html:35 @@ -3568,34 +3529,89 @@ msgstr "" msgid "Image" msgstr "Obraz" -#: common/models.py:3067 +#: common/models.py:2961 msgid "Image file" msgstr "" -#: common/models.py:3109 +#: common/models.py:2973 common/models.py:3161 +msgid "Target model type for this image" +msgstr "" + +#: common/models.py:2977 +msgid "Target model ID for this image" +msgstr "" + +#: common/models.py:3018 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3128 +#: common/models.py:3037 msgid "Unit name" msgstr "" -#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3044 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3136 +#: common/models.py:3045 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3052 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3144 +#: common/models.py:3053 msgid "Unit definition" msgstr "" +#: common/models.py:3111 common/models.py:3168 stock/models.py:2426 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "Załącznik" + +#: common/models.py:3123 +msgid "Missing file" +msgstr "Brak pliku" + +#: common/models.py:3124 +msgid "Missing external link" +msgstr "Brak zewnętrznego odnośnika" + +#: common/models.py:3169 +msgid "Select file to attach" +msgstr "Wybierz plik do załączenia" + +#: common/models.py:3184 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "Komentarz" + +#: common/models.py:3185 +msgid "Attachment comment" +msgstr "" + +#: common/models.py:3201 +msgid "Upload date" +msgstr "" + +#: common/models.py:3202 +msgid "Date the file was uploaded" +msgstr "" + +#: common/models.py:3206 +msgid "File size" +msgstr "" + +#: common/models.py:3206 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3244 common/serializers.py:553 +msgid "Invalid model type specified for attachment" +msgstr "" + #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" @@ -3630,66 +3646,103 @@ msgstr "" msgid "Error raised by plugin" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:371 msgid "Is Running" -msgstr "" +msgstr "Jest uruchomiony" -#: common/serializers.py:372 +#: common/serializers.py:377 msgid "Pending Tasks" -msgstr "" +msgstr "Oczekujce zadania" -#: common/serializers.py:378 +#: common/serializers.py:383 msgid "Scheduled Tasks" -msgstr "" +msgstr "Zaplanowane zadania" -#: common/serializers.py:384 +#: common/serializers.py:389 msgid "Failed Tasks" -msgstr "" +msgstr "Zadania zakończone błędem" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Task ID" -msgstr "" +msgstr "ID zadania" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Unique task ID" -msgstr "" +msgstr "Unikalny identyfikator zadania" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock" -msgstr "" +msgstr "Blokada" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock time" -msgstr "" +msgstr "Czas blokady" -#: common/serializers.py:403 +#: common/serializers.py:408 msgid "Task name" -msgstr "" - -#: common/serializers.py:405 -msgid "Function" -msgstr "" - -#: common/serializers.py:405 -msgid "Function name" -msgstr "" - -#: common/serializers.py:407 -msgid "Arguments" -msgstr "" - -#: common/serializers.py:407 -msgid "Task arguments" -msgstr "" +msgstr "Nazwa zadania" #: common/serializers.py:410 +msgid "Function" +msgstr "Funkcja" + +#: common/serializers.py:410 +msgid "Function name" +msgstr "Nazwa funkcji" + +#: common/serializers.py:412 +msgid "Arguments" +msgstr "Argumenty" + +#: common/serializers.py:412 +msgid "Task arguments" +msgstr "Argumenty zadania" + +#: common/serializers.py:415 msgid "Keyword Arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Task keyword arguments" msgstr "" +#: common/serializers.py:525 +msgid "Filename" +msgstr "Nazwa pliku" + +#: common/serializers.py:532 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: common/serializers.py:559 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "" + +#: common/validators.py:33 +msgid "No attachment model type provided" +msgstr "" + +#: common/validators.py:39 +msgid "Invalid attachment model type" +msgstr "" + +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "Pusta domena nie jest dozwolona." + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +msgstr "Niepoprawna nazwa domeny: {domain}" + #: 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 @@ -3715,7 +3768,7 @@ msgstr "" #: common/views.py:464 msgid "Parts imported" -msgstr "" +msgstr "Komponenty zaimportowane" #: common/views.py:494 order/templates/order/order_wizard/match_fields.html:27 #: order/templates/order/order_wizard/match_parts.html:19 @@ -3728,210 +3781,222 @@ msgstr "" msgid "Previous Step" msgstr "Poprzedni krok" -#: company/api.py:164 +#: company/api.py:144 msgid "Part is Active" -msgstr "" +msgstr "Komponent jest aktywny" -#: company/api.py:168 +#: company/api.py:148 msgid "Manufacturer is Active" -msgstr "" +msgstr "Producent jest aktywny" -#: company/api.py:317 +#: company/api.py:281 msgid "Supplier Part is Active" msgstr "" -#: company/api.py:321 +#: company/api.py:285 msgid "Internal Part is Active" msgstr "" -#: company/api.py:325 +#: company/api.py:289 msgid "Supplier is Active" msgstr "" -#: company/models.py:114 +#: company/models.py:100 company/models.py:365 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:822 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "Firma" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "Firmy" + +#: company/models.py:117 msgid "Company description" msgstr "Opis firmy" -#: company/models.py:115 +#: company/models.py:118 msgid "Description of the company" msgstr "Opis firmy" -#: company/models.py:120 company/templates/company/company_base.html:106 +#: company/models.py:123 company/templates/company/company_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:532 msgid "Website" msgstr "Strona WWW" -#: company/models.py:120 +#: company/models.py:123 msgid "Company website URL" msgstr "Witryna internetowa firmy" -#: company/models.py:125 +#: company/models.py:128 msgid "Phone number" msgstr "Numer telefonu" -#: company/models.py:127 +#: company/models.py:130 msgid "Contact phone number" msgstr "Numer telefonu kontaktowego" -#: company/models.py:134 +#: company/models.py:137 msgid "Contact email address" msgstr "Kontaktowy adres e-mail" -#: company/models.py:139 company/templates/company/company_base.html:145 +#: company/models.py:142 company/templates/company/company_base.html:145 #: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "Kontakt" -#: company/models.py:141 +#: company/models.py:144 msgid "Point of contact" msgstr "Punkt kontaktowy" -#: company/models.py:147 +#: company/models.py:150 msgid "Link to external company information" msgstr "Link do informacji o zewnętrznym przedsiębiorstwie" -#: company/models.py:160 +#: company/models.py:163 msgid "Is this company active?" msgstr "" -#: company/models.py:165 +#: company/models.py:168 msgid "is customer" msgstr "jest klientem" -#: company/models.py:166 +#: company/models.py:169 msgid "Do you sell items to this company?" msgstr "Czy sprzedajesz produkty tej firmie?" -#: company/models.py:171 +#: company/models.py:174 msgid "is supplier" msgstr "jest dostawcą" -#: company/models.py:172 +#: company/models.py:175 msgid "Do you purchase items from this company?" msgstr "Czy kupujesz przedmioty od tej firmy?" -#: company/models.py:177 +#: company/models.py:180 msgid "is manufacturer" msgstr "jest producentem" -#: company/models.py:178 +#: company/models.py:181 msgid "Does this company manufacture parts?" msgstr "Czy to przedsiębiorstwo produkuje części?" -#: company/models.py:186 +#: company/models.py:189 msgid "Default currency used for this company" msgstr "" -#: company/models.py:273 company/models.py:382 -#: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:812 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 -msgid "Company" -msgstr "Firma" - -#: company/models.py:383 +#: company/models.py:366 msgid "Select company" msgstr "" -#: company/models.py:388 +#: company/models.py:371 msgid "Address title" msgstr "" -#: company/models.py:389 +#: company/models.py:372 msgid "Title describing the address entry" msgstr "" -#: company/models.py:395 +#: company/models.py:378 msgid "Primary address" msgstr "" -#: company/models.py:396 +#: company/models.py:379 msgid "Set as primary address" msgstr "" -#: company/models.py:401 templates/js/translated/company.js:914 +#: company/models.py:384 templates/js/translated/company.js:914 #: templates/js/translated/company.js:971 msgid "Line 1" msgstr "" -#: company/models.py:402 +#: company/models.py:385 msgid "Address line 1" msgstr "" -#: company/models.py:408 templates/js/translated/company.js:915 +#: company/models.py:391 templates/js/translated/company.js:915 #: templates/js/translated/company.js:977 msgid "Line 2" msgstr "" -#: company/models.py:409 +#: company/models.py:392 msgid "Address line 2" msgstr "" -#: company/models.py:415 company/models.py:416 +#: company/models.py:398 company/models.py:399 #: templates/js/translated/company.js:983 msgid "Postal code" msgstr "" -#: company/models.py:422 +#: company/models.py:405 msgid "City/Region" msgstr "" -#: company/models.py:423 +#: company/models.py:406 msgid "Postal code city/region" -msgstr "" +msgstr "Kod pocztowy miasto/region" -#: company/models.py:429 +#: company/models.py:412 msgid "State/Province" -msgstr "" +msgstr "Stan/Województwo" -#: company/models.py:430 +#: company/models.py:413 msgid "State or province" -msgstr "" +msgstr "Stan lub województwo" -#: company/models.py:436 templates/js/translated/company.js:1001 +#: company/models.py:419 templates/js/translated/company.js:1001 msgid "Country" -msgstr "" +msgstr "Kraj" -#: company/models.py:437 +#: company/models.py:420 msgid "Address country" msgstr "" -#: company/models.py:443 +#: company/models.py:426 msgid "Courier shipping notes" -msgstr "" +msgstr "Notatki przewozowe kuriera" -#: company/models.py:444 +#: company/models.py:427 msgid "Notes for shipping courier" -msgstr "" +msgstr "Notatki dla kuriera" -#: company/models.py:450 +#: company/models.py:433 msgid "Internal shipping notes" -msgstr "" +msgstr "Wewnętrzne notatki przewozowe" -#: company/models.py:451 +#: company/models.py:434 msgid "Shipping notes for internal use" -msgstr "" +msgstr "Notatki wysyłkowe do użytku wewnętrznego" -#: company/models.py:458 +#: company/models.py:441 msgid "Link to address information (external)" msgstr "" -#: company/models.py:489 company/models.py:792 stock/models.py:768 -#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 +#: company/models.py:463 company/models.py:574 company/models.py:792 +#: 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:475 company/models.py:760 stock/models.py:766 +#: stock/serializers.py:422 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Część bazowa" -#: company/models.py:491 company/models.py:794 +#: company/models.py:477 company/models.py:762 msgid "Select part" msgstr "Wybierz część" -#: company/models.py:500 company/templates/company/company_base.html:82 +#: company/models.py:486 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:530 +#: company/templates/company/supplier_part.html:145 part/serializers.py:525 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -3941,189 +4006,191 @@ msgstr "Wybierz część" msgid "Manufacturer" msgstr "Producent" -#: company/models.py:501 +#: company/models.py:487 msgid "Select manufacturer" msgstr "Wybierz producenta" -#: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:540 +#: company/models.py:493 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:535 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 -#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1801 #: templates/js/translated/purchase_order.js:1851 #: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "" -#: company/models.py:508 +#: company/models.py:494 msgid "Manufacturer Part Number" msgstr "Numer producenta komponentu" -#: company/models.py:515 +#: company/models.py:501 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:524 +#: company/models.py:510 msgid "Manufacturer part description" msgstr "" -#: company/models.py:581 company/models.py:608 company/models.py:824 -#: 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:615 +#: company/models.py:581 msgid "Parameter name" -msgstr "" +msgstr "Nazwa parametru" -#: company/models.py:621 report/templates/report/inventree_test_report.html:104 -#: stock/models.py:2429 templates/js/translated/company.js:1166 -#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 +#: company/models.py:587 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2418 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1493 #: templates/js/translated/stock.js:1522 msgid "Value" msgstr "Wartość" -#: company/models.py:622 +#: company/models.py:588 msgid "Parameter value" -msgstr "" +msgstr "Wartość parametru" -#: company/models.py:629 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1052 part/models.py:3666 +#: company/models.py:595 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1045 part/models.py:3646 #: part/templates/part/part_base.html:284 -#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1512 +#: templates/js/translated/part.js:1616 templates/js/translated/part.js:2370 msgid "Units" msgstr "Jednostki" -#: company/models.py:630 +#: company/models.py:596 msgid "Parameter units" msgstr "Jednostki parametru" -#: company/models.py:732 +#: company/models.py:648 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:777 stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "" + +#: company/models.py:700 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:739 +#: company/models.py:707 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:753 +#: company/models.py:721 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/models.py:770 company/templates/company/company_base.html:87 #: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:514 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:509 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:511 -#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1769 #: templates/js/translated/pricing.js:498 #: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "Dostawca" -#: company/models.py:803 +#: company/models.py:771 msgid "Select supplier" msgstr "Wybierz dostawcę" -#: company/models.py:809 part/serializers.py:525 +#: company/models.py:777 part/serializers.py:520 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:815 +#: company/models.py:783 msgid "Is this supplier part active?" msgstr "" -#: company/models.py:825 +#: company/models.py:793 msgid "Select manufacturer part" msgstr "" -#: company/models.py:832 +#: company/models.py:800 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:841 +#: company/models.py:809 msgid "Supplier part description" msgstr "" -#: company/models.py:848 company/templates/company/supplier_part.html:187 -#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 +#: company/models.py:816 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4093 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_purchase_order_report.html:32 #: report/templates/report/inventree_return_order_report.html:27 #: report/templates/report/inventree_sales_order_report.html:32 #: report/templates/report/inventree_stock_location_report.html:105 -#: stock/serializers.py:708 +#: stock/serializers.py:710 msgid "Note" msgstr "Uwaga" -#: company/models.py:857 part/models.py:2010 +#: company/models.py:825 part/models.py:2003 msgid "base cost" msgstr "koszt podstawowy" -#: company/models.py:858 part/models.py:2011 +#: company/models.py:826 part/models.py:2004 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:865 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 +#: company/models.py:833 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:797 stock/serializers.py:1475 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 #: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "Opakowanie" -#: company/models.py:866 +#: company/models.py:834 msgid "Part packaging" msgstr "Opakowanie części" -#: company/models.py:871 templates/js/translated/company.js:1651 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: company/models.py:839 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:311 #: templates/js/translated/purchase_order.js:841 #: templates/js/translated/purchase_order.js:1103 #: templates/js/translated/purchase_order.js:2084 #: templates/js/translated/purchase_order.js:2101 msgid "Pack Quantity" -msgstr "" +msgstr "Ilość w opakowaniu" -#: company/models.py:873 +#: company/models.py:841 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:892 part/models.py:2017 +#: company/models.py:860 part/models.py:2010 msgid "multiple" msgstr "wielokrotność" -#: company/models.py:893 +#: company/models.py:861 msgid "Order multiple" -msgstr "" +msgstr "Zamów wiele" -#: company/models.py:905 +#: company/models.py:873 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:911 +#: company/models.py:879 msgid "Availability Updated" -msgstr "" +msgstr "Dostępność zaktualizowana" -#: company/models.py:912 +#: company/models.py:880 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:163 +#: company/serializers.py:161 msgid "Default currency used for this supplier" msgstr "Domyślna waluta używana dla tego dostawcy" -#: company/serializers.py:381 part/admin.py:126 +#: company/serializers.py:357 part/admin.py:126 #: part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1689 #: templates/js/translated/table_filters.js:355 @@ -4135,7 +4202,7 @@ msgstr "Na stanie" #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 #: templates/js/translated/model_renderers.js:312 -#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +#: templates/js/translated/part.js:815 templates/js/translated/part.js:1219 msgid "Inactive" msgstr "Nieaktywny" @@ -4174,9 +4241,9 @@ msgstr "Usuń firmę" #: report/templates/report/inventree_purchase_order_report.html:40 #: report/templates/report/inventree_sales_order_report.html:40 #: report/templates/report/inventree_test_report.html:84 -#: report/templates/report/inventree_test_report.html:163 +#: report/templates/report/inventree_test_report.html:162 msgid "Part image" -msgstr "" +msgstr "Obraz części" #: company/templates/company/company_base.html:61 #: part/templates/part/part_thumb.html:12 @@ -4191,12 +4258,12 @@ msgstr "Pobierz obraz z adresu URL" #: company/templates/company/company_base.html:66 #: part/templates/part/part_thumb.html:16 msgid "Delete image" -msgstr "" +msgstr "Usuń obraz" -#: company/templates/company/company_base.html:92 order/models.py:940 -#: order/models.py:2068 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:148 stock/models.py:821 -#: stock/models.py:822 stock/serializers.py:1229 +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2032 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:819 +#: stock/models.py:820 stock/serializers.py:1225 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 @@ -4225,28 +4292,28 @@ msgstr "Telefon" #: company/templates/company/company_base.html:211 #: part/templates/part/part_base.html:527 msgid "Remove Image" -msgstr "" +msgstr "Usuń obraz" #: company/templates/company/company_base.html:212 msgid "Remove associated image from this company" -msgstr "" +msgstr "Usuń przypisany obraz z tej firmy" #: company/templates/company/company_base.html:214 #: part/templates/part/part_base.html:530 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" -msgstr "" +msgstr "Usuń" #: company/templates/company/company_base.html:243 #: part/templates/part/part_base.html:559 msgid "Upload Image" -msgstr "" +msgstr "Prześlij obraz" #: company/templates/company/company_base.html:258 #: part/templates/part/part_base.html:613 msgid "Download Image" -msgstr "" +msgstr "Pobierz obraz" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 @@ -4364,16 +4431,16 @@ msgstr "" #: company/templates/company/detail.html:187 #: company/templates/company/detail.html:188 msgid "Add Contact" -msgstr "" +msgstr "Dodaj kontakt" #: company/templates/company/detail.html:206 msgid "Company addresses" -msgstr "" +msgstr "Adres firmy" #: company/templates/company/detail.html:210 #: company/templates/company/detail.html:211 msgid "Add Address" -msgstr "" +msgstr "Dodaj adres" #: company/templates/company/manufacturer_part.html:15 company/views.py:37 #: templates/InvenTree/search.html:180 templates/navbar.html:49 @@ -4407,7 +4474,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:836 +#: part/admin.py:122 part/serializers.py:832 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4427,8 +4494,8 @@ msgstr "Parametry" msgid "New Parameter" msgstr "Nowy parametr" -#: company/templates/company/manufacturer_part.html:206 -#: templates/js/translated/part.js:1422 +#: company/templates/company/manufacturer_part.html:196 +#: templates/js/translated/part.js:1423 msgid "Add Parameter" msgstr "" @@ -4456,15 +4523,6 @@ msgstr "" msgid "Addresses" msgstr "" -#: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:452 -#: stock/models.py:779 stock/templates/stock/item_base.html:233 -#: templates/js/translated/company.js:1600 -#: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2280 -msgid "Supplier Part" -msgstr "" - #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1526 msgid "Supplier part actions" @@ -4507,8 +4565,8 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:524 -#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: part/bom.py:311 part/serializers.py:519 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1787 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1850 #: templates/js/translated/purchase_order.js:2028 @@ -4520,12 +4578,12 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:207 msgid "Create new stock item" msgstr "Utwórz nowy towar" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "Nowy towar" @@ -4557,15 +4615,15 @@ msgid "Update Part Availability" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:835 part/stocktake.py:223 +#: part/serializers.py:831 part/stocktake.py:224 #: part/templates/part/category.html:183 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:916 stock/serializers.py:1080 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:918 stock/serializers.py:1091 #: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:191 #: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1061 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:206 msgid "Stock Items" @@ -4592,10 +4650,6 @@ msgstr "Klienci" msgid "New Customer" msgstr "Nowy klient" -#: company/views.py:51 templates/js/translated/search.js:192 -msgid "Companies" -msgstr "Firmy" - #: company/views.py:52 msgid "New Company" msgstr "Nowa firma" @@ -4606,44 +4660,44 @@ msgstr "Umieszczony" #: machine/machine_types/label_printer.py:218 msgid "Copies" -msgstr "" +msgstr "Kopie" #: machine/machine_types/label_printer.py:219 msgid "Number of copies to print for each label" -msgstr "" +msgstr "Liczba kopii do wydrukowania dla każdej etykiety" #: machine/machine_types/label_printer.py:234 msgid "Connected" -msgstr "" +msgstr "Połączono" -#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: machine/machine_types/label_printer.py:235 order/api.py:1467 #: templates/js/translated/sales_order.js:1078 msgid "Unknown" -msgstr "" +msgstr "Nieznany" #: machine/machine_types/label_printer.py:236 msgid "Printing" -msgstr "" +msgstr "Drukowanie" #: machine/machine_types/label_printer.py:237 msgid "No media" -msgstr "" +msgstr "Brak mediów" #: machine/machine_types/label_printer.py:238 msgid "Disconnected" -msgstr "" +msgstr "Rozłączono" #: machine/machine_types/label_printer.py:245 msgid "Label Printer" -msgstr "" +msgstr "Drukarka etykiet" #: machine/machine_types/label_printer.py:246 msgid "Directly print labels for various items." -msgstr "" +msgstr "Bezpośrednio wydrukuj etykiety dla różnych elementów." #: machine/machine_types/label_printer.py:252 msgid "Printer Location" -msgstr "" +msgstr "Lokalizacja drukarki" #: machine/machine_types/label_printer.py:253 msgid "Scope the printer to a specific location" @@ -4651,23 +4705,23 @@ msgstr "" #: machine/models.py:25 msgid "Name of machine" -msgstr "" +msgstr "Nazwa maszyny" #: machine/models.py:29 msgid "Machine Type" -msgstr "" +msgstr "Typ maszyny" #: machine/models.py:29 msgid "Type of machine" -msgstr "" +msgstr "Typ maszyny" #: machine/models.py:34 machine/models.py:146 msgid "Driver" -msgstr "" +msgstr "Sterownik" #: machine/models.py:35 msgid "Driver used for the machine" -msgstr "" +msgstr "Sterownik użyty dla tego urządzenia" #: machine/models.py:39 msgid "Machines can be disabled" @@ -4679,11 +4733,11 @@ msgstr "" #: machine/models.py:100 msgid "No errors" -msgstr "" +msgstr "Brak błędów" #: machine/models.py:105 msgid "Initialized" -msgstr "" +msgstr "Zainicjalizowany" #: machine/models.py:110 msgid "Errors" @@ -4705,7 +4759,7 @@ msgstr "" msgid "Config type" msgstr "" -#: order/admin.py:30 order/models.py:89 +#: order/admin.py:30 order/models.py:90 #: report/templates/report/inventree_purchase_order_report.html:31 #: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 @@ -4714,44 +4768,44 @@ msgstr "" msgid "Total Price" msgstr "Cena całkowita" -#: order/api.py:161 order/serializers.py:91 +#: order/api.py:157 order/serializers.py:90 #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "Status zamówienia" -#: order/api.py:165 templates/js/translated/table_filters.js:194 +#: order/api.py:161 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" -msgstr "" +msgstr "Posiada ceny" -#: order/api.py:240 +#: order/api.py:236 msgid "No matching purchase order found" msgstr "Nie znaleziono pasującego zlecenia zakupu" -#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 -#: order/models.py:1586 order/models.py:1700 order/models.py:1854 -#: order/models.py:2267 order/models.py:2318 +#: order/api.py:435 order/api.py:801 order/models.py:1395 order/models.py:1504 +#: order/models.py:1550 order/models.py:1664 order/models.py:1818 +#: order/models.py:2231 order/models.py:2282 #: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "Zamówienie" -#: order/api.py:441 order/api.py:838 +#: order/api.py:439 order/api.py:822 msgid "Order Complete" msgstr "" #: order/api.py:462 msgid "Order Pending" -msgstr "" +msgstr "Zamówienie oczekujące" -#: order/api.py:1509 order/models.py:380 order/models.py:1432 -#: order/models.py:1541 order/templates/order/order_base.html:9 +#: order/api.py:1461 order/models.py:380 order/models.py:1396 +#: order/models.py:1505 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_purchase_order_report.html:14 -#: stock/serializers.py:119 stock/templates/stock/item_base.html:176 +#: stock/serializers.py:118 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/part.js:1746 templates/js/translated/pricing.js:804 #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1673 @@ -4759,8 +4813,8 @@ msgstr "" msgid "Purchase Order" msgstr "Zlecenie zakupu" -#: order/api.py:1513 order/models.py:2017 order/models.py:2268 -#: order/models.py:2319 order/templates/order/return_order_base.html:9 +#: order/api.py:1465 order/models.py:1981 order/models.py:2232 +#: order/models.py:2283 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report.html:13 #: templates/js/translated/return_order.js:280 @@ -4768,15 +4822,15 @@ msgstr "Zlecenie zakupu" msgid "Return Order" msgstr "" -#: order/models.py:90 +#: order/models.py:91 msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:71 +#: order/models.py:96 order/serializers.py:70 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:72 +#: order/models.py:99 order/serializers.py:71 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -4792,7 +4846,7 @@ msgstr "" msgid "Select project code for this order" msgstr "" -#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 msgid "Link to external page" msgstr "Link do zewnętrznej witryny" @@ -4816,11 +4870,11 @@ msgstr "" msgid "Company address for this order" msgstr "" -#: order/models.py:464 order/models.py:929 +#: order/models.py:464 order/models.py:927 msgid "Order reference" msgstr "Odniesienie zamówienia" -#: order/models.py:472 order/models.py:953 +#: order/models.py:472 order/models.py:951 msgid "Purchase order status" msgstr "Status zamówienia zakupu" @@ -4841,15 +4895,15 @@ msgstr "" msgid "received by" msgstr "odebrane przez" -#: order/models.py:514 order/models.py:2094 +#: order/models.py:514 order/models.py:2058 msgid "Issue Date" msgstr "Data wydania" -#: order/models.py:515 order/models.py:2095 +#: order/models.py:515 order/models.py:2059 msgid "Date order was issued" msgstr "Data wystawienia zamówienia" -#: order/models.py:522 order/models.py:2102 +#: order/models.py:522 order/models.py:2066 msgid "Date order was completed" msgstr "" @@ -4861,98 +4915,94 @@ msgstr "" msgid "Quantity must be a positive number" msgstr "Wartość musi być liczbą dodatnią" -#: order/models.py:941 +#: order/models.py:939 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:964 order/models.py:2087 +#: order/models.py:962 order/models.py:2051 msgid "Customer Reference " msgstr "" -#: order/models.py:965 order/models.py:2088 +#: order/models.py:963 order/models.py:2052 msgid "Customer order reference code" msgstr "" -#: order/models.py:969 order/models.py:1707 +#: order/models.py:967 order/models.py:1671 #: templates/js/translated/sales_order.js:879 #: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "Data wysyłki" -#: order/models.py:978 +#: order/models.py:976 msgid "shipped by" msgstr "wysłane przez" -#: order/models.py:1027 -#, fuzzy -#| msgid "Build output is already completed" +#: order/models.py:1025 msgid "Order is already complete" -msgstr "Budowanie wyjścia jest już ukończone" +msgstr "" -#: order/models.py:1030 -#, fuzzy -#| msgid "Order cannot be cancelled" +#: order/models.py:1028 msgid "Order is already cancelled" -msgstr "Zamówienie nie może zostać anulowane" +msgstr "" -#: order/models.py:1034 +#: order/models.py:1032 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:1038 +#: order/models.py:1036 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:1043 +#: order/models.py:1041 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1309 +#: order/models.py:1273 msgid "Item quantity" msgstr "Ilość elementów" -#: order/models.py:1326 +#: order/models.py:1290 msgid "Line item reference" msgstr "" -#: order/models.py:1333 +#: order/models.py:1297 msgid "Line item notes" msgstr "" -#: order/models.py:1345 +#: order/models.py:1309 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1366 +#: order/models.py:1330 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1372 +#: order/models.py:1336 msgid "Context" msgstr "" -#: order/models.py:1373 +#: order/models.py:1337 msgid "Additional context for this line" msgstr "" -#: order/models.py:1383 +#: order/models.py:1347 msgid "Unit price" msgstr "" -#: order/models.py:1416 +#: order/models.py:1380 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1423 +#: order/models.py:1387 msgid "deleted" msgstr "" -#: order/models.py:1451 +#: order/models.py:1415 msgid "Supplier part" msgstr "" -#: order/models.py:1458 order/templates/order/order_base.html:196 -#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: order/models.py:1422 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1870 templates/js/translated/part.js:1902 #: templates/js/translated/purchase_order.js:1306 #: templates/js/translated/purchase_order.js:2169 #: templates/js/translated/return_order.js:763 @@ -4961,196 +5011,196 @@ msgstr "" msgid "Received" msgstr "Odebrane" -#: order/models.py:1459 +#: order/models.py:1423 msgid "Number of items received" msgstr "" -#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 +#: order/models.py:1431 stock/models.py:938 stock/serializers.py:556 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "Cena zakupu" -#: order/models.py:1468 +#: order/models.py:1432 msgid "Unit purchase price" msgstr "Cena zakupu jednostkowego" -#: order/models.py:1483 +#: order/models.py:1447 msgid "Where does the Purchaser want this item to be stored?" msgstr "Gdzie kupujący chce przechowywać ten przedmiot?" -#: order/models.py:1574 +#: order/models.py:1538 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1579 +#: order/models.py:1543 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1605 part/templates/part/part_pricing.html:107 +#: order/models.py:1569 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:1606 +#: order/models.py:1570 msgid "Unit sale price" msgstr "Jednostkowa cena sprzedaży" -#: order/models.py:1615 order/status_codes.py:43 +#: order/models.py:1579 order/status_codes.py:43 #: templates/js/translated/sales_order.js:1559 #: templates/js/translated/sales_order.js:1680 #: templates/js/translated/sales_order.js:1993 msgid "Shipped" msgstr "Wysłane" -#: order/models.py:1616 +#: order/models.py:1580 msgid "Shipped quantity" msgstr "Wysłana ilość" -#: order/models.py:1708 +#: order/models.py:1672 msgid "Date of shipment" msgstr "Data wysyłki" -#: order/models.py:1714 templates/js/translated/sales_order.js:1072 +#: order/models.py:1678 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "" -#: order/models.py:1715 +#: order/models.py:1679 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1723 +#: order/models.py:1687 msgid "Checked By" msgstr "Sprawdzone przez" -#: order/models.py:1724 +#: order/models.py:1688 msgid "User who checked this shipment" msgstr "Użytkownik, który sprawdził tę wysyłkę" -#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 -#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 +#: order/models.py:1695 order/models.py:1908 order/serializers.py:1342 +#: order/serializers.py:1452 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "Przesyłka" -#: order/models.py:1732 +#: order/models.py:1696 msgid "Shipment number" msgstr "Numer przesyłki" -#: order/models.py:1740 +#: order/models.py:1704 msgid "Tracking Number" msgstr "Numer śledzenia" -#: order/models.py:1741 +#: order/models.py:1705 msgid "Shipment tracking information" msgstr "Informacje o śledzeniu przesyłki" -#: order/models.py:1748 +#: order/models.py:1712 msgid "Invoice Number" msgstr "" -#: order/models.py:1749 +#: order/models.py:1713 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1769 +#: order/models.py:1733 msgid "Shipment has already been sent" msgstr "Przesyłka została już wysłana" -#: order/models.py:1772 +#: order/models.py:1736 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1890 order/models.py:1892 +#: order/models.py:1854 order/models.py:1856 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1899 +#: order/models.py:1863 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1902 +#: order/models.py:1866 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1905 +#: order/models.py:1869 msgid "Allocation quantity cannot exceed stock quantity" msgstr "Zarezerwowana ilość nie może przekraczać ilości na stanie" -#: order/models.py:1924 order/serializers.py:1231 +#: order/models.py:1888 order/serializers.py:1219 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1927 +#: order/models.py:1891 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1928 plugin/base/barcodes/api.py:481 +#: order/models.py:1892 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1936 +#: order/models.py:1900 msgid "Line" msgstr "Linia" -#: order/models.py:1945 +#: order/models.py:1909 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1958 order/models.py:2275 +#: order/models.py:1922 order/models.py:2239 #: templates/js/translated/return_order.js:721 msgid "Item" msgstr "Komponent" -#: order/models.py:1959 +#: order/models.py:1923 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1968 +#: order/models.py:1932 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:2057 +#: order/models.py:2021 msgid "Return Order reference" msgstr "" -#: order/models.py:2069 +#: order/models.py:2033 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:2081 +#: order/models.py:2045 msgid "Return order status" msgstr "" -#: order/models.py:2260 +#: order/models.py:2224 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2276 +#: order/models.py:2240 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2282 +#: order/models.py:2246 msgid "Received Date" msgstr "" -#: order/models.py:2283 +#: order/models.py:2247 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2294 templates/js/translated/return_order.js:732 +#: order/models.py:2258 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2295 +#: order/models.py:2259 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2302 +#: order/models.py:2266 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/serializers.py:79 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_purchase_order_report.html:22 @@ -5159,163 +5209,163 @@ msgstr "" msgid "Line Items" msgstr "" -#: order/serializers.py:84 +#: order/serializers.py:83 msgid "Completed Lines" msgstr "" -#: order/serializers.py:287 +#: order/serializers.py:286 msgid "Order cannot be cancelled" msgstr "Zamówienie nie może zostać anulowane" -#: order/serializers.py:302 order/serializers.py:1247 +#: order/serializers.py:301 order/serializers.py:1235 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:312 order/serializers.py:1257 +#: order/serializers.py:311 order/serializers.py:1245 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:440 +#: order/serializers.py:439 msgid "Order is not open" msgstr "" -#: order/serializers.py:461 +#: order/serializers.py:460 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:463 +#: order/serializers.py:462 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:473 +#: order/serializers.py:472 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:478 msgid "Merge Items" msgstr "" -#: order/serializers.py:481 +#: order/serializers.py:480 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:499 +#: order/serializers.py:498 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:502 +#: order/serializers.py:501 msgid "Purchase order must be specified" msgstr "Zlecenie zakupu musi być określone" -#: order/serializers.py:510 +#: order/serializers.py:509 msgid "Supplier must match purchase order" msgstr "Dostawca musi być zgodny ze zleceniem zakupu" -#: order/serializers.py:511 +#: order/serializers.py:510 msgid "Purchase order must match supplier" msgstr "Zlecenie zakupu musi być zgodne z dostawcą" -#: order/serializers.py:550 order/serializers.py:1325 +#: order/serializers.py:549 order/serializers.py:1313 msgid "Line Item" msgstr "" -#: order/serializers.py:556 +#: order/serializers.py:555 msgid "Line item does not match purchase order" msgstr "Pozycja nie pasuje do zlecenia zakupu" -#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1657 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:581 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:589 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:601 templates/js/translated/barcode.js:52 +#: order/serializers.py:600 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Kod kreskowy" -#: order/serializers.py:602 +#: order/serializers.py:601 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:618 +#: order/serializers.py:617 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:642 +#: order/serializers.py:641 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:690 order/serializers.py:1696 +#: order/serializers.py:689 order/serializers.py:1673 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:706 +#: order/serializers.py:705 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:717 +#: order/serializers.py:716 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1074 +#: order/serializers.py:1062 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1134 +#: order/serializers.py:1122 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1195 order/serializers.py:1334 +#: order/serializers.py:1183 order/serializers.py:1322 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1214 +#: order/serializers.py:1202 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1344 +#: order/serializers.py:1332 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1366 order/serializers.py:1472 +#: order/serializers.py:1354 order/serializers.py:1460 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1369 order/serializers.py:1475 +#: order/serializers.py:1357 order/serializers.py:1463 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1416 +#: order/serializers.py:1404 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1423 +#: order/serializers.py:1411 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1650 +#: order/serializers.py:1627 msgid "Return order line item" msgstr "" -#: order/serializers.py:1656 +#: order/serializers.py:1633 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1659 +#: order/serializers.py:1636 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1688 +#: order/serializers.py:1665 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1766 +#: order/serializers.py:1743 msgid "Line price currency" msgstr "" @@ -5645,7 +5695,7 @@ msgstr "" #: 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/part.js:1073 #: templates/js/translated/purchase_order.js:1752 #: templates/js/translated/return_order.js:380 #: templates/js/translated/sales_order.js:891 @@ -5741,34 +5791,34 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:406 part/models.py:3964 part/stocktake.py:218 -#: stock/admin.py:153 +#: part/admin.py:39 part/admin.py:398 part/models.py:3944 part/stocktake.py:219 +#: stock/admin.py:152 msgid "Part ID" msgstr "ID komponentu" -#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 -#: stock/admin.py:157 +#: part/admin.py:41 part/admin.py:405 part/models.py:3945 part/stocktake.py:220 +#: stock/admin.py:156 msgid "Part Name" msgstr "Nazwa komponentu" -#: part/admin.py:45 part/stocktake.py:220 +#: part/admin.py:45 part/stocktake.py:221 msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:940 part/templates/part/part_base.html:269 #: report/templates/report/inventree_stock_location_report.html:103 -#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/part.js:1227 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 -#: report/models.py:161 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2346 +#: part/admin.py:50 part/models.py:949 part/templates/part/part_base.html:277 +#: report/models.py:162 templates/js/translated/part.js:1232 +#: templates/js/translated/part.js:2347 msgid "Revision" msgstr "Wersja" -#: part/admin.py:53 part/admin.py:319 part/models.py:929 +#: part/admin.py:53 part/admin.py:319 part/models.py:922 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "Słowa kluczowe" @@ -5777,11 +5827,11 @@ msgstr "Słowa kluczowe" msgid "Part Image" msgstr "" -#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:222 msgid "Category ID" msgstr "ID kategorii" -#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:223 msgid "Category Name" msgstr "" @@ -5793,11 +5843,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:908 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "Wariant" -#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1036 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "Minimalny stan magazynowy" @@ -5805,26 +5855,26 @@ msgstr "Minimalny stan magazynowy" msgid "Used In" msgstr "Użyte w" -#: 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 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:235 +#: templates/js/translated/part.js:715 templates/js/translated/part.js:2153 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3123 part/models.py:3137 -#: templates/js/translated/part.js:969 +#: part/admin.py:155 part/models.py:3088 part/models.py:3102 +#: templates/js/translated/part.js:970 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3130 part/models.py:3144 -#: templates/js/translated/part.js:979 +#: part/admin.py:158 part/models.py:3095 part/models.py:3109 +#: templates/js/translated/part.js:980 msgid "Maximum Cost" msgstr "" -#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 msgid "Parent ID" msgstr "" -#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 msgid "Parent Name" msgstr "" @@ -5833,141 +5883,149 @@ msgstr "" msgid "Category Path" msgstr "Ścieżka kategorii" -#: part/admin.py:325 part/models.py:393 part/serializers.py:117 -#: part/serializers.py:272 part/serializers.py:391 +#: part/admin.py:325 part/models.py:396 part/serializers.py:124 +#: part/serializers.py:267 part/serializers.py:386 #: 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:2803 templates/js/translated/search.js:130 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "Części" -#: part/admin.py:386 +#: part/admin.py:378 msgid "BOM Level" msgstr "" -#: part/admin.py:389 +#: part/admin.py:381 msgid "BOM Item ID" msgstr "" -#: part/admin.py:399 +#: part/admin.py:391 msgid "Parent IPN" msgstr "" -#: part/admin.py:410 part/models.py:3966 +#: part/admin.py:402 part/models.py:3946 msgid "Part IPN" msgstr "IPN komponentu" -#: part/admin.py:423 part/serializers.py:1278 +#: part/admin.py:415 part/serializers.py:1274 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:428 part/serializers.py:1293 +#: part/admin.py:420 part/serializers.py:1289 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:110 +#: part/api.py:104 msgid "Starred" msgstr "" -#: part/api.py:112 +#: part/api.py:106 msgid "Filter by starred categories" msgstr "" -#: part/api.py:129 stock/api.py:318 +#: part/api.py:123 stock/api.py:312 msgid "Depth" msgstr "" -#: part/api.py:129 +#: part/api.py:123 msgid "Filter by category depth" msgstr "" -#: part/api.py:147 stock/api.py:336 +#: part/api.py:141 stock/api.py:330 +msgid "Top Level" +msgstr "" + +#: part/api.py:143 +msgid "Filter by top-level categories" +msgstr "" + +#: part/api.py:156 stock/api.py:345 msgid "Cascade" msgstr "" -#: part/api.py:149 +#: part/api.py:158 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:169 +#: part/api.py:179 templates/js/translated/part.js:308 msgid "Parent" msgstr "" -#: part/api.py:171 +#: part/api.py:181 msgid "Filter by parent category" msgstr "" -#: part/api.py:204 +#: part/api.py:214 msgid "Exclude Tree" msgstr "" -#: part/api.py:206 +#: part/api.py:216 msgid "Exclude sub-categories under the specified category" msgstr "" -#: part/api.py:455 +#: part/api.py:449 msgid "Has Results" msgstr "" -#: part/api.py:622 +#: part/api.py:616 msgid "Incoming Purchase Order" msgstr "Nadchodzące zlecenie zakupu" -#: part/api.py:640 +#: part/api.py:634 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:656 +#: part/api.py:650 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:740 +#: part/api.py:734 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:887 +#: part/api.py:881 msgid "Valid" msgstr "Ważny" -#: part/api.py:888 +#: part/api.py:882 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:894 +#: part/api.py:888 msgid "This option must be selected" msgstr "Ta opcja musi być zaznaczona" -#: part/api.py:1111 +#: part/api.py:1105 msgid "BOM Valid" msgstr "" -#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 -#: part/serializers.py:406 part/serializers.py:1134 -#: part/templates/part/part_base.html:260 stock/api.py:781 +#: part/api.py:1508 part/models.py:932 part/models.py:3374 part/models.py:3889 +#: part/serializers.py:401 part/serializers.py:1130 +#: part/templates/part/part_base.html:260 stock/api.py:791 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2376 +#: templates/js/translated/part.js:2377 msgid "Category" msgstr "Kategoria" -#: part/api.py:1803 +#: part/api.py:1796 msgid "Uses" msgstr "" -#: part/bom.py:170 part/models.py:102 part/models.py:982 +#: part/bom.py:170 part/models.py:104 part/models.py:975 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Domyślna lokalizacja" -#: part/bom.py:171 part/serializers.py:837 +#: part/bom.py:171 part/serializers.py:833 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5976,1054 +6034,1066 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 +#: part/models.py:85 part/models.py:3890 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Kategoria komponentu" -#: part/models.py:84 part/templates/part/category.html:136 +#: part/models.py:86 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "Kategorie części" -#: part/models.py:103 +#: part/models.py:105 msgid "Default location for parts in this category" msgstr "Domyślna lokalizacja dla komponentów w tej kategorii" -#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 +#: part/models.py:110 stock/models.py:174 templates/js/translated/part.js:2810 #: templates/js/translated/stock.js:2772 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:110 +#: part/models.py:112 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:119 +#: part/models.py:121 msgid "Default keywords" msgstr "Domyślne słowa kluczowe" -#: part/models.py:120 +#: part/models.py:122 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 stock/models.py:85 stock/models.py:156 +#: part/models.py:128 stock/models.py:86 stock/models.py:157 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:127 stock/models.py:157 +#: part/models.py:129 stock/models.py:158 msgid "Icon (optional)" msgstr "" -#: part/models.py:149 +#: part/models.py:151 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:482 +#: part/models.py:485 msgid "Cannot delete this part as it is still active" msgstr "" -#: part/models.py:489 +#: part/models.py:490 msgid "Cannot delete this part as it is used in an assembly" msgstr "" -#: part/models.py:527 +#: part/models.py:528 msgid "Invalid choice for parent part" msgstr "Nieprawidłowy wybór dla części nadrzędnej" -#: part/models.py:575 part/models.py:582 +#: part/models.py:576 part/models.py:583 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:594 +#: part/models.py:595 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:659 +#: part/models.py:658 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:739 +#: part/models.py:736 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:844 +#: part/models.py:837 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:854 +#: part/models.py:847 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:869 +#: part/models.py:862 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:898 part/models.py:3965 +#: part/models.py:891 part/models.py:3945 msgid "Part name" msgstr "Nazwa komponentu" -#: part/models.py:903 +#: part/models.py:896 msgid "Is Template" msgstr "Czy szablon" -#: part/models.py:904 +#: part/models.py:897 msgid "Is this part a template part?" msgstr "Czy ta część stanowi szablon części?" -#: part/models.py:914 +#: part/models.py:907 msgid "Is this part a variant of another part?" msgstr "Czy ta część jest wariantem innej części?" -#: part/models.py:922 +#: part/models.py:915 msgid "Part description (optional)" msgstr "" -#: part/models.py:930 +#: part/models.py:923 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:940 +#: part/models.py:933 msgid "Part category" msgstr "" -#: part/models.py:948 +#: part/models.py:941 msgid "Internal Part Number" msgstr "" -#: part/models.py:955 +#: part/models.py:948 msgid "Part revision or version number" msgstr "" -#: part/models.py:980 +#: part/models.py:973 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:1026 part/templates/part/part_base.html:376 +#: part/models.py:1019 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:1027 +#: part/models.py:1020 msgid "Default supplier part" msgstr "" -#: part/models.py:1034 +#: part/models.py:1027 msgid "Default Expiry" msgstr "Domyślne wygasanie" -#: part/models.py:1035 +#: part/models.py:1028 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:1044 +#: part/models.py:1037 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:1053 +#: part/models.py:1046 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1060 +#: part/models.py:1053 msgid "Can this part be built from other parts?" msgstr "Czy ten komponent może być zbudowany z innych komponentów?" -#: part/models.py:1066 +#: part/models.py:1059 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:1072 +#: part/models.py:1065 msgid "Does this part have tracking for unique items?" msgstr "Czy ta część wymaga śledzenia każdego towaru z osobna?" -#: part/models.py:1078 +#: part/models.py:1071 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1084 +#: part/models.py:1077 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1088 +#: part/models.py:1081 msgid "Is this part active?" msgstr "Czy ta część jest aktywna?" -#: part/models.py:1094 +#: part/models.py:1087 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:1100 +#: part/models.py:1093 msgid "BOM checksum" msgstr "" -#: part/models.py:1101 +#: part/models.py:1094 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1109 +#: part/models.py:1102 msgid "BOM checked by" msgstr "" -#: part/models.py:1114 +#: part/models.py:1107 msgid "BOM checked date" msgstr "" -#: part/models.py:1130 +#: part/models.py:1123 msgid "Creation User" msgstr "Tworzenie użytkownika" -#: part/models.py:1140 +#: part/models.py:1133 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1145 part/templates/part/part_base.html:339 +#: part/models.py:1138 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2470 +#: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "Ostatnia inwentaryzacja" -#: part/models.py:2018 +#: part/models.py:2011 msgid "Sell multiple" msgstr "Sprzedaj wiele" -#: part/models.py:3037 +#: part/models.py:3002 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:3053 +#: part/models.py:3018 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:3054 +#: part/models.py:3019 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:3060 +#: part/models.py:3025 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3026 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:3067 +#: part/models.py:3032 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3033 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3074 +#: part/models.py:3039 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3040 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3046 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3047 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3053 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3054 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3060 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3096 +#: part/models.py:3061 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3102 +#: part/models.py:3067 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3103 +#: part/models.py:3068 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3109 +#: part/models.py:3074 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3110 +#: part/models.py:3075 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3116 +#: part/models.py:3081 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3117 +#: part/models.py:3082 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3124 +#: part/models.py:3089 msgid "Override minimum cost" msgstr "" -#: part/models.py:3131 +#: part/models.py:3096 msgid "Override maximum cost" msgstr "" -#: part/models.py:3138 +#: part/models.py:3103 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3145 +#: part/models.py:3110 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3151 +#: part/models.py:3116 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3152 +#: part/models.py:3117 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3158 +#: part/models.py:3123 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3159 +#: part/models.py:3124 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3165 +#: part/models.py:3130 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3131 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3172 +#: part/models.py:3137 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3138 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3192 +#: part/models.py:3157 msgid "Part for stocktake" msgstr "" -#: part/models.py:3197 +#: part/models.py:3162 msgid "Item Count" msgstr "" -#: part/models.py:3198 +#: part/models.py:3163 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3206 +#: part/models.py:3171 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3210 part/models.py:3293 +#: part/models.py:3175 part/models.py:3258 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report.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/part.js:1086 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "Data" -#: part/models.py:3211 +#: part/models.py:3176 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3219 +#: part/models.py:3184 msgid "Additional notes" msgstr "" -#: part/models.py:3229 +#: part/models.py:3194 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3235 +#: part/models.py:3200 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3236 +#: part/models.py:3201 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3242 +#: part/models.py:3207 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3243 +#: part/models.py:3208 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3264 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3300 +#: part/models.py:3265 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3270 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3306 +#: part/models.py:3271 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3316 +#: part/models.py:3281 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3478 +#: part/models.py:3423 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3489 +#: part/models.py:3444 part/models.py:3608 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3455 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3500 +#: part/models.py:3466 msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3517 templates/js/translated/part.js:2878 +#: part/models.py:3483 templates/js/translated/part.js:2880 msgid "Test Name" msgstr "Nazwa testu" -#: part/models.py:3518 +#: part/models.py:3484 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3524 +#: part/models.py:3490 msgid "Test Key" msgstr "" -#: part/models.py:3525 +#: part/models.py:3491 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3532 +#: part/models.py:3498 msgid "Test Description" msgstr "Testowy opis" -#: part/models.py:3533 +#: part/models.py:3499 msgid "Enter description for this test" msgstr "Wprowadź opis do tego testu" -#: part/models.py:3537 report/models.py:208 -#: templates/js/translated/part.js:2899 +#: part/models.py:3503 report/models.py:209 +#: templates/js/translated/part.js:2901 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "Aktywne" -#: part/models.py:3537 +#: part/models.py:3503 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3542 templates/js/translated/part.js:2907 +#: part/models.py:3508 templates/js/translated/part.js:2909 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Wymagane" -#: part/models.py:3543 +#: part/models.py:3509 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3548 templates/js/translated/part.js:2915 +#: part/models.py:3514 templates/js/translated/part.js:2917 msgid "Requires Value" msgstr "Wymaga wartości" -#: part/models.py:3549 +#: part/models.py:3515 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3554 templates/js/translated/part.js:2922 +#: part/models.py:3520 templates/js/translated/part.js:2924 msgid "Requires Attachment" msgstr "Wymaga załącznika" -#: part/models.py:3556 +#: part/models.py:3522 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3603 +#: part/models.py:3528 part/models.py:3667 templates/js/translated/part.js:1637 +msgid "Choices" +msgstr "" + +#: part/models.py:3529 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3583 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3608 +#: part/models.py:3588 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3628 -msgid "Choices must be unique" -msgstr "" - -#: part/models.py:3645 +#: part/models.py:3625 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3660 +#: part/models.py:3640 msgid "Parameter Name" msgstr "" -#: part/models.py:3667 +#: part/models.py:3647 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3675 +#: part/models.py:3655 msgid "Parameter description" msgstr "" -#: part/models.py:3681 templates/js/translated/part.js:1627 +#: part/models.py:3661 templates/js/translated/part.js:1628 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "" -#: part/models.py:3682 +#: part/models.py:3662 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3687 templates/js/translated/part.js:1636 -msgid "Choices" -msgstr "" - -#: part/models.py:3688 +#: part/models.py:3668 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3765 +#: part/models.py:3745 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3808 +#: part/models.py:3788 msgid "Parent Part" msgstr "Część nadrzędna" -#: part/models.py:3816 part/models.py:3917 part/models.py:3918 +#: part/models.py:3796 part/models.py:3897 part/models.py:3898 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3821 +#: part/models.py:3801 msgid "Data" msgstr "Dane" -#: part/models.py:3822 +#: part/models.py:3802 msgid "Parameter Value" msgstr "Wartość parametru" -#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3904 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "Wartość domyślna" -#: part/models.py:3925 +#: part/models.py:3905 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3963 +#: part/models.py:3943 msgid "Part ID or part name" msgstr "" -#: part/models.py:3964 +#: part/models.py:3944 msgid "Unique part ID value" msgstr "Unikalny wartość ID komponentu" -#: part/models.py:3966 +#: part/models.py:3946 msgid "Part IPN value" msgstr "Wartość IPN części" -#: part/models.py:3967 +#: part/models.py:3947 msgid "Level" msgstr "Poziom" -#: part/models.py:3967 +#: part/models.py:3947 msgid "BOM level" msgstr "" -#: part/models.py:4057 +#: part/models.py:4037 msgid "Select parent part" msgstr "Wybierz część nadrzędną" -#: part/models.py:4067 +#: part/models.py:4047 msgid "Sub part" msgstr "Podczęść" -#: part/models.py:4068 +#: part/models.py:4048 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4079 +#: part/models.py:4059 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4085 +#: part/models.py:4065 msgid "This BOM item is optional" msgstr "Ten element BOM jest opcjonalny" -#: part/models.py:4091 +#: part/models.py:4071 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4098 part/templates/part/upload_bom.html:55 +#: part/models.py:4078 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4099 +#: part/models.py:4079 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4106 +#: part/models.py:4086 msgid "BOM item reference" msgstr "" -#: part/models.py:4114 +#: part/models.py:4094 msgid "BOM item notes" msgstr "Notatki pozycji BOM" -#: part/models.py:4120 +#: part/models.py:4100 msgid "Checksum" msgstr "Suma kontrolna" -#: part/models.py:4121 +#: part/models.py:4101 msgid "BOM line checksum" msgstr "" -#: part/models.py:4126 templates/js/translated/table_filters.js:174 +#: part/models.py:4106 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "Zatwierdzone" -#: part/models.py:4127 +#: part/models.py:4107 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4132 part/templates/part/upload_bom.html:57 +#: part/models.py:4112 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:4133 +#: part/models.py:4113 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4138 part/templates/part/upload_bom.html:56 +#: part/models.py:4118 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "Zezwalaj na warianty" -#: part/models.py:4139 +#: part/models.py:4119 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4224 stock/models.py:664 +#: part/models.py:4204 stock/models.py:662 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4234 part/models.py:4236 +#: part/models.py:4214 part/models.py:4216 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4376 +#: part/models.py:4354 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4397 +#: part/models.py:4375 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4410 +#: part/models.py:4388 msgid "Parent BOM item" msgstr "" -#: part/models.py:4418 +#: part/models.py:4396 msgid "Substitute part" msgstr "Część zastępcza" -#: part/models.py:4434 +#: part/models.py:4412 msgid "Part 1" msgstr "Część 1" -#: part/models.py:4442 +#: part/models.py:4420 msgid "Part 2" msgstr "Część 2" -#: part/models.py:4443 +#: part/models.py:4421 msgid "Select Related Part" msgstr "Wybierz powiązaną część" -#: part/models.py:4462 +#: part/models.py:4440 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4467 +#: part/models.py:4445 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:119 part/serializers.py:141 +#: part/serializers.py:118 +msgid "Parent Category" +msgstr "" + +#: part/serializers.py:119 templates/js/translated/part.js:309 +msgid "Parent part category" +msgstr "" + +#: part/serializers.py:126 part/serializers.py:148 #: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "Podkategorie" -#: part/serializers.py:185 +#: part/serializers.py:180 msgid "Results" msgstr "" -#: part/serializers.py:186 +#: part/serializers.py:181 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 +#: part/serializers.py:205 part/serializers.py:223 stock/serializers.py:562 msgid "Purchase currency of this stock item" msgstr "Waluta zakupu tego towaru" -#: part/serializers.py:273 +#: part/serializers.py:268 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:397 +#: part/serializers.py:392 msgid "No parts selected" msgstr "" -#: part/serializers.py:407 +#: part/serializers.py:402 msgid "Select category" msgstr "" -#: part/serializers.py:442 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:443 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:448 +#: part/serializers.py:443 msgid "Copy Image" msgstr "Kopiuj obraz" -#: part/serializers.py:449 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:455 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "Kopiuj BOM" -#: part/serializers.py:456 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "Kopiuj parametry" -#: part/serializers.py:463 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:488 +#: part/serializers.py:483 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:490 +#: part/serializers.py:485 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:497 +#: part/serializers.py:492 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:493 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:510 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:531 +#: part/serializers.py:526 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:541 +#: part/serializers.py:536 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:548 +#: part/serializers.py:543 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:557 +#: part/serializers.py:552 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:568 +#: part/serializers.py:563 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:575 +#: part/serializers.py:570 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:834 msgid "External Stock" msgstr "" -#: part/serializers.py:840 +#: part/serializers.py:836 msgid "Unallocated Stock" msgstr "" -#: part/serializers.py:843 +#: part/serializers.py:839 msgid "Variant Stock" msgstr "" -#: part/serializers.py:873 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:471 +#: part/serializers.py:869 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:472 msgid "Duplicate Part" msgstr "Duplikuj część" -#: part/serializers.py:874 +#: part/serializers.py:870 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:880 templates/js/translated/part.js:102 +#: part/serializers.py:876 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:881 +#: part/serializers.py:877 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:887 +#: part/serializers.py:883 msgid "Supplier Information" msgstr "" -#: part/serializers.py:888 +#: part/serializers.py:884 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:896 +#: part/serializers.py:892 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:897 +#: part/serializers.py:893 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:902 +#: part/serializers.py:898 msgid "Existing Image" msgstr "" -#: part/serializers.py:903 +#: part/serializers.py:899 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:920 +#: part/serializers.py:916 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1126 +#: part/serializers.py:1122 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1136 +#: part/serializers.py:1132 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1146 +#: part/serializers.py:1142 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1152 +#: part/serializers.py:1148 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1153 +#: part/serializers.py:1149 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1158 +#: part/serializers.py:1154 msgid "Generate Report" msgstr "" -#: part/serializers.py:1159 +#: part/serializers.py:1155 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1164 +#: part/serializers.py:1160 msgid "Update Parts" msgstr "" -#: part/serializers.py:1165 +#: part/serializers.py:1161 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1173 +#: part/serializers.py:1169 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1279 +#: part/serializers.py:1275 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1286 +#: part/serializers.py:1282 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1294 +#: part/serializers.py:1290 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1301 +#: part/serializers.py:1297 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1330 +#: part/serializers.py:1326 msgid "Update" msgstr "" -#: part/serializers.py:1331 +#: part/serializers.py:1327 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1354 +#: part/serializers.py:1350 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1361 +#: part/serializers.py:1357 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1364 +#: part/serializers.py:1360 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1727 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1739 +#: part/serializers.py:1735 msgid "Remove Existing Data" msgstr "Usuń istniejące dane" -#: part/serializers.py:1740 +#: part/serializers.py:1736 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1745 +#: part/serializers.py:1741 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1746 +#: part/serializers.py:1742 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1747 msgid "Skip Invalid Rows" msgstr "Pomiń nieprawidłowe wiersze" -#: part/serializers.py:1752 +#: part/serializers.py:1748 msgid "Enable this option to skip invalid rows" msgstr "Włącz tę opcję, aby pominąć nieprawidłowe wiersze" -#: part/serializers.py:1757 +#: part/serializers.py:1753 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1758 +#: part/serializers.py:1754 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1792 +#: part/serializers.py:1788 msgid "Clear Existing BOM" msgstr "Wyczyść istniejący BOM" -#: part/serializers.py:1793 +#: part/serializers.py:1789 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1823 +#: part/serializers.py:1819 msgid "No part column specified" msgstr "" -#: part/serializers.py:1867 +#: part/serializers.py:1863 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1870 +#: part/serializers.py:1866 msgid "No matching part found" msgstr "" -#: part/serializers.py:1873 +#: part/serializers.py:1869 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1882 +#: part/serializers.py:1878 msgid "Quantity not provided" msgstr "Nie podano ilości" -#: part/serializers.py:1890 +#: part/serializers.py:1886 msgid "Invalid quantity" msgstr "Nieprawidłowa ilość" -#: part/serializers.py:1911 +#: part/serializers.py:1907 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 +#: part/stocktake.py:225 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "" -#: part/stocktake.py:225 +#: part/stocktake.py:226 msgid "Total Cost Min" msgstr "" -#: part/stocktake.py:226 +#: part/stocktake.py:227 msgid "Total Cost Max" msgstr "" -#: part/stocktake.py:284 +#: part/stocktake.py:285 msgid "Stocktake Report Available" msgstr "" -#: part/stocktake.py:285 +#: part/stocktake.py:286 msgid "A new stocktake report is available for download" msgstr "" @@ -7157,7 +7227,7 @@ 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 +#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" @@ -7257,15 +7327,15 @@ msgstr "Dostawcy Części" msgid "Part Manufacturers" msgstr "Producenci części" -#: part/templates/part/detail.html:655 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:663 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:748 +#: part/templates/part/detail.html:750 msgid "Add Test Result Template" msgstr "" @@ -7346,7 +7416,7 @@ msgstr "" msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" msgstr "" @@ -7418,7 +7488,7 @@ msgid "Minimum stock level" msgstr "Minimalny poziom stanu magazynowego" #: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 -#: templates/js/translated/part.js:1264 templates/js/translated/part.js:2443 +#: templates/js/translated/part.js:1265 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7511,8 +7581,8 @@ msgstr "Warianty" #: 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:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/part.js:1243 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 #: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "Stan" @@ -7555,7 +7625,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:247 +#: part/templates/part/prices.html:28 stock/admin.py:251 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 @@ -7632,8 +7702,8 @@ msgstr "" #: part/templates/part/stock_count.html:7 #: templates/js/translated/model_renderers.js:227 -#: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 -#: templates/js/translated/part.js:2142 +#: templates/js/translated/part.js:705 templates/js/translated/part.js:2141 +#: templates/js/translated/part.js:2143 msgid "No Stock" msgstr "Brak w magazynie" @@ -8005,7 +8075,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:308 msgid "Landscape" msgstr "" @@ -8118,62 +8188,62 @@ msgstr "" msgid "Uninstalled plugin successfully" msgstr "" -#: plugin/models.py:35 +#: plugin/models.py:36 msgid "Plugin Configuration" msgstr "Konfiguracja wtyczki" -#: plugin/models.py:36 +#: plugin/models.py:37 msgid "Plugin Configurations" msgstr "Konfiguracja wtyczek" -#: plugin/models.py:42 users/models.py:100 +#: plugin/models.py:43 users/models.py:100 msgid "Key" msgstr "Klucz" -#: plugin/models.py:43 +#: plugin/models.py:44 msgid "Key of plugin" msgstr "Klucz wtyczki" -#: plugin/models.py:51 +#: plugin/models.py:52 msgid "PluginName of the plugin" msgstr "Nazwa wtyczki" -#: plugin/models.py:58 plugin/serializers.py:90 +#: plugin/models.py:59 plugin/serializers.py:90 msgid "Package Name" msgstr "Nazwa pakietu" -#: plugin/models.py:60 +#: plugin/models.py:61 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:65 +#: plugin/models.py:66 msgid "Is the plugin active" msgstr "Czy wtyczka jest aktywna" -#: plugin/models.py:156 templates/js/translated/table_filters.js:370 +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "Zainstalowane" -#: plugin/models.py:165 +#: plugin/models.py:166 msgid "Sample plugin" msgstr "" -#: plugin/models.py:173 +#: plugin/models.py:174 msgid "Builtin Plugin" msgstr "Wtyczka wbudowana" -#: plugin/models.py:181 +#: plugin/models.py:182 msgid "Package Plugin" msgstr "" -#: plugin/models.py:205 report/models.py:474 +#: plugin/models.py:220 report/models.py:475 #: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "Wtyczka" -#: plugin/models.py:252 +#: plugin/models.py:267 msgid "Method" msgstr "Metoda" @@ -8181,17 +8251,17 @@ msgstr "Metoda" msgid "No author found" msgstr "Nie znaleziono autora" -#: plugin/registry.py:597 +#: plugin/registry.py:534 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:600 +#: plugin/registry.py:537 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:602 +#: plugin/registry.py:539 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -8306,23 +8376,19 @@ msgstr "Aktywuj wtyczkę" msgid "Activate this plugin" msgstr "Aktywuj tę wtyczkę" -#: plugin/serializers.py:234 +#: plugin/serializers.py:226 msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:235 +#: plugin/serializers.py:227 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:77 +#: report/api.py:88 msgid "No valid objects provided to template" msgstr "Brak prawidłowych obiektów do szablonu" -#: report/api.py:89 report/serializers.py:53 -msgid "Model Type" -msgstr "" - -#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/api.py:103 report/models.py:439 report/serializers.py:98 #: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 #: templates/js/translated/return_order.js:353 #: templates/js/translated/sales_order.js:887 @@ -8330,176 +8396,176 @@ msgstr "" msgid "Items" msgstr "" -#: report/api.py:168 +#: report/api.py:180 msgid "Plugin not found" msgstr "" -#: report/api.py:170 +#: report/api.py:182 msgid "Plugin is not active" msgstr "" -#: report/api.py:172 +#: report/api.py:184 msgid "Plugin does not support label printing" msgstr "" -#: report/api.py:221 +#: report/api.py:233 msgid "Invalid label dimensions" msgstr "" -#: report/api.py:236 report/api.py:316 +#: report/api.py:248 report/api.py:329 msgid "No valid items provided to template" msgstr "" -#: report/api.py:271 +#: report/api.py:283 msgid "Error printing label" msgstr "" -#: report/api.py:362 report/api.py:398 +#: report/api.py:375 report/api.py:411 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "Plik szablonu '{template}' jest brakujący lub nie istnieje" -#: report/helpers.py:41 +#: report/helpers.py:43 msgid "A4" msgstr "" -#: report/helpers.py:42 +#: report/helpers.py:44 msgid "A3" msgstr "" -#: report/helpers.py:43 +#: report/helpers.py:45 msgid "Legal" msgstr "" -#: report/helpers.py:44 +#: report/helpers.py:46 msgid "Letter" msgstr "" -#: report/models.py:118 +#: report/models.py:119 msgid "Template file with this name already exists" msgstr "" -#: report/models.py:150 +#: report/models.py:151 msgid "Template name" msgstr "Nazwa szablonu" -#: report/models.py:156 +#: report/models.py:157 msgid "Template description" msgstr "" -#: report/models.py:162 +#: report/models.py:163 msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Filename Pattern" msgstr "Wzór nazwy pliku" -#: report/models.py:203 +#: report/models.py:204 msgid "Pattern for generating filenames" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Template is enabled" msgstr "" -#: report/models.py:214 +#: report/models.py:215 msgid "Target model type for template" msgstr "" -#: report/models.py:234 +#: report/models.py:235 msgid "Filters" msgstr "Filtry" -#: report/models.py:235 +#: report/models.py:236 msgid "Template query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:294 report/models.py:361 +#: report/models.py:295 report/models.py:362 msgid "Template file" msgstr "" -#: report/models.py:302 +#: report/models.py:303 msgid "Page size for PDF reports" msgstr "Domyślna wielkość strony dla raportów PDF" -#: report/models.py:308 +#: report/models.py:309 msgid "Render report in landscape orientation" msgstr "Renderuj raport w orientacji poziomej" -#: report/models.py:367 +#: report/models.py:368 msgid "Width [mm]" msgstr "Szerokość [mm]" -#: report/models.py:368 +#: report/models.py:369 msgid "Label width, specified in mm" msgstr "" -#: report/models.py:374 +#: report/models.py:375 msgid "Height [mm]" msgstr "Wysokość [mm]" -#: report/models.py:375 +#: report/models.py:376 msgid "Label height, specified in mm" msgstr "" -#: report/models.py:438 +#: report/models.py:439 msgid "Number of items to process" msgstr "" -#: report/models.py:444 +#: report/models.py:445 msgid "Report generation is complete" msgstr "" -#: report/models.py:448 templates/js/translated/build.js:2177 +#: report/models.py:449 templates/js/translated/build.js:2177 msgid "Progress" msgstr "" -#: report/models.py:448 +#: report/models.py:449 msgid "Report generation progress" msgstr "" -#: report/models.py:456 +#: report/models.py:457 msgid "Report Template" msgstr "" -#: report/models.py:463 report/models.py:486 +#: report/models.py:464 report/models.py:487 msgid "Output File" msgstr "" -#: report/models.py:464 report/models.py:487 +#: report/models.py:465 report/models.py:488 msgid "Generated output file" msgstr "" -#: report/models.py:475 +#: report/models.py:476 msgid "Label output plugin" msgstr "" -#: report/models.py:479 +#: report/models.py:480 msgid "Label Template" msgstr "" -#: report/models.py:502 +#: report/models.py:503 msgid "Snippet" msgstr "Wycinek" -#: report/models.py:503 +#: report/models.py:504 msgid "Report snippet file" msgstr "" -#: report/models.py:510 +#: report/models.py:511 msgid "Snippet file description" msgstr "" -#: report/models.py:528 +#: report/models.py:529 msgid "Asset" msgstr "" -#: report/models.py:529 +#: report/models.py:530 msgid "Report asset file" msgstr "" -#: report/models.py:536 +#: report/models.py:537 msgid "Asset file description" msgstr "" @@ -8572,8 +8638,8 @@ msgid "Total" msgstr "Razem" #: report/templates/report/inventree_return_order_report.html:25 -#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 -#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:824 +#: stock/serializers.py:149 stock/templates/stock/item_base.html:311 #: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 #: templates/js/translated/build.js:2355 #: templates/js/translated/model_renderers.js:230 @@ -8603,32 +8669,32 @@ msgstr "" msgid "Test" msgstr "" -#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2412 msgid "Result" msgstr "Wynik" -#: report/templates/report/inventree_test_report.html:130 +#: report/templates/report/inventree_test_report.html:129 msgid "Pass" msgstr "Zaliczone" -#: report/templates/report/inventree_test_report.html:132 +#: report/templates/report/inventree_test_report.html:131 msgid "Fail" msgstr "Niezaliczone" -#: report/templates/report/inventree_test_report.html:139 +#: report/templates/report/inventree_test_report.html:138 msgid "No result (required)" msgstr "" -#: report/templates/report/inventree_test_report.html:141 +#: report/templates/report/inventree_test_report.html:140 msgid "No result" msgstr "" -#: report/templates/report/inventree_test_report.html:154 +#: report/templates/report/inventree_test_report.html:153 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "Zainstalowane elementy" -#: report/templates/report/inventree_test_report.html:168 stock/admin.py:162 +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 #: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 #: templates/js/translated/stock.js:3110 msgid "Serial" @@ -8650,654 +8716,670 @@ msgstr "" msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:172 +#: stock/admin.py:51 stock/admin.py:171 msgid "Location ID" msgstr "ID lokalizacji" -#: stock/admin.py:54 stock/admin.py:176 +#: stock/admin.py:53 stock/admin.py:175 msgid "Location Name" msgstr "" -#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/admin.py:63 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "Ścieżka lokalizacji" -#: stock/admin.py:149 +#: stock/admin.py:148 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:168 +#: stock/admin.py:167 msgid "Status Code" msgstr "" -#: stock/admin.py:180 +#: stock/admin.py:179 msgid "Supplier Part ID" msgstr "ID części dostawcy" -#: stock/admin.py:185 +#: stock/admin.py:184 +msgid "Supplier Part SKU" +msgstr "" + +#: stock/admin.py:189 msgid "Supplier ID" msgstr "" -#: stock/admin.py:191 +#: stock/admin.py:195 msgid "Supplier Name" msgstr "" -#: stock/admin.py:196 +#: stock/admin.py:200 msgid "Customer ID" msgstr "" -#: stock/admin.py:201 stock/models.py:806 +#: stock/admin.py:205 stock/models.py:804 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "Zainstalowane w" -#: stock/admin.py:206 +#: stock/admin.py:210 msgid "Build ID" msgstr "" -#: stock/admin.py:216 +#: stock/admin.py:220 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:221 +#: stock/admin.py:225 msgid "Purchase Order ID" msgstr "ID zlecenia zakupu" -#: stock/admin.py:236 +#: stock/admin.py:240 msgid "Review Needed" msgstr "" -#: stock/admin.py:241 +#: stock/admin.py:245 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:256 stock/models.py:900 +#: stock/admin.py:260 stock/models.py:898 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "Data ważności" -#: stock/api.py:318 +#: stock/api.py:312 msgid "Filter by location depth" msgstr "" -#: stock/api.py:338 +#: stock/api.py:332 +msgid "Filter by top-level locations" +msgstr "" + +#: stock/api.py:347 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:359 +#: stock/api.py:369 stock/serializers.py:1085 msgid "Parent Location" msgstr "" -#: stock/api.py:360 +#: stock/api.py:370 msgid "Filter by parent location" msgstr "" -#: stock/api.py:615 templates/js/translated/table_filters.js:427 +#: stock/api.py:625 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:803 +#: stock/api.py:813 msgid "Part Tree" msgstr "" -#: stock/api.py:833 +#: stock/api.py:843 msgid "Expiry date before" msgstr "" -#: stock/api.py:837 +#: stock/api.py:847 msgid "Expiry date after" msgstr "" -#: stock/api.py:840 stock/templates/stock/item_base.html:439 +#: stock/api.py:850 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:927 +#: stock/api.py:937 msgid "Quantity is required" msgstr "" -#: stock/api.py:933 +#: stock/api.py:943 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:964 +#: stock/api.py:974 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:974 +#: stock/api.py:984 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:1005 +#: stock/api.py:1015 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:59 +#: stock/models.py:60 msgid "Stock Location type" msgstr "" -#: stock/models.py:60 +#: stock/models.py:61 msgid "Stock Location types" msgstr "" -#: stock/models.py:86 +#: stock/models.py:87 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:123 stock/models.py:788 +#: stock/models.py:124 stock/models.py:786 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:124 stock/templates/stock/location.html:186 +#: stock/models.py:125 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "Lokacje stanu magazynowego" -#: stock/models.py:166 stock/models.py:949 +#: stock/models.py:167 stock/models.py:947 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "Właściciel" -#: stock/models.py:167 stock/models.py:950 +#: stock/models.py:168 stock/models.py:948 msgid "Select Owner" msgstr "Wybierz właściciela" -#: stock/models.py:175 +#: stock/models.py:176 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:182 templates/js/translated/stock.js:2781 +#: stock/models.py:183 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:183 +#: stock/models.py:184 msgid "This is an external stock location" msgstr "" -#: stock/models.py:189 templates/js/translated/stock.js:2790 +#: stock/models.py:190 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" -#: stock/models.py:193 +#: stock/models.py:194 msgid "Stock location type of this location" msgstr "" -#: stock/models.py:262 +#: stock/models.py:261 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:643 +#: stock/models.py:641 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:670 stock/serializers.py:419 +#: stock/models.py:668 stock/serializers.py:446 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:687 +#: stock/models.py:685 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:697 stock/models.py:710 +#: stock/models.py:695 stock/models.py:708 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:700 +#: stock/models.py:698 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:724 +#: stock/models.py:722 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:729 +#: stock/models.py:727 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:742 +#: stock/models.py:740 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:758 +#: stock/models.py:756 msgid "Parent Stock Item" msgstr "Nadrzędny towar" -#: stock/models.py:770 +#: stock/models.py:768 msgid "Base part" msgstr "Część podstawowa" -#: stock/models.py:780 +#: stock/models.py:778 msgid "Select a matching supplier part for this stock item" msgstr "Wybierz pasującą część dostawcy dla tego towaru" -#: stock/models.py:792 +#: stock/models.py:790 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:800 stock/serializers.py:1480 +#: stock/models.py:798 stock/serializers.py:1476 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:811 +#: stock/models.py:809 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:830 +#: stock/models.py:828 msgid "Serial number for this item" msgstr "" -#: stock/models.py:844 stock/serializers.py:1463 +#: stock/models.py:842 stock/serializers.py:1459 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:849 +#: stock/models.py:847 msgid "Stock Quantity" msgstr "Ilość w magazynie" -#: stock/models.py:859 +#: stock/models.py:857 msgid "Source Build" msgstr "" -#: stock/models.py:862 +#: stock/models.py:860 msgid "Build for this stock item" msgstr "" -#: stock/models.py:869 stock/templates/stock/item_base.html:363 +#: stock/models.py:867 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:872 +#: stock/models.py:870 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:881 +#: stock/models.py:879 msgid "Source Purchase Order" msgstr "Wyszukaj zlecenie zakupu" -#: stock/models.py:885 +#: stock/models.py:883 msgid "Purchase order for this stock item" msgstr "Zlecenie zakupu dla tego towaru" -#: stock/models.py:891 +#: stock/models.py:889 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:902 +#: stock/models.py:900 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:920 +#: stock/models.py:918 msgid "Delete on deplete" msgstr "Usuń po wyczerpaniu" -#: stock/models.py:921 +#: stock/models.py:919 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:941 +#: stock/models.py:939 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:972 +#: stock/models.py:970 msgid "Converted to part" msgstr "" -#: stock/models.py:1490 +#: stock/models.py:1486 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1496 +#: stock/models.py:1492 msgid "Quantity must be integer" msgstr "Ilość musi być liczbą całkowitą" -#: stock/models.py:1504 +#: stock/models.py:1500 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1510 +#: stock/models.py:1506 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1515 +#: stock/models.py:1511 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1523 stock/serializers.py:658 +#: stock/models.py:1519 stock/serializers.py:660 msgid "Serial numbers already exist" msgstr "Numer seryjny już istnieje" -#: stock/models.py:1620 +#: stock/models.py:1616 msgid "Test template does not exist" msgstr "" -#: stock/models.py:1638 +#: stock/models.py:1634 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1642 +#: stock/models.py:1638 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1645 +#: stock/models.py:1641 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1648 +#: stock/models.py:1644 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1651 +#: stock/models.py:1647 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1654 +#: stock/models.py:1650 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1661 stock/serializers.py:1369 +#: stock/models.py:1657 stock/serializers.py:1365 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1665 +#: stock/models.py:1661 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1673 +#: stock/models.py:1669 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1678 +#: stock/models.py:1674 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1905 +#: stock/models.py:1901 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2310 msgid "Entry notes" msgstr "Notatki do wpisu" -#: stock/models.py:2391 +#: stock/models.py:2378 msgid "Value must be provided for this test" msgstr "Należy podać wartość dla tego testu" -#: stock/models.py:2396 +#: stock/models.py:2383 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2423 +#: stock/models.py:2388 +msgid "Invalid value for this test" +msgstr "" + +#: stock/models.py:2412 msgid "Test result" msgstr "Wynik testu" -#: stock/models.py:2430 +#: stock/models.py:2419 msgid "Test output value" msgstr "" -#: stock/models.py:2438 +#: stock/models.py:2427 msgid "Test result attachment" msgstr "" -#: stock/models.py:2442 +#: stock/models.py:2431 msgid "Test notes" msgstr "" -#: stock/models.py:2450 templates/js/translated/stock.js:1548 +#: stock/models.py:2439 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2440 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2457 +#: stock/models.py:2446 msgid "Started" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2447 msgid "The timestamp of the test start" msgstr "" -#: stock/models.py:2464 +#: stock/models.py:2453 msgid "Finished" msgstr "" -#: stock/models.py:2465 +#: stock/models.py:2454 msgid "The timestamp of the test finish" msgstr "" -#: stock/serializers.py:75 +#: stock/serializers.py:74 msgid "Generated batch code" msgstr "" -#: stock/serializers.py:84 +#: stock/serializers.py:83 msgid "Select build order" msgstr "" -#: stock/serializers.py:93 +#: stock/serializers.py:92 msgid "Select stock item to generate batch code for" msgstr "" -#: stock/serializers.py:102 +#: stock/serializers.py:101 msgid "Select location to generate batch code for" msgstr "" -#: stock/serializers.py:111 +#: stock/serializers.py:110 msgid "Select part to generate batch code for" msgstr "" -#: stock/serializers.py:120 +#: stock/serializers.py:119 msgid "Select purchase order" msgstr "" -#: stock/serializers.py:127 +#: stock/serializers.py:126 msgid "Enter quantity for batch code" msgstr "" -#: stock/serializers.py:150 +#: stock/serializers.py:149 msgid "Generated serial number" msgstr "" -#: stock/serializers.py:159 +#: stock/serializers.py:158 msgid "Select part to generate serial number for" msgstr "" -#: stock/serializers.py:167 +#: stock/serializers.py:166 msgid "Quantity of serial numbers to generate" msgstr "" -#: stock/serializers.py:229 +#: stock/serializers.py:228 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:248 +#: stock/serializers.py:247 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:280 +#: stock/serializers.py:279 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:313 +#: stock/serializers.py:315 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:411 +#: stock/serializers.py:438 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:531 +#: stock/serializers.py:558 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:595 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:606 +#: stock/serializers.py:608 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:613 +#: stock/serializers.py:615 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 +#: stock/serializers.py:626 stock/serializers.py:1322 stock/serializers.py:1578 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:631 +#: stock/serializers.py:633 msgid "Optional note field" msgstr "" -#: stock/serializers.py:641 +#: stock/serializers.py:643 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:696 +#: stock/serializers.py:698 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:703 +#: stock/serializers.py:705 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:704 +#: stock/serializers.py:706 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 -#: stock/serializers.py:935 +#: stock/serializers.py:711 stock/serializers.py:791 stock/serializers.py:887 +#: stock/serializers.py:937 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:719 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:725 +#: stock/serializers.py:727 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:736 +#: stock/serializers.py:738 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:749 +#: stock/serializers.py:751 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:784 +#: stock/serializers.py:786 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:819 +#: stock/serializers.py:821 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:834 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:849 +#: stock/serializers.py:851 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:880 +#: stock/serializers.py:882 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:917 +#: stock/serializers.py:919 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:923 +#: stock/serializers.py:925 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:1019 stock/serializers.py:1082 +#: stock/serializers.py:1021 stock/serializers.py:1093 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:220 +#: stock/templates/stock/location.html:222 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "Podlokalizacje" -#: stock/serializers.py:1198 +#: stock/serializers.py:1086 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: stock/serializers.py:1194 msgid "Part must be salable" msgstr "Część musi być dostępna do sprzedaży" -#: stock/serializers.py:1202 +#: stock/serializers.py:1198 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1206 +#: stock/serializers.py:1202 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1230 +#: stock/serializers.py:1226 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1236 +#: stock/serializers.py:1232 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1244 +#: stock/serializers.py:1240 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1254 stock/serializers.py:1508 +#: stock/serializers.py:1250 stock/serializers.py:1504 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1333 +#: stock/serializers.py:1329 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1338 +#: stock/serializers.py:1334 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1339 +#: stock/serializers.py:1335 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1344 +#: stock/serializers.py:1340 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1345 +#: stock/serializers.py:1341 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1355 +#: stock/serializers.py:1351 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1422 +#: stock/serializers.py:1418 msgid "No Change" msgstr "" -#: stock/serializers.py:1451 +#: stock/serializers.py:1447 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1470 +#: stock/serializers.py:1466 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1498 +#: stock/serializers.py:1494 msgid "Stock transaction notes" msgstr "" @@ -9450,7 +9532,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276 msgid "Delete Test Data" msgstr "" @@ -9470,11 +9552,11 @@ msgstr "" msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:272 +#: stock/templates/stock/item.html:264 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "" @@ -9760,28 +9842,28 @@ msgstr "" msgid "Location Type" msgstr "" -#: stock/templates/stock/location.html:224 +#: stock/templates/stock/location.html:226 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:225 +#: stock/templates/stock/location.html:227 msgid "New Location" msgstr "Nowa lokalizacja" -#: stock/templates/stock/location.html:295 +#: stock/templates/stock/location.html:299 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:317 +#: stock/templates/stock/location.html:321 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:390 +#: stock/templates/stock/location.html:394 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:401 +#: stock/templates/stock/location.html:405 msgid "Link Barcode to Stock Location" msgstr "" @@ -10205,20 +10287,20 @@ msgstr "Ustawienia zlecenia zakupu" msgid "Pricing Settings" msgstr "" -#: templates/InvenTree/settings/pricing.html:34 +#: templates/InvenTree/settings/pricing.html:35 msgid "Exchange Rates" msgstr "Kurs wymiany" -#: templates/InvenTree/settings/pricing.html:38 +#: templates/InvenTree/settings/pricing.html:39 msgid "Update Now" msgstr "Aktualizuj teraz" -#: templates/InvenTree/settings/pricing.html:46 -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 msgid "Last Update" msgstr "Ostatnia Aktualizacja" -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:51 msgid "Never" msgstr "Nigdy" @@ -10275,8 +10357,8 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:547 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 +#: templates/js/translated/part.js:393 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:402 msgid "Delete" msgstr "Usuń" @@ -10316,12 +10398,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 -#: templates/js/translated/part.js:1645 +#: templates/js/translated/part.js:1646 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 -#: templates/js/translated/part.js:1646 +#: templates/js/translated/part.js:1647 msgid "Delete Template" msgstr "" @@ -10711,7 +10793,7 @@ msgid "Submit Bug Report" msgstr "Prześlij raport o błędzie" #: templates/about.html:91 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 +#: templates/js/translated/helpers.js:589 msgid "copy to clipboard" msgstr "skopiuj do schowka" @@ -10775,7 +10857,7 @@ msgid "Are you sure you want to sign out?" msgstr "Jesteś pewien, że chcesz się wylogować?" #: templates/account/logout.html:27 templates/allauth_2fa/backup_tokens.html:35 -#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:44 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45 msgid "Return to Site" msgstr "" @@ -10889,15 +10971,19 @@ msgstr "Krok 1" msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "Zeskanuj poniższy kod QR za pomocą wybranego przez Ciebie generatora tokenów (np. Google Authenticator)." -#: templates/allauth_2fa/setup.html:23 +#: templates/allauth_2fa/setup.html:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 msgid "Step 2" msgstr "Krok 2" -#: templates/allauth_2fa/setup.html:27 +#: templates/allauth_2fa/setup.html:28 msgid "Input a token generated by the app:" msgstr "Wprowadź token wygenerowany przez aplikację:" -#: templates/allauth_2fa/setup.html:37 +#: templates/allauth_2fa/setup.html:38 msgid "Verify" msgstr "Zweryfikuj" @@ -10976,7 +11062,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3217 +#: templates/js/translated/part.js:3219 msgid "Minimum Quantity" msgstr "Minimalna ilość" @@ -11064,27 +11150,27 @@ msgstr "" msgid "Delete attachments" msgstr "" -#: templates/js/translated/attachment.js:253 +#: templates/js/translated/attachment.js:260 msgid "Attachment actions" msgstr "" -#: templates/js/translated/attachment.js:275 +#: templates/js/translated/attachment.js:294 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:315 +#: templates/js/translated/attachment.js:334 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:365 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:366 +#: templates/js/translated/attachment.js:385 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:374 +#: templates/js/translated/attachment.js:393 msgid "Delete attachment" msgstr "" @@ -11365,7 +11451,7 @@ msgid "Includes variant and substitute stock" msgstr "" #: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 -#: templates/js/translated/part.js:1256 +#: templates/js/translated/part.js:1257 #: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" @@ -11692,7 +11778,7 @@ msgstr "" #: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 #: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 -#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11735,8 +11821,8 @@ msgstr "" msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 -#: templates/js/translated/part.js:1202 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:791 +#: templates/js/translated/part.js:1203 msgid "Trackable part" msgstr "" @@ -11922,7 +12008,7 @@ msgid "Delete Parameters" msgstr "" #: templates/js/translated/company.js:1191 -#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2244 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2245 msgid "Order parts" msgstr "" @@ -11939,34 +12025,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:1279 -#: templates/js/translated/company.js:1567 templates/js/translated/part.js:798 -#: templates/js/translated/part.js:1210 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Template part" msgstr "" #: templates/js/translated/company.js:1283 -#: templates/js/translated/company.js:1571 templates/js/translated/part.js:802 -#: templates/js/translated/part.js:1214 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:803 +#: templates/js/translated/part.js:1215 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1464 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1465 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1527 +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1528 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1528 +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1529 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1433 +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1434 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1549 +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1550 msgid "Delete Parameter" msgstr "" @@ -12100,23 +12186,23 @@ msgstr "Istnieją błędy formularza" msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2499 +#: templates/js/translated/forms.js:2500 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3113 +#: templates/js/translated/forms.js:3114 msgid "Select Columns" msgstr "" @@ -12217,7 +12303,7 @@ msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 -#: templates/js/translated/part.js:1604 +#: templates/js/translated/part.js:1605 msgid "ID" msgstr "" @@ -12298,347 +12384,343 @@ msgstr "" 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 +#: templates/js/translated/part.js:333 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:355 +#: templates/js/translated/part.js:356 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:356 +#: templates/js/translated/part.js:357 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:370 +#: templates/js/translated/part.js:371 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:383 +#: templates/js/translated/part.js:384 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:388 +#: templates/js/translated/part.js:389 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:397 +#: templates/js/translated/part.js:398 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:401 +#: templates/js/translated/part.js:402 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:406 +#: templates/js/translated/part.js:407 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:430 +#: templates/js/translated/part.js:431 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:432 +#: templates/js/translated/part.js:433 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:433 +#: templates/js/translated/part.js:434 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:462 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:463 +#: templates/js/translated/part.js:464 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:474 +#: templates/js/translated/part.js:475 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:531 +#: templates/js/translated/part.js:532 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:532 +#: templates/js/translated/part.js:533 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:546 +#: templates/js/translated/part.js:547 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:548 +#: templates/js/translated/part.js:549 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:549 +#: templates/js/translated/part.js:550 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:550 +#: templates/js/translated/part.js:551 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:557 +#: templates/js/translated/part.js:558 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:593 +#: templates/js/translated/part.js:594 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:595 +#: templates/js/translated/part.js:596 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:600 +#: templates/js/translated/part.js:601 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:602 +#: templates/js/translated/part.js:603 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:619 +#: templates/js/translated/part.js:620 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:629 +#: templates/js/translated/part.js:630 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:632 +#: templates/js/translated/part.js:633 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:657 +#: templates/js/translated/part.js:658 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:685 +#: templates/js/translated/part.js:686 #: templates/js/translated/table_filters.js:747 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:688 +#: templates/js/translated/part.js:689 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:748 +#: templates/js/translated/part.js:749 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:771 +#: templates/js/translated/part.js:772 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +#: templates/js/translated/part.js:795 templates/js/translated/part.js:1207 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:806 +#: templates/js/translated/part.js:807 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:810 +#: templates/js/translated/part.js:811 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:897 +#: templates/js/translated/part.js:898 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:901 +#: templates/js/translated/part.js:902 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1050 +#: templates/js/translated/part.js:1051 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1145 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +#: templates/js/translated/part.js:1113 templates/js/translated/part.js:1155 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1281 +#: templates/js/translated/part.js:1282 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1599 +#: templates/js/translated/part.js:1600 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1662 +#: templates/js/translated/part.js:1663 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1674 +#: templates/js/translated/part.js:1675 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1682 +#: templates/js/translated/part.js:1683 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1716 +#: templates/js/translated/part.js:1717 #: templates/js/translated/purchase_order.js:1654 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1860 +#: templates/js/translated/part.js:1861 #: templates/js/translated/purchase_order.js:2153 #: templates/js/translated/return_order.js:755 #: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1906 +#: templates/js/translated/part.js:1907 #: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1970 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1991 +#: templates/js/translated/part.js:1992 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 +#: templates/js/translated/part.js:2080 templates/js/translated/part.js:2506 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2200 +#: templates/js/translated/part.js:2201 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2205 +#: templates/js/translated/part.js:2206 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2235 +#: templates/js/translated/part.js:2236 msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2286 +#: templates/js/translated/part.js:2287 msgid "part" msgstr "" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2288 msgid "parts" msgstr "" -#: templates/js/translated/part.js:2383 +#: templates/js/translated/part.js:2384 msgid "No category" msgstr "" -#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2546 +#: templates/js/translated/part.js:2547 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2644 +#: templates/js/translated/part.js:2645 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2760 +#: templates/js/translated/part.js:2761 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2776 +#: templates/js/translated/part.js:2777 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2865 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2887 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/part.js:2938 templates/js/translated/stock.js:1457 #: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2940 +#: templates/js/translated/part.js:2942 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2956 +#: templates/js/translated/part.js:2958 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2970 +#: templates/js/translated/part.js:2972 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3051 templates/js/translated/part.js:3052 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3052 +#: templates/js/translated/part.js:3054 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3058 +#: templates/js/translated/part.js:3060 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3108 +#: templates/js/translated/part.js:3110 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3114 +#: templates/js/translated/part.js:3116 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3210 +#: templates/js/translated/part.js:3212 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3226 +#: templates/js/translated/part.js:3228 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3271 +#: templates/js/translated/part.js:3273 msgid "Minimum Stock Level" msgstr "" @@ -13246,10 +13328,6 @@ msgstr "" 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 "" @@ -13418,7 +13496,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:401 +#: templates/js/translated/stock.js:1042 users/models.py:392 msgid "Add" msgstr "Dodaj" @@ -14309,34 +14387,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:384 +#: users/models.py:375 msgid "Permission set" msgstr "Uprawnienia nadane" -#: users/models.py:393 +#: users/models.py:384 msgid "Group" msgstr "Grupa" -#: users/models.py:397 +#: users/models.py:388 msgid "View" msgstr "Widok" -#: users/models.py:397 +#: users/models.py:388 msgid "Permission to view items" msgstr "Uprawnienie do wyświetlania przedmiotów" -#: users/models.py:401 +#: users/models.py:392 msgid "Permission to add items" msgstr "Uprawnienie do dodawania przedmiotów" -#: users/models.py:405 +#: users/models.py:396 msgid "Change" msgstr "Zmień" -#: users/models.py:407 +#: users/models.py:398 msgid "Permissions to edit items" msgstr "Uprawnienie do edycji przedmiotów" -#: users/models.py:413 +#: users/models.py:404 msgid "Permission to delete items" msgstr "Uprawnienie do usuwania przedmiotów" + diff --git a/src/backend/InvenTree/locale/pt/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/pt/LC_MESSAGES/django.po index 8463a77b8b..8bb188ccf9 100644 --- a/src/backend/InvenTree/locale/pt/LC_MESSAGES/django.po +++ b/src/backend/InvenTree/locale/pt/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-05-31 07:08+0000\n" -"PO-Revision-Date: 2024-05-27 11:55\n" +"POT-Creation-Date: 2024-06-26 03:18+0000\n" +"PO-Revision-Date: 2024-06-26 06:04\n" "Last-Translator: \n" "Language-Team: Portuguese, Brazilian\n" "Language: pt_BR\n" @@ -21,7 +21,7 @@ msgstr "" msgid "API endpoint not found" msgstr "" -#: InvenTree/api.py:536 +#: InvenTree/api.py:520 msgid "User does not have permission to view this model" msgstr "" @@ -52,25 +52,25 @@ msgstr "" msgid "Error details can be found in the admin panel" msgstr "" -#: InvenTree/fields.py:139 +#: InvenTree/fields.py:136 msgid "Enter date" msgstr "" -#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 -#: build/serializers.py:531 build/templates/build/sidebar.html:21 -#: company/models.py:849 company/templates/company/sidebar.html:37 -#: order/models.py:1332 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:205 InvenTree/models.py:918 build/serializers.py:452 +#: build/serializers.py:530 build/templates/build/sidebar.html:21 +#: company/models.py:817 company/templates/company/sidebar.html:37 +#: order/models.py:1296 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:3218 part/templates/part/part_sidebar.html:63 +#: part/models.py:3183 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_report.html:172 -#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 -#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 -#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 -#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:230 stock/models.py:2309 stock/models.py:2431 +#: stock/serializers.py:632 stock/serializers.py:790 stock/serializers.py:886 +#: stock/serializers.py:936 stock/serializers.py:1239 stock/serializers.py:1328 +#: stock/serializers.py:1493 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1080 +#: templates/js/translated/part.js:1081 #: templates/js/translated/purchase_order.js:2200 #: templates/js/translated/return_order.js:775 #: templates/js/translated/sales_order.js:1103 @@ -120,15 +120,15 @@ msgstr "" msgid "You must type the same email each time." msgstr "" -#: InvenTree/forms.py:253 InvenTree/forms.py:261 +#: InvenTree/forms.py:248 InvenTree/forms.py:256 msgid "The provided primary email address is not valid." msgstr "" -#: InvenTree/forms.py:268 +#: InvenTree/forms.py:263 msgid "The provided email domain is not approved." msgstr "" -#: InvenTree/forms.py:395 +#: InvenTree/forms.py:390 msgid "Registration is disabled." msgstr "" @@ -171,35 +171,35 @@ msgstr "" msgid "Remove HTML tags from this value" msgstr "" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Connection error" msgstr "" -#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 msgid "Server responded with invalid status code" msgstr "" -#: InvenTree/helpers_model.py:158 +#: InvenTree/helpers_model.py:148 msgid "Exception occurred" msgstr "" -#: InvenTree/helpers_model.py:168 +#: InvenTree/helpers_model.py:158 msgid "Server responded with invalid Content-Length value" msgstr "" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:161 msgid "Image size is too large" msgstr "" -#: InvenTree/helpers_model.py:183 +#: InvenTree/helpers_model.py:173 msgid "Image download exceeded maximum size" msgstr "" -#: InvenTree/helpers_model.py:188 +#: InvenTree/helpers_model.py:178 msgid "Remote server returned empty response" msgstr "" -#: InvenTree/helpers_model.py:196 +#: InvenTree/helpers_model.py:186 msgid "Supplied URL is not a valid image file" msgstr "" @@ -296,46 +296,50 @@ msgid "Portuguese (Brazilian)" msgstr "" #: InvenTree/locales.py:41 -msgid "Russian" +msgid "Romanian" msgstr "" #: InvenTree/locales.py:42 -msgid "Slovak" +msgid "Russian" msgstr "" #: InvenTree/locales.py:43 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: InvenTree/locales.py:44 -msgid "Serbian" +msgid "Slovenian" msgstr "" #: InvenTree/locales.py:45 -msgid "Swedish" +msgid "Serbian" msgstr "" #: InvenTree/locales.py:46 -msgid "Thai" +msgid "Swedish" msgstr "" #: InvenTree/locales.py:47 -msgid "Turkish" +msgid "Thai" msgstr "" #: InvenTree/locales.py:48 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: InvenTree/locales.py:49 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: InvenTree/locales.py:50 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: InvenTree/locales.py:51 +msgid "Chinese (Simplified)" +msgstr "" + +#: InvenTree/locales.py:52 msgid "Chinese (Traditional)" msgstr "" @@ -344,153 +348,65 @@ msgstr "" msgid "[{site_name}] Log in to the app" msgstr "" -#: InvenTree/magic_login.py:38 company/models.py:133 +#: InvenTree/magic_login.py:38 company/models.py:136 #: company/templates/company/company_base.html:138 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:677 msgid "Email" msgstr "" -#: InvenTree/models.py:107 +#: InvenTree/models.py:105 msgid "Error running plugin validation" msgstr "" -#: InvenTree/models.py:176 +#: InvenTree/models.py:174 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:182 +#: InvenTree/models.py:180 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:183 +#: InvenTree/models.py:181 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:413 +#: InvenTree/models.py:408 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:420 +#: InvenTree/models.py:415 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:426 +#: InvenTree/models.py:421 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:437 +#: InvenTree/models.py:432 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:445 +#: InvenTree/models.py:440 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:476 +#: InvenTree/models.py:471 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:550 -msgid "Missing file" -msgstr "" - -#: InvenTree/models.py:551 -msgid "Missing external link" -msgstr "" - -#: InvenTree/models.py:572 stock/models.py:2437 -#: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:326 -msgid "Attachment" -msgstr "" - -#: InvenTree/models.py:573 -msgid "Select file to attach" -msgstr "" - -#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:831 -#: order/models.py:303 order/models.py:1337 order/models.py:1753 -#: part/admin.py:55 part/models.py:962 -#: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_report.html:164 -#: stock/admin.py:225 templates/js/translated/company.js:1319 -#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2455 -#: templates/js/translated/purchase_order.js:2040 -#: templates/js/translated/purchase_order.js:2204 -#: templates/js/translated/return_order.js:779 -#: templates/js/translated/sales_order.js:1092 -#: templates/js/translated/sales_order.js:2023 -msgid "Link" -msgstr "" - -#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 -#: stock/models.py:836 -msgid "Link to external URL" -msgstr "" - -#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:341 -msgid "Comment" -msgstr "" - -#: InvenTree/models.py:589 -msgid "File comment" -msgstr "" - -#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 -#: common/models.py:2518 common/models.py:2742 common/models.py:2743 -#: common/models.py:2988 common/models.py:2989 part/models.py:3228 -#: part/models.py:3315 part/models.py:3408 part/models.py:3436 -#: plugin/models.py:259 plugin/models.py:260 -#: report/templates/report/inventree_test_report.html:105 -#: templates/js/translated/stock.js:3036 users/models.py:111 -msgid "User" -msgstr "" - -#: InvenTree/models.py:602 -msgid "upload date" -msgstr "" - -#: InvenTree/models.py:624 -msgid "Filename must not be empty" -msgstr "" - -#: InvenTree/models.py:635 -msgid "Invalid attachment directory" -msgstr "" - -#: InvenTree/models.py:665 -#, python-brace-format -msgid "Filename contains illegal character '{c}'" -msgstr "" - -#: InvenTree/models.py:668 -msgid "Filename missing extension" -msgstr "" - -#: InvenTree/models.py:677 -msgid "Attachment with this filename already exists" -msgstr "" - -#: InvenTree/models.py:684 -msgid "Error renaming file" -msgstr "" - -#: InvenTree/models.py:860 +#: InvenTree/models.py:719 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:877 +#: InvenTree/models.py:736 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 -#: common/serializers.py:403 company/models.py:614 machine/models.py:24 -#: part/models.py:898 part/models.py:3659 plugin/models.py:50 -#: report/models.py:149 stock/models.py:72 +#: InvenTree/models.py:766 common/models.py:2623 common/models.py:3036 +#: common/serializers.py:408 company/models.py:580 machine/models.py:24 +#: part/models.py:891 part/models.py:3639 plugin/models.py:51 +#: report/models.py:150 stock/models.py:73 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:83 @@ -501,25 +417,25 @@ msgstr "" #: templates/js/translated/company.js:724 #: templates/js/translated/company.js:913 #: templates/js/translated/company.js:1165 -#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 -#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1187 +#: templates/js/translated/part.js:1475 templates/js/translated/part.js:1611 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "" -#: InvenTree/models.py:913 build/models.py:218 -#: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:523 company/models.py:840 +#: InvenTree/models.py:772 build/models.py:220 +#: build/templates/build/detail.html:24 common/models.py:138 +#: company/models.py:509 company/models.py:808 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 order/models.py:289 -#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 -#: part/models.py:3674 part/templates/part/category.html:82 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:914 +#: part/models.py:3654 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:155 -#: report/models.py:509 report/models.py:535 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 #: report/templates/report/inventree_build_order_report.html:117 -#: stock/admin.py:55 stock/models.py:78 stock/templates/stock/location.html:125 +#: stock/admin.py:54 stock/models.py:79 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 @@ -528,10 +444,10 @@ msgstr "" #: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 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:2354 -#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1239 +#: templates/js/translated/part.js:1484 templates/js/translated/part.js:1622 +#: templates/js/translated/part.js:1959 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2897 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1706 #: templates/js/translated/purchase_order.js:1849 @@ -544,149 +460,141 @@ msgstr "" msgid "Description" msgstr "" -#: InvenTree/models.py:914 stock/models.py:79 +#: InvenTree/models.py:773 stock/models.py:80 msgid "Description (optional)" msgstr "" -#: InvenTree/models.py:923 -msgid "parent" -msgstr "" - -#: InvenTree/models.py:929 templates/js/translated/part.js:2793 +#: InvenTree/models.py:788 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "" -#: InvenTree/models.py:1035 +#: InvenTree/models.py:918 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:1064 +#: InvenTree/models.py:947 msgid "Barcode Data" msgstr "" -#: InvenTree/models.py:1065 +#: InvenTree/models.py:948 msgid "Third party barcode data" msgstr "" -#: InvenTree/models.py:1071 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:1072 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:1125 +#: InvenTree/models.py:1008 msgid "Existing barcode found" msgstr "" -#: InvenTree/models.py:1168 +#: InvenTree/models.py:1051 msgid "Server Error" msgstr "" -#: InvenTree/models.py:1169 +#: InvenTree/models.py:1052 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:62 part/models.py:4212 +#: InvenTree/serializers.py:63 part/models.py:4192 msgid "Must be a valid number" msgstr "" -#: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:3036 +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3001 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "" -#: InvenTree/serializers.py:102 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:441 +#: InvenTree/serializers.py:442 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:453 +#: InvenTree/serializers.py:454 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:472 +#: InvenTree/serializers.py:473 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:474 +#: InvenTree/serializers.py:475 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:481 +#: InvenTree/serializers.py:482 msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:542 -msgid "Filename" -msgstr "" - -#: InvenTree/serializers.py:576 +#: InvenTree/serializers.py:540 msgid "Invalid value" msgstr "" -#: InvenTree/serializers.py:596 +#: InvenTree/serializers.py:560 msgid "Data File" msgstr "" -#: InvenTree/serializers.py:597 +#: InvenTree/serializers.py:561 msgid "Select data file for upload" msgstr "" -#: InvenTree/serializers.py:614 +#: InvenTree/serializers.py:578 msgid "Unsupported file type" msgstr "" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:584 msgid "File is too large" msgstr "" -#: InvenTree/serializers.py:641 +#: InvenTree/serializers.py:605 msgid "No columns found in file" msgstr "" -#: InvenTree/serializers.py:644 +#: InvenTree/serializers.py:608 msgid "No data rows found in file" msgstr "" -#: InvenTree/serializers.py:757 +#: InvenTree/serializers.py:721 msgid "No data rows provided" msgstr "" -#: InvenTree/serializers.py:760 +#: InvenTree/serializers.py:724 msgid "No data columns supplied" msgstr "" -#: InvenTree/serializers.py:827 +#: InvenTree/serializers.py:791 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "" -#: InvenTree/serializers.py:836 +#: InvenTree/serializers.py:800 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/serializers.py:859 +#: InvenTree/serializers.py:840 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:860 +#: InvenTree/serializers.py:841 msgid "URL of remote image file" msgstr "" -#: InvenTree/serializers.py:878 +#: InvenTree/serializers.py:859 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/status.py:66 part/serializers.py:1178 +#: InvenTree/status.py:66 part/serializers.py:1174 msgid "Background worker check failed" msgstr "" @@ -698,27 +606,27 @@ msgstr "" msgid "InvenTree system health checks failed" msgstr "" -#: InvenTree/templatetags/inventree_extras.py:183 +#: InvenTree/templatetags/inventree_extras.py:184 msgid "Unknown database" msgstr "" -#: InvenTree/validators.py:31 InvenTree/validators.py:33 +#: InvenTree/validators.py:32 InvenTree/validators.py:34 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:39 +#: InvenTree/validators.py:40 msgid "Not a valid currency code" msgstr "" -#: InvenTree/validators.py:121 InvenTree/validators.py:137 +#: InvenTree/validators.py:118 InvenTree/validators.py:134 msgid "Overage value must not be negative" msgstr "" -#: InvenTree/validators.py:139 +#: InvenTree/validators.py:136 msgid "Overage must not exceed 100%" msgstr "" -#: InvenTree/validators.py:145 +#: InvenTree/validators.py:142 msgid "Invalid value for overage" msgstr "" @@ -750,14 +658,14 @@ msgstr "" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: build/api.py:299 part/models.py:4070 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:300 part/models.py:4084 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4064 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2529 #: templates/js/translated/table_filters.js:186 @@ -778,30 +686,30 @@ msgstr "" msgid "Allocated" msgstr "" -#: build/api.py:311 company/models.py:904 company/serializers.py:383 +#: build/api.py:311 company/models.py:872 company/serializers.py:359 #: 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:2561 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:234 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 -#: templates/js/translated/part.js:699 +#: templates/js/translated/part.js:693 templates/js/translated/part.js:695 +#: templates/js/translated/part.js:700 #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:575 msgid "Available" msgstr "" -#: build/models.py:83 build/templates/build/build_base.html:9 +#: build/models.py:85 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_report.html:105 -#: stock/serializers.py:83 templates/email/build_order_completed.html:16 +#: stock/serializers.py:82 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:2892 msgid "Build Order" msgstr "" -#: build/models.py:84 build/templates/build/build_base.html:13 +#: build/models.py:86 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 @@ -812,25 +720,25 @@ msgstr "" msgid "Build Orders" msgstr "" -#: build/models.py:131 +#: build/models.py:133 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:142 order/models.py:240 +#: build/models.py:144 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "" -#: build/models.py:148 +#: build/models.py:150 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:209 +#: build/models.py:211 msgid "Build Order Reference" msgstr "" -#: build/models.py:210 order/models.py:463 order/models.py:928 -#: order/models.py:1325 order/models.py:2056 part/admin.py:419 -#: part/models.py:4105 part/templates/part/upload_bom.html:54 +#: build/models.py:212 order/models.py:463 order/models.py:926 +#: order/models.py:1289 order/models.py:2020 part/admin.py:411 +#: part/models.py:4085 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_purchase_order_report.html:28 #: report/templates/report/inventree_return_order_report.html:26 @@ -844,27 +752,27 @@ msgstr "" msgid "Reference" msgstr "" -#: build/models.py:221 +#: build/models.py:223 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:229 build/templates/build/build_base.html:183 +#: build/models.py:231 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:230 +#: build/models.py:232 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:235 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 -#: order/models.py:1450 order/models.py:1595 order/models.py:1596 -#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 -#: part/models.py:3191 part/models.py:3335 part/models.py:3358 -#: part/models.py:3379 part/models.py:3401 part/models.py:3511 -#: part/models.py:3807 part/models.py:3963 part/models.py:4056 -#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 +#: build/models.py:237 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1026 order/api.py:805 +#: order/models.py:1414 order/models.py:1559 order/models.py:1560 +#: part/api.py:1494 part/api.py:1788 part/models.py:395 part/models.py:3012 +#: part/models.py:3156 part/models.py:3303 part/models.py:3324 +#: part/models.py:3346 part/models.py:3477 part/models.py:3787 +#: part/models.py:3943 part/models.py:4036 part/models.py:4395 +#: part/serializers.py:1120 part/serializers.py:1726 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -875,8 +783,8 @@ msgstr "" #: report/templates/report/inventree_return_order_report.html:24 #: report/templates/report/inventree_sales_order_report.html:27 #: report/templates/report/inventree_stock_location_report.html:102 -#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 -#: stock/serializers.py:818 templates/InvenTree/search.html:82 +#: stock/serializers.py:109 stock/serializers.py:157 stock/serializers.py:423 +#: stock/serializers.py:820 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 @@ -889,8 +797,8 @@ msgstr "" #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 -#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2323 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:1944 templates/js/translated/part.js:2016 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 #: templates/js/translated/purchase_order.js:751 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1848 @@ -908,107 +816,107 @@ msgstr "" msgid "Part" msgstr "" -#: build/models.py:243 +#: build/models.py:245 msgid "Select part to build" msgstr "" -#: build/models.py:248 +#: build/models.py:250 msgid "Sales Order Reference" msgstr "" -#: build/models.py:252 +#: build/models.py:254 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:257 build/serializers.py:1000 +#: build/models.py:259 build/serializers.py:999 #: templates/js/translated/build.js:1731 #: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "" -#: build/models.py:261 +#: build/models.py:263 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:266 +#: build/models.py:268 msgid "Destination Location" msgstr "" -#: build/models.py:270 +#: build/models.py:272 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:274 +#: build/models.py:276 msgid "Build Quantity" msgstr "" -#: build/models.py:277 +#: build/models.py:279 msgid "Number of stock items to build" msgstr "" -#: build/models.py:281 +#: build/models.py:283 msgid "Completed items" msgstr "" -#: build/models.py:283 +#: build/models.py:285 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:287 +#: build/models.py:289 msgid "Build Status" msgstr "" -#: build/models.py:291 +#: build/models.py:293 msgid "Build status code" msgstr "" -#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 -#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 +#: build/models.py:302 build/serializers.py:286 order/serializers.py:580 +#: stock/models.py:838 stock/serializers.py:74 stock/serializers.py:1458 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "" -#: build/models.py:304 build/serializers.py:288 +#: build/models.py:306 build/serializers.py:287 msgid "Batch code for this build output" msgstr "" -#: build/models.py:307 order/models.py:316 order/serializers.py:120 -#: part/models.py:1122 part/templates/part/part_base.html:310 +#: build/models.py:309 order/models.py:316 order/serializers.py:119 +#: part/models.py:1115 part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:338 #: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "" -#: build/models.py:311 +#: build/models.py:313 msgid "Target completion date" msgstr "" -#: build/models.py:312 +#: build/models.py:314 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:315 order/models.py:521 order/models.py:2101 +#: build/models.py:317 order/models.py:521 order/models.py:2065 #: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "" -#: build/models.py:321 +#: build/models.py:323 msgid "completed by" msgstr "" -#: build/models.py:329 templates/js/translated/build.js:2207 +#: build/models.py:331 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "" -#: build/models.py:330 +#: build/models.py:332 msgid "User who issued this build order" msgstr "" -#: build/models.py:338 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:145 +#: build/models.py:340 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:147 #: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:232 part/models.py:1139 +#: order/templates/order/sales_order_base.html:232 part/models.py:1132 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_report.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 @@ -1019,31 +927,36 @@ msgstr "" msgid "Responsible" msgstr "" -#: build/models.py:339 +#: build/models.py:341 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:344 build/templates/build/detail.html:108 +#: build/models.py:346 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:184 -#: part/templates/part/part_base.html:383 stock/models.py:836 +#: part/templates/part/part_base.html:383 stock/models.py:834 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "" -#: build/models.py:349 +#: build/models.py:347 common/models.py:3178 part/models.py:956 +#: stock/models.py:834 +msgid "Link to external URL" +msgstr "" + +#: build/models.py:351 msgid "Build Priority" msgstr "" -#: build/models.py:352 +#: build/models.py:354 msgid "Priority of this build order" msgstr "" -#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: build/models.py:361 common/models.py:131 order/admin.py:18 #: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 #: templates/js/translated/build.js:2144 #: templates/js/translated/purchase_order.js:1710 @@ -1054,65 +967,65 @@ msgstr "" msgid "Project Code" msgstr "" -#: build/models.py:360 +#: build/models.py:362 msgid "Project code for this build order" msgstr "" -#: build/models.py:593 build/models.py:658 +#: build/models.py:595 build/models.py:660 msgid "Failed to offload task to complete build allocations" msgstr "" -#: build/models.py:615 +#: build/models.py:617 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:621 +#: build/models.py:623 msgid "A build order has been completed" msgstr "" -#: build/models.py:847 build/models.py:932 +#: build/models.py:849 build/models.py:934 msgid "No build output specified" msgstr "" -#: build/models.py:850 +#: build/models.py:852 msgid "Build output is already completed" msgstr "" -#: build/models.py:853 +#: build/models.py:855 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 -#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 -#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 -#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 +#: build/models.py:938 build/serializers.py:219 build/serializers.py:268 +#: build/serializers.py:866 order/models.py:559 order/serializers.py:432 +#: order/serializers.py:575 part/serializers.py:1484 part/serializers.py:1884 +#: stock/models.py:677 stock/models.py:1495 stock/serializers.py:603 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:941 build/serializers.py:225 +#: build/models.py:943 build/serializers.py:224 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1001 build/serializers.py:548 +#: build/models.py:1003 build/serializers.py:547 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1352 +#: build/models.py:1344 msgid "Build Order Line Item" msgstr "" -#: build/models.py:1377 +#: build/models.py:1369 msgid "Build object" msgstr "" -#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 -#: build/serializers.py:254 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2539 -#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 -#: part/forms.py:48 part/models.py:3205 part/models.py:4078 +#: build/models.py:1383 build/models.py:1639 build/serializers.py:206 +#: build/serializers.py:253 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2509 +#: order/models.py:1272 order/models.py:1931 order/serializers.py:1327 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3170 part/models.py:4058 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1121,8 +1034,8 @@ msgstr "" #: report/templates/report/inventree_sales_order_report.html:29 #: report/templates/report/inventree_stock_location_report.html:104 #: report/templates/report/inventree_test_report.html:90 -#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 -#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:125 stock/serializers.py:165 stock/serializers.py:594 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1133,8 +1046,8 @@ msgstr "" #: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 #: templates/js/translated/model_renderers.js:236 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:962 +#: templates/js/translated/part.js:1812 templates/js/translated/part.js:3342 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1154,38 +1067,38 @@ msgstr "" msgid "Quantity" msgstr "" -#: build/models.py:1392 +#: build/models.py:1384 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1472 +#: build/models.py:1464 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1481 +#: build/models.py:1473 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1491 order/models.py:1918 +#: build/models.py:1483 order/models.py:1882 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1497 order/models.py:1921 +#: build/models.py:1489 order/models.py:1885 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1503 +#: build/models.py:1495 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1562 +#: build/models.py:1554 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 -#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 -#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: build/models.py:1626 build/serializers.py:846 order/serializers.py:1171 +#: order/serializers.py:1192 stock/models.py:358 stock/serializers.py:91 +#: stock/serializers.py:697 stock/serializers.py:1177 stock/serializers.py:1289 #: stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 @@ -1201,70 +1114,70 @@ msgstr "" msgid "Stock Item" msgstr "" -#: build/models.py:1635 +#: build/models.py:1627 msgid "Source stock item" msgstr "" -#: build/models.py:1648 +#: build/models.py:1640 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1656 +#: build/models.py:1648 msgid "Install into" msgstr "" -#: build/models.py:1657 +#: build/models.py:1649 msgid "Destination stock item" msgstr "" -#: build/serializers.py:157 build/serializers.py:876 +#: build/serializers.py:156 build/serializers.py:875 #: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "" -#: build/serializers.py:169 +#: build/serializers.py:168 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:173 +#: build/serializers.py:172 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:177 +#: build/serializers.py:176 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:188 +#: build/serializers.py:187 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:208 build/serializers.py:255 +#: build/serializers.py:207 build/serializers.py:254 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:276 +#: build/serializers.py:275 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:279 +#: build/serializers.py:278 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:294 order/serializers.py:589 order/serializers.py:1343 -#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:293 order/serializers.py:588 order/serializers.py:1331 +#: stock/serializers.py:614 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:295 +#: build/serializers.py:294 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 -#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 -#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 -#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 -#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 +#: build/serializers.py:299 build/serializers.py:440 build/serializers.py:512 +#: order/serializers.py:564 order/serializers.py:672 order/serializers.py:1656 +#: part/serializers.py:1140 stock/serializers.py:100 stock/serializers.py:625 +#: stock/serializers.py:785 stock/serializers.py:881 stock/serializers.py:1321 +#: stock/serializers.py:1577 stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:1001 #: templates/js/translated/build.js:2372 @@ -1280,54 +1193,54 @@ msgstr "" msgid "Location" msgstr "" -#: build/serializers.py:301 +#: build/serializers.py:300 msgid "Stock location for build output" msgstr "" -#: build/serializers.py:315 +#: build/serializers.py:314 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:316 +#: build/serializers.py:315 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:331 +#: build/serializers.py:330 msgid "Serial numbers must be provided for trackable parts" msgstr "" -#: build/serializers.py:356 stock/api.py:1031 +#: build/serializers.py:355 stock/api.py:1041 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:403 build/serializers.py:465 build/serializers.py:554 +#: build/serializers.py:402 build/serializers.py:464 build/serializers.py:553 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:442 +#: build/serializers.py:441 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:448 +#: build/serializers.py:447 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:449 +#: build/serializers.py:448 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:454 +#: build/serializers.py:453 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:514 +#: build/serializers.py:513 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:520 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:952 -#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 -#: stock/serializers.py:930 stock/serializers.py:1469 +#: build/serializers.py:519 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2044 order/serializers.py:596 stock/admin.py:164 +#: stock/serializers.py:932 stock/serializers.py:1465 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 @@ -1339,188 +1252,188 @@ msgstr "" msgid "Status" msgstr "" -#: build/serializers.py:526 +#: build/serializers.py:525 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:527 +#: build/serializers.py:526 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:611 msgid "Consume Allocated Stock" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:612 msgid "Consume any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:619 +#: build/serializers.py:618 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:620 +#: build/serializers.py:619 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:646 msgid "Not permitted" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:647 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:648 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:679 +#: build/serializers.py:678 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:681 +#: build/serializers.py:680 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:691 +#: build/serializers.py:690 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:696 +#: build/serializers.py:695 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:697 +#: build/serializers.py:696 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:707 templates/js/translated/build.js:315 +#: build/serializers.py:706 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:712 order/serializers.py:301 order/serializers.py:1246 +#: build/serializers.py:711 order/serializers.py:300 order/serializers.py:1234 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:713 +#: build/serializers.py:712 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:723 templates/js/translated/build.js:319 +#: build/serializers.py:722 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:732 templates/js/translated/build.js:303 +#: build/serializers.py:731 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:770 +#: build/serializers.py:769 msgid "Build Line" msgstr "" -#: build/serializers.py:780 +#: build/serializers.py:779 msgid "Build output" msgstr "" -#: build/serializers.py:788 +#: build/serializers.py:787 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:824 +#: build/serializers.py:823 msgid "Build Line Item" msgstr "" -#: build/serializers.py:838 +#: build/serializers.py:837 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:853 stock/serializers.py:1194 +#: build/serializers.py:852 stock/serializers.py:1190 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:901 order/serializers.py:1237 +#: build/serializers.py:900 order/serializers.py:1225 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:907 +#: build/serializers.py:906 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:914 +#: build/serializers.py:913 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:938 order/serializers.py:1489 +#: build/serializers.py:937 order/serializers.py:1477 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:1001 +#: build/serializers.py:1000 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:1009 +#: build/serializers.py:1008 msgid "Exclude Location" msgstr "" -#: build/serializers.py:1010 +#: build/serializers.py:1009 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:1015 +#: build/serializers.py:1014 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:1016 +#: build/serializers.py:1015 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:1021 +#: build/serializers.py:1020 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:1022 +#: build/serializers.py:1021 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:1027 +#: build/serializers.py:1026 msgid "Optional Items" msgstr "" -#: build/serializers.py:1028 +#: build/serializers.py:1027 msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1050 +#: build/serializers.py:1049 msgid "Failed to start auto-allocation task" msgstr "" -#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 -#: stock/api.py:794 +#: build/serializers.py:1139 part/models.py:3953 part/models.py:4387 +#: stock/api.py:804 msgid "BOM Item" msgstr "" -#: build/serializers.py:1149 templates/js/translated/index.js:130 +#: build/serializers.py:1148 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:832 part/serializers.py:1506 +#: build/serializers.py:1153 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:828 part/serializers.py:1502 #: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 -#: templates/js/translated/build.js:2613 templates/js/translated/part.js:709 -#: templates/js/translated/part.js:2148 +#: templates/js/translated/build.js:2613 templates/js/translated/part.js:710 +#: templates/js/translated/part.js:2149 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1159 part/serializers.py:1508 +#: build/serializers.py:1158 part/serializers.py:1504 #: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 +#: build/serializers.py:1163 part/bom.py:172 part/serializers.py:1527 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1929 msgid "Available Stock" @@ -1544,7 +1457,7 @@ msgstr "" #: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 #: order/status_codes.py:44 order/status_codes.py:69 #: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:165 report/models.py:443 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 msgid "Complete" msgstr "" @@ -1674,11 +1587,11 @@ msgstr "" #: build/templates/build/build_base.html:160 #: build/templates/build/detail.html:138 order/models.py:309 -#: order/models.py:1343 order/templates/order/order_base.html:186 +#: order/models.py:1307 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:196 #: report/templates/report/inventree_build_order_report.html:125 -#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1831 #: templates/js/translated/purchase_order.js:1739 #: templates/js/translated/purchase_order.js:2147 #: templates/js/translated/return_order.js:346 @@ -1711,8 +1624,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 -#: order/models.py:1587 order/models.py:1701 order/models.py:1855 +#: build/templates/build/detail.html:101 order/api.py:1463 order/models.py:845 +#: order/models.py:1551 order/models.py:1665 order/models.py:1819 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_report.html:135 @@ -1762,7 +1675,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1479 +#: build/templates/build/detail.html:49 order/models.py:1443 #: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "" @@ -1775,7 +1688,7 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:163 +#: build/templates/build/detail.html:80 stock/admin.py:162 #: stock/templates/stock/item_base.html:162 #: templates/js/translated/build.js:1380 #: templates/js/translated/model_renderers.js:241 @@ -1894,11 +1807,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:436 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -1914,6 +1827,34 @@ msgstr "" msgid "Incomplete Outputs" msgstr "" +#: common/api.py:689 +msgid "Is Link" +msgstr "" + +#: common/api.py:697 +msgid "Is File" +msgstr "" + +#: common/api.py:739 +msgid "User does not have permission to delete this attachment" +msgstr "" + +#: common/currency.py:130 +msgid "Invalid currency code" +msgstr "" + +#: common/currency.py:132 +msgid "Duplicate currency code" +msgstr "" + +#: common/currency.py:137 +msgid "No valid currency codes provided" +msgstr "" + +#: common/currency.py:154 +msgid "No plugin" +msgstr "" + #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1952,1507 +1893,1512 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:71 +#: common/models.py:73 msgid "Updated" msgstr "" -#: common/models.py:72 +#: common/models.py:74 msgid "Timestamp of last update" msgstr "" -#: common/models.py:105 +#: common/models.py:107 msgid "Site URL is locked by configuration" msgstr "" -#: common/models.py:130 +#: common/models.py:132 msgid "Unique project code" msgstr "" -#: common/models.py:137 +#: common/models.py:139 msgid "Project description" msgstr "" -#: common/models.py:146 +#: common/models.py:148 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:766 +#: common/models.py:765 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:770 +#: common/models.py:769 msgid "Settings value" msgstr "" -#: common/models.py:822 +#: common/models.py:821 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:838 +#: common/models.py:837 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:846 +#: common/models.py:845 msgid "Value must be an integer value" msgstr "" -#: common/models.py:883 +#: common/models.py:882 msgid "Key string must be unique" msgstr "" -#: common/models.py:1115 +#: common/models.py:1114 msgid "No group" msgstr "" -#: common/models.py:1158 -msgid "An empty domain is not allowed." -msgstr "" - -#: common/models.py:1160 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "" - -#: common/models.py:1172 -msgid "No plugin" -msgstr "" - -#: common/models.py:1260 +#: common/models.py:1213 msgid "Restart required" msgstr "" -#: common/models.py:1262 +#: common/models.py:1215 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1269 +#: common/models.py:1222 msgid "Pending migrations" msgstr "" -#: common/models.py:1270 +#: common/models.py:1223 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1275 +#: common/models.py:1228 msgid "Server Instance Name" msgstr "" -#: common/models.py:1277 +#: common/models.py:1230 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1281 +#: common/models.py:1234 msgid "Use instance name" msgstr "" -#: common/models.py:1282 +#: common/models.py:1235 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1287 +#: common/models.py:1240 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1288 +#: common/models.py:1241 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1293 company/models.py:108 company/models.py:109 +#: common/models.py:1246 company/models.py:111 company/models.py:112 msgid "Company name" msgstr "" -#: common/models.py:1294 +#: common/models.py:1247 msgid "Internal company name" msgstr "" -#: common/models.py:1298 +#: common/models.py:1251 msgid "Base URL" msgstr "" -#: common/models.py:1299 +#: common/models.py:1252 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1305 +#: common/models.py:1258 msgid "Default Currency" msgstr "" -#: common/models.py:1306 +#: common/models.py:1259 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1312 +#: common/models.py:1265 +msgid "Supported Currencies" +msgstr "" + +#: common/models.py:1266 +msgid "List of supported currency codes" +msgstr "" + +#: common/models.py:1272 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1314 +#: common/models.py:1274 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1317 common/models.py:1373 common/models.py:1386 -#: common/models.py:1394 common/models.py:1403 common/models.py:1412 -#: common/models.py:1620 common/models.py:1642 common/models.py:1757 -#: common/models.py:2076 +#: common/models.py:1277 common/models.py:1333 common/models.py:1346 +#: common/models.py:1354 common/models.py:1363 common/models.py:1372 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:2046 msgid "days" msgstr "" -#: common/models.py:1321 +#: common/models.py:1281 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1322 +#: common/models.py:1282 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1327 +#: common/models.py:1287 msgid "Download from URL" msgstr "" -#: common/models.py:1329 +#: common/models.py:1289 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1335 +#: common/models.py:1295 msgid "Download Size Limit" msgstr "" -#: common/models.py:1336 +#: common/models.py:1296 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1342 +#: common/models.py:1302 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1344 +#: common/models.py:1304 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:1349 +#: common/models.py:1309 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1350 +#: common/models.py:1310 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1355 +#: common/models.py:1315 msgid "Require confirm" msgstr "" -#: common/models.py:1356 +#: common/models.py:1316 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1361 +#: common/models.py:1321 msgid "Tree Depth" msgstr "" -#: common/models.py:1363 +#: common/models.py:1323 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1369 +#: common/models.py:1329 msgid "Update Check Interval" msgstr "" -#: common/models.py:1370 +#: common/models.py:1330 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1376 +#: common/models.py:1336 msgid "Automatic Backup" msgstr "" -#: common/models.py:1377 +#: common/models.py:1337 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1382 +#: common/models.py:1342 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1383 +#: common/models.py:1343 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1389 +#: common/models.py:1349 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1391 +#: common/models.py:1351 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1398 +#: common/models.py:1358 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1400 +#: common/models.py:1360 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1407 +#: common/models.py:1367 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1409 +#: common/models.py:1369 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1416 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1376 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1417 +#: common/models.py:1377 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1422 +#: common/models.py:1382 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1423 +#: common/models.py:1383 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1429 +#: common/models.py:1389 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1430 +#: common/models.py:1390 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1435 +#: common/models.py:1395 msgid "Part Revisions" msgstr "" -#: common/models.py:1436 +#: common/models.py:1396 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1441 +#: common/models.py:1401 msgid "Allow Deletion from Assembly" msgstr "" -#: common/models.py:1442 +#: common/models.py:1402 msgid "Allow deletion of parts which are used in an assembly" msgstr "" -#: common/models.py:1447 +#: common/models.py:1407 msgid "IPN Regex" msgstr "" -#: common/models.py:1448 +#: common/models.py:1408 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1451 +#: common/models.py:1411 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1452 +#: common/models.py:1412 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1457 +#: common/models.py:1417 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1458 +#: common/models.py:1418 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1463 +#: common/models.py:1423 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1464 +#: common/models.py:1424 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1469 +#: common/models.py:1429 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1470 +#: common/models.py:1430 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1475 +#: common/models.py:1435 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1476 +#: common/models.py:1436 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1481 +#: common/models.py:1441 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1482 +#: common/models.py:1442 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1487 part/admin.py:108 part/models.py:3815 -#: report/models.py:293 report/models.py:360 report/serializers.py:90 -#: report/serializers.py:131 stock/serializers.py:228 +#: common/models.py:1447 part/admin.py:108 part/models.py:3795 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:227 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1488 +#: common/models.py:1448 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 +#: common/models.py:1453 part/admin.py:91 part/admin.py:425 part/models.py:1052 #: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" msgstr "" -#: common/models.py:1494 +#: common/models.py:1454 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1499 part/admin.py:95 part/models.py:1065 +#: common/models.py:1459 part/admin.py:95 part/models.py:1058 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1500 +#: common/models.py:1460 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1505 part/admin.py:100 part/models.py:1077 +#: common/models.py:1465 part/admin.py:100 part/models.py:1070 msgid "Purchaseable" msgstr "" -#: common/models.py:1506 +#: common/models.py:1466 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1511 part/admin.py:104 part/models.py:1083 +#: common/models.py:1471 part/admin.py:104 part/models.py:1076 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1512 +#: common/models.py:1472 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1517 part/admin.py:113 part/models.py:1071 +#: common/models.py:1477 part/admin.py:113 part/models.py:1064 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" msgstr "" -#: common/models.py:1518 +#: common/models.py:1478 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1523 part/admin.py:117 part/models.py:1093 +#: common/models.py:1483 part/admin.py:117 part/models.py:1086 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" msgstr "" -#: common/models.py:1524 +#: common/models.py:1484 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1529 +#: common/models.py:1489 msgid "Show Import in Views" msgstr "" -#: common/models.py:1530 +#: common/models.py:1490 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1535 +#: common/models.py:1495 msgid "Show related parts" msgstr "" -#: common/models.py:1536 +#: common/models.py:1496 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1541 +#: common/models.py:1501 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1542 +#: common/models.py:1502 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1547 templates/js/translated/part.js:107 +#: common/models.py:1507 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1549 +#: common/models.py:1509 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1555 +#: common/models.py:1515 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1556 +#: common/models.py:1516 msgid "Format to display the part name" msgstr "" -#: common/models.py:1562 +#: common/models.py:1522 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1563 +#: common/models.py:1523 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1567 +#: common/models.py:1527 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1569 +#: common/models.py:1529 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1575 +#: common/models.py:1535 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1577 +#: common/models.py:1537 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1583 +#: common/models.py:1548 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1585 +#: common/models.py:1550 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1591 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1593 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1599 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1601 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1607 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1609 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1615 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1617 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1630 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1632 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1638 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1640 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1647 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1648 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1653 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1655 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1661 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1662 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1667 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1669 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1675 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1676 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1681 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1682 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1687 +#: common/models.py:1657 msgid "Log Report Errors" msgstr "" -#: common/models.py:1688 +#: common/models.py:1658 msgid "Log errors which occur when generating reports" msgstr "" -#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:301 +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:302 msgid "Page Size" msgstr "" -#: common/models.py:1694 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1699 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1700 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1705 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1707 +#: common/models.py:1677 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1713 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1714 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1719 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1720 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1725 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1727 +#: common/models.py:1697 msgid "Determines default behavior when a stock item is depleted" msgstr "" -#: common/models.py:1733 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1735 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1740 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1741 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1746 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1747 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1752 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1754 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1761 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1762 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1767 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1768 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1773 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1774 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1778 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1779 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1784 +#: common/models.py:1754 msgid "Check BOM when installing items" msgstr "" -#: common/models.py:1786 +#: common/models.py:1756 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "" -#: common/models.py:1792 +#: common/models.py:1762 msgid "Allow Out of Stock Transfer" msgstr "" -#: common/models.py:1794 +#: common/models.py:1764 msgid "Allow stock items which are not in stock to be transferred between stock locations" msgstr "" -#: common/models.py:1800 +#: common/models.py:1770 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1802 +#: common/models.py:1772 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1808 common/models.py:1836 common/models.py:1858 -#: common/models.py:1894 +#: common/models.py:1778 common/models.py:1806 common/models.py:1828 +#: common/models.py:1864 msgid "Require Responsible Owner" msgstr "" -#: common/models.py:1809 common/models.py:1837 common/models.py:1859 -#: common/models.py:1895 +#: common/models.py:1779 common/models.py:1807 common/models.py:1829 +#: common/models.py:1865 msgid "A responsible owner must be assigned to each order" msgstr "" -#: common/models.py:1814 +#: common/models.py:1784 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1816 +#: common/models.py:1786 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:1822 +#: common/models.py:1792 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1823 +#: common/models.py:1793 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1828 +#: common/models.py:1798 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1830 +#: common/models.py:1800 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1842 +#: common/models.py:1812 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1844 +#: common/models.py:1814 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1850 +#: common/models.py:1820 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1852 +#: common/models.py:1822 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1864 +#: common/models.py:1834 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1865 +#: common/models.py:1835 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1870 +#: common/models.py:1840 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1872 +#: common/models.py:1842 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1878 +#: common/models.py:1848 msgid "Mark Shipped Orders as Complete" msgstr "" -#: common/models.py:1880 +#: common/models.py:1850 msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" msgstr "" -#: common/models.py:1886 +#: common/models.py:1856 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1888 +#: common/models.py:1858 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1900 +#: common/models.py:1870 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1902 +#: common/models.py:1872 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1908 +#: common/models.py:1878 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1910 +#: common/models.py:1880 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1917 +#: common/models.py:1887 msgid "Enable password forgot" msgstr "" -#: common/models.py:1918 +#: common/models.py:1888 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1923 +#: common/models.py:1893 msgid "Enable registration" msgstr "" -#: common/models.py:1924 +#: common/models.py:1894 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1929 +#: common/models.py:1899 msgid "Enable SSO" msgstr "" -#: common/models.py:1930 +#: common/models.py:1900 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1935 +#: common/models.py:1905 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1937 +#: common/models.py:1907 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1943 +#: common/models.py:1913 msgid "Email required" msgstr "" -#: common/models.py:1944 +#: common/models.py:1914 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1949 +#: common/models.py:1919 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1951 +#: common/models.py:1921 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1957 +#: common/models.py:1927 msgid "Mail twice" msgstr "" -#: common/models.py:1958 +#: common/models.py:1928 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1963 +#: common/models.py:1933 msgid "Password twice" msgstr "" -#: common/models.py:1964 +#: common/models.py:1934 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1969 +#: common/models.py:1939 msgid "Allowed domains" msgstr "" -#: common/models.py:1971 +#: common/models.py:1941 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1977 +#: common/models.py:1947 msgid "Group on signup" msgstr "" -#: common/models.py:1978 +#: common/models.py:1948 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1983 +#: common/models.py:1953 msgid "Enforce MFA" msgstr "" -#: common/models.py:1984 +#: common/models.py:1954 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1989 +#: common/models.py:1959 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1991 +#: common/models.py:1961 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1999 +#: common/models.py:1969 msgid "Check for plugin updates" msgstr "" -#: common/models.py:2000 +#: common/models.py:1970 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:2006 +#: common/models.py:1976 msgid "Enable URL integration" msgstr "" -#: common/models.py:2007 +#: common/models.py:1977 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:2013 +#: common/models.py:1983 msgid "Enable navigation integration" msgstr "" -#: common/models.py:2014 +#: common/models.py:1984 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:2020 +#: common/models.py:1990 msgid "Enable app integration" msgstr "" -#: common/models.py:2021 +#: common/models.py:1991 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:2027 +#: common/models.py:1997 msgid "Enable schedule integration" msgstr "" -#: common/models.py:2028 +#: common/models.py:1998 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:2034 +#: common/models.py:2004 msgid "Enable event integration" msgstr "" -#: common/models.py:2035 +#: common/models.py:2005 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:2041 +#: common/models.py:2011 msgid "Enable project codes" msgstr "" -#: common/models.py:2042 +#: common/models.py:2012 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:2047 +#: common/models.py:2017 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:2049 +#: common/models.py:2019 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:2055 +#: common/models.py:2025 msgid "Exclude External Locations" msgstr "" -#: common/models.py:2057 +#: common/models.py:2027 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:2063 +#: common/models.py:2033 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:2065 +#: common/models.py:2035 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:2071 +#: common/models.py:2041 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:2073 +#: common/models.py:2043 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:2080 +#: common/models.py:2050 msgid "Display Users full names" msgstr "" -#: common/models.py:2081 +#: common/models.py:2051 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:2086 +#: common/models.py:2056 msgid "Enable Test Station Data" msgstr "" -#: common/models.py:2087 +#: common/models.py:2057 msgid "Enable test station data collection for test results" msgstr "" -#: common/models.py:2099 common/models.py:2509 +#: common/models.py:2069 common/models.py:2479 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2142 +#: common/models.py:2112 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2144 +#: common/models.py:2114 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2150 +#: common/models.py:2120 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2151 +#: common/models.py:2121 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2156 +#: common/models.py:2126 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2157 +#: common/models.py:2127 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2162 +#: common/models.py:2132 msgid "Show latest parts" msgstr "" -#: common/models.py:2163 +#: common/models.py:2133 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2168 +#: common/models.py:2138 msgid "Show invalid BOMs" msgstr "" -#: common/models.py:2169 +#: common/models.py:2139 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2174 +#: common/models.py:2144 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2175 +#: common/models.py:2145 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2180 +#: common/models.py:2150 msgid "Show low stock" msgstr "" -#: common/models.py:2181 +#: common/models.py:2151 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2186 +#: common/models.py:2156 msgid "Show depleted stock" msgstr "" -#: common/models.py:2187 +#: common/models.py:2157 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2192 +#: common/models.py:2162 msgid "Show needed stock" msgstr "" -#: common/models.py:2193 +#: common/models.py:2163 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2198 +#: common/models.py:2168 msgid "Show expired stock" msgstr "" -#: common/models.py:2199 +#: common/models.py:2169 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2204 +#: common/models.py:2174 msgid "Show stale stock" msgstr "" -#: common/models.py:2205 +#: common/models.py:2175 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2210 +#: common/models.py:2180 msgid "Show pending builds" msgstr "" -#: common/models.py:2211 +#: common/models.py:2181 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2216 +#: common/models.py:2186 msgid "Show overdue builds" msgstr "" -#: common/models.py:2217 +#: common/models.py:2187 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2222 +#: common/models.py:2192 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2223 +#: common/models.py:2193 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2228 +#: common/models.py:2198 msgid "Show overdue POs" msgstr "" -#: common/models.py:2229 +#: common/models.py:2199 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2234 +#: common/models.py:2204 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2235 +#: common/models.py:2205 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2240 +#: common/models.py:2210 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2241 +#: common/models.py:2211 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2246 +#: common/models.py:2216 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2247 +#: common/models.py:2217 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2252 +#: common/models.py:2222 msgid "Show News" msgstr "" -#: common/models.py:2253 +#: common/models.py:2223 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2258 +#: common/models.py:2228 msgid "Inline label display" msgstr "" -#: common/models.py:2260 +#: common/models.py:2230 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2266 +#: common/models.py:2236 msgid "Default label printer" msgstr "" -#: common/models.py:2268 +#: common/models.py:2238 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2274 +#: common/models.py:2244 msgid "Inline report display" msgstr "" -#: common/models.py:2276 +#: common/models.py:2246 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2282 +#: common/models.py:2252 msgid "Search Parts" msgstr "" -#: common/models.py:2283 +#: common/models.py:2253 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2288 +#: common/models.py:2258 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2289 +#: common/models.py:2259 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2294 +#: common/models.py:2264 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2295 +#: common/models.py:2265 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2300 +#: common/models.py:2270 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2301 +#: common/models.py:2271 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2306 +#: common/models.py:2276 msgid "Search Categories" msgstr "" -#: common/models.py:2307 +#: common/models.py:2277 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2312 +#: common/models.py:2282 msgid "Search Stock" msgstr "" -#: common/models.py:2313 +#: common/models.py:2283 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2318 +#: common/models.py:2288 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2320 +#: common/models.py:2290 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2326 +#: common/models.py:2296 msgid "Search Locations" msgstr "" -#: common/models.py:2327 +#: common/models.py:2297 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2332 +#: common/models.py:2302 msgid "Search Companies" msgstr "" -#: common/models.py:2333 +#: common/models.py:2303 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2338 +#: common/models.py:2308 msgid "Search Build Orders" msgstr "" -#: common/models.py:2339 +#: common/models.py:2309 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2344 +#: common/models.py:2314 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2345 +#: common/models.py:2315 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2350 +#: common/models.py:2320 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2352 +#: common/models.py:2322 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2358 +#: common/models.py:2328 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2359 +#: common/models.py:2329 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2364 +#: common/models.py:2334 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2366 +#: common/models.py:2336 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2372 +#: common/models.py:2342 msgid "Search Return Orders" msgstr "" -#: common/models.py:2373 +#: common/models.py:2343 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2378 +#: common/models.py:2348 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2380 +#: common/models.py:2350 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2386 +#: common/models.py:2356 msgid "Search Preview Results" msgstr "" -#: common/models.py:2388 +#: common/models.py:2358 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2394 +#: common/models.py:2364 msgid "Regex Search" msgstr "" -#: common/models.py:2395 +#: common/models.py:2365 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2400 +#: common/models.py:2370 msgid "Whole Word Search" msgstr "" -#: common/models.py:2401 +#: common/models.py:2371 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2406 +#: common/models.py:2376 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2407 +#: common/models.py:2377 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2412 +#: common/models.py:2382 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2413 +#: common/models.py:2383 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2418 +#: common/models.py:2388 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2419 +#: common/models.py:2389 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2424 +#: common/models.py:2394 msgid "Date Format" msgstr "" -#: common/models.py:2425 +#: common/models.py:2395 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2438 part/templates/part/detail.html:41 +#: common/models.py:2408 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2439 +#: common/models.py:2409 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2444 part/templates/part/detail.html:62 +#: common/models.py:2414 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2446 +#: common/models.py:2416 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2452 +#: common/models.py:2422 msgid "Table String Length" msgstr "" -#: common/models.py:2454 +#: common/models.py:2424 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2460 +#: common/models.py:2430 msgid "Default part label template" msgstr "" -#: common/models.py:2461 +#: common/models.py:2431 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2466 +#: common/models.py:2436 msgid "Default stock item template" msgstr "" -#: common/models.py:2468 +#: common/models.py:2438 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2474 +#: common/models.py:2444 msgid "Default stock location label template" msgstr "" -#: common/models.py:2476 +#: common/models.py:2446 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2482 +#: common/models.py:2452 msgid "Default build line label template" msgstr "" -#: common/models.py:2484 +#: common/models.py:2454 msgid "The build line label template to be automatically selected" msgstr "" -#: common/models.py:2490 +#: common/models.py:2460 msgid "Receive error reports" msgstr "" -#: common/models.py:2491 +#: common/models.py:2461 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2496 +#: common/models.py:2466 msgid "Last used printing machines" msgstr "" -#: common/models.py:2497 +#: common/models.py:2467 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2540 +#: common/models.py:2487 common/models.py:2488 common/models.py:2636 +#: common/models.py:2637 common/models.py:2882 common/models.py:2883 +#: common/models.py:3193 common/models.py:3194 part/models.py:3193 +#: part/models.py:3280 part/models.py:3353 part/models.py:3381 +#: plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "" + +#: common/models.py:2510 msgid "Price break quantity" msgstr "" -#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1382 order/models.py:2301 -#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 +#: common/models.py:2517 company/serializers.py:472 order/admin.py:42 +#: order/models.py:1346 order/models.py:2265 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1886 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:740 msgid "Price" msgstr "" -#: common/models.py:2548 +#: common/models.py:2518 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2719 common/models.py:2904 +#: common/models.py:2613 common/models.py:2798 msgid "Endpoint" msgstr "" -#: common/models.py:2720 +#: common/models.py:2614 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2730 +#: common/models.py:2624 msgid "Name for this webhook" msgstr "" -#: common/models.py:2734 company/models.py:160 company/models.py:814 -#: machine/models.py:39 part/admin.py:88 part/models.py:1088 -#: plugin/models.py:65 templates/js/translated/company.js:523 +#: common/models.py:2628 company/models.py:163 company/models.py:782 +#: machine/models.py:39 part/admin.py:88 part/models.py:1081 +#: plugin/models.py:66 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3462,101 +3408,118 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2734 +#: common/models.py:2628 msgid "Is this webhook active" msgstr "" -#: common/models.py:2750 users/models.py:159 +#: common/models.py:2644 users/models.py:159 msgid "Token" msgstr "" -#: common/models.py:2751 +#: common/models.py:2645 msgid "Token for access" msgstr "" -#: common/models.py:2759 +#: common/models.py:2653 msgid "Secret" msgstr "" -#: common/models.py:2760 +#: common/models.py:2654 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2868 +#: common/models.py:2762 msgid "Message ID" msgstr "" -#: common/models.py:2869 +#: common/models.py:2763 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2877 +#: common/models.py:2771 msgid "Host" msgstr "" -#: common/models.py:2878 +#: common/models.py:2772 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2886 +#: common/models.py:2780 msgid "Header" msgstr "" -#: common/models.py:2887 +#: common/models.py:2781 msgid "Header of this message" msgstr "" -#: common/models.py:2894 +#: common/models.py:2788 msgid "Body" msgstr "" -#: common/models.py:2895 +#: common/models.py:2789 msgid "Body of this message" msgstr "" -#: common/models.py:2905 +#: common/models.py:2799 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2910 +#: common/models.py:2804 msgid "Worked on" msgstr "" -#: common/models.py:2911 +#: common/models.py:2805 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:3037 +#: common/models.py:2931 msgid "Id" msgstr "" -#: common/models.py:3039 templates/js/translated/company.js:965 +#: common/models.py:2933 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:3043 templates/js/translated/news.js:60 +#: common/models.py:2935 common/models.py:3177 company/models.py:149 +#: company/models.py:440 company/models.py:500 company/models.py:799 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +#: part/admin.py:55 part/models.py:955 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "" + +#: common/models.py:2937 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:3045 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2939 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:3047 templates/js/translated/news.js:52 +#: common/models.py:2941 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Read" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Was this news item read?" msgstr "" -#: common/models.py:3067 company/models.py:156 part/models.py:972 +#: common/models.py:2961 company/models.py:159 part/models.py:965 #: 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.html:35 @@ -3566,34 +3529,89 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:3067 +#: common/models.py:2961 msgid "Image file" msgstr "" -#: common/models.py:3109 +#: common/models.py:2973 common/models.py:3161 +msgid "Target model type for this image" +msgstr "" + +#: common/models.py:2977 +msgid "Target model ID for this image" +msgstr "" + +#: common/models.py:3018 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3128 +#: common/models.py:3037 msgid "Unit name" msgstr "" -#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3044 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3136 +#: common/models.py:3045 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3052 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3144 +#: common/models.py:3053 msgid "Unit definition" msgstr "" +#: common/models.py:3111 common/models.py:3168 stock/models.py:2426 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "" + +#: common/models.py:3123 +msgid "Missing file" +msgstr "" + +#: common/models.py:3124 +msgid "Missing external link" +msgstr "" + +#: common/models.py:3169 +msgid "Select file to attach" +msgstr "" + +#: common/models.py:3184 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "" + +#: common/models.py:3185 +msgid "Attachment comment" +msgstr "" + +#: common/models.py:3201 +msgid "Upload date" +msgstr "" + +#: common/models.py:3202 +msgid "Date the file was uploaded" +msgstr "" + +#: common/models.py:3206 +msgid "File size" +msgstr "" + +#: common/models.py:3206 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3244 common/serializers.py:553 +msgid "Invalid model type specified for attachment" +msgstr "" + #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" @@ -3628,66 +3646,103 @@ msgstr "" msgid "Error raised by plugin" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:371 msgid "Is Running" msgstr "" -#: common/serializers.py:372 +#: common/serializers.py:377 msgid "Pending Tasks" msgstr "" -#: common/serializers.py:378 +#: common/serializers.py:383 msgid "Scheduled Tasks" msgstr "" -#: common/serializers.py:384 +#: common/serializers.py:389 msgid "Failed Tasks" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Task ID" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Unique task ID" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock time" msgstr "" -#: common/serializers.py:403 +#: common/serializers.py:408 msgid "Task name" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function name" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Arguments" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Task arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Keyword Arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Task keyword arguments" msgstr "" +#: common/serializers.py:525 +msgid "Filename" +msgstr "" + +#: common/serializers.py:532 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: common/serializers.py:559 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "" + +#: common/validators.py:33 +msgid "No attachment model type provided" +msgstr "" + +#: common/validators.py:39 +msgid "Invalid attachment model type" +msgstr "" + +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "" + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +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 @@ -3726,210 +3781,222 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/api.py:164 +#: company/api.py:144 msgid "Part is Active" msgstr "" -#: company/api.py:168 +#: company/api.py:148 msgid "Manufacturer is Active" msgstr "" -#: company/api.py:317 +#: company/api.py:281 msgid "Supplier Part is Active" msgstr "" -#: company/api.py:321 +#: company/api.py:285 msgid "Internal Part is Active" msgstr "" -#: company/api.py:325 +#: company/api.py:289 msgid "Supplier is Active" msgstr "" -#: company/models.py:114 +#: company/models.py:100 company/models.py:365 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:822 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "" + +#: company/models.py:117 msgid "Company description" msgstr "" -#: company/models.py:115 +#: company/models.py:118 msgid "Description of the company" msgstr "" -#: company/models.py:120 company/templates/company/company_base.html:106 +#: company/models.py:123 company/templates/company/company_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:532 msgid "Website" msgstr "" -#: company/models.py:120 +#: company/models.py:123 msgid "Company website URL" msgstr "" -#: company/models.py:125 +#: company/models.py:128 msgid "Phone number" msgstr "" -#: company/models.py:127 +#: company/models.py:130 msgid "Contact phone number" msgstr "" -#: company/models.py:134 +#: company/models.py:137 msgid "Contact email address" msgstr "" -#: company/models.py:139 company/templates/company/company_base.html:145 +#: company/models.py:142 company/templates/company/company_base.html:145 #: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "" -#: company/models.py:141 +#: company/models.py:144 msgid "Point of contact" msgstr "" -#: company/models.py:147 +#: company/models.py:150 msgid "Link to external company information" msgstr "" -#: company/models.py:160 +#: company/models.py:163 msgid "Is this company active?" msgstr "" -#: company/models.py:165 +#: company/models.py:168 msgid "is customer" msgstr "" -#: company/models.py:166 +#: company/models.py:169 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:171 +#: company/models.py:174 msgid "is supplier" msgstr "" -#: company/models.py:172 +#: company/models.py:175 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:177 +#: company/models.py:180 msgid "is manufacturer" msgstr "" -#: company/models.py:178 +#: company/models.py:181 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:186 +#: company/models.py:189 msgid "Default currency used for this company" msgstr "" -#: company/models.py:273 company/models.py:382 -#: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:812 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 -msgid "Company" -msgstr "" - -#: company/models.py:383 +#: company/models.py:366 msgid "Select company" msgstr "" -#: company/models.py:388 +#: company/models.py:371 msgid "Address title" msgstr "" -#: company/models.py:389 +#: company/models.py:372 msgid "Title describing the address entry" msgstr "" -#: company/models.py:395 +#: company/models.py:378 msgid "Primary address" msgstr "" -#: company/models.py:396 +#: company/models.py:379 msgid "Set as primary address" msgstr "" -#: company/models.py:401 templates/js/translated/company.js:914 +#: company/models.py:384 templates/js/translated/company.js:914 #: templates/js/translated/company.js:971 msgid "Line 1" msgstr "" -#: company/models.py:402 +#: company/models.py:385 msgid "Address line 1" msgstr "" -#: company/models.py:408 templates/js/translated/company.js:915 +#: company/models.py:391 templates/js/translated/company.js:915 #: templates/js/translated/company.js:977 msgid "Line 2" msgstr "" -#: company/models.py:409 +#: company/models.py:392 msgid "Address line 2" msgstr "" -#: company/models.py:415 company/models.py:416 +#: company/models.py:398 company/models.py:399 #: templates/js/translated/company.js:983 msgid "Postal code" msgstr "" -#: company/models.py:422 +#: company/models.py:405 msgid "City/Region" msgstr "" -#: company/models.py:423 +#: company/models.py:406 msgid "Postal code city/region" msgstr "" -#: company/models.py:429 +#: company/models.py:412 msgid "State/Province" msgstr "" -#: company/models.py:430 +#: company/models.py:413 msgid "State or province" msgstr "" -#: company/models.py:436 templates/js/translated/company.js:1001 +#: company/models.py:419 templates/js/translated/company.js:1001 msgid "Country" msgstr "" -#: company/models.py:437 +#: company/models.py:420 msgid "Address country" msgstr "" -#: company/models.py:443 +#: company/models.py:426 msgid "Courier shipping notes" msgstr "" -#: company/models.py:444 +#: company/models.py:427 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:450 +#: company/models.py:433 msgid "Internal shipping notes" msgstr "" -#: company/models.py:451 +#: company/models.py:434 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:458 +#: company/models.py:441 msgid "Link to address information (external)" msgstr "" -#: company/models.py:489 company/models.py:792 stock/models.py:768 -#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 +#: company/models.py:463 company/models.py:574 company/models.py:792 +#: 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:475 company/models.py:760 stock/models.py:766 +#: stock/serializers.py:422 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:491 company/models.py:794 +#: company/models.py:477 company/models.py:762 msgid "Select part" msgstr "" -#: company/models.py:500 company/templates/company/company_base.html:82 +#: company/models.py:486 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:530 +#: company/templates/company/supplier_part.html:145 part/serializers.py:525 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -3939,152 +4006,154 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:501 +#: company/models.py:487 msgid "Select manufacturer" msgstr "" -#: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:540 +#: company/models.py:493 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:535 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 -#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1801 #: templates/js/translated/purchase_order.js:1851 #: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "" -#: company/models.py:508 +#: company/models.py:494 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:515 +#: company/models.py:501 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:524 +#: company/models.py:510 msgid "Manufacturer part description" msgstr "" -#: company/models.py:581 company/models.py:608 company/models.py:824 -#: 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:615 +#: company/models.py:581 msgid "Parameter name" msgstr "" -#: company/models.py:621 report/templates/report/inventree_test_report.html:104 -#: stock/models.py:2429 templates/js/translated/company.js:1166 -#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 +#: company/models.py:587 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2418 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1493 #: templates/js/translated/stock.js:1522 msgid "Value" msgstr "" -#: company/models.py:622 +#: company/models.py:588 msgid "Parameter value" msgstr "" -#: company/models.py:629 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1052 part/models.py:3666 +#: company/models.py:595 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1045 part/models.py:3646 #: part/templates/part/part_base.html:284 -#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1512 +#: templates/js/translated/part.js:1616 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:630 +#: company/models.py:596 msgid "Parameter units" msgstr "" -#: company/models.py:732 +#: company/models.py:648 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:777 stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "" + +#: company/models.py:700 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:739 +#: company/models.py:707 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:753 +#: company/models.py:721 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/models.py:770 company/templates/company/company_base.html:87 #: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:514 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:509 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:511 -#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1769 #: templates/js/translated/pricing.js:498 #: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "" -#: company/models.py:803 +#: company/models.py:771 msgid "Select supplier" msgstr "" -#: company/models.py:809 part/serializers.py:525 +#: company/models.py:777 part/serializers.py:520 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:815 +#: company/models.py:783 msgid "Is this supplier part active?" msgstr "" -#: company/models.py:825 +#: company/models.py:793 msgid "Select manufacturer part" msgstr "" -#: company/models.py:832 +#: company/models.py:800 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:841 +#: company/models.py:809 msgid "Supplier part description" msgstr "" -#: company/models.py:848 company/templates/company/supplier_part.html:187 -#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 +#: company/models.py:816 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4093 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_purchase_order_report.html:32 #: report/templates/report/inventree_return_order_report.html:27 #: report/templates/report/inventree_sales_order_report.html:32 #: report/templates/report/inventree_stock_location_report.html:105 -#: stock/serializers.py:708 +#: stock/serializers.py:710 msgid "Note" msgstr "" -#: company/models.py:857 part/models.py:2010 +#: company/models.py:825 part/models.py:2003 msgid "base cost" msgstr "" -#: company/models.py:858 part/models.py:2011 +#: company/models.py:826 part/models.py:2004 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:865 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 +#: company/models.py:833 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:797 stock/serializers.py:1475 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 #: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "" -#: company/models.py:866 +#: company/models.py:834 msgid "Part packaging" msgstr "" -#: company/models.py:871 templates/js/translated/company.js:1651 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: company/models.py:839 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:311 #: templates/js/translated/purchase_order.js:841 #: templates/js/translated/purchase_order.js:1103 @@ -4093,35 +4162,35 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:873 +#: company/models.py:841 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:892 part/models.py:2017 +#: company/models.py:860 part/models.py:2010 msgid "multiple" msgstr "" -#: company/models.py:893 +#: company/models.py:861 msgid "Order multiple" msgstr "" -#: company/models.py:905 +#: company/models.py:873 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:911 +#: company/models.py:879 msgid "Availability Updated" msgstr "" -#: company/models.py:912 +#: company/models.py:880 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:163 +#: company/serializers.py:161 msgid "Default currency used for this supplier" msgstr "" -#: company/serializers.py:381 part/admin.py:126 +#: company/serializers.py:357 part/admin.py:126 #: part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1689 #: templates/js/translated/table_filters.js:355 @@ -4133,7 +4202,7 @@ msgstr "" #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 #: templates/js/translated/model_renderers.js:312 -#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +#: templates/js/translated/part.js:815 templates/js/translated/part.js:1219 msgid "Inactive" msgstr "" @@ -4172,7 +4241,7 @@ msgstr "" #: report/templates/report/inventree_purchase_order_report.html:40 #: report/templates/report/inventree_sales_order_report.html:40 #: report/templates/report/inventree_test_report.html:84 -#: report/templates/report/inventree_test_report.html:163 +#: report/templates/report/inventree_test_report.html:162 msgid "Part image" msgstr "" @@ -4191,10 +4260,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:92 order/models.py:940 -#: order/models.py:2068 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:148 stock/models.py:821 -#: stock/models.py:822 stock/serializers.py:1229 +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2032 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:819 +#: stock/models.py:820 stock/serializers.py:1225 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 @@ -4405,7 +4474,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:836 +#: part/admin.py:122 part/serializers.py:832 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4425,8 +4494,8 @@ msgstr "" msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:206 -#: templates/js/translated/part.js:1422 +#: company/templates/company/manufacturer_part.html:196 +#: templates/js/translated/part.js:1423 msgid "Add Parameter" msgstr "" @@ -4454,15 +4523,6 @@ msgstr "" msgid "Addresses" msgstr "" -#: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:452 -#: stock/models.py:779 stock/templates/stock/item_base.html:233 -#: templates/js/translated/company.js:1600 -#: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2280 -msgid "Supplier Part" -msgstr "" - #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1526 msgid "Supplier part actions" @@ -4505,8 +4565,8 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:524 -#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: part/bom.py:311 part/serializers.py:519 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1787 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1850 #: templates/js/translated/purchase_order.js:2028 @@ -4518,12 +4578,12 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:207 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" @@ -4555,15 +4615,15 @@ msgid "Update Part Availability" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:835 part/stocktake.py:223 +#: part/serializers.py:831 part/stocktake.py:224 #: part/templates/part/category.html:183 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:916 stock/serializers.py:1080 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:918 stock/serializers.py:1091 #: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:191 #: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1061 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:206 msgid "Stock Items" @@ -4590,10 +4650,6 @@ msgstr "" 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 "" @@ -4614,7 +4670,7 @@ msgstr "" msgid "Connected" msgstr "" -#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: machine/machine_types/label_printer.py:235 order/api.py:1467 #: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "" @@ -4703,7 +4759,7 @@ msgstr "" msgid "Config type" msgstr "" -#: order/admin.py:30 order/models.py:89 +#: order/admin.py:30 order/models.py:90 #: report/templates/report/inventree_purchase_order_report.html:31 #: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 @@ -4712,30 +4768,30 @@ msgstr "" msgid "Total Price" msgstr "" -#: order/api.py:161 order/serializers.py:91 +#: order/api.py:157 order/serializers.py:90 #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "" -#: order/api.py:165 templates/js/translated/table_filters.js:194 +#: order/api.py:161 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "" -#: order/api.py:240 +#: order/api.py:236 msgid "No matching purchase order found" msgstr "" -#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 -#: order/models.py:1586 order/models.py:1700 order/models.py:1854 -#: order/models.py:2267 order/models.py:2318 +#: order/api.py:435 order/api.py:801 order/models.py:1395 order/models.py:1504 +#: order/models.py:1550 order/models.py:1664 order/models.py:1818 +#: order/models.py:2231 order/models.py:2282 #: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "" -#: order/api.py:441 order/api.py:838 +#: order/api.py:439 order/api.py:822 msgid "Order Complete" msgstr "" @@ -4743,13 +4799,13 @@ msgstr "" msgid "Order Pending" msgstr "" -#: order/api.py:1509 order/models.py:380 order/models.py:1432 -#: order/models.py:1541 order/templates/order/order_base.html:9 +#: order/api.py:1461 order/models.py:380 order/models.py:1396 +#: order/models.py:1505 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_purchase_order_report.html:14 -#: stock/serializers.py:119 stock/templates/stock/item_base.html:176 +#: stock/serializers.py:118 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/part.js:1746 templates/js/translated/pricing.js:804 #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1673 @@ -4757,8 +4813,8 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1513 order/models.py:2017 order/models.py:2268 -#: order/models.py:2319 order/templates/order/return_order_base.html:9 +#: order/api.py:1465 order/models.py:1981 order/models.py:2232 +#: order/models.py:2283 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report.html:13 #: templates/js/translated/return_order.js:280 @@ -4766,15 +4822,15 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/models.py:90 +#: order/models.py:91 msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:71 +#: order/models.py:96 order/serializers.py:70 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:72 +#: order/models.py:99 order/serializers.py:71 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -4790,7 +4846,7 @@ msgstr "" msgid "Select project code for this order" msgstr "" -#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 msgid "Link to external page" msgstr "" @@ -4814,11 +4870,11 @@ msgstr "" msgid "Company address for this order" msgstr "" -#: order/models.py:464 order/models.py:929 +#: order/models.py:464 order/models.py:927 msgid "Order reference" msgstr "" -#: order/models.py:472 order/models.py:953 +#: order/models.py:472 order/models.py:951 msgid "Purchase order status" msgstr "" @@ -4839,15 +4895,15 @@ msgstr "" msgid "received by" msgstr "" -#: order/models.py:514 order/models.py:2094 +#: order/models.py:514 order/models.py:2058 msgid "Issue Date" msgstr "" -#: order/models.py:515 order/models.py:2095 +#: order/models.py:515 order/models.py:2059 msgid "Date order was issued" msgstr "" -#: order/models.py:522 order/models.py:2102 +#: order/models.py:522 order/models.py:2066 msgid "Date order was completed" msgstr "" @@ -4859,94 +4915,94 @@ msgstr "" msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:941 +#: order/models.py:939 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:964 order/models.py:2087 +#: order/models.py:962 order/models.py:2051 msgid "Customer Reference " msgstr "" -#: order/models.py:965 order/models.py:2088 +#: order/models.py:963 order/models.py:2052 msgid "Customer order reference code" msgstr "" -#: order/models.py:969 order/models.py:1707 +#: order/models.py:967 order/models.py:1671 #: templates/js/translated/sales_order.js:879 #: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "" -#: order/models.py:978 +#: order/models.py:976 msgid "shipped by" msgstr "" -#: order/models.py:1027 +#: order/models.py:1025 msgid "Order is already complete" msgstr "" -#: order/models.py:1030 +#: order/models.py:1028 msgid "Order is already cancelled" msgstr "" -#: order/models.py:1034 +#: order/models.py:1032 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:1038 +#: order/models.py:1036 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:1043 +#: order/models.py:1041 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1309 +#: order/models.py:1273 msgid "Item quantity" msgstr "" -#: order/models.py:1326 +#: order/models.py:1290 msgid "Line item reference" msgstr "" -#: order/models.py:1333 +#: order/models.py:1297 msgid "Line item notes" msgstr "" -#: order/models.py:1345 +#: order/models.py:1309 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1366 +#: order/models.py:1330 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1372 +#: order/models.py:1336 msgid "Context" msgstr "" -#: order/models.py:1373 +#: order/models.py:1337 msgid "Additional context for this line" msgstr "" -#: order/models.py:1383 +#: order/models.py:1347 msgid "Unit price" msgstr "" -#: order/models.py:1416 +#: order/models.py:1380 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1423 +#: order/models.py:1387 msgid "deleted" msgstr "" -#: order/models.py:1451 +#: order/models.py:1415 msgid "Supplier part" msgstr "" -#: order/models.py:1458 order/templates/order/order_base.html:196 -#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: order/models.py:1422 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1870 templates/js/translated/part.js:1902 #: templates/js/translated/purchase_order.js:1306 #: templates/js/translated/purchase_order.js:2169 #: templates/js/translated/return_order.js:763 @@ -4955,196 +5011,196 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1459 +#: order/models.py:1423 msgid "Number of items received" msgstr "" -#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 +#: order/models.py:1431 stock/models.py:938 stock/serializers.py:556 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "" -#: order/models.py:1468 +#: order/models.py:1432 msgid "Unit purchase price" msgstr "" -#: order/models.py:1483 +#: order/models.py:1447 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1574 +#: order/models.py:1538 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1579 +#: order/models.py:1543 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1605 part/templates/part/part_pricing.html:107 +#: order/models.py:1569 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:1606 +#: order/models.py:1570 msgid "Unit sale price" msgstr "" -#: order/models.py:1615 order/status_codes.py:43 +#: order/models.py:1579 order/status_codes.py:43 #: templates/js/translated/sales_order.js:1559 #: templates/js/translated/sales_order.js:1680 #: templates/js/translated/sales_order.js:1993 msgid "Shipped" msgstr "" -#: order/models.py:1616 +#: order/models.py:1580 msgid "Shipped quantity" msgstr "" -#: order/models.py:1708 +#: order/models.py:1672 msgid "Date of shipment" msgstr "" -#: order/models.py:1714 templates/js/translated/sales_order.js:1072 +#: order/models.py:1678 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "" -#: order/models.py:1715 +#: order/models.py:1679 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1723 +#: order/models.py:1687 msgid "Checked By" msgstr "" -#: order/models.py:1724 +#: order/models.py:1688 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 -#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 +#: order/models.py:1695 order/models.py:1908 order/serializers.py:1342 +#: order/serializers.py:1452 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "" -#: order/models.py:1732 +#: order/models.py:1696 msgid "Shipment number" msgstr "" -#: order/models.py:1740 +#: order/models.py:1704 msgid "Tracking Number" msgstr "" -#: order/models.py:1741 +#: order/models.py:1705 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1748 +#: order/models.py:1712 msgid "Invoice Number" msgstr "" -#: order/models.py:1749 +#: order/models.py:1713 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1769 +#: order/models.py:1733 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1772 +#: order/models.py:1736 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1890 order/models.py:1892 +#: order/models.py:1854 order/models.py:1856 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1899 +#: order/models.py:1863 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1902 +#: order/models.py:1866 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1905 +#: order/models.py:1869 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1924 order/serializers.py:1231 +#: order/models.py:1888 order/serializers.py:1219 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1927 +#: order/models.py:1891 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1928 plugin/base/barcodes/api.py:481 +#: order/models.py:1892 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1936 +#: order/models.py:1900 msgid "Line" msgstr "" -#: order/models.py:1945 +#: order/models.py:1909 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1958 order/models.py:2275 +#: order/models.py:1922 order/models.py:2239 #: templates/js/translated/return_order.js:721 msgid "Item" msgstr "" -#: order/models.py:1959 +#: order/models.py:1923 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1968 +#: order/models.py:1932 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:2057 +#: order/models.py:2021 msgid "Return Order reference" msgstr "" -#: order/models.py:2069 +#: order/models.py:2033 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:2081 +#: order/models.py:2045 msgid "Return order status" msgstr "" -#: order/models.py:2260 +#: order/models.py:2224 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2276 +#: order/models.py:2240 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2282 +#: order/models.py:2246 msgid "Received Date" msgstr "" -#: order/models.py:2283 +#: order/models.py:2247 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2294 templates/js/translated/return_order.js:732 +#: order/models.py:2258 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2295 +#: order/models.py:2259 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2302 +#: order/models.py:2266 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/serializers.py:79 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_purchase_order_report.html:22 @@ -5153,163 +5209,163 @@ msgstr "" msgid "Line Items" msgstr "" -#: order/serializers.py:84 +#: order/serializers.py:83 msgid "Completed Lines" msgstr "" -#: order/serializers.py:287 +#: order/serializers.py:286 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:302 order/serializers.py:1247 +#: order/serializers.py:301 order/serializers.py:1235 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:312 order/serializers.py:1257 +#: order/serializers.py:311 order/serializers.py:1245 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:440 +#: order/serializers.py:439 msgid "Order is not open" msgstr "" -#: order/serializers.py:461 +#: order/serializers.py:460 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:463 +#: order/serializers.py:462 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:473 +#: order/serializers.py:472 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:478 msgid "Merge Items" msgstr "" -#: order/serializers.py:481 +#: order/serializers.py:480 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:499 +#: order/serializers.py:498 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:502 +#: order/serializers.py:501 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:510 +#: order/serializers.py:509 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:511 +#: order/serializers.py:510 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:550 order/serializers.py:1325 +#: order/serializers.py:549 order/serializers.py:1313 msgid "Line Item" msgstr "" -#: order/serializers.py:556 +#: order/serializers.py:555 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1657 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:581 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:589 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:601 templates/js/translated/barcode.js:52 +#: order/serializers.py:600 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:602 +#: order/serializers.py:601 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:618 +#: order/serializers.py:617 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:642 +#: order/serializers.py:641 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:690 order/serializers.py:1696 +#: order/serializers.py:689 order/serializers.py:1673 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:706 +#: order/serializers.py:705 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:717 +#: order/serializers.py:716 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1074 +#: order/serializers.py:1062 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1134 +#: order/serializers.py:1122 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1195 order/serializers.py:1334 +#: order/serializers.py:1183 order/serializers.py:1322 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1214 +#: order/serializers.py:1202 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1344 +#: order/serializers.py:1332 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1366 order/serializers.py:1472 +#: order/serializers.py:1354 order/serializers.py:1460 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1369 order/serializers.py:1475 +#: order/serializers.py:1357 order/serializers.py:1463 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1416 +#: order/serializers.py:1404 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1423 +#: order/serializers.py:1411 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1650 +#: order/serializers.py:1627 msgid "Return order line item" msgstr "" -#: order/serializers.py:1656 +#: order/serializers.py:1633 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1659 +#: order/serializers.py:1636 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1688 +#: order/serializers.py:1665 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1766 +#: order/serializers.py:1743 msgid "Line price currency" msgstr "" @@ -5639,7 +5695,7 @@ msgstr "" #: 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/part.js:1073 #: templates/js/translated/purchase_order.js:1752 #: templates/js/translated/return_order.js:380 #: templates/js/translated/sales_order.js:891 @@ -5735,34 +5791,34 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:406 part/models.py:3964 part/stocktake.py:218 -#: stock/admin.py:153 +#: part/admin.py:39 part/admin.py:398 part/models.py:3944 part/stocktake.py:219 +#: stock/admin.py:152 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 -#: stock/admin.py:157 +#: part/admin.py:41 part/admin.py:405 part/models.py:3945 part/stocktake.py:220 +#: stock/admin.py:156 msgid "Part Name" msgstr "" -#: part/admin.py:45 part/stocktake.py:220 +#: part/admin.py:45 part/stocktake.py:221 msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:940 part/templates/part/part_base.html:269 #: report/templates/report/inventree_stock_location_report.html:103 -#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/part.js:1227 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 -#: report/models.py:161 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2346 +#: part/admin.py:50 part/models.py:949 part/templates/part/part_base.html:277 +#: report/models.py:162 templates/js/translated/part.js:1232 +#: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:319 part/models.py:929 +#: part/admin.py:53 part/admin.py:319 part/models.py:922 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5771,11 +5827,11 @@ msgstr "" msgid "Part Image" msgstr "" -#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:222 msgid "Category ID" msgstr "" -#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:223 msgid "Category Name" msgstr "" @@ -5787,11 +5843,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:908 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1036 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5799,26 +5855,26 @@ msgstr "" 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 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:235 +#: templates/js/translated/part.js:715 templates/js/translated/part.js:2153 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3123 part/models.py:3137 -#: templates/js/translated/part.js:969 +#: part/admin.py:155 part/models.py:3088 part/models.py:3102 +#: templates/js/translated/part.js:970 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3130 part/models.py:3144 -#: templates/js/translated/part.js:979 +#: part/admin.py:158 part/models.py:3095 part/models.py:3109 +#: templates/js/translated/part.js:980 msgid "Maximum Cost" msgstr "" -#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 msgid "Parent ID" msgstr "" -#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 msgid "Parent Name" msgstr "" @@ -5827,141 +5883,149 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:325 part/models.py:393 part/serializers.py:117 -#: part/serializers.py:272 part/serializers.py:391 +#: part/admin.py:325 part/models.py:396 part/serializers.py:124 +#: part/serializers.py:267 part/serializers.py:386 #: 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:2803 templates/js/translated/search.js:130 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "" -#: part/admin.py:386 +#: part/admin.py:378 msgid "BOM Level" msgstr "" -#: part/admin.py:389 +#: part/admin.py:381 msgid "BOM Item ID" msgstr "" -#: part/admin.py:399 +#: part/admin.py:391 msgid "Parent IPN" msgstr "" -#: part/admin.py:410 part/models.py:3966 +#: part/admin.py:402 part/models.py:3946 msgid "Part IPN" msgstr "" -#: part/admin.py:423 part/serializers.py:1278 +#: part/admin.py:415 part/serializers.py:1274 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:428 part/serializers.py:1293 +#: part/admin.py:420 part/serializers.py:1289 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:110 +#: part/api.py:104 msgid "Starred" msgstr "" -#: part/api.py:112 +#: part/api.py:106 msgid "Filter by starred categories" msgstr "" -#: part/api.py:129 stock/api.py:318 +#: part/api.py:123 stock/api.py:312 msgid "Depth" msgstr "" -#: part/api.py:129 +#: part/api.py:123 msgid "Filter by category depth" msgstr "" -#: part/api.py:147 stock/api.py:336 +#: part/api.py:141 stock/api.py:330 +msgid "Top Level" +msgstr "" + +#: part/api.py:143 +msgid "Filter by top-level categories" +msgstr "" + +#: part/api.py:156 stock/api.py:345 msgid "Cascade" msgstr "" -#: part/api.py:149 +#: part/api.py:158 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:169 +#: part/api.py:179 templates/js/translated/part.js:308 msgid "Parent" msgstr "" -#: part/api.py:171 +#: part/api.py:181 msgid "Filter by parent category" msgstr "" -#: part/api.py:204 +#: part/api.py:214 msgid "Exclude Tree" msgstr "" -#: part/api.py:206 +#: part/api.py:216 msgid "Exclude sub-categories under the specified category" msgstr "" -#: part/api.py:455 +#: part/api.py:449 msgid "Has Results" msgstr "" -#: part/api.py:622 +#: part/api.py:616 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:640 +#: part/api.py:634 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:656 +#: part/api.py:650 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:740 +#: part/api.py:734 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:887 +#: part/api.py:881 msgid "Valid" msgstr "" -#: part/api.py:888 +#: part/api.py:882 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:894 +#: part/api.py:888 msgid "This option must be selected" msgstr "" -#: part/api.py:1111 +#: part/api.py:1105 msgid "BOM Valid" msgstr "" -#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 -#: part/serializers.py:406 part/serializers.py:1134 -#: part/templates/part/part_base.html:260 stock/api.py:781 +#: part/api.py:1508 part/models.py:932 part/models.py:3374 part/models.py:3889 +#: part/serializers.py:401 part/serializers.py:1130 +#: part/templates/part/part_base.html:260 stock/api.py:791 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2376 +#: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/api.py:1803 +#: part/api.py:1796 msgid "Uses" msgstr "" -#: part/bom.py:170 part/models.py:102 part/models.py:982 +#: part/bom.py:170 part/models.py:104 part/models.py:975 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 part/serializers.py:837 +#: part/bom.py:171 part/serializers.py:833 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5970,1054 +6034,1066 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 +#: part/models.py:85 part/models.py:3890 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:84 part/templates/part/category.html:136 +#: part/models.py:86 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "" -#: part/models.py:103 +#: part/models.py:105 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 +#: part/models.py:110 stock/models.py:174 templates/js/translated/part.js:2810 #: templates/js/translated/stock.js:2772 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:110 +#: part/models.py:112 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:119 +#: part/models.py:121 msgid "Default keywords" msgstr "" -#: part/models.py:120 +#: part/models.py:122 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 stock/models.py:85 stock/models.py:156 +#: part/models.py:128 stock/models.py:86 stock/models.py:157 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:127 stock/models.py:157 +#: part/models.py:129 stock/models.py:158 msgid "Icon (optional)" msgstr "" -#: part/models.py:149 +#: part/models.py:151 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:482 +#: part/models.py:485 msgid "Cannot delete this part as it is still active" msgstr "" -#: part/models.py:489 +#: part/models.py:490 msgid "Cannot delete this part as it is used in an assembly" msgstr "" -#: part/models.py:527 +#: part/models.py:528 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:575 part/models.py:582 +#: part/models.py:576 part/models.py:583 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:594 +#: part/models.py:595 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:659 +#: part/models.py:658 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:739 +#: part/models.py:736 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:844 +#: part/models.py:837 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:854 +#: part/models.py:847 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:869 +#: part/models.py:862 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:898 part/models.py:3965 +#: part/models.py:891 part/models.py:3945 msgid "Part name" msgstr "" -#: part/models.py:903 +#: part/models.py:896 msgid "Is Template" msgstr "" -#: part/models.py:904 +#: part/models.py:897 msgid "Is this part a template part?" msgstr "" -#: part/models.py:914 +#: part/models.py:907 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:922 +#: part/models.py:915 msgid "Part description (optional)" msgstr "" -#: part/models.py:930 +#: part/models.py:923 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:940 +#: part/models.py:933 msgid "Part category" msgstr "" -#: part/models.py:948 +#: part/models.py:941 msgid "Internal Part Number" msgstr "" -#: part/models.py:955 +#: part/models.py:948 msgid "Part revision or version number" msgstr "" -#: part/models.py:980 +#: part/models.py:973 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:1026 part/templates/part/part_base.html:376 +#: part/models.py:1019 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:1027 +#: part/models.py:1020 msgid "Default supplier part" msgstr "" -#: part/models.py:1034 +#: part/models.py:1027 msgid "Default Expiry" msgstr "" -#: part/models.py:1035 +#: part/models.py:1028 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:1044 +#: part/models.py:1037 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:1053 +#: part/models.py:1046 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1060 +#: part/models.py:1053 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1066 +#: part/models.py:1059 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1072 +#: part/models.py:1065 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1078 +#: part/models.py:1071 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1084 +#: part/models.py:1077 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1088 +#: part/models.py:1081 msgid "Is this part active?" msgstr "" -#: part/models.py:1094 +#: part/models.py:1087 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1100 +#: part/models.py:1093 msgid "BOM checksum" msgstr "" -#: part/models.py:1101 +#: part/models.py:1094 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1109 +#: part/models.py:1102 msgid "BOM checked by" msgstr "" -#: part/models.py:1114 +#: part/models.py:1107 msgid "BOM checked date" msgstr "" -#: part/models.py:1130 +#: part/models.py:1123 msgid "Creation User" msgstr "" -#: part/models.py:1140 +#: part/models.py:1133 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1145 part/templates/part/part_base.html:339 +#: part/models.py:1138 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2470 +#: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:2018 +#: part/models.py:2011 msgid "Sell multiple" msgstr "" -#: part/models.py:3037 +#: part/models.py:3002 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:3053 +#: part/models.py:3018 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:3054 +#: part/models.py:3019 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:3060 +#: part/models.py:3025 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3026 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:3067 +#: part/models.py:3032 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3033 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3074 +#: part/models.py:3039 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3040 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3046 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3047 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3053 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3054 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3060 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3096 +#: part/models.py:3061 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3102 +#: part/models.py:3067 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3103 +#: part/models.py:3068 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3109 +#: part/models.py:3074 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3110 +#: part/models.py:3075 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3116 +#: part/models.py:3081 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3117 +#: part/models.py:3082 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3124 +#: part/models.py:3089 msgid "Override minimum cost" msgstr "" -#: part/models.py:3131 +#: part/models.py:3096 msgid "Override maximum cost" msgstr "" -#: part/models.py:3138 +#: part/models.py:3103 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3145 +#: part/models.py:3110 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3151 +#: part/models.py:3116 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3152 +#: part/models.py:3117 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3158 +#: part/models.py:3123 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3159 +#: part/models.py:3124 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3165 +#: part/models.py:3130 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3131 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3172 +#: part/models.py:3137 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3138 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3192 +#: part/models.py:3157 msgid "Part for stocktake" msgstr "" -#: part/models.py:3197 +#: part/models.py:3162 msgid "Item Count" msgstr "" -#: part/models.py:3198 +#: part/models.py:3163 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3206 +#: part/models.py:3171 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3210 part/models.py:3293 +#: part/models.py:3175 part/models.py:3258 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report.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/part.js:1086 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" -#: part/models.py:3211 +#: part/models.py:3176 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3219 +#: part/models.py:3184 msgid "Additional notes" msgstr "" -#: part/models.py:3229 +#: part/models.py:3194 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3235 +#: part/models.py:3200 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3236 +#: part/models.py:3201 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3242 +#: part/models.py:3207 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3243 +#: part/models.py:3208 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3264 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3300 +#: part/models.py:3265 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3270 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3306 +#: part/models.py:3271 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3316 +#: part/models.py:3281 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3478 +#: part/models.py:3423 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3489 +#: part/models.py:3444 part/models.py:3608 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3455 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3500 +#: part/models.py:3466 msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3517 templates/js/translated/part.js:2878 +#: part/models.py:3483 templates/js/translated/part.js:2880 msgid "Test Name" msgstr "" -#: part/models.py:3518 +#: part/models.py:3484 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3524 +#: part/models.py:3490 msgid "Test Key" msgstr "" -#: part/models.py:3525 +#: part/models.py:3491 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3532 +#: part/models.py:3498 msgid "Test Description" msgstr "" -#: part/models.py:3533 +#: part/models.py:3499 msgid "Enter description for this test" msgstr "" -#: part/models.py:3537 report/models.py:208 -#: templates/js/translated/part.js:2899 +#: part/models.py:3503 report/models.py:209 +#: templates/js/translated/part.js:2901 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" -#: part/models.py:3537 +#: part/models.py:3503 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3542 templates/js/translated/part.js:2907 +#: part/models.py:3508 templates/js/translated/part.js:2909 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3543 +#: part/models.py:3509 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3548 templates/js/translated/part.js:2915 +#: part/models.py:3514 templates/js/translated/part.js:2917 msgid "Requires Value" msgstr "" -#: part/models.py:3549 +#: part/models.py:3515 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3554 templates/js/translated/part.js:2922 +#: part/models.py:3520 templates/js/translated/part.js:2924 msgid "Requires Attachment" msgstr "" -#: part/models.py:3556 +#: part/models.py:3522 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3603 +#: part/models.py:3528 part/models.py:3667 templates/js/translated/part.js:1637 +msgid "Choices" +msgstr "" + +#: part/models.py:3529 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3583 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3608 +#: part/models.py:3588 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3628 -msgid "Choices must be unique" -msgstr "" - -#: part/models.py:3645 +#: part/models.py:3625 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3660 +#: part/models.py:3640 msgid "Parameter Name" msgstr "" -#: part/models.py:3667 +#: part/models.py:3647 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3675 +#: part/models.py:3655 msgid "Parameter description" msgstr "" -#: part/models.py:3681 templates/js/translated/part.js:1627 +#: part/models.py:3661 templates/js/translated/part.js:1628 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "" -#: part/models.py:3682 +#: part/models.py:3662 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3687 templates/js/translated/part.js:1636 -msgid "Choices" -msgstr "" - -#: part/models.py:3688 +#: part/models.py:3668 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3765 +#: part/models.py:3745 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3808 +#: part/models.py:3788 msgid "Parent Part" msgstr "" -#: part/models.py:3816 part/models.py:3917 part/models.py:3918 +#: part/models.py:3796 part/models.py:3897 part/models.py:3898 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3821 +#: part/models.py:3801 msgid "Data" msgstr "" -#: part/models.py:3822 +#: part/models.py:3802 msgid "Parameter Value" msgstr "" -#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3904 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3925 +#: part/models.py:3905 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3963 +#: part/models.py:3943 msgid "Part ID or part name" msgstr "" -#: part/models.py:3964 +#: part/models.py:3944 msgid "Unique part ID value" msgstr "" -#: part/models.py:3966 +#: part/models.py:3946 msgid "Part IPN value" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "Level" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "BOM level" msgstr "" -#: part/models.py:4057 +#: part/models.py:4037 msgid "Select parent part" msgstr "" -#: part/models.py:4067 +#: part/models.py:4047 msgid "Sub part" msgstr "" -#: part/models.py:4068 +#: part/models.py:4048 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4079 +#: part/models.py:4059 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4085 +#: part/models.py:4065 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4091 +#: part/models.py:4071 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4098 part/templates/part/upload_bom.html:55 +#: part/models.py:4078 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4099 +#: part/models.py:4079 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4106 +#: part/models.py:4086 msgid "BOM item reference" msgstr "" -#: part/models.py:4114 +#: part/models.py:4094 msgid "BOM item notes" msgstr "" -#: part/models.py:4120 +#: part/models.py:4100 msgid "Checksum" msgstr "" -#: part/models.py:4121 +#: part/models.py:4101 msgid "BOM line checksum" msgstr "" -#: part/models.py:4126 templates/js/translated/table_filters.js:174 +#: part/models.py:4106 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4127 +#: part/models.py:4107 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4132 part/templates/part/upload_bom.html:57 +#: part/models.py:4112 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:4133 +#: part/models.py:4113 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4138 part/templates/part/upload_bom.html:56 +#: part/models.py:4118 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4139 +#: part/models.py:4119 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4224 stock/models.py:664 +#: part/models.py:4204 stock/models.py:662 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4234 part/models.py:4236 +#: part/models.py:4214 part/models.py:4216 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4376 +#: part/models.py:4354 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4397 +#: part/models.py:4375 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4410 +#: part/models.py:4388 msgid "Parent BOM item" msgstr "" -#: part/models.py:4418 +#: part/models.py:4396 msgid "Substitute part" msgstr "" -#: part/models.py:4434 +#: part/models.py:4412 msgid "Part 1" msgstr "" -#: part/models.py:4442 +#: part/models.py:4420 msgid "Part 2" msgstr "" -#: part/models.py:4443 +#: part/models.py:4421 msgid "Select Related Part" msgstr "" -#: part/models.py:4462 +#: part/models.py:4440 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4467 +#: part/models.py:4445 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:119 part/serializers.py:141 +#: part/serializers.py:118 +msgid "Parent Category" +msgstr "" + +#: part/serializers.py:119 templates/js/translated/part.js:309 +msgid "Parent part category" +msgstr "" + +#: part/serializers.py:126 part/serializers.py:148 #: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/serializers.py:185 +#: part/serializers.py:180 msgid "Results" msgstr "" -#: part/serializers.py:186 +#: part/serializers.py:181 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 +#: part/serializers.py:205 part/serializers.py:223 stock/serializers.py:562 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:273 +#: part/serializers.py:268 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:397 +#: part/serializers.py:392 msgid "No parts selected" msgstr "" -#: part/serializers.py:407 +#: part/serializers.py:402 msgid "Select category" msgstr "" -#: part/serializers.py:442 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:443 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:448 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:449 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:455 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:456 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:463 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:488 +#: part/serializers.py:483 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:490 +#: part/serializers.py:485 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:497 +#: part/serializers.py:492 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:493 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:510 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:531 +#: part/serializers.py:526 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:541 +#: part/serializers.py:536 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:548 +#: part/serializers.py:543 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:557 +#: part/serializers.py:552 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:568 +#: part/serializers.py:563 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:575 +#: part/serializers.py:570 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:834 msgid "External Stock" msgstr "" -#: part/serializers.py:840 +#: part/serializers.py:836 msgid "Unallocated Stock" msgstr "" -#: part/serializers.py:843 +#: part/serializers.py:839 msgid "Variant Stock" msgstr "" -#: part/serializers.py:873 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:471 +#: part/serializers.py:869 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:472 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:870 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:880 templates/js/translated/part.js:102 +#: part/serializers.py:876 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:881 +#: part/serializers.py:877 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:887 +#: part/serializers.py:883 msgid "Supplier Information" msgstr "" -#: part/serializers.py:888 +#: part/serializers.py:884 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:896 +#: part/serializers.py:892 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:897 +#: part/serializers.py:893 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:902 +#: part/serializers.py:898 msgid "Existing Image" msgstr "" -#: part/serializers.py:903 +#: part/serializers.py:899 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:920 +#: part/serializers.py:916 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1126 +#: part/serializers.py:1122 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1136 +#: part/serializers.py:1132 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1146 +#: part/serializers.py:1142 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1152 +#: part/serializers.py:1148 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1153 +#: part/serializers.py:1149 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1158 +#: part/serializers.py:1154 msgid "Generate Report" msgstr "" -#: part/serializers.py:1159 +#: part/serializers.py:1155 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1164 +#: part/serializers.py:1160 msgid "Update Parts" msgstr "" -#: part/serializers.py:1165 +#: part/serializers.py:1161 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1173 +#: part/serializers.py:1169 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1279 +#: part/serializers.py:1275 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1286 +#: part/serializers.py:1282 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1294 +#: part/serializers.py:1290 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1301 +#: part/serializers.py:1297 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1330 +#: part/serializers.py:1326 msgid "Update" msgstr "" -#: part/serializers.py:1331 +#: part/serializers.py:1327 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1354 +#: part/serializers.py:1350 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1361 +#: part/serializers.py:1357 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1364 +#: part/serializers.py:1360 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1727 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1739 +#: part/serializers.py:1735 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1740 +#: part/serializers.py:1736 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1745 +#: part/serializers.py:1741 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1746 +#: part/serializers.py:1742 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1747 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1752 +#: part/serializers.py:1748 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1757 +#: part/serializers.py:1753 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1758 +#: part/serializers.py:1754 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1792 +#: part/serializers.py:1788 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1793 +#: part/serializers.py:1789 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1823 +#: part/serializers.py:1819 msgid "No part column specified" msgstr "" -#: part/serializers.py:1867 +#: part/serializers.py:1863 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1870 +#: part/serializers.py:1866 msgid "No matching part found" msgstr "" -#: part/serializers.py:1873 +#: part/serializers.py:1869 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1882 +#: part/serializers.py:1878 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1890 +#: part/serializers.py:1886 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1911 +#: part/serializers.py:1907 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 +#: part/stocktake.py:225 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "" -#: part/stocktake.py:225 +#: part/stocktake.py:226 msgid "Total Cost Min" msgstr "" -#: part/stocktake.py:226 +#: part/stocktake.py:227 msgid "Total Cost Max" msgstr "" -#: part/stocktake.py:284 +#: part/stocktake.py:285 msgid "Stocktake Report Available" msgstr "" -#: part/stocktake.py:285 +#: part/stocktake.py:286 msgid "A new stocktake report is available for download" msgstr "" @@ -7151,7 +7227,7 @@ 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 +#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" @@ -7251,15 +7327,15 @@ msgstr "" msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:655 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:663 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:748 +#: part/templates/part/detail.html:750 msgid "Add Test Result Template" msgstr "" @@ -7340,7 +7416,7 @@ msgstr "" msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" msgstr "" @@ -7412,7 +7488,7 @@ 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:2443 +#: templates/js/translated/part.js:1265 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7505,8 +7581,8 @@ msgstr "" #: 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:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/part.js:1243 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 #: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7549,7 +7625,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:247 +#: part/templates/part/prices.html:28 stock/admin.py:251 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 @@ -7626,8 +7702,8 @@ msgstr "" #: part/templates/part/stock_count.html:7 #: templates/js/translated/model_renderers.js:227 -#: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 -#: templates/js/translated/part.js:2142 +#: templates/js/translated/part.js:705 templates/js/translated/part.js:2141 +#: templates/js/translated/part.js:2143 msgid "No Stock" msgstr "" @@ -7999,7 +8075,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:308 msgid "Landscape" msgstr "" @@ -8112,62 +8188,62 @@ msgstr "" msgid "Uninstalled plugin successfully" msgstr "" -#: plugin/models.py:35 +#: plugin/models.py:36 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:36 +#: plugin/models.py:37 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:42 users/models.py:100 +#: plugin/models.py:43 users/models.py:100 msgid "Key" msgstr "" -#: plugin/models.py:43 +#: plugin/models.py:44 msgid "Key of plugin" msgstr "" -#: plugin/models.py:51 +#: plugin/models.py:52 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:58 plugin/serializers.py:90 +#: plugin/models.py:59 plugin/serializers.py:90 msgid "Package Name" msgstr "" -#: plugin/models.py:60 +#: plugin/models.py:61 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:65 +#: plugin/models.py:66 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:156 templates/js/translated/table_filters.js:370 +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "" -#: plugin/models.py:165 +#: plugin/models.py:166 msgid "Sample plugin" msgstr "" -#: plugin/models.py:173 +#: plugin/models.py:174 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:181 +#: plugin/models.py:182 msgid "Package Plugin" msgstr "" -#: plugin/models.py:205 report/models.py:474 +#: plugin/models.py:220 report/models.py:475 #: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:252 +#: plugin/models.py:267 msgid "Method" msgstr "" @@ -8175,17 +8251,17 @@ msgstr "" msgid "No author found" msgstr "" -#: plugin/registry.py:597 +#: plugin/registry.py:534 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:600 +#: plugin/registry.py:537 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:602 +#: plugin/registry.py:539 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -8300,23 +8376,19 @@ msgstr "" msgid "Activate this plugin" msgstr "" -#: plugin/serializers.py:234 +#: plugin/serializers.py:226 msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:235 +#: plugin/serializers.py:227 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:77 +#: report/api.py:88 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:89 report/serializers.py:53 -msgid "Model Type" -msgstr "" - -#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/api.py:103 report/models.py:439 report/serializers.py:98 #: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 #: templates/js/translated/return_order.js:353 #: templates/js/translated/sales_order.js:887 @@ -8324,176 +8396,176 @@ msgstr "" msgid "Items" msgstr "" -#: report/api.py:168 +#: report/api.py:180 msgid "Plugin not found" msgstr "" -#: report/api.py:170 +#: report/api.py:182 msgid "Plugin is not active" msgstr "" -#: report/api.py:172 +#: report/api.py:184 msgid "Plugin does not support label printing" msgstr "" -#: report/api.py:221 +#: report/api.py:233 msgid "Invalid label dimensions" msgstr "" -#: report/api.py:236 report/api.py:316 +#: report/api.py:248 report/api.py:329 msgid "No valid items provided to template" msgstr "" -#: report/api.py:271 +#: report/api.py:283 msgid "Error printing label" msgstr "" -#: report/api.py:362 report/api.py:398 +#: report/api.py:375 report/api.py:411 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/helpers.py:41 +#: report/helpers.py:43 msgid "A4" msgstr "" -#: report/helpers.py:42 +#: report/helpers.py:44 msgid "A3" msgstr "" -#: report/helpers.py:43 +#: report/helpers.py:45 msgid "Legal" msgstr "" -#: report/helpers.py:44 +#: report/helpers.py:46 msgid "Letter" msgstr "" -#: report/models.py:118 +#: report/models.py:119 msgid "Template file with this name already exists" msgstr "" -#: report/models.py:150 +#: report/models.py:151 msgid "Template name" msgstr "" -#: report/models.py:156 +#: report/models.py:157 msgid "Template description" msgstr "" -#: report/models.py:162 +#: report/models.py:163 msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Filename Pattern" msgstr "" -#: report/models.py:203 +#: report/models.py:204 msgid "Pattern for generating filenames" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Template is enabled" msgstr "" -#: report/models.py:214 +#: report/models.py:215 msgid "Target model type for template" msgstr "" -#: report/models.py:234 +#: report/models.py:235 msgid "Filters" msgstr "" -#: report/models.py:235 +#: report/models.py:236 msgid "Template query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:294 report/models.py:361 +#: report/models.py:295 report/models.py:362 msgid "Template file" msgstr "" -#: report/models.py:302 +#: report/models.py:303 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:308 +#: report/models.py:309 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:367 +#: report/models.py:368 msgid "Width [mm]" msgstr "" -#: report/models.py:368 +#: report/models.py:369 msgid "Label width, specified in mm" msgstr "" -#: report/models.py:374 +#: report/models.py:375 msgid "Height [mm]" msgstr "" -#: report/models.py:375 +#: report/models.py:376 msgid "Label height, specified in mm" msgstr "" -#: report/models.py:438 +#: report/models.py:439 msgid "Number of items to process" msgstr "" -#: report/models.py:444 +#: report/models.py:445 msgid "Report generation is complete" msgstr "" -#: report/models.py:448 templates/js/translated/build.js:2177 +#: report/models.py:449 templates/js/translated/build.js:2177 msgid "Progress" msgstr "" -#: report/models.py:448 +#: report/models.py:449 msgid "Report generation progress" msgstr "" -#: report/models.py:456 +#: report/models.py:457 msgid "Report Template" msgstr "" -#: report/models.py:463 report/models.py:486 +#: report/models.py:464 report/models.py:487 msgid "Output File" msgstr "" -#: report/models.py:464 report/models.py:487 +#: report/models.py:465 report/models.py:488 msgid "Generated output file" msgstr "" -#: report/models.py:475 +#: report/models.py:476 msgid "Label output plugin" msgstr "" -#: report/models.py:479 +#: report/models.py:480 msgid "Label Template" msgstr "" -#: report/models.py:502 +#: report/models.py:503 msgid "Snippet" msgstr "" -#: report/models.py:503 +#: report/models.py:504 msgid "Report snippet file" msgstr "" -#: report/models.py:510 +#: report/models.py:511 msgid "Snippet file description" msgstr "" -#: report/models.py:528 +#: report/models.py:529 msgid "Asset" msgstr "" -#: report/models.py:529 +#: report/models.py:530 msgid "Report asset file" msgstr "" -#: report/models.py:536 +#: report/models.py:537 msgid "Asset file description" msgstr "" @@ -8566,8 +8638,8 @@ msgid "Total" msgstr "" #: report/templates/report/inventree_return_order_report.html:25 -#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 -#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:824 +#: stock/serializers.py:149 stock/templates/stock/item_base.html:311 #: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 #: templates/js/translated/build.js:2355 #: templates/js/translated/model_renderers.js:230 @@ -8597,32 +8669,32 @@ msgstr "" msgid "Test" msgstr "" -#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2412 msgid "Result" msgstr "" -#: report/templates/report/inventree_test_report.html:130 +#: report/templates/report/inventree_test_report.html:129 msgid "Pass" msgstr "" -#: report/templates/report/inventree_test_report.html:132 +#: report/templates/report/inventree_test_report.html:131 msgid "Fail" msgstr "" -#: report/templates/report/inventree_test_report.html:139 +#: report/templates/report/inventree_test_report.html:138 msgid "No result (required)" msgstr "" -#: report/templates/report/inventree_test_report.html:141 +#: report/templates/report/inventree_test_report.html:140 msgid "No result" msgstr "" -#: report/templates/report/inventree_test_report.html:154 +#: report/templates/report/inventree_test_report.html:153 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "" -#: report/templates/report/inventree_test_report.html:168 stock/admin.py:162 +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 #: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 #: templates/js/translated/stock.js:3110 msgid "Serial" @@ -8644,654 +8716,670 @@ msgstr "" msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:172 +#: stock/admin.py:51 stock/admin.py:171 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:176 +#: stock/admin.py:53 stock/admin.py:175 msgid "Location Name" msgstr "" -#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/admin.py:63 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:149 +#: stock/admin.py:148 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:168 +#: stock/admin.py:167 msgid "Status Code" msgstr "" -#: stock/admin.py:180 +#: stock/admin.py:179 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:185 +#: stock/admin.py:184 +msgid "Supplier Part SKU" +msgstr "" + +#: stock/admin.py:189 msgid "Supplier ID" msgstr "" -#: stock/admin.py:191 +#: stock/admin.py:195 msgid "Supplier Name" msgstr "" -#: stock/admin.py:196 +#: stock/admin.py:200 msgid "Customer ID" msgstr "" -#: stock/admin.py:201 stock/models.py:806 +#: stock/admin.py:205 stock/models.py:804 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:206 +#: stock/admin.py:210 msgid "Build ID" msgstr "" -#: stock/admin.py:216 +#: stock/admin.py:220 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:221 +#: stock/admin.py:225 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:236 +#: stock/admin.py:240 msgid "Review Needed" msgstr "" -#: stock/admin.py:241 +#: stock/admin.py:245 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:256 stock/models.py:900 +#: stock/admin.py:260 stock/models.py:898 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "" -#: stock/api.py:318 +#: stock/api.py:312 msgid "Filter by location depth" msgstr "" -#: stock/api.py:338 +#: stock/api.py:332 +msgid "Filter by top-level locations" +msgstr "" + +#: stock/api.py:347 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:359 +#: stock/api.py:369 stock/serializers.py:1085 msgid "Parent Location" msgstr "" -#: stock/api.py:360 +#: stock/api.py:370 msgid "Filter by parent location" msgstr "" -#: stock/api.py:615 templates/js/translated/table_filters.js:427 +#: stock/api.py:625 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:803 +#: stock/api.py:813 msgid "Part Tree" msgstr "" -#: stock/api.py:833 +#: stock/api.py:843 msgid "Expiry date before" msgstr "" -#: stock/api.py:837 +#: stock/api.py:847 msgid "Expiry date after" msgstr "" -#: stock/api.py:840 stock/templates/stock/item_base.html:439 +#: stock/api.py:850 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:927 +#: stock/api.py:937 msgid "Quantity is required" msgstr "" -#: stock/api.py:933 +#: stock/api.py:943 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:964 +#: stock/api.py:974 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:974 +#: stock/api.py:984 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:1005 +#: stock/api.py:1015 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:59 +#: stock/models.py:60 msgid "Stock Location type" msgstr "" -#: stock/models.py:60 +#: stock/models.py:61 msgid "Stock Location types" msgstr "" -#: stock/models.py:86 +#: stock/models.py:87 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:123 stock/models.py:788 +#: stock/models.py:124 stock/models.py:786 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:124 stock/templates/stock/location.html:186 +#: stock/models.py:125 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "" -#: stock/models.py:166 stock/models.py:949 +#: stock/models.py:167 stock/models.py:947 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:167 stock/models.py:950 +#: stock/models.py:168 stock/models.py:948 msgid "Select Owner" msgstr "" -#: stock/models.py:175 +#: stock/models.py:176 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:182 templates/js/translated/stock.js:2781 +#: stock/models.py:183 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:183 +#: stock/models.py:184 msgid "This is an external stock location" msgstr "" -#: stock/models.py:189 templates/js/translated/stock.js:2790 +#: stock/models.py:190 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" -#: stock/models.py:193 +#: stock/models.py:194 msgid "Stock location type of this location" msgstr "" -#: stock/models.py:262 +#: stock/models.py:261 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:643 +#: stock/models.py:641 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:670 stock/serializers.py:419 +#: stock/models.py:668 stock/serializers.py:446 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:687 +#: stock/models.py:685 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:697 stock/models.py:710 +#: stock/models.py:695 stock/models.py:708 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:700 +#: stock/models.py:698 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:724 +#: stock/models.py:722 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:729 +#: stock/models.py:727 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:742 +#: stock/models.py:740 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:758 +#: stock/models.py:756 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:770 +#: stock/models.py:768 msgid "Base part" msgstr "" -#: stock/models.py:780 +#: stock/models.py:778 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:792 +#: stock/models.py:790 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:800 stock/serializers.py:1480 +#: stock/models.py:798 stock/serializers.py:1476 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:811 +#: stock/models.py:809 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:830 +#: stock/models.py:828 msgid "Serial number for this item" msgstr "" -#: stock/models.py:844 stock/serializers.py:1463 +#: stock/models.py:842 stock/serializers.py:1459 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:849 +#: stock/models.py:847 msgid "Stock Quantity" msgstr "" -#: stock/models.py:859 +#: stock/models.py:857 msgid "Source Build" msgstr "" -#: stock/models.py:862 +#: stock/models.py:860 msgid "Build for this stock item" msgstr "" -#: stock/models.py:869 stock/templates/stock/item_base.html:363 +#: stock/models.py:867 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:872 +#: stock/models.py:870 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:881 +#: stock/models.py:879 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:885 +#: stock/models.py:883 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:891 +#: stock/models.py:889 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:902 +#: stock/models.py:900 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:920 +#: stock/models.py:918 msgid "Delete on deplete" msgstr "" -#: stock/models.py:921 +#: stock/models.py:919 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:941 +#: stock/models.py:939 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:972 +#: stock/models.py:970 msgid "Converted to part" msgstr "" -#: stock/models.py:1490 +#: stock/models.py:1486 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1496 +#: stock/models.py:1492 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1500 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1510 +#: stock/models.py:1506 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1515 +#: stock/models.py:1511 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1523 stock/serializers.py:658 +#: stock/models.py:1519 stock/serializers.py:660 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1620 +#: stock/models.py:1616 msgid "Test template does not exist" msgstr "" -#: stock/models.py:1638 +#: stock/models.py:1634 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1642 +#: stock/models.py:1638 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1645 +#: stock/models.py:1641 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1648 +#: stock/models.py:1644 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1651 +#: stock/models.py:1647 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1654 +#: stock/models.py:1650 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1661 stock/serializers.py:1369 +#: stock/models.py:1657 stock/serializers.py:1365 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1665 +#: stock/models.py:1661 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1673 +#: stock/models.py:1669 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1678 +#: stock/models.py:1674 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1905 +#: stock/models.py:1901 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2310 msgid "Entry notes" msgstr "" -#: stock/models.py:2391 +#: stock/models.py:2378 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2396 +#: stock/models.py:2383 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2423 +#: stock/models.py:2388 +msgid "Invalid value for this test" +msgstr "" + +#: stock/models.py:2412 msgid "Test result" msgstr "" -#: stock/models.py:2430 +#: stock/models.py:2419 msgid "Test output value" msgstr "" -#: stock/models.py:2438 +#: stock/models.py:2427 msgid "Test result attachment" msgstr "" -#: stock/models.py:2442 +#: stock/models.py:2431 msgid "Test notes" msgstr "" -#: stock/models.py:2450 templates/js/translated/stock.js:1548 +#: stock/models.py:2439 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2440 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2457 +#: stock/models.py:2446 msgid "Started" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2447 msgid "The timestamp of the test start" msgstr "" -#: stock/models.py:2464 +#: stock/models.py:2453 msgid "Finished" msgstr "" -#: stock/models.py:2465 +#: stock/models.py:2454 msgid "The timestamp of the test finish" msgstr "" -#: stock/serializers.py:75 +#: stock/serializers.py:74 msgid "Generated batch code" msgstr "" -#: stock/serializers.py:84 +#: stock/serializers.py:83 msgid "Select build order" msgstr "" -#: stock/serializers.py:93 +#: stock/serializers.py:92 msgid "Select stock item to generate batch code for" msgstr "" -#: stock/serializers.py:102 +#: stock/serializers.py:101 msgid "Select location to generate batch code for" msgstr "" -#: stock/serializers.py:111 +#: stock/serializers.py:110 msgid "Select part to generate batch code for" msgstr "" -#: stock/serializers.py:120 +#: stock/serializers.py:119 msgid "Select purchase order" msgstr "" -#: stock/serializers.py:127 +#: stock/serializers.py:126 msgid "Enter quantity for batch code" msgstr "" -#: stock/serializers.py:150 +#: stock/serializers.py:149 msgid "Generated serial number" msgstr "" -#: stock/serializers.py:159 +#: stock/serializers.py:158 msgid "Select part to generate serial number for" msgstr "" -#: stock/serializers.py:167 +#: stock/serializers.py:166 msgid "Quantity of serial numbers to generate" msgstr "" -#: stock/serializers.py:229 +#: stock/serializers.py:228 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:248 +#: stock/serializers.py:247 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:280 +#: stock/serializers.py:279 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:313 +#: stock/serializers.py:315 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:411 +#: stock/serializers.py:438 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:531 +#: stock/serializers.py:558 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:595 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:606 +#: stock/serializers.py:608 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:613 +#: stock/serializers.py:615 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 +#: stock/serializers.py:626 stock/serializers.py:1322 stock/serializers.py:1578 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:631 +#: stock/serializers.py:633 msgid "Optional note field" msgstr "" -#: stock/serializers.py:641 +#: stock/serializers.py:643 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:696 +#: stock/serializers.py:698 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:703 +#: stock/serializers.py:705 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:704 +#: stock/serializers.py:706 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 -#: stock/serializers.py:935 +#: stock/serializers.py:711 stock/serializers.py:791 stock/serializers.py:887 +#: stock/serializers.py:937 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:719 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:725 +#: stock/serializers.py:727 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:736 +#: stock/serializers.py:738 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:749 +#: stock/serializers.py:751 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:784 +#: stock/serializers.py:786 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:819 +#: stock/serializers.py:821 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:834 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:849 +#: stock/serializers.py:851 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:880 +#: stock/serializers.py:882 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:917 +#: stock/serializers.py:919 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:923 +#: stock/serializers.py:925 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:1019 stock/serializers.py:1082 +#: stock/serializers.py:1021 stock/serializers.py:1093 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:220 +#: stock/templates/stock/location.html:222 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1198 +#: stock/serializers.py:1086 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: stock/serializers.py:1194 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1202 +#: stock/serializers.py:1198 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1206 +#: stock/serializers.py:1202 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1230 +#: stock/serializers.py:1226 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1236 +#: stock/serializers.py:1232 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1244 +#: stock/serializers.py:1240 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1254 stock/serializers.py:1508 +#: stock/serializers.py:1250 stock/serializers.py:1504 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1333 +#: stock/serializers.py:1329 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1338 +#: stock/serializers.py:1334 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1339 +#: stock/serializers.py:1335 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1344 +#: stock/serializers.py:1340 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1345 +#: stock/serializers.py:1341 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1355 +#: stock/serializers.py:1351 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1422 +#: stock/serializers.py:1418 msgid "No Change" msgstr "" -#: stock/serializers.py:1451 +#: stock/serializers.py:1447 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1470 +#: stock/serializers.py:1466 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1498 +#: stock/serializers.py:1494 msgid "Stock transaction notes" msgstr "" @@ -9444,7 +9532,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276 msgid "Delete Test Data" msgstr "" @@ -9464,11 +9552,11 @@ msgstr "" msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:272 +#: stock/templates/stock/item.html:264 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "" @@ -9754,28 +9842,28 @@ msgstr "" msgid "Location Type" msgstr "" -#: stock/templates/stock/location.html:224 +#: stock/templates/stock/location.html:226 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:225 +#: stock/templates/stock/location.html:227 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:295 +#: stock/templates/stock/location.html:299 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:317 +#: stock/templates/stock/location.html:321 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:390 +#: stock/templates/stock/location.html:394 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:401 +#: stock/templates/stock/location.html:405 msgid "Link Barcode to Stock Location" msgstr "" @@ -10199,20 +10287,20 @@ msgstr "" msgid "Pricing Settings" msgstr "" -#: templates/InvenTree/settings/pricing.html:34 +#: templates/InvenTree/settings/pricing.html:35 msgid "Exchange Rates" msgstr "" -#: templates/InvenTree/settings/pricing.html:38 +#: templates/InvenTree/settings/pricing.html:39 msgid "Update Now" msgstr "" -#: templates/InvenTree/settings/pricing.html:46 -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 msgid "Last Update" msgstr "" -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:51 msgid "Never" msgstr "" @@ -10269,8 +10357,8 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:547 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 +#: templates/js/translated/part.js:393 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:402 msgid "Delete" msgstr "" @@ -10310,12 +10398,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 -#: templates/js/translated/part.js:1645 +#: templates/js/translated/part.js:1646 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 -#: templates/js/translated/part.js:1646 +#: templates/js/translated/part.js:1647 msgid "Delete Template" msgstr "" @@ -10705,7 +10793,7 @@ msgid "Submit Bug Report" msgstr "" #: templates/about.html:91 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 +#: templates/js/translated/helpers.js:589 msgid "copy to clipboard" msgstr "" @@ -10769,7 +10857,7 @@ 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 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45 msgid "Return to Site" msgstr "" @@ -10883,15 +10971,19 @@ msgstr "" msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "" -#: templates/allauth_2fa/setup.html:23 +#: templates/allauth_2fa/setup.html:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 msgid "Step 2" msgstr "" -#: templates/allauth_2fa/setup.html:27 +#: templates/allauth_2fa/setup.html:28 msgid "Input a token generated by the app:" msgstr "" -#: templates/allauth_2fa/setup.html:37 +#: templates/allauth_2fa/setup.html:38 msgid "Verify" msgstr "" @@ -10970,7 +11062,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3217 +#: templates/js/translated/part.js:3219 msgid "Minimum Quantity" msgstr "" @@ -11058,27 +11150,27 @@ msgstr "" msgid "Delete attachments" msgstr "" -#: templates/js/translated/attachment.js:253 +#: templates/js/translated/attachment.js:260 msgid "Attachment actions" msgstr "" -#: templates/js/translated/attachment.js:275 +#: templates/js/translated/attachment.js:294 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:315 +#: templates/js/translated/attachment.js:334 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:365 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:366 +#: templates/js/translated/attachment.js:385 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:374 +#: templates/js/translated/attachment.js:393 msgid "Delete attachment" msgstr "" @@ -11359,7 +11451,7 @@ msgid "Includes variant and substitute stock" msgstr "" #: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 -#: templates/js/translated/part.js:1256 +#: templates/js/translated/part.js:1257 #: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" @@ -11686,7 +11778,7 @@ msgstr "" #: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 #: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 -#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11729,8 +11821,8 @@ msgstr "" msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 -#: templates/js/translated/part.js:1202 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:791 +#: templates/js/translated/part.js:1203 msgid "Trackable part" msgstr "" @@ -11916,7 +12008,7 @@ msgid "Delete Parameters" msgstr "" #: templates/js/translated/company.js:1191 -#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2244 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2245 msgid "Order parts" msgstr "" @@ -11933,34 +12025,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:1279 -#: templates/js/translated/company.js:1567 templates/js/translated/part.js:798 -#: templates/js/translated/part.js:1210 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Template part" msgstr "" #: templates/js/translated/company.js:1283 -#: templates/js/translated/company.js:1571 templates/js/translated/part.js:802 -#: templates/js/translated/part.js:1214 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:803 +#: templates/js/translated/part.js:1215 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1464 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1465 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1527 +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1528 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1528 +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1529 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1433 +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1434 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1549 +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1550 msgid "Delete Parameter" msgstr "" @@ -12094,23 +12186,23 @@ msgstr "" msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2499 +#: templates/js/translated/forms.js:2500 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3113 +#: templates/js/translated/forms.js:3114 msgid "Select Columns" msgstr "" @@ -12211,7 +12303,7 @@ msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 -#: templates/js/translated/part.js:1604 +#: templates/js/translated/part.js:1605 msgid "ID" msgstr "" @@ -12292,347 +12384,343 @@ msgstr "" 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 +#: templates/js/translated/part.js:333 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:355 +#: templates/js/translated/part.js:356 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:356 +#: templates/js/translated/part.js:357 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:370 +#: templates/js/translated/part.js:371 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:383 +#: templates/js/translated/part.js:384 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:388 +#: templates/js/translated/part.js:389 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:397 +#: templates/js/translated/part.js:398 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:401 +#: templates/js/translated/part.js:402 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:406 +#: templates/js/translated/part.js:407 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:430 +#: templates/js/translated/part.js:431 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:432 +#: templates/js/translated/part.js:433 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:433 +#: templates/js/translated/part.js:434 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:462 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:463 +#: templates/js/translated/part.js:464 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:474 +#: templates/js/translated/part.js:475 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:531 +#: templates/js/translated/part.js:532 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:532 +#: templates/js/translated/part.js:533 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:546 +#: templates/js/translated/part.js:547 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:548 +#: templates/js/translated/part.js:549 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:549 +#: templates/js/translated/part.js:550 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:550 +#: templates/js/translated/part.js:551 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:557 +#: templates/js/translated/part.js:558 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:593 +#: templates/js/translated/part.js:594 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:595 +#: templates/js/translated/part.js:596 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:600 +#: templates/js/translated/part.js:601 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:602 +#: templates/js/translated/part.js:603 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:619 +#: templates/js/translated/part.js:620 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:629 +#: templates/js/translated/part.js:630 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:632 +#: templates/js/translated/part.js:633 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:657 +#: templates/js/translated/part.js:658 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:685 +#: templates/js/translated/part.js:686 #: templates/js/translated/table_filters.js:747 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:688 +#: templates/js/translated/part.js:689 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:748 +#: templates/js/translated/part.js:749 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:771 +#: templates/js/translated/part.js:772 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +#: templates/js/translated/part.js:795 templates/js/translated/part.js:1207 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:806 +#: templates/js/translated/part.js:807 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:810 +#: templates/js/translated/part.js:811 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:897 +#: templates/js/translated/part.js:898 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:901 +#: templates/js/translated/part.js:902 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1050 +#: templates/js/translated/part.js:1051 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1145 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +#: templates/js/translated/part.js:1113 templates/js/translated/part.js:1155 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1281 +#: templates/js/translated/part.js:1282 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1599 +#: templates/js/translated/part.js:1600 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1662 +#: templates/js/translated/part.js:1663 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1674 +#: templates/js/translated/part.js:1675 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1682 +#: templates/js/translated/part.js:1683 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1716 +#: templates/js/translated/part.js:1717 #: templates/js/translated/purchase_order.js:1654 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1860 +#: templates/js/translated/part.js:1861 #: templates/js/translated/purchase_order.js:2153 #: templates/js/translated/return_order.js:755 #: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1906 +#: templates/js/translated/part.js:1907 #: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1970 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1991 +#: templates/js/translated/part.js:1992 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 +#: templates/js/translated/part.js:2080 templates/js/translated/part.js:2506 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2200 +#: templates/js/translated/part.js:2201 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2205 +#: templates/js/translated/part.js:2206 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2235 +#: templates/js/translated/part.js:2236 msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2286 +#: templates/js/translated/part.js:2287 msgid "part" msgstr "" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2288 msgid "parts" msgstr "" -#: templates/js/translated/part.js:2383 +#: templates/js/translated/part.js:2384 msgid "No category" msgstr "" -#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2546 +#: templates/js/translated/part.js:2547 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2644 +#: templates/js/translated/part.js:2645 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2760 +#: templates/js/translated/part.js:2761 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2776 +#: templates/js/translated/part.js:2777 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2865 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2887 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/part.js:2938 templates/js/translated/stock.js:1457 #: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2940 +#: templates/js/translated/part.js:2942 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2956 +#: templates/js/translated/part.js:2958 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2970 +#: templates/js/translated/part.js:2972 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3051 templates/js/translated/part.js:3052 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3052 +#: templates/js/translated/part.js:3054 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3058 +#: templates/js/translated/part.js:3060 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3108 +#: templates/js/translated/part.js:3110 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3114 +#: templates/js/translated/part.js:3116 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3210 +#: templates/js/translated/part.js:3212 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3226 +#: templates/js/translated/part.js:3228 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3271 +#: templates/js/translated/part.js:3273 msgid "Minimum Stock Level" msgstr "" @@ -13240,10 +13328,6 @@ msgstr "" 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 "" @@ -13412,7 +13496,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:401 +#: templates/js/translated/stock.js:1042 users/models.py:392 msgid "Add" msgstr "" @@ -14303,34 +14387,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:384 +#: users/models.py:375 msgid "Permission set" msgstr "" -#: users/models.py:393 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "View" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "Permission to view items" msgstr "" -#: users/models.py:401 +#: users/models.py:392 msgid "Permission to add items" msgstr "" -#: users/models.py:405 +#: users/models.py:396 msgid "Change" msgstr "" -#: users/models.py:407 +#: users/models.py:398 msgid "Permissions to edit items" msgstr "" -#: users/models.py:413 +#: users/models.py:404 msgid "Permission to delete items" msgstr "" + diff --git a/src/backend/InvenTree/locale/ro/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/ro/LC_MESSAGES/django.po new file mode 100644 index 0000000000..7407b6c0a4 --- /dev/null +++ b/src/backend/InvenTree/locale/ro/LC_MESSAGES/django.po @@ -0,0 +1,14421 @@ +msgid "" +msgstr "" +"Project-Id-Version: inventree\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-06-26 03:18+0000\n" +"PO-Revision-Date: 2024-06-26 06:04\n" +"Last-Translator: \n" +"Language-Team: Romanian\n" +"Language: ro_RO\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" +"X-Crowdin-Project: inventree\n" +"X-Crowdin-Project-ID: 452300\n" +"X-Crowdin-Language: ro\n" +"X-Crowdin-File: /[inventree.InvenTree] l10/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 216\n" + +#: InvenTree/api.py:272 +msgid "API endpoint not found" +msgstr "" + +#: InvenTree/api.py:520 +msgid "User does not have permission to view this model" +msgstr "" + +#: InvenTree/conversion.py:160 +#, python-brace-format +msgid "Invalid unit provided ({unit})" +msgstr "" + +#: InvenTree/conversion.py:177 +msgid "No value provided" +msgstr "" + +#: InvenTree/conversion.py:204 +#, python-brace-format +msgid "Could not convert {original} to {unit}" +msgstr "" + +#: InvenTree/conversion.py:206 +msgid "Invalid quantity supplied" +msgstr "" + +#: InvenTree/conversion.py:220 +#, 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:136 +msgid "Enter date" +msgstr "" + +#: InvenTree/fields.py:205 InvenTree/models.py:918 build/serializers.py:452 +#: build/serializers.py:530 build/templates/build/sidebar.html:21 +#: company/models.py:817 company/templates/company/sidebar.html:37 +#: order/models.py:1296 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:3183 part/templates/part/part_sidebar.html:63 +#: report/templates/report/inventree_build_order_report.html:172 +#: stock/admin.py:230 stock/models.py:2309 stock/models.py:2431 +#: stock/serializers.py:632 stock/serializers.py:790 stock/serializers.py:886 +#: stock/serializers.py:936 stock/serializers.py:1239 stock/serializers.py:1328 +#: stock/serializers.py:1493 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 +#: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1081 +#: templates/js/translated/purchase_order.js:2200 +#: templates/js/translated/return_order.js:775 +#: templates/js/translated/sales_order.js:1103 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/stock.js:1536 templates/js/translated/stock.js:2428 +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:248 InvenTree/forms.py:256 +msgid "The provided primary email address is not valid." +msgstr "" + +#: InvenTree/forms.py:263 +msgid "The provided email domain is not approved." +msgstr "" + +#: InvenTree/forms.py:390 +msgid "Registration is disabled." +msgstr "" + +#: InvenTree/helpers.py:525 order/models.py:562 order/models.py:764 +msgid "Invalid quantity provided" +msgstr "" + +#: InvenTree/helpers.py:533 +msgid "Empty serial number string" +msgstr "" + +#: InvenTree/helpers.py:562 +msgid "Duplicate serial" +msgstr "" + +#: InvenTree/helpers.py:594 InvenTree/helpers.py:637 +#, python-brace-format +msgid "Invalid group range: {group}" +msgstr "" + +#: InvenTree/helpers.py:625 +#, python-brace-format +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" +msgstr "" + +#: InvenTree/helpers.py:655 InvenTree/helpers.py:662 InvenTree/helpers.py:681 +#, python-brace-format +msgid "Invalid group sequence: {group}" +msgstr "" + +#: InvenTree/helpers.py:691 +msgid "No serial numbers found" +msgstr "" + +#: InvenTree/helpers.py:696 +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" +msgstr "" + +#: InvenTree/helpers.py:814 +msgid "Remove HTML tags from this value" +msgstr "" + +#: InvenTree/helpers_model.py:140 +msgid "Connection error" +msgstr "" + +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 +msgid "Server responded with invalid status code" +msgstr "" + +#: InvenTree/helpers_model.py:148 +msgid "Exception occurred" +msgstr "" + +#: InvenTree/helpers_model.py:158 +msgid "Server responded with invalid Content-Length value" +msgstr "" + +#: InvenTree/helpers_model.py:161 +msgid "Image size is too large" +msgstr "" + +#: InvenTree/helpers_model.py:173 +msgid "Image download exceeded maximum size" +msgstr "" + +#: InvenTree/helpers_model.py:178 +msgid "Remote server returned empty response" +msgstr "" + +#: InvenTree/helpers_model.py:186 +msgid "Supplied URL is not a valid image file" +msgstr "" + +#: InvenTree/locales.py:18 +msgid "Bulgarian" +msgstr "" + +#: InvenTree/locales.py:19 +msgid "Czech" +msgstr "" + +#: InvenTree/locales.py:20 +msgid "Danish" +msgstr "" + +#: InvenTree/locales.py:21 +msgid "German" +msgstr "" + +#: InvenTree/locales.py:22 +msgid "Greek" +msgstr "" + +#: InvenTree/locales.py:23 +msgid "English" +msgstr "" + +#: InvenTree/locales.py:24 +msgid "Spanish" +msgstr "" + +#: InvenTree/locales.py:25 +msgid "Spanish (Mexican)" +msgstr "" + +#: InvenTree/locales.py:26 +msgid "Farsi / Persian" +msgstr "" + +#: InvenTree/locales.py:27 +msgid "Finnish" +msgstr "" + +#: InvenTree/locales.py:28 +msgid "French" +msgstr "" + +#: InvenTree/locales.py:29 +msgid "Hebrew" +msgstr "" + +#: InvenTree/locales.py:30 +msgid "Hindi" +msgstr "" + +#: InvenTree/locales.py:31 +msgid "Hungarian" +msgstr "" + +#: InvenTree/locales.py:32 +msgid "Italian" +msgstr "" + +#: InvenTree/locales.py:33 +msgid "Japanese" +msgstr "" + +#: InvenTree/locales.py:34 +msgid "Korean" +msgstr "" + +#: InvenTree/locales.py:35 +msgid "Latvian" +msgstr "" + +#: InvenTree/locales.py:36 +msgid "Dutch" +msgstr "" + +#: InvenTree/locales.py:37 +msgid "Norwegian" +msgstr "" + +#: InvenTree/locales.py:38 +msgid "Polish" +msgstr "" + +#: InvenTree/locales.py:39 +msgid "Portuguese" +msgstr "" + +#: InvenTree/locales.py:40 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: InvenTree/locales.py:41 +msgid "Romanian" +msgstr "" + +#: InvenTree/locales.py:42 +msgid "Russian" +msgstr "" + +#: InvenTree/locales.py:43 +msgid "Slovak" +msgstr "" + +#: InvenTree/locales.py:44 +msgid "Slovenian" +msgstr "" + +#: InvenTree/locales.py:45 +msgid "Serbian" +msgstr "" + +#: InvenTree/locales.py:46 +msgid "Swedish" +msgstr "" + +#: InvenTree/locales.py:47 +msgid "Thai" +msgstr "" + +#: InvenTree/locales.py:48 +msgid "Turkish" +msgstr "" + +#: InvenTree/locales.py:49 +msgid "Ukrainian" +msgstr "" + +#: InvenTree/locales.py:50 +msgid "Vietnamese" +msgstr "" + +#: InvenTree/locales.py:51 +msgid "Chinese (Simplified)" +msgstr "" + +#: InvenTree/locales.py:52 +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:136 +#: company/templates/company/company_base.html:138 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:677 +msgid "Email" +msgstr "" + +#: InvenTree/models.py:105 +msgid "Error running plugin validation" +msgstr "" + +#: InvenTree/models.py:174 +msgid "Metadata must be a python dict object" +msgstr "" + +#: InvenTree/models.py:180 +msgid "Plugin Metadata" +msgstr "" + +#: InvenTree/models.py:181 +msgid "JSON metadata field, for use by external plugins" +msgstr "" + +#: InvenTree/models.py:408 +msgid "Improperly formatted pattern" +msgstr "" + +#: InvenTree/models.py:415 +msgid "Unknown format key specified" +msgstr "" + +#: InvenTree/models.py:421 +msgid "Missing required format key" +msgstr "" + +#: InvenTree/models.py:432 +msgid "Reference field cannot be empty" +msgstr "" + +#: InvenTree/models.py:440 +msgid "Reference must match required pattern" +msgstr "" + +#: InvenTree/models.py:471 +msgid "Reference number is too large" +msgstr "" + +#: InvenTree/models.py:719 +msgid "Duplicate names cannot exist under the same parent" +msgstr "" + +#: InvenTree/models.py:736 +msgid "Invalid choice" +msgstr "" + +#: InvenTree/models.py:766 common/models.py:2623 common/models.py:3036 +#: common/serializers.py:408 company/models.py:580 machine/models.py:24 +#: part/models.py:891 part/models.py:3639 plugin/models.py:51 +#: report/models.py:150 stock/models.py:73 +#: templates/InvenTree/settings/mixins/urls.html:13 +#: templates/InvenTree/settings/notifications.html:17 +#: templates/InvenTree/settings/plugin.html:83 +#: 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:676 +#: templates/js/translated/company.js:724 +#: templates/js/translated/company.js:913 +#: templates/js/translated/company.js:1165 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1187 +#: templates/js/translated/part.js:1475 templates/js/translated/part.js:1611 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 +msgid "Name" +msgstr "" + +#: InvenTree/models.py:772 build/models.py:220 +#: build/templates/build/detail.html:24 common/models.py:138 +#: company/models.py:509 company/models.py:808 +#: company/templates/company/company_base.html:77 +#: company/templates/company/manufacturer_part.html:75 +#: company/templates/company/supplier_part.html:107 order/models.py:289 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:914 +#: part/models.py:3654 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 +#: report/templates/report/inventree_build_order_report.html:117 +#: stock/admin.py:54 stock/models.py:79 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:2139 templates/js/translated/company.js:519 +#: templates/js/translated/company.js:1330 +#: templates/js/translated/company.js:1641 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1239 +#: templates/js/translated/part.js:1484 templates/js/translated/part.js:1622 +#: templates/js/translated/part.js:1959 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2897 +#: templates/js/translated/plugin.js:80 +#: templates/js/translated/purchase_order.js:1706 +#: templates/js/translated/purchase_order.js:1849 +#: templates/js/translated/purchase_order.js:2022 +#: templates/js/translated/return_order.js:313 +#: templates/js/translated/sales_order.js:838 +#: templates/js/translated/sales_order.js:1848 +#: templates/js/translated/stock.js:1515 templates/js/translated/stock.js:2058 +#: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 +msgid "Description" +msgstr "" + +#: InvenTree/models.py:773 stock/models.py:80 +msgid "Description (optional)" +msgstr "" + +#: InvenTree/models.py:788 templates/js/translated/part.js:2794 +#: templates/js/translated/stock.js:2757 +msgid "Path" +msgstr "" + +#: InvenTree/models.py:918 +msgid "Markdown notes (optional)" +msgstr "" + +#: InvenTree/models.py:947 +msgid "Barcode Data" +msgstr "" + +#: InvenTree/models.py:948 +msgid "Third party barcode data" +msgstr "" + +#: InvenTree/models.py:954 +msgid "Barcode Hash" +msgstr "" + +#: InvenTree/models.py:955 +msgid "Unique hash of barcode data" +msgstr "" + +#: InvenTree/models.py:1008 +msgid "Existing barcode found" +msgstr "" + +#: InvenTree/models.py:1051 +msgid "Server Error" +msgstr "" + +#: InvenTree/models.py:1052 +msgid "An error has been logged by the server." +msgstr "" + +#: InvenTree/serializers.py:63 part/models.py:4192 +msgid "Must be a valid number" +msgstr "" + +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3001 +#: 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:442 +msgid "You do not have permission to change this user role." +msgstr "" + +#: InvenTree/serializers.py:454 +msgid "Only superusers can create new users" +msgstr "" + +#: InvenTree/serializers.py:473 +msgid "Your account has been created." +msgstr "" + +#: InvenTree/serializers.py:475 +msgid "Please use the password reset function to login" +msgstr "" + +#: InvenTree/serializers.py:482 +msgid "Welcome to InvenTree" +msgstr "" + +#: InvenTree/serializers.py:540 +msgid "Invalid value" +msgstr "" + +#: InvenTree/serializers.py:560 +msgid "Data File" +msgstr "" + +#: InvenTree/serializers.py:561 +msgid "Select data file for upload" +msgstr "" + +#: InvenTree/serializers.py:578 +msgid "Unsupported file type" +msgstr "" + +#: InvenTree/serializers.py:584 +msgid "File is too large" +msgstr "" + +#: InvenTree/serializers.py:605 +msgid "No columns found in file" +msgstr "" + +#: InvenTree/serializers.py:608 +msgid "No data rows found in file" +msgstr "" + +#: InvenTree/serializers.py:721 +msgid "No data rows provided" +msgstr "" + +#: InvenTree/serializers.py:724 +msgid "No data columns supplied" +msgstr "" + +#: InvenTree/serializers.py:791 +#, python-brace-format +msgid "Missing required column: '{name}'" +msgstr "" + +#: InvenTree/serializers.py:800 +#, python-brace-format +msgid "Duplicate column: '{col}'" +msgstr "" + +#: InvenTree/serializers.py:840 +msgid "Remote Image" +msgstr "" + +#: InvenTree/serializers.py:841 +msgid "URL of remote image file" +msgstr "" + +#: InvenTree/serializers.py:859 +msgid "Downloading images from remote URL is not enabled" +msgstr "" + +#: InvenTree/status.py:66 part/serializers.py:1174 +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/templatetags/inventree_extras.py:184 +msgid "Unknown database" +msgstr "" + +#: InvenTree/validators.py:32 InvenTree/validators.py:34 +msgid "Invalid physical unit" +msgstr "" + +#: InvenTree/validators.py:40 +msgid "Not a valid currency code" +msgstr "" + +#: InvenTree/validators.py:118 InvenTree/validators.py:134 +msgid "Overage value must not be negative" +msgstr "" + +#: InvenTree/validators.py:136 +msgid "Overage must not exceed 100%" +msgstr "" + +#: InvenTree/validators.py:142 +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:255 +msgid "Build must be cancelled before it can be deleted" +msgstr "" + +#: build/api.py:299 part/models.py:4070 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:583 +msgid "Consumable" +msgstr "" + +#: build/api.py:300 part/models.py:4064 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 +#: templates/js/translated/build.js:2529 +#: templates/js/translated/table_filters.js:186 +#: templates/js/translated/table_filters.js:215 +#: templates/js/translated/table_filters.js:587 +msgid "Optional" +msgstr "" + +#: build/api.py:301 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:579 +msgid "Tracked" +msgstr "" + +#: build/api.py:303 part/admin.py:144 templates/js/translated/build.js:1744 +#: templates/js/translated/build.js:2629 +#: templates/js/translated/sales_order.js:1965 +#: templates/js/translated/table_filters.js:571 +msgid "Allocated" +msgstr "" + +#: build/api.py:311 company/models.py:872 company/serializers.py:359 +#: 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:2561 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:234 +#: templates/js/translated/part.js:693 templates/js/translated/part.js:695 +#: templates/js/translated/part.js:700 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:575 +msgid "Available" +msgstr "" + +#: build/models.py:85 build/templates/build/build_base.html:9 +#: build/templates/build/build_base.html:27 +#: report/templates/report/inventree_build_order_report.html:105 +#: stock/serializers.py:82 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:2892 +msgid "Build Order" +msgstr "" + +#: build/models.py:86 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:207 +msgid "Build Orders" +msgstr "" + +#: build/models.py:133 +msgid "Invalid choice for parent build" +msgstr "" + +#: build/models.py:144 order/models.py:240 +msgid "Responsible user or group must be specified" +msgstr "" + +#: build/models.py:150 +msgid "Build order part cannot be changed" +msgstr "" + +#: build/models.py:211 +msgid "Build Order Reference" +msgstr "" + +#: build/models.py:212 order/models.py:463 order/models.py:926 +#: order/models.py:1289 order/models.py:2020 part/admin.py:411 +#: part/models.py:4085 part/templates/part/upload_bom.html:54 +#: report/templates/report/inventree_bill_of_materials_report.html:139 +#: report/templates/report/inventree_purchase_order_report.html:28 +#: report/templates/report/inventree_return_order_report.html:26 +#: report/templates/report/inventree_sales_order_report.html:28 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:2512 templates/js/translated/order.js:291 +#: templates/js/translated/pricing.js:386 +#: templates/js/translated/purchase_order.js:2065 +#: templates/js/translated/return_order.js:728 +#: templates/js/translated/sales_order.js:1854 +msgid "Reference" +msgstr "" + +#: build/models.py:223 +msgid "Brief description of the build (optional)" +msgstr "" + +#: build/models.py:231 build/templates/build/build_base.html:183 +#: build/templates/build/detail.html:87 +msgid "Parent Build" +msgstr "" + +#: build/models.py:232 +msgid "BuildOrder to which this build is allocated" +msgstr "" + +#: build/models.py:237 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1026 order/api.py:805 +#: order/models.py:1414 order/models.py:1559 order/models.py:1560 +#: part/api.py:1494 part/api.py:1788 part/models.py:395 part/models.py:3012 +#: part/models.py:3156 part/models.py:3303 part/models.py:3324 +#: part/models.py:3346 part/models.py:3477 part/models.py:3787 +#: part/models.py:3943 part/models.py:4036 part/models.py:4395 +#: part/serializers.py:1120 part/serializers.py:1726 +#: 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_report.html:109 +#: report/templates/report/inventree_purchase_order_report.html:27 +#: report/templates/report/inventree_return_order_report.html:24 +#: report/templates/report/inventree_sales_order_report.html:27 +#: report/templates/report/inventree_stock_location_report.html:102 +#: stock/serializers.py:109 stock/serializers.py:157 stock/serializers.py:423 +#: stock/serializers.py:820 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:1312 templates/js/translated/build.js:1743 +#: templates/js/translated/build.js:2162 templates/js/translated/build.js:2335 +#: templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1116 +#: templates/js/translated/company.js:1271 +#: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1944 templates/js/translated/part.js:2016 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:751 +#: templates/js/translated/purchase_order.js:1304 +#: templates/js/translated/purchase_order.js:1848 +#: templates/js/translated/purchase_order.js:2007 +#: templates/js/translated/return_order.js:538 +#: templates/js/translated/return_order.js:709 +#: templates/js/translated/sales_order.js:300 +#: templates/js/translated/sales_order.js:1233 +#: templates/js/translated/sales_order.js:1634 +#: templates/js/translated/sales_order.js:1832 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1997 +#: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 +#: templates/js/translated/stock.js:3236 +msgid "Part" +msgstr "" + +#: build/models.py:245 +msgid "Select part to build" +msgstr "" + +#: build/models.py:250 +msgid "Sales Order Reference" +msgstr "" + +#: build/models.py:254 +msgid "SalesOrder to which this build is allocated" +msgstr "" + +#: build/models.py:259 build/serializers.py:999 +#: templates/js/translated/build.js:1731 +#: templates/js/translated/sales_order.js:1221 +msgid "Source Location" +msgstr "" + +#: build/models.py:263 +msgid "Select location to take stock from for this build (leave blank to take from any stock location)" +msgstr "" + +#: build/models.py:268 +msgid "Destination Location" +msgstr "" + +#: build/models.py:272 +msgid "Select location where the completed items will be stored" +msgstr "" + +#: build/models.py:276 +msgid "Build Quantity" +msgstr "" + +#: build/models.py:279 +msgid "Number of stock items to build" +msgstr "" + +#: build/models.py:283 +msgid "Completed items" +msgstr "" + +#: build/models.py:285 +msgid "Number of stock items which have been completed" +msgstr "" + +#: build/models.py:289 +msgid "Build Status" +msgstr "" + +#: build/models.py:293 +msgid "Build status code" +msgstr "" + +#: build/models.py:302 build/serializers.py:286 order/serializers.py:580 +#: stock/models.py:838 stock/serializers.py:74 stock/serializers.py:1458 +#: templates/js/translated/purchase_order.js:1129 +msgid "Batch Code" +msgstr "" + +#: build/models.py:306 build/serializers.py:287 +msgid "Batch code for this build output" +msgstr "" + +#: build/models.py:309 order/models.py:316 order/serializers.py:119 +#: part/models.py:1115 part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:338 +#: templates/js/translated/sales_order.js:863 +msgid "Creation Date" +msgstr "" + +#: build/models.py:313 +msgid "Target completion date" +msgstr "" + +#: build/models.py:314 +msgid "Target date for build completion. Build will be overdue after this date." +msgstr "" + +#: build/models.py:317 order/models.py:521 order/models.py:2065 +#: templates/js/translated/build.js:2247 +msgid "Completion Date" +msgstr "" + +#: build/models.py:323 +msgid "completed by" +msgstr "" + +#: build/models.py:331 templates/js/translated/build.js:2207 +msgid "Issued by" +msgstr "" + +#: build/models.py:332 +msgid "User who issued this build order" +msgstr "" + +#: build/models.py:340 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:147 +#: order/models.py:334 order/templates/order/order_base.html:217 +#: order/templates/order/return_order_base.html:188 +#: order/templates/order/sales_order_base.html:232 part/models.py:1132 +#: part/templates/part/part_base.html:390 +#: report/templates/report/inventree_build_order_report.html:158 +#: templates/InvenTree/settings/settings_staff_js.html:150 +#: templates/js/translated/build.js:2219 +#: templates/js/translated/purchase_order.js:1763 +#: templates/js/translated/return_order.js:358 +#: templates/js/translated/table_filters.js:531 +msgid "Responsible" +msgstr "" + +#: build/models.py:341 +msgid "User or group responsible for this build order" +msgstr "" + +#: build/models.py:346 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:184 +#: part/templates/part/part_base.html:383 stock/models.py:834 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1019 +msgid "External Link" +msgstr "" + +#: build/models.py:347 common/models.py:3178 part/models.py:956 +#: stock/models.py:834 +msgid "Link to external URL" +msgstr "" + +#: build/models.py:351 +msgid "Build Priority" +msgstr "" + +#: build/models.py:354 +msgid "Priority of this build order" +msgstr "" + +#: build/models.py:361 common/models.py:131 order/admin.py:18 +#: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2144 +#: templates/js/translated/purchase_order.js:1710 +#: templates/js/translated/return_order.js:317 +#: templates/js/translated/sales_order.js:842 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +msgid "Project Code" +msgstr "" + +#: build/models.py:362 +msgid "Project code for this build order" +msgstr "" + +#: build/models.py:595 build/models.py:660 +msgid "Failed to offload task to complete build allocations" +msgstr "" + +#: build/models.py:617 +#, python-brace-format +msgid "Build order {build} has been completed" +msgstr "" + +#: build/models.py:623 +msgid "A build order has been completed" +msgstr "" + +#: build/models.py:849 build/models.py:934 +msgid "No build output specified" +msgstr "" + +#: build/models.py:852 +msgid "Build output is already completed" +msgstr "" + +#: build/models.py:855 +msgid "Build output does not match Build Order" +msgstr "" + +#: build/models.py:938 build/serializers.py:219 build/serializers.py:268 +#: build/serializers.py:866 order/models.py:559 order/serializers.py:432 +#: order/serializers.py:575 part/serializers.py:1484 part/serializers.py:1884 +#: stock/models.py:677 stock/models.py:1495 stock/serializers.py:603 +msgid "Quantity must be greater than zero" +msgstr "" + +#: build/models.py:943 build/serializers.py:224 +msgid "Quantity cannot be greater than the output quantity" +msgstr "" + +#: build/models.py:1003 build/serializers.py:547 +#, python-brace-format +msgid "Build output {serial} has not passed all required tests" +msgstr "" + +#: build/models.py:1344 +msgid "Build Order Line Item" +msgstr "" + +#: build/models.py:1369 +msgid "Build object" +msgstr "" + +#: build/models.py:1383 build/models.py:1639 build/serializers.py:206 +#: build/serializers.py:253 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2509 +#: order/models.py:1272 order/models.py:1931 order/serializers.py:1327 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3170 part/models.py:4058 +#: 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_report.html:113 +#: report/templates/report/inventree_purchase_order_report.html:29 +#: report/templates/report/inventree_sales_order_report.html:29 +#: report/templates/report/inventree_stock_location_report.html:104 +#: report/templates/report/inventree_test_report.html:90 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:125 stock/serializers.py:165 stock/serializers.py:594 +#: 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:1369 +#: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 +#: templates/js/translated/company.js:1818 +#: templates/js/translated/model_renderers.js:236 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:962 +#: templates/js/translated/part.js:1812 templates/js/translated/part.js:3342 +#: 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:754 +#: templates/js/translated/purchase_order.js:1852 +#: templates/js/translated/purchase_order.js:2071 +#: templates/js/translated/sales_order.js:317 +#: templates/js/translated/sales_order.js:1235 +#: templates/js/translated/sales_order.js:1554 +#: templates/js/translated/sales_order.js:1644 +#: templates/js/translated/sales_order.js:1734 +#: templates/js/translated/sales_order.js:1860 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 +#: templates/js/translated/stock.js:3104 +msgid "Quantity" +msgstr "" + +#: build/models.py:1384 +msgid "Required quantity for build order" +msgstr "" + +#: build/models.py:1464 +msgid "Build item must specify a build output, as master part is marked as trackable" +msgstr "" + +#: build/models.py:1473 +#, python-brace-format +msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgstr "" + +#: build/models.py:1483 order/models.py:1882 +msgid "Stock item is over-allocated" +msgstr "" + +#: build/models.py:1489 order/models.py:1885 +msgid "Allocation quantity must be greater than zero" +msgstr "" + +#: build/models.py:1495 +msgid "Quantity must be 1 for serialized stock" +msgstr "" + +#: build/models.py:1554 +msgid "Selected stock item does not match BOM line" +msgstr "" + +#: build/models.py:1626 build/serializers.py:846 order/serializers.py:1171 +#: order/serializers.py:1192 stock/models.py:358 stock/serializers.py:91 +#: stock/serializers.py:697 stock/serializers.py:1177 stock/serializers.py:1289 +#: 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:1745 +#: templates/js/translated/sales_order.js:301 +#: templates/js/translated/sales_order.js:1234 +#: templates/js/translated/sales_order.js:1535 +#: templates/js/translated/sales_order.js:1540 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1728 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2977 +msgid "Stock Item" +msgstr "" + +#: build/models.py:1627 +msgid "Source stock item" +msgstr "" + +#: build/models.py:1640 +msgid "Stock quantity to allocate to build" +msgstr "" + +#: build/models.py:1648 +msgid "Install into" +msgstr "" + +#: build/models.py:1649 +msgid "Destination stock item" +msgstr "" + +#: build/serializers.py:156 build/serializers.py:875 +#: templates/js/translated/build.js:1322 +msgid "Build Output" +msgstr "" + +#: build/serializers.py:168 +msgid "Build output does not match the parent build" +msgstr "" + +#: build/serializers.py:172 +msgid "Output part does not match BuildOrder part" +msgstr "" + +#: build/serializers.py:176 +msgid "This build output has already been completed" +msgstr "" + +#: build/serializers.py:187 +msgid "This build output is not fully allocated" +msgstr "" + +#: build/serializers.py:207 build/serializers.py:254 +msgid "Enter quantity for build output" +msgstr "" + +#: build/serializers.py:275 +msgid "Integer quantity required for trackable parts" +msgstr "" + +#: build/serializers.py:278 +msgid "Integer quantity required, as the bill of materials contains trackable parts" +msgstr "" + +#: build/serializers.py:293 order/serializers.py:588 order/serializers.py:1331 +#: stock/serializers.py:614 templates/js/translated/purchase_order.js:1153 +#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 +msgid "Serial Numbers" +msgstr "" + +#: build/serializers.py:294 +msgid "Enter serial numbers for build outputs" +msgstr "" + +#: build/serializers.py:299 build/serializers.py:440 build/serializers.py:512 +#: order/serializers.py:564 order/serializers.py:672 order/serializers.py:1656 +#: part/serializers.py:1140 stock/serializers.py:100 stock/serializers.py:625 +#: stock/serializers.py:785 stock/serializers.py:881 stock/serializers.py:1321 +#: stock/serializers.py:1577 stock/templates/stock/item_base.html:394 +#: templates/js/translated/barcode.js:547 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:1001 +#: templates/js/translated/build.js:2372 +#: templates/js/translated/purchase_order.js:1178 +#: templates/js/translated/purchase_order.js:1268 +#: templates/js/translated/sales_order.js:1547 +#: templates/js/translated/sales_order.js:1655 +#: templates/js/translated/sales_order.js:1663 +#: templates/js/translated/sales_order.js:1742 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2201 +#: templates/js/translated/stock.js:2871 +msgid "Location" +msgstr "" + +#: build/serializers.py:300 +msgid "Stock location for build output" +msgstr "" + +#: build/serializers.py:314 +msgid "Auto Allocate Serial Numbers" +msgstr "" + +#: build/serializers.py:315 +msgid "Automatically allocate required items with matching serial numbers" +msgstr "" + +#: build/serializers.py:330 +msgid "Serial numbers must be provided for trackable parts" +msgstr "" + +#: build/serializers.py:355 stock/api.py:1041 +msgid "The following serial numbers already exist or are invalid" +msgstr "" + +#: build/serializers.py:402 build/serializers.py:464 build/serializers.py:553 +msgid "A list of build outputs must be provided" +msgstr "" + +#: build/serializers.py:441 +msgid "Stock location for scrapped outputs" +msgstr "" + +#: build/serializers.py:447 +msgid "Discard Allocations" +msgstr "" + +#: build/serializers.py:448 +msgid "Discard any stock allocations for scrapped outputs" +msgstr "" + +#: build/serializers.py:453 +msgid "Reason for scrapping build output(s)" +msgstr "" + +#: build/serializers.py:513 +msgid "Location for completed build outputs" +msgstr "" + +#: build/serializers.py:519 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2044 order/serializers.py:596 stock/admin.py:164 +#: stock/serializers.py:932 stock/serializers.py:1465 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 +#: templates/js/translated/purchase_order.js:1308 +#: templates/js/translated/purchase_order.js:1722 +#: templates/js/translated/return_order.js:330 +#: templates/js/translated/sales_order.js:855 +#: templates/js/translated/stock.js:2176 templates/js/translated/stock.js:2995 +#: templates/js/translated/stock.js:3120 +msgid "Status" +msgstr "" + +#: build/serializers.py:525 +msgid "Accept Incomplete Allocation" +msgstr "" + +#: build/serializers.py:526 +msgid "Complete outputs if stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:611 +msgid "Consume Allocated Stock" +msgstr "" + +#: build/serializers.py:612 +msgid "Consume any stock which has already been allocated to this build" +msgstr "" + +#: build/serializers.py:618 +msgid "Remove Incomplete Outputs" +msgstr "" + +#: build/serializers.py:619 +msgid "Delete any build outputs which have not been completed" +msgstr "" + +#: build/serializers.py:646 +msgid "Not permitted" +msgstr "" + +#: build/serializers.py:647 +msgid "Accept as consumed by this build order" +msgstr "" + +#: build/serializers.py:648 +msgid "Deallocate before completing this build order" +msgstr "" + +#: build/serializers.py:678 +msgid "Overallocated Stock" +msgstr "" + +#: build/serializers.py:680 +msgid "How do you want to handle extra stock items assigned to the build order" +msgstr "" + +#: build/serializers.py:690 +msgid "Some stock items have been overallocated" +msgstr "" + +#: build/serializers.py:695 +msgid "Accept Unallocated" +msgstr "" + +#: build/serializers.py:696 +msgid "Accept that stock items have not been fully allocated to this build order" +msgstr "" + +#: build/serializers.py:706 templates/js/translated/build.js:315 +msgid "Required stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:711 order/serializers.py:300 order/serializers.py:1234 +msgid "Accept Incomplete" +msgstr "" + +#: build/serializers.py:712 +msgid "Accept that the required number of build outputs have not been completed" +msgstr "" + +#: build/serializers.py:722 templates/js/translated/build.js:319 +msgid "Required build quantity has not been completed" +msgstr "" + +#: build/serializers.py:731 templates/js/translated/build.js:303 +msgid "Build order has incomplete outputs" +msgstr "" + +#: build/serializers.py:769 +msgid "Build Line" +msgstr "" + +#: build/serializers.py:779 +msgid "Build output" +msgstr "" + +#: build/serializers.py:787 +msgid "Build output must point to the same build" +msgstr "" + +#: build/serializers.py:823 +msgid "Build Line Item" +msgstr "" + +#: build/serializers.py:837 +msgid "bom_item.part must point to the same part as the build order" +msgstr "" + +#: build/serializers.py:852 stock/serializers.py:1190 +msgid "Item must be in stock" +msgstr "" + +#: build/serializers.py:900 order/serializers.py:1225 +#, python-brace-format +msgid "Available quantity ({q}) exceeded" +msgstr "" + +#: build/serializers.py:906 +msgid "Build output must be specified for allocation of tracked parts" +msgstr "" + +#: build/serializers.py:913 +msgid "Build output cannot be specified for allocation of untracked parts" +msgstr "" + +#: build/serializers.py:937 order/serializers.py:1477 +msgid "Allocation items must be provided" +msgstr "" + +#: build/serializers.py:1000 +msgid "Stock location where parts are to be sourced (leave blank to take from any location)" +msgstr "" + +#: build/serializers.py:1008 +msgid "Exclude Location" +msgstr "" + +#: build/serializers.py:1009 +msgid "Exclude stock items from this selected location" +msgstr "" + +#: build/serializers.py:1014 +msgid "Interchangeable Stock" +msgstr "" + +#: build/serializers.py:1015 +msgid "Stock items in multiple locations can be used interchangeably" +msgstr "" + +#: build/serializers.py:1020 +msgid "Substitute Stock" +msgstr "" + +#: build/serializers.py:1021 +msgid "Allow allocation of substitute parts" +msgstr "" + +#: build/serializers.py:1026 +msgid "Optional Items" +msgstr "" + +#: build/serializers.py:1027 +msgid "Allocate optional BOM items to build order" +msgstr "" + +#: build/serializers.py:1049 +msgid "Failed to start auto-allocation task" +msgstr "" + +#: build/serializers.py:1139 part/models.py:3953 part/models.py:4387 +#: stock/api.py:804 +msgid "BOM Item" +msgstr "" + +#: build/serializers.py:1148 templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" + +#: build/serializers.py:1153 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:828 part/serializers.py:1502 +#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 +#: templates/js/translated/build.js:2613 templates/js/translated/part.js:710 +#: templates/js/translated/part.js:2149 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "" + +#: build/serializers.py:1158 part/serializers.py:1504 +#: templates/js/translated/build.js:2617 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "" + +#: build/serializers.py:1163 part/bom.py:172 part/serializers.py:1527 +#: part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1929 +msgid "Available Stock" +msgstr "" + +#: build/status_codes.py:11 generic/states/tests.py:17 order/status_codes.py:12 +#: order/status_codes.py:37 order/status_codes.py:64 order/status_codes.py:82 +#: templates/js/translated/table_filters.js:598 +msgid "Pending" +msgstr "" + +#: build/status_codes.py:12 +msgid "Production" +msgstr "" + +#: build/status_codes.py:13 order/status_codes.py:15 order/status_codes.py:45 +#: order/status_codes.py:70 +msgid "Cancelled" +msgstr "" + +#: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 +#: order/status_codes.py:44 order/status_codes.py:69 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 +msgid "Complete" +msgstr "" + +#: build/tasks.py:184 +msgid "Stock required for build order" +msgstr "" + +#: build/tasks.py:201 +msgid "Overdue Build Order" +msgstr "" + +#: build/tasks.py:206 +#, 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:309 +#: order/models.py:1307 order/templates/order/order_base.html:186 +#: order/templates/order/return_order_base.html:164 +#: order/templates/order/sales_order_base.html:196 +#: report/templates/report/inventree_build_order_report.html:125 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1831 +#: templates/js/translated/purchase_order.js:1739 +#: templates/js/translated/purchase_order.js:2147 +#: templates/js/translated/return_order.js:346 +#: templates/js/translated/return_order.js:750 +#: templates/js/translated/sales_order.js:871 +#: templates/js/translated/sales_order.js:1903 +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:126 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js:524 +#: templates/js/translated/table_filters.js:626 +#: templates/js/translated/table_filters.js:667 +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:1463 order/models.py:845 +#: order/models.py:1551 order/models.py:1665 order/models.py:1819 +#: order/templates/order/sales_order_base.html:9 +#: order/templates/order/sales_order_base.html:28 +#: report/templates/report/inventree_build_order_report.html:135 +#: report/templates/report/inventree_sales_order_report.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:805 +#: templates/js/translated/sales_order.js:1028 +#: templates/js/translated/stock.js:2924 +msgid "Sales Order" +msgstr "" + +#: build/templates/build/build_base.html:197 +#: build/templates/build/detail.html:115 +#: report/templates/report/inventree_build_order_report.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:2156 +msgid "Priority" +msgstr "" + +#: build/templates/build/build_base.html:269 +msgid "Delete Build Order" +msgstr "" + +#: build/templates/build/build_base.html:279 +msgid "Build Order QR Code" +msgstr "" + +#: build/templates/build/build_base.html:291 +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:1443 +#: templates/js/translated/purchase_order.js:2189 +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:162 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1380 +#: templates/js/translated/model_renderers.js:241 +#: templates/js/translated/purchase_order.js:1274 +#: templates/js/translated/stock.js:1133 templates/js/translated/stock.js:2190 +#: templates/js/translated/stock.js:3127 +#: 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:190 +#: templates/js/translated/build.js:2199 +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:206 +#: templates/js/translated/table_filters.js:689 +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:795 +msgid "Order Parts" +msgstr "" + +#: build/templates/build/detail.html:205 +msgid "Available stock has been filtered based on specified source location for this build order" +msgstr "" + +#: build/templates/build/detail.html:215 +msgid "Incomplete Build Outputs" +msgstr "" + +#: build/templates/build/detail.html:219 +msgid "Create new build output" +msgstr "" + +#: build/templates/build/detail.html:220 +msgid "New Build Output" +msgstr "" + +#: build/templates/build/detail.html:237 build/templates/build/sidebar.html:15 +msgid "Consumed Stock" +msgstr "" + +#: build/templates/build/detail.html:249 +msgid "Completed Build Outputs" +msgstr "" + +#: build/templates/build/detail.html:261 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:276 +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/api.py:689 +msgid "Is Link" +msgstr "" + +#: common/api.py:697 +msgid "Is File" +msgstr "" + +#: common/api.py:739 +msgid "User does not have permission to delete this attachment" +msgstr "" + +#: common/currency.py:130 +msgid "Invalid currency code" +msgstr "" + +#: common/currency.py:132 +msgid "Duplicate currency code" +msgstr "" + +#: common/currency.py:137 +msgid "No valid currency codes provided" +msgstr "" + +#: common/currency.py:154 +msgid "No plugin" +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:73 +msgid "Updated" +msgstr "" + +#: common/models.py:74 +msgid "Timestamp of last update" +msgstr "" + +#: common/models.py:107 +msgid "Site URL is locked by configuration" +msgstr "" + +#: common/models.py:132 +msgid "Unique project code" +msgstr "" + +#: common/models.py:139 +msgid "Project description" +msgstr "" + +#: common/models.py:148 +msgid "User or group responsible for this project" +msgstr "" + +#: common/models.py:765 +msgid "Settings key (must be unique - case insensitive)" +msgstr "" + +#: common/models.py:769 +msgid "Settings value" +msgstr "" + +#: common/models.py:821 +msgid "Chosen value is not a valid option" +msgstr "" + +#: common/models.py:837 +msgid "Value must be a boolean value" +msgstr "" + +#: common/models.py:845 +msgid "Value must be an integer value" +msgstr "" + +#: common/models.py:882 +msgid "Key string must be unique" +msgstr "" + +#: common/models.py:1114 +msgid "No group" +msgstr "" + +#: common/models.py:1213 +msgid "Restart required" +msgstr "" + +#: common/models.py:1215 +msgid "A setting has been changed which requires a server restart" +msgstr "" + +#: common/models.py:1222 +msgid "Pending migrations" +msgstr "" + +#: common/models.py:1223 +msgid "Number of pending database migrations" +msgstr "" + +#: common/models.py:1228 +msgid "Server Instance Name" +msgstr "" + +#: common/models.py:1230 +msgid "String descriptor for the server instance" +msgstr "" + +#: common/models.py:1234 +msgid "Use instance name" +msgstr "" + +#: common/models.py:1235 +msgid "Use the instance name in the title-bar" +msgstr "" + +#: common/models.py:1240 +msgid "Restrict showing `about`" +msgstr "" + +#: common/models.py:1241 +msgid "Show the `about` modal only to superusers" +msgstr "" + +#: common/models.py:1246 company/models.py:111 company/models.py:112 +msgid "Company name" +msgstr "" + +#: common/models.py:1247 +msgid "Internal company name" +msgstr "" + +#: common/models.py:1251 +msgid "Base URL" +msgstr "" + +#: common/models.py:1252 +msgid "Base URL for server instance" +msgstr "" + +#: common/models.py:1258 +msgid "Default Currency" +msgstr "" + +#: common/models.py:1259 +msgid "Select base currency for pricing calculations" +msgstr "" + +#: common/models.py:1265 +msgid "Supported Currencies" +msgstr "" + +#: common/models.py:1266 +msgid "List of supported currency codes" +msgstr "" + +#: common/models.py:1272 +msgid "Currency Update Interval" +msgstr "" + +#: common/models.py:1274 +msgid "How often to update exchange rates (set to zero to disable)" +msgstr "" + +#: common/models.py:1277 common/models.py:1333 common/models.py:1346 +#: common/models.py:1354 common/models.py:1363 common/models.py:1372 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:2046 +msgid "days" +msgstr "" + +#: common/models.py:1281 +msgid "Currency Update Plugin" +msgstr "" + +#: common/models.py:1282 +msgid "Currency update plugin to use" +msgstr "" + +#: common/models.py:1287 +msgid "Download from URL" +msgstr "" + +#: common/models.py:1289 +msgid "Allow download of remote images and files from external URL" +msgstr "" + +#: common/models.py:1295 +msgid "Download Size Limit" +msgstr "" + +#: common/models.py:1296 +msgid "Maximum allowable download size for remote image" +msgstr "" + +#: common/models.py:1302 +msgid "User-agent used to download from URL" +msgstr "" + +#: common/models.py:1304 +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:1309 +msgid "Strict URL Validation" +msgstr "" + +#: common/models.py:1310 +msgid "Require schema specification when validating URLs" +msgstr "" + +#: common/models.py:1315 +msgid "Require confirm" +msgstr "" + +#: common/models.py:1316 +msgid "Require explicit user confirmation for certain action." +msgstr "" + +#: common/models.py:1321 +msgid "Tree Depth" +msgstr "" + +#: common/models.py:1323 +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." +msgstr "" + +#: common/models.py:1329 +msgid "Update Check Interval" +msgstr "" + +#: common/models.py:1330 +msgid "How often to check for updates (set to zero to disable)" +msgstr "" + +#: common/models.py:1336 +msgid "Automatic Backup" +msgstr "" + +#: common/models.py:1337 +msgid "Enable automatic backup of database and media files" +msgstr "" + +#: common/models.py:1342 +msgid "Auto Backup Interval" +msgstr "" + +#: common/models.py:1343 +msgid "Specify number of days between automated backup events" +msgstr "" + +#: common/models.py:1349 +msgid "Task Deletion Interval" +msgstr "" + +#: common/models.py:1351 +msgid "Background task results will be deleted after specified number of days" +msgstr "" + +#: common/models.py:1358 +msgid "Error Log Deletion Interval" +msgstr "" + +#: common/models.py:1360 +msgid "Error logs will be deleted after specified number of days" +msgstr "" + +#: common/models.py:1367 +msgid "Notification Deletion Interval" +msgstr "" + +#: common/models.py:1369 +msgid "User notifications will be deleted after specified number of days" +msgstr "" + +#: common/models.py:1376 templates/InvenTree/settings/sidebar.html:31 +msgid "Barcode Support" +msgstr "" + +#: common/models.py:1377 +msgid "Enable barcode scanner support in the web interface" +msgstr "" + +#: common/models.py:1382 +msgid "Barcode Input Delay" +msgstr "" + +#: common/models.py:1383 +msgid "Barcode input processing delay time" +msgstr "" + +#: common/models.py:1389 +msgid "Barcode Webcam Support" +msgstr "" + +#: common/models.py:1390 +msgid "Allow barcode scanning via webcam in browser" +msgstr "" + +#: common/models.py:1395 +msgid "Part Revisions" +msgstr "" + +#: common/models.py:1396 +msgid "Enable revision field for Part" +msgstr "" + +#: common/models.py:1401 +msgid "Allow Deletion from Assembly" +msgstr "" + +#: common/models.py:1402 +msgid "Allow deletion of parts which are used in an assembly" +msgstr "" + +#: common/models.py:1407 +msgid "IPN Regex" +msgstr "" + +#: common/models.py:1408 +msgid "Regular expression pattern for matching Part IPN" +msgstr "" + +#: common/models.py:1411 +msgid "Allow Duplicate IPN" +msgstr "" + +#: common/models.py:1412 +msgid "Allow multiple parts to share the same IPN" +msgstr "" + +#: common/models.py:1417 +msgid "Allow Editing IPN" +msgstr "" + +#: common/models.py:1418 +msgid "Allow changing the IPN value while editing a part" +msgstr "" + +#: common/models.py:1423 +msgid "Copy Part BOM Data" +msgstr "" + +#: common/models.py:1424 +msgid "Copy BOM data by default when duplicating a part" +msgstr "" + +#: common/models.py:1429 +msgid "Copy Part Parameter Data" +msgstr "" + +#: common/models.py:1430 +msgid "Copy parameter data by default when duplicating a part" +msgstr "" + +#: common/models.py:1435 +msgid "Copy Part Test Data" +msgstr "" + +#: common/models.py:1436 +msgid "Copy test data by default when duplicating a part" +msgstr "" + +#: common/models.py:1441 +msgid "Copy Category Parameter Templates" +msgstr "" + +#: common/models.py:1442 +msgid "Copy category parameter templates when creating a part" +msgstr "" + +#: common/models.py:1447 part/admin.py:108 part/models.py:3795 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:227 +#: templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:767 +msgid "Template" +msgstr "" + +#: common/models.py:1448 +msgid "Parts are templates by default" +msgstr "" + +#: common/models.py:1453 part/admin.py:91 part/admin.py:425 part/models.py:1052 +#: templates/js/translated/bom.js:1639 +#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:721 +msgid "Assembly" +msgstr "" + +#: common/models.py:1454 +msgid "Parts can be assembled from other components by default" +msgstr "" + +#: common/models.py:1459 part/admin.py:95 part/models.py:1058 +#: templates/js/translated/table_filters.js:729 +msgid "Component" +msgstr "" + +#: common/models.py:1460 +msgid "Parts can be used as sub-components by default" +msgstr "" + +#: common/models.py:1465 part/admin.py:100 part/models.py:1070 +msgid "Purchaseable" +msgstr "" + +#: common/models.py:1466 +msgid "Parts are purchaseable by default" +msgstr "" + +#: common/models.py:1471 part/admin.py:104 part/models.py:1076 +#: templates/js/translated/table_filters.js:755 +msgid "Salable" +msgstr "" + +#: common/models.py:1472 +msgid "Parts are salable by default" +msgstr "" + +#: common/models.py:1477 part/admin.py:113 part/models.py:1064 +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:223 +#: templates/js/translated/table_filters.js:771 +msgid "Trackable" +msgstr "" + +#: common/models.py:1478 +msgid "Parts are trackable by default" +msgstr "" + +#: common/models.py:1483 part/admin.py:117 part/models.py:1086 +#: part/templates/part/part_base.html:154 +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:775 +msgid "Virtual" +msgstr "" + +#: common/models.py:1484 +msgid "Parts are virtual by default" +msgstr "" + +#: common/models.py:1489 +msgid "Show Import in Views" +msgstr "" + +#: common/models.py:1490 +msgid "Display the import wizard in some part views" +msgstr "" + +#: common/models.py:1495 +msgid "Show related parts" +msgstr "" + +#: common/models.py:1496 +msgid "Display related parts for a part" +msgstr "" + +#: common/models.py:1501 +msgid "Initial Stock Data" +msgstr "" + +#: common/models.py:1502 +msgid "Allow creation of initial stock when adding a new part" +msgstr "" + +#: common/models.py:1507 templates/js/translated/part.js:107 +msgid "Initial Supplier Data" +msgstr "" + +#: common/models.py:1509 +msgid "Allow creation of initial supplier data when adding a new part" +msgstr "" + +#: common/models.py:1515 +msgid "Part Name Display Format" +msgstr "" + +#: common/models.py:1516 +msgid "Format to display the part name" +msgstr "" + +#: common/models.py:1522 +msgid "Part Category Default Icon" +msgstr "" + +#: common/models.py:1523 +msgid "Part category default icon (empty means no icon)" +msgstr "" + +#: common/models.py:1527 +msgid "Enforce Parameter Units" +msgstr "" + +#: common/models.py:1529 +msgid "If units are provided, parameter values must match the specified units" +msgstr "" + +#: common/models.py:1535 +msgid "Minimum Pricing Decimal Places" +msgstr "" + +#: common/models.py:1537 +msgid "Minimum number of decimal places to display when rendering pricing data" +msgstr "" + +#: common/models.py:1548 +msgid "Maximum Pricing Decimal Places" +msgstr "" + +#: common/models.py:1550 +msgid "Maximum number of decimal places to display when rendering pricing data" +msgstr "" + +#: common/models.py:1561 +msgid "Use Supplier Pricing" +msgstr "" + +#: common/models.py:1563 +msgid "Include supplier price breaks in overall pricing calculations" +msgstr "" + +#: common/models.py:1569 +msgid "Purchase History Override" +msgstr "" + +#: common/models.py:1571 +msgid "Historical purchase order pricing overrides supplier price breaks" +msgstr "" + +#: common/models.py:1577 +msgid "Use Stock Item Pricing" +msgstr "" + +#: common/models.py:1579 +msgid "Use pricing from manually entered stock data for pricing calculations" +msgstr "" + +#: common/models.py:1585 +msgid "Stock Item Pricing Age" +msgstr "" + +#: common/models.py:1587 +msgid "Exclude stock items older than this number of days from pricing calculations" +msgstr "" + +#: common/models.py:1594 +msgid "Use Variant Pricing" +msgstr "" + +#: common/models.py:1595 +msgid "Include variant pricing in overall pricing calculations" +msgstr "" + +#: common/models.py:1600 +msgid "Active Variants Only" +msgstr "" + +#: common/models.py:1602 +msgid "Only use active variant parts for calculating variant pricing" +msgstr "" + +#: common/models.py:1608 +msgid "Pricing Rebuild Interval" +msgstr "" + +#: common/models.py:1610 +msgid "Number of days before part pricing is automatically updated" +msgstr "" + +#: common/models.py:1617 +msgid "Internal Prices" +msgstr "" + +#: common/models.py:1618 +msgid "Enable internal prices for parts" +msgstr "" + +#: common/models.py:1623 +msgid "Internal Price Override" +msgstr "" + +#: common/models.py:1625 +msgid "If available, internal prices override price range calculations" +msgstr "" + +#: common/models.py:1631 +msgid "Enable label printing" +msgstr "" + +#: common/models.py:1632 +msgid "Enable label printing from the web interface" +msgstr "" + +#: common/models.py:1637 +msgid "Label Image DPI" +msgstr "" + +#: common/models.py:1639 +msgid "DPI resolution when generating image files to supply to label printing plugins" +msgstr "" + +#: common/models.py:1645 +msgid "Enable Reports" +msgstr "" + +#: common/models.py:1646 +msgid "Enable generation of reports" +msgstr "" + +#: common/models.py:1651 templates/stats.html:25 +msgid "Debug Mode" +msgstr "" + +#: common/models.py:1652 +msgid "Generate reports in debug mode (HTML output)" +msgstr "" + +#: common/models.py:1657 +msgid "Log Report Errors" +msgstr "" + +#: common/models.py:1658 +msgid "Log errors which occur when generating reports" +msgstr "" + +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:302 +msgid "Page Size" +msgstr "" + +#: common/models.py:1664 +msgid "Default page size for PDF reports" +msgstr "" + +#: common/models.py:1669 +msgid "Enable Test Reports" +msgstr "" + +#: common/models.py:1670 +msgid "Enable generation of test reports" +msgstr "" + +#: common/models.py:1675 +msgid "Attach Test Reports" +msgstr "" + +#: common/models.py:1677 +msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" +msgstr "" + +#: common/models.py:1683 +msgid "Globally Unique Serials" +msgstr "" + +#: common/models.py:1684 +msgid "Serial numbers for stock items must be globally unique" +msgstr "" + +#: common/models.py:1689 +msgid "Autofill Serial Numbers" +msgstr "" + +#: common/models.py:1690 +msgid "Autofill serial numbers in forms" +msgstr "" + +#: common/models.py:1695 +msgid "Delete Depleted Stock" +msgstr "" + +#: common/models.py:1697 +msgid "Determines default behavior when a stock item is depleted" +msgstr "" + +#: common/models.py:1703 +msgid "Batch Code Template" +msgstr "" + +#: common/models.py:1705 +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:1710 +msgid "Stock Expiry" +msgstr "" + +#: common/models.py:1711 +msgid "Enable stock expiry functionality" +msgstr "" + +#: common/models.py:1716 +msgid "Sell Expired Stock" +msgstr "" + +#: common/models.py:1717 +msgid "Allow sale of expired stock" +msgstr "" + +#: common/models.py:1722 +msgid "Stock Stale Time" +msgstr "" + +#: common/models.py:1724 +msgid "Number of days stock items are considered stale before expiring" +msgstr "" + +#: common/models.py:1731 +msgid "Build Expired Stock" +msgstr "" + +#: common/models.py:1732 +msgid "Allow building with expired stock" +msgstr "" + +#: common/models.py:1737 +msgid "Stock Ownership Control" +msgstr "" + +#: common/models.py:1738 +msgid "Enable ownership control over stock locations and items" +msgstr "" + +#: common/models.py:1743 +msgid "Stock Location Default Icon" +msgstr "" + +#: common/models.py:1744 +msgid "Stock location default icon (empty means no icon)" +msgstr "" + +#: common/models.py:1748 +msgid "Show Installed Stock Items" +msgstr "" + +#: common/models.py:1749 +msgid "Display installed stock items in stock tables" +msgstr "" + +#: common/models.py:1754 +msgid "Check BOM when installing items" +msgstr "" + +#: common/models.py:1756 +msgid "Installed stock items must exist in the BOM for the parent part" +msgstr "" + +#: common/models.py:1762 +msgid "Allow Out of Stock Transfer" +msgstr "" + +#: common/models.py:1764 +msgid "Allow stock items which are not in stock to be transferred between stock locations" +msgstr "" + +#: common/models.py:1770 +msgid "Build Order Reference Pattern" +msgstr "" + +#: common/models.py:1772 +msgid "Required pattern for generating Build Order reference field" +msgstr "" + +#: common/models.py:1778 common/models.py:1806 common/models.py:1828 +#: common/models.py:1864 +msgid "Require Responsible Owner" +msgstr "" + +#: common/models.py:1779 common/models.py:1807 common/models.py:1829 +#: common/models.py:1865 +msgid "A responsible owner must be assigned to each order" +msgstr "" + +#: common/models.py:1784 +msgid "Block Until Tests Pass" +msgstr "" + +#: common/models.py:1786 +msgid "Prevent build outputs from being completed until all required tests pass" +msgstr "" + +#: common/models.py:1792 +msgid "Enable Return Orders" +msgstr "" + +#: common/models.py:1793 +msgid "Enable return order functionality in the user interface" +msgstr "" + +#: common/models.py:1798 +msgid "Return Order Reference Pattern" +msgstr "" + +#: common/models.py:1800 +msgid "Required pattern for generating Return Order reference field" +msgstr "" + +#: common/models.py:1812 +msgid "Edit Completed Return Orders" +msgstr "" + +#: common/models.py:1814 +msgid "Allow editing of return orders after they have been completed" +msgstr "" + +#: common/models.py:1820 +msgid "Sales Order Reference Pattern" +msgstr "" + +#: common/models.py:1822 +msgid "Required pattern for generating Sales Order reference field" +msgstr "" + +#: common/models.py:1834 +msgid "Sales Order Default Shipment" +msgstr "" + +#: common/models.py:1835 +msgid "Enable creation of default shipment with sales orders" +msgstr "" + +#: common/models.py:1840 +msgid "Edit Completed Sales Orders" +msgstr "" + +#: common/models.py:1842 +msgid "Allow editing of sales orders after they have been shipped or completed" +msgstr "" + +#: common/models.py:1848 +msgid "Mark Shipped Orders as Complete" +msgstr "" + +#: common/models.py:1850 +msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" +msgstr "" + +#: common/models.py:1856 +msgid "Purchase Order Reference Pattern" +msgstr "" + +#: common/models.py:1858 +msgid "Required pattern for generating Purchase Order reference field" +msgstr "" + +#: common/models.py:1870 +msgid "Edit Completed Purchase Orders" +msgstr "" + +#: common/models.py:1872 +msgid "Allow editing of purchase orders after they have been shipped or completed" +msgstr "" + +#: common/models.py:1878 +msgid "Auto Complete Purchase Orders" +msgstr "" + +#: common/models.py:1880 +msgid "Automatically mark purchase orders as complete when all line items are received" +msgstr "" + +#: common/models.py:1887 +msgid "Enable password forgot" +msgstr "" + +#: common/models.py:1888 +msgid "Enable password forgot function on the login pages" +msgstr "" + +#: common/models.py:1893 +msgid "Enable registration" +msgstr "" + +#: common/models.py:1894 +msgid "Enable self-registration for users on the login pages" +msgstr "" + +#: common/models.py:1899 +msgid "Enable SSO" +msgstr "" + +#: common/models.py:1900 +msgid "Enable SSO on the login pages" +msgstr "" + +#: common/models.py:1905 +msgid "Enable SSO registration" +msgstr "" + +#: common/models.py:1907 +msgid "Enable self-registration via SSO for users on the login pages" +msgstr "" + +#: common/models.py:1913 +msgid "Email required" +msgstr "" + +#: common/models.py:1914 +msgid "Require user to supply mail on signup" +msgstr "" + +#: common/models.py:1919 +msgid "Auto-fill SSO users" +msgstr "" + +#: common/models.py:1921 +msgid "Automatically fill out user-details from SSO account-data" +msgstr "" + +#: common/models.py:1927 +msgid "Mail twice" +msgstr "" + +#: common/models.py:1928 +msgid "On signup ask users twice for their mail" +msgstr "" + +#: common/models.py:1933 +msgid "Password twice" +msgstr "" + +#: common/models.py:1934 +msgid "On signup ask users twice for their password" +msgstr "" + +#: common/models.py:1939 +msgid "Allowed domains" +msgstr "" + +#: common/models.py:1941 +msgid "Restrict signup to certain domains (comma-separated, starting with @)" +msgstr "" + +#: common/models.py:1947 +msgid "Group on signup" +msgstr "" + +#: common/models.py:1948 +msgid "Group to which new users are assigned on registration" +msgstr "" + +#: common/models.py:1953 +msgid "Enforce MFA" +msgstr "" + +#: common/models.py:1954 +msgid "Users must use multifactor security." +msgstr "" + +#: common/models.py:1959 +msgid "Check plugins on startup" +msgstr "" + +#: common/models.py:1961 +msgid "Check that all plugins are installed on startup - enable in container environments" +msgstr "" + +#: common/models.py:1969 +msgid "Check for plugin updates" +msgstr "" + +#: common/models.py:1970 +msgid "Enable periodic checks for updates to installed plugins" +msgstr "" + +#: common/models.py:1976 +msgid "Enable URL integration" +msgstr "" + +#: common/models.py:1977 +msgid "Enable plugins to add URL routes" +msgstr "" + +#: common/models.py:1983 +msgid "Enable navigation integration" +msgstr "" + +#: common/models.py:1984 +msgid "Enable plugins to integrate into navigation" +msgstr "" + +#: common/models.py:1990 +msgid "Enable app integration" +msgstr "" + +#: common/models.py:1991 +msgid "Enable plugins to add apps" +msgstr "" + +#: common/models.py:1997 +msgid "Enable schedule integration" +msgstr "" + +#: common/models.py:1998 +msgid "Enable plugins to run scheduled tasks" +msgstr "" + +#: common/models.py:2004 +msgid "Enable event integration" +msgstr "" + +#: common/models.py:2005 +msgid "Enable plugins to respond to internal events" +msgstr "" + +#: common/models.py:2011 +msgid "Enable project codes" +msgstr "" + +#: common/models.py:2012 +msgid "Enable project codes for tracking projects" +msgstr "" + +#: common/models.py:2017 +msgid "Stocktake Functionality" +msgstr "" + +#: common/models.py:2019 +msgid "Enable stocktake functionality for recording stock levels and calculating stock value" +msgstr "" + +#: common/models.py:2025 +msgid "Exclude External Locations" +msgstr "" + +#: common/models.py:2027 +msgid "Exclude stock items in external locations from stocktake calculations" +msgstr "" + +#: common/models.py:2033 +msgid "Automatic Stocktake Period" +msgstr "" + +#: common/models.py:2035 +msgid "Number of days between automatic stocktake recording (set to zero to disable)" +msgstr "" + +#: common/models.py:2041 +msgid "Report Deletion Interval" +msgstr "" + +#: common/models.py:2043 +msgid "Stocktake reports will be deleted after specified number of days" +msgstr "" + +#: common/models.py:2050 +msgid "Display Users full names" +msgstr "" + +#: common/models.py:2051 +msgid "Display Users full names instead of usernames" +msgstr "" + +#: common/models.py:2056 +msgid "Enable Test Station Data" +msgstr "" + +#: common/models.py:2057 +msgid "Enable test station data collection for test results" +msgstr "" + +#: common/models.py:2069 common/models.py:2479 +msgid "Settings key (must be unique - case insensitive" +msgstr "" + +#: common/models.py:2112 +msgid "Hide inactive parts" +msgstr "" + +#: common/models.py:2114 +msgid "Hide inactive parts in results displayed on the homepage" +msgstr "" + +#: common/models.py:2120 +msgid "Show subscribed parts" +msgstr "" + +#: common/models.py:2121 +msgid "Show subscribed parts on the homepage" +msgstr "" + +#: common/models.py:2126 +msgid "Show subscribed categories" +msgstr "" + +#: common/models.py:2127 +msgid "Show subscribed part categories on the homepage" +msgstr "" + +#: common/models.py:2132 +msgid "Show latest parts" +msgstr "" + +#: common/models.py:2133 +msgid "Show latest parts on the homepage" +msgstr "" + +#: common/models.py:2138 +msgid "Show invalid BOMs" +msgstr "" + +#: common/models.py:2139 +msgid "Show BOMs that await validation on the homepage" +msgstr "" + +#: common/models.py:2144 +msgid "Show recent stock changes" +msgstr "" + +#: common/models.py:2145 +msgid "Show recently changed stock items on the homepage" +msgstr "" + +#: common/models.py:2150 +msgid "Show low stock" +msgstr "" + +#: common/models.py:2151 +msgid "Show low stock items on the homepage" +msgstr "" + +#: common/models.py:2156 +msgid "Show depleted stock" +msgstr "" + +#: common/models.py:2157 +msgid "Show depleted stock items on the homepage" +msgstr "" + +#: common/models.py:2162 +msgid "Show needed stock" +msgstr "" + +#: common/models.py:2163 +msgid "Show stock items needed for builds on the homepage" +msgstr "" + +#: common/models.py:2168 +msgid "Show expired stock" +msgstr "" + +#: common/models.py:2169 +msgid "Show expired stock items on the homepage" +msgstr "" + +#: common/models.py:2174 +msgid "Show stale stock" +msgstr "" + +#: common/models.py:2175 +msgid "Show stale stock items on the homepage" +msgstr "" + +#: common/models.py:2180 +msgid "Show pending builds" +msgstr "" + +#: common/models.py:2181 +msgid "Show pending builds on the homepage" +msgstr "" + +#: common/models.py:2186 +msgid "Show overdue builds" +msgstr "" + +#: common/models.py:2187 +msgid "Show overdue builds on the homepage" +msgstr "" + +#: common/models.py:2192 +msgid "Show outstanding POs" +msgstr "" + +#: common/models.py:2193 +msgid "Show outstanding POs on the homepage" +msgstr "" + +#: common/models.py:2198 +msgid "Show overdue POs" +msgstr "" + +#: common/models.py:2199 +msgid "Show overdue POs on the homepage" +msgstr "" + +#: common/models.py:2204 +msgid "Show outstanding SOs" +msgstr "" + +#: common/models.py:2205 +msgid "Show outstanding SOs on the homepage" +msgstr "" + +#: common/models.py:2210 +msgid "Show overdue SOs" +msgstr "" + +#: common/models.py:2211 +msgid "Show overdue SOs on the homepage" +msgstr "" + +#: common/models.py:2216 +msgid "Show pending SO shipments" +msgstr "" + +#: common/models.py:2217 +msgid "Show pending SO shipments on the homepage" +msgstr "" + +#: common/models.py:2222 +msgid "Show News" +msgstr "" + +#: common/models.py:2223 +msgid "Show news on the homepage" +msgstr "" + +#: common/models.py:2228 +msgid "Inline label display" +msgstr "" + +#: common/models.py:2230 +msgid "Display PDF labels in the browser, instead of downloading as a file" +msgstr "" + +#: common/models.py:2236 +msgid "Default label printer" +msgstr "" + +#: common/models.py:2238 +msgid "Configure which label printer should be selected by default" +msgstr "" + +#: common/models.py:2244 +msgid "Inline report display" +msgstr "" + +#: common/models.py:2246 +msgid "Display PDF reports in the browser, instead of downloading as a file" +msgstr "" + +#: common/models.py:2252 +msgid "Search Parts" +msgstr "" + +#: common/models.py:2253 +msgid "Display parts in search preview window" +msgstr "" + +#: common/models.py:2258 +msgid "Search Supplier Parts" +msgstr "" + +#: common/models.py:2259 +msgid "Display supplier parts in search preview window" +msgstr "" + +#: common/models.py:2264 +msgid "Search Manufacturer Parts" +msgstr "" + +#: common/models.py:2265 +msgid "Display manufacturer parts in search preview window" +msgstr "" + +#: common/models.py:2270 +msgid "Hide Inactive Parts" +msgstr "" + +#: common/models.py:2271 +msgid "Excluded inactive parts from search preview window" +msgstr "" + +#: common/models.py:2276 +msgid "Search Categories" +msgstr "" + +#: common/models.py:2277 +msgid "Display part categories in search preview window" +msgstr "" + +#: common/models.py:2282 +msgid "Search Stock" +msgstr "" + +#: common/models.py:2283 +msgid "Display stock items in search preview window" +msgstr "" + +#: common/models.py:2288 +msgid "Hide Unavailable Stock Items" +msgstr "" + +#: common/models.py:2290 +msgid "Exclude stock items which are not available from the search preview window" +msgstr "" + +#: common/models.py:2296 +msgid "Search Locations" +msgstr "" + +#: common/models.py:2297 +msgid "Display stock locations in search preview window" +msgstr "" + +#: common/models.py:2302 +msgid "Search Companies" +msgstr "" + +#: common/models.py:2303 +msgid "Display companies in search preview window" +msgstr "" + +#: common/models.py:2308 +msgid "Search Build Orders" +msgstr "" + +#: common/models.py:2309 +msgid "Display build orders in search preview window" +msgstr "" + +#: common/models.py:2314 +msgid "Search Purchase Orders" +msgstr "" + +#: common/models.py:2315 +msgid "Display purchase orders in search preview window" +msgstr "" + +#: common/models.py:2320 +msgid "Exclude Inactive Purchase Orders" +msgstr "" + +#: common/models.py:2322 +msgid "Exclude inactive purchase orders from search preview window" +msgstr "" + +#: common/models.py:2328 +msgid "Search Sales Orders" +msgstr "" + +#: common/models.py:2329 +msgid "Display sales orders in search preview window" +msgstr "" + +#: common/models.py:2334 +msgid "Exclude Inactive Sales Orders" +msgstr "" + +#: common/models.py:2336 +msgid "Exclude inactive sales orders from search preview window" +msgstr "" + +#: common/models.py:2342 +msgid "Search Return Orders" +msgstr "" + +#: common/models.py:2343 +msgid "Display return orders in search preview window" +msgstr "" + +#: common/models.py:2348 +msgid "Exclude Inactive Return Orders" +msgstr "" + +#: common/models.py:2350 +msgid "Exclude inactive return orders from search preview window" +msgstr "" + +#: common/models.py:2356 +msgid "Search Preview Results" +msgstr "" + +#: common/models.py:2358 +msgid "Number of results to show in each section of the search preview window" +msgstr "" + +#: common/models.py:2364 +msgid "Regex Search" +msgstr "" + +#: common/models.py:2365 +msgid "Enable regular expressions in search queries" +msgstr "" + +#: common/models.py:2370 +msgid "Whole Word Search" +msgstr "" + +#: common/models.py:2371 +msgid "Search queries return results for whole word matches" +msgstr "" + +#: common/models.py:2376 +msgid "Show Quantity in Forms" +msgstr "" + +#: common/models.py:2377 +msgid "Display available part quantity in some forms" +msgstr "" + +#: common/models.py:2382 +msgid "Escape Key Closes Forms" +msgstr "" + +#: common/models.py:2383 +msgid "Use the escape key to close modal forms" +msgstr "" + +#: common/models.py:2388 +msgid "Fixed Navbar" +msgstr "" + +#: common/models.py:2389 +msgid "The navbar position is fixed to the top of the screen" +msgstr "" + +#: common/models.py:2394 +msgid "Date Format" +msgstr "" + +#: common/models.py:2395 +msgid "Preferred format for displaying dates" +msgstr "" + +#: common/models.py:2408 part/templates/part/detail.html:41 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:2409 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:2414 part/templates/part/detail.html:62 +msgid "Part Stocktake" +msgstr "" + +#: common/models.py:2416 +msgid "Display part stocktake information (if stocktake functionality is enabled)" +msgstr "" + +#: common/models.py:2422 +msgid "Table String Length" +msgstr "" + +#: common/models.py:2424 +msgid "Maximum length limit for strings displayed in table views" +msgstr "" + +#: common/models.py:2430 +msgid "Default part label template" +msgstr "" + +#: common/models.py:2431 +msgid "The part label template to be automatically selected" +msgstr "" + +#: common/models.py:2436 +msgid "Default stock item template" +msgstr "" + +#: common/models.py:2438 +msgid "The stock item label template to be automatically selected" +msgstr "" + +#: common/models.py:2444 +msgid "Default stock location label template" +msgstr "" + +#: common/models.py:2446 +msgid "The stock location label template to be automatically selected" +msgstr "" + +#: common/models.py:2452 +msgid "Default build line label template" +msgstr "" + +#: common/models.py:2454 +msgid "The build line label template to be automatically selected" +msgstr "" + +#: common/models.py:2460 +msgid "Receive error reports" +msgstr "" + +#: common/models.py:2461 +msgid "Receive notifications for system errors" +msgstr "" + +#: common/models.py:2466 +msgid "Last used printing machines" +msgstr "" + +#: common/models.py:2467 +msgid "Save the last used printing machines for a user" +msgstr "" + +#: common/models.py:2487 common/models.py:2488 common/models.py:2636 +#: common/models.py:2637 common/models.py:2882 common/models.py:2883 +#: common/models.py:3193 common/models.py:3194 part/models.py:3193 +#: part/models.py:3280 part/models.py:3353 part/models.py:3381 +#: plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "" + +#: common/models.py:2510 +msgid "Price break quantity" +msgstr "" + +#: common/models.py:2517 company/serializers.py:472 order/admin.py:42 +#: order/models.py:1346 order/models.py:2265 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1886 +#: templates/js/translated/pricing.js:621 +#: templates/js/translated/return_order.js:740 +msgid "Price" +msgstr "" + +#: common/models.py:2518 +msgid "Unit price at specified quantity" +msgstr "" + +#: common/models.py:2613 common/models.py:2798 +msgid "Endpoint" +msgstr "" + +#: common/models.py:2614 +msgid "Endpoint at which this webhook is received" +msgstr "" + +#: common/models.py:2624 +msgid "Name for this webhook" +msgstr "" + +#: common/models.py:2628 company/models.py:163 company/models.py:782 +#: machine/models.py:39 part/admin.py:88 part/models.py:1081 +#: plugin/models.py:66 templates/js/translated/company.js:523 +#: templates/js/translated/table_filters.js:135 +#: templates/js/translated/table_filters.js:219 +#: templates/js/translated/table_filters.js:492 +#: templates/js/translated/table_filters.js:520 +#: templates/js/translated/table_filters.js:716 +#: templates/js/translated/table_filters.js:796 users/models.py:182 +msgid "Active" +msgstr "" + +#: common/models.py:2628 +msgid "Is this webhook active" +msgstr "" + +#: common/models.py:2644 users/models.py:159 +msgid "Token" +msgstr "" + +#: common/models.py:2645 +msgid "Token for access" +msgstr "" + +#: common/models.py:2653 +msgid "Secret" +msgstr "" + +#: common/models.py:2654 +msgid "Shared secret for HMAC" +msgstr "" + +#: common/models.py:2762 +msgid "Message ID" +msgstr "" + +#: common/models.py:2763 +msgid "Unique identifier for this message" +msgstr "" + +#: common/models.py:2771 +msgid "Host" +msgstr "" + +#: common/models.py:2772 +msgid "Host from which this message was received" +msgstr "" + +#: common/models.py:2780 +msgid "Header" +msgstr "" + +#: common/models.py:2781 +msgid "Header of this message" +msgstr "" + +#: common/models.py:2788 +msgid "Body" +msgstr "" + +#: common/models.py:2789 +msgid "Body of this message" +msgstr "" + +#: common/models.py:2799 +msgid "Endpoint on which this message was received" +msgstr "" + +#: common/models.py:2804 +msgid "Worked on" +msgstr "" + +#: common/models.py:2805 +msgid "Was the work on this message finished?" +msgstr "" + +#: common/models.py:2931 +msgid "Id" +msgstr "" + +#: common/models.py:2933 templates/js/translated/company.js:965 +#: templates/js/translated/news.js:44 +msgid "Title" +msgstr "" + +#: common/models.py:2935 common/models.py:3177 company/models.py:149 +#: company/models.py:440 company/models.py:500 company/models.py:799 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +#: part/admin.py:55 part/models.py:955 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "" + +#: common/models.py:2937 templates/js/translated/news.js:60 +msgid "Published" +msgstr "" + +#: common/models.py:2939 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:2941 templates/js/translated/news.js:52 +msgid "Summary" +msgstr "" + +#: common/models.py:2944 +msgid "Read" +msgstr "" + +#: common/models.py:2944 +msgid "Was this news item read?" +msgstr "" + +#: common/models.py:2961 company/models.py:159 part/models.py:965 +#: 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.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:2961 +msgid "Image file" +msgstr "" + +#: common/models.py:2973 common/models.py:3161 +msgid "Target model type for this image" +msgstr "" + +#: common/models.py:2977 +msgid "Target model ID for this image" +msgstr "" + +#: common/models.py:3018 +msgid "Unit name must be a valid identifier" +msgstr "" + +#: common/models.py:3037 +msgid "Unit name" +msgstr "" + +#: common/models.py:3044 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "" + +#: common/models.py:3045 +msgid "Optional unit symbol" +msgstr "" + +#: common/models.py:3052 templates/InvenTree/settings/settings_staff_js.html:71 +msgid "Definition" +msgstr "" + +#: common/models.py:3053 +msgid "Unit definition" +msgstr "" + +#: common/models.py:3111 common/models.py:3168 stock/models.py:2426 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "" + +#: common/models.py:3123 +msgid "Missing file" +msgstr "" + +#: common/models.py:3124 +msgid "Missing external link" +msgstr "" + +#: common/models.py:3169 +msgid "Select file to attach" +msgstr "" + +#: common/models.py:3184 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "" + +#: common/models.py:3185 +msgid "Attachment comment" +msgstr "" + +#: common/models.py:3201 +msgid "Upload date" +msgstr "" + +#: common/models.py:3202 +msgid "Date the file was uploaded" +msgstr "" + +#: common/models.py:3206 +msgid "File size" +msgstr "" + +#: common/models.py:3206 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3244 common/serializers.py:553 +msgid "Invalid model type specified for attachment" +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 order/api.py:472 +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:371 +msgid "Is Running" +msgstr "" + +#: common/serializers.py:377 +msgid "Pending Tasks" +msgstr "" + +#: common/serializers.py:383 +msgid "Scheduled Tasks" +msgstr "" + +#: common/serializers.py:389 +msgid "Failed Tasks" +msgstr "" + +#: common/serializers.py:404 +msgid "Task ID" +msgstr "" + +#: common/serializers.py:404 +msgid "Unique task ID" +msgstr "" + +#: common/serializers.py:406 +msgid "Lock" +msgstr "" + +#: common/serializers.py:406 +msgid "Lock time" +msgstr "" + +#: common/serializers.py:408 +msgid "Task name" +msgstr "" + +#: common/serializers.py:410 +msgid "Function" +msgstr "" + +#: common/serializers.py:410 +msgid "Function name" +msgstr "" + +#: common/serializers.py:412 +msgid "Arguments" +msgstr "" + +#: common/serializers.py:412 +msgid "Task arguments" +msgstr "" + +#: common/serializers.py:415 +msgid "Keyword Arguments" +msgstr "" + +#: common/serializers.py:415 +msgid "Task keyword arguments" +msgstr "" + +#: common/serializers.py:525 +msgid "Filename" +msgstr "" + +#: common/serializers.py:532 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: common/serializers.py:559 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "" + +#: common/validators.py:33 +msgid "No attachment model type provided" +msgstr "" + +#: common/validators.py:39 +msgid "Invalid attachment model type" +msgstr "" + +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "" + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +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/api.py:144 +msgid "Part is Active" +msgstr "" + +#: company/api.py:148 +msgid "Manufacturer is Active" +msgstr "" + +#: company/api.py:281 +msgid "Supplier Part is Active" +msgstr "" + +#: company/api.py:285 +msgid "Internal Part is Active" +msgstr "" + +#: company/api.py:289 +msgid "Supplier is Active" +msgstr "" + +#: company/models.py:100 company/models.py:365 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:822 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "" + +#: company/models.py:117 +msgid "Company description" +msgstr "" + +#: company/models.py:118 +msgid "Description of the company" +msgstr "" + +#: company/models.py:123 company/templates/company/company_base.html:106 +#: templates/InvenTree/settings/plugin_settings.html:54 +#: templates/js/translated/company.js:532 +msgid "Website" +msgstr "" + +#: company/models.py:123 +msgid "Company website URL" +msgstr "" + +#: company/models.py:128 +msgid "Phone number" +msgstr "" + +#: company/models.py:130 +msgid "Contact phone number" +msgstr "" + +#: company/models.py:137 +msgid "Contact email address" +msgstr "" + +#: company/models.py:142 company/templates/company/company_base.html:145 +#: order/models.py:343 order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:218 +msgid "Contact" +msgstr "" + +#: company/models.py:144 +msgid "Point of contact" +msgstr "" + +#: company/models.py:150 +msgid "Link to external company information" +msgstr "" + +#: company/models.py:163 +msgid "Is this company active?" +msgstr "" + +#: company/models.py:168 +msgid "is customer" +msgstr "" + +#: company/models.py:169 +msgid "Do you sell items to this company?" +msgstr "" + +#: company/models.py:174 +msgid "is supplier" +msgstr "" + +#: company/models.py:175 +msgid "Do you purchase items from this company?" +msgstr "" + +#: company/models.py:180 +msgid "is manufacturer" +msgstr "" + +#: company/models.py:181 +msgid "Does this company manufacture parts?" +msgstr "" + +#: company/models.py:189 +msgid "Default currency used for this company" +msgstr "" + +#: company/models.py:366 +msgid "Select company" +msgstr "" + +#: company/models.py:371 +msgid "Address title" +msgstr "" + +#: company/models.py:372 +msgid "Title describing the address entry" +msgstr "" + +#: company/models.py:378 +msgid "Primary address" +msgstr "" + +#: company/models.py:379 +msgid "Set as primary address" +msgstr "" + +#: company/models.py:384 templates/js/translated/company.js:914 +#: templates/js/translated/company.js:971 +msgid "Line 1" +msgstr "" + +#: company/models.py:385 +msgid "Address line 1" +msgstr "" + +#: company/models.py:391 templates/js/translated/company.js:915 +#: templates/js/translated/company.js:977 +msgid "Line 2" +msgstr "" + +#: company/models.py:392 +msgid "Address line 2" +msgstr "" + +#: company/models.py:398 company/models.py:399 +#: templates/js/translated/company.js:983 +msgid "Postal code" +msgstr "" + +#: company/models.py:405 +msgid "City/Region" +msgstr "" + +#: company/models.py:406 +msgid "Postal code city/region" +msgstr "" + +#: company/models.py:412 +msgid "State/Province" +msgstr "" + +#: company/models.py:413 +msgid "State or province" +msgstr "" + +#: company/models.py:419 templates/js/translated/company.js:1001 +msgid "Country" +msgstr "" + +#: company/models.py:420 +msgid "Address country" +msgstr "" + +#: company/models.py:426 +msgid "Courier shipping notes" +msgstr "" + +#: company/models.py:427 +msgid "Notes for shipping courier" +msgstr "" + +#: company/models.py:433 +msgid "Internal shipping notes" +msgstr "" + +#: company/models.py:434 +msgid "Shipping notes for internal use" +msgstr "" + +#: company/models.py:441 +msgid "Link to address information (external)" +msgstr "" + +#: company/models.py:463 company/models.py:574 company/models.py:792 +#: 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:475 company/models.py:760 stock/models.py:766 +#: stock/serializers.py:422 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 +msgid "Base Part" +msgstr "" + +#: company/models.py:477 company/models.py:762 +msgid "Select part" +msgstr "" + +#: company/models.py:486 company/templates/company/company_base.html:82 +#: company/templates/company/manufacturer_part.html:90 +#: company/templates/company/supplier_part.html:145 part/serializers.py:525 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:507 +#: templates/js/translated/company.js:1118 +#: templates/js/translated/company.js:1296 +#: templates/js/translated/company.js:1611 +#: templates/js/translated/table_filters.js:800 +msgid "Manufacturer" +msgstr "" + +#: company/models.py:487 +msgid "Select manufacturer" +msgstr "" + +#: company/models.py:493 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:535 +#: templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1117 +#: templates/js/translated/company.js:1312 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1801 +#: templates/js/translated/purchase_order.js:1851 +#: templates/js/translated/purchase_order.js:2053 +msgid "MPN" +msgstr "" + +#: company/models.py:494 +msgid "Manufacturer Part Number" +msgstr "" + +#: company/models.py:501 +msgid "URL for external manufacturer part link" +msgstr "" + +#: company/models.py:510 +msgid "Manufacturer part description" +msgstr "" + +#: company/models.py:581 +msgid "Parameter name" +msgstr "" + +#: company/models.py:587 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2418 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1493 +#: templates/js/translated/stock.js:1522 +msgid "Value" +msgstr "" + +#: company/models.py:588 +msgid "Parameter value" +msgstr "" + +#: company/models.py:595 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1045 part/models.py:3646 +#: part/templates/part/part_base.html:284 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1512 +#: templates/js/translated/part.js:1616 templates/js/translated/part.js:2370 +msgid "Units" +msgstr "" + +#: company/models.py:596 +msgid "Parameter units" +msgstr "" + +#: company/models.py:648 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:777 stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "" + +#: company/models.py:700 +msgid "Pack units must be compatible with the base part units" +msgstr "" + +#: company/models.py:707 +msgid "Pack units must be greater than zero" +msgstr "" + +#: company/models.py:721 +msgid "Linked manufacturer part must reference the same base part" +msgstr "" + +#: company/models.py:770 company/templates/company/company_base.html:87 +#: company/templates/company/supplier_part.html:129 order/models.py:486 +#: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 +#: part/serializers.py:509 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:511 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1769 +#: templates/js/translated/pricing.js:498 +#: templates/js/translated/purchase_order.js:1689 +#: templates/js/translated/table_filters.js:804 +msgid "Supplier" +msgstr "" + +#: company/models.py:771 +msgid "Select supplier" +msgstr "" + +#: company/models.py:777 part/serializers.py:520 +msgid "Supplier stock keeping unit" +msgstr "" + +#: company/models.py:783 +msgid "Is this supplier part active?" +msgstr "" + +#: company/models.py:793 +msgid "Select manufacturer part" +msgstr "" + +#: company/models.py:800 +msgid "URL for external supplier part link" +msgstr "" + +#: company/models.py:809 +msgid "Supplier part description" +msgstr "" + +#: company/models.py:816 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4093 part/templates/part/upload_bom.html:59 +#: report/templates/report/inventree_bill_of_materials_report.html:140 +#: report/templates/report/inventree_purchase_order_report.html:32 +#: report/templates/report/inventree_return_order_report.html:27 +#: report/templates/report/inventree_sales_order_report.html:32 +#: report/templates/report/inventree_stock_location_report.html:105 +#: stock/serializers.py:710 +msgid "Note" +msgstr "" + +#: company/models.py:825 part/models.py:2003 +msgid "base cost" +msgstr "" + +#: company/models.py:826 part/models.py:2004 +msgid "Minimum charge (e.g. stocking fee)" +msgstr "" + +#: company/models.py:833 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:797 stock/serializers.py:1475 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1646 +#: templates/js/translated/stock.js:2424 +msgid "Packaging" +msgstr "" + +#: company/models.py:834 +msgid "Part packaging" +msgstr "" + +#: company/models.py:839 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 +#: templates/js/translated/purchase_order.js:311 +#: templates/js/translated/purchase_order.js:841 +#: templates/js/translated/purchase_order.js:1103 +#: templates/js/translated/purchase_order.js:2084 +#: templates/js/translated/purchase_order.js:2101 +msgid "Pack Quantity" +msgstr "" + +#: company/models.py:841 +msgid "Total quantity supplied in a single pack. Leave empty for single items." +msgstr "" + +#: company/models.py:860 part/models.py:2010 +msgid "multiple" +msgstr "" + +#: company/models.py:861 +msgid "Order multiple" +msgstr "" + +#: company/models.py:873 +msgid "Quantity available from supplier" +msgstr "" + +#: company/models.py:879 +msgid "Availability Updated" +msgstr "" + +#: company/models.py:880 +msgid "Date of last update of availability data" +msgstr "" + +#: company/serializers.py:161 +msgid "Default currency used for this supplier" +msgstr "" + +#: company/serializers.py:357 part/admin.py:126 +#: part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1689 +#: templates/js/translated/table_filters.js:355 +msgid "In Stock" +msgstr "" + +#: company/templates/company/company_base.html:16 +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1287 +#: templates/js/translated/company.js:1575 +#: templates/js/translated/model_renderers.js:312 +#: templates/js/translated/part.js:815 templates/js/translated/part.js:1219 +msgid "Inactive" +msgstr "" + +#: company/templates/company/company_base.html:27 +#: templates/js/translated/purchase_order.js:242 +msgid "Create Purchase Order" +msgstr "" + +#: company/templates/company/company_base.html:33 +msgid "Company actions" +msgstr "" + +#: company/templates/company/company_base.html:38 +msgid "Edit company information" +msgstr "" + +#: company/templates/company/company_base.html:39 +#: templates/js/translated/company.js:445 +msgid "Edit Company" +msgstr "" + +#: company/templates/company/company_base.html:43 +msgid "Delete company" +msgstr "" + +#: company/templates/company/company_base.html:44 +#: company/templates/company/company_base.html:168 +msgid "Delete Company" +msgstr "" + +#: company/templates/company/company_base.html:53 +#: 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_report.html:98 +#: report/templates/report/inventree_purchase_order_report.html:40 +#: report/templates/report/inventree_sales_order_report.html:40 +#: report/templates/report/inventree_test_report.html:84 +#: report/templates/report/inventree_test_report.html:162 +msgid "Part image" +msgstr "" + +#: company/templates/company/company_base.html:61 +#: part/templates/part/part_thumb.html:12 +msgid "Upload new image" +msgstr "" + +#: company/templates/company/company_base.html:64 +#: part/templates/part/part_thumb.html:14 +msgid "Download image from URL" +msgstr "" + +#: company/templates/company/company_base.html:66 +#: part/templates/part/part_thumb.html:16 +msgid "Delete image" +msgstr "" + +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2032 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:819 +#: stock/models.py:820 stock/serializers.py:1225 +#: stock/templates/stock/item_base.html:405 +#: templates/email/overdue_sales_order.html:16 +#: templates/js/translated/company.js:503 +#: templates/js/translated/return_order.js:295 +#: templates/js/translated/sales_order.js:820 +#: templates/js/translated/stock.js:2959 +#: templates/js/translated/table_filters.js:808 +msgid "Customer" +msgstr "" + +#: company/templates/company/company_base.html:117 +msgid "Uses default currency" +msgstr "" + +#: company/templates/company/company_base.html:124 order/models.py:353 +#: order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:225 +msgid "Address" +msgstr "" + +#: company/templates/company/company_base.html:131 +msgid "Phone" +msgstr "" + +#: company/templates/company/company_base.html:211 +#: part/templates/part/part_base.html:527 +msgid "Remove Image" +msgstr "" + +#: company/templates/company/company_base.html:212 +msgid "Remove associated image from this company" +msgstr "" + +#: company/templates/company/company_base.html:214 +#: part/templates/part/part_base.html:530 +#: templates/InvenTree/settings/user.html:88 +#: templates/InvenTree/settings/user_sso.html:43 +msgid "Remove" +msgstr "" + +#: company/templates/company/company_base.html:243 +#: part/templates/part/part_base.html:559 +msgid "Upload Image" +msgstr "" + +#: company/templates/company/company_base.html:258 +#: part/templates/part/part_base.html:613 +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:208 +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:209 +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:210 +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:1343 +msgid "Edit manufacturer part" +msgstr "" + +#: company/templates/company/manufacturer_part.html:43 +#: templates/js/translated/company.js:1344 +msgid "Delete manufacturer part" +msgstr "" + +#: company/templates/company/manufacturer_part.html:65 +#: company/templates/company/supplier_part.html:97 order/api.py:458 +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/serializers.py:832 +#: 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:196 +#: templates/js/translated/part.js:1423 +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:50 +#: templates/js/translated/company.js:1526 +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:519 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1787 +#: templates/js/translated/pricing.js:510 +#: templates/js/translated/purchase_order.js:1850 +#: templates/js/translated/purchase_order.js:2028 +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:207 +msgid "Create new stock item" +msgstr "" + +#: company/templates/company/supplier_part.html:210 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 +#: 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/serializers.py:831 part/stocktake.py:224 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:918 stock/serializers.py:1091 +#: stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:191 +#: stock/templates/stock/location.html:203 +#: stock/templates/stock/location_sidebar.html:7 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1061 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 +#: users/models.py:206 +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:52 +msgid "New Company" +msgstr "" + +#: generic/states/tests.py:18 order/status_codes.py:13 +msgid "Placed" +msgstr "" + +#: machine/machine_types/label_printer.py:218 +msgid "Copies" +msgstr "" + +#: machine/machine_types/label_printer.py:219 +msgid "Number of copies to print for each label" +msgstr "" + +#: machine/machine_types/label_printer.py:234 +msgid "Connected" +msgstr "" + +#: machine/machine_types/label_printer.py:235 order/api.py:1467 +#: templates/js/translated/sales_order.js:1078 +msgid "Unknown" +msgstr "" + +#: machine/machine_types/label_printer.py:236 +msgid "Printing" +msgstr "" + +#: machine/machine_types/label_printer.py:237 +msgid "No media" +msgstr "" + +#: machine/machine_types/label_printer.py:238 +msgid "Disconnected" +msgstr "" + +#: machine/machine_types/label_printer.py:245 +msgid "Label Printer" +msgstr "" + +#: machine/machine_types/label_printer.py:246 +msgid "Directly print labels for various items." +msgstr "" + +#: machine/machine_types/label_printer.py:252 +msgid "Printer Location" +msgstr "" + +#: machine/machine_types/label_printer.py:253 +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:90 +#: report/templates/report/inventree_purchase_order_report.html:31 +#: report/templates/report/inventree_sales_order_report.html:31 +#: templates/js/translated/order.js:327 +#: templates/js/translated/purchase_order.js:2125 +#: templates/js/translated/sales_order.js:1883 +msgid "Total Price" +msgstr "" + +#: order/api.py:157 order/serializers.py:90 +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:122 +msgid "Order Status" +msgstr "" + +#: order/api.py:161 templates/js/translated/table_filters.js:194 +#: templates/js/translated/table_filters.js:779 +msgid "Has Pricing" +msgstr "" + +#: order/api.py:236 +msgid "No matching purchase order found" +msgstr "" + +#: order/api.py:435 order/api.py:801 order/models.py:1395 order/models.py:1504 +#: order/models.py:1550 order/models.py:1664 order/models.py:1818 +#: order/models.py:2231 order/models.py:2282 +#: templates/js/translated/sales_order.js:1524 +msgid "Order" +msgstr "" + +#: order/api.py:439 order/api.py:822 +msgid "Order Complete" +msgstr "" + +#: order/api.py:462 +msgid "Order Pending" +msgstr "" + +#: order/api.py:1461 order/models.py:380 order/models.py:1396 +#: order/models.py:1505 order/templates/order/order_base.html:9 +#: order/templates/order/order_base.html:18 +#: report/templates/report/inventree_purchase_order_report.html:14 +#: stock/serializers.py:118 stock/templates/stock/item_base.html:176 +#: templates/email/overdue_purchase_order.html:15 +#: templates/js/translated/part.js:1746 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:168 +#: templates/js/translated/purchase_order.js:753 +#: templates/js/translated/purchase_order.js:1673 +#: templates/js/translated/stock.js:2260 templates/js/translated/stock.js:2907 +msgid "Purchase Order" +msgstr "" + +#: order/api.py:1465 order/models.py:1981 order/models.py:2232 +#: order/models.py:2283 order/templates/order/return_order_base.html:9 +#: order/templates/order/return_order_base.html:28 +#: report/templates/report/inventree_return_order_report.html:13 +#: templates/js/translated/return_order.js:280 +#: templates/js/translated/stock.js:2941 +msgid "Return Order" +msgstr "" + +#: order/models.py:91 +msgid "Total price for this order" +msgstr "" + +#: order/models.py:96 order/serializers.py:70 +msgid "Order Currency" +msgstr "" + +#: order/models.py:99 order/serializers.py:71 +msgid "Currency for this order (leave blank to use company default)" +msgstr "" + +#: order/models.py:247 +msgid "Contact does not match selected company" +msgstr "" + +#: order/models.py:290 +msgid "Order description (optional)" +msgstr "" + +#: order/models.py:299 +msgid "Select project code for this order" +msgstr "" + +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +msgid "Link to external page" +msgstr "" + +#: order/models.py:311 +msgid "Expected date for order delivery. Order will be overdue after this date." +msgstr "" + +#: order/models.py:325 +msgid "Created By" +msgstr "" + +#: order/models.py:333 +msgid "User or group responsible for this order" +msgstr "" + +#: order/models.py:344 +msgid "Point of contact for this order" +msgstr "" + +#: order/models.py:354 +msgid "Company address for this order" +msgstr "" + +#: order/models.py:464 order/models.py:927 +msgid "Order reference" +msgstr "" + +#: order/models.py:472 order/models.py:951 +msgid "Purchase order status" +msgstr "" + +#: order/models.py:487 +msgid "Company from which the items are being ordered" +msgstr "" + +#: order/models.py:498 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1702 +msgid "Supplier Reference" +msgstr "" + +#: order/models.py:499 +msgid "Supplier order reference code" +msgstr "" + +#: order/models.py:508 +msgid "received by" +msgstr "" + +#: order/models.py:514 order/models.py:2058 +msgid "Issue Date" +msgstr "" + +#: order/models.py:515 order/models.py:2059 +msgid "Date order was issued" +msgstr "" + +#: order/models.py:522 order/models.py:2066 +msgid "Date order was completed" +msgstr "" + +#: order/models.py:566 +msgid "Part supplier must match PO supplier" +msgstr "" + +#: order/models.py:760 +msgid "Quantity must be a positive number" +msgstr "" + +#: order/models.py:939 +msgid "Company to which the items are being sold" +msgstr "" + +#: order/models.py:962 order/models.py:2051 +msgid "Customer Reference " +msgstr "" + +#: order/models.py:963 order/models.py:2052 +msgid "Customer order reference code" +msgstr "" + +#: order/models.py:967 order/models.py:1671 +#: templates/js/translated/sales_order.js:879 +#: templates/js/translated/sales_order.js:1060 +msgid "Shipment Date" +msgstr "" + +#: order/models.py:976 +msgid "shipped by" +msgstr "" + +#: order/models.py:1025 +msgid "Order is already complete" +msgstr "" + +#: order/models.py:1028 +msgid "Order is already cancelled" +msgstr "" + +#: order/models.py:1032 +msgid "Only an open order can be marked as complete" +msgstr "" + +#: order/models.py:1036 +msgid "Order cannot be completed as there are incomplete shipments" +msgstr "" + +#: order/models.py:1041 +msgid "Order cannot be completed as there are incomplete line items" +msgstr "" + +#: order/models.py:1273 +msgid "Item quantity" +msgstr "" + +#: order/models.py:1290 +msgid "Line item reference" +msgstr "" + +#: order/models.py:1297 +msgid "Line item notes" +msgstr "" + +#: order/models.py:1309 +msgid "Target date for this line item (leave blank to use the target date from the order)" +msgstr "" + +#: order/models.py:1330 +msgid "Line item description (optional)" +msgstr "" + +#: order/models.py:1336 +msgid "Context" +msgstr "" + +#: order/models.py:1337 +msgid "Additional context for this line" +msgstr "" + +#: order/models.py:1347 +msgid "Unit price" +msgstr "" + +#: order/models.py:1380 +msgid "Supplier part must match supplier" +msgstr "" + +#: order/models.py:1387 +msgid "deleted" +msgstr "" + +#: order/models.py:1415 +msgid "Supplier part" +msgstr "" + +#: order/models.py:1422 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1870 templates/js/translated/part.js:1902 +#: templates/js/translated/purchase_order.js:1306 +#: templates/js/translated/purchase_order.js:2169 +#: templates/js/translated/return_order.js:763 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:602 +msgid "Received" +msgstr "" + +#: order/models.py:1423 +msgid "Number of items received" +msgstr "" + +#: order/models.py:1431 stock/models.py:938 stock/serializers.py:556 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2311 +msgid "Purchase Price" +msgstr "" + +#: order/models.py:1432 +msgid "Unit purchase price" +msgstr "" + +#: order/models.py:1447 +msgid "Where does the Purchaser want this item to be stored?" +msgstr "" + +#: order/models.py:1538 +msgid "Virtual part cannot be assigned to a sales order" +msgstr "" + +#: order/models.py:1543 +msgid "Only salable parts can be assigned to a sales order" +msgstr "" + +#: order/models.py:1569 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:1570 +msgid "Unit sale price" +msgstr "" + +#: order/models.py:1579 order/status_codes.py:43 +#: templates/js/translated/sales_order.js:1559 +#: templates/js/translated/sales_order.js:1680 +#: templates/js/translated/sales_order.js:1993 +msgid "Shipped" +msgstr "" + +#: order/models.py:1580 +msgid "Shipped quantity" +msgstr "" + +#: order/models.py:1672 +msgid "Date of shipment" +msgstr "" + +#: order/models.py:1678 templates/js/translated/sales_order.js:1072 +msgid "Delivery Date" +msgstr "" + +#: order/models.py:1679 +msgid "Date of delivery of shipment" +msgstr "" + +#: order/models.py:1687 +msgid "Checked By" +msgstr "" + +#: order/models.py:1688 +msgid "User who checked this shipment" +msgstr "" + +#: order/models.py:1695 order/models.py:1908 order/serializers.py:1342 +#: order/serializers.py:1452 templates/js/translated/model_renderers.js:454 +msgid "Shipment" +msgstr "" + +#: order/models.py:1696 +msgid "Shipment number" +msgstr "" + +#: order/models.py:1704 +msgid "Tracking Number" +msgstr "" + +#: order/models.py:1705 +msgid "Shipment tracking information" +msgstr "" + +#: order/models.py:1712 +msgid "Invoice Number" +msgstr "" + +#: order/models.py:1713 +msgid "Reference number for associated invoice" +msgstr "" + +#: order/models.py:1733 +msgid "Shipment has already been sent" +msgstr "" + +#: order/models.py:1736 +msgid "Shipment has no allocated stock items" +msgstr "" + +#: order/models.py:1854 order/models.py:1856 +msgid "Stock item has not been assigned" +msgstr "" + +#: order/models.py:1863 +msgid "Cannot allocate stock item to a line with a different part" +msgstr "" + +#: order/models.py:1866 +msgid "Cannot allocate stock to a line without a part" +msgstr "" + +#: order/models.py:1869 +msgid "Allocation quantity cannot exceed stock quantity" +msgstr "" + +#: order/models.py:1888 order/serializers.py:1219 +msgid "Quantity must be 1 for serialized stock item" +msgstr "" + +#: order/models.py:1891 +msgid "Sales order does not match shipment" +msgstr "" + +#: order/models.py:1892 plugin/base/barcodes/api.py:481 +msgid "Shipment does not match sales order" +msgstr "" + +#: order/models.py:1900 +msgid "Line" +msgstr "" + +#: order/models.py:1909 +msgid "Sales order shipment reference" +msgstr "" + +#: order/models.py:1922 order/models.py:2239 +#: templates/js/translated/return_order.js:721 +msgid "Item" +msgstr "" + +#: order/models.py:1923 +msgid "Select stock item to allocate" +msgstr "" + +#: order/models.py:1932 +msgid "Enter stock allocation quantity" +msgstr "" + +#: order/models.py:2021 +msgid "Return Order reference" +msgstr "" + +#: order/models.py:2033 +msgid "Company from which items are being returned" +msgstr "" + +#: order/models.py:2045 +msgid "Return order status" +msgstr "" + +#: order/models.py:2224 +msgid "Only serialized items can be assigned to a Return Order" +msgstr "" + +#: order/models.py:2240 +msgid "Select item to return from customer" +msgstr "" + +#: order/models.py:2246 +msgid "Received Date" +msgstr "" + +#: order/models.py:2247 +msgid "The date this this return item was received" +msgstr "" + +#: order/models.py:2258 templates/js/translated/return_order.js:732 +#: templates/js/translated/table_filters.js:123 +msgid "Outcome" +msgstr "" + +#: order/models.py:2259 +msgid "Outcome for this line item" +msgstr "" + +#: order/models.py:2266 +msgid "Cost associated with return or repair for this line item" +msgstr "" + +#: order/serializers.py:79 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_purchase_order_report.html:22 +#: report/templates/report/inventree_return_order_report.html:19 +#: report/templates/report/inventree_sales_order_report.html:22 +msgid "Line Items" +msgstr "" + +#: order/serializers.py:83 +msgid "Completed Lines" +msgstr "" + +#: order/serializers.py:286 +msgid "Order cannot be cancelled" +msgstr "" + +#: order/serializers.py:301 order/serializers.py:1235 +msgid "Allow order to be closed with incomplete line items" +msgstr "" + +#: order/serializers.py:311 order/serializers.py:1245 +msgid "Order has incomplete line items" +msgstr "" + +#: order/serializers.py:439 +msgid "Order is not open" +msgstr "" + +#: order/serializers.py:460 +msgid "Auto Pricing" +msgstr "" + +#: order/serializers.py:462 +msgid "Automatically calculate purchase price based on supplier part data" +msgstr "" + +#: order/serializers.py:472 +msgid "Purchase price currency" +msgstr "" + +#: order/serializers.py:478 +msgid "Merge Items" +msgstr "" + +#: order/serializers.py:480 +msgid "Merge items with the same part, destination and target date into one line item" +msgstr "" + +#: order/serializers.py:498 +msgid "Supplier part must be specified" +msgstr "" + +#: order/serializers.py:501 +msgid "Purchase order must be specified" +msgstr "" + +#: order/serializers.py:509 +msgid "Supplier must match purchase order" +msgstr "" + +#: order/serializers.py:510 +msgid "Purchase order must match supplier" +msgstr "" + +#: order/serializers.py:549 order/serializers.py:1313 +msgid "Line Item" +msgstr "" + +#: order/serializers.py:555 +msgid "Line item does not match purchase order" +msgstr "" + +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1657 +msgid "Select destination location for received items" +msgstr "" + +#: order/serializers.py:581 templates/js/translated/purchase_order.js:1130 +msgid "Enter batch code for incoming stock items" +msgstr "" + +#: order/serializers.py:589 templates/js/translated/purchase_order.js:1154 +msgid "Enter serial numbers for incoming stock items" +msgstr "" + +#: order/serializers.py:600 templates/js/translated/barcode.js:52 +msgid "Barcode" +msgstr "" + +#: order/serializers.py:601 +msgid "Scanned barcode" +msgstr "" + +#: order/serializers.py:617 +msgid "Barcode is already in use" +msgstr "" + +#: order/serializers.py:641 +msgid "An integer quantity must be provided for trackable parts" +msgstr "" + +#: order/serializers.py:689 order/serializers.py:1673 +msgid "Line items must be provided" +msgstr "" + +#: order/serializers.py:705 +msgid "Destination location must be specified" +msgstr "" + +#: order/serializers.py:716 +msgid "Supplied barcode values must be unique" +msgstr "" + +#: order/serializers.py:1062 +msgid "Sale price currency" +msgstr "" + +#: order/serializers.py:1122 +msgid "No shipment details provided" +msgstr "" + +#: order/serializers.py:1183 order/serializers.py:1322 +msgid "Line item is not associated with this order" +msgstr "" + +#: order/serializers.py:1202 +msgid "Quantity must be positive" +msgstr "" + +#: order/serializers.py:1332 +msgid "Enter serial numbers to allocate" +msgstr "" + +#: order/serializers.py:1354 order/serializers.py:1460 +msgid "Shipment has already been shipped" +msgstr "" + +#: order/serializers.py:1357 order/serializers.py:1463 +msgid "Shipment is not associated with this order" +msgstr "" + +#: order/serializers.py:1404 +msgid "No match found for the following serial numbers" +msgstr "" + +#: order/serializers.py:1411 +msgid "The following serial numbers are already allocated" +msgstr "" + +#: order/serializers.py:1627 +msgid "Return order line item" +msgstr "" + +#: order/serializers.py:1633 +msgid "Line item does not match return order" +msgstr "" + +#: order/serializers.py:1636 +msgid "Line item has already been received" +msgstr "" + +#: order/serializers.py:1665 +msgid "Items can only be received against orders which are in progress" +msgstr "" + +#: order/serializers.py:1743 +msgid "Line price currency" +msgstr "" + +#: order/status_codes.py:16 order/status_codes.py:46 stock/status_codes.py:16 +msgid "Lost" +msgstr "" + +#: order/status_codes.py:17 order/status_codes.py:47 stock/status_codes.py:22 +msgid "Returned" +msgstr "" + +#: order/status_codes.py:40 order/status_codes.py:67 +msgid "In Progress" +msgstr "" + +#: order/status_codes.py:85 +msgid "Return" +msgstr "" + +#: order/status_codes.py:88 +msgid "Repair" +msgstr "" + +#: order/status_codes.py:91 +msgid "Replace" +msgstr "" + +#: order/status_codes.py:94 +msgid "Refund" +msgstr "" + +#: order/status_codes.py:97 +msgid "Reject" +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:97 +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:110 +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:115 +msgid "Order Description" +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:161 +msgid "Completed Line Items" +msgstr "" + +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:167 +#: order/templates/order/sales_order_base.html:177 +msgid "Incomplete" +msgstr "" + +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 +#: report/templates/report/inventree_build_order_report.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:243 +msgid "Total cost could not be calculated" +msgstr "" + +#: order/templates/order/order_base.html:314 +msgid "Purchase Order QR Code" +msgstr "" + +#: order/templates/order/order_base.html:326 +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:1629 +#: templates/js/translated/purchase_order.js:696 +#: templates/js/translated/purchase_order.js:1236 +#: templates/js/translated/return_order.js:505 +#: templates/js/translated/sales_order.js:1145 +#: 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: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:414 +#: templates/js/translated/return_order.js:458 +#: 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:155 +#: templates/js/translated/return_order.js:308 +#: templates/js/translated/sales_order.js:833 +msgid "Customer Reference" +msgstr "" + +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:239 +#: 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:1073 +#: templates/js/translated/purchase_order.js:1752 +#: templates/js/translated/return_order.js:380 +#: templates/js/translated/sales_order.js:891 +msgid "Total Cost" +msgstr "" + +#: order/templates/order/return_order_base.html:259 +msgid "Return Order QR Code" +msgstr "" + +#: order/templates/order/return_order_base.html:271 +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 +#: order/templates/order/sales_order_base.html:93 +msgid "Mark As Shipped" +msgstr "" + +#: order/templates/order/sales_order_base.html:96 +#: templates/js/translated/sales_order.js:536 +msgid "Complete Sales Order" +msgstr "" + +#: order/templates/order/sales_order_base.html:135 +msgid "This Sales Order has not been fully allocated" +msgstr "" + +#: order/templates/order/sales_order_base.html:173 +#: 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:321 +msgid "Sales Order QR Code" +msgstr "" + +#: order/templates/order/sales_order_base.html:333 +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:1277 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:398 part/models.py:3944 part/stocktake.py:219 +#: stock/admin.py:152 +msgid "Part ID" +msgstr "" + +#: part/admin.py:41 part/admin.py:405 part/models.py:3945 part/stocktake.py:220 +#: stock/admin.py:156 +msgid "Part Name" +msgstr "" + +#: part/admin.py:45 part/stocktake.py:221 +msgid "Part Description" +msgstr "" + +#: part/admin.py:48 part/models.py:940 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_stock_location_report.html:103 +#: templates/js/translated/part.js:1227 templates/js/translated/part.js:2341 +#: templates/js/translated/stock.js:2036 +msgid "IPN" +msgstr "" + +#: part/admin.py:50 part/models.py:949 part/templates/part/part_base.html:277 +#: report/models.py:162 templates/js/translated/part.js:1232 +#: templates/js/translated/part.js:2347 +msgid "Revision" +msgstr "" + +#: part/admin.py:53 part/admin.py:319 part/models.py:922 +#: 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:302 part/stocktake.py:222 +msgid "Category ID" +msgstr "" + +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:223 +msgid "Category Name" +msgstr "" + +#: part/admin.py:71 part/admin.py:316 +msgid "Default Location ID" +msgstr "" + +#: part/admin.py:76 +msgid "Default Supplier ID" +msgstr "" + +#: part/admin.py:81 part/models.py:908 part/templates/part/part_base.html:177 +msgid "Variant Of" +msgstr "" + +#: part/admin.py:84 part/models.py:1036 part/templates/part/part_base.html:203 +msgid "Minimum 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:235 +#: templates/js/translated/part.js:715 templates/js/translated/part.js:2153 +msgid "Building" +msgstr "" + +#: part/admin.py:155 part/models.py:3088 part/models.py:3102 +#: templates/js/translated/part.js:970 +msgid "Minimum Cost" +msgstr "" + +#: part/admin.py:158 part/models.py:3095 part/models.py:3109 +#: templates/js/translated/part.js:980 +msgid "Maximum Cost" +msgstr "" + +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 +msgid "Parent ID" +msgstr "" + +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 +msgid "Parent Name" +msgstr "" + +#: part/admin.py:320 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 +msgid "Category Path" +msgstr "" + +#: part/admin.py:325 part/models.py:396 part/serializers.py:124 +#: part/serializers.py:267 part/serializers.py:386 +#: 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:203 +msgid "Parts" +msgstr "" + +#: part/admin.py:378 +msgid "BOM Level" +msgstr "" + +#: part/admin.py:381 +msgid "BOM Item ID" +msgstr "" + +#: part/admin.py:391 +msgid "Parent IPN" +msgstr "" + +#: part/admin.py:402 part/models.py:3946 +msgid "Part IPN" +msgstr "" + +#: part/admin.py:415 part/serializers.py:1274 +#: templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 +msgid "Minimum Price" +msgstr "" + +#: part/admin.py:420 part/serializers.py:1289 +#: templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 +msgid "Maximum Price" +msgstr "" + +#: part/api.py:104 +msgid "Starred" +msgstr "" + +#: part/api.py:106 +msgid "Filter by starred categories" +msgstr "" + +#: part/api.py:123 stock/api.py:312 +msgid "Depth" +msgstr "" + +#: part/api.py:123 +msgid "Filter by category depth" +msgstr "" + +#: part/api.py:141 stock/api.py:330 +msgid "Top Level" +msgstr "" + +#: part/api.py:143 +msgid "Filter by top-level categories" +msgstr "" + +#: part/api.py:156 stock/api.py:345 +msgid "Cascade" +msgstr "" + +#: part/api.py:158 +msgid "Include sub-categories in filtered results" +msgstr "" + +#: part/api.py:179 templates/js/translated/part.js:308 +msgid "Parent" +msgstr "" + +#: part/api.py:181 +msgid "Filter by parent category" +msgstr "" + +#: part/api.py:214 +msgid "Exclude Tree" +msgstr "" + +#: part/api.py:216 +msgid "Exclude sub-categories under the specified category" +msgstr "" + +#: part/api.py:449 +msgid "Has Results" +msgstr "" + +#: part/api.py:616 +msgid "Incoming Purchase Order" +msgstr "" + +#: part/api.py:634 +msgid "Outgoing Sales Order" +msgstr "" + +#: part/api.py:650 +msgid "Stock produced by Build Order" +msgstr "" + +#: part/api.py:734 +msgid "Stock required for Build Order" +msgstr "" + +#: part/api.py:881 +msgid "Valid" +msgstr "" + +#: part/api.py:882 +msgid "Validate entire Bill of Materials" +msgstr "" + +#: part/api.py:888 +msgid "This option must be selected" +msgstr "" + +#: part/api.py:1105 +msgid "BOM Valid" +msgstr "" + +#: part/api.py:1508 part/models.py:932 part/models.py:3374 part/models.py:3889 +#: part/serializers.py:401 part/serializers.py:1130 +#: part/templates/part/part_base.html:260 stock/api.py:791 +#: templates/InvenTree/settings/settings_staff_js.html:300 +#: templates/js/translated/notification.js:60 +#: templates/js/translated/part.js:2377 +msgid "Category" +msgstr "" + +#: part/api.py:1796 +msgid "Uses" +msgstr "" + +#: part/bom.py:170 part/models.py:104 part/models.py:975 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:367 +msgid "Default Location" +msgstr "" + +#: part/bom.py:171 part/serializers.py:833 +#: 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:85 part/models.py:3890 part/templates/part/category.html:16 +#: part/templates/part/part_app_base.html:10 +msgid "Part Category" +msgstr "" + +#: part/models.py:86 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:202 +msgid "Part Categories" +msgstr "" + +#: part/models.py:105 +msgid "Default location for parts in this category" +msgstr "" + +#: part/models.py:110 stock/models.py:174 templates/js/translated/part.js:2810 +#: templates/js/translated/stock.js:2772 +#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:283 +msgid "Structural" +msgstr "" + +#: part/models.py:112 +msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." +msgstr "" + +#: part/models.py:121 +msgid "Default keywords" +msgstr "" + +#: part/models.py:122 +msgid "Default keywords for parts in this category" +msgstr "" + +#: part/models.py:128 stock/models.py:86 stock/models.py:157 +#: templates/InvenTree/settings/settings_staff_js.html:456 +msgid "Icon" +msgstr "" + +#: part/models.py:129 stock/models.py:158 +msgid "Icon (optional)" +msgstr "" + +#: part/models.py:151 +msgid "You cannot make this part category structural because some parts are already assigned to it!" +msgstr "" + +#: part/models.py:485 +msgid "Cannot delete this part as it is still active" +msgstr "" + +#: part/models.py:490 +msgid "Cannot delete this part as it is used in an assembly" +msgstr "" + +#: part/models.py:528 +msgid "Invalid choice for parent part" +msgstr "" + +#: part/models.py:576 part/models.py:583 +#, python-brace-format +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" +msgstr "" + +#: part/models.py:595 +#, python-brace-format +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" +msgstr "" + +#: part/models.py:658 +#, python-brace-format +msgid "IPN must match regex pattern {pattern}" +msgstr "" + +#: part/models.py:736 +msgid "Stock item with this serial number already exists" +msgstr "" + +#: part/models.py:837 +msgid "Duplicate IPN not allowed in part settings" +msgstr "" + +#: part/models.py:847 +msgid "Part with this Name, IPN and Revision already exists." +msgstr "" + +#: part/models.py:862 +msgid "Parts cannot be assigned to structural part categories!" +msgstr "" + +#: part/models.py:891 part/models.py:3945 +msgid "Part name" +msgstr "" + +#: part/models.py:896 +msgid "Is Template" +msgstr "" + +#: part/models.py:897 +msgid "Is this part a template part?" +msgstr "" + +#: part/models.py:907 +msgid "Is this part a variant of another part?" +msgstr "" + +#: part/models.py:915 +msgid "Part description (optional)" +msgstr "" + +#: part/models.py:923 +msgid "Part keywords to improve visibility in search results" +msgstr "" + +#: part/models.py:933 +msgid "Part category" +msgstr "" + +#: part/models.py:941 +msgid "Internal Part Number" +msgstr "" + +#: part/models.py:948 +msgid "Part revision or version number" +msgstr "" + +#: part/models.py:973 +msgid "Where is this item normally stored?" +msgstr "" + +#: part/models.py:1019 part/templates/part/part_base.html:376 +msgid "Default Supplier" +msgstr "" + +#: part/models.py:1020 +msgid "Default supplier part" +msgstr "" + +#: part/models.py:1027 +msgid "Default Expiry" +msgstr "" + +#: part/models.py:1028 +msgid "Expiry time (in days) for stock items of this part" +msgstr "" + +#: part/models.py:1037 +msgid "Minimum allowed stock level" +msgstr "" + +#: part/models.py:1046 +msgid "Units of measure for this part" +msgstr "" + +#: part/models.py:1053 +msgid "Can this part be built from other parts?" +msgstr "" + +#: part/models.py:1059 +msgid "Can this part be used to build other parts?" +msgstr "" + +#: part/models.py:1065 +msgid "Does this part have tracking for unique items?" +msgstr "" + +#: part/models.py:1071 +msgid "Can this part be purchased from external suppliers?" +msgstr "" + +#: part/models.py:1077 +msgid "Can this part be sold to customers?" +msgstr "" + +#: part/models.py:1081 +msgid "Is this part active?" +msgstr "" + +#: part/models.py:1087 +msgid "Is this a virtual part, such as a software product or license?" +msgstr "" + +#: part/models.py:1093 +msgid "BOM checksum" +msgstr "" + +#: part/models.py:1094 +msgid "Stored BOM checksum" +msgstr "" + +#: part/models.py:1102 +msgid "BOM checked by" +msgstr "" + +#: part/models.py:1107 +msgid "BOM checked date" +msgstr "" + +#: part/models.py:1123 +msgid "Creation User" +msgstr "" + +#: part/models.py:1133 +msgid "Owner responsible for this part" +msgstr "" + +#: part/models.py:1138 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:2011 +msgid "Sell multiple" +msgstr "" + +#: part/models.py:3002 +msgid "Currency used to cache pricing calculations" +msgstr "" + +#: part/models.py:3018 +msgid "Minimum BOM Cost" +msgstr "" + +#: part/models.py:3019 +msgid "Minimum cost of component parts" +msgstr "" + +#: part/models.py:3025 +msgid "Maximum BOM Cost" +msgstr "" + +#: part/models.py:3026 +msgid "Maximum cost of component parts" +msgstr "" + +#: part/models.py:3032 +msgid "Minimum Purchase Cost" +msgstr "" + +#: part/models.py:3033 +msgid "Minimum historical purchase cost" +msgstr "" + +#: part/models.py:3039 +msgid "Maximum Purchase Cost" +msgstr "" + +#: part/models.py:3040 +msgid "Maximum historical purchase cost" +msgstr "" + +#: part/models.py:3046 +msgid "Minimum Internal Price" +msgstr "" + +#: part/models.py:3047 +msgid "Minimum cost based on internal price breaks" +msgstr "" + +#: part/models.py:3053 +msgid "Maximum Internal Price" +msgstr "" + +#: part/models.py:3054 +msgid "Maximum cost based on internal price breaks" +msgstr "" + +#: part/models.py:3060 +msgid "Minimum Supplier Price" +msgstr "" + +#: part/models.py:3061 +msgid "Minimum price of part from external suppliers" +msgstr "" + +#: part/models.py:3067 +msgid "Maximum Supplier Price" +msgstr "" + +#: part/models.py:3068 +msgid "Maximum price of part from external suppliers" +msgstr "" + +#: part/models.py:3074 +msgid "Minimum Variant Cost" +msgstr "" + +#: part/models.py:3075 +msgid "Calculated minimum cost of variant parts" +msgstr "" + +#: part/models.py:3081 +msgid "Maximum Variant Cost" +msgstr "" + +#: part/models.py:3082 +msgid "Calculated maximum cost of variant parts" +msgstr "" + +#: part/models.py:3089 +msgid "Override minimum cost" +msgstr "" + +#: part/models.py:3096 +msgid "Override maximum cost" +msgstr "" + +#: part/models.py:3103 +msgid "Calculated overall minimum cost" +msgstr "" + +#: part/models.py:3110 +msgid "Calculated overall maximum cost" +msgstr "" + +#: part/models.py:3116 +msgid "Minimum Sale Price" +msgstr "" + +#: part/models.py:3117 +msgid "Minimum sale price based on price breaks" +msgstr "" + +#: part/models.py:3123 +msgid "Maximum Sale Price" +msgstr "" + +#: part/models.py:3124 +msgid "Maximum sale price based on price breaks" +msgstr "" + +#: part/models.py:3130 +msgid "Minimum Sale Cost" +msgstr "" + +#: part/models.py:3131 +msgid "Minimum historical sale price" +msgstr "" + +#: part/models.py:3137 +msgid "Maximum Sale Cost" +msgstr "" + +#: part/models.py:3138 +msgid "Maximum historical sale price" +msgstr "" + +#: part/models.py:3157 +msgid "Part for stocktake" +msgstr "" + +#: part/models.py:3162 +msgid "Item Count" +msgstr "" + +#: part/models.py:3163 +msgid "Number of individual stock entries at time of stocktake" +msgstr "" + +#: part/models.py:3171 +msgid "Total available stock at time of stocktake" +msgstr "" + +#: part/models.py:3175 part/models.py:3258 +#: part/templates/part/part_scheduling.html:13 +#: report/templates/report/inventree_test_report.html:106 +#: templates/InvenTree/settings/plugin_settings.html:37 +#: templates/InvenTree/settings/settings_staff_js.html:540 +#: templates/js/translated/part.js:1086 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1731 +#: templates/js/translated/stock.js:2821 +msgid "Date" +msgstr "" + +#: part/models.py:3176 +msgid "Date stocktake was performed" +msgstr "" + +#: part/models.py:3184 +msgid "Additional notes" +msgstr "" + +#: part/models.py:3194 +msgid "User who performed this stocktake" +msgstr "" + +#: part/models.py:3200 +msgid "Minimum Stock Cost" +msgstr "" + +#: part/models.py:3201 +msgid "Estimated minimum cost of stock on hand" +msgstr "" + +#: part/models.py:3207 +msgid "Maximum Stock Cost" +msgstr "" + +#: part/models.py:3208 +msgid "Estimated maximum cost of stock on hand" +msgstr "" + +#: part/models.py:3264 templates/InvenTree/settings/settings_staff_js.html:529 +msgid "Report" +msgstr "" + +#: part/models.py:3265 +msgid "Stocktake report file (generated internally)" +msgstr "" + +#: part/models.py:3270 templates/InvenTree/settings/settings_staff_js.html:536 +msgid "Part Count" +msgstr "" + +#: part/models.py:3271 +msgid "Number of parts covered by stocktake" +msgstr "" + +#: part/models.py:3281 +msgid "User who requested this stocktake report" +msgstr "" + +#: part/models.py:3423 +msgid "Invalid template name - must include at least one alphanumeric character" +msgstr "" + +#: part/models.py:3444 part/models.py:3608 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3455 +msgid "Test templates can only be created for trackable parts" +msgstr "" + +#: part/models.py:3466 +msgid "Test template with the same key already exists for part" +msgstr "" + +#: part/models.py:3483 templates/js/translated/part.js:2880 +msgid "Test Name" +msgstr "" + +#: part/models.py:3484 +msgid "Enter a name for the test" +msgstr "" + +#: part/models.py:3490 +msgid "Test Key" +msgstr "" + +#: part/models.py:3491 +msgid "Simplified key for the test" +msgstr "" + +#: part/models.py:3498 +msgid "Test Description" +msgstr "" + +#: part/models.py:3499 +msgid "Enter description for this test" +msgstr "" + +#: part/models.py:3503 report/models.py:209 +#: templates/js/translated/part.js:2901 +#: templates/js/translated/table_filters.js:481 +msgid "Enabled" +msgstr "" + +#: part/models.py:3503 +msgid "Is this test enabled?" +msgstr "" + +#: part/models.py:3508 templates/js/translated/part.js:2909 +#: templates/js/translated/table_filters.js:477 +msgid "Required" +msgstr "" + +#: part/models.py:3509 +msgid "Is this test required to pass?" +msgstr "" + +#: part/models.py:3514 templates/js/translated/part.js:2917 +msgid "Requires Value" +msgstr "" + +#: part/models.py:3515 +msgid "Does this test require a value when adding a test result?" +msgstr "" + +#: part/models.py:3520 templates/js/translated/part.js:2924 +msgid "Requires Attachment" +msgstr "" + +#: part/models.py:3522 +msgid "Does this test require a file attachment when adding a test result?" +msgstr "" + +#: part/models.py:3528 part/models.py:3667 templates/js/translated/part.js:1637 +msgid "Choices" +msgstr "" + +#: part/models.py:3529 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3583 +msgid "Checkbox parameters cannot have units" +msgstr "" + +#: part/models.py:3588 +msgid "Checkbox parameters cannot have choices" +msgstr "" + +#: part/models.py:3625 +msgid "Parameter template name must be unique" +msgstr "" + +#: part/models.py:3640 +msgid "Parameter Name" +msgstr "" + +#: part/models.py:3647 +msgid "Physical units for this parameter" +msgstr "" + +#: part/models.py:3655 +msgid "Parameter description" +msgstr "" + +#: part/models.py:3661 templates/js/translated/part.js:1628 +#: templates/js/translated/table_filters.js:825 +msgid "Checkbox" +msgstr "" + +#: part/models.py:3662 +msgid "Is this parameter a checkbox?" +msgstr "" + +#: part/models.py:3668 +msgid "Valid choices for this parameter (comma-separated)" +msgstr "" + +#: part/models.py:3745 +msgid "Invalid choice for parameter value" +msgstr "" + +#: part/models.py:3788 +msgid "Parent Part" +msgstr "" + +#: part/models.py:3796 part/models.py:3897 part/models.py:3898 +#: templates/InvenTree/settings/settings_staff_js.html:295 +msgid "Parameter Template" +msgstr "" + +#: part/models.py:3801 +msgid "Data" +msgstr "" + +#: part/models.py:3802 +msgid "Parameter Value" +msgstr "" + +#: part/models.py:3904 templates/InvenTree/settings/settings_staff_js.html:304 +msgid "Default Value" +msgstr "" + +#: part/models.py:3905 +msgid "Default Parameter Value" +msgstr "" + +#: part/models.py:3943 +msgid "Part ID or part name" +msgstr "" + +#: part/models.py:3944 +msgid "Unique part ID value" +msgstr "" + +#: part/models.py:3946 +msgid "Part IPN value" +msgstr "" + +#: part/models.py:3947 +msgid "Level" +msgstr "" + +#: part/models.py:3947 +msgid "BOM level" +msgstr "" + +#: part/models.py:4037 +msgid "Select parent part" +msgstr "" + +#: part/models.py:4047 +msgid "Sub part" +msgstr "" + +#: part/models.py:4048 +msgid "Select part to be used in BOM" +msgstr "" + +#: part/models.py:4059 +msgid "BOM quantity for this BOM item" +msgstr "" + +#: part/models.py:4065 +msgid "This BOM item is optional" +msgstr "" + +#: part/models.py:4071 +msgid "This BOM item is consumable (it is not tracked in build orders)" +msgstr "" + +#: part/models.py:4078 part/templates/part/upload_bom.html:55 +msgid "Overage" +msgstr "" + +#: part/models.py:4079 +msgid "Estimated build wastage quantity (absolute or percentage)" +msgstr "" + +#: part/models.py:4086 +msgid "BOM item reference" +msgstr "" + +#: part/models.py:4094 +msgid "BOM item notes" +msgstr "" + +#: part/models.py:4100 +msgid "Checksum" +msgstr "" + +#: part/models.py:4101 +msgid "BOM line checksum" +msgstr "" + +#: part/models.py:4106 templates/js/translated/table_filters.js:174 +msgid "Validated" +msgstr "" + +#: part/models.py:4107 +msgid "This BOM item has been validated" +msgstr "" + +#: part/models.py:4112 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:4113 +msgid "This BOM item is inherited by BOMs for variant parts" +msgstr "" + +#: part/models.py:4118 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:1046 +msgid "Allow Variants" +msgstr "" + +#: part/models.py:4119 +msgid "Stock items for variant parts can be used for this BOM item" +msgstr "" + +#: part/models.py:4204 stock/models.py:662 +msgid "Quantity must be integer value for trackable parts" +msgstr "" + +#: part/models.py:4214 part/models.py:4216 +msgid "Sub part must be specified" +msgstr "" + +#: part/models.py:4354 +msgid "BOM Item Substitute" +msgstr "" + +#: part/models.py:4375 +msgid "Substitute part cannot be the same as the master part" +msgstr "" + +#: part/models.py:4388 +msgid "Parent BOM item" +msgstr "" + +#: part/models.py:4396 +msgid "Substitute part" +msgstr "" + +#: part/models.py:4412 +msgid "Part 1" +msgstr "" + +#: part/models.py:4420 +msgid "Part 2" +msgstr "" + +#: part/models.py:4421 +msgid "Select Related Part" +msgstr "" + +#: part/models.py:4440 +msgid "Part relationship cannot be created between a part and itself" +msgstr "" + +#: part/models.py:4445 +msgid "Duplicate relationship already exists" +msgstr "" + +#: part/serializers.py:118 +msgid "Parent Category" +msgstr "" + +#: part/serializers.py:119 templates/js/translated/part.js:309 +msgid "Parent part category" +msgstr "" + +#: part/serializers.py:126 part/serializers.py:148 +#: part/templates/part/category.html:122 part/templates/part/category.html:207 +#: part/templates/part/category_sidebar.html:7 +msgid "Subcategories" +msgstr "" + +#: part/serializers.py:180 +msgid "Results" +msgstr "" + +#: part/serializers.py:181 +msgid "Number of results recorded against this template" +msgstr "" + +#: part/serializers.py:205 part/serializers.py:223 stock/serializers.py:562 +msgid "Purchase currency of this stock item" +msgstr "" + +#: part/serializers.py:268 +msgid "Number of parts using this template" +msgstr "" + +#: part/serializers.py:392 +msgid "No parts selected" +msgstr "" + +#: part/serializers.py:402 +msgid "Select category" +msgstr "" + +#: part/serializers.py:437 +msgid "Original Part" +msgstr "" + +#: part/serializers.py:438 +msgid "Select original part to duplicate" +msgstr "" + +#: part/serializers.py:443 +msgid "Copy Image" +msgstr "" + +#: part/serializers.py:444 +msgid "Copy image from original part" +msgstr "" + +#: part/serializers.py:450 part/templates/part/detail.html:277 +msgid "Copy BOM" +msgstr "" + +#: part/serializers.py:451 +msgid "Copy bill of materials from original part" +msgstr "" + +#: part/serializers.py:457 +msgid "Copy Parameters" +msgstr "" + +#: part/serializers.py:458 +msgid "Copy parameter data from original part" +msgstr "" + +#: part/serializers.py:464 +msgid "Copy Notes" +msgstr "" + +#: part/serializers.py:465 +msgid "Copy notes from original part" +msgstr "" + +#: part/serializers.py:483 +msgid "Initial Stock Quantity" +msgstr "" + +#: part/serializers.py:485 +msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." +msgstr "" + +#: part/serializers.py:492 +msgid "Initial Stock Location" +msgstr "" + +#: part/serializers.py:493 +msgid "Specify initial stock location for this Part" +msgstr "" + +#: part/serializers.py:510 +msgid "Select supplier (or leave blank to skip)" +msgstr "" + +#: part/serializers.py:526 +msgid "Select manufacturer (or leave blank to skip)" +msgstr "" + +#: part/serializers.py:536 +msgid "Manufacturer part number" +msgstr "" + +#: part/serializers.py:543 +msgid "Selected company is not a valid supplier" +msgstr "" + +#: part/serializers.py:552 +msgid "Selected company is not a valid manufacturer" +msgstr "" + +#: part/serializers.py:563 +msgid "Manufacturer part matching this MPN already exists" +msgstr "" + +#: part/serializers.py:570 +msgid "Supplier part matching this SKU already exists" +msgstr "" + +#: part/serializers.py:834 +msgid "External Stock" +msgstr "" + +#: part/serializers.py:836 +msgid "Unallocated Stock" +msgstr "" + +#: part/serializers.py:839 +msgid "Variant Stock" +msgstr "" + +#: part/serializers.py:869 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:472 +msgid "Duplicate Part" +msgstr "" + +#: part/serializers.py:870 +msgid "Copy initial data from another Part" +msgstr "" + +#: part/serializers.py:876 templates/js/translated/part.js:102 +msgid "Initial Stock" +msgstr "" + +#: part/serializers.py:877 +msgid "Create Part with initial stock quantity" +msgstr "" + +#: part/serializers.py:883 +msgid "Supplier Information" +msgstr "" + +#: part/serializers.py:884 +msgid "Add initial supplier information for this part" +msgstr "" + +#: part/serializers.py:892 +msgid "Copy Category Parameters" +msgstr "" + +#: part/serializers.py:893 +msgid "Copy parameter templates from selected part category" +msgstr "" + +#: part/serializers.py:898 +msgid "Existing Image" +msgstr "" + +#: part/serializers.py:899 +msgid "Filename of an existing part image" +msgstr "" + +#: part/serializers.py:916 +msgid "Image file does not exist" +msgstr "" + +#: part/serializers.py:1122 +msgid "Limit stocktake report to a particular part, and any variant parts" +msgstr "" + +#: part/serializers.py:1132 +msgid "Limit stocktake report to a particular part category, and any child categories" +msgstr "" + +#: part/serializers.py:1142 +msgid "Limit stocktake report to a particular stock location, and any child locations" +msgstr "" + +#: part/serializers.py:1148 +msgid "Exclude External Stock" +msgstr "" + +#: part/serializers.py:1149 +msgid "Exclude stock items in external locations" +msgstr "" + +#: part/serializers.py:1154 +msgid "Generate Report" +msgstr "" + +#: part/serializers.py:1155 +msgid "Generate report file containing calculated stocktake data" +msgstr "" + +#: part/serializers.py:1160 +msgid "Update Parts" +msgstr "" + +#: part/serializers.py:1161 +msgid "Update specified parts with calculated stocktake data" +msgstr "" + +#: part/serializers.py:1169 +msgid "Stocktake functionality is not enabled" +msgstr "" + +#: part/serializers.py:1275 +msgid "Override calculated value for minimum price" +msgstr "" + +#: part/serializers.py:1282 +msgid "Minimum price currency" +msgstr "" + +#: part/serializers.py:1290 +msgid "Override calculated value for maximum price" +msgstr "" + +#: part/serializers.py:1297 +msgid "Maximum price currency" +msgstr "" + +#: part/serializers.py:1326 +msgid "Update" +msgstr "" + +#: part/serializers.py:1327 +msgid "Update pricing for this part" +msgstr "" + +#: part/serializers.py:1350 +#, python-brace-format +msgid "Could not convert from provided currencies to {default_currency}" +msgstr "" + +#: part/serializers.py:1357 +msgid "Minimum price must not be greater than maximum price" +msgstr "" + +#: part/serializers.py:1360 +msgid "Maximum price must not be less than minimum price" +msgstr "" + +#: part/serializers.py:1727 +msgid "Select part to copy BOM from" +msgstr "" + +#: part/serializers.py:1735 +msgid "Remove Existing Data" +msgstr "" + +#: part/serializers.py:1736 +msgid "Remove existing BOM items before copying" +msgstr "" + +#: part/serializers.py:1741 +msgid "Include Inherited" +msgstr "" + +#: part/serializers.py:1742 +msgid "Include BOM items which are inherited from templated parts" +msgstr "" + +#: part/serializers.py:1747 +msgid "Skip Invalid Rows" +msgstr "" + +#: part/serializers.py:1748 +msgid "Enable this option to skip invalid rows" +msgstr "" + +#: part/serializers.py:1753 +msgid "Copy Substitute Parts" +msgstr "" + +#: part/serializers.py:1754 +msgid "Copy substitute parts when duplicate BOM items" +msgstr "" + +#: part/serializers.py:1788 +msgid "Clear Existing BOM" +msgstr "" + +#: part/serializers.py:1789 +msgid "Delete existing BOM items before uploading" +msgstr "" + +#: part/serializers.py:1819 +msgid "No part column specified" +msgstr "" + +#: part/serializers.py:1863 +msgid "Multiple matching parts found" +msgstr "" + +#: part/serializers.py:1866 +msgid "No matching part found" +msgstr "" + +#: part/serializers.py:1869 +msgid "Part is not designated as a component" +msgstr "" + +#: part/serializers.py:1878 +msgid "Quantity not provided" +msgstr "" + +#: part/serializers.py:1886 +msgid "Invalid quantity" +msgstr "" + +#: part/serializers.py:1907 +msgid "At least one BOM item is required" +msgstr "" + +#: part/stocktake.py:225 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 +#: templates/js/translated/purchase_order.js:2084 +msgid "Total Quantity" +msgstr "" + +#: part/stocktake.py:226 +msgid "Total Cost Min" +msgstr "" + +#: part/stocktake.py:227 +msgid "Total Cost Max" +msgstr "" + +#: part/stocktake.py:285 +msgid "Stocktake Report Available" +msgstr "" + +#: part/stocktake.py:286 +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: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:255 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2216 users/models.py:204 +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:1320 templates/js/translated/bom.js:1321 +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:657 +msgid "Related Part" +msgstr "" + +#: part/templates/part/detail.html:665 +msgid "Add Related Part" +msgstr "" + +#: part/templates/part/detail.html:750 +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 templates/js/translated/label.js:143 +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:153 +msgid "Part is virtual (not a physical part)" +msgstr "" + +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:681 +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:1219 +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:1265 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:511 +msgid "Calculate" +msgstr "" + +#: part/templates/part/part_base.html:528 +msgid "Remove associated image from this part" +msgstr "" + +#: part/templates/part/part_base.html:579 +msgid "No matching images found" +msgstr "" + +#: part/templates/part/part_base.html:675 +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:1243 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2070 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:251 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/company.js:1713 +#: templates/js/translated/stock.js:2246 +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/model_renderers.js:227 +#: templates/js/translated/part.js:705 templates/js/translated/part.js:2141 +#: templates/js/translated/part.js:2143 +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:170 +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:1406 +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:2589 +#: templates/js/translated/sales_order.js:1953 +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:206 +msgid "Purchase order does not match supplier" +msgstr "" + +#: plugin/base/barcodes/mixins.py:440 +msgid "Failed to find pending line item for supplier part" +msgstr "" + +#: plugin/base/barcodes/mixins.py:471 +msgid "Further information required to receive line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:479 +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 templates/js/translated/label.js:155 +msgid "Label printing failed" +msgstr "" + +#: plugin/base/label/mixins.py:56 +msgid "Error rendering label to PDF" +msgstr "" + +#: plugin/base/label/mixins.py:70 +msgid "Error rendering label to HTML" +msgstr "" + +#: plugin/base/label/mixins.py:151 +msgid "No items provided to print" +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:22 +#: 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:19 +msgid "InvenTree PDF label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "Provides native support for printing PDF labels" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:28 +msgid "Debug mode" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:29 +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:151 +msgid "last used" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:168 +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:308 +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:99 +msgid "Label is too large for page size" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:133 +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:282 +msgid "Only staff users can administer plugins" +msgstr "" + +#: plugin/installer.py:197 +msgid "Plugin installation is disabled" +msgstr "" + +#: plugin/installer.py:248 +msgid "Installed plugin successfully" +msgstr "" + +#: plugin/installer.py:254 +#, python-brace-format +msgid "Installed plugin into {path}" +msgstr "" + +#: plugin/installer.py:273 +msgid "Plugin was not found in registry" +msgstr "" + +#: plugin/installer.py:276 +msgid "Plugin is not a packaged plugin" +msgstr "" + +#: plugin/installer.py:279 +msgid "Plugin package name not found" +msgstr "" + +#: plugin/installer.py:299 +msgid "Plugin uninstalling is disabled" +msgstr "" + +#: plugin/installer.py:303 +msgid "Plugin cannot be uninstalled as it is currently active" +msgstr "" + +#: plugin/installer.py:316 +msgid "Uninstalled plugin successfully" +msgstr "" + +#: plugin/models.py:36 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:37 +msgid "Plugin Configurations" +msgstr "" + +#: plugin/models.py:43 users/models.py:100 +msgid "Key" +msgstr "" + +#: plugin/models.py:44 +msgid "Key of plugin" +msgstr "" + +#: plugin/models.py:52 +msgid "PluginName of the plugin" +msgstr "" + +#: plugin/models.py:59 plugin/serializers.py:90 +msgid "Package Name" +msgstr "" + +#: plugin/models.py:61 +msgid "Name of the installed package, if the plugin was installed via PIP" +msgstr "" + +#: plugin/models.py:66 +msgid "Is the plugin active" +msgstr "" + +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:504 +msgid "Installed" +msgstr "" + +#: plugin/models.py:166 +msgid "Sample plugin" +msgstr "" + +#: plugin/models.py:174 +msgid "Builtin Plugin" +msgstr "" + +#: plugin/models.py:182 +msgid "Package Plugin" +msgstr "" + +#: plugin/models.py:220 report/models.py:475 +#: templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:51 +msgid "Plugin" +msgstr "" + +#: plugin/models.py:267 +msgid "Method" +msgstr "" + +#: plugin/plugin.py:270 +msgid "No author found" +msgstr "" + +#: plugin/registry.py:534 +#, python-brace-format +msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" +msgstr "" + +#: plugin/registry.py:537 +#, python-brace-format +msgid "Plugin requires at least version {v}" +msgstr "" + +#: plugin/registry.py:539 +#, 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:161 +msgid "Full reload" +msgstr "" + +#: plugin/serializers.py:162 +msgid "Perform a full reload of the plugin registry" +msgstr "" + +#: plugin/serializers.py:168 +msgid "Force reload" +msgstr "" + +#: plugin/serializers.py:170 +msgid "Force a reload of the plugin registry, even if it is already loaded" +msgstr "" + +#: plugin/serializers.py:177 +msgid "Collect plugins" +msgstr "" + +#: plugin/serializers.py:178 +msgid "Collect plugins and add them to the registry" +msgstr "" + +#: plugin/serializers.py:205 +msgid "Activate Plugin" +msgstr "" + +#: plugin/serializers.py:206 +msgid "Activate this plugin" +msgstr "" + +#: plugin/serializers.py:226 +msgid "Delete configuration" +msgstr "" + +#: plugin/serializers.py:227 +msgid "Delete the plugin configuration from the database" +msgstr "" + +#: report/api.py:88 +msgid "No valid objects provided to template" +msgstr "" + +#: report/api.py:103 report/models.py:439 report/serializers.py:98 +#: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 +#: templates/js/translated/return_order.js:353 +#: templates/js/translated/sales_order.js:887 +#: templates/js/translated/sales_order.js:1047 +msgid "Items" +msgstr "" + +#: report/api.py:180 +msgid "Plugin not found" +msgstr "" + +#: report/api.py:182 +msgid "Plugin is not active" +msgstr "" + +#: report/api.py:184 +msgid "Plugin does not support label printing" +msgstr "" + +#: report/api.py:233 +msgid "Invalid label dimensions" +msgstr "" + +#: report/api.py:248 report/api.py:329 +msgid "No valid items provided to template" +msgstr "" + +#: report/api.py:283 +msgid "Error printing label" +msgstr "" + +#: report/api.py:375 report/api.py:411 +#, python-brace-format +msgid "Template file '{template}' is missing or does not exist" +msgstr "" + +#: report/helpers.py:43 +msgid "A4" +msgstr "" + +#: report/helpers.py:44 +msgid "A3" +msgstr "" + +#: report/helpers.py:45 +msgid "Legal" +msgstr "" + +#: report/helpers.py:46 +msgid "Letter" +msgstr "" + +#: report/models.py:119 +msgid "Template file with this name already exists" +msgstr "" + +#: report/models.py:151 +msgid "Template name" +msgstr "" + +#: report/models.py:157 +msgid "Template description" +msgstr "" + +#: report/models.py:163 +msgid "Revision number (auto-increments)" +msgstr "" + +#: report/models.py:203 +msgid "Filename Pattern" +msgstr "" + +#: report/models.py:204 +msgid "Pattern for generating filenames" +msgstr "" + +#: report/models.py:209 +msgid "Template is enabled" +msgstr "" + +#: report/models.py:215 +msgid "Target model type for template" +msgstr "" + +#: report/models.py:235 +msgid "Filters" +msgstr "" + +#: report/models.py:236 +msgid "Template query filters (comma-separated list of key=value pairs)" +msgstr "" + +#: report/models.py:295 report/models.py:362 +msgid "Template file" +msgstr "" + +#: report/models.py:303 +msgid "Page size for PDF reports" +msgstr "" + +#: report/models.py:309 +msgid "Render report in landscape orientation" +msgstr "" + +#: report/models.py:368 +msgid "Width [mm]" +msgstr "" + +#: report/models.py:369 +msgid "Label width, specified in mm" +msgstr "" + +#: report/models.py:375 +msgid "Height [mm]" +msgstr "" + +#: report/models.py:376 +msgid "Label height, specified in mm" +msgstr "" + +#: report/models.py:439 +msgid "Number of items to process" +msgstr "" + +#: report/models.py:445 +msgid "Report generation is complete" +msgstr "" + +#: report/models.py:449 templates/js/translated/build.js:2177 +msgid "Progress" +msgstr "" + +#: report/models.py:449 +msgid "Report generation progress" +msgstr "" + +#: report/models.py:457 +msgid "Report Template" +msgstr "" + +#: report/models.py:464 report/models.py:487 +msgid "Output File" +msgstr "" + +#: report/models.py:465 report/models.py:488 +msgid "Generated output file" +msgstr "" + +#: report/models.py:476 +msgid "Label output plugin" +msgstr "" + +#: report/models.py:480 +msgid "Label Template" +msgstr "" + +#: report/models.py:503 +msgid "Snippet" +msgstr "" + +#: report/models.py:504 +msgid "Report snippet file" +msgstr "" + +#: report/models.py:511 +msgid "Snippet file description" +msgstr "" + +#: report/models.py:529 +msgid "Asset" +msgstr "" + +#: report/models.py:530 +msgid "Report asset file" +msgstr "" + +#: report/models.py:537 +msgid "Asset file description" +msgstr "" + +#: report/serializers.py:91 +msgid "Select report template" +msgstr "" + +#: report/serializers.py:99 report/serializers.py:149 +msgid "List of item primary keys to include in the report" +msgstr "" + +#: report/serializers.py:132 +msgid "Select label template" +msgstr "" + +#: report/serializers.py:140 +msgid "Printing Plugin" +msgstr "" + +#: report/serializers.py:141 +msgid "Select plugin to use for label printing" +msgstr "" + +#: report/templates/label/part_label.html:31 +#: report/templates/label/stockitem_qr.html:21 +#: report/templates/label/stocklocation_qr.html:20 +#: templates/allauth_2fa/setup.html:18 +msgid "QR Code" +msgstr "" + +#: report/templates/label/part_label_code128.html:31 +#: report/templates/label/stocklocation_qr_and_text.html:31 +#: templates/qr_code.html:7 +msgid "QR code" +msgstr "" + +#: report/templates/report/inventree_bill_of_materials_report.html:133 +msgid "Materials needed" +msgstr "" + +#: report/templates/report/inventree_build_order_report.html:146 +msgid "Required For" +msgstr "" + +#: report/templates/report/inventree_purchase_order_report.html:15 +msgid "Supplier was deleted" +msgstr "" + +#: report/templates/report/inventree_purchase_order_report.html:30 +#: report/templates/report/inventree_sales_order_report.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:2115 +#: templates/js/translated/sales_order.js:1873 +msgid "Unit Price" +msgstr "" + +#: report/templates/report/inventree_purchase_order_report.html:55 +#: report/templates/report/inventree_return_order_report.html:48 +#: report/templates/report/inventree_sales_order_report.html:55 +msgid "Extra Line Items" +msgstr "" + +#: report/templates/report/inventree_purchase_order_report.html:72 +#: report/templates/report/inventree_sales_order_report.html:72 +#: templates/js/translated/purchase_order.js:2017 +#: templates/js/translated/sales_order.js:1842 +msgid "Total" +msgstr "" + +#: report/templates/report/inventree_return_order_report.html:25 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:824 +#: stock/serializers.py:149 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:2355 +#: templates/js/translated/model_renderers.js:230 +#: templates/js/translated/return_order.js:539 +#: templates/js/translated/return_order.js:723 +#: templates/js/translated/sales_order.js:315 +#: templates/js/translated/sales_order.js:1647 +#: templates/js/translated/sales_order.js:1732 +#: templates/js/translated/stock.js:596 +msgid "Serial Number" +msgstr "" + +#: report/templates/report/inventree_stock_location_report.html:97 +msgid "Stock location items" +msgstr "" + +#: report/templates/report/inventree_test_report.html:21 +msgid "Stock Item Test Report" +msgstr "" + +#: report/templates/report/inventree_test_report.html:97 +msgid "Test Results" +msgstr "" + +#: report/templates/report/inventree_test_report.html:102 +#: templates/js/translated/stock.js:1495 +msgid "Test" +msgstr "" + +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2412 +msgid "Result" +msgstr "" + +#: report/templates/report/inventree_test_report.html:129 +msgid "Pass" +msgstr "" + +#: report/templates/report/inventree_test_report.html:131 +msgid "Fail" +msgstr "" + +#: report/templates/report/inventree_test_report.html:138 +msgid "No result (required)" +msgstr "" + +#: report/templates/report/inventree_test_report.html:140 +msgid "No result" +msgstr "" + +#: report/templates/report/inventree_test_report.html:153 +#: stock/templates/stock/stock_sidebar.html:16 +msgid "Installed Items" +msgstr "" + +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 +#: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 +#: templates/js/translated/stock.js:3110 +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:51 stock/admin.py:171 +msgid "Location ID" +msgstr "" + +#: stock/admin.py:53 stock/admin.py:175 +msgid "Location Name" +msgstr "" + +#: stock/admin.py:63 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 +msgid "Location Path" +msgstr "" + +#: stock/admin.py:148 +msgid "Stock Item ID" +msgstr "" + +#: stock/admin.py:167 +msgid "Status Code" +msgstr "" + +#: stock/admin.py:179 +msgid "Supplier Part ID" +msgstr "" + +#: stock/admin.py:184 +msgid "Supplier Part SKU" +msgstr "" + +#: stock/admin.py:189 +msgid "Supplier ID" +msgstr "" + +#: stock/admin.py:195 +msgid "Supplier Name" +msgstr "" + +#: stock/admin.py:200 +msgid "Customer ID" +msgstr "" + +#: stock/admin.py:205 stock/models.py:804 +#: stock/templates/stock/item_base.html:354 +msgid "Installed In" +msgstr "" + +#: stock/admin.py:210 +msgid "Build ID" +msgstr "" + +#: stock/admin.py:220 +msgid "Sales Order ID" +msgstr "" + +#: stock/admin.py:225 +msgid "Purchase Order ID" +msgstr "" + +#: stock/admin.py:240 +msgid "Review Needed" +msgstr "" + +#: stock/admin.py:245 +msgid "Delete on Deplete" +msgstr "" + +#: stock/admin.py:260 stock/models.py:898 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2230 users/models.py:124 +msgid "Expiry Date" +msgstr "" + +#: stock/api.py:312 +msgid "Filter by location depth" +msgstr "" + +#: stock/api.py:332 +msgid "Filter by top-level locations" +msgstr "" + +#: stock/api.py:347 +msgid "Include sub-locations in filtered results" +msgstr "" + +#: stock/api.py:369 stock/serializers.py:1085 +msgid "Parent Location" +msgstr "" + +#: stock/api.py:370 +msgid "Filter by parent location" +msgstr "" + +#: stock/api.py:625 templates/js/translated/table_filters.js:427 +msgid "External Location" +msgstr "" + +#: stock/api.py:813 +msgid "Part Tree" +msgstr "" + +#: stock/api.py:843 +msgid "Expiry date before" +msgstr "" + +#: stock/api.py:847 +msgid "Expiry date after" +msgstr "" + +#: stock/api.py:850 stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 +msgid "Stale" +msgstr "" + +#: stock/api.py:937 +msgid "Quantity is required" +msgstr "" + +#: stock/api.py:943 +msgid "Valid part must be supplied" +msgstr "" + +#: stock/api.py:974 +msgid "The given supplier part does not exist" +msgstr "" + +#: stock/api.py:984 +msgid "The supplier part has a pack size defined, but flag use_pack_size not set" +msgstr "" + +#: stock/api.py:1015 +msgid "Serial numbers cannot be supplied for a non-trackable part" +msgstr "" + +#: stock/models.py:60 +msgid "Stock Location type" +msgstr "" + +#: stock/models.py:61 +msgid "Stock Location types" +msgstr "" + +#: stock/models.py:87 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "" + +#: stock/models.py:124 stock/models.py:786 +#: 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:186 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:205 +msgid "Stock Locations" +msgstr "" + +#: stock/models.py:167 stock/models.py:947 +#: stock/templates/stock/item_base.html:247 +msgid "Owner" +msgstr "" + +#: stock/models.py:168 stock/models.py:948 +msgid "Select Owner" +msgstr "" + +#: stock/models.py:176 +msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." +msgstr "" + +#: stock/models.py:183 templates/js/translated/stock.js:2781 +#: templates/js/translated/table_filters.js:243 +msgid "External" +msgstr "" + +#: stock/models.py:184 +msgid "This is an external stock location" +msgstr "" + +#: stock/models.py:190 templates/js/translated/stock.js:2790 +#: templates/js/translated/table_filters.js:246 +msgid "Location type" +msgstr "" + +#: stock/models.py:194 +msgid "Stock location type of this location" +msgstr "" + +#: stock/models.py:261 +msgid "You cannot make this stock location structural because some stock items are already located into it!" +msgstr "" + +#: stock/models.py:641 +msgid "Stock items cannot be located into structural stock locations!" +msgstr "" + +#: stock/models.py:668 stock/serializers.py:446 +msgid "Stock item cannot be created for virtual parts" +msgstr "" + +#: stock/models.py:685 +#, python-brace-format +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" +msgstr "" + +#: stock/models.py:695 stock/models.py:708 +msgid "Quantity must be 1 for item with a serial number" +msgstr "" + +#: stock/models.py:698 +msgid "Serial number cannot be set if quantity greater than 1" +msgstr "" + +#: stock/models.py:722 +msgid "Item cannot belong to itself" +msgstr "" + +#: stock/models.py:727 +msgid "Item must have a build reference if is_building=True" +msgstr "" + +#: stock/models.py:740 +msgid "Build reference does not point to the same part object" +msgstr "" + +#: stock/models.py:756 +msgid "Parent Stock Item" +msgstr "" + +#: stock/models.py:768 +msgid "Base part" +msgstr "" + +#: stock/models.py:778 +msgid "Select a matching supplier part for this stock item" +msgstr "" + +#: stock/models.py:790 +msgid "Where is this stock item located?" +msgstr "" + +#: stock/models.py:798 stock/serializers.py:1476 +msgid "Packaging this stock item is stored in" +msgstr "" + +#: stock/models.py:809 +msgid "Is this item installed in another item?" +msgstr "" + +#: stock/models.py:828 +msgid "Serial number for this item" +msgstr "" + +#: stock/models.py:842 stock/serializers.py:1459 +msgid "Batch code for this stock item" +msgstr "" + +#: stock/models.py:847 +msgid "Stock Quantity" +msgstr "" + +#: stock/models.py:857 +msgid "Source Build" +msgstr "" + +#: stock/models.py:860 +msgid "Build for this stock item" +msgstr "" + +#: stock/models.py:867 stock/templates/stock/item_base.html:363 +msgid "Consumed By" +msgstr "" + +#: stock/models.py:870 +msgid "Build order which consumed this stock item" +msgstr "" + +#: stock/models.py:879 +msgid "Source Purchase Order" +msgstr "" + +#: stock/models.py:883 +msgid "Purchase order for this stock item" +msgstr "" + +#: stock/models.py:889 +msgid "Destination Sales Order" +msgstr "" + +#: stock/models.py:900 +msgid "Expiry date for stock item. Stock will be considered expired after this date" +msgstr "" + +#: stock/models.py:918 +msgid "Delete on deplete" +msgstr "" + +#: stock/models.py:919 +msgid "Delete this Stock Item when stock is depleted" +msgstr "" + +#: stock/models.py:939 +msgid "Single unit purchase price at time of purchase" +msgstr "" + +#: stock/models.py:970 +msgid "Converted to part" +msgstr "" + +#: stock/models.py:1486 +msgid "Part is not set as trackable" +msgstr "" + +#: stock/models.py:1492 +msgid "Quantity must be integer" +msgstr "" + +#: stock/models.py:1500 +#, python-brace-format +msgid "Quantity must not exceed available stock quantity ({self.quantity})" +msgstr "" + +#: stock/models.py:1506 +msgid "Serial numbers must be a list of integers" +msgstr "" + +#: stock/models.py:1511 +msgid "Quantity does not match serial numbers" +msgstr "" + +#: stock/models.py:1519 stock/serializers.py:660 +msgid "Serial numbers already exist" +msgstr "" + +#: stock/models.py:1616 +msgid "Test template does not exist" +msgstr "" + +#: stock/models.py:1634 +msgid "Stock item has been assigned to a sales order" +msgstr "" + +#: stock/models.py:1638 +msgid "Stock item is installed in another item" +msgstr "" + +#: stock/models.py:1641 +msgid "Stock item contains other items" +msgstr "" + +#: stock/models.py:1644 +msgid "Stock item has been assigned to a customer" +msgstr "" + +#: stock/models.py:1647 +msgid "Stock item is currently in production" +msgstr "" + +#: stock/models.py:1650 +msgid "Serialized stock cannot be merged" +msgstr "" + +#: stock/models.py:1657 stock/serializers.py:1365 +msgid "Duplicate stock items" +msgstr "" + +#: stock/models.py:1661 +msgid "Stock items must refer to the same part" +msgstr "" + +#: stock/models.py:1669 +msgid "Stock items must refer to the same supplier part" +msgstr "" + +#: stock/models.py:1674 +msgid "Stock status codes must match" +msgstr "" + +#: stock/models.py:1901 +msgid "StockItem cannot be moved as it is not in stock" +msgstr "" + +#: stock/models.py:2310 +msgid "Entry notes" +msgstr "" + +#: stock/models.py:2378 +msgid "Value must be provided for this test" +msgstr "" + +#: stock/models.py:2383 +msgid "Attachment must be uploaded for this test" +msgstr "" + +#: stock/models.py:2388 +msgid "Invalid value for this test" +msgstr "" + +#: stock/models.py:2412 +msgid "Test result" +msgstr "" + +#: stock/models.py:2419 +msgid "Test output value" +msgstr "" + +#: stock/models.py:2427 +msgid "Test result attachment" +msgstr "" + +#: stock/models.py:2431 +msgid "Test notes" +msgstr "" + +#: stock/models.py:2439 templates/js/translated/stock.js:1548 +msgid "Test station" +msgstr "" + +#: stock/models.py:2440 +msgid "The identifier of the test station where the test was performed" +msgstr "" + +#: stock/models.py:2446 +msgid "Started" +msgstr "" + +#: stock/models.py:2447 +msgid "The timestamp of the test start" +msgstr "" + +#: stock/models.py:2453 +msgid "Finished" +msgstr "" + +#: stock/models.py:2454 +msgid "The timestamp of the test finish" +msgstr "" + +#: stock/serializers.py:74 +msgid "Generated batch code" +msgstr "" + +#: stock/serializers.py:83 +msgid "Select build order" +msgstr "" + +#: stock/serializers.py:92 +msgid "Select stock item to generate batch code for" +msgstr "" + +#: stock/serializers.py:101 +msgid "Select location to generate batch code for" +msgstr "" + +#: stock/serializers.py:110 +msgid "Select part to generate batch code for" +msgstr "" + +#: stock/serializers.py:119 +msgid "Select purchase order" +msgstr "" + +#: stock/serializers.py:126 +msgid "Enter quantity for batch code" +msgstr "" + +#: stock/serializers.py:149 +msgid "Generated serial number" +msgstr "" + +#: stock/serializers.py:158 +msgid "Select part to generate serial number for" +msgstr "" + +#: stock/serializers.py:166 +msgid "Quantity of serial numbers to generate" +msgstr "" + +#: stock/serializers.py:228 +msgid "Test template for this result" +msgstr "" + +#: stock/serializers.py:247 +msgid "Template ID or test name must be provided" +msgstr "" + +#: stock/serializers.py:279 +msgid "The test finished time cannot be earlier than the test started time" +msgstr "" + +#: stock/serializers.py:315 +msgid "Serial number is too large" +msgstr "" + +#: stock/serializers.py:438 +msgid "Use pack size when adding: the quantity defined is the number of packs" +msgstr "" + +#: stock/serializers.py:558 +msgid "Purchase price of this stock item, per unit or pack" +msgstr "" + +#: stock/serializers.py:595 +msgid "Enter number of stock items to serialize" +msgstr "" + +#: stock/serializers.py:608 +#, python-brace-format +msgid "Quantity must not exceed available stock quantity ({q})" +msgstr "" + +#: stock/serializers.py:615 +msgid "Enter serial numbers for new items" +msgstr "" + +#: stock/serializers.py:626 stock/serializers.py:1322 stock/serializers.py:1578 +msgid "Destination stock location" +msgstr "" + +#: stock/serializers.py:633 +msgid "Optional note field" +msgstr "" + +#: stock/serializers.py:643 +msgid "Serial numbers cannot be assigned to this part" +msgstr "" + +#: stock/serializers.py:698 +msgid "Select stock item to install" +msgstr "" + +#: stock/serializers.py:705 +msgid "Quantity to Install" +msgstr "" + +#: stock/serializers.py:706 +msgid "Enter the quantity of items to install" +msgstr "" + +#: stock/serializers.py:711 stock/serializers.py:791 stock/serializers.py:887 +#: stock/serializers.py:937 +msgid "Add transaction note (optional)" +msgstr "" + +#: stock/serializers.py:719 +msgid "Quantity to install must be at least 1" +msgstr "" + +#: stock/serializers.py:727 +msgid "Stock item is unavailable" +msgstr "" + +#: stock/serializers.py:738 +msgid "Selected part is not in the Bill of Materials" +msgstr "" + +#: stock/serializers.py:751 +msgid "Quantity to install must not exceed available quantity" +msgstr "" + +#: stock/serializers.py:786 +msgid "Destination location for uninstalled item" +msgstr "" + +#: stock/serializers.py:821 +msgid "Select part to convert stock item into" +msgstr "" + +#: stock/serializers.py:834 +msgid "Selected part is not a valid option for conversion" +msgstr "" + +#: stock/serializers.py:851 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "" + +#: stock/serializers.py:882 +msgid "Destination location for returned item" +msgstr "" + +#: stock/serializers.py:919 +msgid "Select stock items to change status" +msgstr "" + +#: stock/serializers.py:925 +msgid "No stock items selected" +msgstr "" + +#: stock/serializers.py:1021 stock/serializers.py:1093 +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:222 +#: stock/templates/stock/location_sidebar.html:5 +msgid "Sublocations" +msgstr "" + +#: stock/serializers.py:1086 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: stock/serializers.py:1194 +msgid "Part must be salable" +msgstr "" + +#: stock/serializers.py:1198 +msgid "Item is allocated to a sales order" +msgstr "" + +#: stock/serializers.py:1202 +msgid "Item is allocated to a build order" +msgstr "" + +#: stock/serializers.py:1226 +msgid "Customer to assign stock items" +msgstr "" + +#: stock/serializers.py:1232 +msgid "Selected company is not a customer" +msgstr "" + +#: stock/serializers.py:1240 +msgid "Stock assignment notes" +msgstr "" + +#: stock/serializers.py:1250 stock/serializers.py:1504 +msgid "A list of stock items must be provided" +msgstr "" + +#: stock/serializers.py:1329 +msgid "Stock merging notes" +msgstr "" + +#: stock/serializers.py:1334 +msgid "Allow mismatched suppliers" +msgstr "" + +#: stock/serializers.py:1335 +msgid "Allow stock items with different supplier parts to be merged" +msgstr "" + +#: stock/serializers.py:1340 +msgid "Allow mismatched status" +msgstr "" + +#: stock/serializers.py:1341 +msgid "Allow stock items with different status codes to be merged" +msgstr "" + +#: stock/serializers.py:1351 +msgid "At least two stock items must be provided" +msgstr "" + +#: stock/serializers.py:1418 +msgid "No Change" +msgstr "" + +#: stock/serializers.py:1447 +msgid "StockItem primary key value" +msgstr "" + +#: stock/serializers.py:1466 +msgid "Stock item status code" +msgstr "" + +#: stock/serializers.py:1494 +msgid "Stock transaction notes" +msgstr "" + +#: stock/status_codes.py:11 +msgid "OK" +msgstr "" + +#: stock/status_codes.py:12 +msgid "Attention needed" +msgstr "" + +#: stock/status_codes.py:13 +msgid "Damaged" +msgstr "" + +#: stock/status_codes.py:14 +msgid "Destroyed" +msgstr "" + +#: stock/status_codes.py:15 +msgid "Rejected" +msgstr "" + +#: stock/status_codes.py:19 +msgid "Quarantined" +msgstr "" + +#: stock/status_codes.py:40 +msgid "Legacy stock tracking entry" +msgstr "" + +#: stock/status_codes.py:42 templates/js/translated/stock.js:544 +msgid "Stock item created" +msgstr "" + +#: stock/status_codes.py:45 +msgid "Edited stock item" +msgstr "" + +#: stock/status_codes.py:46 +msgid "Assigned serial number" +msgstr "" + +#: stock/status_codes.py:49 +msgid "Stock counted" +msgstr "" + +#: stock/status_codes.py:50 +msgid "Stock manually added" +msgstr "" + +#: stock/status_codes.py:51 +msgid "Stock manually removed" +msgstr "" + +#: stock/status_codes.py:54 +msgid "Location changed" +msgstr "" + +#: stock/status_codes.py:55 +msgid "Stock updated" +msgstr "" + +#: stock/status_codes.py:58 +msgid "Installed into assembly" +msgstr "" + +#: stock/status_codes.py:59 +msgid "Removed from assembly" +msgstr "" + +#: stock/status_codes.py:61 +msgid "Installed component item" +msgstr "" + +#: stock/status_codes.py:62 +msgid "Removed component item" +msgstr "" + +#: stock/status_codes.py:65 +msgid "Split from parent item" +msgstr "" + +#: stock/status_codes.py:66 +msgid "Split child item" +msgstr "" + +#: stock/status_codes.py:69 templates/js/translated/stock.js:1858 +msgid "Merged stock items" +msgstr "" + +#: stock/status_codes.py:72 +msgid "Converted to variant" +msgstr "" + +#: stock/status_codes.py:75 +msgid "Build order output created" +msgstr "" + +#: stock/status_codes.py:76 +msgid "Build order output completed" +msgstr "" + +#: stock/status_codes.py:77 +msgid "Build order output rejected" +msgstr "" + +#: stock/status_codes.py:78 templates/js/translated/stock.js:1764 +msgid "Consumed by build order" +msgstr "" + +#: stock/status_codes.py:81 +msgid "Shipped against Sales Order" +msgstr "" + +#: stock/status_codes.py:84 +msgid "Received against Purchase Order" +msgstr "" + +#: stock/status_codes.py:87 +msgid "Returned against Return Order" +msgstr "" + +#: stock/status_codes.py:90 templates/js/translated/table_filters.js:375 +msgid "Sent to customer" +msgstr "" + +#: stock/status_codes.py:91 +msgid "Returned from customer" +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:276 +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:3271 +msgid "Install Stock Item" +msgstr "" + +#: stock/templates/stock/item.html:264 +msgid "Delete all test results for this stock item" +msgstr "" + +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 +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:1824 +msgid "Count stock" +msgstr "" + +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1806 +msgid "Add stock" +msgstr "" + +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1815 +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:1833 +msgid "Transfer stock" +msgstr "" + +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1887 +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:2123 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:2380 +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:174 +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:504 +#: templates/js/translated/stock.js:1952 +msgid "stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:527 +msgid "Edit Stock Status" +msgstr "" + +#: stock/templates/stock/item_base.html:536 +msgid "Stock Item QR Code" +msgstr "" + +#: stock/templates/stock/item_base.html:547 +msgid "Link Barcode to Stock Item" +msgstr "" + +#: stock/templates/stock/item_base.html:611 +msgid "Select one of the part variants listed below." +msgstr "" + +#: stock/templates/stock/item_base.html:614 +msgid "Warning" +msgstr "" + +#: stock/templates/stock/item_base.html:615 +msgid "This action cannot be easily undone" +msgstr "" + +#: stock/templates/stock/item_base.html:623 +msgid "Convert Stock Item" +msgstr "" + +#: stock/templates/stock/item_base.html:657 +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:176 +msgid "Location Type" +msgstr "" + +#: stock/templates/stock/location.html:226 +msgid "Create new stock location" +msgstr "" + +#: stock/templates/stock/location.html:227 +msgid "New Location" +msgstr "" + +#: stock/templates/stock/location.html:299 +#: templates/js/translated/stock.js:2572 +msgid "stock location" +msgstr "" + +#: stock/templates/stock/location.html:321 +msgid "Scanned stock container into this location" +msgstr "" + +#: stock/templates/stock/location.html:394 +msgid "Stock Location QR Code" +msgstr "" + +#: stock/templates/stock/location.html:405 +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:27 templates/account/signup.html:5 +#: templates/socialaccount/signup.html:5 +msgid "Signup" +msgstr "" + +#: templates/InvenTree/settings/login.html:36 +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:43 +msgid "Part Import" +msgstr "" + +#: templates/InvenTree/settings/part.html:47 +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:38 +#: templates/InvenTree/settings/sidebar.html:66 +msgid "Plugins" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:44 +#: templates/InvenTree/settings/plugin.html:45 +#: templates/js/translated/plugin.js:151 +msgid "Install Plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:47 +#: templates/InvenTree/settings/plugin.html:48 +#: templates/js/translated/plugin.js:224 +msgid "Reload Plugins" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:58 +msgid "External plugins are not enabled for this InvenTree installation" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:73 +msgid "Plugin Error Stack" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:82 +msgid "Stage" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:84 +#: 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:496 +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:500 +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:35 +msgid "Exchange Rates" +msgstr "" + +#: templates/InvenTree/settings/pricing.html:39 +msgid "Update Now" +msgstr "" + +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 +msgid "Last Update" +msgstr "" + +#: templates/InvenTree/settings/pricing.html:51 +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:547 templates/js/translated/helpers.js:105 +#: templates/js/translated/part.js:393 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:402 +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:2228 +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:1646 +msgid "Edit Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:309 +#: templates/js/translated/part.js:1647 +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:38 +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:2167 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:34 +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:957 +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:171 +msgid "Active Sessions" +msgstr "" + +#: templates/InvenTree/settings/user.html:177 +msgid "Log out active sessions (except this one)" +msgstr "" + +#: templates/InvenTree/settings/user.html:178 +msgid "Log Out Active Sessions" +msgstr "" + +#: templates/InvenTree/settings/user.html:187 +msgid "unknown on unknown" +msgstr "" + +#: templates/InvenTree/settings/user.html:188 +msgid "unknown" +msgstr "" + +#: templates/InvenTree/settings/user.html:192 +msgid "IP Address" +msgstr "" + +#: templates/InvenTree/settings/user.html:193 +msgid "Device" +msgstr "" + +#: templates/InvenTree/settings/user.html:194 +msgid "Last Activity" +msgstr "" + +#: templates/InvenTree/settings/user.html:207 +#, python-format +msgid "%(time)s ago (this session)" +msgstr "" + +#: templates/InvenTree/settings/user.html:209 +#, python-format +msgid "%(time)s ago" +msgstr "" + +#: templates/InvenTree/settings/user.html:223 +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:589 +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:774 +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:19 +#: templates/account/login.html:40 templates/socialaccount/login.html:5 +msgid "Sign In" +msgstr "" + +#: templates/account/login.html:23 +msgid "Not a member?" +msgstr "" + +#: templates/account/login.html:25 templates/account/signup.html:11 +#: templates/account/signup.html:22 templates/socialaccount/signup.html:8 +#: templates/socialaccount/signup.html:23 +msgid "Sign Up" +msgstr "" + +#: templates/account/login.html:47 +msgid "Forgot Password?" +msgstr "" + +#: templates/account/login.html:55 +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:45 +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:30 +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:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 +msgid "Step 2" +msgstr "" + +#: templates/allauth_2fa/setup.html:28 +msgid "Input a token generated by the app:" +msgstr "" + +#: templates/allauth_2fa/setup.html:38 +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:1674 templates/js/translated/build.js:2556 +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:3219 +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:260 +msgid "Attachment actions" +msgstr "" + +#: templates/js/translated/attachment.js:294 +msgid "No attachments found" +msgstr "" + +#: templates/js/translated/attachment.js:334 +msgid "Edit Attachment" +msgstr "" + +#: templates/js/translated/attachment.js:365 +msgid "Upload Date" +msgstr "" + +#: templates/js/translated/attachment.js:385 +msgid "Edit attachment" +msgstr "" + +#: templates/js/translated/attachment.js:393 +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:1158 +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:797 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:2500 +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:1184 templates/js/translated/build.js:2621 +msgid "External stock" +msgstr "" + +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2595 +#: templates/js/translated/sales_order.js:1946 +msgid "No Stock Available" +msgstr "" + +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2599 +msgid "Includes variant and substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 +#: templates/js/translated/part.js:1257 +#: templates/js/translated/sales_order.js:1943 +msgid "Includes variant stock" +msgstr "" + +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2603 +msgid "Includes substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2586 +msgid "Consumable item" +msgstr "" + +#: templates/js/translated/bom.js:1285 +msgid "Validate BOM Item" +msgstr "" + +#: templates/js/translated/bom.js:1287 +msgid "This line has been validated" +msgstr "" + +#: templates/js/translated/bom.js:1289 +msgid "Edit substitute parts" +msgstr "" + +#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486 +msgid "Edit BOM Item" +msgstr "" + +#: templates/js/translated/bom.js:1293 +msgid "Delete BOM Item" +msgstr "" + +#: templates/js/translated/bom.js:1313 +msgid "View BOM" +msgstr "" + +#: templates/js/translated/bom.js:1397 +msgid "No BOM items found" +msgstr "" + +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2485 +msgid "Required Part" +msgstr "" + +#: templates/js/translated/bom.js:1683 +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:991 templates/js/translated/build.js:2344 +msgid "Allocated Quantity" +msgstr "" + +#: templates/js/translated/build.js:1005 +msgid "Location not specified" +msgstr "" + +#: templates/js/translated/build.js:1027 +msgid "Complete outputs" +msgstr "" + +#: templates/js/translated/build.js:1045 +msgid "Scrap outputs" +msgstr "" + +#: templates/js/translated/build.js:1063 +msgid "Delete outputs" +msgstr "" + +#: templates/js/translated/build.js:1116 +msgid "build output" +msgstr "" + +#: templates/js/translated/build.js:1117 +msgid "build outputs" +msgstr "" + +#: templates/js/translated/build.js:1121 +msgid "Build output actions" +msgstr "" + +#: templates/js/translated/build.js:1297 +msgid "No active build outputs found" +msgstr "" + +#: templates/js/translated/build.js:1390 +msgid "Allocated Lines" +msgstr "" + +#: templates/js/translated/build.js:1404 +msgid "Required Tests" +msgstr "" + +#: templates/js/translated/build.js:1576 +#: templates/js/translated/purchase_order.js:611 +#: templates/js/translated/sales_order.js:1207 +msgid "Select Parts" +msgstr "" + +#: templates/js/translated/build.js:1577 +#: templates/js/translated/sales_order.js:1208 +msgid "You must select at least one part to allocate" +msgstr "" + +#: templates/js/translated/build.js:1640 +#: templates/js/translated/sales_order.js:1157 +msgid "Specify stock allocation quantity" +msgstr "" + +#: templates/js/translated/build.js:1717 +msgid "All Parts Allocated" +msgstr "" + +#: templates/js/translated/build.js:1718 +msgid "All selected parts have been fully allocated" +msgstr "" + +#: templates/js/translated/build.js:1732 +#: templates/js/translated/sales_order.js:1222 +msgid "Select source location (leave blank to take from all locations)" +msgstr "" + +#: templates/js/translated/build.js:1760 +msgid "Allocate Stock Items to Build Order" +msgstr "" + +#: templates/js/translated/build.js:1771 +#: templates/js/translated/sales_order.js:1319 +msgid "No matching stock locations" +msgstr "" + +#: templates/js/translated/build.js:1844 +#: templates/js/translated/sales_order.js:1398 +msgid "No matching stock items" +msgstr "" + +#: templates/js/translated/build.js:1941 +msgid "Automatic Stock Allocation" +msgstr "" + +#: templates/js/translated/build.js:1942 +msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" +msgstr "" + +#: templates/js/translated/build.js:1944 +msgid "If a location is specified, stock will only be allocated from that location" +msgstr "" + +#: templates/js/translated/build.js:1945 +msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" +msgstr "" + +#: templates/js/translated/build.js:1946 +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:1977 +msgid "Allocate Stock Items" +msgstr "" + +#: templates/js/translated/build.js:2082 +msgid "No builds matching query" +msgstr "" + +#: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 +#: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 +#: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 +msgid "Select" +msgstr "" + +#: templates/js/translated/build.js:2131 +msgid "Build order is overdue" +msgstr "" + +#: templates/js/translated/build.js:2213 templates/js/translated/stock.js:3042 +msgid "No user information" +msgstr "" + +#: templates/js/translated/build.js:2389 +#: templates/js/translated/sales_order.js:1682 +msgid "Edit stock allocation" +msgstr "" + +#: templates/js/translated/build.js:2390 +#: templates/js/translated/sales_order.js:1683 +msgid "Delete stock allocation" +msgstr "" + +#: templates/js/translated/build.js:2405 +msgid "Edit Allocation" +msgstr "" + +#: templates/js/translated/build.js:2417 +msgid "Remove Allocation" +msgstr "" + +#: templates/js/translated/build.js:2455 +msgid "build line" +msgstr "" + +#: templates/js/translated/build.js:2456 +msgid "build lines" +msgstr "" + +#: templates/js/translated/build.js:2474 +msgid "No build lines found" +msgstr "" + +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:791 +#: templates/js/translated/part.js:1203 +msgid "Trackable part" +msgstr "" + +#: templates/js/translated/build.js:2539 +msgid "Unit Quantity" +msgstr "" + +#: templates/js/translated/build.js:2591 +#: templates/js/translated/sales_order.js:1951 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2646 +msgid "Consumable Item" +msgstr "" + +#: templates/js/translated/build.js:2653 +msgid "Tracked item" +msgstr "" + +#: templates/js/translated/build.js:2654 +msgid "Allocate tracked items against individual build outputs" +msgstr "" + +#: templates/js/translated/build.js:2662 +#: templates/js/translated/sales_order.js:2052 +msgid "Build stock" +msgstr "" + +#: templates/js/translated/build.js:2667 templates/js/translated/stock.js:1868 +msgid "Order stock" +msgstr "" + +#: templates/js/translated/build.js:2671 +#: templates/js/translated/sales_order.js:2046 +msgid "Allocate stock" +msgstr "" + +#: templates/js/translated/build.js:2675 +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:318 +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:466 +msgid "Add new Company" +msgstr "" + +#: templates/js/translated/company.js:546 +msgid "Parts Supplied" +msgstr "" + +#: templates/js/translated/company.js:555 +msgid "Parts Manufactured" +msgstr "" + +#: templates/js/translated/company.js:570 +msgid "No company information found" +msgstr "" + +#: templates/js/translated/company.js:619 +msgid "Create New Contact" +msgstr "" + +#: templates/js/translated/company.js:635 +#: templates/js/translated/company.js:758 +msgid "Edit Contact" +msgstr "" + +#: templates/js/translated/company.js:672 +msgid "All selected contacts will be deleted" +msgstr "" + +#: templates/js/translated/company.js:678 +#: templates/js/translated/company.js:742 +msgid "Role" +msgstr "" + +#: templates/js/translated/company.js:686 +msgid "Delete Contacts" +msgstr "" + +#: templates/js/translated/company.js:717 +msgid "No contacts found" +msgstr "" + +#: templates/js/translated/company.js:730 +msgid "Phone Number" +msgstr "" + +#: templates/js/translated/company.js:736 +msgid "Email Address" +msgstr "" + +#: templates/js/translated/company.js:762 +msgid "Delete Contact" +msgstr "" + +#: templates/js/translated/company.js:859 +msgid "Create New Address" +msgstr "" + +#: templates/js/translated/company.js:874 +#: templates/js/translated/company.js:1035 +msgid "Edit Address" +msgstr "" + +#: templates/js/translated/company.js:909 +msgid "All selected addresses will be deleted" +msgstr "" + +#: templates/js/translated/company.js:923 +msgid "Delete Addresses" +msgstr "" + +#: templates/js/translated/company.js:950 +msgid "No addresses found" +msgstr "" + +#: templates/js/translated/company.js:989 +msgid "Postal city" +msgstr "" + +#: templates/js/translated/company.js:995 +msgid "State/province" +msgstr "" + +#: templates/js/translated/company.js:1007 +msgid "Courier notes" +msgstr "" + +#: templates/js/translated/company.js:1013 +msgid "Internal notes" +msgstr "" + +#: templates/js/translated/company.js:1039 +msgid "Delete Address" +msgstr "" + +#: templates/js/translated/company.js:1112 +msgid "All selected manufacturer parts will be deleted" +msgstr "" + +#: templates/js/translated/company.js:1127 +msgid "Delete Manufacturer Parts" +msgstr "" + +#: templates/js/translated/company.js:1161 +msgid "All selected parameters will be deleted" +msgstr "" + +#: templates/js/translated/company.js:1175 +msgid "Delete Parameters" +msgstr "" + +#: templates/js/translated/company.js:1191 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2245 +msgid "Order parts" +msgstr "" + +#: templates/js/translated/company.js:1208 +msgid "Delete manufacturer parts" +msgstr "" + +#: templates/js/translated/company.js:1240 +msgid "Manufacturer part actions" +msgstr "" + +#: templates/js/translated/company.js:1259 +msgid "No manufacturer parts found" +msgstr "" + +#: templates/js/translated/company.js:1279 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 +msgid "Template part" +msgstr "" + +#: templates/js/translated/company.js:1283 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:803 +#: templates/js/translated/part.js:1215 +msgid "Assembled part" +msgstr "" + +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1465 +msgid "No parameters found" +msgstr "" + +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1528 +msgid "Edit parameter" +msgstr "" + +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1529 +msgid "Delete parameter" +msgstr "" + +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1434 +msgid "Edit Parameter" +msgstr "" + +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1550 +msgid "Delete Parameter" +msgstr "" + +#: templates/js/translated/company.js:1496 +msgid "Delete supplier parts" +msgstr "" + +#: templates/js/translated/company.js:1546 +msgid "No supplier parts found" +msgstr "" + +#: templates/js/translated/company.js:1664 +msgid "Base Units" +msgstr "" + +#: templates/js/translated/company.js:1694 +msgid "Availability" +msgstr "" + +#: templates/js/translated/company.js:1725 +msgid "Edit supplier part" +msgstr "" + +#: templates/js/translated/company.js:1726 +msgid "Delete supplier part" +msgstr "" + +#: templates/js/translated/company.js:1779 +#: templates/js/translated/pricing.js:694 +msgid "Delete Price Break" +msgstr "" + +#: templates/js/translated/company.js:1789 +#: templates/js/translated/pricing.js:712 +msgid "Edit Price Break" +msgstr "" + +#: templates/js/translated/company.js:1804 +msgid "No price break information found" +msgstr "" + +#: templates/js/translated/company.js:1833 +msgid "Last updated" +msgstr "" + +#: templates/js/translated/company.js:1840 +msgid "Edit price break" +msgstr "" + +#: templates/js/translated/company.js:1841 +msgid "Delete price break" +msgstr "" + +#: templates/js/translated/filters.js:186 +#: templates/js/translated/filters.js:667 +msgid "true" +msgstr "" + +#: templates/js/translated/filters.js:190 +#: templates/js/translated/filters.js:668 +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:577 +msgid "Create filter" +msgstr "" + +#: templates/js/translated/forms.js:378 templates/js/translated/forms.js:393 +#: templates/js/translated/forms.js:407 templates/js/translated/forms.js:421 +msgid "Action Prohibited" +msgstr "" + +#: templates/js/translated/forms.js:380 +msgid "Create operation not allowed" +msgstr "" + +#: templates/js/translated/forms.js:395 +msgid "Update operation not allowed" +msgstr "" + +#: templates/js/translated/forms.js:409 +msgid "Delete operation not allowed" +msgstr "" + +#: templates/js/translated/forms.js:423 +msgid "View operation not allowed" +msgstr "" + +#: templates/js/translated/forms.js:800 +msgid "Keep this form open" +msgstr "" + +#: templates/js/translated/forms.js:903 +msgid "Enter a valid number" +msgstr "" + +#: templates/js/translated/forms.js:1477 templates/modals.html:19 +#: templates/modals.html:43 +msgid "Form errors exist" +msgstr "" + +#: templates/js/translated/forms.js:1975 +msgid "No results found" +msgstr "" + +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 +msgid "Searching" +msgstr "" + +#: templates/js/translated/forms.js:2500 +msgid "Clear input" +msgstr "" + +#: templates/js/translated/forms.js:3102 +msgid "File Column" +msgstr "" + +#: templates/js/translated/forms.js:3102 +msgid "Field Name" +msgstr "" + +#: templates/js/translated/forms.js:3114 +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:55 templates/js/translated/report.js:38 +msgid "Select Items" +msgstr "" + +#: templates/js/translated/label.js:56 templates/js/translated/report.js:39 +msgid "No items selected for printing" +msgstr "" + +#: templates/js/translated/label.js:150 +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:1605 +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:1990 +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:333 templates/js/translated/stock.js:175 +msgid "Icon (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/part.js:353 +msgid "Create Part Category" +msgstr "" + +#: templates/js/translated/part.js:356 +msgid "Create new category after this one" +msgstr "" + +#: templates/js/translated/part.js:357 +msgid "Part category created" +msgstr "" + +#: templates/js/translated/part.js:371 +msgid "Edit Part Category" +msgstr "" + +#: templates/js/translated/part.js:384 +msgid "Are you sure you want to delete this part category?" +msgstr "" + +#: templates/js/translated/part.js:389 +msgid "Move to parent category" +msgstr "" + +#: templates/js/translated/part.js:398 +msgid "Delete Part Category" +msgstr "" + +#: templates/js/translated/part.js:402 +msgid "Action for parts in this category" +msgstr "" + +#: templates/js/translated/part.js:407 +msgid "Action for child categories" +msgstr "" + +#: templates/js/translated/part.js:431 +msgid "Create Part" +msgstr "" + +#: templates/js/translated/part.js:433 +msgid "Create another part after this one" +msgstr "" + +#: templates/js/translated/part.js:434 +msgid "Part created successfully" +msgstr "" + +#: templates/js/translated/part.js:462 +msgid "Edit Part" +msgstr "" + +#: templates/js/translated/part.js:464 +msgid "Part edited" +msgstr "" + +#: templates/js/translated/part.js:475 +msgid "Create Part Variant" +msgstr "" + +#: templates/js/translated/part.js:532 +msgid "Active Part" +msgstr "" + +#: templates/js/translated/part.js:533 +msgid "Part cannot be deleted as it is currently active" +msgstr "" + +#: templates/js/translated/part.js:547 +msgid "Deleting this part cannot be reversed" +msgstr "" + +#: templates/js/translated/part.js:549 +msgid "Any stock items for this part will be deleted" +msgstr "" + +#: templates/js/translated/part.js:550 +msgid "This part will be removed from any Bills of Material" +msgstr "" + +#: templates/js/translated/part.js:551 +msgid "All manufacturer and supplier information for this part will be deleted" +msgstr "" + +#: templates/js/translated/part.js:558 +msgid "Delete Part" +msgstr "" + +#: templates/js/translated/part.js:594 +msgid "You are subscribed to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:596 +msgid "You have subscribed to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:601 +msgid "Subscribe to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:603 +msgid "You have unsubscribed to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:620 +msgid "Validating the BOM will mark each line item as valid" +msgstr "" + +#: templates/js/translated/part.js:630 +msgid "Validate Bill of Materials" +msgstr "" + +#: templates/js/translated/part.js:633 +msgid "Validated Bill of Materials" +msgstr "" + +#: templates/js/translated/part.js:658 +msgid "Copy Bill of Materials" +msgstr "" + +#: templates/js/translated/part.js:686 +#: templates/js/translated/table_filters.js:747 +msgid "Low stock" +msgstr "" + +#: templates/js/translated/part.js:689 +msgid "No stock available" +msgstr "" + +#: templates/js/translated/part.js:749 +msgid "Demand" +msgstr "" + +#: templates/js/translated/part.js:772 +msgid "Unit" +msgstr "" + +#: templates/js/translated/part.js:795 templates/js/translated/part.js:1207 +msgid "Virtual part" +msgstr "" + +#: templates/js/translated/part.js:807 +msgid "Subscribed part" +msgstr "" + +#: templates/js/translated/part.js:811 +msgid "Salable part" +msgstr "" + +#: templates/js/translated/part.js:890 +msgid "Schedule generation of a new stocktake report." +msgstr "" + +#: templates/js/translated/part.js:890 +msgid "Once complete, the stocktake report will be available for download." +msgstr "" + +#: templates/js/translated/part.js:898 +msgid "Generate Stocktake Report" +msgstr "" + +#: templates/js/translated/part.js:902 +msgid "Stocktake report scheduled" +msgstr "" + +#: templates/js/translated/part.js:1051 +msgid "No stocktake information available" +msgstr "" + +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1145 +msgid "Edit Stocktake Entry" +msgstr "" + +#: templates/js/translated/part.js:1113 templates/js/translated/part.js:1155 +msgid "Delete Stocktake Entry" +msgstr "" + +#: templates/js/translated/part.js:1282 +msgid "No variants found" +msgstr "" + +#: templates/js/translated/part.js:1600 +msgid "No part parameter templates found" +msgstr "" + +#: templates/js/translated/part.js:1663 +msgid "Edit Part Parameter Template" +msgstr "" + +#: templates/js/translated/part.js:1675 +msgid "Any parameters which reference this template will also be deleted" +msgstr "" + +#: templates/js/translated/part.js:1683 +msgid "Delete Part Parameter Template" +msgstr "" + +#: templates/js/translated/part.js:1717 +#: templates/js/translated/purchase_order.js:1654 +msgid "No purchase orders found" +msgstr "" + +#: templates/js/translated/part.js:1861 +#: templates/js/translated/purchase_order.js:2153 +#: templates/js/translated/return_order.js:755 +#: templates/js/translated/sales_order.js:1911 +msgid "This line item is overdue" +msgstr "" + +#: templates/js/translated/part.js:1907 +#: templates/js/translated/purchase_order.js:2220 +msgid "Receive line item" +msgstr "" + +#: templates/js/translated/part.js:1970 +msgid "Delete part relationship" +msgstr "" + +#: templates/js/translated/part.js:1992 +msgid "Delete Part Relationship" +msgstr "" + +#: templates/js/translated/part.js:2080 templates/js/translated/part.js:2506 +msgid "No parts found" +msgstr "" + +#: templates/js/translated/part.js:2201 +msgid "Set the part category for the selected parts" +msgstr "" + +#: templates/js/translated/part.js:2206 +msgid "Set Part Category" +msgstr "" + +#: templates/js/translated/part.js:2236 +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:2669 +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:2689 +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:2865 +msgid "No test templates matching query" +msgstr "" + +#: templates/js/translated/part.js:2887 templates/js/translated/search.js:342 +msgid "results" +msgstr "" + +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1456 +msgid "Edit test result" +msgstr "" + +#: templates/js/translated/part.js:2938 templates/js/translated/stock.js:1457 +#: templates/js/translated/stock.js:1731 +msgid "Delete test result" +msgstr "" + +#: templates/js/translated/part.js:2942 +msgid "This test is defined for a parent part" +msgstr "" + +#: templates/js/translated/part.js:2958 +msgid "Edit Test Result Template" +msgstr "" + +#: templates/js/translated/part.js:2972 +msgid "Delete Test Result Template" +msgstr "" + +#: templates/js/translated/part.js:3051 templates/js/translated/part.js:3052 +msgid "No date specified" +msgstr "" + +#: templates/js/translated/part.js:3054 +msgid "Specified date is in the past" +msgstr "" + +#: templates/js/translated/part.js:3060 +msgid "Speculative" +msgstr "" + +#: templates/js/translated/part.js:3110 +msgid "No scheduling information available for this part" +msgstr "" + +#: templates/js/translated/part.js:3116 +msgid "Error fetching scheduling information for this part" +msgstr "" + +#: templates/js/translated/part.js:3212 +msgid "Scheduled Stock Quantities" +msgstr "" + +#: templates/js/translated/part.js:3228 +msgid "Maximum Quantity" +msgstr "" + +#: templates/js/translated/part.js:3273 +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:431 +msgid "Complete Purchase Order" +msgstr "" + +#: templates/js/translated/purchase_order.js:448 +#: templates/js/translated/return_order.js:210 +#: templates/js/translated/sales_order.js:552 +msgid "Mark this order as complete?" +msgstr "" + +#: templates/js/translated/purchase_order.js:454 +msgid "All line items have been received" +msgstr "" + +#: templates/js/translated/purchase_order.js:459 +msgid "This order has line items which have not been marked as received." +msgstr "" + +#: templates/js/translated/purchase_order.js:460 +msgid "Completing this order means that the order and line items will no longer be editable." +msgstr "" + +#: templates/js/translated/purchase_order.js:483 +msgid "Cancel Purchase Order" +msgstr "" + +#: templates/js/translated/purchase_order.js:488 +msgid "Are you sure you wish to cancel this purchase order?" +msgstr "" + +#: templates/js/translated/purchase_order.js:494 +msgid "This purchase order can not be cancelled" +msgstr "" + +#: templates/js/translated/purchase_order.js:515 +#: 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:520 +msgid "Issue Purchase Order" +msgstr "" + +#: templates/js/translated/purchase_order.js:612 +msgid "At least one purchaseable part must be selected" +msgstr "" + +#: templates/js/translated/purchase_order.js:637 +msgid "Quantity to order" +msgstr "" + +#: templates/js/translated/purchase_order.js:646 +msgid "New supplier part" +msgstr "" + +#: templates/js/translated/purchase_order.js:664 +msgid "New purchase order" +msgstr "" + +#: templates/js/translated/purchase_order.js:705 +msgid "Add to purchase order" +msgstr "" + +#: templates/js/translated/purchase_order.js:755 +msgid "Merge" +msgstr "" + +#: templates/js/translated/purchase_order.js:859 +msgid "No matching supplier parts" +msgstr "" + +#: templates/js/translated/purchase_order.js:878 +msgid "No matching purchase orders" +msgstr "" + +#: templates/js/translated/purchase_order.js:1073 +#: templates/js/translated/return_order.js:490 +msgid "Select Line Items" +msgstr "" + +#: templates/js/translated/purchase_order.js:1074 +#: templates/js/translated/return_order.js:491 +msgid "At least one line item must be selected" +msgstr "" + +#: templates/js/translated/purchase_order.js:1104 +msgid "Received Quantity" +msgstr "" + +#: templates/js/translated/purchase_order.js:1115 +msgid "Quantity to receive" +msgstr "" + +#: templates/js/translated/purchase_order.js:1191 +msgid "Stock Status" +msgstr "" + +#: templates/js/translated/purchase_order.js:1205 +msgid "Add barcode" +msgstr "" + +#: templates/js/translated/purchase_order.js:1206 +msgid "Remove barcode" +msgstr "" + +#: templates/js/translated/purchase_order.js:1209 +msgid "Specify location" +msgstr "" + +#: templates/js/translated/purchase_order.js:1217 +msgid "Add batch code" +msgstr "" + +#: templates/js/translated/purchase_order.js:1228 +msgid "Add serial numbers" +msgstr "" + +#: templates/js/translated/purchase_order.js:1280 +msgid "Serials" +msgstr "" + +#: templates/js/translated/purchase_order.js:1305 +msgid "Order Code" +msgstr "" + +#: templates/js/translated/purchase_order.js:1307 +msgid "Quantity to Receive" +msgstr "" + +#: templates/js/translated/purchase_order.js:1333 +#: templates/js/translated/return_order.js:560 +msgid "Confirm receipt of items" +msgstr "" + +#: templates/js/translated/purchase_order.js:1334 +msgid "Receive Purchase Order Items" +msgstr "" + +#: templates/js/translated/purchase_order.js:1402 +msgid "Scan Item Barcode" +msgstr "" + +#: templates/js/translated/purchase_order.js:1403 +msgid "Scan barcode on incoming item (must not match any existing stock items)" +msgstr "" + +#: templates/js/translated/purchase_order.js:1417 +msgid "Invalid barcode data" +msgstr "" + +#: templates/js/translated/purchase_order.js:1681 +#: templates/js/translated/return_order.js:285 +#: templates/js/translated/sales_order.js:810 +#: templates/js/translated/sales_order.js:1034 +msgid "Order is overdue" +msgstr "" + +#: templates/js/translated/purchase_order.js:1843 +msgid "All selected Line items will be deleted" +msgstr "" + +#: templates/js/translated/purchase_order.js:1861 +msgid "Delete selected Line items?" +msgstr "" + +#: templates/js/translated/purchase_order.js:1916 +#: templates/js/translated/sales_order.js:2106 +msgid "Duplicate Line Item" +msgstr "" + +#: templates/js/translated/purchase_order.js:1931 +#: templates/js/translated/return_order.js:475 +#: templates/js/translated/return_order.js:668 +#: templates/js/translated/sales_order.js:2119 +msgid "Edit Line Item" +msgstr "" + +#: templates/js/translated/purchase_order.js:1942 +#: templates/js/translated/return_order.js:681 +#: templates/js/translated/sales_order.js:2130 +msgid "Delete Line Item" +msgstr "" + +#: templates/js/translated/purchase_order.js:2224 +#: templates/js/translated/sales_order.js:2060 +msgid "Duplicate line item" +msgstr "" + +#: templates/js/translated/purchase_order.js:2225 +#: templates/js/translated/return_order.js:800 +#: templates/js/translated/sales_order.js:2061 +msgid "Edit line item" +msgstr "" + +#: templates/js/translated/purchase_order.js:2226 +#: templates/js/translated/return_order.js:804 +#: templates/js/translated/sales_order.js:2067 +msgid "Delete line item" +msgstr "" + +#: templates/js/translated/report.js:49 +msgid "Print Report" +msgstr "" + +#: templates/js/translated/report.js:68 +msgid "Report print successful" +msgstr "" + +#: templates/js/translated/report.js:73 +msgid "Report printing failed" +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:265 +msgid "No return orders found" +msgstr "" + +#: templates/js/translated/return_order.js:299 +#: templates/js/translated/sales_order.js:824 +msgid "Invalid Customer" +msgstr "" + +#: templates/js/translated/return_order.js:561 +msgid "Receive Return Order Items" +msgstr "" + +#: templates/js/translated/return_order.js:692 +#: templates/js/translated/sales_order.js:2267 +msgid "No matching line items" +msgstr "" + +#: templates/js/translated/return_order.js:797 +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:484 +msgid "Ship Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:500 +msgid "Ship this order?" +msgstr "" + +#: templates/js/translated/sales_order.js:506 +msgid "Order cannot be shipped as there are incomplete shipments" +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:514 +msgid "Shipping this order means that the order and line items will no longer be editable." +msgstr "" + +#: templates/js/translated/sales_order.js:572 +msgid "Issue this Sales Order?" +msgstr "" + +#: templates/js/translated/sales_order.js:577 +msgid "Issue Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:596 +msgid "Cancel Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:601 +msgid "Cancelling this order means that the order will no longer be editable." +msgstr "" + +#: templates/js/translated/sales_order.js:655 +msgid "Create New Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:764 +msgid "No sales orders found" +msgstr "" + +#: templates/js/translated/sales_order.js:944 +msgid "Edit shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:947 +msgid "Complete shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:952 +msgid "Delete shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:969 +msgid "Edit Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:984 +msgid "Delete Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:1017 +msgid "No matching shipments found" +msgstr "" + +#: templates/js/translated/sales_order.js:1042 +msgid "Shipment Reference" +msgstr "" + +#: templates/js/translated/sales_order.js:1066 +#: templates/js/translated/sales_order.js:1565 +msgid "Not shipped" +msgstr "" + +#: templates/js/translated/sales_order.js:1084 +msgid "Tracking" +msgstr "" + +#: templates/js/translated/sales_order.js:1088 +msgid "Invoice" +msgstr "" + +#: templates/js/translated/sales_order.js:1255 +msgid "Add Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:1306 +msgid "Confirm stock allocation" +msgstr "" + +#: templates/js/translated/sales_order.js:1307 +msgid "Allocate Stock Items to Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:1513 +msgid "No sales order allocations found" +msgstr "" + +#: templates/js/translated/sales_order.js:1605 +msgid "Edit Stock Allocation" +msgstr "" + +#: templates/js/translated/sales_order.js:1619 +msgid "Confirm Delete Operation" +msgstr "" + +#: templates/js/translated/sales_order.js:1620 +msgid "Delete Stock Allocation" +msgstr "" + +#: templates/js/translated/sales_order.js:1659 +#: templates/js/translated/sales_order.js:1746 +#: templates/js/translated/stock.js:1776 +msgid "Shipped to customer" +msgstr "" + +#: templates/js/translated/sales_order.js:1667 +#: templates/js/translated/sales_order.js:1755 +msgid "Stock location not specified" +msgstr "" + +#: templates/js/translated/sales_order.js:2044 +msgid "Allocate serial numbers" +msgstr "" + +#: templates/js/translated/sales_order.js:2048 +msgid "Purchase stock" +msgstr "" + +#: templates/js/translated/sales_order.js:2057 +#: templates/js/translated/sales_order.js:2245 +msgid "Calculate price" +msgstr "" + +#: templates/js/translated/sales_order.js:2071 +msgid "Cannot be deleted as items have been shipped" +msgstr "" + +#: templates/js/translated/sales_order.js:2074 +msgid "Cannot be deleted as items have been allocated" +msgstr "" + +#: templates/js/translated/sales_order.js:2145 +msgid "Allocate Serial Numbers" +msgstr "" + +#: templates/js/translated/sales_order.js:2253 +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: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: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:392 +msgid "Add" +msgstr "" + +#: templates/js/translated/stock.js:1046 +msgid "Delete Stock" +msgstr "" + +#: templates/js/translated/stock.js:1146 +msgid "Quantity cannot be adjusted for serialized stock" +msgstr "" + +#: templates/js/translated/stock.js:1146 +msgid "Specify stock quantity" +msgstr "" + +#: templates/js/translated/stock.js:1180 templates/js/translated/stock.js:3299 +msgid "Select Stock Items" +msgstr "" + +#: templates/js/translated/stock.js:1181 +msgid "Select at least one available stock item" +msgstr "" + +#: templates/js/translated/stock.js:1227 +msgid "Confirm stock adjustment" +msgstr "" + +#: templates/js/translated/stock.js:1363 +msgid "PASS" +msgstr "" + +#: templates/js/translated/stock.js:1365 +msgid "FAIL" +msgstr "" + +#: templates/js/translated/stock.js:1370 +msgid "NO RESULT" +msgstr "" + +#: templates/js/translated/stock.js:1450 +msgid "Pass test" +msgstr "" + +#: templates/js/translated/stock.js:1453 +msgid "Add test result" +msgstr "" + +#: templates/js/translated/stock.js:1476 +msgid "No test results found" +msgstr "" + +#: templates/js/translated/stock.js:1540 +msgid "Test Date" +msgstr "" + +#: templates/js/translated/stock.js:1553 +msgid "Test started" +msgstr "" + +#: templates/js/translated/stock.js:1562 +msgid "Test finished" +msgstr "" + +#: templates/js/translated/stock.js:1716 +msgid "Edit Test Result" +msgstr "" + +#: templates/js/translated/stock.js:1736 +msgid "Delete Test Result" +msgstr "" + +#: templates/js/translated/stock.js:1768 +msgid "In production" +msgstr "" + +#: templates/js/translated/stock.js:1772 +msgid "Installed in Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:1780 +msgid "Assigned to Sales Order" +msgstr "" + +#: templates/js/translated/stock.js:1786 +msgid "No stock location set" +msgstr "" + +#: templates/js/translated/stock.js:1842 +msgid "Change stock status" +msgstr "" + +#: templates/js/translated/stock.js:1851 +msgid "Merge stock" +msgstr "" + +#: templates/js/translated/stock.js:1900 +msgid "Delete stock" +msgstr "" + +#: templates/js/translated/stock.js:1953 +msgid "stock items" +msgstr "" + +#: templates/js/translated/stock.js:1958 +msgid "Scan to location" +msgstr "" + +#: templates/js/translated/stock.js:1969 +msgid "Stock Actions" +msgstr "" + +#: templates/js/translated/stock.js:2013 +msgid "Load installed items" +msgstr "" + +#: templates/js/translated/stock.js:2091 +msgid "Stock item is in production" +msgstr "" + +#: templates/js/translated/stock.js:2096 +msgid "Stock item assigned to sales order" +msgstr "" + +#: templates/js/translated/stock.js:2099 +msgid "Stock item assigned to customer" +msgstr "" + +#: templates/js/translated/stock.js:2102 +msgid "Serialized stock item has been allocated" +msgstr "" + +#: templates/js/translated/stock.js:2104 +msgid "Stock item has been fully allocated" +msgstr "" + +#: templates/js/translated/stock.js:2106 +msgid "Stock item has been partially allocated" +msgstr "" + +#: templates/js/translated/stock.js:2109 +msgid "Stock item has been installed in another item" +msgstr "" + +#: templates/js/translated/stock.js:2111 +msgid "Stock item has been consumed by a build order" +msgstr "" + +#: templates/js/translated/stock.js:2115 +msgid "Stock item has expired" +msgstr "" + +#: templates/js/translated/stock.js:2117 +msgid "Stock item will expire soon" +msgstr "" + +#: templates/js/translated/stock.js:2122 +msgid "Stock item has been rejected" +msgstr "" + +#: templates/js/translated/stock.js:2124 +msgid "Stock item is lost" +msgstr "" + +#: templates/js/translated/stock.js:2126 +msgid "Stock item is destroyed" +msgstr "" + +#: templates/js/translated/stock.js:2130 +#: templates/js/translated/table_filters.js:350 +msgid "Depleted" +msgstr "" + +#: templates/js/translated/stock.js:2295 +msgid "Supplier part not specified" +msgstr "" + +#: templates/js/translated/stock.js:2342 +msgid "Stock Value" +msgstr "" + +#: templates/js/translated/stock.js:2470 +msgid "No stock items matching query" +msgstr "" + +#: templates/js/translated/stock.js:2573 +msgid "stock locations" +msgstr "" + +#: templates/js/translated/stock.js:2728 +msgid "Load Sublocations" +msgstr "" + +#: templates/js/translated/stock.js:2846 +msgid "Details" +msgstr "" + +#: templates/js/translated/stock.js:2850 +msgid "No changes" +msgstr "" + +#: templates/js/translated/stock.js:2862 +msgid "Part information unavailable" +msgstr "" + +#: templates/js/translated/stock.js:2884 +msgid "Location no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2901 +msgid "Build order no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2916 +msgid "Purchase order no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2933 +msgid "Sales Order no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2950 +msgid "Return Order no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2969 +msgid "Customer no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2987 +msgid "Stock item no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:3005 +msgid "Added" +msgstr "" + +#: templates/js/translated/stock.js:3013 +msgid "Removed" +msgstr "" + +#: templates/js/translated/stock.js:3085 +msgid "No installed items" +msgstr "" + +#: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175 +msgid "Uninstall Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:3197 +msgid "Select stock item to uninstall" +msgstr "" + +#: templates/js/translated/stock.js:3218 +msgid "Install another stock item into this item" +msgstr "" + +#: templates/js/translated/stock.js:3219 +msgid "Stock items can only be installed if they meet the following criteria" +msgstr "" + +#: templates/js/translated/stock.js:3221 +msgid "The Stock Item links to a Part which is the BOM for this Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:3222 +msgid "The Stock Item is currently available in stock" +msgstr "" + +#: templates/js/translated/stock.js:3223 +msgid "The Stock Item is not already installed in another item" +msgstr "" + +#: templates/js/translated/stock.js:3224 +msgid "The Stock Item is tracked by either a batch code or serial number" +msgstr "" + +#: templates/js/translated/stock.js:3237 +msgid "Select part to install" +msgstr "" + +#: templates/js/translated/stock.js:3300 +msgid "Select one or more stock items" +msgstr "" + +#: templates/js/translated/stock.js:3313 +msgid "Selected stock items" +msgstr "" + +#: templates/js/translated/stock.js:3317 +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:605 +#: templates/js/translated/table_filters.js:617 +#: templates/js/translated/table_filters.js:658 +msgid "Order status" +msgstr "" + +#: templates/js/translated/table_filters.js:94 +#: templates/js/translated/table_filters.js:622 +#: templates/js/translated/table_filters.js:648 +#: templates/js/translated/table_filters.js:663 +msgid "Outstanding" +msgstr "" + +#: templates/js/translated/table_filters.js:102 +#: templates/js/translated/table_filters.js:528 +#: templates/js/translated/table_filters.js:630 +#: templates/js/translated/table_filters.js:671 +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: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:711 +msgid "Include subcategories" +msgstr "" + +#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:759 +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:700 +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:515 +msgid "Build status" +msgstr "" + +#: templates/js/translated/table_filters.js:712 +msgid "Include parts in subcategories" +msgstr "" + +#: templates/js/translated/table_filters.js:717 +msgid "Show active parts" +msgstr "" + +#: templates/js/translated/table_filters.js:725 +msgid "Available stock" +msgstr "" + +#: templates/js/translated/table_filters.js:733 +#: templates/js/translated/table_filters.js:833 +msgid "Has Units" +msgstr "" + +#: templates/js/translated/table_filters.js:734 +msgid "Part has defined units" +msgstr "" + +#: templates/js/translated/table_filters.js:738 +msgid "Has IPN" +msgstr "" + +#: templates/js/translated/table_filters.js:739 +msgid "Part has internal part number" +msgstr "" + +#: templates/js/translated/table_filters.js:743 +msgid "In stock" +msgstr "" + +#: templates/js/translated/table_filters.js:751 +msgid "Purchasable" +msgstr "" + +#: templates/js/translated/table_filters.js:763 +msgid "Has stocktake entries" +msgstr "" + +#: templates/js/translated/table_filters.js:829 +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:201 +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/pui_banner.html:9 +msgid "Platform UI - the new UI for InvenTree - provides more modern administration options." +msgstr "" + +#: templates/pui_banner.html:12 +msgid "Platform UI - the new UI for InvenTree - is ready to be tested." +msgstr "" + +#: templates/pui_banner.html:15 +msgid "Try it out now" +msgstr "" + +#: templates/pui_banner.html:15 +msgid "here" +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 "You are about to use your %(provider_name)s account to login to %(site_name)s." +msgstr "" + +#: templates/socialaccount/signup.html:13 +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:138 +msgid "Token has been revoked" +msgstr "" + +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "" + +#: users/models.py:81 +msgid "API Token" +msgstr "" + +#: users/models.py:82 +msgid "API Tokens" +msgstr "" + +#: users/models.py:118 +msgid "Token Name" +msgstr "" + +#: users/models.py:119 +msgid "Custom token name" +msgstr "" + +#: users/models.py:125 +msgid "Token expiry date" +msgstr "" + +#: users/models.py:133 +msgid "Last Seen" +msgstr "" + +#: users/models.py:134 +msgid "Last time the token was used" +msgstr "" + +#: users/models.py:138 +msgid "Revoked" +msgstr "" + +#: users/models.py:375 +msgid "Permission set" +msgstr "" + +#: users/models.py:384 +msgid "Group" +msgstr "" + +#: users/models.py:388 +msgid "View" +msgstr "" + +#: users/models.py:388 +msgid "Permission to view items" +msgstr "" + +#: users/models.py:392 +msgid "Permission to add items" +msgstr "" + +#: users/models.py:396 +msgid "Change" +msgstr "" + +#: users/models.py:398 +msgid "Permissions to edit items" +msgstr "" + +#: users/models.py:404 +msgid "Permission to delete items" +msgstr "" + diff --git a/src/backend/InvenTree/locale/ru/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/ru/LC_MESSAGES/django.po index 0fa826eaff..3a1a5a3211 100644 --- a/src/backend/InvenTree/locale/ru/LC_MESSAGES/django.po +++ b/src/backend/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-05-31 07:08+0000\n" -"PO-Revision-Date: 2024-05-27 11:54\n" +"POT-Creation-Date: 2024-06-26 03:18+0000\n" +"PO-Revision-Date: 2024-06-26 06:04\n" "Last-Translator: \n" "Language-Team: Russian\n" "Language: ru_RU\n" @@ -21,7 +21,7 @@ msgstr "" msgid "API endpoint not found" msgstr "Конечная точка API не обнаружена" -#: InvenTree/api.py:536 +#: InvenTree/api.py:520 msgid "User does not have permission to view this model" msgstr "У пользователя недостаточно прав для просмотра этой модели!" @@ -52,25 +52,25 @@ msgstr "Недопустимое количество ({exc})" msgid "Error details can be found in the admin panel" msgstr "Подробности об ошибке можно найти в панели администратора" -#: InvenTree/fields.py:139 +#: InvenTree/fields.py:136 msgid "Enter date" msgstr "Введите дату" -#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 -#: build/serializers.py:531 build/templates/build/sidebar.html:21 -#: company/models.py:849 company/templates/company/sidebar.html:37 -#: order/models.py:1332 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:205 InvenTree/models.py:918 build/serializers.py:452 +#: build/serializers.py:530 build/templates/build/sidebar.html:21 +#: company/models.py:817 company/templates/company/sidebar.html:37 +#: order/models.py:1296 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:3218 part/templates/part/part_sidebar.html:63 +#: part/models.py:3183 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_report.html:172 -#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 -#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 -#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 -#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:230 stock/models.py:2309 stock/models.py:2431 +#: stock/serializers.py:632 stock/serializers.py:790 stock/serializers.py:886 +#: stock/serializers.py:936 stock/serializers.py:1239 stock/serializers.py:1328 +#: stock/serializers.py:1493 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1080 +#: templates/js/translated/part.js:1081 #: templates/js/translated/purchase_order.js:2200 #: templates/js/translated/return_order.js:775 #: templates/js/translated/sales_order.js:1103 @@ -120,15 +120,15 @@ msgstr "Подтверждение адреса электронной почт msgid "You must type the same email each time." msgstr "Вы должны вводить один и тот же адрес электронной почты." -#: InvenTree/forms.py:253 InvenTree/forms.py:261 +#: InvenTree/forms.py:248 InvenTree/forms.py:256 msgid "The provided primary email address is not valid." msgstr "Указанный основной адрес электронной почты неверен." -#: InvenTree/forms.py:268 +#: InvenTree/forms.py:263 msgid "The provided email domain is not approved." msgstr "Указанный домен электронной почты не утверждён." -#: InvenTree/forms.py:395 +#: InvenTree/forms.py:390 msgid "Registration is disabled." msgstr "Регистрация отключена." @@ -171,35 +171,35 @@ msgstr "Число уникальных серийных номеров ({s}) д msgid "Remove HTML tags from this value" msgstr "Удалить HTML теги из этого значения" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Connection error" msgstr "Ошибка соединения" -#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 msgid "Server responded with invalid status code" msgstr "Сервер ответил неверным кодом статуса" -#: InvenTree/helpers_model.py:158 +#: InvenTree/helpers_model.py:148 msgid "Exception occurred" msgstr "Произошло исключение" -#: InvenTree/helpers_model.py:168 +#: InvenTree/helpers_model.py:158 msgid "Server responded with invalid Content-Length value" msgstr "Сервер ответил неверным значением Контент-Длина" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:161 msgid "Image size is too large" msgstr "Изображение слишком большое" -#: InvenTree/helpers_model.py:183 +#: InvenTree/helpers_model.py:173 msgid "Image download exceeded maximum size" msgstr "Загрузка изображения превышен максимальный размер" -#: InvenTree/helpers_model.py:188 +#: InvenTree/helpers_model.py:178 msgid "Remote server returned empty response" msgstr "Удаленный сервер вернул пустой ответ" -#: InvenTree/helpers_model.py:196 +#: InvenTree/helpers_model.py:186 msgid "Supplied URL is not a valid image file" msgstr "Предоставленный URL не является допустимым файлом изображения" @@ -296,46 +296,50 @@ msgid "Portuguese (Brazilian)" msgstr "Португальский (Бразильский диалект)" #: InvenTree/locales.py:41 +msgid "Romanian" +msgstr "" + +#: InvenTree/locales.py:42 msgid "Russian" msgstr "Русский" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:43 msgid "Slovak" msgstr "Словацкий" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:44 msgid "Slovenian" msgstr "Словенский" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:45 msgid "Serbian" msgstr "Сербский" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:46 msgid "Swedish" msgstr "Шведский" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:47 msgid "Thai" msgstr "Тайский" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:48 msgid "Turkish" msgstr "Турецкий" -#: InvenTree/locales.py:48 +#: InvenTree/locales.py:49 msgid "Ukrainian" msgstr "Украинский" -#: InvenTree/locales.py:49 +#: InvenTree/locales.py:50 msgid "Vietnamese" msgstr "Вьетнамский" -#: InvenTree/locales.py:50 +#: InvenTree/locales.py:51 msgid "Chinese (Simplified)" msgstr "Китайский (Упрощенный)" -#: InvenTree/locales.py:51 +#: InvenTree/locales.py:52 msgid "Chinese (Traditional)" msgstr "Китайский (Традиционный)" @@ -344,153 +348,65 @@ msgstr "Китайский (Традиционный)" msgid "[{site_name}] Log in to the app" msgstr "[{site_name}] Войти в приложение" -#: InvenTree/magic_login.py:38 company/models.py:133 +#: InvenTree/magic_login.py:38 company/models.py:136 #: company/templates/company/company_base.html:138 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:677 msgid "Email" msgstr "EMail" -#: InvenTree/models.py:107 +#: InvenTree/models.py:105 msgid "Error running plugin validation" msgstr "Ошибка запуска проверки плагина" -#: InvenTree/models.py:176 +#: InvenTree/models.py:174 msgid "Metadata must be a python dict object" msgstr "Метаданные должны быть объектом python dict" -#: InvenTree/models.py:182 +#: InvenTree/models.py:180 msgid "Plugin Metadata" msgstr "Метаданные плагина" -#: InvenTree/models.py:183 +#: InvenTree/models.py:181 msgid "JSON metadata field, for use by external plugins" msgstr "Поле метаданных JSON для использования внешними плагинами" -#: InvenTree/models.py:413 +#: InvenTree/models.py:408 msgid "Improperly formatted pattern" msgstr "Неправильно отформатированный шаблон" -#: InvenTree/models.py:420 +#: InvenTree/models.py:415 msgid "Unknown format key specified" msgstr "Указан неизвестный ключ формата" -#: InvenTree/models.py:426 +#: InvenTree/models.py:421 msgid "Missing required format key" msgstr "Отсутствует требуемый ключ формата" -#: InvenTree/models.py:437 +#: InvenTree/models.py:432 msgid "Reference field cannot be empty" msgstr "Ссылочный идентификатор не может быть пустым" -#: InvenTree/models.py:445 +#: InvenTree/models.py:440 msgid "Reference must match required pattern" msgstr "Ссылка должна соответствовать шаблону {pattern}" -#: InvenTree/models.py:476 +#: InvenTree/models.py:471 msgid "Reference number is too large" msgstr "Номер ссылки слишком большой" -#: InvenTree/models.py:550 -msgid "Missing file" -msgstr "Файл не найден" - -#: InvenTree/models.py:551 -msgid "Missing external link" -msgstr "Отсутствует внешняя ссылка" - -#: InvenTree/models.py:572 stock/models.py:2437 -#: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:326 -msgid "Attachment" -msgstr "Вложения" - -#: InvenTree/models.py:573 -msgid "Select file to attach" -msgstr "Выберите файл для вложения" - -#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:831 -#: order/models.py:303 order/models.py:1337 order/models.py:1753 -#: part/admin.py:55 part/models.py:962 -#: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_report.html:164 -#: stock/admin.py:225 templates/js/translated/company.js:1319 -#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2455 -#: templates/js/translated/purchase_order.js:2040 -#: templates/js/translated/purchase_order.js:2204 -#: templates/js/translated/return_order.js:779 -#: templates/js/translated/sales_order.js:1092 -#: templates/js/translated/sales_order.js:2023 -msgid "Link" -msgstr "Ссылка" - -#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 -#: stock/models.py:836 -msgid "Link to external URL" -msgstr "Ссылка на внешний URL" - -#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:341 -msgid "Comment" -msgstr "Комментарий" - -#: InvenTree/models.py:589 -msgid "File comment" -msgstr "Комментарий к файлу" - -#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 -#: common/models.py:2518 common/models.py:2742 common/models.py:2743 -#: common/models.py:2988 common/models.py:2989 part/models.py:3228 -#: part/models.py:3315 part/models.py:3408 part/models.py:3436 -#: plugin/models.py:259 plugin/models.py:260 -#: report/templates/report/inventree_test_report.html:105 -#: templates/js/translated/stock.js:3036 users/models.py:111 -msgid "User" -msgstr "Пользователь" - -#: InvenTree/models.py:602 -msgid "upload date" -msgstr "дата загрузки" - -#: InvenTree/models.py:624 -msgid "Filename must not be empty" -msgstr "Имя файла не должно быть пустым" - -#: InvenTree/models.py:635 -msgid "Invalid attachment directory" -msgstr "Неверная директория вложений" - -#: InvenTree/models.py:665 -#, python-brace-format -msgid "Filename contains illegal character '{c}'" -msgstr "Имя файла содержит запрещенные символы '{c}'" - -#: InvenTree/models.py:668 -msgid "Filename missing extension" -msgstr "Отсутствует расширение для имени файла" - -#: InvenTree/models.py:677 -msgid "Attachment with this filename already exists" -msgstr "Вложение с таким именем файла уже существует" - -#: InvenTree/models.py:684 -msgid "Error renaming file" -msgstr "Ошибка переименования файла" - -#: InvenTree/models.py:860 +#: InvenTree/models.py:719 msgid "Duplicate names cannot exist under the same parent" msgstr "Повторяющиеся имена не могут существовать под одним и тем же родителем" -#: InvenTree/models.py:877 +#: InvenTree/models.py:736 msgid "Invalid choice" msgstr "Неверный выбор" -#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 -#: common/serializers.py:403 company/models.py:614 machine/models.py:24 -#: part/models.py:898 part/models.py:3659 plugin/models.py:50 -#: report/models.py:149 stock/models.py:72 +#: InvenTree/models.py:766 common/models.py:2623 common/models.py:3036 +#: common/serializers.py:408 company/models.py:580 machine/models.py:24 +#: part/models.py:891 part/models.py:3639 plugin/models.py:51 +#: report/models.py:150 stock/models.py:73 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:83 @@ -501,25 +417,25 @@ msgstr "Неверный выбор" #: templates/js/translated/company.js:724 #: templates/js/translated/company.js:913 #: templates/js/translated/company.js:1165 -#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 -#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1187 +#: templates/js/translated/part.js:1475 templates/js/translated/part.js:1611 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Название" -#: InvenTree/models.py:913 build/models.py:218 -#: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:523 company/models.py:840 +#: InvenTree/models.py:772 build/models.py:220 +#: build/templates/build/detail.html:24 common/models.py:138 +#: company/models.py:509 company/models.py:808 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 order/models.py:289 -#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 -#: part/models.py:3674 part/templates/part/category.html:82 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:914 +#: part/models.py:3654 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:155 -#: report/models.py:509 report/models.py:535 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 #: report/templates/report/inventree_build_order_report.html:117 -#: stock/admin.py:55 stock/models.py:78 stock/templates/stock/location.html:125 +#: stock/admin.py:54 stock/models.py:79 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 @@ -528,10 +444,10 @@ msgstr "Название" #: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 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:2354 -#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1239 +#: templates/js/translated/part.js:1484 templates/js/translated/part.js:1622 +#: templates/js/translated/part.js:1959 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2897 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1706 #: templates/js/translated/purchase_order.js:1849 @@ -544,149 +460,141 @@ msgstr "Название" msgid "Description" msgstr "Описание" -#: InvenTree/models.py:914 stock/models.py:79 +#: InvenTree/models.py:773 stock/models.py:80 msgid "Description (optional)" msgstr "Описание (необязательно)" -#: InvenTree/models.py:923 -msgid "parent" -msgstr "родитель" - -#: InvenTree/models.py:929 templates/js/translated/part.js:2793 +#: InvenTree/models.py:788 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Путь" -#: InvenTree/models.py:1035 +#: InvenTree/models.py:918 msgid "Markdown notes (optional)" msgstr "Записи о скидке (необязательно)" -#: InvenTree/models.py:1064 +#: InvenTree/models.py:947 msgid "Barcode Data" msgstr "Данные штрих-кода" -#: InvenTree/models.py:1065 +#: InvenTree/models.py:948 msgid "Third party barcode data" msgstr "Данные стороннего штрих-кода" -#: InvenTree/models.py:1071 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "Хэш штрих-кода" -#: InvenTree/models.py:1072 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "Уникальный хэш данных штрих-кода" -#: InvenTree/models.py:1125 +#: InvenTree/models.py:1008 msgid "Existing barcode found" msgstr "Обнаружен существующий штрих-код" -#: InvenTree/models.py:1168 +#: InvenTree/models.py:1051 msgid "Server Error" msgstr "Ошибка сервера" -#: InvenTree/models.py:1169 +#: InvenTree/models.py:1052 msgid "An error has been logged by the server." msgstr "Сервер зарегистрировал ошибку." -#: InvenTree/serializers.py:62 part/models.py:4212 +#: InvenTree/serializers.py:63 part/models.py:4192 msgid "Must be a valid number" msgstr "Должно быть действительным номером" -#: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:3036 +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3001 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Валюта" -#: InvenTree/serializers.py:102 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "Выберите валюту из доступных вариантов" -#: InvenTree/serializers.py:441 +#: InvenTree/serializers.py:442 msgid "You do not have permission to change this user role." msgstr "У вас недостаточно прав для изменения роли этого пользователя." -#: InvenTree/serializers.py:453 +#: InvenTree/serializers.py:454 msgid "Only superusers can create new users" msgstr "Только суперпользователи могут создавать новых пользователей" -#: InvenTree/serializers.py:472 +#: InvenTree/serializers.py:473 msgid "Your account has been created." msgstr "Ваша учётная запись была успешно создана." -#: InvenTree/serializers.py:474 +#: InvenTree/serializers.py:475 msgid "Please use the password reset function to login" msgstr "Пожалуйста, используйте функцию сброса пароля для входа" -#: InvenTree/serializers.py:481 +#: InvenTree/serializers.py:482 msgid "Welcome to InvenTree" msgstr "Добро пожаловать в InvenTree" -#: InvenTree/serializers.py:542 -msgid "Filename" -msgstr "Имя файла" - -#: InvenTree/serializers.py:576 +#: InvenTree/serializers.py:540 msgid "Invalid value" msgstr "Неверное значение" -#: InvenTree/serializers.py:596 +#: InvenTree/serializers.py:560 msgid "Data File" msgstr "Файл данных" -#: InvenTree/serializers.py:597 +#: InvenTree/serializers.py:561 msgid "Select data file for upload" msgstr "Выберите файл данных для загрузки" -#: InvenTree/serializers.py:614 +#: InvenTree/serializers.py:578 msgid "Unsupported file type" msgstr "Неподдерживаемый тип файла" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:584 msgid "File is too large" msgstr "Файл слишком большой" -#: InvenTree/serializers.py:641 +#: InvenTree/serializers.py:605 msgid "No columns found in file" msgstr "Столбцы в файле не найдены" -#: InvenTree/serializers.py:644 +#: InvenTree/serializers.py:608 msgid "No data rows found in file" msgstr "Строки данных в файле не найдены" -#: InvenTree/serializers.py:757 +#: InvenTree/serializers.py:721 msgid "No data rows provided" msgstr "Строки данных в файле не найдены" -#: InvenTree/serializers.py:760 +#: InvenTree/serializers.py:724 msgid "No data columns supplied" msgstr "Столбцы данных не предоставлены" -#: InvenTree/serializers.py:827 +#: InvenTree/serializers.py:791 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Отсутствует обязательный столбец: '{name}'" -#: InvenTree/serializers.py:836 +#: InvenTree/serializers.py:800 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Повторяющийся столбец: '{col}'" -#: InvenTree/serializers.py:859 +#: InvenTree/serializers.py:840 msgid "Remote Image" msgstr "Удаленное изображение" -#: InvenTree/serializers.py:860 +#: InvenTree/serializers.py:841 msgid "URL of remote image file" msgstr "ССЫЛКА файла изображения на удаленном сервере" -#: InvenTree/serializers.py:878 +#: InvenTree/serializers.py:859 msgid "Downloading images from remote URL is not enabled" msgstr "Загрузка изображений с удаленного URL-адреса не включена" -#: InvenTree/status.py:66 part/serializers.py:1178 +#: InvenTree/status.py:66 part/serializers.py:1174 msgid "Background worker check failed" msgstr "Проверка фонового работника не удалась" @@ -698,27 +606,27 @@ msgstr "Сервер электронной почты не настроен" msgid "InvenTree system health checks failed" msgstr "Ошибка проверки состояния системы InvenTree" -#: InvenTree/templatetags/inventree_extras.py:183 +#: InvenTree/templatetags/inventree_extras.py:184 msgid "Unknown database" msgstr "Неизвестная база данных" -#: InvenTree/validators.py:31 InvenTree/validators.py:33 +#: InvenTree/validators.py:32 InvenTree/validators.py:34 msgid "Invalid physical unit" msgstr "Неверная физическая единица" -#: InvenTree/validators.py:39 +#: InvenTree/validators.py:40 msgid "Not a valid currency code" msgstr "Неверный код валюты" -#: InvenTree/validators.py:121 InvenTree/validators.py:137 +#: InvenTree/validators.py:118 InvenTree/validators.py:134 msgid "Overage value must not be negative" msgstr "Значение избытка не должно быть отрицательным" -#: InvenTree/validators.py:139 +#: InvenTree/validators.py:136 msgid "Overage must not exceed 100%" msgstr "Избыток не может превысить 100%" -#: InvenTree/validators.py:145 +#: InvenTree/validators.py:142 msgid "Invalid value for overage" msgstr "Неверное значение для избытка" @@ -750,14 +658,14 @@ msgstr "О программе InvenTree" msgid "Build must be cancelled before it can be deleted" msgstr "Заказ на производство должен быть отменен перед удалением" -#: build/api.py:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: build/api.py:299 part/models.py:4070 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "Расходники" -#: build/api.py:300 part/models.py:4084 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4064 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2529 #: templates/js/translated/table_filters.js:186 @@ -778,30 +686,30 @@ msgstr "Отслеживается" msgid "Allocated" msgstr "Зарезервировано" -#: build/api.py:311 company/models.py:904 company/serializers.py:383 +#: build/api.py:311 company/models.py:872 company/serializers.py:359 #: 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:2561 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:234 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 -#: templates/js/translated/part.js:699 +#: templates/js/translated/part.js:693 templates/js/translated/part.js:695 +#: templates/js/translated/part.js:700 #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:575 msgid "Available" msgstr "Доступно" -#: build/models.py:83 build/templates/build/build_base.html:9 +#: build/models.py:85 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_report.html:105 -#: stock/serializers.py:83 templates/email/build_order_completed.html:16 +#: stock/serializers.py:82 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:2892 msgid "Build Order" msgstr "Заказ на производство" -#: build/models.py:84 build/templates/build/build_base.html:13 +#: build/models.py:86 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 @@ -812,25 +720,25 @@ msgstr "Заказ на производство" msgid "Build Orders" msgstr "Заказы на производство" -#: build/models.py:131 +#: build/models.py:133 msgid "Invalid choice for parent build" msgstr "Неверный выбор для родительской сборки" -#: build/models.py:142 order/models.py:240 +#: build/models.py:144 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "Должен быть указан ответственный пользователь или группа" -#: build/models.py:148 +#: build/models.py:150 msgid "Build order part cannot be changed" msgstr "Деталь заказа на производства не может быть изменена" -#: build/models.py:209 +#: build/models.py:211 msgid "Build Order Reference" msgstr "Ссылка на заказ на производство" -#: build/models.py:210 order/models.py:463 order/models.py:928 -#: order/models.py:1325 order/models.py:2056 part/admin.py:419 -#: part/models.py:4105 part/templates/part/upload_bom.html:54 +#: build/models.py:212 order/models.py:463 order/models.py:926 +#: order/models.py:1289 order/models.py:2020 part/admin.py:411 +#: part/models.py:4085 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_purchase_order_report.html:28 #: report/templates/report/inventree_return_order_report.html:26 @@ -844,27 +752,27 @@ msgstr "Ссылка на заказ на производство" msgid "Reference" msgstr "Отсылка" -#: build/models.py:221 +#: build/models.py:223 msgid "Brief description of the build (optional)" msgstr "Краткое описание заказа на производство (необязательно)" -#: build/models.py:229 build/templates/build/build_base.html:183 +#: build/models.py:231 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Родительский заказ на производство" -#: build/models.py:230 +#: build/models.py:232 msgid "BuildOrder to which this build is allocated" msgstr "Заказ на производство, которому принадлежит этот заказ на производство" -#: build/models.py:235 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 -#: order/models.py:1450 order/models.py:1595 order/models.py:1596 -#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 -#: part/models.py:3191 part/models.py:3335 part/models.py:3358 -#: part/models.py:3379 part/models.py:3401 part/models.py:3511 -#: part/models.py:3807 part/models.py:3963 part/models.py:4056 -#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 +#: build/models.py:237 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1026 order/api.py:805 +#: order/models.py:1414 order/models.py:1559 order/models.py:1560 +#: part/api.py:1494 part/api.py:1788 part/models.py:395 part/models.py:3012 +#: part/models.py:3156 part/models.py:3303 part/models.py:3324 +#: part/models.py:3346 part/models.py:3477 part/models.py:3787 +#: part/models.py:3943 part/models.py:4036 part/models.py:4395 +#: part/serializers.py:1120 part/serializers.py:1726 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -875,8 +783,8 @@ msgstr "Заказ на производство, которому принад #: report/templates/report/inventree_return_order_report.html:24 #: report/templates/report/inventree_sales_order_report.html:27 #: report/templates/report/inventree_stock_location_report.html:102 -#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 -#: stock/serializers.py:818 templates/InvenTree/search.html:82 +#: stock/serializers.py:109 stock/serializers.py:157 stock/serializers.py:423 +#: stock/serializers.py:820 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 @@ -889,8 +797,8 @@ msgstr "Заказ на производство, которому принад #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 -#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2323 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:1944 templates/js/translated/part.js:2016 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 #: templates/js/translated/purchase_order.js:751 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1848 @@ -908,107 +816,107 @@ msgstr "Заказ на производство, которому принад msgid "Part" msgstr "Деталь" -#: build/models.py:243 +#: build/models.py:245 msgid "Select part to build" msgstr "Выберите деталь для производства" -#: build/models.py:248 +#: build/models.py:250 msgid "Sales Order Reference" msgstr "Ссылка на заказ" -#: build/models.py:252 +#: build/models.py:254 msgid "SalesOrder to which this build is allocated" msgstr "Заказ на продажу, которому принадлежит этот заказ на производство" -#: build/models.py:257 build/serializers.py:1000 +#: build/models.py:259 build/serializers.py:999 #: templates/js/translated/build.js:1731 #: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "Место хранения - источник" -#: build/models.py:261 +#: build/models.py:263 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "Выберите место хранения для этого заказа на производство (оставьте пустым, чтобы взять с любого места на складе)" -#: build/models.py:266 +#: build/models.py:268 msgid "Destination Location" msgstr "Место хранения результата" -#: build/models.py:270 +#: build/models.py:272 msgid "Select location where the completed items will be stored" msgstr "Выберите место хранения завершенных элементов" -#: build/models.py:274 +#: build/models.py:276 msgid "Build Quantity" msgstr "Количество производимых деталей" -#: build/models.py:277 +#: build/models.py:279 msgid "Number of stock items to build" msgstr "Количество складских позиций для производства" -#: build/models.py:281 +#: build/models.py:283 msgid "Completed items" msgstr "Произведенные детали" -#: build/models.py:283 +#: build/models.py:285 msgid "Number of stock items which have been completed" msgstr "Количество складских позиций, которые были произведены" -#: build/models.py:287 +#: build/models.py:289 msgid "Build Status" msgstr "Статус заказа на производство" -#: build/models.py:291 +#: build/models.py:293 msgid "Build status code" msgstr "Код статуса заказа на производство" -#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 -#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 +#: build/models.py:302 build/serializers.py:286 order/serializers.py:580 +#: stock/models.py:838 stock/serializers.py:74 stock/serializers.py:1458 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Код партии" -#: build/models.py:304 build/serializers.py:288 +#: build/models.py:306 build/serializers.py:287 msgid "Batch code for this build output" msgstr "Код партии для продукции" -#: build/models.py:307 order/models.py:316 order/serializers.py:120 -#: part/models.py:1122 part/templates/part/part_base.html:310 +#: build/models.py:309 order/models.py:316 order/serializers.py:119 +#: part/models.py:1115 part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:338 #: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "Дата создания" -#: build/models.py:311 +#: build/models.py:313 msgid "Target completion date" msgstr "Целевая дата завершения" -#: build/models.py:312 +#: build/models.py:314 msgid "Target date for build completion. Build will be overdue after this date." msgstr "Целевая дата для заказа на производства. Заказ будет просрочен после этой даты." -#: build/models.py:315 order/models.py:521 order/models.py:2101 +#: build/models.py:317 order/models.py:521 order/models.py:2065 #: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "Дата завершения" -#: build/models.py:321 +#: build/models.py:323 msgid "completed by" msgstr "выполнено" -#: build/models.py:329 templates/js/translated/build.js:2207 +#: build/models.py:331 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "Создано" -#: build/models.py:330 +#: build/models.py:332 msgid "User who issued this build order" msgstr "Пользователь, создавший этот заказ на производство" -#: build/models.py:338 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:145 +#: build/models.py:340 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:147 #: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:232 part/models.py:1139 +#: order/templates/order/sales_order_base.html:232 part/models.py:1132 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_report.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 @@ -1019,31 +927,36 @@ msgstr "Пользователь, создавший этот заказ на п msgid "Responsible" msgstr "Ответственный" -#: build/models.py:339 +#: build/models.py:341 msgid "User or group responsible for this build order" msgstr "Пользователь, ответственный за этот заказ на производство" -#: build/models.py:344 build/templates/build/detail.html:108 +#: build/models.py:346 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:184 -#: part/templates/part/part_base.html:383 stock/models.py:836 +#: part/templates/part/part_base.html:383 stock/models.py:834 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "Внешняя ссылка" -#: build/models.py:349 +#: build/models.py:347 common/models.py:3178 part/models.py:956 +#: stock/models.py:834 +msgid "Link to external URL" +msgstr "Ссылка на внешний URL" + +#: build/models.py:351 msgid "Build Priority" msgstr "Приоритет производства" -#: build/models.py:352 +#: build/models.py:354 msgid "Priority of this build order" msgstr "Приоритет этого заказа на производство" -#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: build/models.py:361 common/models.py:131 order/admin.py:18 #: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 #: templates/js/translated/build.js:2144 #: templates/js/translated/purchase_order.js:1710 @@ -1054,65 +967,65 @@ msgstr "Приоритет этого заказа на производство msgid "Project Code" msgstr "Код проекта" -#: build/models.py:360 +#: build/models.py:362 msgid "Project code for this build order" msgstr "Код проекта для этого заказа на производство" -#: build/models.py:593 build/models.py:658 +#: build/models.py:595 build/models.py:660 msgid "Failed to offload task to complete build allocations" msgstr "Не удалось выгрузить задачу для распределения на сборку" -#: build/models.py:615 +#: build/models.py:617 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Заказ на производство {build} был завершен" -#: build/models.py:621 +#: build/models.py:623 msgid "A build order has been completed" msgstr "Заказ на производство был завершен" -#: build/models.py:847 build/models.py:932 +#: build/models.py:849 build/models.py:934 msgid "No build output specified" msgstr "Продукция не указана" -#: build/models.py:850 +#: build/models.py:852 msgid "Build output is already completed" msgstr "Продукция уже произведена" -#: build/models.py:853 +#: build/models.py:855 msgid "Build output does not match Build Order" msgstr "Продукция не совпадает с заказом на производство" -#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 -#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 -#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 -#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 +#: build/models.py:938 build/serializers.py:219 build/serializers.py:268 +#: build/serializers.py:866 order/models.py:559 order/serializers.py:432 +#: order/serializers.py:575 part/serializers.py:1484 part/serializers.py:1884 +#: stock/models.py:677 stock/models.py:1495 stock/serializers.py:603 msgid "Quantity must be greater than zero" msgstr "Количество должно быть больше нуля" -#: build/models.py:941 build/serializers.py:225 +#: build/models.py:943 build/serializers.py:224 msgid "Quantity cannot be greater than the output quantity" msgstr "Количество не может быть больше количества продукции" -#: build/models.py:1001 build/serializers.py:548 +#: build/models.py:1003 build/serializers.py:547 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "Сборка {serial} не прошла все необходимые тесты" -#: build/models.py:1352 +#: build/models.py:1344 msgid "Build Order Line Item" msgstr "" -#: build/models.py:1377 +#: build/models.py:1369 msgid "Build object" msgstr "Объект производства" -#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 -#: build/serializers.py:254 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2539 -#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 -#: part/forms.py:48 part/models.py:3205 part/models.py:4078 +#: build/models.py:1383 build/models.py:1639 build/serializers.py:206 +#: build/serializers.py:253 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2509 +#: order/models.py:1272 order/models.py:1931 order/serializers.py:1327 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3170 part/models.py:4058 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1121,8 +1034,8 @@ msgstr "Объект производства" #: report/templates/report/inventree_sales_order_report.html:29 #: report/templates/report/inventree_stock_location_report.html:104 #: report/templates/report/inventree_test_report.html:90 -#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 -#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:125 stock/serializers.py:165 stock/serializers.py:594 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1133,8 +1046,8 @@ msgstr "Объект производства" #: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 #: templates/js/translated/model_renderers.js:236 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:962 +#: templates/js/translated/part.js:1812 templates/js/translated/part.js:3342 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1154,38 +1067,38 @@ msgstr "Объект производства" msgid "Quantity" msgstr "Количество" -#: build/models.py:1392 +#: build/models.py:1384 msgid "Required quantity for build order" msgstr "Требуемое количество для заказа на производство" -#: build/models.py:1472 +#: build/models.py:1464 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "Элемент производства должен указать продукцию, как главную деталь помеченную как отслеживаемая" -#: build/models.py:1481 +#: build/models.py:1473 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "Резервируемое количество ({q}) не должно превышать доступное количество на складе ({a})" -#: build/models.py:1491 order/models.py:1918 +#: build/models.py:1483 order/models.py:1882 msgid "Stock item is over-allocated" msgstr "Складская позиция перераспределена" -#: build/models.py:1497 order/models.py:1921 +#: build/models.py:1489 order/models.py:1885 msgid "Allocation quantity must be greater than zero" msgstr "Резервируемое количество должно быть больше нуля" -#: build/models.py:1503 +#: build/models.py:1495 msgid "Quantity must be 1 for serialized stock" msgstr "Количество должно быть 1 для сериализованных запасов" -#: build/models.py:1562 +#: build/models.py:1554 msgid "Selected stock item does not match BOM line" msgstr "Выбранная складская позиция не соответствует позиции в BOM" -#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 -#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 -#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: build/models.py:1626 build/serializers.py:846 order/serializers.py:1171 +#: order/serializers.py:1192 stock/models.py:358 stock/serializers.py:91 +#: stock/serializers.py:697 stock/serializers.py:1177 stock/serializers.py:1289 #: stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 @@ -1201,70 +1114,70 @@ msgstr "Выбранная складская позиция не соответ msgid "Stock Item" msgstr "Складская позиция" -#: build/models.py:1635 +#: build/models.py:1627 msgid "Source stock item" msgstr "Исходная складская позиция" -#: build/models.py:1648 +#: build/models.py:1640 msgid "Stock quantity to allocate to build" msgstr "Количество на складе для производства" -#: build/models.py:1656 +#: build/models.py:1648 msgid "Install into" msgstr "Установить в" -#: build/models.py:1657 +#: build/models.py:1649 msgid "Destination stock item" msgstr "Целевая складская позиция" -#: build/serializers.py:157 build/serializers.py:876 +#: build/serializers.py:156 build/serializers.py:875 #: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "Выход Продукции" -#: build/serializers.py:169 +#: build/serializers.py:168 msgid "Build output does not match the parent build" msgstr "Продукция не совпадает с родительским заказом на производство" -#: build/serializers.py:173 +#: build/serializers.py:172 msgid "Output part does not match BuildOrder part" msgstr "Продукция не соответствует детали заказа на производство" -#: build/serializers.py:177 +#: build/serializers.py:176 msgid "This build output has already been completed" msgstr "Эта продукция уже помечена как завершенная" -#: build/serializers.py:188 +#: build/serializers.py:187 msgid "This build output is not fully allocated" msgstr "Сырье для этой продукции не полностью зарезервировано" -#: build/serializers.py:208 build/serializers.py:255 +#: build/serializers.py:207 build/serializers.py:254 msgid "Enter quantity for build output" msgstr "Введите количество продукции" -#: build/serializers.py:276 +#: build/serializers.py:275 msgid "Integer quantity required for trackable parts" msgstr "Для отслеживаемых деталей должно быть указано целочисленное количество" -#: build/serializers.py:279 +#: build/serializers.py:278 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "Требуется целое количество, так как материал содержит отслеживаемые детали" -#: build/serializers.py:294 order/serializers.py:589 order/serializers.py:1343 -#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:293 order/serializers.py:588 order/serializers.py:1331 +#: stock/serializers.py:614 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Серийные номера" -#: build/serializers.py:295 +#: build/serializers.py:294 msgid "Enter serial numbers for build outputs" msgstr "Введите серийные номера для продукции" -#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 -#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 -#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 -#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 -#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 +#: build/serializers.py:299 build/serializers.py:440 build/serializers.py:512 +#: order/serializers.py:564 order/serializers.py:672 order/serializers.py:1656 +#: part/serializers.py:1140 stock/serializers.py:100 stock/serializers.py:625 +#: stock/serializers.py:785 stock/serializers.py:881 stock/serializers.py:1321 +#: stock/serializers.py:1577 stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:1001 #: templates/js/translated/build.js:2372 @@ -1280,54 +1193,54 @@ msgstr "Введите серийные номера для продукции" msgid "Location" msgstr "Расположение" -#: build/serializers.py:301 +#: build/serializers.py:300 msgid "Stock location for build output" msgstr "" -#: build/serializers.py:315 +#: build/serializers.py:314 msgid "Auto Allocate Serial Numbers" msgstr "Автоматически выделить серийные номера" -#: build/serializers.py:316 +#: build/serializers.py:315 msgid "Automatically allocate required items with matching serial numbers" msgstr "Автоматически зарезервировать необходимые элементы с соответствующими серийными номерами" -#: build/serializers.py:331 +#: build/serializers.py:330 msgid "Serial numbers must be provided for trackable parts" msgstr "Для отслеживаемых частей должны быть указаны серийные номера" -#: build/serializers.py:356 stock/api.py:1031 +#: build/serializers.py:355 stock/api.py:1041 msgid "The following serial numbers already exist or are invalid" msgstr "Следующие серийные номера уже существуют или недействительны" -#: build/serializers.py:403 build/serializers.py:465 build/serializers.py:554 +#: build/serializers.py:402 build/serializers.py:464 build/serializers.py:553 msgid "A list of build outputs must be provided" msgstr "Необходимо представить список выхода деталей" -#: build/serializers.py:442 +#: build/serializers.py:441 msgid "Stock location for scrapped outputs" msgstr "Место хранения для списанной продукции" -#: build/serializers.py:448 +#: build/serializers.py:447 msgid "Discard Allocations" msgstr "Отменить резервирование" -#: build/serializers.py:449 +#: build/serializers.py:448 msgid "Discard any stock allocations for scrapped outputs" msgstr "Отменить все резервы запасов для списанной продукции" -#: build/serializers.py:454 +#: build/serializers.py:453 msgid "Reason for scrapping build output(s)" msgstr "Причина списания продукции" -#: build/serializers.py:514 +#: build/serializers.py:513 msgid "Location for completed build outputs" msgstr "Место хранения для завершенной продукции" -#: build/serializers.py:520 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:952 -#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 -#: stock/serializers.py:930 stock/serializers.py:1469 +#: build/serializers.py:519 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2044 order/serializers.py:596 stock/admin.py:164 +#: stock/serializers.py:932 stock/serializers.py:1465 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 @@ -1339,188 +1252,188 @@ msgstr "Место хранения для завершенной продукц msgid "Status" msgstr "Статус" -#: build/serializers.py:526 +#: build/serializers.py:525 msgid "Accept Incomplete Allocation" msgstr "Разрешить неполное резервирование" -#: build/serializers.py:527 +#: build/serializers.py:526 msgid "Complete outputs if stock has not been fully allocated" msgstr "Завершить продукцию, если запасы не были полностью распределены" -#: build/serializers.py:612 +#: build/serializers.py:611 msgid "Consume Allocated Stock" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:612 msgid "Consume any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:619 +#: build/serializers.py:618 msgid "Remove Incomplete Outputs" msgstr "Удалить незавершенную продукцию" -#: build/serializers.py:620 +#: build/serializers.py:619 msgid "Delete any build outputs which have not been completed" msgstr "Удалить всю незавершенную продукцию" -#: build/serializers.py:647 +#: build/serializers.py:646 msgid "Not permitted" msgstr "Запрещено" -#: build/serializers.py:648 +#: build/serializers.py:647 msgid "Accept as consumed by this build order" msgstr "Принять как поглощенный этим заказом на производство" -#: build/serializers.py:649 +#: build/serializers.py:648 msgid "Deallocate before completing this build order" msgstr "Отменить резерв, до завершения заказа на производство" -#: build/serializers.py:679 +#: build/serializers.py:678 msgid "Overallocated Stock" msgstr "Перераспределенные запасы" -#: build/serializers.py:681 +#: build/serializers.py:680 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "Как вы хотите обработать дополнительные складские позиции, назначенные для заказа на производство" -#: build/serializers.py:691 +#: build/serializers.py:690 msgid "Some stock items have been overallocated" msgstr "Некоторые складские позиции были перераспределены" -#: build/serializers.py:696 +#: build/serializers.py:695 msgid "Accept Unallocated" msgstr "Разрешить не полное резервирование" -#: build/serializers.py:697 +#: build/serializers.py:696 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "Подтвердите, что складские позиции не были полностью зарезервированы для этого заказа на производство" -#: build/serializers.py:707 templates/js/translated/build.js:315 +#: build/serializers.py:706 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "Необходимые запасы не были полностью зарезервированы" -#: build/serializers.py:712 order/serializers.py:301 order/serializers.py:1246 +#: build/serializers.py:711 order/serializers.py:300 order/serializers.py:1234 msgid "Accept Incomplete" msgstr "Разрешить незавершенные производимые детали" -#: build/serializers.py:713 +#: build/serializers.py:712 msgid "Accept that the required number of build outputs have not been completed" msgstr "Допустить, что требуемое кол-во продукции не завершено" -#: build/serializers.py:723 templates/js/translated/build.js:319 +#: build/serializers.py:722 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "Требуемое количество деталей не было произведено" -#: build/serializers.py:732 templates/js/translated/build.js:303 +#: build/serializers.py:731 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "Заказ на производство имеет незавершенную продукцию" -#: build/serializers.py:770 +#: build/serializers.py:769 msgid "Build Line" msgstr "Позиция для производства" -#: build/serializers.py:780 +#: build/serializers.py:779 msgid "Build output" msgstr "Выход продукции" -#: build/serializers.py:788 +#: build/serializers.py:787 msgid "Build output must point to the same build" msgstr "Продукция должна указывать на тот же производство" -#: build/serializers.py:824 +#: build/serializers.py:823 msgid "Build Line Item" msgstr "Позиция для производства" -#: build/serializers.py:838 +#: build/serializers.py:837 msgid "bom_item.part must point to the same part as the build order" msgstr "bom_item.part должна указывать на ту же часть, что и заказ на производство" -#: build/serializers.py:853 stock/serializers.py:1194 +#: build/serializers.py:852 stock/serializers.py:1190 msgid "Item must be in stock" msgstr "Элемент должен быть в наличии" -#: build/serializers.py:901 order/serializers.py:1237 +#: build/serializers.py:900 order/serializers.py:1225 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Превышено доступное количество ({q})" -#: build/serializers.py:907 +#: build/serializers.py:906 msgid "Build output must be specified for allocation of tracked parts" msgstr "Продукция должна быть указан для резервирования отслеживаемых частей" -#: build/serializers.py:914 +#: build/serializers.py:913 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "Продукция не может быть указана для резервирования не отслеживаемых частей" -#: build/serializers.py:938 order/serializers.py:1489 +#: build/serializers.py:937 order/serializers.py:1477 msgid "Allocation items must be provided" msgstr "Необходимо указать резервируемые элементы" -#: build/serializers.py:1001 +#: build/serializers.py:1000 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "Место хранения, где будут зарезервированы детали (оставьте пустым, чтобы забрать их из любого места)" -#: build/serializers.py:1009 +#: build/serializers.py:1008 msgid "Exclude Location" msgstr "Исключить место хранения" -#: build/serializers.py:1010 +#: build/serializers.py:1009 msgid "Exclude stock items from this selected location" msgstr "Исключить складские позиции из этого выбранного места хранения" -#: build/serializers.py:1015 +#: build/serializers.py:1014 msgid "Interchangeable Stock" msgstr "Обменный остаток" -#: build/serializers.py:1016 +#: build/serializers.py:1015 msgid "Stock items in multiple locations can be used interchangeably" msgstr "Складские позиции в нескольких местах могут использоваться на взаимозаменяемой основе" -#: build/serializers.py:1021 +#: build/serializers.py:1020 msgid "Substitute Stock" msgstr "Заменить остатки" -#: build/serializers.py:1022 +#: build/serializers.py:1021 msgid "Allow allocation of substitute parts" msgstr "Разрешить резервирование замещающих деталей" -#: build/serializers.py:1027 +#: build/serializers.py:1026 msgid "Optional Items" msgstr "Необязательные элементы" -#: build/serializers.py:1028 +#: build/serializers.py:1027 msgid "Allocate optional BOM items to build order" msgstr "Зарезервировать необязательные позиции BOM для заказа на производство" -#: build/serializers.py:1050 +#: build/serializers.py:1049 msgid "Failed to start auto-allocation task" -msgstr "" +msgstr "Не удалось запустить задачу автораспределения" -#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 -#: stock/api.py:794 +#: build/serializers.py:1139 part/models.py:3953 part/models.py:4387 +#: stock/api.py:804 msgid "BOM Item" msgstr "Позиция BOM" -#: build/serializers.py:1149 templates/js/translated/index.js:130 +#: build/serializers.py:1148 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "Зарезервированные Запасы" -#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:832 part/serializers.py:1506 +#: build/serializers.py:1153 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:828 part/serializers.py:1502 #: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 -#: templates/js/translated/build.js:2613 templates/js/translated/part.js:709 -#: templates/js/translated/part.js:2148 +#: templates/js/translated/build.js:2613 templates/js/translated/part.js:710 +#: templates/js/translated/part.js:2149 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "В заказе" -#: build/serializers.py:1159 part/serializers.py:1508 +#: build/serializers.py:1158 part/serializers.py:1504 #: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "В производстве" -#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 +#: build/serializers.py:1163 part/bom.py:172 part/serializers.py:1527 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1929 msgid "Available Stock" @@ -1544,7 +1457,7 @@ msgstr "Отменено" #: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 #: order/status_codes.py:44 order/status_codes.py:69 #: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:165 report/models.py:443 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 msgid "Complete" msgstr "Готово" @@ -1674,11 +1587,11 @@ msgstr "Остатки не были полностью зарезервиров #: build/templates/build/build_base.html:160 #: build/templates/build/detail.html:138 order/models.py:309 -#: order/models.py:1343 order/templates/order/order_base.html:186 +#: order/models.py:1307 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:196 #: report/templates/report/inventree_build_order_report.html:125 -#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1831 #: templates/js/translated/purchase_order.js:1739 #: templates/js/translated/purchase_order.js:2147 #: templates/js/translated/return_order.js:346 @@ -1711,8 +1624,8 @@ msgid "Completed Outputs" msgstr "Завершенная продукция" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 -#: order/models.py:1587 order/models.py:1701 order/models.py:1855 +#: build/templates/build/detail.html:101 order/api.py:1463 order/models.py:845 +#: order/models.py:1551 order/models.py:1665 order/models.py:1819 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_report.html:135 @@ -1762,7 +1675,7 @@ msgstr "Источник запаса" msgid "Stock can be taken from any available location." msgstr "Остатки не могут быть получены из любого доступного места хранения." -#: build/templates/build/detail.html:49 order/models.py:1479 +#: build/templates/build/detail.html:49 order/models.py:1443 #: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "Назначение" @@ -1775,7 +1688,7 @@ msgstr "Место назначения не указано" msgid "Allocated Parts" msgstr "Зарезервированные детали" -#: build/templates/build/detail.html:80 stock/admin.py:163 +#: build/templates/build/detail.html:80 stock/admin.py:162 #: stock/templates/stock/item_base.html:162 #: templates/js/translated/build.js:1380 #: templates/js/translated/model_renderers.js:241 @@ -1894,11 +1807,11 @@ msgstr "Файлы" msgid "Build Notes" msgstr "Записи производства" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "Резервирование Завершено" -#: build/templates/build/detail.html:436 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "Все позиции были полностью зарезервированы" @@ -1914,6 +1827,34 @@ msgstr "Подробности Заказа на Производство" msgid "Incomplete Outputs" msgstr "Незавершенная продукция" +#: common/api.py:689 +msgid "Is Link" +msgstr "Ссылка" + +#: common/api.py:697 +msgid "Is File" +msgstr "Файл" + +#: common/api.py:739 +msgid "User does not have permission to delete this attachment" +msgstr "У пользователя нет прав на удаление этого вложения" + +#: common/currency.py:130 +msgid "Invalid currency code" +msgstr "Неверный код валюты" + +#: common/currency.py:132 +msgid "Duplicate currency code" +msgstr "Код валюты дублируется" + +#: common/currency.py:137 +msgid "No valid currency codes provided" +msgstr "Не указаны действительные коды валют" + +#: common/currency.py:154 +msgid "No plugin" +msgstr "Нет плагина" + #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1952,1509 +1893,1512 @@ msgstr "Файл {name.title()}" msgid "Select {name} file to upload" msgstr "Выберите {name} файл для загрузки" -#: common/models.py:71 +#: common/models.py:73 msgid "Updated" msgstr "Обновлено" -#: common/models.py:72 +#: common/models.py:74 msgid "Timestamp of last update" msgstr "Временная метка последнего обновления" -#: common/models.py:105 +#: common/models.py:107 msgid "Site URL is locked by configuration" msgstr "URL сайта заблокирован настройками" -#: common/models.py:130 +#: common/models.py:132 msgid "Unique project code" msgstr "Уникальный код проекта" -#: common/models.py:137 +#: common/models.py:139 msgid "Project description" msgstr "Описание проекта" -#: common/models.py:146 +#: common/models.py:148 msgid "User or group responsible for this project" msgstr "Пользователь или группа, ответственные за этот проект" -#: common/models.py:766 +#: common/models.py:765 msgid "Settings key (must be unique - case insensitive)" msgstr "Ключ настроек (должен быть уникальным - не чувствителен к регистрам)" -#: common/models.py:770 +#: common/models.py:769 msgid "Settings value" msgstr "Значения настроек" -#: common/models.py:822 +#: common/models.py:821 msgid "Chosen value is not a valid option" msgstr "Выбранное значение не является допустимым" -#: common/models.py:838 +#: common/models.py:837 msgid "Value must be a boolean value" msgstr "Значение должно быть булевым" -#: common/models.py:846 +#: common/models.py:845 msgid "Value must be an integer value" msgstr "Значение должно быть целым числом" -#: common/models.py:883 +#: common/models.py:882 msgid "Key string must be unique" msgstr "Строка ключа должна быть уникальной" -#: common/models.py:1115 +#: common/models.py:1114 msgid "No group" msgstr "Нет группы" -#: common/models.py:1158 -msgid "An empty domain is not allowed." -msgstr "Пустой домен не допускается." - -#: common/models.py:1160 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "Недопустимое доменное имя: {domain}" - -#: common/models.py:1172 -msgid "No plugin" -msgstr "Нет плагина" - -#: common/models.py:1260 +#: common/models.py:1213 msgid "Restart required" msgstr "Требуется перезапуск" -#: common/models.py:1262 +#: common/models.py:1215 msgid "A setting has been changed which requires a server restart" msgstr "Настройки были изменены, что требует перезапуска сервера" -#: common/models.py:1269 +#: common/models.py:1222 msgid "Pending migrations" msgstr "Ожидаемые миграции" -#: common/models.py:1270 +#: common/models.py:1223 msgid "Number of pending database migrations" msgstr "Количество ожидаемых миграций базы данных" -#: common/models.py:1275 +#: common/models.py:1228 msgid "Server Instance Name" msgstr "Название сервера" -#: common/models.py:1277 +#: common/models.py:1230 msgid "String descriptor for the server instance" msgstr "Текстовое описание сервера" -#: common/models.py:1281 +#: common/models.py:1234 msgid "Use instance name" msgstr "Название инстанса" -#: common/models.py:1282 +#: common/models.py:1235 msgid "Use the instance name in the title-bar" msgstr "Имя сервера в заголовке" -#: common/models.py:1287 +#: common/models.py:1240 msgid "Restrict showing `about`" msgstr "Ограничить отображение `О...`" -#: common/models.py:1288 +#: common/models.py:1241 msgid "Show the `about` modal only to superusers" msgstr "Показать `О...` только суперпользователям" -#: common/models.py:1293 company/models.py:108 company/models.py:109 +#: common/models.py:1246 company/models.py:111 company/models.py:112 msgid "Company name" msgstr "Название компании" -#: common/models.py:1294 +#: common/models.py:1247 msgid "Internal company name" msgstr "Внутреннее название компании" -#: common/models.py:1298 +#: common/models.py:1251 msgid "Base URL" msgstr "Базовая ссылка" -#: common/models.py:1299 +#: common/models.py:1252 msgid "Base URL for server instance" msgstr "Базовая ссылка для экземпляра сервера" -#: common/models.py:1305 +#: common/models.py:1258 msgid "Default Currency" msgstr "Валюта по умолчанию" -#: common/models.py:1306 +#: common/models.py:1259 msgid "Select base currency for pricing calculations" msgstr "Выберите базовую валюту для расчета цены" -#: common/models.py:1312 +#: common/models.py:1265 +msgid "Supported Currencies" +msgstr "Поддерживаемые валюты" + +#: common/models.py:1266 +msgid "List of supported currency codes" +msgstr "Список поддерживаемых кодов валют" + +#: common/models.py:1272 msgid "Currency Update Interval" msgstr "Интервал обновления курса валют" -#: common/models.py:1314 +#: common/models.py:1274 msgid "How often to update exchange rates (set to zero to disable)" msgstr "Как часто обновлять курс валют (установите \"ноль\", чтобы выключить)" -#: common/models.py:1317 common/models.py:1373 common/models.py:1386 -#: common/models.py:1394 common/models.py:1403 common/models.py:1412 -#: common/models.py:1620 common/models.py:1642 common/models.py:1757 -#: common/models.py:2076 +#: common/models.py:1277 common/models.py:1333 common/models.py:1346 +#: common/models.py:1354 common/models.py:1363 common/models.py:1372 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:2046 msgid "days" msgstr "дней" -#: common/models.py:1321 +#: common/models.py:1281 msgid "Currency Update Plugin" msgstr "Плагин обновления валют" -#: common/models.py:1322 +#: common/models.py:1282 msgid "Currency update plugin to use" msgstr "Модуль обновления валюты" -#: common/models.py:1327 +#: common/models.py:1287 msgid "Download from URL" msgstr "Скачать по ссылке" -#: common/models.py:1329 +#: common/models.py:1289 msgid "Allow download of remote images and files from external URL" msgstr "Разрешить загрузку удаленных изображений и файлов по внешнему URL" -#: common/models.py:1335 +#: common/models.py:1295 msgid "Download Size Limit" msgstr "Ограничение размера загрузки" -#: common/models.py:1336 +#: common/models.py:1296 msgid "Maximum allowable download size for remote image" msgstr "Максимально допустимый размер загрузки для удалённого изображения" -#: common/models.py:1342 +#: common/models.py:1302 msgid "User-agent used to download from URL" msgstr "User-Agent, используемый для загрузки из URL" -#: common/models.py:1344 +#: common/models.py:1304 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:1349 +#: common/models.py:1309 msgid "Strict URL Validation" msgstr "Строгая проверка URL-адреса" -#: common/models.py:1350 +#: common/models.py:1310 msgid "Require schema specification when validating URLs" msgstr "Требуется спецификация схемы при проверке URL-адресов" -#: common/models.py:1355 +#: common/models.py:1315 msgid "Require confirm" msgstr "Требуется подтверждение" -#: common/models.py:1356 +#: common/models.py:1316 msgid "Require explicit user confirmation for certain action." msgstr "Требовать явное подтверждение пользователя для определенного действия." -#: common/models.py:1361 +#: common/models.py:1321 msgid "Tree Depth" msgstr "Глубина дерева" -#: common/models.py:1363 +#: common/models.py:1323 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "Глубина дерева по умолчанию для просмотра дерева. Глубокие уровни загружены по мере необходимости." -#: common/models.py:1369 +#: common/models.py:1329 msgid "Update Check Interval" msgstr "Интервал проверки обновлений" -#: common/models.py:1370 +#: common/models.py:1330 msgid "How often to check for updates (set to zero to disable)" msgstr "Как часто проверять наличие обновлений (установите ноль чтобы выключить)" -#: common/models.py:1376 +#: common/models.py:1336 msgid "Automatic Backup" msgstr "Автоматическое резервное копирование" -#: common/models.py:1377 +#: common/models.py:1337 msgid "Enable automatic backup of database and media files" msgstr "Включить автоматическое резервное копирование базы данных и медиа-файлов" -#: common/models.py:1382 +#: common/models.py:1342 msgid "Auto Backup Interval" msgstr "Интервал резервного копирования" -#: common/models.py:1383 +#: common/models.py:1343 msgid "Specify number of days between automated backup events" msgstr "Укажите количество дней между событиями автоматического резервного копирования" -#: common/models.py:1389 +#: common/models.py:1349 msgid "Task Deletion Interval" msgstr "Интервал удаления задачи" -#: common/models.py:1391 +#: common/models.py:1351 msgid "Background task results will be deleted after specified number of days" msgstr "Результаты фоновых задач будут удалены после указанного количества дней" -#: common/models.py:1398 +#: common/models.py:1358 msgid "Error Log Deletion Interval" msgstr "Интервал удаления журнала ошибок" -#: common/models.py:1400 +#: common/models.py:1360 msgid "Error logs will be deleted after specified number of days" msgstr "Журналы ошибок будут удалены после указанного количества дней" -#: common/models.py:1407 +#: common/models.py:1367 msgid "Notification Deletion Interval" msgstr "Интервал удаления уведомления" -#: common/models.py:1409 +#: common/models.py:1369 msgid "User notifications will be deleted after specified number of days" msgstr "Уведомления пользователя будут удалены после указанного количества дней" -#: common/models.py:1416 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1376 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Поддержка штрих-кодов" -#: common/models.py:1417 +#: common/models.py:1377 msgid "Enable barcode scanner support in the web interface" msgstr "Включить поддержку сканера штрих-кодов в веб-интерфейсе" -#: common/models.py:1422 +#: common/models.py:1382 msgid "Barcode Input Delay" msgstr "Задержка сканирования штрих-кода" -#: common/models.py:1423 +#: common/models.py:1383 msgid "Barcode input processing delay time" msgstr "Время задержки обработки штрих-кода" -#: common/models.py:1429 +#: common/models.py:1389 msgid "Barcode Webcam Support" msgstr "Поддержка веб-камер штрих-кодов" -#: common/models.py:1430 +#: common/models.py:1390 msgid "Allow barcode scanning via webcam in browser" msgstr "Разрешить сканирование штрих-кода через веб-камеру в браузере" -#: common/models.py:1435 +#: common/models.py:1395 msgid "Part Revisions" msgstr "Ревизия детали" -#: common/models.py:1436 +#: common/models.py:1396 msgid "Enable revision field for Part" msgstr "Включить поле ревизии для элемента" -#: common/models.py:1441 +#: common/models.py:1401 msgid "Allow Deletion from Assembly" -msgstr "" +msgstr "Разрешить удаление из заказа" -#: common/models.py:1442 +#: common/models.py:1402 msgid "Allow deletion of parts which are used in an assembly" -msgstr "" +msgstr "Разрешить удаление частей, которые используются в заказе" -#: common/models.py:1447 +#: common/models.py:1407 msgid "IPN Regex" -msgstr "" +msgstr "Регулярное выражение IPN" -#: common/models.py:1448 +#: common/models.py:1408 msgid "Regular expression pattern for matching Part IPN" msgstr "Шаблон регулярного выражения для сопоставления IPN детали" -#: common/models.py:1451 +#: common/models.py:1411 msgid "Allow Duplicate IPN" msgstr "Разрешить повторяющиеся IPN" -#: common/models.py:1452 +#: common/models.py:1412 msgid "Allow multiple parts to share the same IPN" msgstr "Разрешить нескольким элементам использовать один и тот же IPN" -#: common/models.py:1457 +#: common/models.py:1417 msgid "Allow Editing IPN" msgstr "Разрешить редактирование IPN" -#: common/models.py:1458 +#: common/models.py:1418 msgid "Allow changing the IPN value while editing a part" msgstr "Разрешить изменение значения IPN при редактировании детали" -#: common/models.py:1463 +#: common/models.py:1423 msgid "Copy Part BOM Data" msgstr "Скопировать данные BOM детали" -#: common/models.py:1464 +#: common/models.py:1424 msgid "Copy BOM data by default when duplicating a part" msgstr "Копировать данные BOM по умолчанию при дублировании детали" -#: common/models.py:1469 +#: common/models.py:1429 msgid "Copy Part Parameter Data" msgstr "Скопировать данные параметров детали" -#: common/models.py:1470 +#: common/models.py:1430 msgid "Copy parameter data by default when duplicating a part" msgstr "Копировать данных параметров по умолчанию при дублировании детали" -#: common/models.py:1475 +#: common/models.py:1435 msgid "Copy Part Test Data" msgstr "Скопировать данные тестирования детали" -#: common/models.py:1476 +#: common/models.py:1436 msgid "Copy test data by default when duplicating a part" msgstr "Копировать данные тестирования по умолчанию при дублировании детали" -#: common/models.py:1481 +#: common/models.py:1441 msgid "Copy Category Parameter Templates" msgstr "Скопировать параметры по шаблону категории" -#: common/models.py:1482 +#: common/models.py:1442 msgid "Copy category parameter templates when creating a part" msgstr "Копировать параметры по шаблону категории при создании детали" -#: common/models.py:1487 part/admin.py:108 part/models.py:3815 -#: report/models.py:293 report/models.py:360 report/serializers.py:90 -#: report/serializers.py:131 stock/serializers.py:228 +#: common/models.py:1447 part/admin.py:108 part/models.py:3795 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:227 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "Шаблон" -#: common/models.py:1488 +#: common/models.py:1448 msgid "Parts are templates by default" msgstr "По умолчанию детали являются шаблонами" -#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 +#: common/models.py:1453 part/admin.py:91 part/admin.py:425 part/models.py:1052 #: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" msgstr "Производимая деталь" -#: common/models.py:1494 +#: common/models.py:1454 msgid "Parts can be assembled from other components by default" msgstr "По умолчанию детали могут быть собраны из других компонентов" -#: common/models.py:1499 part/admin.py:95 part/models.py:1065 +#: common/models.py:1459 part/admin.py:95 part/models.py:1058 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "Компонент" -#: common/models.py:1500 +#: common/models.py:1460 msgid "Parts can be used as sub-components by default" msgstr "По умолчанию детали могут использоваться в качестве суб-компонентов" -#: common/models.py:1505 part/admin.py:100 part/models.py:1077 +#: common/models.py:1465 part/admin.py:100 part/models.py:1070 msgid "Purchaseable" msgstr "Можно купить" -#: common/models.py:1506 +#: common/models.py:1466 msgid "Parts are purchaseable by default" msgstr "По умолчанию детали являются отслеживаемыми" -#: common/models.py:1511 part/admin.py:104 part/models.py:1083 +#: common/models.py:1471 part/admin.py:104 part/models.py:1076 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "Можно продавать" -#: common/models.py:1512 +#: common/models.py:1472 msgid "Parts are salable by default" msgstr "Детали продаются по умолчанию" -#: common/models.py:1517 part/admin.py:113 part/models.py:1071 +#: common/models.py:1477 part/admin.py:113 part/models.py:1064 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" msgstr "Отслеживание" -#: common/models.py:1518 +#: common/models.py:1478 msgid "Parts are trackable by default" msgstr "По умолчанию детали являются отслеживаемыми" -#: common/models.py:1523 part/admin.py:117 part/models.py:1093 +#: common/models.py:1483 part/admin.py:117 part/models.py:1086 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" msgstr "Виртуальная" -#: common/models.py:1524 +#: common/models.py:1484 msgid "Parts are virtual by default" msgstr "Детали являются виртуальными по умолчанию" -#: common/models.py:1529 +#: common/models.py:1489 msgid "Show Import in Views" msgstr "Показать Импорт в просмотре" -#: common/models.py:1530 +#: common/models.py:1490 msgid "Display the import wizard in some part views" -msgstr "" +msgstr "Отобразить мастер импорта на некоторых видах деталей" -#: common/models.py:1535 +#: common/models.py:1495 msgid "Show related parts" msgstr "Показывать связанные детали" -#: common/models.py:1536 +#: common/models.py:1496 msgid "Display related parts for a part" msgstr "Отображать связанные детали для элемента" -#: common/models.py:1541 +#: common/models.py:1501 msgid "Initial Stock Data" msgstr "Начальные данные о запасах" -#: common/models.py:1542 +#: common/models.py:1502 msgid "Allow creation of initial stock when adding a new part" -msgstr "" +msgstr "Разрешить создание начального запаса при добавлении новой детали" -#: common/models.py:1547 templates/js/translated/part.js:107 +#: common/models.py:1507 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Исходные данные о поставщике" -#: common/models.py:1549 +#: common/models.py:1509 msgid "Allow creation of initial supplier data when adding a new part" -msgstr "" +msgstr "Разрешить создание исходных данных о поставщике при добавлении новой детали" -#: common/models.py:1555 +#: common/models.py:1515 msgid "Part Name Display Format" msgstr "Формат отображения детали" -#: common/models.py:1556 +#: common/models.py:1516 msgid "Format to display the part name" msgstr "Формат для отображения имени детали" -#: common/models.py:1562 +#: common/models.py:1522 msgid "Part Category Default Icon" msgstr "Значок раздела по умолчанию" -#: common/models.py:1563 +#: common/models.py:1523 msgid "Part category default icon (empty means no icon)" msgstr "Значок категории по умолчанию (пустой означает отсутствие значка)" -#: common/models.py:1567 +#: common/models.py:1527 msgid "Enforce Parameter Units" -msgstr "" +msgstr "Принудительное применение единиц измерения параметров" -#: common/models.py:1569 +#: common/models.py:1529 msgid "If units are provided, parameter values must match the specified units" msgstr "Если введены единицы, значения параметра должны соответствовать указанным единицам измерения" -#: common/models.py:1575 +#: common/models.py:1535 msgid "Minimum Pricing Decimal Places" msgstr "Минимальные Цены Десятичные Значки" -#: common/models.py:1577 +#: common/models.py:1537 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "Минимальное количество десятичных знаков при отображении данных о ценах" -#: common/models.py:1583 +#: common/models.py:1548 msgid "Maximum Pricing Decimal Places" msgstr "Макс. Цены десятичные знаки" -#: common/models.py:1585 +#: common/models.py:1550 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "Минимальное количество десятичных знаков при отображении данных о ценах" -#: common/models.py:1591 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "Использовать цены поставщика" -#: common/models.py:1593 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "Включить разницу цен поставщиков при расчетах цен" -#: common/models.py:1599 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "Изменить историю покупки" -#: common/models.py:1601 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" -msgstr "" +msgstr "Ценообразование по историческим заказам на поставку отменяет различия в ценах поставщиков" -#: common/models.py:1607 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "Использовать цены из складских позиций" -#: common/models.py:1609 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "Использовать расценки из ручного ввода данных о запасах для расчета цен" -#: common/models.py:1615 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "Возраст цен складских позиций" -#: common/models.py:1617 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "Исключить складские позиции старше указанного количества дней с расчёта цен" -#: common/models.py:1624 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "Использовать варианты цен" -#: common/models.py:1625 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "Включить разницу цен поставщиков при расчетах цен" -#: common/models.py:1630 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "Только Активные Варианты" -#: common/models.py:1632 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "Использовать только активные запчасти для расчета стоимости варианта" -#: common/models.py:1638 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "Интервал пересчета цен" -#: common/models.py:1640 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "Количество дней до автоматического обновления цены" -#: common/models.py:1647 +#: common/models.py:1617 msgid "Internal Prices" msgstr "Внутренние цены" -#: common/models.py:1648 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "Разрешить внутренние цены для частей" -#: common/models.py:1653 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "Переопределение внутренней цены" -#: common/models.py:1655 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "При наличии внутренних цен переопределить ценовой диапазон" -#: common/models.py:1661 +#: common/models.py:1631 msgid "Enable label printing" msgstr "Включить печать этикеток" -#: common/models.py:1662 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "Включить печать этикеток из веб-интерфейса" -#: common/models.py:1667 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "Изображение меток DPI" -#: common/models.py:1669 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "Разрешение DPI при создании файлов изображений для печати этикеток плагинов" -#: common/models.py:1675 +#: common/models.py:1645 msgid "Enable Reports" msgstr "Включить отчеты" -#: common/models.py:1676 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "Включить генерацию отчетов" -#: common/models.py:1681 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "Режим отладки" -#: common/models.py:1682 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "Генерировать отчеты в режиме отладки (вывод HTML)" -#: common/models.py:1687 +#: common/models.py:1657 msgid "Log Report Errors" msgstr "Журнал ошибок отчета" -#: common/models.py:1688 +#: common/models.py:1658 msgid "Log errors which occur when generating reports" msgstr "Журнал ошибок, которые возникают при создании отчетов" -#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:301 +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:302 msgid "Page Size" msgstr "Размер страницы" -#: common/models.py:1694 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "Размер страницы по умолчанию для PDF отчетов" -#: common/models.py:1699 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "Включить отчеты" -#: common/models.py:1700 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "Включить генерацию отчетов" -#: common/models.py:1705 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "Прикрепить отчеты о тестах" -#: common/models.py:1707 +#: common/models.py:1677 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "При печати отчета о тестировании приложить копию тестового отчета к соответствующему складской позиции" -#: common/models.py:1713 +#: common/models.py:1683 msgid "Globally Unique Serials" -msgstr "" +msgstr "Глобально уникальные серийные номера" -#: common/models.py:1714 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "Серийные номера для складских позиций должны быть уникальными глобально" -#: common/models.py:1719 +#: common/models.py:1689 msgid "Autofill Serial Numbers" -msgstr "" +msgstr "Автоматическое заполнение серийных номеров" -#: common/models.py:1720 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" -msgstr "" +msgstr "Автоматическое заполнение серийных номеров в формах" -#: common/models.py:1725 +#: common/models.py:1695 msgid "Delete Depleted Stock" -msgstr "" +msgstr "Удалить исчерпанный запас" -#: common/models.py:1727 +#: common/models.py:1697 msgid "Determines default behavior when a stock item is depleted" -msgstr "" +msgstr "Определяет поведение по умолчанию, когда складская позиция заканчивается" -#: common/models.py:1733 +#: common/models.py:1703 msgid "Batch Code Template" -msgstr "" +msgstr "Код партии Шаблона" -#: common/models.py:1735 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "Шаблон для создания кодов партии по умолчанию для складских позиций" -#: common/models.py:1740 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "Срок годности Запасов" -#: common/models.py:1741 +#: common/models.py:1711 msgid "Enable stock expiry functionality" -msgstr "" +msgstr "Включить функцию истечения срока годности" -#: common/models.py:1746 +#: common/models.py:1716 msgid "Sell Expired Stock" -msgstr "" +msgstr "Использовать просроченные остатки в производстве" -#: common/models.py:1747 +#: common/models.py:1717 msgid "Allow sale of expired stock" -msgstr "" +msgstr "Разрешить продажу просроченных запасов" -#: common/models.py:1752 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "Время Залежалости Запасов" -#: common/models.py:1754 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "Количество дней перед тем как складская единица будет считаться просроченной" -#: common/models.py:1761 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "Использовать просроченные остатки в производстве" -#: common/models.py:1762 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "Разрешить использовать просроченные остатки в производстве" -#: common/models.py:1767 +#: common/models.py:1737 msgid "Stock Ownership Control" -msgstr "" +msgstr "Контроль за собственными запасами" -#: common/models.py:1768 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" -msgstr "" +msgstr "Разрешить владельцу контролировать расположение складов и номенклатуры" -#: common/models.py:1773 +#: common/models.py:1743 msgid "Stock Location Default Icon" -msgstr "" +msgstr "Значок местоположения по умолчанию" -#: common/models.py:1774 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" -msgstr "" +msgstr "Значок местоположения склада по умолчанию (пустой означает отсутствие значка)" -#: common/models.py:1778 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "Показать установленные складские позиции" -#: common/models.py:1779 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "Отображать установленные складские позиции в складских таблицах" -#: common/models.py:1784 +#: common/models.py:1754 msgid "Check BOM when installing items" -msgstr "" +msgstr "Проверять спецификацию при установке изделий" -#: common/models.py:1786 +#: common/models.py:1756 msgid "Installed stock items must exist in the BOM for the parent part" -msgstr "" +msgstr "Установленные единица хранения должны присутствовать в спецификации для родительской детали" -#: common/models.py:1792 +#: common/models.py:1762 msgid "Allow Out of Stock Transfer" -msgstr "" +msgstr "Разрешить передачу товара, отсутствующего на складе" -#: common/models.py:1794 +#: common/models.py:1764 msgid "Allow stock items which are not in stock to be transferred between stock locations" -msgstr "" +msgstr "Разрешить перемещение товаров, которых нет на складе, между складами" -#: common/models.py:1800 +#: common/models.py:1770 msgid "Build Order Reference Pattern" msgstr "Паттерн ссылки заказа на производство" -#: common/models.py:1802 +#: common/models.py:1772 msgid "Required pattern for generating Build Order reference field" msgstr "Поле требуемого паттерна для создания ссылки заказа на производство" -#: common/models.py:1808 common/models.py:1836 common/models.py:1858 -#: common/models.py:1894 +#: common/models.py:1778 common/models.py:1806 common/models.py:1828 +#: common/models.py:1864 msgid "Require Responsible Owner" -msgstr "" +msgstr "Требуется ответственный владелец" -#: common/models.py:1809 common/models.py:1837 common/models.py:1859 -#: common/models.py:1895 +#: common/models.py:1779 common/models.py:1807 common/models.py:1829 +#: common/models.py:1865 msgid "A responsible owner must be assigned to each order" -msgstr "" +msgstr "Ответственный владелец должен быть назначен для каждого заказа" -#: common/models.py:1814 +#: common/models.py:1784 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1816 +#: common/models.py:1786 msgid "Prevent build outputs from being completed until all required tests pass" -msgstr "" +msgstr "Запретить вывод сборки до тех пор, пока не пройдут все необходимые тесты" -#: common/models.py:1822 +#: common/models.py:1792 msgid "Enable Return Orders" msgstr "Включить заказы на возврат" -#: common/models.py:1823 +#: common/models.py:1793 msgid "Enable return order functionality in the user interface" -msgstr "" +msgstr "Включите функцию заказа на возврат в пользовательском интерфейсе" -#: common/models.py:1828 +#: common/models.py:1798 msgid "Return Order Reference Pattern" -msgstr "" +msgstr "Шаблон заказа на возврат товара" -#: common/models.py:1830 +#: common/models.py:1800 msgid "Required pattern for generating Return Order reference field" -msgstr "" +msgstr "Необходимый шаблон для создания поля «Возврат заказа»" -#: common/models.py:1842 +#: common/models.py:1812 msgid "Edit Completed Return Orders" -msgstr "" +msgstr "Редактировать завершенные возвратные заказы" -#: common/models.py:1844 +#: common/models.py:1814 msgid "Allow editing of return orders after they have been completed" -msgstr "" +msgstr "Разрешить редактирование возвращенных заказов после их завершения" -#: common/models.py:1850 +#: common/models.py:1820 msgid "Sales Order Reference Pattern" -msgstr "" +msgstr "Шаблон заказа на возврат товара" -#: common/models.py:1852 +#: common/models.py:1822 msgid "Required pattern for generating Sales Order reference field" -msgstr "" +msgstr "Необходимый шаблон для создания поля «Возврат заказа»" -#: common/models.py:1864 +#: common/models.py:1834 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1865 +#: common/models.py:1835 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1870 +#: common/models.py:1840 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1872 +#: common/models.py:1842 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1878 -#, fuzzy -#| msgid "A build order has been completed" +#: common/models.py:1848 msgid "Mark Shipped Orders as Complete" -msgstr "Заказ на производство был завершен" +msgstr "" -#: common/models.py:1880 +#: common/models.py:1850 msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" msgstr "" -#: common/models.py:1886 +#: common/models.py:1856 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1888 +#: common/models.py:1858 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1900 +#: common/models.py:1870 msgid "Edit Completed Purchase Orders" msgstr "Редактировать завершенные заказы на покупку" -#: common/models.py:1902 +#: common/models.py:1872 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1908 +#: common/models.py:1878 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1910 +#: common/models.py:1880 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1917 +#: common/models.py:1887 msgid "Enable password forgot" msgstr "" -#: common/models.py:1918 +#: common/models.py:1888 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1923 +#: common/models.py:1893 msgid "Enable registration" msgstr "" -#: common/models.py:1924 +#: common/models.py:1894 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1929 +#: common/models.py:1899 msgid "Enable SSO" msgstr "Включить SSO" -#: common/models.py:1930 +#: common/models.py:1900 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1935 +#: common/models.py:1905 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1937 +#: common/models.py:1907 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1943 +#: common/models.py:1913 msgid "Email required" msgstr "Необходимо указать EMail" -#: common/models.py:1944 +#: common/models.py:1914 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1949 +#: common/models.py:1919 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1951 +#: common/models.py:1921 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1957 +#: common/models.py:1927 msgid "Mail twice" msgstr "Написать дважды" -#: common/models.py:1958 +#: common/models.py:1928 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1963 +#: common/models.py:1933 msgid "Password twice" msgstr "Пароль дважды" -#: common/models.py:1964 +#: common/models.py:1934 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1969 +#: common/models.py:1939 msgid "Allowed domains" msgstr "Разрешенные домены" -#: common/models.py:1971 +#: common/models.py:1941 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1977 +#: common/models.py:1947 msgid "Group on signup" msgstr "" -#: common/models.py:1978 +#: common/models.py:1948 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1983 +#: common/models.py:1953 msgid "Enforce MFA" msgstr "Принудительное MFA" -#: common/models.py:1984 +#: common/models.py:1954 msgid "Users must use multifactor security." msgstr "Пользователи должны использовать многофакторную безопасность." -#: common/models.py:1989 +#: common/models.py:1959 msgid "Check plugins on startup" msgstr "Проверять плагины при запуске" -#: common/models.py:1991 +#: common/models.py:1961 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1999 +#: common/models.py:1969 msgid "Check for plugin updates" msgstr "" -#: common/models.py:2000 +#: common/models.py:1970 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:2006 +#: common/models.py:1976 msgid "Enable URL integration" msgstr "" -#: common/models.py:2007 +#: common/models.py:1977 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:2013 +#: common/models.py:1983 msgid "Enable navigation integration" msgstr "" -#: common/models.py:2014 +#: common/models.py:1984 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:2020 +#: common/models.py:1990 msgid "Enable app integration" msgstr "" -#: common/models.py:2021 +#: common/models.py:1991 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:2027 +#: common/models.py:1997 msgid "Enable schedule integration" msgstr "" -#: common/models.py:2028 +#: common/models.py:1998 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:2034 +#: common/models.py:2004 msgid "Enable event integration" msgstr "" -#: common/models.py:2035 +#: common/models.py:2005 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:2041 +#: common/models.py:2011 msgid "Enable project codes" msgstr "" -#: common/models.py:2042 +#: common/models.py:2012 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:2047 +#: common/models.py:2017 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:2049 +#: common/models.py:2019 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:2055 +#: common/models.py:2025 msgid "Exclude External Locations" msgstr "" -#: common/models.py:2057 +#: common/models.py:2027 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "Исключить складские позиции во внешних местах хранения из инвентаризации" -#: common/models.py:2063 +#: common/models.py:2033 msgid "Automatic Stocktake Period" -msgstr "" +msgstr "Автоматический период инвентаризации" -#: common/models.py:2065 +#: common/models.py:2035 msgid "Number of days between automatic stocktake recording (set to zero to disable)" -msgstr "" +msgstr "Количество дней между автоматической записью запасов (установите нулевое значение для отключения)" -#: common/models.py:2071 +#: common/models.py:2041 msgid "Report Deletion Interval" -msgstr "" +msgstr "Интервал удаления журнала ошибок" -#: common/models.py:2073 +#: common/models.py:2043 msgid "Stocktake reports will be deleted after specified number of days" -msgstr "" +msgstr "Журналы ошибок будут удалены после указанного количества дней" -#: common/models.py:2080 +#: common/models.py:2050 msgid "Display Users full names" -msgstr "" +msgstr "Показывать полные имена пользователей" -#: common/models.py:2081 +#: common/models.py:2051 msgid "Display Users full names instead of usernames" -msgstr "" +msgstr "Отображать полные имена пользователей вместо логинов" -#: common/models.py:2086 +#: common/models.py:2056 msgid "Enable Test Station Data" -msgstr "" +msgstr "Включить данные тестовой станции" -#: common/models.py:2087 +#: common/models.py:2057 msgid "Enable test station data collection for test results" -msgstr "" +msgstr "Включить сбор данных с тестовой станции для получения результатов тестирования" -#: common/models.py:2099 common/models.py:2509 +#: common/models.py:2069 common/models.py:2479 msgid "Settings key (must be unique - case insensitive" -msgstr "" +msgstr "Ключ настроек (должен быть уникальным - не чувствителен к регистру)" -#: common/models.py:2142 +#: common/models.py:2112 msgid "Hide inactive parts" -msgstr "" +msgstr "Скрыть неактивные детали" -#: common/models.py:2144 +#: common/models.py:2114 msgid "Hide inactive parts in results displayed on the homepage" -msgstr "" +msgstr "Скрывать неактивные части в результатах, отображаемых на главной странице," -#: common/models.py:2150 +#: common/models.py:2120 msgid "Show subscribed parts" msgstr "Показывать детали, на которые включены уведомления" -#: common/models.py:2151 +#: common/models.py:2121 msgid "Show subscribed parts on the homepage" msgstr "Показывать детали, на которые включены уведомления, на главной странице" -#: common/models.py:2156 +#: common/models.py:2126 msgid "Show subscribed categories" msgstr "Показывать категории, на которые включены уведомления" -#: common/models.py:2157 +#: common/models.py:2127 msgid "Show subscribed part categories on the homepage" msgstr "Показывать категории, на которые включены уведомления, на главной странице" -#: common/models.py:2162 +#: common/models.py:2132 msgid "Show latest parts" msgstr "Показывать последние детали" -#: common/models.py:2163 +#: common/models.py:2133 msgid "Show latest parts on the homepage" msgstr "Показывать последние детали на главной странице" -#: common/models.py:2168 +#: common/models.py:2138 msgid "Show invalid BOMs" -msgstr "" +msgstr "Показывать недопустимые спецификации" -#: common/models.py:2169 +#: common/models.py:2139 msgid "Show BOMs that await validation on the homepage" msgstr "Показывать BOMы, ожидающие проверки, на главной странице" -#: common/models.py:2174 +#: common/models.py:2144 msgid "Show recent stock changes" msgstr "Показывать изменившиеся складские запасы" -#: common/models.py:2175 +#: common/models.py:2145 msgid "Show recently changed stock items on the homepage" msgstr "Показывать складские позиции с недавно изменившимися запасами на главной странице" -#: common/models.py:2180 +#: common/models.py:2150 msgid "Show low stock" msgstr "Показывать низкие складские запасы" -#: common/models.py:2181 +#: common/models.py:2151 msgid "Show low stock items on the homepage" msgstr "Показывать складские позиции с низкими запасами на главной странице" -#: common/models.py:2186 +#: common/models.py:2156 msgid "Show depleted stock" msgstr "Показывать закончившиеся складские позиции" -#: common/models.py:2187 +#: common/models.py:2157 msgid "Show depleted stock items on the homepage" msgstr "Показывать закончившиеся складские позиции на главной странице" -#: common/models.py:2192 +#: common/models.py:2162 msgid "Show needed stock" msgstr "Показывать требуемые складские позиции" -#: common/models.py:2193 +#: common/models.py:2163 msgid "Show stock items needed for builds on the homepage" msgstr "Показывать требуемые для производства складские позиции на главной странице" -#: common/models.py:2198 +#: common/models.py:2168 msgid "Show expired stock" msgstr "Показывать складские позиции с истекшим сроком годности" -#: common/models.py:2199 +#: common/models.py:2169 msgid "Show expired stock items on the homepage" msgstr "Показывать складские позиции с истёкшим сроком годности на главной странице" -#: common/models.py:2204 +#: common/models.py:2174 msgid "Show stale stock" msgstr "Показывать залежалые складские позиции" -#: common/models.py:2205 +#: common/models.py:2175 msgid "Show stale stock items on the homepage" msgstr "Показывать складские позиции с истекающим сроком годности на главной странице" -#: common/models.py:2210 +#: common/models.py:2180 msgid "Show pending builds" msgstr "Показывать незавершённые производства" -#: common/models.py:2211 +#: common/models.py:2181 msgid "Show pending builds on the homepage" msgstr "Показывать незавершённые производства на главной странице" -#: common/models.py:2216 +#: common/models.py:2186 msgid "Show overdue builds" msgstr "Показывать просроченные производства" -#: common/models.py:2217 +#: common/models.py:2187 msgid "Show overdue builds on the homepage" msgstr "Показывать просроченные производства на главной странице" -#: common/models.py:2222 +#: common/models.py:2192 msgid "Show outstanding POs" -msgstr "" +msgstr "Показать невыполненные заказы" -#: common/models.py:2223 +#: common/models.py:2193 msgid "Show outstanding POs on the homepage" -msgstr "" +msgstr "Покажите невыполненные заказы на покупку на главной странице" -#: common/models.py:2228 +#: common/models.py:2198 msgid "Show overdue POs" msgstr "Показать просроченные заказы на производство" -#: common/models.py:2229 +#: common/models.py:2199 msgid "Show overdue POs on the homepage" -msgstr "" +msgstr "Показывать просроченные сборки на главной странице" -#: common/models.py:2234 +#: common/models.py:2204 msgid "Show outstanding SOs" -msgstr "" +msgstr "Показать невыполненные заказы" -#: common/models.py:2235 +#: common/models.py:2205 msgid "Show outstanding SOs on the homepage" -msgstr "" +msgstr "Покажите невыполненные заказы на покупку на главной странице" -#: common/models.py:2240 +#: common/models.py:2210 msgid "Show overdue SOs" msgstr "Показать просроченные заказы на продажу" -#: common/models.py:2241 +#: common/models.py:2211 msgid "Show overdue SOs on the homepage" -msgstr "" +msgstr "Показывать просроченные заказы на покупку на главной странице" -#: common/models.py:2246 +#: common/models.py:2216 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2247 +#: common/models.py:2217 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2252 +#: common/models.py:2222 msgid "Show News" msgstr "Показывать новости" -#: common/models.py:2253 +#: common/models.py:2223 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2258 +#: common/models.py:2228 msgid "Inline label display" msgstr "" -#: common/models.py:2260 +#: common/models.py:2230 msgid "Display PDF labels in the browser, instead of downloading as a file" -msgstr "" +msgstr "Отображение PDF-этикетки в браузере вместо загрузки в виде файла" -#: common/models.py:2266 +#: common/models.py:2236 msgid "Default label printer" -msgstr "" +msgstr "Принтер этикетки по умолчанию" -#: common/models.py:2268 +#: common/models.py:2238 msgid "Configure which label printer should be selected by default" -msgstr "" +msgstr "Настроить принтер этикеток по умолчанию" -#: common/models.py:2274 +#: common/models.py:2244 msgid "Inline report display" -msgstr "" +msgstr "Отображение встроенного отчета" -#: common/models.py:2276 +#: common/models.py:2246 msgid "Display PDF reports in the browser, instead of downloading as a file" -msgstr "" +msgstr "Отображение PDF-этикетки в браузере вместо загрузки в виде файла" -#: common/models.py:2282 +#: common/models.py:2252 msgid "Search Parts" msgstr "Поиск Деталей" -#: common/models.py:2283 +#: common/models.py:2253 msgid "Display parts in search preview window" -msgstr "" +msgstr "Отображение деталей в окне предварительного просмотра поиска" -#: common/models.py:2288 +#: common/models.py:2258 msgid "Search Supplier Parts" -msgstr "" +msgstr "Поиск деталей поставщика" -#: common/models.py:2289 +#: common/models.py:2259 msgid "Display supplier parts in search preview window" -msgstr "" +msgstr "Отображение деталей поставщика в окне предварительного просмотра поиска" -#: common/models.py:2294 +#: common/models.py:2264 msgid "Search Manufacturer Parts" -msgstr "" +msgstr "Новая деталь производителя" -#: common/models.py:2295 +#: common/models.py:2265 msgid "Display manufacturer parts in search preview window" -msgstr "" +msgstr "Отображение деталей поставщика в окне предварительного просмотра поиска" -#: common/models.py:2300 +#: common/models.py:2270 msgid "Hide Inactive Parts" -msgstr "" +msgstr "Скрыть неактивные детали" -#: common/models.py:2301 +#: common/models.py:2271 msgid "Excluded inactive parts from search preview window" -msgstr "" +msgstr "Исключить неактивные детали из окна предварительного просмотра поиска" -#: common/models.py:2306 +#: common/models.py:2276 msgid "Search Categories" -msgstr "" +msgstr "Категории поиска" -#: common/models.py:2307 +#: common/models.py:2277 msgid "Display part categories in search preview window" -msgstr "" +msgstr "Отображение деталей в окне предварительного просмотра поиска" -#: common/models.py:2312 +#: common/models.py:2282 msgid "Search Stock" msgstr "Поиск Запасов" -#: common/models.py:2313 +#: common/models.py:2283 msgid "Display stock items in search preview window" msgstr "Отображать складские позиции в окне предварительного просмотра поиска" -#: common/models.py:2318 +#: common/models.py:2288 msgid "Hide Unavailable Stock Items" msgstr "Скрыть недоступные складские позиции" -#: common/models.py:2320 +#: common/models.py:2290 msgid "Exclude stock items which are not available from the search preview window" msgstr "Исключить недоступные складские позиции из окна предварительного просмотра поиска" -#: common/models.py:2326 +#: common/models.py:2296 msgid "Search Locations" msgstr "Поиск мест хранения" -#: common/models.py:2327 +#: common/models.py:2297 msgid "Display stock locations in search preview window" -msgstr "" +msgstr "Отображать места хранения в окне предварительного просмотра поиска" -#: common/models.py:2332 +#: common/models.py:2302 msgid "Search Companies" msgstr "Поиск компаний" -#: common/models.py:2333 +#: common/models.py:2303 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2338 +#: common/models.py:2308 msgid "Search Build Orders" msgstr "Поиск заказов на производство" -#: common/models.py:2339 +#: common/models.py:2309 msgid "Display build orders in search preview window" msgstr "Отображать заказы на производство в окне предварительного просмотра поиска" -#: common/models.py:2344 +#: common/models.py:2314 msgid "Search Purchase Orders" -msgstr "" +msgstr "Поиск заказов на покупку" -#: common/models.py:2345 +#: common/models.py:2315 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2350 +#: common/models.py:2320 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2352 +#: common/models.py:2322 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2358 +#: common/models.py:2328 msgid "Search Sales Orders" msgstr "Поиск заказов на продажу" -#: common/models.py:2359 +#: common/models.py:2329 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2364 +#: common/models.py:2334 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2366 +#: common/models.py:2336 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2372 +#: common/models.py:2342 msgid "Search Return Orders" msgstr "Поиск заказов на возврат" -#: common/models.py:2373 +#: common/models.py:2343 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2378 +#: common/models.py:2348 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2380 +#: common/models.py:2350 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2386 +#: common/models.py:2356 msgid "Search Preview Results" msgstr "" -#: common/models.py:2388 +#: common/models.py:2358 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2394 +#: common/models.py:2364 msgid "Regex Search" msgstr "Поиск по Regex" -#: common/models.py:2395 +#: common/models.py:2365 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2400 +#: common/models.py:2370 msgid "Whole Word Search" msgstr "" -#: common/models.py:2401 +#: common/models.py:2371 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2406 +#: common/models.py:2376 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2407 +#: common/models.py:2377 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2412 +#: common/models.py:2382 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2413 +#: common/models.py:2383 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2418 +#: common/models.py:2388 msgid "Fixed Navbar" msgstr "Фиксированная панель навигации" -#: common/models.py:2419 +#: common/models.py:2389 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2424 +#: common/models.py:2394 msgid "Date Format" msgstr "Формат даты" -#: common/models.py:2425 +#: common/models.py:2395 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2438 part/templates/part/detail.html:41 +#: common/models.py:2408 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Планирование деталей" -#: common/models.py:2439 +#: common/models.py:2409 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2444 part/templates/part/detail.html:62 +#: common/models.py:2414 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "Инвентаризация детали" -#: common/models.py:2446 +#: common/models.py:2416 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2452 +#: common/models.py:2422 msgid "Table String Length" msgstr "" -#: common/models.py:2454 +#: common/models.py:2424 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2460 +#: common/models.py:2430 msgid "Default part label template" msgstr "" -#: common/models.py:2461 +#: common/models.py:2431 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2466 +#: common/models.py:2436 msgid "Default stock item template" msgstr "Шаблон складской позиции по умолчанию" -#: common/models.py:2468 +#: common/models.py:2438 msgid "The stock item label template to be automatically selected" msgstr "Шаблон метки складской позиции для автоматического выбора" -#: common/models.py:2474 +#: common/models.py:2444 msgid "Default stock location label template" msgstr "" -#: common/models.py:2476 +#: common/models.py:2446 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2482 +#: common/models.py:2452 msgid "Default build line label template" msgstr "" -#: common/models.py:2484 +#: common/models.py:2454 msgid "The build line label template to be automatically selected" msgstr "" -#: common/models.py:2490 +#: common/models.py:2460 msgid "Receive error reports" msgstr "" -#: common/models.py:2491 +#: common/models.py:2461 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2496 +#: common/models.py:2466 msgid "Last used printing machines" msgstr "" -#: common/models.py:2497 +#: common/models.py:2467 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2540 +#: common/models.py:2487 common/models.py:2488 common/models.py:2636 +#: common/models.py:2637 common/models.py:2882 common/models.py:2883 +#: common/models.py:3193 common/models.py:3194 part/models.py:3193 +#: part/models.py:3280 part/models.py:3353 part/models.py:3381 +#: plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "Пользователь" + +#: common/models.py:2510 msgid "Price break quantity" msgstr "" -#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1382 order/models.py:2301 -#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 +#: common/models.py:2517 company/serializers.py:472 order/admin.py:42 +#: order/models.py:1346 order/models.py:2265 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1886 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:740 msgid "Price" msgstr "Цена" -#: common/models.py:2548 +#: common/models.py:2518 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2719 common/models.py:2904 +#: common/models.py:2613 common/models.py:2798 msgid "Endpoint" msgstr "Конечная точка" -#: common/models.py:2720 +#: common/models.py:2614 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2730 +#: common/models.py:2624 msgid "Name for this webhook" msgstr "" -#: common/models.py:2734 company/models.py:160 company/models.py:814 -#: machine/models.py:39 part/admin.py:88 part/models.py:1088 -#: plugin/models.py:65 templates/js/translated/company.js:523 +#: common/models.py:2628 company/models.py:163 company/models.py:782 +#: machine/models.py:39 part/admin.py:88 part/models.py:1081 +#: plugin/models.py:66 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3464,101 +3408,118 @@ msgstr "" msgid "Active" msgstr "Активный" -#: common/models.py:2734 +#: common/models.py:2628 msgid "Is this webhook active" msgstr "" -#: common/models.py:2750 users/models.py:159 +#: common/models.py:2644 users/models.py:159 msgid "Token" msgstr "Токен" -#: common/models.py:2751 +#: common/models.py:2645 msgid "Token for access" msgstr "Токен для доступа" -#: common/models.py:2759 +#: common/models.py:2653 msgid "Secret" msgstr "Секрет" -#: common/models.py:2760 +#: common/models.py:2654 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2868 +#: common/models.py:2762 msgid "Message ID" msgstr "ID Сообщения" -#: common/models.py:2869 +#: common/models.py:2763 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2877 +#: common/models.py:2771 msgid "Host" msgstr "Хост" -#: common/models.py:2878 +#: common/models.py:2772 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2886 +#: common/models.py:2780 msgid "Header" msgstr "Заголовок" -#: common/models.py:2887 +#: common/models.py:2781 msgid "Header of this message" msgstr "" -#: common/models.py:2894 +#: common/models.py:2788 msgid "Body" msgstr "Тело" -#: common/models.py:2895 +#: common/models.py:2789 msgid "Body of this message" msgstr "" -#: common/models.py:2905 +#: common/models.py:2799 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2910 +#: common/models.py:2804 msgid "Worked on" msgstr "Работал над" -#: common/models.py:2911 +#: common/models.py:2805 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:3037 +#: common/models.py:2931 msgid "Id" msgstr "Код" -#: common/models.py:3039 templates/js/translated/company.js:965 +#: common/models.py:2933 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "Заголовок" -#: common/models.py:3043 templates/js/translated/news.js:60 +#: common/models.py:2935 common/models.py:3177 company/models.py:149 +#: company/models.py:440 company/models.py:500 company/models.py:799 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +#: part/admin.py:55 part/models.py:955 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "Ссылка" + +#: common/models.py:2937 templates/js/translated/news.js:60 msgid "Published" msgstr "Опубликовано" -#: common/models.py:3045 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2939 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:3047 templates/js/translated/news.js:52 +#: common/models.py:2941 templates/js/translated/news.js:52 msgid "Summary" msgstr "Итого" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Read" msgstr "Читать" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Was this news item read?" msgstr "" -#: common/models.py:3067 company/models.py:156 part/models.py:972 +#: common/models.py:2961 company/models.py:159 part/models.py:965 #: 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.html:35 @@ -3568,34 +3529,89 @@ msgstr "" msgid "Image" msgstr "Изображение" -#: common/models.py:3067 +#: common/models.py:2961 msgid "Image file" msgstr "Файл изображения" -#: common/models.py:3109 +#: common/models.py:2973 common/models.py:3161 +msgid "Target model type for this image" +msgstr "" + +#: common/models.py:2977 +msgid "Target model ID for this image" +msgstr "" + +#: common/models.py:3018 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3128 +#: common/models.py:3037 msgid "Unit name" msgstr "Название единицы" -#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3044 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "Символ" -#: common/models.py:3136 +#: common/models.py:3045 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3052 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "Определение" -#: common/models.py:3144 +#: common/models.py:3053 msgid "Unit definition" msgstr "" +#: common/models.py:3111 common/models.py:3168 stock/models.py:2426 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "Вложения" + +#: common/models.py:3123 +msgid "Missing file" +msgstr "Файл не найден" + +#: common/models.py:3124 +msgid "Missing external link" +msgstr "Отсутствует внешняя ссылка" + +#: common/models.py:3169 +msgid "Select file to attach" +msgstr "Выберите файл для вложения" + +#: common/models.py:3184 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "Комментарий" + +#: common/models.py:3185 +msgid "Attachment comment" +msgstr "" + +#: common/models.py:3201 +msgid "Upload date" +msgstr "" + +#: common/models.py:3202 +msgid "Date the file was uploaded" +msgstr "" + +#: common/models.py:3206 +msgid "File size" +msgstr "" + +#: common/models.py:3206 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3244 common/serializers.py:553 +msgid "Invalid model type specified for attachment" +msgstr "" + #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" @@ -3630,66 +3646,103 @@ msgstr "" msgid "Error raised by plugin" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:371 msgid "Is Running" msgstr "Запущен" -#: common/serializers.py:372 +#: common/serializers.py:377 msgid "Pending Tasks" msgstr "Ожидающие задачи" -#: common/serializers.py:378 +#: common/serializers.py:383 msgid "Scheduled Tasks" msgstr "Запланированные задания" -#: common/serializers.py:384 +#: common/serializers.py:389 msgid "Failed Tasks" msgstr "Невыполненные Задачи" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Task ID" msgstr "Код задачи" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Unique task ID" msgstr "Уникальный ID задачи" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock" msgstr "Заблокировать" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock time" msgstr "Время блокировки" -#: common/serializers.py:403 +#: common/serializers.py:408 msgid "Task name" msgstr "Название задачи" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function" msgstr "Функция" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function name" msgstr "Имя функции" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Arguments" msgstr "Аргументы" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Task arguments" msgstr "Аргументы задачи" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Keyword Arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Task keyword arguments" msgstr "" +#: common/serializers.py:525 +msgid "Filename" +msgstr "Имя файла" + +#: common/serializers.py:532 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: common/serializers.py:559 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "" + +#: common/validators.py:33 +msgid "No attachment model type provided" +msgstr "" + +#: common/validators.py:39 +msgid "Invalid attachment model type" +msgstr "" + +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "Пустой домен не допускается." + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +msgstr "Недопустимое доменное имя: {domain}" + #: 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 @@ -3728,210 +3781,222 @@ msgstr "Детали импортированы" msgid "Previous Step" msgstr "Предыдущий шаг" -#: company/api.py:164 +#: company/api.py:144 msgid "Part is Active" msgstr "" -#: company/api.py:168 +#: company/api.py:148 msgid "Manufacturer is Active" msgstr "" -#: company/api.py:317 +#: company/api.py:281 msgid "Supplier Part is Active" msgstr "" -#: company/api.py:321 +#: company/api.py:285 msgid "Internal Part is Active" msgstr "" -#: company/api.py:325 +#: company/api.py:289 msgid "Supplier is Active" msgstr "" -#: company/models.py:114 +#: company/models.py:100 company/models.py:365 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:822 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "Компания" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "Компании" + +#: company/models.py:117 msgid "Company description" msgstr "Описание компании" -#: company/models.py:115 +#: company/models.py:118 msgid "Description of the company" msgstr "Описание компании" -#: company/models.py:120 company/templates/company/company_base.html:106 +#: company/models.py:123 company/templates/company/company_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:532 msgid "Website" msgstr "Сайт" -#: company/models.py:120 +#: company/models.py:123 msgid "Company website URL" msgstr "Сайт компании" -#: company/models.py:125 +#: company/models.py:128 msgid "Phone number" msgstr "Телефон" -#: company/models.py:127 +#: company/models.py:130 msgid "Contact phone number" msgstr "Контактный телефон" -#: company/models.py:134 +#: company/models.py:137 msgid "Contact email address" msgstr "Контактный EMail" -#: company/models.py:139 company/templates/company/company_base.html:145 +#: company/models.py:142 company/templates/company/company_base.html:145 #: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "Контакт" -#: company/models.py:141 +#: company/models.py:144 msgid "Point of contact" msgstr "Контактное лицо" -#: company/models.py:147 +#: company/models.py:150 msgid "Link to external company information" msgstr "Ссылка на описание компании" -#: company/models.py:160 +#: company/models.py:163 msgid "Is this company active?" msgstr "" -#: company/models.py:165 +#: company/models.py:168 msgid "is customer" msgstr "покупатель" -#: company/models.py:166 +#: company/models.py:169 msgid "Do you sell items to this company?" msgstr "Вы продаёте детали этой компании?" -#: company/models.py:171 +#: company/models.py:174 msgid "is supplier" msgstr "поставщик" -#: company/models.py:172 +#: company/models.py:175 msgid "Do you purchase items from this company?" msgstr "Вы закупаете детали у этой компании?" -#: company/models.py:177 +#: company/models.py:180 msgid "is manufacturer" msgstr "производитель" -#: company/models.py:178 +#: company/models.py:181 msgid "Does this company manufacture parts?" msgstr "Является ли компания производителем деталей?" -#: company/models.py:186 +#: company/models.py:189 msgid "Default currency used for this company" msgstr "Для этой компании используется валюта по умолчанию" -#: company/models.py:273 company/models.py:382 -#: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:812 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 -msgid "Company" -msgstr "Компания" - -#: company/models.py:383 +#: company/models.py:366 msgid "Select company" msgstr "Выберите компанию" -#: company/models.py:388 +#: company/models.py:371 msgid "Address title" msgstr "Заголовок адреса" -#: company/models.py:389 +#: company/models.py:372 msgid "Title describing the address entry" msgstr "" -#: company/models.py:395 +#: company/models.py:378 msgid "Primary address" msgstr "" -#: company/models.py:396 +#: company/models.py:379 msgid "Set as primary address" msgstr "" -#: company/models.py:401 templates/js/translated/company.js:914 +#: company/models.py:384 templates/js/translated/company.js:914 #: templates/js/translated/company.js:971 msgid "Line 1" msgstr "Строка 1" -#: company/models.py:402 +#: company/models.py:385 msgid "Address line 1" msgstr "Адресная строка 1" -#: company/models.py:408 templates/js/translated/company.js:915 +#: company/models.py:391 templates/js/translated/company.js:915 #: templates/js/translated/company.js:977 msgid "Line 2" msgstr "Строка 2" -#: company/models.py:409 +#: company/models.py:392 msgid "Address line 2" msgstr "Адресная строка 2" -#: company/models.py:415 company/models.py:416 +#: company/models.py:398 company/models.py:399 #: templates/js/translated/company.js:983 msgid "Postal code" msgstr "Почтовый индекс" -#: company/models.py:422 +#: company/models.py:405 msgid "City/Region" msgstr "Город/Регион" -#: company/models.py:423 +#: company/models.py:406 msgid "Postal code city/region" msgstr "" -#: company/models.py:429 +#: company/models.py:412 msgid "State/Province" msgstr "Регион/Область" -#: company/models.py:430 +#: company/models.py:413 msgid "State or province" msgstr "" -#: company/models.py:436 templates/js/translated/company.js:1001 +#: company/models.py:419 templates/js/translated/company.js:1001 msgid "Country" msgstr "Страна" -#: company/models.py:437 +#: company/models.py:420 msgid "Address country" msgstr "Страна адреса" -#: company/models.py:443 +#: company/models.py:426 msgid "Courier shipping notes" msgstr "Записи отправления" -#: company/models.py:444 +#: company/models.py:427 msgid "Notes for shipping courier" msgstr "Записи для курьера" -#: company/models.py:450 +#: company/models.py:433 msgid "Internal shipping notes" msgstr "Внутренние записи отправления" -#: company/models.py:451 +#: company/models.py:434 msgid "Shipping notes for internal use" msgstr "Записи отправления для внутреннего пользования" -#: company/models.py:458 +#: company/models.py:441 msgid "Link to address information (external)" msgstr "" -#: company/models.py:489 company/models.py:792 stock/models.py:768 -#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 +#: company/models.py:463 company/models.py:574 company/models.py:792 +#: 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:475 company/models.py:760 stock/models.py:766 +#: stock/serializers.py:422 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Базовая деталь" -#: company/models.py:491 company/models.py:794 +#: company/models.py:477 company/models.py:762 msgid "Select part" msgstr "Выберите деталь" -#: company/models.py:500 company/templates/company/company_base.html:82 +#: company/models.py:486 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:530 +#: company/templates/company/supplier_part.html:145 part/serializers.py:525 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -3941,152 +4006,154 @@ msgstr "Выберите деталь" msgid "Manufacturer" msgstr "Производитель" -#: company/models.py:501 +#: company/models.py:487 msgid "Select manufacturer" msgstr "Выберите производителя" -#: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:540 +#: company/models.py:493 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:535 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 -#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1801 #: templates/js/translated/purchase_order.js:1851 #: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "" -#: company/models.py:508 +#: company/models.py:494 msgid "Manufacturer Part Number" msgstr "Код производителя" -#: company/models.py:515 +#: company/models.py:501 msgid "URL for external manufacturer part link" msgstr "Ссылка на сайт производителя" -#: company/models.py:524 +#: company/models.py:510 msgid "Manufacturer part description" msgstr "" -#: company/models.py:581 company/models.py:608 company/models.py:824 -#: 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:615 +#: company/models.py:581 msgid "Parameter name" msgstr "Наименование параметра" -#: company/models.py:621 report/templates/report/inventree_test_report.html:104 -#: stock/models.py:2429 templates/js/translated/company.js:1166 -#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 +#: company/models.py:587 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2418 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1493 #: templates/js/translated/stock.js:1522 msgid "Value" msgstr "Значение" -#: company/models.py:622 +#: company/models.py:588 msgid "Parameter value" msgstr "Значение параметра" -#: company/models.py:629 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1052 part/models.py:3666 +#: company/models.py:595 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1045 part/models.py:3646 #: part/templates/part/part_base.html:284 -#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1512 +#: templates/js/translated/part.js:1616 templates/js/translated/part.js:2370 msgid "Units" msgstr "Ед.изм" -#: company/models.py:630 +#: company/models.py:596 msgid "Parameter units" msgstr "Единицы измерения параметра" -#: company/models.py:732 +#: company/models.py:648 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:777 stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "Деталь поставщика" + +#: company/models.py:700 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:739 +#: company/models.py:707 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:753 +#: company/models.py:721 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/models.py:770 company/templates/company/company_base.html:87 #: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:514 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:509 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:511 -#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1769 #: templates/js/translated/pricing.js:498 #: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "Поставщик" -#: company/models.py:803 +#: company/models.py:771 msgid "Select supplier" msgstr "Выберите поставщика" -#: company/models.py:809 part/serializers.py:525 +#: company/models.py:777 part/serializers.py:520 msgid "Supplier stock keeping unit" msgstr "Код поставщика" -#: company/models.py:815 +#: company/models.py:783 msgid "Is this supplier part active?" msgstr "" -#: company/models.py:825 +#: company/models.py:793 msgid "Select manufacturer part" msgstr "Выберите производителя части" -#: company/models.py:832 +#: company/models.py:800 msgid "URL for external supplier part link" msgstr "Ссылка на сайт поставщика" -#: company/models.py:841 +#: company/models.py:809 msgid "Supplier part description" msgstr "" -#: company/models.py:848 company/templates/company/supplier_part.html:187 -#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 +#: company/models.py:816 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4093 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_purchase_order_report.html:32 #: report/templates/report/inventree_return_order_report.html:27 #: report/templates/report/inventree_sales_order_report.html:32 #: report/templates/report/inventree_stock_location_report.html:105 -#: stock/serializers.py:708 +#: stock/serializers.py:710 msgid "Note" msgstr "Запись" -#: company/models.py:857 part/models.py:2010 +#: company/models.py:825 part/models.py:2003 msgid "base cost" msgstr "базовая стоимость" -#: company/models.py:858 part/models.py:2011 +#: company/models.py:826 part/models.py:2004 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:865 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 +#: company/models.py:833 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:797 stock/serializers.py:1475 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 #: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "Упаковка" -#: company/models.py:866 +#: company/models.py:834 msgid "Part packaging" msgstr "Упаковка детали" -#: company/models.py:871 templates/js/translated/company.js:1651 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: company/models.py:839 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:311 #: templates/js/translated/purchase_order.js:841 #: templates/js/translated/purchase_order.js:1103 @@ -4095,35 +4162,35 @@ msgstr "Упаковка детали" msgid "Pack Quantity" msgstr "Кол-во в упаковке" -#: company/models.py:873 +#: company/models.py:841 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:892 part/models.py:2017 +#: company/models.py:860 part/models.py:2010 msgid "multiple" msgstr "множественные" -#: company/models.py:893 +#: company/models.py:861 msgid "Order multiple" msgstr "Кратность заказа" -#: company/models.py:905 +#: company/models.py:873 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:911 +#: company/models.py:879 msgid "Availability Updated" msgstr "" -#: company/models.py:912 +#: company/models.py:880 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:163 +#: company/serializers.py:161 msgid "Default currency used for this supplier" msgstr "Валюта по умолчанию для этого поставщика" -#: company/serializers.py:381 part/admin.py:126 +#: company/serializers.py:357 part/admin.py:126 #: part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1689 #: templates/js/translated/table_filters.js:355 @@ -4135,7 +4202,7 @@ msgstr "На складе" #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 #: templates/js/translated/model_renderers.js:312 -#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +#: templates/js/translated/part.js:815 templates/js/translated/part.js:1219 msgid "Inactive" msgstr "Неактивный" @@ -4174,7 +4241,7 @@ msgstr "Удалить компанию" #: report/templates/report/inventree_purchase_order_report.html:40 #: report/templates/report/inventree_sales_order_report.html:40 #: report/templates/report/inventree_test_report.html:84 -#: report/templates/report/inventree_test_report.html:163 +#: report/templates/report/inventree_test_report.html:162 msgid "Part image" msgstr "Изображение детали" @@ -4193,10 +4260,10 @@ msgstr "Скачать изображение по ссылке" msgid "Delete image" msgstr "Удалить изображение" -#: company/templates/company/company_base.html:92 order/models.py:940 -#: order/models.py:2068 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:148 stock/models.py:821 -#: stock/models.py:822 stock/serializers.py:1229 +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2032 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:819 +#: stock/models.py:820 stock/serializers.py:1225 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 @@ -4407,7 +4474,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:836 +#: part/admin.py:122 part/serializers.py:832 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4427,8 +4494,8 @@ msgstr "Параметры" msgid "New Parameter" msgstr "Новый параметр" -#: company/templates/company/manufacturer_part.html:206 -#: templates/js/translated/part.js:1422 +#: company/templates/company/manufacturer_part.html:196 +#: templates/js/translated/part.js:1423 msgid "Add Parameter" msgstr "Добавить параметр" @@ -4456,15 +4523,6 @@ msgstr "Контакты" msgid "Addresses" msgstr "Адреса" -#: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:452 -#: stock/models.py:779 stock/templates/stock/item_base.html:233 -#: templates/js/translated/company.js:1600 -#: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2280 -msgid "Supplier Part" -msgstr "Деталь поставщика" - #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1526 msgid "Supplier part actions" @@ -4507,8 +4565,8 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:524 -#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: part/bom.py:311 part/serializers.py:519 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1787 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1850 #: templates/js/translated/purchase_order.js:2028 @@ -4520,12 +4578,12 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:207 msgid "Create new stock item" msgstr "Создать новую складскую позицию" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "Новая складская позиция" @@ -4557,15 +4615,15 @@ msgid "Update Part Availability" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:835 part/stocktake.py:223 +#: part/serializers.py:831 part/stocktake.py:224 #: part/templates/part/category.html:183 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:916 stock/serializers.py:1080 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:918 stock/serializers.py:1091 #: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:191 #: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1061 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:206 msgid "Stock Items" @@ -4592,10 +4650,6 @@ msgstr "Покупатели" 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 "Новая компания" @@ -4616,7 +4670,7 @@ msgstr "" msgid "Connected" msgstr "" -#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: machine/machine_types/label_printer.py:235 order/api.py:1467 #: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "Неизвестно" @@ -4705,7 +4759,7 @@ msgstr "" msgid "Config type" msgstr "" -#: order/admin.py:30 order/models.py:89 +#: order/admin.py:30 order/models.py:90 #: report/templates/report/inventree_purchase_order_report.html:31 #: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 @@ -4714,30 +4768,30 @@ msgstr "" msgid "Total Price" msgstr "Общая стоимость" -#: order/api.py:161 order/serializers.py:91 +#: order/api.py:157 order/serializers.py:90 #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "Статсу заказа" -#: order/api.py:165 templates/js/translated/table_filters.js:194 +#: order/api.py:161 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "Имеет цену" -#: order/api.py:240 +#: order/api.py:236 msgid "No matching purchase order found" msgstr "" -#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 -#: order/models.py:1586 order/models.py:1700 order/models.py:1854 -#: order/models.py:2267 order/models.py:2318 +#: order/api.py:435 order/api.py:801 order/models.py:1395 order/models.py:1504 +#: order/models.py:1550 order/models.py:1664 order/models.py:1818 +#: order/models.py:2231 order/models.py:2282 #: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "Заказ" -#: order/api.py:441 order/api.py:838 +#: order/api.py:439 order/api.py:822 msgid "Order Complete" msgstr "" @@ -4745,13 +4799,13 @@ msgstr "" msgid "Order Pending" msgstr "" -#: order/api.py:1509 order/models.py:380 order/models.py:1432 -#: order/models.py:1541 order/templates/order/order_base.html:9 +#: order/api.py:1461 order/models.py:380 order/models.py:1396 +#: order/models.py:1505 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_purchase_order_report.html:14 -#: stock/serializers.py:119 stock/templates/stock/item_base.html:176 +#: stock/serializers.py:118 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/part.js:1746 templates/js/translated/pricing.js:804 #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1673 @@ -4759,8 +4813,8 @@ msgstr "" msgid "Purchase Order" msgstr "Заказ на закупку" -#: order/api.py:1513 order/models.py:2017 order/models.py:2268 -#: order/models.py:2319 order/templates/order/return_order_base.html:9 +#: order/api.py:1465 order/models.py:1981 order/models.py:2232 +#: order/models.py:2283 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report.html:13 #: templates/js/translated/return_order.js:280 @@ -4768,15 +4822,15 @@ msgstr "Заказ на закупку" msgid "Return Order" msgstr "Заказ на возврат" -#: order/models.py:90 +#: order/models.py:91 msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:71 +#: order/models.py:96 order/serializers.py:70 msgid "Order Currency" msgstr "Валюта Заказа" -#: order/models.py:98 order/serializers.py:72 +#: order/models.py:99 order/serializers.py:71 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -4792,7 +4846,7 @@ msgstr "Описание заказа (дополнительно)" msgid "Select project code for this order" msgstr "Выберите код проекта для этого заказа" -#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 msgid "Link to external page" msgstr "" @@ -4816,11 +4870,11 @@ msgstr "" msgid "Company address for this order" msgstr "" -#: order/models.py:464 order/models.py:929 +#: order/models.py:464 order/models.py:927 msgid "Order reference" msgstr "Ссылка на заказ" -#: order/models.py:472 order/models.py:953 +#: order/models.py:472 order/models.py:951 msgid "Purchase order status" msgstr "" @@ -4841,15 +4895,15 @@ msgstr "" msgid "received by" msgstr "получил" -#: order/models.py:514 order/models.py:2094 +#: order/models.py:514 order/models.py:2058 msgid "Issue Date" msgstr "Дата создания" -#: order/models.py:515 order/models.py:2095 +#: order/models.py:515 order/models.py:2059 msgid "Date order was issued" msgstr "" -#: order/models.py:522 order/models.py:2102 +#: order/models.py:522 order/models.py:2066 msgid "Date order was completed" msgstr "" @@ -4861,96 +4915,94 @@ msgstr "" msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:941 +#: order/models.py:939 msgid "Company to which the items are being sold" msgstr "Компания, которой детали продаются" -#: order/models.py:964 order/models.py:2087 +#: order/models.py:962 order/models.py:2051 msgid "Customer Reference " msgstr "" -#: order/models.py:965 order/models.py:2088 +#: order/models.py:963 order/models.py:2052 msgid "Customer order reference code" msgstr "" -#: order/models.py:969 order/models.py:1707 +#: order/models.py:967 order/models.py:1671 #: templates/js/translated/sales_order.js:879 #: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "Дата отгрузки" -#: order/models.py:978 +#: order/models.py:976 msgid "shipped by" msgstr "Отправлено" -#: order/models.py:1027 -#, fuzzy -#| msgid "Build output is already completed" +#: order/models.py:1025 msgid "Order is already complete" -msgstr "Продукция уже произведена" +msgstr "" -#: order/models.py:1030 +#: order/models.py:1028 msgid "Order is already cancelled" msgstr "" -#: order/models.py:1034 +#: order/models.py:1032 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:1038 +#: order/models.py:1036 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:1043 +#: order/models.py:1041 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1309 +#: order/models.py:1273 msgid "Item quantity" msgstr "Количество" -#: order/models.py:1326 +#: order/models.py:1290 msgid "Line item reference" msgstr "" -#: order/models.py:1333 +#: order/models.py:1297 msgid "Line item notes" msgstr "Записи о позиции" -#: order/models.py:1345 +#: order/models.py:1309 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1366 +#: order/models.py:1330 msgid "Line item description (optional)" msgstr "Описание позиции (необязательно)" -#: order/models.py:1372 +#: order/models.py:1336 msgid "Context" msgstr "Контекст" -#: order/models.py:1373 +#: order/models.py:1337 msgid "Additional context for this line" msgstr "Дополнительный контекст для этой строки" -#: order/models.py:1383 +#: order/models.py:1347 msgid "Unit price" msgstr "Цена за единицу" -#: order/models.py:1416 +#: order/models.py:1380 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1423 +#: order/models.py:1387 msgid "deleted" msgstr "удалено" -#: order/models.py:1451 +#: order/models.py:1415 msgid "Supplier part" msgstr "Деталь поставщика" -#: order/models.py:1458 order/templates/order/order_base.html:196 -#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: order/models.py:1422 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1870 templates/js/translated/part.js:1902 #: templates/js/translated/purchase_order.js:1306 #: templates/js/translated/purchase_order.js:2169 #: templates/js/translated/return_order.js:763 @@ -4959,196 +5011,196 @@ msgstr "Деталь поставщика" msgid "Received" msgstr "Получено" -#: order/models.py:1459 +#: order/models.py:1423 msgid "Number of items received" msgstr "" -#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 +#: order/models.py:1431 stock/models.py:938 stock/serializers.py:556 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "Закупочная цена" -#: order/models.py:1468 +#: order/models.py:1432 msgid "Unit purchase price" msgstr "" -#: order/models.py:1483 +#: order/models.py:1447 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1574 +#: order/models.py:1538 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1579 +#: order/models.py:1543 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1605 part/templates/part/part_pricing.html:107 +#: order/models.py:1569 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:1606 +#: order/models.py:1570 msgid "Unit sale price" msgstr "Цена последней продажи" -#: order/models.py:1615 order/status_codes.py:43 +#: order/models.py:1579 order/status_codes.py:43 #: templates/js/translated/sales_order.js:1559 #: templates/js/translated/sales_order.js:1680 #: templates/js/translated/sales_order.js:1993 msgid "Shipped" msgstr "Доставлено" -#: order/models.py:1616 +#: order/models.py:1580 msgid "Shipped quantity" msgstr "Отгруженное кол-во" -#: order/models.py:1708 +#: order/models.py:1672 msgid "Date of shipment" msgstr "Дата отправления" -#: order/models.py:1714 templates/js/translated/sales_order.js:1072 +#: order/models.py:1678 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "Дата доставки" -#: order/models.py:1715 +#: order/models.py:1679 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1723 +#: order/models.py:1687 msgid "Checked By" msgstr "Проверн" -#: order/models.py:1724 +#: order/models.py:1688 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 -#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 +#: order/models.py:1695 order/models.py:1908 order/serializers.py:1342 +#: order/serializers.py:1452 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "Отправление" -#: order/models.py:1732 +#: order/models.py:1696 msgid "Shipment number" msgstr "Номер отправления" -#: order/models.py:1740 +#: order/models.py:1704 msgid "Tracking Number" msgstr "Номер отслеживания" -#: order/models.py:1741 +#: order/models.py:1705 msgid "Shipment tracking information" msgstr "Информация об отслеживании доставки" -#: order/models.py:1748 +#: order/models.py:1712 msgid "Invoice Number" msgstr "Номер счета" -#: order/models.py:1749 +#: order/models.py:1713 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1769 +#: order/models.py:1733 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1772 +#: order/models.py:1736 msgid "Shipment has no allocated stock items" msgstr "Отправка не имеет зарезервированных складских позиций" -#: order/models.py:1890 order/models.py:1892 +#: order/models.py:1854 order/models.py:1856 msgid "Stock item has not been assigned" msgstr "Складская позиция не была назначена" -#: order/models.py:1899 +#: order/models.py:1863 msgid "Cannot allocate stock item to a line with a different part" msgstr "Невозможно зарезервировать складскую позицию в позицию другой детали" -#: order/models.py:1902 +#: order/models.py:1866 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1905 +#: order/models.py:1869 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1924 order/serializers.py:1231 +#: order/models.py:1888 order/serializers.py:1219 msgid "Quantity must be 1 for serialized stock item" msgstr "Количество должно быть 1 для сериализированных складских позиций" -#: order/models.py:1927 +#: order/models.py:1891 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1928 plugin/base/barcodes/api.py:481 +#: order/models.py:1892 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1936 +#: order/models.py:1900 msgid "Line" msgstr "Строка" -#: order/models.py:1945 +#: order/models.py:1909 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1958 order/models.py:2275 +#: order/models.py:1922 order/models.py:2239 #: templates/js/translated/return_order.js:721 msgid "Item" msgstr "Элемент" -#: order/models.py:1959 +#: order/models.py:1923 msgid "Select stock item to allocate" msgstr "Выберите складскую позицию для резервирования" -#: order/models.py:1968 +#: order/models.py:1932 msgid "Enter stock allocation quantity" msgstr "Укажите резервируемое количество" -#: order/models.py:2057 +#: order/models.py:2021 msgid "Return Order reference" msgstr "" -#: order/models.py:2069 +#: order/models.py:2033 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:2081 +#: order/models.py:2045 msgid "Return order status" msgstr "" -#: order/models.py:2260 +#: order/models.py:2224 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2276 +#: order/models.py:2240 msgid "Select item to return from customer" msgstr "Выберите позицию, возвращаемую от клиента" -#: order/models.py:2282 +#: order/models.py:2246 msgid "Received Date" msgstr "Дата получения" -#: order/models.py:2283 +#: order/models.py:2247 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2294 templates/js/translated/return_order.js:732 +#: order/models.py:2258 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "Результат" -#: order/models.py:2295 +#: order/models.py:2259 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2302 +#: order/models.py:2266 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/serializers.py:79 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_purchase_order_report.html:22 @@ -5157,163 +5209,163 @@ msgstr "" msgid "Line Items" msgstr "Позиции" -#: order/serializers.py:84 +#: order/serializers.py:83 msgid "Completed Lines" msgstr "" -#: order/serializers.py:287 +#: order/serializers.py:286 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:302 order/serializers.py:1247 +#: order/serializers.py:301 order/serializers.py:1235 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:312 order/serializers.py:1257 +#: order/serializers.py:311 order/serializers.py:1245 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:440 +#: order/serializers.py:439 msgid "Order is not open" msgstr "Заказ не открыт" -#: order/serializers.py:461 +#: order/serializers.py:460 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:463 +#: order/serializers.py:462 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:473 +#: order/serializers.py:472 msgid "Purchase price currency" msgstr "Валюта цены закупки" -#: order/serializers.py:479 +#: order/serializers.py:478 msgid "Merge Items" msgstr "" -#: order/serializers.py:481 +#: order/serializers.py:480 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:499 +#: order/serializers.py:498 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:502 +#: order/serializers.py:501 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:510 +#: order/serializers.py:509 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:511 +#: order/serializers.py:510 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:550 order/serializers.py:1325 +#: order/serializers.py:549 order/serializers.py:1313 msgid "Line Item" msgstr "Позиция" -#: order/serializers.py:556 +#: order/serializers.py:555 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1657 msgid "Select destination location for received items" msgstr "Выберите место назначения для полученных элементов" -#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:581 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "Введите код партии для поступающих складских позиций" -#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:589 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "Введите серийные номера для входящих складских позиций" -#: order/serializers.py:601 templates/js/translated/barcode.js:52 +#: order/serializers.py:600 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Штрих-код" -#: order/serializers.py:602 +#: order/serializers.py:601 msgid "Scanned barcode" msgstr "Сканированный штрих-код" -#: order/serializers.py:618 +#: order/serializers.py:617 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:642 +#: order/serializers.py:641 msgid "An integer quantity must be provided for trackable parts" msgstr "Для отслеживаемых деталей должно быть указано целочисленное количество" -#: order/serializers.py:690 order/serializers.py:1696 +#: order/serializers.py:689 order/serializers.py:1673 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:706 +#: order/serializers.py:705 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:717 +#: order/serializers.py:716 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1074 +#: order/serializers.py:1062 msgid "Sale price currency" msgstr "Валюта цены продажи" -#: order/serializers.py:1134 +#: order/serializers.py:1122 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1195 order/serializers.py:1334 +#: order/serializers.py:1183 order/serializers.py:1322 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1214 +#: order/serializers.py:1202 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1344 +#: order/serializers.py:1332 msgid "Enter serial numbers to allocate" msgstr "Введите серийные номера для резервирования" -#: order/serializers.py:1366 order/serializers.py:1472 +#: order/serializers.py:1354 order/serializers.py:1460 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1369 order/serializers.py:1475 +#: order/serializers.py:1357 order/serializers.py:1463 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1416 +#: order/serializers.py:1404 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1423 +#: order/serializers.py:1411 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1650 +#: order/serializers.py:1627 msgid "Return order line item" msgstr "" -#: order/serializers.py:1656 +#: order/serializers.py:1633 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1659 +#: order/serializers.py:1636 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1688 +#: order/serializers.py:1665 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1766 +#: order/serializers.py:1743 msgid "Line price currency" msgstr "" @@ -5643,7 +5695,7 @@ msgstr "" #: 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/part.js:1073 #: templates/js/translated/purchase_order.js:1752 #: templates/js/translated/return_order.js:380 #: templates/js/translated/sales_order.js:891 @@ -5739,34 +5791,34 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:406 part/models.py:3964 part/stocktake.py:218 -#: stock/admin.py:153 +#: part/admin.py:39 part/admin.py:398 part/models.py:3944 part/stocktake.py:219 +#: stock/admin.py:152 msgid "Part ID" msgstr "Код детали" -#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 -#: stock/admin.py:157 +#: part/admin.py:41 part/admin.py:405 part/models.py:3945 part/stocktake.py:220 +#: stock/admin.py:156 msgid "Part Name" msgstr "Наименование детали" -#: part/admin.py:45 part/stocktake.py:220 +#: part/admin.py:45 part/stocktake.py:221 msgid "Part Description" msgstr "Описание детали" -#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:940 part/templates/part/part_base.html:269 #: report/templates/report/inventree_stock_location_report.html:103 -#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/part.js:1227 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 -#: report/models.py:161 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2346 +#: part/admin.py:50 part/models.py:949 part/templates/part/part_base.html:277 +#: report/models.py:162 templates/js/translated/part.js:1232 +#: templates/js/translated/part.js:2347 msgid "Revision" msgstr "Ревизия" -#: part/admin.py:53 part/admin.py:319 part/models.py:929 +#: part/admin.py:53 part/admin.py:319 part/models.py:922 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "Ключевые слова" @@ -5775,11 +5827,11 @@ msgstr "Ключевые слова" msgid "Part Image" msgstr "Изображение Детали" -#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:222 msgid "Category ID" msgstr "Код категории" -#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:223 msgid "Category Name" msgstr "Название категории" @@ -5791,11 +5843,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:908 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "Разновидность" -#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1036 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "Минимальный запас" @@ -5803,26 +5855,26 @@ msgstr "Минимальный запас" 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 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:235 +#: templates/js/translated/part.js:715 templates/js/translated/part.js:2153 msgid "Building" msgstr "Производится" -#: part/admin.py:155 part/models.py:3123 part/models.py:3137 -#: templates/js/translated/part.js:969 +#: part/admin.py:155 part/models.py:3088 part/models.py:3102 +#: templates/js/translated/part.js:970 msgid "Minimum Cost" msgstr "Минимальная Стоимость" -#: part/admin.py:158 part/models.py:3130 part/models.py:3144 -#: templates/js/translated/part.js:979 +#: part/admin.py:158 part/models.py:3095 part/models.py:3109 +#: templates/js/translated/part.js:980 msgid "Maximum Cost" msgstr "Максимальная Стоимость" -#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 msgid "Parent ID" msgstr "ID родителя" -#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 msgid "Parent Name" msgstr "Имя родителя" @@ -5831,141 +5883,149 @@ msgstr "Имя родителя" msgid "Category Path" msgstr "Путь к категории" -#: part/admin.py:325 part/models.py:393 part/serializers.py:117 -#: part/serializers.py:272 part/serializers.py:391 +#: part/admin.py:325 part/models.py:396 part/serializers.py:124 +#: part/serializers.py:267 part/serializers.py:386 #: 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:2803 templates/js/translated/search.js:130 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "Детали" -#: part/admin.py:386 +#: part/admin.py:378 msgid "BOM Level" msgstr "Уровень BOM" -#: part/admin.py:389 +#: part/admin.py:381 msgid "BOM Item ID" msgstr "ID Элемента BOM" -#: part/admin.py:399 +#: part/admin.py:391 msgid "Parent IPN" msgstr "Родительский IPN" -#: part/admin.py:410 part/models.py:3966 +#: part/admin.py:402 part/models.py:3946 msgid "Part IPN" msgstr "IPN детали" -#: part/admin.py:423 part/serializers.py:1278 +#: part/admin.py:415 part/serializers.py:1274 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "Минимальная цена" -#: part/admin.py:428 part/serializers.py:1293 +#: part/admin.py:420 part/serializers.py:1289 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "Максимальная цена" -#: part/api.py:110 +#: part/api.py:104 msgid "Starred" msgstr "" -#: part/api.py:112 +#: part/api.py:106 msgid "Filter by starred categories" msgstr "" -#: part/api.py:129 stock/api.py:318 +#: part/api.py:123 stock/api.py:312 msgid "Depth" msgstr "" -#: part/api.py:129 +#: part/api.py:123 msgid "Filter by category depth" msgstr "" -#: part/api.py:147 stock/api.py:336 +#: part/api.py:141 stock/api.py:330 +msgid "Top Level" +msgstr "" + +#: part/api.py:143 +msgid "Filter by top-level categories" +msgstr "" + +#: part/api.py:156 stock/api.py:345 msgid "Cascade" msgstr "" -#: part/api.py:149 +#: part/api.py:158 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:169 +#: part/api.py:179 templates/js/translated/part.js:308 msgid "Parent" msgstr "" -#: part/api.py:171 +#: part/api.py:181 msgid "Filter by parent category" msgstr "" -#: part/api.py:204 +#: part/api.py:214 msgid "Exclude Tree" msgstr "" -#: part/api.py:206 +#: part/api.py:216 msgid "Exclude sub-categories under the specified category" msgstr "" -#: part/api.py:455 +#: part/api.py:449 msgid "Has Results" msgstr "" -#: part/api.py:622 +#: part/api.py:616 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:640 +#: part/api.py:634 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:656 +#: part/api.py:650 msgid "Stock produced by Build Order" msgstr "Остатки произведенные заказом на производство" -#: part/api.py:740 +#: part/api.py:734 msgid "Stock required for Build Order" msgstr "Остатки требуемые для заказов на производство" -#: part/api.py:887 +#: part/api.py:881 msgid "Valid" msgstr "Корректный" -#: part/api.py:888 +#: part/api.py:882 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:894 +#: part/api.py:888 msgid "This option must be selected" msgstr "Необходимо выбрать эту опцию" -#: part/api.py:1111 +#: part/api.py:1105 msgid "BOM Valid" msgstr "" -#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 -#: part/serializers.py:406 part/serializers.py:1134 -#: part/templates/part/part_base.html:260 stock/api.py:781 +#: part/api.py:1508 part/models.py:932 part/models.py:3374 part/models.py:3889 +#: part/serializers.py:401 part/serializers.py:1130 +#: part/templates/part/part_base.html:260 stock/api.py:791 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2376 +#: templates/js/translated/part.js:2377 msgid "Category" msgstr "Категория" -#: part/api.py:1803 +#: part/api.py:1796 msgid "Uses" msgstr "" -#: part/bom.py:170 part/models.py:102 part/models.py:982 +#: part/bom.py:170 part/models.py:104 part/models.py:975 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Место хранения по умолчанию" -#: part/bom.py:171 part/serializers.py:837 +#: part/bom.py:171 part/serializers.py:833 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "Общий запас" @@ -5974,1054 +6034,1066 @@ msgstr "Общий запас" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 +#: part/models.py:85 part/models.py:3890 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Категория детали" -#: part/models.py:84 part/templates/part/category.html:136 +#: part/models.py:86 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "Категория детали" -#: part/models.py:103 +#: part/models.py:105 msgid "Default location for parts in this category" msgstr "Место хранения по умолчанию для деталей этой категории" -#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 +#: part/models.py:110 stock/models.py:174 templates/js/translated/part.js:2810 #: templates/js/translated/stock.js:2772 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "Структура" -#: part/models.py:110 +#: part/models.py:112 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "Детали не могут быть непосредственно отнесены к структурной категории, но могут быть отнесены к дочерним категориям." -#: part/models.py:119 +#: part/models.py:121 msgid "Default keywords" msgstr "Ключевые слова по умолчанию" -#: part/models.py:120 +#: part/models.py:122 msgid "Default keywords for parts in this category" msgstr "Ключевые слова по умолчанию для деталей этой категории" -#: part/models.py:126 stock/models.py:85 stock/models.py:156 +#: part/models.py:128 stock/models.py:86 stock/models.py:157 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "Иконка" -#: part/models.py:127 stock/models.py:157 +#: part/models.py:129 stock/models.py:158 msgid "Icon (optional)" msgstr "Иконка (необязательно)" -#: part/models.py:149 +#: part/models.py:151 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:482 +#: part/models.py:485 msgid "Cannot delete this part as it is still active" msgstr "" -#: part/models.py:489 +#: part/models.py:490 msgid "Cannot delete this part as it is used in an assembly" msgstr "" -#: part/models.py:527 +#: part/models.py:528 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:575 part/models.py:582 +#: part/models.py:576 part/models.py:583 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:594 +#: part/models.py:595 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:659 +#: part/models.py:658 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:739 +#: part/models.py:736 msgid "Stock item with this serial number already exists" msgstr "Складская позиция с этим серийным номером уже существует" -#: part/models.py:844 +#: part/models.py:837 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:854 +#: part/models.py:847 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:869 +#: part/models.py:862 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:898 part/models.py:3965 +#: part/models.py:891 part/models.py:3945 msgid "Part name" msgstr "Наименование детали" -#: part/models.py:903 +#: part/models.py:896 msgid "Is Template" msgstr "Шаблон" -#: part/models.py:904 +#: part/models.py:897 msgid "Is this part a template part?" msgstr "Эта деталь является шаблоном?" -#: part/models.py:914 +#: part/models.py:907 msgid "Is this part a variant of another part?" msgstr "Эта деталь является разновидностью другой детали?" -#: part/models.py:922 +#: part/models.py:915 msgid "Part description (optional)" msgstr "Описание детали (необязательно)" -#: part/models.py:930 +#: part/models.py:923 msgid "Part keywords to improve visibility in search results" msgstr "Ключевые слова для улучшения видимости в результатах поиска" -#: part/models.py:940 +#: part/models.py:933 msgid "Part category" msgstr "Категория" -#: part/models.py:948 +#: part/models.py:941 msgid "Internal Part Number" msgstr "Внутренний код детали" -#: part/models.py:955 +#: part/models.py:948 msgid "Part revision or version number" msgstr "Ревизия или серийный номер детали" -#: part/models.py:980 +#: part/models.py:973 msgid "Where is this item normally stored?" msgstr "Где обычно хранится эта деталь?" -#: part/models.py:1026 part/templates/part/part_base.html:376 +#: part/models.py:1019 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "Поставщик по умолчанию" -#: part/models.py:1027 +#: part/models.py:1020 msgid "Default supplier part" msgstr "" -#: part/models.py:1034 +#: part/models.py:1027 msgid "Default Expiry" msgstr "Срок действия по умолчанию" -#: part/models.py:1035 +#: part/models.py:1028 msgid "Expiry time (in days) for stock items of this part" msgstr "Срок годности (в днях) для складских позиций этой детали" -#: part/models.py:1044 +#: part/models.py:1037 msgid "Minimum allowed stock level" msgstr "Минимально допустимый складской запас" -#: part/models.py:1053 +#: part/models.py:1046 msgid "Units of measure for this part" msgstr "Единицы измерения этой детали" -#: part/models.py:1060 +#: part/models.py:1053 msgid "Can this part be built from other parts?" msgstr "Может ли эта деталь быть создана из других деталей?" -#: part/models.py:1066 +#: part/models.py:1059 msgid "Can this part be used to build other parts?" msgstr "Может ли эта деталь использоваться для создания других деталей?" -#: part/models.py:1072 +#: part/models.py:1065 msgid "Does this part have tracking for unique items?" msgstr "Является ли каждый экземпляр этой детали уникальным, обладающим серийным номером?" -#: part/models.py:1078 +#: part/models.py:1071 msgid "Can this part be purchased from external suppliers?" msgstr "Может ли эта деталь быть закуплена у внешних поставщиков?" -#: part/models.py:1084 +#: part/models.py:1077 msgid "Can this part be sold to customers?" msgstr "Может ли эта деталь быть продана покупателям?" -#: part/models.py:1088 +#: part/models.py:1081 msgid "Is this part active?" msgstr "Эта деталь активна?" -#: part/models.py:1094 +#: part/models.py:1087 msgid "Is this a virtual part, such as a software product or license?" msgstr "Эта деталь виртуальная, как программный продукт или лицензия?" -#: part/models.py:1100 +#: part/models.py:1093 msgid "BOM checksum" msgstr "Контрольная сумма BOM" -#: part/models.py:1101 +#: part/models.py:1094 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1109 +#: part/models.py:1102 msgid "BOM checked by" msgstr "BOM проверил" -#: part/models.py:1114 +#: part/models.py:1107 msgid "BOM checked date" msgstr "Дата проверки BOM" -#: part/models.py:1130 +#: part/models.py:1123 msgid "Creation User" msgstr "Создатель" -#: part/models.py:1140 +#: part/models.py:1133 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1145 part/templates/part/part_base.html:339 +#: part/models.py:1138 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2470 +#: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "Последняя инвентаризация" -#: part/models.py:2018 +#: part/models.py:2011 msgid "Sell multiple" msgstr "Продать несколько" -#: part/models.py:3037 +#: part/models.py:3002 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:3053 +#: part/models.py:3018 msgid "Minimum BOM Cost" msgstr "Минимальная Стоимость BOM" -#: part/models.py:3054 +#: part/models.py:3019 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:3060 +#: part/models.py:3025 msgid "Maximum BOM Cost" msgstr "Максимальная Стоимость BOM" -#: part/models.py:3061 +#: part/models.py:3026 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:3067 +#: part/models.py:3032 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3033 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3074 +#: part/models.py:3039 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3040 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3046 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3047 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3053 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3054 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3060 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3096 +#: part/models.py:3061 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3102 +#: part/models.py:3067 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3103 +#: part/models.py:3068 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3109 +#: part/models.py:3074 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3110 +#: part/models.py:3075 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3116 +#: part/models.py:3081 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3117 +#: part/models.py:3082 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3124 +#: part/models.py:3089 msgid "Override minimum cost" msgstr "" -#: part/models.py:3131 +#: part/models.py:3096 msgid "Override maximum cost" msgstr "" -#: part/models.py:3138 +#: part/models.py:3103 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3145 +#: part/models.py:3110 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3151 +#: part/models.py:3116 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3152 +#: part/models.py:3117 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3158 +#: part/models.py:3123 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3159 +#: part/models.py:3124 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3165 +#: part/models.py:3130 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3131 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3172 +#: part/models.py:3137 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3138 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3192 +#: part/models.py:3157 msgid "Part for stocktake" msgstr "" -#: part/models.py:3197 +#: part/models.py:3162 msgid "Item Count" msgstr "Количество Элементов" -#: part/models.py:3198 +#: part/models.py:3163 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3206 +#: part/models.py:3171 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3210 part/models.py:3293 +#: part/models.py:3175 part/models.py:3258 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report.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/part.js:1086 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "Дата" -#: part/models.py:3211 +#: part/models.py:3176 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3219 +#: part/models.py:3184 msgid "Additional notes" msgstr "Дополнительные Записи" -#: part/models.py:3229 +#: part/models.py:3194 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3235 +#: part/models.py:3200 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3236 +#: part/models.py:3201 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3242 +#: part/models.py:3207 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3243 +#: part/models.py:3208 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3264 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "Отчет" -#: part/models.py:3300 +#: part/models.py:3265 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3270 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "Количество Деталей" -#: part/models.py:3306 +#: part/models.py:3271 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3316 +#: part/models.py:3281 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3478 +#: part/models.py:3423 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3489 +#: part/models.py:3444 part/models.py:3608 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3455 msgid "Test templates can only be created for trackable parts" msgstr "Шаблоны тестирования могут быть созданы только для отслеживаемых деталей" -#: part/models.py:3500 +#: part/models.py:3466 msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3517 templates/js/translated/part.js:2878 +#: part/models.py:3483 templates/js/translated/part.js:2880 msgid "Test Name" msgstr "Название теста" -#: part/models.py:3518 +#: part/models.py:3484 msgid "Enter a name for the test" msgstr "Введите имя для теста" -#: part/models.py:3524 +#: part/models.py:3490 msgid "Test Key" msgstr "" -#: part/models.py:3525 +#: part/models.py:3491 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3532 +#: part/models.py:3498 msgid "Test Description" msgstr "Описание теста" -#: part/models.py:3533 +#: part/models.py:3499 msgid "Enter description for this test" msgstr "Введите описание для этого теста" -#: part/models.py:3537 report/models.py:208 -#: templates/js/translated/part.js:2899 +#: part/models.py:3503 report/models.py:209 +#: templates/js/translated/part.js:2901 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "Включено" -#: part/models.py:3537 +#: part/models.py:3503 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3542 templates/js/translated/part.js:2907 +#: part/models.py:3508 templates/js/translated/part.js:2909 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Требуется" -#: part/models.py:3543 +#: part/models.py:3509 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3548 templates/js/translated/part.js:2915 +#: part/models.py:3514 templates/js/translated/part.js:2917 msgid "Requires Value" msgstr "Требуется значение" -#: part/models.py:3549 +#: part/models.py:3515 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3554 templates/js/translated/part.js:2922 +#: part/models.py:3520 templates/js/translated/part.js:2924 msgid "Requires Attachment" msgstr "" -#: part/models.py:3556 +#: part/models.py:3522 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3603 +#: part/models.py:3528 part/models.py:3667 templates/js/translated/part.js:1637 +msgid "Choices" +msgstr "Варианты" + +#: part/models.py:3529 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3583 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3608 +#: part/models.py:3588 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3628 -msgid "Choices must be unique" -msgstr "" - -#: part/models.py:3645 +#: part/models.py:3625 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3660 +#: part/models.py:3640 msgid "Parameter Name" msgstr "Название параметра" -#: part/models.py:3667 +#: part/models.py:3647 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3675 +#: part/models.py:3655 msgid "Parameter description" msgstr "" -#: part/models.py:3681 templates/js/translated/part.js:1627 +#: part/models.py:3661 templates/js/translated/part.js:1628 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "Чекбокс" -#: part/models.py:3682 +#: part/models.py:3662 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3687 templates/js/translated/part.js:1636 -msgid "Choices" -msgstr "Варианты" - -#: part/models.py:3688 +#: part/models.py:3668 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3765 +#: part/models.py:3745 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3808 +#: part/models.py:3788 msgid "Parent Part" msgstr "Родительская деталь" -#: part/models.py:3816 part/models.py:3917 part/models.py:3918 +#: part/models.py:3796 part/models.py:3897 part/models.py:3898 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "Шаблон параметра" -#: part/models.py:3821 +#: part/models.py:3801 msgid "Data" msgstr "Данные" -#: part/models.py:3822 +#: part/models.py:3802 msgid "Parameter Value" msgstr "Значение Параметра" -#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3904 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "Значение по умолчанию" -#: part/models.py:3925 +#: part/models.py:3905 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3963 +#: part/models.py:3943 msgid "Part ID or part name" msgstr "Код или наименование детали" -#: part/models.py:3964 +#: part/models.py:3944 msgid "Unique part ID value" msgstr "" -#: part/models.py:3966 +#: part/models.py:3946 msgid "Part IPN value" msgstr "Значение IPN" -#: part/models.py:3967 +#: part/models.py:3947 msgid "Level" msgstr "Уровень" -#: part/models.py:3967 +#: part/models.py:3947 msgid "BOM level" msgstr "Уровень BOM" -#: part/models.py:4057 +#: part/models.py:4037 msgid "Select parent part" msgstr "Выберите родительскую деталь" -#: part/models.py:4067 +#: part/models.py:4047 msgid "Sub part" msgstr "Суб-деталь" -#: part/models.py:4068 +#: part/models.py:4048 msgid "Select part to be used in BOM" msgstr "Выбрать деталь для использования в BOM" -#: part/models.py:4079 +#: part/models.py:4059 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4085 +#: part/models.py:4065 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4091 +#: part/models.py:4071 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "Эта позиция - расходник. (она не отслеживается в заказах на производство)" -#: part/models.py:4098 part/templates/part/upload_bom.html:55 +#: part/models.py:4078 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Перерасход" -#: part/models.py:4099 +#: part/models.py:4079 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "Расчетное количество перерасходов производства (абсолютное или процентное)" -#: part/models.py:4106 +#: part/models.py:4086 msgid "BOM item reference" msgstr "" -#: part/models.py:4114 +#: part/models.py:4094 msgid "BOM item notes" msgstr "Записи о позиции BOM" -#: part/models.py:4120 +#: part/models.py:4100 msgid "Checksum" msgstr "Контрольная сумма" -#: part/models.py:4121 +#: part/models.py:4101 msgid "BOM line checksum" msgstr "" -#: part/models.py:4126 templates/js/translated/table_filters.js:174 +#: part/models.py:4106 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "Проверен" -#: part/models.py:4127 +#: part/models.py:4107 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4132 part/templates/part/upload_bom.html:57 +#: part/models.py:4112 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:4133 +#: part/models.py:4113 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4138 part/templates/part/upload_bom.html:56 +#: part/models.py:4118 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "Разрешить разновидности" -#: part/models.py:4139 +#: part/models.py:4119 msgid "Stock items for variant parts can be used for this BOM item" msgstr "Складские позиции для разновидностей деталей могут быть использованы для этой позиции BOM" -#: part/models.py:4224 stock/models.py:664 +#: part/models.py:4204 stock/models.py:662 msgid "Quantity must be integer value for trackable parts" msgstr "Для отслеживаемых деталей количество должно быть целым числом" -#: part/models.py:4234 part/models.py:4236 +#: part/models.py:4214 part/models.py:4216 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4376 +#: part/models.py:4354 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4397 +#: part/models.py:4375 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4410 +#: part/models.py:4388 msgid "Parent BOM item" msgstr "Позиция BOM-родителя" -#: part/models.py:4418 +#: part/models.py:4396 msgid "Substitute part" msgstr "Замена детали" -#: part/models.py:4434 +#: part/models.py:4412 msgid "Part 1" msgstr "Часть 1" -#: part/models.py:4442 +#: part/models.py:4420 msgid "Part 2" msgstr "Часть 2" -#: part/models.py:4443 +#: part/models.py:4421 msgid "Select Related Part" msgstr "Выберите связанную часть" -#: part/models.py:4462 +#: part/models.py:4440 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4467 +#: part/models.py:4445 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:119 part/serializers.py:141 +#: part/serializers.py:118 +msgid "Parent Category" +msgstr "" + +#: part/serializers.py:119 templates/js/translated/part.js:309 +msgid "Parent part category" +msgstr "" + +#: part/serializers.py:126 part/serializers.py:148 #: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "Подкатегории" -#: part/serializers.py:185 +#: part/serializers.py:180 msgid "Results" msgstr "" -#: part/serializers.py:186 +#: part/serializers.py:181 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 +#: part/serializers.py:205 part/serializers.py:223 stock/serializers.py:562 msgid "Purchase currency of this stock item" msgstr "Валюта закупки складской позиции" -#: part/serializers.py:273 +#: part/serializers.py:268 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:397 +#: part/serializers.py:392 msgid "No parts selected" msgstr "Не выбрана ни одна деталь" -#: part/serializers.py:407 +#: part/serializers.py:402 msgid "Select category" msgstr "Выберите категорию" -#: part/serializers.py:442 +#: part/serializers.py:437 msgid "Original Part" msgstr "Оригинальная деталь" -#: part/serializers.py:443 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:448 +#: part/serializers.py:443 msgid "Copy Image" msgstr "Копировать Изображение" -#: part/serializers.py:449 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:455 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "Скопировать BOM" -#: part/serializers.py:456 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "Скопировать параметры" -#: part/serializers.py:463 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "Копировать Записи" -#: part/serializers.py:470 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "Скопировать записи из оригинальной детали" -#: part/serializers.py:488 +#: part/serializers.py:483 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:490 +#: part/serializers.py:485 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:497 +#: part/serializers.py:492 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:493 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:510 msgid "Select supplier (or leave blank to skip)" msgstr "Выберите поставщика (или оставьте поле пустым, чтобы пропустить)" -#: part/serializers.py:531 +#: part/serializers.py:526 msgid "Select manufacturer (or leave blank to skip)" msgstr "Выберите поставщика (или оставьте поле пустым, чтобы пропустить)" -#: part/serializers.py:541 +#: part/serializers.py:536 msgid "Manufacturer part number" msgstr "Код производителя" -#: part/serializers.py:548 +#: part/serializers.py:543 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:557 +#: part/serializers.py:552 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:568 +#: part/serializers.py:563 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:575 +#: part/serializers.py:570 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:834 msgid "External Stock" msgstr "" -#: part/serializers.py:840 +#: part/serializers.py:836 msgid "Unallocated Stock" msgstr "" -#: part/serializers.py:843 +#: part/serializers.py:839 msgid "Variant Stock" msgstr "" -#: part/serializers.py:873 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:471 +#: part/serializers.py:869 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:472 msgid "Duplicate Part" msgstr "Дублировать деталь" -#: part/serializers.py:874 +#: part/serializers.py:870 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:880 templates/js/translated/part.js:102 +#: part/serializers.py:876 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "Начальный запас" -#: part/serializers.py:881 +#: part/serializers.py:877 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:887 +#: part/serializers.py:883 msgid "Supplier Information" msgstr "" -#: part/serializers.py:888 +#: part/serializers.py:884 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:896 +#: part/serializers.py:892 msgid "Copy Category Parameters" msgstr "Копировать параметры категории" -#: part/serializers.py:897 +#: part/serializers.py:893 msgid "Copy parameter templates from selected part category" msgstr "Копировать шаблоны параметров из выбранной категории деталей" -#: part/serializers.py:902 +#: part/serializers.py:898 msgid "Existing Image" msgstr "Существующее изображение" -#: part/serializers.py:903 +#: part/serializers.py:899 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:920 +#: part/serializers.py:916 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1126 +#: part/serializers.py:1122 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1136 +#: part/serializers.py:1132 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1146 +#: part/serializers.py:1142 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1152 +#: part/serializers.py:1148 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1153 +#: part/serializers.py:1149 msgid "Exclude stock items in external locations" msgstr "Исключить складские позиции в внешних местах хранения" -#: part/serializers.py:1158 +#: part/serializers.py:1154 msgid "Generate Report" msgstr "Создать отчет" -#: part/serializers.py:1159 +#: part/serializers.py:1155 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1164 +#: part/serializers.py:1160 msgid "Update Parts" msgstr "Обновить детали" -#: part/serializers.py:1165 +#: part/serializers.py:1161 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1173 +#: part/serializers.py:1169 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1279 +#: part/serializers.py:1275 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1286 +#: part/serializers.py:1282 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1294 +#: part/serializers.py:1290 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1301 +#: part/serializers.py:1297 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1330 +#: part/serializers.py:1326 msgid "Update" msgstr "Обновить" -#: part/serializers.py:1331 +#: part/serializers.py:1327 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1354 +#: part/serializers.py:1350 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1361 +#: part/serializers.py:1357 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1364 +#: part/serializers.py:1360 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1727 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1739 +#: part/serializers.py:1735 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1740 +#: part/serializers.py:1736 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1745 +#: part/serializers.py:1741 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1746 +#: part/serializers.py:1742 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1747 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1752 +#: part/serializers.py:1748 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1757 +#: part/serializers.py:1753 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1758 +#: part/serializers.py:1754 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1792 +#: part/serializers.py:1788 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1793 +#: part/serializers.py:1789 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1823 +#: part/serializers.py:1819 msgid "No part column specified" msgstr "" -#: part/serializers.py:1867 +#: part/serializers.py:1863 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1870 +#: part/serializers.py:1866 msgid "No matching part found" msgstr "Подходящая деталь не найдена" -#: part/serializers.py:1873 +#: part/serializers.py:1869 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1882 +#: part/serializers.py:1878 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1890 +#: part/serializers.py:1886 msgid "Invalid quantity" msgstr "Некорректное количество" -#: part/serializers.py:1911 +#: part/serializers.py:1907 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 +#: part/stocktake.py:225 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "Общее количество" -#: part/stocktake.py:225 +#: part/stocktake.py:226 msgid "Total Cost Min" msgstr "Общая стоимость Мин" -#: part/stocktake.py:226 +#: part/stocktake.py:227 msgid "Total Cost Max" msgstr "Общая стоимость Макс" -#: part/stocktake.py:284 +#: part/stocktake.py:285 msgid "Stocktake Report Available" msgstr "" -#: part/stocktake.py:285 +#: part/stocktake.py:286 msgid "A new stocktake report is available for download" msgstr "" @@ -7155,7 +7227,7 @@ 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 +#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" @@ -7255,15 +7327,15 @@ msgstr "Поставщики" msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:655 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "Связанная деталь" -#: part/templates/part/detail.html:663 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "Добавить связанную деталь" -#: part/templates/part/detail.html:748 +#: part/templates/part/detail.html:750 msgid "Add Test Result Template" msgstr "" @@ -7344,7 +7416,7 @@ msgstr "Установить запасы детали" msgid "Transfer part stock" msgstr "Переместить запасы детали" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" msgstr "Действия с деталью" @@ -7416,7 +7488,7 @@ 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:2443 +#: templates/js/translated/part.js:1265 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7509,8 +7581,8 @@ msgstr "Разновидности" #: 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:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/part.js:1243 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 #: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "Склад" @@ -7553,7 +7625,7 @@ msgstr "" msgid "Edit" msgstr "Редактировать" -#: part/templates/part/prices.html:28 stock/admin.py:247 +#: part/templates/part/prices.html:28 stock/admin.py:251 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 @@ -7630,8 +7702,8 @@ msgstr "Обновить цены" #: part/templates/part/stock_count.html:7 #: templates/js/translated/model_renderers.js:227 -#: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 -#: templates/js/translated/part.js:2142 +#: templates/js/translated/part.js:705 templates/js/translated/part.js:2141 +#: templates/js/translated/part.js:2143 msgid "No Stock" msgstr "Нет запасов" @@ -8003,7 +8075,7 @@ msgstr "Граница" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:308 msgid "Landscape" msgstr "Альбомная" @@ -8116,62 +8188,62 @@ msgstr "" msgid "Uninstalled plugin successfully" msgstr "" -#: plugin/models.py:35 +#: plugin/models.py:36 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:36 +#: plugin/models.py:37 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:42 users/models.py:100 +#: plugin/models.py:43 users/models.py:100 msgid "Key" msgstr "Ключ" -#: plugin/models.py:43 +#: plugin/models.py:44 msgid "Key of plugin" msgstr "Ключ плагина" -#: plugin/models.py:51 +#: plugin/models.py:52 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:58 plugin/serializers.py:90 +#: plugin/models.py:59 plugin/serializers.py:90 msgid "Package Name" msgstr "Имя Упаковки" -#: plugin/models.py:60 +#: plugin/models.py:61 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:65 +#: plugin/models.py:66 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:156 templates/js/translated/table_filters.js:370 +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "Установлено" -#: plugin/models.py:165 +#: plugin/models.py:166 msgid "Sample plugin" msgstr "Образец плагина" -#: plugin/models.py:173 +#: plugin/models.py:174 msgid "Builtin Plugin" msgstr "Встроенный плагин" -#: plugin/models.py:181 +#: plugin/models.py:182 msgid "Package Plugin" msgstr "" -#: plugin/models.py:205 report/models.py:474 +#: plugin/models.py:220 report/models.py:475 #: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "Плагин" -#: plugin/models.py:252 +#: plugin/models.py:267 msgid "Method" msgstr "Метод" @@ -8179,17 +8251,17 @@ msgstr "Метод" msgid "No author found" msgstr "Автор не найден" -#: plugin/registry.py:597 +#: plugin/registry.py:534 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:600 +#: plugin/registry.py:537 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:602 +#: plugin/registry.py:539 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -8304,23 +8376,19 @@ msgstr "Активировать плагин" msgid "Activate this plugin" msgstr "" -#: plugin/serializers.py:234 +#: plugin/serializers.py:226 msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:235 +#: plugin/serializers.py:227 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:77 +#: report/api.py:88 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:89 report/serializers.py:53 -msgid "Model Type" -msgstr "" - -#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/api.py:103 report/models.py:439 report/serializers.py:98 #: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 #: templates/js/translated/return_order.js:353 #: templates/js/translated/sales_order.js:887 @@ -8328,176 +8396,176 @@ msgstr "" msgid "Items" msgstr "Элементы" -#: report/api.py:168 +#: report/api.py:180 msgid "Plugin not found" msgstr "" -#: report/api.py:170 +#: report/api.py:182 msgid "Plugin is not active" msgstr "" -#: report/api.py:172 +#: report/api.py:184 msgid "Plugin does not support label printing" msgstr "" -#: report/api.py:221 +#: report/api.py:233 msgid "Invalid label dimensions" msgstr "" -#: report/api.py:236 report/api.py:316 +#: report/api.py:248 report/api.py:329 msgid "No valid items provided to template" msgstr "" -#: report/api.py:271 +#: report/api.py:283 msgid "Error printing label" msgstr "" -#: report/api.py:362 report/api.py:398 +#: report/api.py:375 report/api.py:411 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/helpers.py:41 +#: report/helpers.py:43 msgid "A4" msgstr "" -#: report/helpers.py:42 +#: report/helpers.py:44 msgid "A3" msgstr "" -#: report/helpers.py:43 +#: report/helpers.py:45 msgid "Legal" msgstr "Правовая информация" -#: report/helpers.py:44 +#: report/helpers.py:46 msgid "Letter" msgstr "Письмо" -#: report/models.py:118 +#: report/models.py:119 msgid "Template file with this name already exists" msgstr "" -#: report/models.py:150 +#: report/models.py:151 msgid "Template name" msgstr "Название шаблона" -#: report/models.py:156 +#: report/models.py:157 msgid "Template description" msgstr "" -#: report/models.py:162 +#: report/models.py:163 msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Filename Pattern" msgstr "Шаблон имени файла" -#: report/models.py:203 +#: report/models.py:204 msgid "Pattern for generating filenames" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Template is enabled" msgstr "" -#: report/models.py:214 +#: report/models.py:215 msgid "Target model type for template" msgstr "" -#: report/models.py:234 +#: report/models.py:235 msgid "Filters" msgstr "Фильтры" -#: report/models.py:235 +#: report/models.py:236 msgid "Template query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:294 report/models.py:361 +#: report/models.py:295 report/models.py:362 msgid "Template file" msgstr "" -#: report/models.py:302 +#: report/models.py:303 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:308 +#: report/models.py:309 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:367 +#: report/models.py:368 msgid "Width [mm]" msgstr "Ширина [мм]" -#: report/models.py:368 +#: report/models.py:369 msgid "Label width, specified in mm" msgstr "" -#: report/models.py:374 +#: report/models.py:375 msgid "Height [mm]" msgstr "Высота [мм]" -#: report/models.py:375 +#: report/models.py:376 msgid "Label height, specified in mm" msgstr "" -#: report/models.py:438 +#: report/models.py:439 msgid "Number of items to process" msgstr "" -#: report/models.py:444 +#: report/models.py:445 msgid "Report generation is complete" msgstr "" -#: report/models.py:448 templates/js/translated/build.js:2177 +#: report/models.py:449 templates/js/translated/build.js:2177 msgid "Progress" msgstr "Прогресс" -#: report/models.py:448 +#: report/models.py:449 msgid "Report generation progress" msgstr "" -#: report/models.py:456 +#: report/models.py:457 msgid "Report Template" msgstr "" -#: report/models.py:463 report/models.py:486 +#: report/models.py:464 report/models.py:487 msgid "Output File" msgstr "" -#: report/models.py:464 report/models.py:487 +#: report/models.py:465 report/models.py:488 msgid "Generated output file" msgstr "" -#: report/models.py:475 +#: report/models.py:476 msgid "Label output plugin" msgstr "" -#: report/models.py:479 +#: report/models.py:480 msgid "Label Template" msgstr "" -#: report/models.py:502 +#: report/models.py:503 msgid "Snippet" msgstr "Сниппет" -#: report/models.py:503 +#: report/models.py:504 msgid "Report snippet file" msgstr "" -#: report/models.py:510 +#: report/models.py:511 msgid "Snippet file description" msgstr "" -#: report/models.py:528 +#: report/models.py:529 msgid "Asset" msgstr "Объект" -#: report/models.py:529 +#: report/models.py:530 msgid "Report asset file" msgstr "" -#: report/models.py:536 +#: report/models.py:537 msgid "Asset file description" msgstr "" @@ -8570,8 +8638,8 @@ msgid "Total" msgstr "Всего" #: report/templates/report/inventree_return_order_report.html:25 -#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 -#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:824 +#: stock/serializers.py:149 stock/templates/stock/item_base.html:311 #: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 #: templates/js/translated/build.js:2355 #: templates/js/translated/model_renderers.js:230 @@ -8601,32 +8669,32 @@ msgstr "Результаты тестирования" msgid "Test" msgstr "Тестирование" -#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2412 msgid "Result" msgstr "Результат" -#: report/templates/report/inventree_test_report.html:130 +#: report/templates/report/inventree_test_report.html:129 msgid "Pass" msgstr "Прошел" -#: report/templates/report/inventree_test_report.html:132 +#: report/templates/report/inventree_test_report.html:131 msgid "Fail" msgstr "Провален" -#: report/templates/report/inventree_test_report.html:139 +#: report/templates/report/inventree_test_report.html:138 msgid "No result (required)" msgstr "" -#: report/templates/report/inventree_test_report.html:141 +#: report/templates/report/inventree_test_report.html:140 msgid "No result" msgstr "Нет результата" -#: report/templates/report/inventree_test_report.html:154 +#: report/templates/report/inventree_test_report.html:153 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "Установленные элементы" -#: report/templates/report/inventree_test_report.html:168 stock/admin.py:162 +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 #: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 #: templates/js/translated/stock.js:3110 msgid "Serial" @@ -8648,654 +8716,670 @@ msgstr "" msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:172 +#: stock/admin.py:51 stock/admin.py:171 msgid "Location ID" msgstr "Код места хранения" -#: stock/admin.py:54 stock/admin.py:176 +#: stock/admin.py:53 stock/admin.py:175 msgid "Location Name" msgstr "Имя Места Хранения" -#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/admin.py:63 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "Путь места хранения" -#: stock/admin.py:149 +#: stock/admin.py:148 msgid "Stock Item ID" msgstr "Код складской позиции" -#: stock/admin.py:168 +#: stock/admin.py:167 msgid "Status Code" msgstr "Код статуса" -#: stock/admin.py:180 +#: stock/admin.py:179 msgid "Supplier Part ID" msgstr "Код детали поставщика" -#: stock/admin.py:185 +#: stock/admin.py:184 +msgid "Supplier Part SKU" +msgstr "" + +#: stock/admin.py:189 msgid "Supplier ID" msgstr "ID Поставщика" -#: stock/admin.py:191 +#: stock/admin.py:195 msgid "Supplier Name" msgstr "Имя поставщика" -#: stock/admin.py:196 +#: stock/admin.py:200 msgid "Customer ID" msgstr "ID Клиента" -#: stock/admin.py:201 stock/models.py:806 +#: stock/admin.py:205 stock/models.py:804 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "Установлено в" -#: stock/admin.py:206 +#: stock/admin.py:210 msgid "Build ID" msgstr "Код производства" -#: stock/admin.py:216 +#: stock/admin.py:220 msgid "Sales Order ID" msgstr "ID заказа на продажу" -#: stock/admin.py:221 +#: stock/admin.py:225 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:236 +#: stock/admin.py:240 msgid "Review Needed" msgstr "Требуется рецензия" -#: stock/admin.py:241 +#: stock/admin.py:245 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:256 stock/models.py:900 +#: stock/admin.py:260 stock/models.py:898 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "Истекает" -#: stock/api.py:318 +#: stock/api.py:312 msgid "Filter by location depth" msgstr "" -#: stock/api.py:338 +#: stock/api.py:332 +msgid "Filter by top-level locations" +msgstr "" + +#: stock/api.py:347 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:359 +#: stock/api.py:369 stock/serializers.py:1085 msgid "Parent Location" msgstr "" -#: stock/api.py:360 +#: stock/api.py:370 msgid "Filter by parent location" msgstr "" -#: stock/api.py:615 templates/js/translated/table_filters.js:427 +#: stock/api.py:625 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:803 +#: stock/api.py:813 msgid "Part Tree" msgstr "Древо Деталей" -#: stock/api.py:833 +#: stock/api.py:843 msgid "Expiry date before" msgstr "" -#: stock/api.py:837 +#: stock/api.py:847 msgid "Expiry date after" msgstr "" -#: stock/api.py:840 stock/templates/stock/item_base.html:439 +#: stock/api.py:850 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "Залежалый" -#: stock/api.py:927 +#: stock/api.py:937 msgid "Quantity is required" msgstr "Необходимо указать количество" -#: stock/api.py:933 +#: stock/api.py:943 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:964 +#: stock/api.py:974 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:974 +#: stock/api.py:984 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:1005 +#: stock/api.py:1015 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:59 +#: stock/models.py:60 msgid "Stock Location type" msgstr "" -#: stock/models.py:60 +#: stock/models.py:61 msgid "Stock Location types" msgstr "" -#: stock/models.py:86 +#: stock/models.py:87 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:123 stock/models.py:788 +#: stock/models.py:124 stock/models.py:786 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Место хранения" -#: stock/models.py:124 stock/templates/stock/location.html:186 +#: stock/models.py:125 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "Места хранения" -#: stock/models.py:166 stock/models.py:949 +#: stock/models.py:167 stock/models.py:947 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "Владелец" -#: stock/models.py:167 stock/models.py:950 +#: stock/models.py:168 stock/models.py:948 msgid "Select Owner" msgstr "Выберите владельца" -#: stock/models.py:175 +#: stock/models.py:176 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "Складские позиции не могут находиться в структурных местах хранения, но могут находиться в дочерних местах хранения." -#: stock/models.py:182 templates/js/translated/stock.js:2781 +#: stock/models.py:183 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "Внешний" -#: stock/models.py:183 +#: stock/models.py:184 msgid "This is an external stock location" msgstr "" -#: stock/models.py:189 templates/js/translated/stock.js:2790 +#: stock/models.py:190 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "Тип Места Хранения" -#: stock/models.py:193 +#: stock/models.py:194 msgid "Stock location type of this location" msgstr "" -#: stock/models.py:262 +#: stock/models.py:261 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "Вы не можете сделать это место хранение структурным, потому, что некоторые складские позиции уже находятся в нем!" -#: stock/models.py:643 +#: stock/models.py:641 msgid "Stock items cannot be located into structural stock locations!" msgstr "Складские позиции не могут находиться в структурных местах хранения!" -#: stock/models.py:670 stock/serializers.py:419 +#: stock/models.py:668 stock/serializers.py:446 msgid "Stock item cannot be created for virtual parts" msgstr "Складская позиция не может быть создана для виртуальных деталей" -#: stock/models.py:687 +#: stock/models.py:685 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:697 stock/models.py:710 +#: stock/models.py:695 stock/models.py:708 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:700 +#: stock/models.py:698 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:724 +#: stock/models.py:722 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:729 +#: stock/models.py:727 msgid "Item must have a build reference if is_building=True" msgstr "Элемент должен иметь ссылку на производство, если is_building=True" -#: stock/models.py:742 +#: stock/models.py:740 msgid "Build reference does not point to the same part object" msgstr "Ссылка на производство не указывает на тот же элемент" -#: stock/models.py:758 +#: stock/models.py:756 msgid "Parent Stock Item" msgstr "Складская позиция" -#: stock/models.py:770 +#: stock/models.py:768 msgid "Base part" msgstr "Базовая деталь" -#: stock/models.py:780 +#: stock/models.py:778 msgid "Select a matching supplier part for this stock item" msgstr "Выберите соответствующего поставщика детали для этой складской позиции" -#: stock/models.py:792 +#: stock/models.py:790 msgid "Where is this stock item located?" msgstr "Где находиться эта складская позиция?" -#: stock/models.py:800 stock/serializers.py:1480 +#: stock/models.py:798 stock/serializers.py:1476 msgid "Packaging this stock item is stored in" msgstr "Упаковка этой складской позиции хранится в" -#: stock/models.py:811 +#: stock/models.py:809 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:830 +#: stock/models.py:828 msgid "Serial number for this item" msgstr "" -#: stock/models.py:844 stock/serializers.py:1463 +#: stock/models.py:842 stock/serializers.py:1459 msgid "Batch code for this stock item" msgstr "Код партии для этой складской позиции" -#: stock/models.py:849 +#: stock/models.py:847 msgid "Stock Quantity" msgstr "Количество на складе" -#: stock/models.py:859 +#: stock/models.py:857 msgid "Source Build" msgstr "Исходное производство" -#: stock/models.py:862 +#: stock/models.py:860 msgid "Build for this stock item" msgstr "Производства для этой складской позиции" -#: stock/models.py:869 stock/templates/stock/item_base.html:363 +#: stock/models.py:867 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "Поглощен" -#: stock/models.py:872 +#: stock/models.py:870 msgid "Build order which consumed this stock item" msgstr "Заказ на производство, который поглотил эту складскую позицию" -#: stock/models.py:881 +#: stock/models.py:879 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:885 +#: stock/models.py:883 msgid "Purchase order for this stock item" msgstr "Заказ на закупку для этой складской позиции" -#: stock/models.py:891 +#: stock/models.py:889 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:902 +#: stock/models.py:900 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "Дата истечения срока годности для складской позиции. Остатки будут считаться просроченными после этой даты" -#: stock/models.py:920 +#: stock/models.py:918 msgid "Delete on deplete" msgstr "Удалить при обнулении" -#: stock/models.py:921 +#: stock/models.py:919 msgid "Delete this Stock Item when stock is depleted" msgstr "Удалить эту складскую позицию при обнулении складского запаса" -#: stock/models.py:941 +#: stock/models.py:939 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:972 +#: stock/models.py:970 msgid "Converted to part" msgstr "" -#: stock/models.py:1490 +#: stock/models.py:1486 msgid "Part is not set as trackable" msgstr "Деталь не является отслеживаемой" -#: stock/models.py:1496 +#: stock/models.py:1492 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1500 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1510 +#: stock/models.py:1506 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1515 +#: stock/models.py:1511 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1523 stock/serializers.py:658 +#: stock/models.py:1519 stock/serializers.py:660 msgid "Serial numbers already exist" msgstr "Серийные номера уже существуют" -#: stock/models.py:1620 +#: stock/models.py:1616 msgid "Test template does not exist" msgstr "" -#: stock/models.py:1638 +#: stock/models.py:1634 msgid "Stock item has been assigned to a sales order" msgstr "Складская позиция была назначена заказу на продажу" -#: stock/models.py:1642 +#: stock/models.py:1638 msgid "Stock item is installed in another item" msgstr "Складская позиция установлена в другую деталь" -#: stock/models.py:1645 +#: stock/models.py:1641 msgid "Stock item contains other items" msgstr "Складская позиция содержит другие детали" -#: stock/models.py:1648 +#: stock/models.py:1644 msgid "Stock item has been assigned to a customer" msgstr "Складская позиция была назначена покупателю" -#: stock/models.py:1651 +#: stock/models.py:1647 msgid "Stock item is currently in production" msgstr "Складская позиция в производстве" -#: stock/models.py:1654 +#: stock/models.py:1650 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1661 stock/serializers.py:1369 +#: stock/models.py:1657 stock/serializers.py:1365 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1665 +#: stock/models.py:1661 msgid "Stock items must refer to the same part" msgstr "Складские позиции должны ссылаться на одну и ту же деталь" -#: stock/models.py:1673 +#: stock/models.py:1669 msgid "Stock items must refer to the same supplier part" msgstr "Складские позиции должны ссылаться на одну и ту же деталь поставщика" -#: stock/models.py:1678 +#: stock/models.py:1674 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1905 +#: stock/models.py:1901 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2310 msgid "Entry notes" msgstr "" -#: stock/models.py:2391 +#: stock/models.py:2378 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2396 +#: stock/models.py:2383 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2423 +#: stock/models.py:2388 +msgid "Invalid value for this test" +msgstr "" + +#: stock/models.py:2412 msgid "Test result" msgstr "Результат тестирования" -#: stock/models.py:2430 +#: stock/models.py:2419 msgid "Test output value" msgstr "" -#: stock/models.py:2438 +#: stock/models.py:2427 msgid "Test result attachment" msgstr "" -#: stock/models.py:2442 +#: stock/models.py:2431 msgid "Test notes" msgstr "Записи Тестирования" -#: stock/models.py:2450 templates/js/translated/stock.js:1548 +#: stock/models.py:2439 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2440 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2457 +#: stock/models.py:2446 msgid "Started" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2447 msgid "The timestamp of the test start" msgstr "" -#: stock/models.py:2464 +#: stock/models.py:2453 msgid "Finished" msgstr "" -#: stock/models.py:2465 +#: stock/models.py:2454 msgid "The timestamp of the test finish" msgstr "" -#: stock/serializers.py:75 +#: stock/serializers.py:74 msgid "Generated batch code" msgstr "" -#: stock/serializers.py:84 +#: stock/serializers.py:83 msgid "Select build order" msgstr "" -#: stock/serializers.py:93 +#: stock/serializers.py:92 msgid "Select stock item to generate batch code for" msgstr "" -#: stock/serializers.py:102 +#: stock/serializers.py:101 msgid "Select location to generate batch code for" msgstr "" -#: stock/serializers.py:111 +#: stock/serializers.py:110 msgid "Select part to generate batch code for" msgstr "" -#: stock/serializers.py:120 +#: stock/serializers.py:119 msgid "Select purchase order" msgstr "" -#: stock/serializers.py:127 +#: stock/serializers.py:126 msgid "Enter quantity for batch code" msgstr "" -#: stock/serializers.py:150 +#: stock/serializers.py:149 msgid "Generated serial number" msgstr "" -#: stock/serializers.py:159 +#: stock/serializers.py:158 msgid "Select part to generate serial number for" msgstr "" -#: stock/serializers.py:167 +#: stock/serializers.py:166 msgid "Quantity of serial numbers to generate" msgstr "" -#: stock/serializers.py:229 +#: stock/serializers.py:228 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:248 +#: stock/serializers.py:247 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:280 +#: stock/serializers.py:279 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:313 +#: stock/serializers.py:315 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:411 +#: stock/serializers.py:438 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:531 +#: stock/serializers.py:558 msgid "Purchase price of this stock item, per unit or pack" msgstr "Закупочная цена для этой складской позиции, за единицу или за упаковку" -#: stock/serializers.py:593 +#: stock/serializers.py:595 msgid "Enter number of stock items to serialize" msgstr "Введите количество складских позиций для сериализации" -#: stock/serializers.py:606 +#: stock/serializers.py:608 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:613 +#: stock/serializers.py:615 msgid "Enter serial numbers for new items" msgstr "Введите серийные номера для новых элементов" -#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 +#: stock/serializers.py:626 stock/serializers.py:1322 stock/serializers.py:1578 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:631 +#: stock/serializers.py:633 msgid "Optional note field" msgstr "Опциональное поле записей" -#: stock/serializers.py:641 +#: stock/serializers.py:643 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:696 +#: stock/serializers.py:698 msgid "Select stock item to install" msgstr "Выберите складскую позицию для установки" -#: stock/serializers.py:703 +#: stock/serializers.py:705 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:704 +#: stock/serializers.py:706 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 -#: stock/serializers.py:935 +#: stock/serializers.py:711 stock/serializers.py:791 stock/serializers.py:887 +#: stock/serializers.py:937 msgid "Add transaction note (optional)" msgstr "Добавить запись к транзакции (необязательно)" -#: stock/serializers.py:717 +#: stock/serializers.py:719 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:725 +#: stock/serializers.py:727 msgid "Stock item is unavailable" msgstr "Складская позиция недоступна" -#: stock/serializers.py:736 +#: stock/serializers.py:738 msgid "Selected part is not in the Bill of Materials" msgstr "Выбранная деталь отсутствует в спецификации" -#: stock/serializers.py:749 +#: stock/serializers.py:751 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:784 +#: stock/serializers.py:786 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:819 +#: stock/serializers.py:821 msgid "Select part to convert stock item into" msgstr "Выберите деталь в которую будет преобразована складская позиция" -#: stock/serializers.py:832 +#: stock/serializers.py:834 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:849 +#: stock/serializers.py:851 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "Невозможно преобразовать складскую позицию с назначенной деталью поставщика" -#: stock/serializers.py:880 +#: stock/serializers.py:882 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:917 +#: stock/serializers.py:919 msgid "Select stock items to change status" msgstr "Выберите складские позиции для изменения статуса" -#: stock/serializers.py:923 +#: stock/serializers.py:925 msgid "No stock items selected" msgstr "Не выбрано ни одной складской позиции" -#: stock/serializers.py:1019 stock/serializers.py:1082 +#: stock/serializers.py:1021 stock/serializers.py:1093 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:220 +#: stock/templates/stock/location.html:222 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "Места хранения" -#: stock/serializers.py:1198 +#: stock/serializers.py:1086 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: stock/serializers.py:1194 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1202 +#: stock/serializers.py:1198 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1206 +#: stock/serializers.py:1202 msgid "Item is allocated to a build order" msgstr "Элемент зарезервирован для заказа на производство" -#: stock/serializers.py:1230 +#: stock/serializers.py:1226 msgid "Customer to assign stock items" msgstr "Покупатель для назначения складских позиций" -#: stock/serializers.py:1236 +#: stock/serializers.py:1232 msgid "Selected company is not a customer" msgstr "Выбранная компания не является покупателем" -#: stock/serializers.py:1244 +#: stock/serializers.py:1240 msgid "Stock assignment notes" msgstr "Записи о назначенных запасах" -#: stock/serializers.py:1254 stock/serializers.py:1508 +#: stock/serializers.py:1250 stock/serializers.py:1504 msgid "A list of stock items must be provided" msgstr "Необходимо предоставить список складских позиций" -#: stock/serializers.py:1333 +#: stock/serializers.py:1329 msgid "Stock merging notes" msgstr "Записи о слияниях запасов" -#: stock/serializers.py:1338 +#: stock/serializers.py:1334 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1339 +#: stock/serializers.py:1335 msgid "Allow stock items with different supplier parts to be merged" msgstr "Разрешить слияние складских позиций с различными поставщиками" -#: stock/serializers.py:1344 +#: stock/serializers.py:1340 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1345 +#: stock/serializers.py:1341 msgid "Allow stock items with different status codes to be merged" msgstr "Разрешить слияние складских позиций с различными статусами" -#: stock/serializers.py:1355 +#: stock/serializers.py:1351 msgid "At least two stock items must be provided" msgstr "Необходимо предоставить как минимум 2 складские позиции" -#: stock/serializers.py:1422 +#: stock/serializers.py:1418 msgid "No Change" msgstr "" -#: stock/serializers.py:1451 +#: stock/serializers.py:1447 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1470 +#: stock/serializers.py:1466 msgid "Stock item status code" msgstr "Статус складской позиции" -#: stock/serializers.py:1498 +#: stock/serializers.py:1494 msgid "Stock transaction notes" msgstr "Записи о перемещениях запасов" @@ -9448,7 +9532,7 @@ msgstr "Данные тестов" msgid "Test Report" msgstr "Отчет тестирования" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276 msgid "Delete Test Data" msgstr "Удалить данные тестирования" @@ -9468,11 +9552,11 @@ msgstr "Установленные складские позиции" msgid "Install Stock Item" msgstr "Установить складскую позицию" -#: stock/templates/stock/item.html:272 +#: stock/templates/stock/item.html:264 msgid "Delete all test results for this stock item" msgstr "Удалить все результаты тестирования для этой складской позиции" -#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "Добавить Результат Тестирования" @@ -9758,28 +9842,28 @@ msgstr "" msgid "Location Type" msgstr "" -#: stock/templates/stock/location.html:224 +#: stock/templates/stock/location.html:226 msgid "Create new stock location" msgstr "Создать новое место хранения" -#: stock/templates/stock/location.html:225 +#: stock/templates/stock/location.html:227 msgid "New Location" msgstr "Новое место хранения" -#: stock/templates/stock/location.html:295 +#: stock/templates/stock/location.html:299 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "места хранения" -#: stock/templates/stock/location.html:317 +#: stock/templates/stock/location.html:321 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:390 +#: stock/templates/stock/location.html:394 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:401 +#: stock/templates/stock/location.html:405 msgid "Link Barcode to Stock Location" msgstr "" @@ -10203,20 +10287,20 @@ msgstr "Настройки заказа на закупку" msgid "Pricing Settings" msgstr "Настройки ценообразования" -#: templates/InvenTree/settings/pricing.html:34 +#: templates/InvenTree/settings/pricing.html:35 msgid "Exchange Rates" msgstr "Курсы Валют" -#: templates/InvenTree/settings/pricing.html:38 +#: templates/InvenTree/settings/pricing.html:39 msgid "Update Now" msgstr "Обновить Сейчас" -#: templates/InvenTree/settings/pricing.html:46 -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 msgid "Last Update" msgstr "Последнее обновление" -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:51 msgid "Never" msgstr "Никогда" @@ -10273,8 +10357,8 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:547 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 +#: templates/js/translated/part.js:393 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:402 msgid "Delete" msgstr "Удалить" @@ -10314,12 +10398,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 -#: templates/js/translated/part.js:1645 +#: templates/js/translated/part.js:1646 msgid "Edit Template" msgstr "Редактировать шаблон" #: templates/InvenTree/settings/settings_staff_js.html:309 -#: templates/js/translated/part.js:1646 +#: templates/js/translated/part.js:1647 msgid "Delete Template" msgstr "Удалить шаблон" @@ -10709,7 +10793,7 @@ msgid "Submit Bug Report" msgstr "" #: templates/about.html:91 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 +#: templates/js/translated/helpers.js:589 msgid "copy to clipboard" msgstr "" @@ -10773,7 +10857,7 @@ 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 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45 msgid "Return to Site" msgstr "Вернуться на сайт" @@ -10887,15 +10971,19 @@ msgstr "Шаг 1" msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "" -#: templates/allauth_2fa/setup.html:23 +#: templates/allauth_2fa/setup.html:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 msgid "Step 2" msgstr "Шаг 2" -#: templates/allauth_2fa/setup.html:27 +#: templates/allauth_2fa/setup.html:28 msgid "Input a token generated by the app:" msgstr "" -#: templates/allauth_2fa/setup.html:37 +#: templates/allauth_2fa/setup.html:38 msgid "Verify" msgstr "Проверить" @@ -10974,7 +11062,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3217 +#: templates/js/translated/part.js:3219 msgid "Minimum Quantity" msgstr "Минимальное количество" @@ -11062,27 +11150,27 @@ msgstr "" msgid "Delete attachments" msgstr "" -#: templates/js/translated/attachment.js:253 +#: templates/js/translated/attachment.js:260 msgid "Attachment actions" msgstr "" -#: templates/js/translated/attachment.js:275 +#: templates/js/translated/attachment.js:294 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:315 +#: templates/js/translated/attachment.js:334 msgid "Edit Attachment" msgstr "Редактировать вложения" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:365 msgid "Upload Date" msgstr "Дата загрузки" -#: templates/js/translated/attachment.js:366 +#: templates/js/translated/attachment.js:385 msgid "Edit attachment" msgstr "Редактировать вложения" -#: templates/js/translated/attachment.js:374 +#: templates/js/translated/attachment.js:393 msgid "Delete attachment" msgstr "" @@ -11363,7 +11451,7 @@ msgid "Includes variant and substitute stock" msgstr "" #: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 -#: templates/js/translated/part.js:1256 +#: templates/js/translated/part.js:1257 #: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" @@ -11690,7 +11778,7 @@ msgstr "" #: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 #: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 -#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "Выбрать" @@ -11733,8 +11821,8 @@ msgstr "позиция производства" msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 -#: templates/js/translated/part.js:1202 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:791 +#: templates/js/translated/part.js:1203 msgid "Trackable part" msgstr "Отслеживаемая деталь" @@ -11920,7 +12008,7 @@ msgid "Delete Parameters" msgstr "" #: templates/js/translated/company.js:1191 -#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2244 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2245 msgid "Order parts" msgstr "Заказать детали" @@ -11937,34 +12025,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:1279 -#: templates/js/translated/company.js:1567 templates/js/translated/part.js:798 -#: templates/js/translated/part.js:1210 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Template part" msgstr "Деталь-шаблон" #: templates/js/translated/company.js:1283 -#: templates/js/translated/company.js:1571 templates/js/translated/part.js:802 -#: templates/js/translated/part.js:1214 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:803 +#: templates/js/translated/part.js:1215 msgid "Assembled part" msgstr "Производимая Деталь" -#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1464 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1465 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1527 +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1528 msgid "Edit parameter" msgstr "Редактировать параметр" -#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1528 +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1529 msgid "Delete parameter" msgstr "Удалить параметр" -#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1433 +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1434 msgid "Edit Parameter" msgstr "Редактировать параметр" -#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1549 +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1550 msgid "Delete Parameter" msgstr "Удалить параметр" @@ -12098,23 +12186,23 @@ msgstr "Форма содержит ошибки" msgid "No results found" msgstr "Результаты не найдены" -#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 msgid "Searching" msgstr "Поиск" -#: templates/js/translated/forms.js:2499 +#: templates/js/translated/forms.js:2500 msgid "Clear input" msgstr "Очистить ввод" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "File Column" msgstr "Столбец Файла" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "Field Name" msgstr "Имя Поля" -#: templates/js/translated/forms.js:3113 +#: templates/js/translated/forms.js:3114 msgid "Select Columns" msgstr "Выбрать столбцы" @@ -12215,7 +12303,7 @@ msgstr "Новости не найдены" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 -#: templates/js/translated/part.js:1604 +#: templates/js/translated/part.js:1605 msgid "ID" msgstr "Код" @@ -12296,347 +12384,343 @@ msgstr "" 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 +#: templates/js/translated/part.js:333 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:355 +#: templates/js/translated/part.js:356 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:356 +#: templates/js/translated/part.js:357 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:370 +#: templates/js/translated/part.js:371 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:383 +#: templates/js/translated/part.js:384 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:388 +#: templates/js/translated/part.js:389 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:397 +#: templates/js/translated/part.js:398 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:401 +#: templates/js/translated/part.js:402 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:406 +#: templates/js/translated/part.js:407 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:430 +#: templates/js/translated/part.js:431 msgid "Create Part" msgstr "Создать Деталь" -#: templates/js/translated/part.js:432 +#: templates/js/translated/part.js:433 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:433 +#: templates/js/translated/part.js:434 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:462 msgid "Edit Part" msgstr "Редактировать Деталь" -#: templates/js/translated/part.js:463 +#: templates/js/translated/part.js:464 msgid "Part edited" msgstr "Деталь изменена" -#: templates/js/translated/part.js:474 +#: templates/js/translated/part.js:475 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:531 +#: templates/js/translated/part.js:532 msgid "Active Part" msgstr "Активная Деталь" -#: templates/js/translated/part.js:532 +#: templates/js/translated/part.js:533 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:546 +#: templates/js/translated/part.js:547 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:548 +#: templates/js/translated/part.js:549 msgid "Any stock items for this part will be deleted" msgstr "Любые складские позиции для этой запчасти будут удалены" -#: templates/js/translated/part.js:549 +#: templates/js/translated/part.js:550 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:550 +#: templates/js/translated/part.js:551 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:557 +#: templates/js/translated/part.js:558 msgid "Delete Part" msgstr "Удалить Деталь" -#: templates/js/translated/part.js:593 +#: templates/js/translated/part.js:594 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:595 +#: templates/js/translated/part.js:596 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:600 +#: templates/js/translated/part.js:601 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:602 +#: templates/js/translated/part.js:603 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:619 +#: templates/js/translated/part.js:620 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:629 +#: templates/js/translated/part.js:630 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:632 +#: templates/js/translated/part.js:633 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:657 +#: templates/js/translated/part.js:658 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:685 +#: templates/js/translated/part.js:686 #: templates/js/translated/table_filters.js:747 msgid "Low stock" msgstr "Низкий запас" -#: templates/js/translated/part.js:688 +#: templates/js/translated/part.js:689 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:748 +#: templates/js/translated/part.js:749 msgid "Demand" msgstr "Требуется" -#: templates/js/translated/part.js:771 +#: templates/js/translated/part.js:772 msgid "Unit" msgstr "Ед. Изм." -#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +#: templates/js/translated/part.js:795 templates/js/translated/part.js:1207 msgid "Virtual part" msgstr "Виртуальная Деталь" -#: templates/js/translated/part.js:806 +#: templates/js/translated/part.js:807 msgid "Subscribed part" msgstr "Деталь с подпиской" -#: templates/js/translated/part.js:810 +#: templates/js/translated/part.js:811 msgid "Salable part" msgstr "Продаваемая деталь" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:897 +#: templates/js/translated/part.js:898 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:901 +#: templates/js/translated/part.js:902 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1050 +#: templates/js/translated/part.js:1051 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1145 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +#: templates/js/translated/part.js:1113 templates/js/translated/part.js:1155 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1281 +#: templates/js/translated/part.js:1282 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1599 +#: templates/js/translated/part.js:1600 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1662 +#: templates/js/translated/part.js:1663 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1674 +#: templates/js/translated/part.js:1675 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1682 +#: templates/js/translated/part.js:1683 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1716 +#: templates/js/translated/part.js:1717 #: templates/js/translated/purchase_order.js:1654 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1860 +#: templates/js/translated/part.js:1861 #: templates/js/translated/purchase_order.js:2153 #: templates/js/translated/return_order.js:755 #: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1906 +#: templates/js/translated/part.js:1907 #: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1970 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1991 +#: templates/js/translated/part.js:1992 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 +#: templates/js/translated/part.js:2080 templates/js/translated/part.js:2506 msgid "No parts found" msgstr "Детали не найдены" -#: templates/js/translated/part.js:2200 +#: templates/js/translated/part.js:2201 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2205 +#: templates/js/translated/part.js:2206 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2235 +#: templates/js/translated/part.js:2236 msgid "Set category" msgstr "Указать категорию" -#: templates/js/translated/part.js:2286 +#: templates/js/translated/part.js:2287 msgid "part" msgstr "деталь" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2288 msgid "parts" msgstr "детали" -#: templates/js/translated/part.js:2383 +#: templates/js/translated/part.js:2384 msgid "No category" msgstr "Нет категории" -#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "Отобразить списком" -#: templates/js/translated/part.js:2546 +#: templates/js/translated/part.js:2547 msgid "Display as grid" msgstr "Отобразить сеткой" -#: templates/js/translated/part.js:2644 +#: templates/js/translated/part.js:2645 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "Отобразить древом" -#: templates/js/translated/part.js:2760 +#: templates/js/translated/part.js:2761 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2776 +#: templates/js/translated/part.js:2777 msgid "Subscribed category" msgstr "Категория с подпиской" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2865 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2887 templates/js/translated/search.js:342 msgid "results" msgstr "результаты" -#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "Редактировать результаты тестирования" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/part.js:2938 templates/js/translated/stock.js:1457 #: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2940 +#: templates/js/translated/part.js:2942 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2956 +#: templates/js/translated/part.js:2958 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2970 +#: templates/js/translated/part.js:2972 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3051 templates/js/translated/part.js:3052 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3052 +#: templates/js/translated/part.js:3054 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3058 +#: templates/js/translated/part.js:3060 msgid "Speculative" msgstr "Приблизительный" -#: templates/js/translated/part.js:3108 +#: templates/js/translated/part.js:3110 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3114 +#: templates/js/translated/part.js:3116 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3210 +#: templates/js/translated/part.js:3212 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3226 +#: templates/js/translated/part.js:3228 msgid "Maximum Quantity" msgstr "Максимальное количество" -#: templates/js/translated/part.js:3271 +#: templates/js/translated/part.js:3273 msgid "Minimum Stock Level" msgstr "" @@ -13244,10 +13328,6 @@ msgstr "" 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 "" @@ -13416,7 +13496,7 @@ msgstr "Взять" msgid "Add Stock" msgstr "Добавить Запасы" -#: templates/js/translated/stock.js:1042 users/models.py:401 +#: templates/js/translated/stock.js:1042 users/models.py:392 msgid "Add" msgstr "Добавить" @@ -14307,34 +14387,35 @@ msgstr "" msgid "Revoked" msgstr "Отозван" -#: users/models.py:384 +#: users/models.py:375 msgid "Permission set" msgstr "Права доступа" -#: users/models.py:393 +#: users/models.py:384 msgid "Group" msgstr "Группа" -#: users/models.py:397 +#: users/models.py:388 msgid "View" msgstr "Вид" -#: users/models.py:397 +#: users/models.py:388 msgid "Permission to view items" msgstr "Разрешение на просмотр элементов" -#: users/models.py:401 +#: users/models.py:392 msgid "Permission to add items" msgstr "Разрешение на добавление элементов" -#: users/models.py:405 +#: users/models.py:396 msgid "Change" msgstr "Изменить" -#: users/models.py:407 +#: users/models.py:398 msgid "Permissions to edit items" msgstr "Разрешение на редактирование элементов" -#: users/models.py:413 +#: users/models.py:404 msgid "Permission to delete items" msgstr "Разрешение на удаление элементов" + diff --git a/src/backend/InvenTree/locale/sk/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/sk/LC_MESSAGES/django.po index 3877177274..0014bae02e 100644 --- a/src/backend/InvenTree/locale/sk/LC_MESSAGES/django.po +++ b/src/backend/InvenTree/locale/sk/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-05-31 07:08+0000\n" -"PO-Revision-Date: 2024-05-27 11:54\n" +"POT-Creation-Date: 2024-06-26 03:18+0000\n" +"PO-Revision-Date: 2024-06-26 06:04\n" "Last-Translator: \n" "Language-Team: Slovak\n" "Language: sk_SK\n" @@ -21,7 +21,7 @@ msgstr "" msgid "API endpoint not found" msgstr "" -#: InvenTree/api.py:536 +#: InvenTree/api.py:520 msgid "User does not have permission to view this model" msgstr "" @@ -52,25 +52,25 @@ msgstr "" msgid "Error details can be found in the admin panel" msgstr "" -#: InvenTree/fields.py:139 +#: InvenTree/fields.py:136 msgid "Enter date" msgstr "" -#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 -#: build/serializers.py:531 build/templates/build/sidebar.html:21 -#: company/models.py:849 company/templates/company/sidebar.html:37 -#: order/models.py:1332 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:205 InvenTree/models.py:918 build/serializers.py:452 +#: build/serializers.py:530 build/templates/build/sidebar.html:21 +#: company/models.py:817 company/templates/company/sidebar.html:37 +#: order/models.py:1296 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:3218 part/templates/part/part_sidebar.html:63 +#: part/models.py:3183 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_report.html:172 -#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 -#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 -#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 -#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:230 stock/models.py:2309 stock/models.py:2431 +#: stock/serializers.py:632 stock/serializers.py:790 stock/serializers.py:886 +#: stock/serializers.py:936 stock/serializers.py:1239 stock/serializers.py:1328 +#: stock/serializers.py:1493 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1080 +#: templates/js/translated/part.js:1081 #: templates/js/translated/purchase_order.js:2200 #: templates/js/translated/return_order.js:775 #: templates/js/translated/sales_order.js:1103 @@ -120,15 +120,15 @@ msgstr "" msgid "You must type the same email each time." msgstr "" -#: InvenTree/forms.py:253 InvenTree/forms.py:261 +#: InvenTree/forms.py:248 InvenTree/forms.py:256 msgid "The provided primary email address is not valid." msgstr "" -#: InvenTree/forms.py:268 +#: InvenTree/forms.py:263 msgid "The provided email domain is not approved." msgstr "" -#: InvenTree/forms.py:395 +#: InvenTree/forms.py:390 msgid "Registration is disabled." msgstr "" @@ -171,35 +171,35 @@ msgstr "" msgid "Remove HTML tags from this value" msgstr "" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Connection error" msgstr "" -#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 msgid "Server responded with invalid status code" msgstr "" -#: InvenTree/helpers_model.py:158 +#: InvenTree/helpers_model.py:148 msgid "Exception occurred" msgstr "" -#: InvenTree/helpers_model.py:168 +#: InvenTree/helpers_model.py:158 msgid "Server responded with invalid Content-Length value" msgstr "" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:161 msgid "Image size is too large" msgstr "" -#: InvenTree/helpers_model.py:183 +#: InvenTree/helpers_model.py:173 msgid "Image download exceeded maximum size" msgstr "" -#: InvenTree/helpers_model.py:188 +#: InvenTree/helpers_model.py:178 msgid "Remote server returned empty response" msgstr "" -#: InvenTree/helpers_model.py:196 +#: InvenTree/helpers_model.py:186 msgid "Supplied URL is not a valid image file" msgstr "" @@ -296,46 +296,50 @@ msgid "Portuguese (Brazilian)" msgstr "" #: InvenTree/locales.py:41 -msgid "Russian" +msgid "Romanian" msgstr "" #: InvenTree/locales.py:42 -msgid "Slovak" +msgid "Russian" msgstr "" #: InvenTree/locales.py:43 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: InvenTree/locales.py:44 -msgid "Serbian" +msgid "Slovenian" msgstr "" #: InvenTree/locales.py:45 -msgid "Swedish" +msgid "Serbian" msgstr "" #: InvenTree/locales.py:46 -msgid "Thai" +msgid "Swedish" msgstr "" #: InvenTree/locales.py:47 -msgid "Turkish" +msgid "Thai" msgstr "" #: InvenTree/locales.py:48 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: InvenTree/locales.py:49 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: InvenTree/locales.py:50 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: InvenTree/locales.py:51 +msgid "Chinese (Simplified)" +msgstr "" + +#: InvenTree/locales.py:52 msgid "Chinese (Traditional)" msgstr "" @@ -344,153 +348,65 @@ msgstr "" msgid "[{site_name}] Log in to the app" msgstr "" -#: InvenTree/magic_login.py:38 company/models.py:133 +#: InvenTree/magic_login.py:38 company/models.py:136 #: company/templates/company/company_base.html:138 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:677 msgid "Email" msgstr "" -#: InvenTree/models.py:107 +#: InvenTree/models.py:105 msgid "Error running plugin validation" msgstr "" -#: InvenTree/models.py:176 +#: InvenTree/models.py:174 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:182 +#: InvenTree/models.py:180 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:183 +#: InvenTree/models.py:181 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:413 +#: InvenTree/models.py:408 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:420 +#: InvenTree/models.py:415 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:426 +#: InvenTree/models.py:421 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:437 +#: InvenTree/models.py:432 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:445 +#: InvenTree/models.py:440 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:476 +#: InvenTree/models.py:471 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:550 -msgid "Missing file" -msgstr "" - -#: InvenTree/models.py:551 -msgid "Missing external link" -msgstr "" - -#: InvenTree/models.py:572 stock/models.py:2437 -#: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:326 -msgid "Attachment" -msgstr "" - -#: InvenTree/models.py:573 -msgid "Select file to attach" -msgstr "" - -#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:831 -#: order/models.py:303 order/models.py:1337 order/models.py:1753 -#: part/admin.py:55 part/models.py:962 -#: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_report.html:164 -#: stock/admin.py:225 templates/js/translated/company.js:1319 -#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2455 -#: templates/js/translated/purchase_order.js:2040 -#: templates/js/translated/purchase_order.js:2204 -#: templates/js/translated/return_order.js:779 -#: templates/js/translated/sales_order.js:1092 -#: templates/js/translated/sales_order.js:2023 -msgid "Link" -msgstr "" - -#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 -#: stock/models.py:836 -msgid "Link to external URL" -msgstr "" - -#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:341 -msgid "Comment" -msgstr "" - -#: InvenTree/models.py:589 -msgid "File comment" -msgstr "" - -#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 -#: common/models.py:2518 common/models.py:2742 common/models.py:2743 -#: common/models.py:2988 common/models.py:2989 part/models.py:3228 -#: part/models.py:3315 part/models.py:3408 part/models.py:3436 -#: plugin/models.py:259 plugin/models.py:260 -#: report/templates/report/inventree_test_report.html:105 -#: templates/js/translated/stock.js:3036 users/models.py:111 -msgid "User" -msgstr "" - -#: InvenTree/models.py:602 -msgid "upload date" -msgstr "" - -#: InvenTree/models.py:624 -msgid "Filename must not be empty" -msgstr "" - -#: InvenTree/models.py:635 -msgid "Invalid attachment directory" -msgstr "" - -#: InvenTree/models.py:665 -#, python-brace-format -msgid "Filename contains illegal character '{c}'" -msgstr "" - -#: InvenTree/models.py:668 -msgid "Filename missing extension" -msgstr "" - -#: InvenTree/models.py:677 -msgid "Attachment with this filename already exists" -msgstr "" - -#: InvenTree/models.py:684 -msgid "Error renaming file" -msgstr "" - -#: InvenTree/models.py:860 +#: InvenTree/models.py:719 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:877 +#: InvenTree/models.py:736 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 -#: common/serializers.py:403 company/models.py:614 machine/models.py:24 -#: part/models.py:898 part/models.py:3659 plugin/models.py:50 -#: report/models.py:149 stock/models.py:72 +#: InvenTree/models.py:766 common/models.py:2623 common/models.py:3036 +#: common/serializers.py:408 company/models.py:580 machine/models.py:24 +#: part/models.py:891 part/models.py:3639 plugin/models.py:51 +#: report/models.py:150 stock/models.py:73 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:83 @@ -501,25 +417,25 @@ msgstr "" #: templates/js/translated/company.js:724 #: templates/js/translated/company.js:913 #: templates/js/translated/company.js:1165 -#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 -#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1187 +#: templates/js/translated/part.js:1475 templates/js/translated/part.js:1611 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "" -#: InvenTree/models.py:913 build/models.py:218 -#: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:523 company/models.py:840 +#: InvenTree/models.py:772 build/models.py:220 +#: build/templates/build/detail.html:24 common/models.py:138 +#: company/models.py:509 company/models.py:808 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 order/models.py:289 -#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 -#: part/models.py:3674 part/templates/part/category.html:82 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:914 +#: part/models.py:3654 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:155 -#: report/models.py:509 report/models.py:535 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 #: report/templates/report/inventree_build_order_report.html:117 -#: stock/admin.py:55 stock/models.py:78 stock/templates/stock/location.html:125 +#: stock/admin.py:54 stock/models.py:79 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 @@ -528,10 +444,10 @@ msgstr "" #: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 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:2354 -#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1239 +#: templates/js/translated/part.js:1484 templates/js/translated/part.js:1622 +#: templates/js/translated/part.js:1959 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2897 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1706 #: templates/js/translated/purchase_order.js:1849 @@ -544,149 +460,141 @@ msgstr "" msgid "Description" msgstr "" -#: InvenTree/models.py:914 stock/models.py:79 +#: InvenTree/models.py:773 stock/models.py:80 msgid "Description (optional)" msgstr "" -#: InvenTree/models.py:923 -msgid "parent" -msgstr "" - -#: InvenTree/models.py:929 templates/js/translated/part.js:2793 +#: InvenTree/models.py:788 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "" -#: InvenTree/models.py:1035 +#: InvenTree/models.py:918 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:1064 +#: InvenTree/models.py:947 msgid "Barcode Data" msgstr "" -#: InvenTree/models.py:1065 +#: InvenTree/models.py:948 msgid "Third party barcode data" msgstr "" -#: InvenTree/models.py:1071 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:1072 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:1125 +#: InvenTree/models.py:1008 msgid "Existing barcode found" msgstr "" -#: InvenTree/models.py:1168 +#: InvenTree/models.py:1051 msgid "Server Error" msgstr "" -#: InvenTree/models.py:1169 +#: InvenTree/models.py:1052 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:62 part/models.py:4212 +#: InvenTree/serializers.py:63 part/models.py:4192 msgid "Must be a valid number" msgstr "" -#: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:3036 +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3001 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "" -#: InvenTree/serializers.py:102 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:441 +#: InvenTree/serializers.py:442 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:453 +#: InvenTree/serializers.py:454 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:472 +#: InvenTree/serializers.py:473 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:474 +#: InvenTree/serializers.py:475 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:481 +#: InvenTree/serializers.py:482 msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:542 -msgid "Filename" -msgstr "" - -#: InvenTree/serializers.py:576 +#: InvenTree/serializers.py:540 msgid "Invalid value" msgstr "" -#: InvenTree/serializers.py:596 +#: InvenTree/serializers.py:560 msgid "Data File" msgstr "" -#: InvenTree/serializers.py:597 +#: InvenTree/serializers.py:561 msgid "Select data file for upload" msgstr "" -#: InvenTree/serializers.py:614 +#: InvenTree/serializers.py:578 msgid "Unsupported file type" msgstr "" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:584 msgid "File is too large" msgstr "" -#: InvenTree/serializers.py:641 +#: InvenTree/serializers.py:605 msgid "No columns found in file" msgstr "" -#: InvenTree/serializers.py:644 +#: InvenTree/serializers.py:608 msgid "No data rows found in file" msgstr "" -#: InvenTree/serializers.py:757 +#: InvenTree/serializers.py:721 msgid "No data rows provided" msgstr "" -#: InvenTree/serializers.py:760 +#: InvenTree/serializers.py:724 msgid "No data columns supplied" msgstr "" -#: InvenTree/serializers.py:827 +#: InvenTree/serializers.py:791 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "" -#: InvenTree/serializers.py:836 +#: InvenTree/serializers.py:800 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/serializers.py:859 +#: InvenTree/serializers.py:840 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:860 +#: InvenTree/serializers.py:841 msgid "URL of remote image file" msgstr "" -#: InvenTree/serializers.py:878 +#: InvenTree/serializers.py:859 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/status.py:66 part/serializers.py:1178 +#: InvenTree/status.py:66 part/serializers.py:1174 msgid "Background worker check failed" msgstr "" @@ -698,27 +606,27 @@ msgstr "" msgid "InvenTree system health checks failed" msgstr "" -#: InvenTree/templatetags/inventree_extras.py:183 +#: InvenTree/templatetags/inventree_extras.py:184 msgid "Unknown database" msgstr "" -#: InvenTree/validators.py:31 InvenTree/validators.py:33 +#: InvenTree/validators.py:32 InvenTree/validators.py:34 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:39 +#: InvenTree/validators.py:40 msgid "Not a valid currency code" msgstr "" -#: InvenTree/validators.py:121 InvenTree/validators.py:137 +#: InvenTree/validators.py:118 InvenTree/validators.py:134 msgid "Overage value must not be negative" msgstr "" -#: InvenTree/validators.py:139 +#: InvenTree/validators.py:136 msgid "Overage must not exceed 100%" msgstr "" -#: InvenTree/validators.py:145 +#: InvenTree/validators.py:142 msgid "Invalid value for overage" msgstr "" @@ -750,14 +658,14 @@ msgstr "" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: build/api.py:299 part/models.py:4070 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:300 part/models.py:4084 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4064 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2529 #: templates/js/translated/table_filters.js:186 @@ -778,30 +686,30 @@ msgstr "" msgid "Allocated" msgstr "" -#: build/api.py:311 company/models.py:904 company/serializers.py:383 +#: build/api.py:311 company/models.py:872 company/serializers.py:359 #: 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:2561 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:234 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 -#: templates/js/translated/part.js:699 +#: templates/js/translated/part.js:693 templates/js/translated/part.js:695 +#: templates/js/translated/part.js:700 #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:575 msgid "Available" msgstr "" -#: build/models.py:83 build/templates/build/build_base.html:9 +#: build/models.py:85 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_report.html:105 -#: stock/serializers.py:83 templates/email/build_order_completed.html:16 +#: stock/serializers.py:82 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:2892 msgid "Build Order" msgstr "" -#: build/models.py:84 build/templates/build/build_base.html:13 +#: build/models.py:86 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 @@ -812,25 +720,25 @@ msgstr "" msgid "Build Orders" msgstr "" -#: build/models.py:131 +#: build/models.py:133 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:142 order/models.py:240 +#: build/models.py:144 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "" -#: build/models.py:148 +#: build/models.py:150 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:209 +#: build/models.py:211 msgid "Build Order Reference" msgstr "" -#: build/models.py:210 order/models.py:463 order/models.py:928 -#: order/models.py:1325 order/models.py:2056 part/admin.py:419 -#: part/models.py:4105 part/templates/part/upload_bom.html:54 +#: build/models.py:212 order/models.py:463 order/models.py:926 +#: order/models.py:1289 order/models.py:2020 part/admin.py:411 +#: part/models.py:4085 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_purchase_order_report.html:28 #: report/templates/report/inventree_return_order_report.html:26 @@ -844,27 +752,27 @@ msgstr "" msgid "Reference" msgstr "" -#: build/models.py:221 +#: build/models.py:223 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:229 build/templates/build/build_base.html:183 +#: build/models.py:231 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:230 +#: build/models.py:232 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:235 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 -#: order/models.py:1450 order/models.py:1595 order/models.py:1596 -#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 -#: part/models.py:3191 part/models.py:3335 part/models.py:3358 -#: part/models.py:3379 part/models.py:3401 part/models.py:3511 -#: part/models.py:3807 part/models.py:3963 part/models.py:4056 -#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 +#: build/models.py:237 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1026 order/api.py:805 +#: order/models.py:1414 order/models.py:1559 order/models.py:1560 +#: part/api.py:1494 part/api.py:1788 part/models.py:395 part/models.py:3012 +#: part/models.py:3156 part/models.py:3303 part/models.py:3324 +#: part/models.py:3346 part/models.py:3477 part/models.py:3787 +#: part/models.py:3943 part/models.py:4036 part/models.py:4395 +#: part/serializers.py:1120 part/serializers.py:1726 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -875,8 +783,8 @@ msgstr "" #: report/templates/report/inventree_return_order_report.html:24 #: report/templates/report/inventree_sales_order_report.html:27 #: report/templates/report/inventree_stock_location_report.html:102 -#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 -#: stock/serializers.py:818 templates/InvenTree/search.html:82 +#: stock/serializers.py:109 stock/serializers.py:157 stock/serializers.py:423 +#: stock/serializers.py:820 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 @@ -889,8 +797,8 @@ msgstr "" #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 -#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2323 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:1944 templates/js/translated/part.js:2016 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 #: templates/js/translated/purchase_order.js:751 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1848 @@ -908,107 +816,107 @@ msgstr "" msgid "Part" msgstr "" -#: build/models.py:243 +#: build/models.py:245 msgid "Select part to build" msgstr "" -#: build/models.py:248 +#: build/models.py:250 msgid "Sales Order Reference" msgstr "" -#: build/models.py:252 +#: build/models.py:254 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:257 build/serializers.py:1000 +#: build/models.py:259 build/serializers.py:999 #: templates/js/translated/build.js:1731 #: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "" -#: build/models.py:261 +#: build/models.py:263 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:266 +#: build/models.py:268 msgid "Destination Location" msgstr "" -#: build/models.py:270 +#: build/models.py:272 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:274 +#: build/models.py:276 msgid "Build Quantity" msgstr "" -#: build/models.py:277 +#: build/models.py:279 msgid "Number of stock items to build" msgstr "" -#: build/models.py:281 +#: build/models.py:283 msgid "Completed items" msgstr "" -#: build/models.py:283 +#: build/models.py:285 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:287 +#: build/models.py:289 msgid "Build Status" msgstr "" -#: build/models.py:291 +#: build/models.py:293 msgid "Build status code" msgstr "" -#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 -#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 +#: build/models.py:302 build/serializers.py:286 order/serializers.py:580 +#: stock/models.py:838 stock/serializers.py:74 stock/serializers.py:1458 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "" -#: build/models.py:304 build/serializers.py:288 +#: build/models.py:306 build/serializers.py:287 msgid "Batch code for this build output" msgstr "" -#: build/models.py:307 order/models.py:316 order/serializers.py:120 -#: part/models.py:1122 part/templates/part/part_base.html:310 +#: build/models.py:309 order/models.py:316 order/serializers.py:119 +#: part/models.py:1115 part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:338 #: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "" -#: build/models.py:311 +#: build/models.py:313 msgid "Target completion date" msgstr "" -#: build/models.py:312 +#: build/models.py:314 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:315 order/models.py:521 order/models.py:2101 +#: build/models.py:317 order/models.py:521 order/models.py:2065 #: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "" -#: build/models.py:321 +#: build/models.py:323 msgid "completed by" msgstr "" -#: build/models.py:329 templates/js/translated/build.js:2207 +#: build/models.py:331 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "" -#: build/models.py:330 +#: build/models.py:332 msgid "User who issued this build order" msgstr "" -#: build/models.py:338 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:145 +#: build/models.py:340 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:147 #: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:232 part/models.py:1139 +#: order/templates/order/sales_order_base.html:232 part/models.py:1132 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_report.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 @@ -1019,31 +927,36 @@ msgstr "" msgid "Responsible" msgstr "" -#: build/models.py:339 +#: build/models.py:341 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:344 build/templates/build/detail.html:108 +#: build/models.py:346 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:184 -#: part/templates/part/part_base.html:383 stock/models.py:836 +#: part/templates/part/part_base.html:383 stock/models.py:834 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "" -#: build/models.py:349 +#: build/models.py:347 common/models.py:3178 part/models.py:956 +#: stock/models.py:834 +msgid "Link to external URL" +msgstr "" + +#: build/models.py:351 msgid "Build Priority" msgstr "" -#: build/models.py:352 +#: build/models.py:354 msgid "Priority of this build order" msgstr "" -#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: build/models.py:361 common/models.py:131 order/admin.py:18 #: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 #: templates/js/translated/build.js:2144 #: templates/js/translated/purchase_order.js:1710 @@ -1054,65 +967,65 @@ msgstr "" msgid "Project Code" msgstr "" -#: build/models.py:360 +#: build/models.py:362 msgid "Project code for this build order" msgstr "" -#: build/models.py:593 build/models.py:658 +#: build/models.py:595 build/models.py:660 msgid "Failed to offload task to complete build allocations" msgstr "" -#: build/models.py:615 +#: build/models.py:617 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:621 +#: build/models.py:623 msgid "A build order has been completed" msgstr "" -#: build/models.py:847 build/models.py:932 +#: build/models.py:849 build/models.py:934 msgid "No build output specified" msgstr "" -#: build/models.py:850 +#: build/models.py:852 msgid "Build output is already completed" msgstr "" -#: build/models.py:853 +#: build/models.py:855 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 -#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 -#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 -#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 +#: build/models.py:938 build/serializers.py:219 build/serializers.py:268 +#: build/serializers.py:866 order/models.py:559 order/serializers.py:432 +#: order/serializers.py:575 part/serializers.py:1484 part/serializers.py:1884 +#: stock/models.py:677 stock/models.py:1495 stock/serializers.py:603 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:941 build/serializers.py:225 +#: build/models.py:943 build/serializers.py:224 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1001 build/serializers.py:548 +#: build/models.py:1003 build/serializers.py:547 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1352 +#: build/models.py:1344 msgid "Build Order Line Item" msgstr "" -#: build/models.py:1377 +#: build/models.py:1369 msgid "Build object" msgstr "" -#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 -#: build/serializers.py:254 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2539 -#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 -#: part/forms.py:48 part/models.py:3205 part/models.py:4078 +#: build/models.py:1383 build/models.py:1639 build/serializers.py:206 +#: build/serializers.py:253 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2509 +#: order/models.py:1272 order/models.py:1931 order/serializers.py:1327 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3170 part/models.py:4058 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1121,8 +1034,8 @@ msgstr "" #: report/templates/report/inventree_sales_order_report.html:29 #: report/templates/report/inventree_stock_location_report.html:104 #: report/templates/report/inventree_test_report.html:90 -#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 -#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:125 stock/serializers.py:165 stock/serializers.py:594 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1133,8 +1046,8 @@ msgstr "" #: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 #: templates/js/translated/model_renderers.js:236 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:962 +#: templates/js/translated/part.js:1812 templates/js/translated/part.js:3342 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1154,38 +1067,38 @@ msgstr "" msgid "Quantity" msgstr "" -#: build/models.py:1392 +#: build/models.py:1384 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1472 +#: build/models.py:1464 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1481 +#: build/models.py:1473 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1491 order/models.py:1918 +#: build/models.py:1483 order/models.py:1882 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1497 order/models.py:1921 +#: build/models.py:1489 order/models.py:1885 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1503 +#: build/models.py:1495 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1562 +#: build/models.py:1554 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 -#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 -#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: build/models.py:1626 build/serializers.py:846 order/serializers.py:1171 +#: order/serializers.py:1192 stock/models.py:358 stock/serializers.py:91 +#: stock/serializers.py:697 stock/serializers.py:1177 stock/serializers.py:1289 #: stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 @@ -1201,70 +1114,70 @@ msgstr "" msgid "Stock Item" msgstr "" -#: build/models.py:1635 +#: build/models.py:1627 msgid "Source stock item" msgstr "" -#: build/models.py:1648 +#: build/models.py:1640 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1656 +#: build/models.py:1648 msgid "Install into" msgstr "" -#: build/models.py:1657 +#: build/models.py:1649 msgid "Destination stock item" msgstr "" -#: build/serializers.py:157 build/serializers.py:876 +#: build/serializers.py:156 build/serializers.py:875 #: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "" -#: build/serializers.py:169 +#: build/serializers.py:168 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:173 +#: build/serializers.py:172 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:177 +#: build/serializers.py:176 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:188 +#: build/serializers.py:187 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:208 build/serializers.py:255 +#: build/serializers.py:207 build/serializers.py:254 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:276 +#: build/serializers.py:275 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:279 +#: build/serializers.py:278 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:294 order/serializers.py:589 order/serializers.py:1343 -#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:293 order/serializers.py:588 order/serializers.py:1331 +#: stock/serializers.py:614 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:295 +#: build/serializers.py:294 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 -#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 -#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 -#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 -#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 +#: build/serializers.py:299 build/serializers.py:440 build/serializers.py:512 +#: order/serializers.py:564 order/serializers.py:672 order/serializers.py:1656 +#: part/serializers.py:1140 stock/serializers.py:100 stock/serializers.py:625 +#: stock/serializers.py:785 stock/serializers.py:881 stock/serializers.py:1321 +#: stock/serializers.py:1577 stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:1001 #: templates/js/translated/build.js:2372 @@ -1280,54 +1193,54 @@ msgstr "" msgid "Location" msgstr "" -#: build/serializers.py:301 +#: build/serializers.py:300 msgid "Stock location for build output" msgstr "" -#: build/serializers.py:315 +#: build/serializers.py:314 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:316 +#: build/serializers.py:315 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:331 +#: build/serializers.py:330 msgid "Serial numbers must be provided for trackable parts" msgstr "" -#: build/serializers.py:356 stock/api.py:1031 +#: build/serializers.py:355 stock/api.py:1041 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:403 build/serializers.py:465 build/serializers.py:554 +#: build/serializers.py:402 build/serializers.py:464 build/serializers.py:553 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:442 +#: build/serializers.py:441 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:448 +#: build/serializers.py:447 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:449 +#: build/serializers.py:448 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:454 +#: build/serializers.py:453 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:514 +#: build/serializers.py:513 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:520 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:952 -#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 -#: stock/serializers.py:930 stock/serializers.py:1469 +#: build/serializers.py:519 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2044 order/serializers.py:596 stock/admin.py:164 +#: stock/serializers.py:932 stock/serializers.py:1465 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 @@ -1339,188 +1252,188 @@ msgstr "" msgid "Status" msgstr "" -#: build/serializers.py:526 +#: build/serializers.py:525 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:527 +#: build/serializers.py:526 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:611 msgid "Consume Allocated Stock" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:612 msgid "Consume any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:619 +#: build/serializers.py:618 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:620 +#: build/serializers.py:619 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:646 msgid "Not permitted" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:647 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:648 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:679 +#: build/serializers.py:678 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:681 +#: build/serializers.py:680 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:691 +#: build/serializers.py:690 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:696 +#: build/serializers.py:695 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:697 +#: build/serializers.py:696 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:707 templates/js/translated/build.js:315 +#: build/serializers.py:706 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:712 order/serializers.py:301 order/serializers.py:1246 +#: build/serializers.py:711 order/serializers.py:300 order/serializers.py:1234 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:713 +#: build/serializers.py:712 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:723 templates/js/translated/build.js:319 +#: build/serializers.py:722 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:732 templates/js/translated/build.js:303 +#: build/serializers.py:731 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:770 +#: build/serializers.py:769 msgid "Build Line" msgstr "" -#: build/serializers.py:780 +#: build/serializers.py:779 msgid "Build output" msgstr "" -#: build/serializers.py:788 +#: build/serializers.py:787 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:824 +#: build/serializers.py:823 msgid "Build Line Item" msgstr "" -#: build/serializers.py:838 +#: build/serializers.py:837 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:853 stock/serializers.py:1194 +#: build/serializers.py:852 stock/serializers.py:1190 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:901 order/serializers.py:1237 +#: build/serializers.py:900 order/serializers.py:1225 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:907 +#: build/serializers.py:906 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:914 +#: build/serializers.py:913 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:938 order/serializers.py:1489 +#: build/serializers.py:937 order/serializers.py:1477 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:1001 +#: build/serializers.py:1000 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:1009 +#: build/serializers.py:1008 msgid "Exclude Location" msgstr "" -#: build/serializers.py:1010 +#: build/serializers.py:1009 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:1015 +#: build/serializers.py:1014 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:1016 +#: build/serializers.py:1015 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:1021 +#: build/serializers.py:1020 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:1022 +#: build/serializers.py:1021 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:1027 +#: build/serializers.py:1026 msgid "Optional Items" msgstr "" -#: build/serializers.py:1028 +#: build/serializers.py:1027 msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1050 +#: build/serializers.py:1049 msgid "Failed to start auto-allocation task" msgstr "" -#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 -#: stock/api.py:794 +#: build/serializers.py:1139 part/models.py:3953 part/models.py:4387 +#: stock/api.py:804 msgid "BOM Item" msgstr "" -#: build/serializers.py:1149 templates/js/translated/index.js:130 +#: build/serializers.py:1148 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:832 part/serializers.py:1506 +#: build/serializers.py:1153 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:828 part/serializers.py:1502 #: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 -#: templates/js/translated/build.js:2613 templates/js/translated/part.js:709 -#: templates/js/translated/part.js:2148 +#: templates/js/translated/build.js:2613 templates/js/translated/part.js:710 +#: templates/js/translated/part.js:2149 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1159 part/serializers.py:1508 +#: build/serializers.py:1158 part/serializers.py:1504 #: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 +#: build/serializers.py:1163 part/bom.py:172 part/serializers.py:1527 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1929 msgid "Available Stock" @@ -1544,7 +1457,7 @@ msgstr "" #: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 #: order/status_codes.py:44 order/status_codes.py:69 #: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:165 report/models.py:443 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 msgid "Complete" msgstr "" @@ -1674,11 +1587,11 @@ msgstr "" #: build/templates/build/build_base.html:160 #: build/templates/build/detail.html:138 order/models.py:309 -#: order/models.py:1343 order/templates/order/order_base.html:186 +#: order/models.py:1307 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:196 #: report/templates/report/inventree_build_order_report.html:125 -#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1831 #: templates/js/translated/purchase_order.js:1739 #: templates/js/translated/purchase_order.js:2147 #: templates/js/translated/return_order.js:346 @@ -1711,8 +1624,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 -#: order/models.py:1587 order/models.py:1701 order/models.py:1855 +#: build/templates/build/detail.html:101 order/api.py:1463 order/models.py:845 +#: order/models.py:1551 order/models.py:1665 order/models.py:1819 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_report.html:135 @@ -1762,7 +1675,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1479 +#: build/templates/build/detail.html:49 order/models.py:1443 #: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "" @@ -1775,7 +1688,7 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:163 +#: build/templates/build/detail.html:80 stock/admin.py:162 #: stock/templates/stock/item_base.html:162 #: templates/js/translated/build.js:1380 #: templates/js/translated/model_renderers.js:241 @@ -1894,11 +1807,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:436 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -1914,6 +1827,34 @@ msgstr "" msgid "Incomplete Outputs" msgstr "" +#: common/api.py:689 +msgid "Is Link" +msgstr "" + +#: common/api.py:697 +msgid "Is File" +msgstr "" + +#: common/api.py:739 +msgid "User does not have permission to delete this attachment" +msgstr "" + +#: common/currency.py:130 +msgid "Invalid currency code" +msgstr "" + +#: common/currency.py:132 +msgid "Duplicate currency code" +msgstr "" + +#: common/currency.py:137 +msgid "No valid currency codes provided" +msgstr "" + +#: common/currency.py:154 +msgid "No plugin" +msgstr "" + #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1952,1507 +1893,1512 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:71 +#: common/models.py:73 msgid "Updated" msgstr "" -#: common/models.py:72 +#: common/models.py:74 msgid "Timestamp of last update" msgstr "" -#: common/models.py:105 +#: common/models.py:107 msgid "Site URL is locked by configuration" msgstr "" -#: common/models.py:130 +#: common/models.py:132 msgid "Unique project code" msgstr "" -#: common/models.py:137 +#: common/models.py:139 msgid "Project description" msgstr "" -#: common/models.py:146 +#: common/models.py:148 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:766 +#: common/models.py:765 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:770 +#: common/models.py:769 msgid "Settings value" msgstr "" -#: common/models.py:822 +#: common/models.py:821 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:838 +#: common/models.py:837 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:846 +#: common/models.py:845 msgid "Value must be an integer value" msgstr "" -#: common/models.py:883 +#: common/models.py:882 msgid "Key string must be unique" msgstr "" -#: common/models.py:1115 +#: common/models.py:1114 msgid "No group" msgstr "" -#: common/models.py:1158 -msgid "An empty domain is not allowed." -msgstr "" - -#: common/models.py:1160 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "" - -#: common/models.py:1172 -msgid "No plugin" -msgstr "" - -#: common/models.py:1260 +#: common/models.py:1213 msgid "Restart required" msgstr "" -#: common/models.py:1262 +#: common/models.py:1215 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1269 +#: common/models.py:1222 msgid "Pending migrations" msgstr "" -#: common/models.py:1270 +#: common/models.py:1223 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1275 +#: common/models.py:1228 msgid "Server Instance Name" msgstr "" -#: common/models.py:1277 +#: common/models.py:1230 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1281 +#: common/models.py:1234 msgid "Use instance name" msgstr "" -#: common/models.py:1282 +#: common/models.py:1235 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1287 +#: common/models.py:1240 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1288 +#: common/models.py:1241 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1293 company/models.py:108 company/models.py:109 +#: common/models.py:1246 company/models.py:111 company/models.py:112 msgid "Company name" msgstr "" -#: common/models.py:1294 +#: common/models.py:1247 msgid "Internal company name" msgstr "" -#: common/models.py:1298 +#: common/models.py:1251 msgid "Base URL" msgstr "" -#: common/models.py:1299 +#: common/models.py:1252 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1305 +#: common/models.py:1258 msgid "Default Currency" msgstr "" -#: common/models.py:1306 +#: common/models.py:1259 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1312 +#: common/models.py:1265 +msgid "Supported Currencies" +msgstr "" + +#: common/models.py:1266 +msgid "List of supported currency codes" +msgstr "" + +#: common/models.py:1272 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1314 +#: common/models.py:1274 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1317 common/models.py:1373 common/models.py:1386 -#: common/models.py:1394 common/models.py:1403 common/models.py:1412 -#: common/models.py:1620 common/models.py:1642 common/models.py:1757 -#: common/models.py:2076 +#: common/models.py:1277 common/models.py:1333 common/models.py:1346 +#: common/models.py:1354 common/models.py:1363 common/models.py:1372 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:2046 msgid "days" msgstr "" -#: common/models.py:1321 +#: common/models.py:1281 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1322 +#: common/models.py:1282 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1327 +#: common/models.py:1287 msgid "Download from URL" msgstr "" -#: common/models.py:1329 +#: common/models.py:1289 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1335 +#: common/models.py:1295 msgid "Download Size Limit" msgstr "" -#: common/models.py:1336 +#: common/models.py:1296 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1342 +#: common/models.py:1302 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1344 +#: common/models.py:1304 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:1349 +#: common/models.py:1309 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1350 +#: common/models.py:1310 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1355 +#: common/models.py:1315 msgid "Require confirm" msgstr "" -#: common/models.py:1356 +#: common/models.py:1316 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1361 +#: common/models.py:1321 msgid "Tree Depth" msgstr "" -#: common/models.py:1363 +#: common/models.py:1323 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1369 +#: common/models.py:1329 msgid "Update Check Interval" msgstr "" -#: common/models.py:1370 +#: common/models.py:1330 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1376 +#: common/models.py:1336 msgid "Automatic Backup" msgstr "" -#: common/models.py:1377 +#: common/models.py:1337 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1382 +#: common/models.py:1342 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1383 +#: common/models.py:1343 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1389 +#: common/models.py:1349 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1391 +#: common/models.py:1351 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1398 +#: common/models.py:1358 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1400 +#: common/models.py:1360 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1407 +#: common/models.py:1367 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1409 +#: common/models.py:1369 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1416 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1376 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1417 +#: common/models.py:1377 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1422 +#: common/models.py:1382 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1423 +#: common/models.py:1383 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1429 +#: common/models.py:1389 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1430 +#: common/models.py:1390 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1435 +#: common/models.py:1395 msgid "Part Revisions" msgstr "" -#: common/models.py:1436 +#: common/models.py:1396 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1441 +#: common/models.py:1401 msgid "Allow Deletion from Assembly" msgstr "" -#: common/models.py:1442 +#: common/models.py:1402 msgid "Allow deletion of parts which are used in an assembly" msgstr "" -#: common/models.py:1447 +#: common/models.py:1407 msgid "IPN Regex" msgstr "" -#: common/models.py:1448 +#: common/models.py:1408 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1451 +#: common/models.py:1411 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1452 +#: common/models.py:1412 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1457 +#: common/models.py:1417 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1458 +#: common/models.py:1418 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1463 +#: common/models.py:1423 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1464 +#: common/models.py:1424 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1469 +#: common/models.py:1429 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1470 +#: common/models.py:1430 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1475 +#: common/models.py:1435 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1476 +#: common/models.py:1436 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1481 +#: common/models.py:1441 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1482 +#: common/models.py:1442 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1487 part/admin.py:108 part/models.py:3815 -#: report/models.py:293 report/models.py:360 report/serializers.py:90 -#: report/serializers.py:131 stock/serializers.py:228 +#: common/models.py:1447 part/admin.py:108 part/models.py:3795 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:227 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1488 +#: common/models.py:1448 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 +#: common/models.py:1453 part/admin.py:91 part/admin.py:425 part/models.py:1052 #: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" msgstr "" -#: common/models.py:1494 +#: common/models.py:1454 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1499 part/admin.py:95 part/models.py:1065 +#: common/models.py:1459 part/admin.py:95 part/models.py:1058 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1500 +#: common/models.py:1460 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1505 part/admin.py:100 part/models.py:1077 +#: common/models.py:1465 part/admin.py:100 part/models.py:1070 msgid "Purchaseable" msgstr "" -#: common/models.py:1506 +#: common/models.py:1466 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1511 part/admin.py:104 part/models.py:1083 +#: common/models.py:1471 part/admin.py:104 part/models.py:1076 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1512 +#: common/models.py:1472 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1517 part/admin.py:113 part/models.py:1071 +#: common/models.py:1477 part/admin.py:113 part/models.py:1064 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" msgstr "" -#: common/models.py:1518 +#: common/models.py:1478 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1523 part/admin.py:117 part/models.py:1093 +#: common/models.py:1483 part/admin.py:117 part/models.py:1086 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" msgstr "" -#: common/models.py:1524 +#: common/models.py:1484 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1529 +#: common/models.py:1489 msgid "Show Import in Views" msgstr "" -#: common/models.py:1530 +#: common/models.py:1490 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1535 +#: common/models.py:1495 msgid "Show related parts" msgstr "" -#: common/models.py:1536 +#: common/models.py:1496 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1541 +#: common/models.py:1501 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1542 +#: common/models.py:1502 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1547 templates/js/translated/part.js:107 +#: common/models.py:1507 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1549 +#: common/models.py:1509 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1555 +#: common/models.py:1515 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1556 +#: common/models.py:1516 msgid "Format to display the part name" msgstr "" -#: common/models.py:1562 +#: common/models.py:1522 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1563 +#: common/models.py:1523 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1567 +#: common/models.py:1527 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1569 +#: common/models.py:1529 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1575 +#: common/models.py:1535 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1577 +#: common/models.py:1537 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1583 +#: common/models.py:1548 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1585 +#: common/models.py:1550 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1591 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1593 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1599 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1601 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1607 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1609 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1615 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1617 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1630 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1632 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1638 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1640 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1647 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1648 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1653 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1655 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1661 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1662 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1667 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1669 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1675 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1676 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1681 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1682 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1687 +#: common/models.py:1657 msgid "Log Report Errors" msgstr "" -#: common/models.py:1688 +#: common/models.py:1658 msgid "Log errors which occur when generating reports" msgstr "" -#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:301 +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:302 msgid "Page Size" msgstr "" -#: common/models.py:1694 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1699 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1700 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1705 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1707 +#: common/models.py:1677 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1713 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1714 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1719 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1720 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1725 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1727 +#: common/models.py:1697 msgid "Determines default behavior when a stock item is depleted" msgstr "" -#: common/models.py:1733 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1735 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1740 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1741 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1746 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1747 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1752 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1754 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1761 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1762 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1767 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1768 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1773 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1774 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1778 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1779 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1784 +#: common/models.py:1754 msgid "Check BOM when installing items" msgstr "" -#: common/models.py:1786 +#: common/models.py:1756 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "" -#: common/models.py:1792 +#: common/models.py:1762 msgid "Allow Out of Stock Transfer" msgstr "" -#: common/models.py:1794 +#: common/models.py:1764 msgid "Allow stock items which are not in stock to be transferred between stock locations" msgstr "" -#: common/models.py:1800 +#: common/models.py:1770 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1802 +#: common/models.py:1772 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1808 common/models.py:1836 common/models.py:1858 -#: common/models.py:1894 +#: common/models.py:1778 common/models.py:1806 common/models.py:1828 +#: common/models.py:1864 msgid "Require Responsible Owner" msgstr "" -#: common/models.py:1809 common/models.py:1837 common/models.py:1859 -#: common/models.py:1895 +#: common/models.py:1779 common/models.py:1807 common/models.py:1829 +#: common/models.py:1865 msgid "A responsible owner must be assigned to each order" msgstr "" -#: common/models.py:1814 +#: common/models.py:1784 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1816 +#: common/models.py:1786 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:1822 +#: common/models.py:1792 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1823 +#: common/models.py:1793 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1828 +#: common/models.py:1798 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1830 +#: common/models.py:1800 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1842 +#: common/models.py:1812 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1844 +#: common/models.py:1814 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1850 +#: common/models.py:1820 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1852 +#: common/models.py:1822 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1864 +#: common/models.py:1834 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1865 +#: common/models.py:1835 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1870 +#: common/models.py:1840 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1872 +#: common/models.py:1842 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1878 +#: common/models.py:1848 msgid "Mark Shipped Orders as Complete" msgstr "" -#: common/models.py:1880 +#: common/models.py:1850 msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" msgstr "" -#: common/models.py:1886 +#: common/models.py:1856 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1888 +#: common/models.py:1858 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1900 +#: common/models.py:1870 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1902 +#: common/models.py:1872 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1908 +#: common/models.py:1878 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1910 +#: common/models.py:1880 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1917 +#: common/models.py:1887 msgid "Enable password forgot" msgstr "" -#: common/models.py:1918 +#: common/models.py:1888 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1923 +#: common/models.py:1893 msgid "Enable registration" msgstr "" -#: common/models.py:1924 +#: common/models.py:1894 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1929 +#: common/models.py:1899 msgid "Enable SSO" msgstr "" -#: common/models.py:1930 +#: common/models.py:1900 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1935 +#: common/models.py:1905 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1937 +#: common/models.py:1907 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1943 +#: common/models.py:1913 msgid "Email required" msgstr "" -#: common/models.py:1944 +#: common/models.py:1914 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1949 +#: common/models.py:1919 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1951 +#: common/models.py:1921 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1957 +#: common/models.py:1927 msgid "Mail twice" msgstr "" -#: common/models.py:1958 +#: common/models.py:1928 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1963 +#: common/models.py:1933 msgid "Password twice" msgstr "" -#: common/models.py:1964 +#: common/models.py:1934 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1969 +#: common/models.py:1939 msgid "Allowed domains" msgstr "" -#: common/models.py:1971 +#: common/models.py:1941 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1977 +#: common/models.py:1947 msgid "Group on signup" msgstr "" -#: common/models.py:1978 +#: common/models.py:1948 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1983 +#: common/models.py:1953 msgid "Enforce MFA" msgstr "" -#: common/models.py:1984 +#: common/models.py:1954 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1989 +#: common/models.py:1959 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1991 +#: common/models.py:1961 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1999 +#: common/models.py:1969 msgid "Check for plugin updates" msgstr "" -#: common/models.py:2000 +#: common/models.py:1970 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:2006 +#: common/models.py:1976 msgid "Enable URL integration" msgstr "" -#: common/models.py:2007 +#: common/models.py:1977 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:2013 +#: common/models.py:1983 msgid "Enable navigation integration" msgstr "" -#: common/models.py:2014 +#: common/models.py:1984 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:2020 +#: common/models.py:1990 msgid "Enable app integration" msgstr "" -#: common/models.py:2021 +#: common/models.py:1991 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:2027 +#: common/models.py:1997 msgid "Enable schedule integration" msgstr "" -#: common/models.py:2028 +#: common/models.py:1998 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:2034 +#: common/models.py:2004 msgid "Enable event integration" msgstr "" -#: common/models.py:2035 +#: common/models.py:2005 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:2041 +#: common/models.py:2011 msgid "Enable project codes" msgstr "" -#: common/models.py:2042 +#: common/models.py:2012 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:2047 +#: common/models.py:2017 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:2049 +#: common/models.py:2019 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:2055 +#: common/models.py:2025 msgid "Exclude External Locations" msgstr "" -#: common/models.py:2057 +#: common/models.py:2027 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:2063 +#: common/models.py:2033 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:2065 +#: common/models.py:2035 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:2071 +#: common/models.py:2041 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:2073 +#: common/models.py:2043 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:2080 +#: common/models.py:2050 msgid "Display Users full names" msgstr "" -#: common/models.py:2081 +#: common/models.py:2051 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:2086 +#: common/models.py:2056 msgid "Enable Test Station Data" msgstr "" -#: common/models.py:2087 +#: common/models.py:2057 msgid "Enable test station data collection for test results" msgstr "" -#: common/models.py:2099 common/models.py:2509 +#: common/models.py:2069 common/models.py:2479 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2142 +#: common/models.py:2112 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2144 +#: common/models.py:2114 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2150 +#: common/models.py:2120 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2151 +#: common/models.py:2121 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2156 +#: common/models.py:2126 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2157 +#: common/models.py:2127 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2162 +#: common/models.py:2132 msgid "Show latest parts" msgstr "" -#: common/models.py:2163 +#: common/models.py:2133 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2168 +#: common/models.py:2138 msgid "Show invalid BOMs" msgstr "" -#: common/models.py:2169 +#: common/models.py:2139 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2174 +#: common/models.py:2144 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2175 +#: common/models.py:2145 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2180 +#: common/models.py:2150 msgid "Show low stock" msgstr "" -#: common/models.py:2181 +#: common/models.py:2151 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2186 +#: common/models.py:2156 msgid "Show depleted stock" msgstr "" -#: common/models.py:2187 +#: common/models.py:2157 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2192 +#: common/models.py:2162 msgid "Show needed stock" msgstr "" -#: common/models.py:2193 +#: common/models.py:2163 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2198 +#: common/models.py:2168 msgid "Show expired stock" msgstr "" -#: common/models.py:2199 +#: common/models.py:2169 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2204 +#: common/models.py:2174 msgid "Show stale stock" msgstr "" -#: common/models.py:2205 +#: common/models.py:2175 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2210 +#: common/models.py:2180 msgid "Show pending builds" msgstr "" -#: common/models.py:2211 +#: common/models.py:2181 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2216 +#: common/models.py:2186 msgid "Show overdue builds" msgstr "" -#: common/models.py:2217 +#: common/models.py:2187 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2222 +#: common/models.py:2192 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2223 +#: common/models.py:2193 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2228 +#: common/models.py:2198 msgid "Show overdue POs" msgstr "" -#: common/models.py:2229 +#: common/models.py:2199 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2234 +#: common/models.py:2204 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2235 +#: common/models.py:2205 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2240 +#: common/models.py:2210 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2241 +#: common/models.py:2211 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2246 +#: common/models.py:2216 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2247 +#: common/models.py:2217 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2252 +#: common/models.py:2222 msgid "Show News" msgstr "" -#: common/models.py:2253 +#: common/models.py:2223 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2258 +#: common/models.py:2228 msgid "Inline label display" msgstr "" -#: common/models.py:2260 +#: common/models.py:2230 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2266 +#: common/models.py:2236 msgid "Default label printer" msgstr "" -#: common/models.py:2268 +#: common/models.py:2238 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2274 +#: common/models.py:2244 msgid "Inline report display" msgstr "" -#: common/models.py:2276 +#: common/models.py:2246 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2282 +#: common/models.py:2252 msgid "Search Parts" msgstr "" -#: common/models.py:2283 +#: common/models.py:2253 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2288 +#: common/models.py:2258 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2289 +#: common/models.py:2259 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2294 +#: common/models.py:2264 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2295 +#: common/models.py:2265 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2300 +#: common/models.py:2270 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2301 +#: common/models.py:2271 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2306 +#: common/models.py:2276 msgid "Search Categories" msgstr "" -#: common/models.py:2307 +#: common/models.py:2277 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2312 +#: common/models.py:2282 msgid "Search Stock" msgstr "" -#: common/models.py:2313 +#: common/models.py:2283 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2318 +#: common/models.py:2288 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2320 +#: common/models.py:2290 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2326 +#: common/models.py:2296 msgid "Search Locations" msgstr "" -#: common/models.py:2327 +#: common/models.py:2297 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2332 +#: common/models.py:2302 msgid "Search Companies" msgstr "" -#: common/models.py:2333 +#: common/models.py:2303 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2338 +#: common/models.py:2308 msgid "Search Build Orders" msgstr "" -#: common/models.py:2339 +#: common/models.py:2309 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2344 +#: common/models.py:2314 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2345 +#: common/models.py:2315 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2350 +#: common/models.py:2320 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2352 +#: common/models.py:2322 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2358 +#: common/models.py:2328 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2359 +#: common/models.py:2329 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2364 +#: common/models.py:2334 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2366 +#: common/models.py:2336 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2372 +#: common/models.py:2342 msgid "Search Return Orders" msgstr "" -#: common/models.py:2373 +#: common/models.py:2343 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2378 +#: common/models.py:2348 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2380 +#: common/models.py:2350 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2386 +#: common/models.py:2356 msgid "Search Preview Results" msgstr "" -#: common/models.py:2388 +#: common/models.py:2358 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2394 +#: common/models.py:2364 msgid "Regex Search" msgstr "" -#: common/models.py:2395 +#: common/models.py:2365 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2400 +#: common/models.py:2370 msgid "Whole Word Search" msgstr "" -#: common/models.py:2401 +#: common/models.py:2371 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2406 +#: common/models.py:2376 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2407 +#: common/models.py:2377 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2412 +#: common/models.py:2382 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2413 +#: common/models.py:2383 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2418 +#: common/models.py:2388 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2419 +#: common/models.py:2389 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2424 +#: common/models.py:2394 msgid "Date Format" msgstr "" -#: common/models.py:2425 +#: common/models.py:2395 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2438 part/templates/part/detail.html:41 +#: common/models.py:2408 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2439 +#: common/models.py:2409 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2444 part/templates/part/detail.html:62 +#: common/models.py:2414 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2446 +#: common/models.py:2416 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2452 +#: common/models.py:2422 msgid "Table String Length" msgstr "" -#: common/models.py:2454 +#: common/models.py:2424 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2460 +#: common/models.py:2430 msgid "Default part label template" msgstr "" -#: common/models.py:2461 +#: common/models.py:2431 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2466 +#: common/models.py:2436 msgid "Default stock item template" msgstr "" -#: common/models.py:2468 +#: common/models.py:2438 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2474 +#: common/models.py:2444 msgid "Default stock location label template" msgstr "" -#: common/models.py:2476 +#: common/models.py:2446 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2482 +#: common/models.py:2452 msgid "Default build line label template" msgstr "" -#: common/models.py:2484 +#: common/models.py:2454 msgid "The build line label template to be automatically selected" msgstr "" -#: common/models.py:2490 +#: common/models.py:2460 msgid "Receive error reports" msgstr "" -#: common/models.py:2491 +#: common/models.py:2461 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2496 +#: common/models.py:2466 msgid "Last used printing machines" msgstr "" -#: common/models.py:2497 +#: common/models.py:2467 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2540 +#: common/models.py:2487 common/models.py:2488 common/models.py:2636 +#: common/models.py:2637 common/models.py:2882 common/models.py:2883 +#: common/models.py:3193 common/models.py:3194 part/models.py:3193 +#: part/models.py:3280 part/models.py:3353 part/models.py:3381 +#: plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "" + +#: common/models.py:2510 msgid "Price break quantity" msgstr "" -#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1382 order/models.py:2301 -#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 +#: common/models.py:2517 company/serializers.py:472 order/admin.py:42 +#: order/models.py:1346 order/models.py:2265 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1886 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:740 msgid "Price" msgstr "" -#: common/models.py:2548 +#: common/models.py:2518 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2719 common/models.py:2904 +#: common/models.py:2613 common/models.py:2798 msgid "Endpoint" msgstr "" -#: common/models.py:2720 +#: common/models.py:2614 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2730 +#: common/models.py:2624 msgid "Name for this webhook" msgstr "" -#: common/models.py:2734 company/models.py:160 company/models.py:814 -#: machine/models.py:39 part/admin.py:88 part/models.py:1088 -#: plugin/models.py:65 templates/js/translated/company.js:523 +#: common/models.py:2628 company/models.py:163 company/models.py:782 +#: machine/models.py:39 part/admin.py:88 part/models.py:1081 +#: plugin/models.py:66 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3462,101 +3408,118 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2734 +#: common/models.py:2628 msgid "Is this webhook active" msgstr "" -#: common/models.py:2750 users/models.py:159 +#: common/models.py:2644 users/models.py:159 msgid "Token" msgstr "" -#: common/models.py:2751 +#: common/models.py:2645 msgid "Token for access" msgstr "" -#: common/models.py:2759 +#: common/models.py:2653 msgid "Secret" msgstr "" -#: common/models.py:2760 +#: common/models.py:2654 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2868 +#: common/models.py:2762 msgid "Message ID" msgstr "" -#: common/models.py:2869 +#: common/models.py:2763 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2877 +#: common/models.py:2771 msgid "Host" msgstr "" -#: common/models.py:2878 +#: common/models.py:2772 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2886 +#: common/models.py:2780 msgid "Header" msgstr "" -#: common/models.py:2887 +#: common/models.py:2781 msgid "Header of this message" msgstr "" -#: common/models.py:2894 +#: common/models.py:2788 msgid "Body" msgstr "" -#: common/models.py:2895 +#: common/models.py:2789 msgid "Body of this message" msgstr "" -#: common/models.py:2905 +#: common/models.py:2799 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2910 +#: common/models.py:2804 msgid "Worked on" msgstr "" -#: common/models.py:2911 +#: common/models.py:2805 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:3037 +#: common/models.py:2931 msgid "Id" msgstr "" -#: common/models.py:3039 templates/js/translated/company.js:965 +#: common/models.py:2933 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:3043 templates/js/translated/news.js:60 +#: common/models.py:2935 common/models.py:3177 company/models.py:149 +#: company/models.py:440 company/models.py:500 company/models.py:799 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +#: part/admin.py:55 part/models.py:955 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "" + +#: common/models.py:2937 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:3045 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2939 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:3047 templates/js/translated/news.js:52 +#: common/models.py:2941 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Read" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Was this news item read?" msgstr "" -#: common/models.py:3067 company/models.py:156 part/models.py:972 +#: common/models.py:2961 company/models.py:159 part/models.py:965 #: 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.html:35 @@ -3566,34 +3529,89 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:3067 +#: common/models.py:2961 msgid "Image file" msgstr "" -#: common/models.py:3109 +#: common/models.py:2973 common/models.py:3161 +msgid "Target model type for this image" +msgstr "" + +#: common/models.py:2977 +msgid "Target model ID for this image" +msgstr "" + +#: common/models.py:3018 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3128 +#: common/models.py:3037 msgid "Unit name" msgstr "" -#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3044 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3136 +#: common/models.py:3045 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3052 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3144 +#: common/models.py:3053 msgid "Unit definition" msgstr "" +#: common/models.py:3111 common/models.py:3168 stock/models.py:2426 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "" + +#: common/models.py:3123 +msgid "Missing file" +msgstr "" + +#: common/models.py:3124 +msgid "Missing external link" +msgstr "" + +#: common/models.py:3169 +msgid "Select file to attach" +msgstr "" + +#: common/models.py:3184 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "" + +#: common/models.py:3185 +msgid "Attachment comment" +msgstr "" + +#: common/models.py:3201 +msgid "Upload date" +msgstr "" + +#: common/models.py:3202 +msgid "Date the file was uploaded" +msgstr "" + +#: common/models.py:3206 +msgid "File size" +msgstr "" + +#: common/models.py:3206 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3244 common/serializers.py:553 +msgid "Invalid model type specified for attachment" +msgstr "" + #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" @@ -3628,66 +3646,103 @@ msgstr "" msgid "Error raised by plugin" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:371 msgid "Is Running" msgstr "" -#: common/serializers.py:372 +#: common/serializers.py:377 msgid "Pending Tasks" msgstr "" -#: common/serializers.py:378 +#: common/serializers.py:383 msgid "Scheduled Tasks" msgstr "" -#: common/serializers.py:384 +#: common/serializers.py:389 msgid "Failed Tasks" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Task ID" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Unique task ID" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock time" msgstr "" -#: common/serializers.py:403 +#: common/serializers.py:408 msgid "Task name" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function name" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Arguments" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Task arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Keyword Arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Task keyword arguments" msgstr "" +#: common/serializers.py:525 +msgid "Filename" +msgstr "" + +#: common/serializers.py:532 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: common/serializers.py:559 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "" + +#: common/validators.py:33 +msgid "No attachment model type provided" +msgstr "" + +#: common/validators.py:39 +msgid "Invalid attachment model type" +msgstr "" + +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "" + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +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 @@ -3726,210 +3781,222 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/api.py:164 +#: company/api.py:144 msgid "Part is Active" msgstr "" -#: company/api.py:168 +#: company/api.py:148 msgid "Manufacturer is Active" msgstr "" -#: company/api.py:317 +#: company/api.py:281 msgid "Supplier Part is Active" msgstr "" -#: company/api.py:321 +#: company/api.py:285 msgid "Internal Part is Active" msgstr "" -#: company/api.py:325 +#: company/api.py:289 msgid "Supplier is Active" msgstr "" -#: company/models.py:114 +#: company/models.py:100 company/models.py:365 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:822 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "" + +#: company/models.py:117 msgid "Company description" msgstr "" -#: company/models.py:115 +#: company/models.py:118 msgid "Description of the company" msgstr "" -#: company/models.py:120 company/templates/company/company_base.html:106 +#: company/models.py:123 company/templates/company/company_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:532 msgid "Website" msgstr "" -#: company/models.py:120 +#: company/models.py:123 msgid "Company website URL" msgstr "" -#: company/models.py:125 +#: company/models.py:128 msgid "Phone number" msgstr "" -#: company/models.py:127 +#: company/models.py:130 msgid "Contact phone number" msgstr "" -#: company/models.py:134 +#: company/models.py:137 msgid "Contact email address" msgstr "" -#: company/models.py:139 company/templates/company/company_base.html:145 +#: company/models.py:142 company/templates/company/company_base.html:145 #: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "" -#: company/models.py:141 +#: company/models.py:144 msgid "Point of contact" msgstr "" -#: company/models.py:147 +#: company/models.py:150 msgid "Link to external company information" msgstr "" -#: company/models.py:160 +#: company/models.py:163 msgid "Is this company active?" msgstr "" -#: company/models.py:165 +#: company/models.py:168 msgid "is customer" msgstr "" -#: company/models.py:166 +#: company/models.py:169 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:171 +#: company/models.py:174 msgid "is supplier" msgstr "" -#: company/models.py:172 +#: company/models.py:175 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:177 +#: company/models.py:180 msgid "is manufacturer" msgstr "" -#: company/models.py:178 +#: company/models.py:181 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:186 +#: company/models.py:189 msgid "Default currency used for this company" msgstr "" -#: company/models.py:273 company/models.py:382 -#: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:812 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 -msgid "Company" -msgstr "" - -#: company/models.py:383 +#: company/models.py:366 msgid "Select company" msgstr "" -#: company/models.py:388 +#: company/models.py:371 msgid "Address title" msgstr "" -#: company/models.py:389 +#: company/models.py:372 msgid "Title describing the address entry" msgstr "" -#: company/models.py:395 +#: company/models.py:378 msgid "Primary address" msgstr "" -#: company/models.py:396 +#: company/models.py:379 msgid "Set as primary address" msgstr "" -#: company/models.py:401 templates/js/translated/company.js:914 +#: company/models.py:384 templates/js/translated/company.js:914 #: templates/js/translated/company.js:971 msgid "Line 1" msgstr "" -#: company/models.py:402 +#: company/models.py:385 msgid "Address line 1" msgstr "" -#: company/models.py:408 templates/js/translated/company.js:915 +#: company/models.py:391 templates/js/translated/company.js:915 #: templates/js/translated/company.js:977 msgid "Line 2" msgstr "" -#: company/models.py:409 +#: company/models.py:392 msgid "Address line 2" msgstr "" -#: company/models.py:415 company/models.py:416 +#: company/models.py:398 company/models.py:399 #: templates/js/translated/company.js:983 msgid "Postal code" msgstr "" -#: company/models.py:422 +#: company/models.py:405 msgid "City/Region" msgstr "" -#: company/models.py:423 +#: company/models.py:406 msgid "Postal code city/region" msgstr "" -#: company/models.py:429 +#: company/models.py:412 msgid "State/Province" msgstr "" -#: company/models.py:430 +#: company/models.py:413 msgid "State or province" msgstr "" -#: company/models.py:436 templates/js/translated/company.js:1001 +#: company/models.py:419 templates/js/translated/company.js:1001 msgid "Country" msgstr "" -#: company/models.py:437 +#: company/models.py:420 msgid "Address country" msgstr "" -#: company/models.py:443 +#: company/models.py:426 msgid "Courier shipping notes" msgstr "" -#: company/models.py:444 +#: company/models.py:427 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:450 +#: company/models.py:433 msgid "Internal shipping notes" msgstr "" -#: company/models.py:451 +#: company/models.py:434 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:458 +#: company/models.py:441 msgid "Link to address information (external)" msgstr "" -#: company/models.py:489 company/models.py:792 stock/models.py:768 -#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 +#: company/models.py:463 company/models.py:574 company/models.py:792 +#: 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:475 company/models.py:760 stock/models.py:766 +#: stock/serializers.py:422 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:491 company/models.py:794 +#: company/models.py:477 company/models.py:762 msgid "Select part" msgstr "" -#: company/models.py:500 company/templates/company/company_base.html:82 +#: company/models.py:486 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:530 +#: company/templates/company/supplier_part.html:145 part/serializers.py:525 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -3939,152 +4006,154 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:501 +#: company/models.py:487 msgid "Select manufacturer" msgstr "" -#: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:540 +#: company/models.py:493 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:535 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 -#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1801 #: templates/js/translated/purchase_order.js:1851 #: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "" -#: company/models.py:508 +#: company/models.py:494 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:515 +#: company/models.py:501 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:524 +#: company/models.py:510 msgid "Manufacturer part description" msgstr "" -#: company/models.py:581 company/models.py:608 company/models.py:824 -#: 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:615 +#: company/models.py:581 msgid "Parameter name" msgstr "" -#: company/models.py:621 report/templates/report/inventree_test_report.html:104 -#: stock/models.py:2429 templates/js/translated/company.js:1166 -#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 +#: company/models.py:587 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2418 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1493 #: templates/js/translated/stock.js:1522 msgid "Value" msgstr "" -#: company/models.py:622 +#: company/models.py:588 msgid "Parameter value" msgstr "" -#: company/models.py:629 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1052 part/models.py:3666 +#: company/models.py:595 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1045 part/models.py:3646 #: part/templates/part/part_base.html:284 -#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1512 +#: templates/js/translated/part.js:1616 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:630 +#: company/models.py:596 msgid "Parameter units" msgstr "" -#: company/models.py:732 +#: company/models.py:648 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:777 stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "" + +#: company/models.py:700 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:739 +#: company/models.py:707 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:753 +#: company/models.py:721 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/models.py:770 company/templates/company/company_base.html:87 #: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:514 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:509 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:511 -#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1769 #: templates/js/translated/pricing.js:498 #: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "" -#: company/models.py:803 +#: company/models.py:771 msgid "Select supplier" msgstr "" -#: company/models.py:809 part/serializers.py:525 +#: company/models.py:777 part/serializers.py:520 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:815 +#: company/models.py:783 msgid "Is this supplier part active?" msgstr "" -#: company/models.py:825 +#: company/models.py:793 msgid "Select manufacturer part" msgstr "" -#: company/models.py:832 +#: company/models.py:800 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:841 +#: company/models.py:809 msgid "Supplier part description" msgstr "" -#: company/models.py:848 company/templates/company/supplier_part.html:187 -#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 +#: company/models.py:816 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4093 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_purchase_order_report.html:32 #: report/templates/report/inventree_return_order_report.html:27 #: report/templates/report/inventree_sales_order_report.html:32 #: report/templates/report/inventree_stock_location_report.html:105 -#: stock/serializers.py:708 +#: stock/serializers.py:710 msgid "Note" msgstr "" -#: company/models.py:857 part/models.py:2010 +#: company/models.py:825 part/models.py:2003 msgid "base cost" msgstr "" -#: company/models.py:858 part/models.py:2011 +#: company/models.py:826 part/models.py:2004 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:865 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 +#: company/models.py:833 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:797 stock/serializers.py:1475 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 #: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "" -#: company/models.py:866 +#: company/models.py:834 msgid "Part packaging" msgstr "" -#: company/models.py:871 templates/js/translated/company.js:1651 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: company/models.py:839 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:311 #: templates/js/translated/purchase_order.js:841 #: templates/js/translated/purchase_order.js:1103 @@ -4093,35 +4162,35 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:873 +#: company/models.py:841 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:892 part/models.py:2017 +#: company/models.py:860 part/models.py:2010 msgid "multiple" msgstr "" -#: company/models.py:893 +#: company/models.py:861 msgid "Order multiple" msgstr "" -#: company/models.py:905 +#: company/models.py:873 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:911 +#: company/models.py:879 msgid "Availability Updated" msgstr "" -#: company/models.py:912 +#: company/models.py:880 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:163 +#: company/serializers.py:161 msgid "Default currency used for this supplier" msgstr "" -#: company/serializers.py:381 part/admin.py:126 +#: company/serializers.py:357 part/admin.py:126 #: part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1689 #: templates/js/translated/table_filters.js:355 @@ -4133,7 +4202,7 @@ msgstr "" #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 #: templates/js/translated/model_renderers.js:312 -#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +#: templates/js/translated/part.js:815 templates/js/translated/part.js:1219 msgid "Inactive" msgstr "" @@ -4172,7 +4241,7 @@ msgstr "" #: report/templates/report/inventree_purchase_order_report.html:40 #: report/templates/report/inventree_sales_order_report.html:40 #: report/templates/report/inventree_test_report.html:84 -#: report/templates/report/inventree_test_report.html:163 +#: report/templates/report/inventree_test_report.html:162 msgid "Part image" msgstr "" @@ -4191,10 +4260,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:92 order/models.py:940 -#: order/models.py:2068 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:148 stock/models.py:821 -#: stock/models.py:822 stock/serializers.py:1229 +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2032 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:819 +#: stock/models.py:820 stock/serializers.py:1225 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 @@ -4405,7 +4474,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:836 +#: part/admin.py:122 part/serializers.py:832 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4425,8 +4494,8 @@ msgstr "" msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:206 -#: templates/js/translated/part.js:1422 +#: company/templates/company/manufacturer_part.html:196 +#: templates/js/translated/part.js:1423 msgid "Add Parameter" msgstr "" @@ -4454,15 +4523,6 @@ msgstr "" msgid "Addresses" msgstr "" -#: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:452 -#: stock/models.py:779 stock/templates/stock/item_base.html:233 -#: templates/js/translated/company.js:1600 -#: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2280 -msgid "Supplier Part" -msgstr "" - #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1526 msgid "Supplier part actions" @@ -4505,8 +4565,8 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:524 -#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: part/bom.py:311 part/serializers.py:519 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1787 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1850 #: templates/js/translated/purchase_order.js:2028 @@ -4518,12 +4578,12 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:207 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" @@ -4555,15 +4615,15 @@ msgid "Update Part Availability" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:835 part/stocktake.py:223 +#: part/serializers.py:831 part/stocktake.py:224 #: part/templates/part/category.html:183 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:916 stock/serializers.py:1080 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:918 stock/serializers.py:1091 #: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:191 #: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1061 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:206 msgid "Stock Items" @@ -4590,10 +4650,6 @@ msgstr "" 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 "" @@ -4614,7 +4670,7 @@ msgstr "" msgid "Connected" msgstr "" -#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: machine/machine_types/label_printer.py:235 order/api.py:1467 #: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "" @@ -4703,7 +4759,7 @@ msgstr "" msgid "Config type" msgstr "" -#: order/admin.py:30 order/models.py:89 +#: order/admin.py:30 order/models.py:90 #: report/templates/report/inventree_purchase_order_report.html:31 #: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 @@ -4712,30 +4768,30 @@ msgstr "" msgid "Total Price" msgstr "" -#: order/api.py:161 order/serializers.py:91 +#: order/api.py:157 order/serializers.py:90 #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "" -#: order/api.py:165 templates/js/translated/table_filters.js:194 +#: order/api.py:161 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "" -#: order/api.py:240 +#: order/api.py:236 msgid "No matching purchase order found" msgstr "" -#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 -#: order/models.py:1586 order/models.py:1700 order/models.py:1854 -#: order/models.py:2267 order/models.py:2318 +#: order/api.py:435 order/api.py:801 order/models.py:1395 order/models.py:1504 +#: order/models.py:1550 order/models.py:1664 order/models.py:1818 +#: order/models.py:2231 order/models.py:2282 #: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "" -#: order/api.py:441 order/api.py:838 +#: order/api.py:439 order/api.py:822 msgid "Order Complete" msgstr "" @@ -4743,13 +4799,13 @@ msgstr "" msgid "Order Pending" msgstr "" -#: order/api.py:1509 order/models.py:380 order/models.py:1432 -#: order/models.py:1541 order/templates/order/order_base.html:9 +#: order/api.py:1461 order/models.py:380 order/models.py:1396 +#: order/models.py:1505 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_purchase_order_report.html:14 -#: stock/serializers.py:119 stock/templates/stock/item_base.html:176 +#: stock/serializers.py:118 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/part.js:1746 templates/js/translated/pricing.js:804 #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1673 @@ -4757,8 +4813,8 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1513 order/models.py:2017 order/models.py:2268 -#: order/models.py:2319 order/templates/order/return_order_base.html:9 +#: order/api.py:1465 order/models.py:1981 order/models.py:2232 +#: order/models.py:2283 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report.html:13 #: templates/js/translated/return_order.js:280 @@ -4766,15 +4822,15 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/models.py:90 +#: order/models.py:91 msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:71 +#: order/models.py:96 order/serializers.py:70 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:72 +#: order/models.py:99 order/serializers.py:71 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -4790,7 +4846,7 @@ msgstr "" msgid "Select project code for this order" msgstr "" -#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 msgid "Link to external page" msgstr "" @@ -4814,11 +4870,11 @@ msgstr "" msgid "Company address for this order" msgstr "" -#: order/models.py:464 order/models.py:929 +#: order/models.py:464 order/models.py:927 msgid "Order reference" msgstr "" -#: order/models.py:472 order/models.py:953 +#: order/models.py:472 order/models.py:951 msgid "Purchase order status" msgstr "" @@ -4839,15 +4895,15 @@ msgstr "" msgid "received by" msgstr "" -#: order/models.py:514 order/models.py:2094 +#: order/models.py:514 order/models.py:2058 msgid "Issue Date" msgstr "" -#: order/models.py:515 order/models.py:2095 +#: order/models.py:515 order/models.py:2059 msgid "Date order was issued" msgstr "" -#: order/models.py:522 order/models.py:2102 +#: order/models.py:522 order/models.py:2066 msgid "Date order was completed" msgstr "" @@ -4859,94 +4915,94 @@ msgstr "" msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:941 +#: order/models.py:939 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:964 order/models.py:2087 +#: order/models.py:962 order/models.py:2051 msgid "Customer Reference " msgstr "" -#: order/models.py:965 order/models.py:2088 +#: order/models.py:963 order/models.py:2052 msgid "Customer order reference code" msgstr "" -#: order/models.py:969 order/models.py:1707 +#: order/models.py:967 order/models.py:1671 #: templates/js/translated/sales_order.js:879 #: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "" -#: order/models.py:978 +#: order/models.py:976 msgid "shipped by" msgstr "" -#: order/models.py:1027 +#: order/models.py:1025 msgid "Order is already complete" msgstr "" -#: order/models.py:1030 +#: order/models.py:1028 msgid "Order is already cancelled" msgstr "" -#: order/models.py:1034 +#: order/models.py:1032 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:1038 +#: order/models.py:1036 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:1043 +#: order/models.py:1041 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1309 +#: order/models.py:1273 msgid "Item quantity" msgstr "" -#: order/models.py:1326 +#: order/models.py:1290 msgid "Line item reference" msgstr "" -#: order/models.py:1333 +#: order/models.py:1297 msgid "Line item notes" msgstr "" -#: order/models.py:1345 +#: order/models.py:1309 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1366 +#: order/models.py:1330 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1372 +#: order/models.py:1336 msgid "Context" msgstr "" -#: order/models.py:1373 +#: order/models.py:1337 msgid "Additional context for this line" msgstr "" -#: order/models.py:1383 +#: order/models.py:1347 msgid "Unit price" msgstr "" -#: order/models.py:1416 +#: order/models.py:1380 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1423 +#: order/models.py:1387 msgid "deleted" msgstr "" -#: order/models.py:1451 +#: order/models.py:1415 msgid "Supplier part" msgstr "" -#: order/models.py:1458 order/templates/order/order_base.html:196 -#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: order/models.py:1422 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1870 templates/js/translated/part.js:1902 #: templates/js/translated/purchase_order.js:1306 #: templates/js/translated/purchase_order.js:2169 #: templates/js/translated/return_order.js:763 @@ -4955,196 +5011,196 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1459 +#: order/models.py:1423 msgid "Number of items received" msgstr "" -#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 +#: order/models.py:1431 stock/models.py:938 stock/serializers.py:556 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "" -#: order/models.py:1468 +#: order/models.py:1432 msgid "Unit purchase price" msgstr "" -#: order/models.py:1483 +#: order/models.py:1447 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1574 +#: order/models.py:1538 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1579 +#: order/models.py:1543 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1605 part/templates/part/part_pricing.html:107 +#: order/models.py:1569 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:1606 +#: order/models.py:1570 msgid "Unit sale price" msgstr "" -#: order/models.py:1615 order/status_codes.py:43 +#: order/models.py:1579 order/status_codes.py:43 #: templates/js/translated/sales_order.js:1559 #: templates/js/translated/sales_order.js:1680 #: templates/js/translated/sales_order.js:1993 msgid "Shipped" msgstr "" -#: order/models.py:1616 +#: order/models.py:1580 msgid "Shipped quantity" msgstr "" -#: order/models.py:1708 +#: order/models.py:1672 msgid "Date of shipment" msgstr "" -#: order/models.py:1714 templates/js/translated/sales_order.js:1072 +#: order/models.py:1678 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "" -#: order/models.py:1715 +#: order/models.py:1679 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1723 +#: order/models.py:1687 msgid "Checked By" msgstr "" -#: order/models.py:1724 +#: order/models.py:1688 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 -#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 +#: order/models.py:1695 order/models.py:1908 order/serializers.py:1342 +#: order/serializers.py:1452 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "" -#: order/models.py:1732 +#: order/models.py:1696 msgid "Shipment number" msgstr "" -#: order/models.py:1740 +#: order/models.py:1704 msgid "Tracking Number" msgstr "" -#: order/models.py:1741 +#: order/models.py:1705 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1748 +#: order/models.py:1712 msgid "Invoice Number" msgstr "" -#: order/models.py:1749 +#: order/models.py:1713 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1769 +#: order/models.py:1733 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1772 +#: order/models.py:1736 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1890 order/models.py:1892 +#: order/models.py:1854 order/models.py:1856 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1899 +#: order/models.py:1863 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1902 +#: order/models.py:1866 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1905 +#: order/models.py:1869 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1924 order/serializers.py:1231 +#: order/models.py:1888 order/serializers.py:1219 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1927 +#: order/models.py:1891 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1928 plugin/base/barcodes/api.py:481 +#: order/models.py:1892 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1936 +#: order/models.py:1900 msgid "Line" msgstr "" -#: order/models.py:1945 +#: order/models.py:1909 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1958 order/models.py:2275 +#: order/models.py:1922 order/models.py:2239 #: templates/js/translated/return_order.js:721 msgid "Item" msgstr "" -#: order/models.py:1959 +#: order/models.py:1923 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1968 +#: order/models.py:1932 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:2057 +#: order/models.py:2021 msgid "Return Order reference" msgstr "" -#: order/models.py:2069 +#: order/models.py:2033 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:2081 +#: order/models.py:2045 msgid "Return order status" msgstr "" -#: order/models.py:2260 +#: order/models.py:2224 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2276 +#: order/models.py:2240 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2282 +#: order/models.py:2246 msgid "Received Date" msgstr "" -#: order/models.py:2283 +#: order/models.py:2247 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2294 templates/js/translated/return_order.js:732 +#: order/models.py:2258 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2295 +#: order/models.py:2259 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2302 +#: order/models.py:2266 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/serializers.py:79 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_purchase_order_report.html:22 @@ -5153,163 +5209,163 @@ msgstr "" msgid "Line Items" msgstr "" -#: order/serializers.py:84 +#: order/serializers.py:83 msgid "Completed Lines" msgstr "" -#: order/serializers.py:287 +#: order/serializers.py:286 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:302 order/serializers.py:1247 +#: order/serializers.py:301 order/serializers.py:1235 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:312 order/serializers.py:1257 +#: order/serializers.py:311 order/serializers.py:1245 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:440 +#: order/serializers.py:439 msgid "Order is not open" msgstr "" -#: order/serializers.py:461 +#: order/serializers.py:460 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:463 +#: order/serializers.py:462 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:473 +#: order/serializers.py:472 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:478 msgid "Merge Items" msgstr "" -#: order/serializers.py:481 +#: order/serializers.py:480 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:499 +#: order/serializers.py:498 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:502 +#: order/serializers.py:501 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:510 +#: order/serializers.py:509 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:511 +#: order/serializers.py:510 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:550 order/serializers.py:1325 +#: order/serializers.py:549 order/serializers.py:1313 msgid "Line Item" msgstr "" -#: order/serializers.py:556 +#: order/serializers.py:555 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1657 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:581 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:589 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:601 templates/js/translated/barcode.js:52 +#: order/serializers.py:600 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:602 +#: order/serializers.py:601 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:618 +#: order/serializers.py:617 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:642 +#: order/serializers.py:641 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:690 order/serializers.py:1696 +#: order/serializers.py:689 order/serializers.py:1673 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:706 +#: order/serializers.py:705 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:717 +#: order/serializers.py:716 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1074 +#: order/serializers.py:1062 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1134 +#: order/serializers.py:1122 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1195 order/serializers.py:1334 +#: order/serializers.py:1183 order/serializers.py:1322 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1214 +#: order/serializers.py:1202 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1344 +#: order/serializers.py:1332 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1366 order/serializers.py:1472 +#: order/serializers.py:1354 order/serializers.py:1460 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1369 order/serializers.py:1475 +#: order/serializers.py:1357 order/serializers.py:1463 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1416 +#: order/serializers.py:1404 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1423 +#: order/serializers.py:1411 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1650 +#: order/serializers.py:1627 msgid "Return order line item" msgstr "" -#: order/serializers.py:1656 +#: order/serializers.py:1633 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1659 +#: order/serializers.py:1636 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1688 +#: order/serializers.py:1665 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1766 +#: order/serializers.py:1743 msgid "Line price currency" msgstr "" @@ -5639,7 +5695,7 @@ msgstr "" #: 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/part.js:1073 #: templates/js/translated/purchase_order.js:1752 #: templates/js/translated/return_order.js:380 #: templates/js/translated/sales_order.js:891 @@ -5735,34 +5791,34 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:406 part/models.py:3964 part/stocktake.py:218 -#: stock/admin.py:153 +#: part/admin.py:39 part/admin.py:398 part/models.py:3944 part/stocktake.py:219 +#: stock/admin.py:152 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 -#: stock/admin.py:157 +#: part/admin.py:41 part/admin.py:405 part/models.py:3945 part/stocktake.py:220 +#: stock/admin.py:156 msgid "Part Name" msgstr "" -#: part/admin.py:45 part/stocktake.py:220 +#: part/admin.py:45 part/stocktake.py:221 msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:940 part/templates/part/part_base.html:269 #: report/templates/report/inventree_stock_location_report.html:103 -#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/part.js:1227 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 -#: report/models.py:161 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2346 +#: part/admin.py:50 part/models.py:949 part/templates/part/part_base.html:277 +#: report/models.py:162 templates/js/translated/part.js:1232 +#: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:319 part/models.py:929 +#: part/admin.py:53 part/admin.py:319 part/models.py:922 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5771,11 +5827,11 @@ msgstr "" msgid "Part Image" msgstr "" -#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:222 msgid "Category ID" msgstr "" -#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:223 msgid "Category Name" msgstr "" @@ -5787,11 +5843,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:908 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1036 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5799,26 +5855,26 @@ msgstr "" 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 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:235 +#: templates/js/translated/part.js:715 templates/js/translated/part.js:2153 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3123 part/models.py:3137 -#: templates/js/translated/part.js:969 +#: part/admin.py:155 part/models.py:3088 part/models.py:3102 +#: templates/js/translated/part.js:970 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3130 part/models.py:3144 -#: templates/js/translated/part.js:979 +#: part/admin.py:158 part/models.py:3095 part/models.py:3109 +#: templates/js/translated/part.js:980 msgid "Maximum Cost" msgstr "" -#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 msgid "Parent ID" msgstr "" -#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 msgid "Parent Name" msgstr "" @@ -5827,141 +5883,149 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:325 part/models.py:393 part/serializers.py:117 -#: part/serializers.py:272 part/serializers.py:391 +#: part/admin.py:325 part/models.py:396 part/serializers.py:124 +#: part/serializers.py:267 part/serializers.py:386 #: 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:2803 templates/js/translated/search.js:130 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "" -#: part/admin.py:386 +#: part/admin.py:378 msgid "BOM Level" msgstr "" -#: part/admin.py:389 +#: part/admin.py:381 msgid "BOM Item ID" msgstr "" -#: part/admin.py:399 +#: part/admin.py:391 msgid "Parent IPN" msgstr "" -#: part/admin.py:410 part/models.py:3966 +#: part/admin.py:402 part/models.py:3946 msgid "Part IPN" msgstr "" -#: part/admin.py:423 part/serializers.py:1278 +#: part/admin.py:415 part/serializers.py:1274 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:428 part/serializers.py:1293 +#: part/admin.py:420 part/serializers.py:1289 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:110 +#: part/api.py:104 msgid "Starred" msgstr "" -#: part/api.py:112 +#: part/api.py:106 msgid "Filter by starred categories" msgstr "" -#: part/api.py:129 stock/api.py:318 +#: part/api.py:123 stock/api.py:312 msgid "Depth" msgstr "" -#: part/api.py:129 +#: part/api.py:123 msgid "Filter by category depth" msgstr "" -#: part/api.py:147 stock/api.py:336 +#: part/api.py:141 stock/api.py:330 +msgid "Top Level" +msgstr "" + +#: part/api.py:143 +msgid "Filter by top-level categories" +msgstr "" + +#: part/api.py:156 stock/api.py:345 msgid "Cascade" msgstr "" -#: part/api.py:149 +#: part/api.py:158 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:169 +#: part/api.py:179 templates/js/translated/part.js:308 msgid "Parent" msgstr "" -#: part/api.py:171 +#: part/api.py:181 msgid "Filter by parent category" msgstr "" -#: part/api.py:204 +#: part/api.py:214 msgid "Exclude Tree" msgstr "" -#: part/api.py:206 +#: part/api.py:216 msgid "Exclude sub-categories under the specified category" msgstr "" -#: part/api.py:455 +#: part/api.py:449 msgid "Has Results" msgstr "" -#: part/api.py:622 +#: part/api.py:616 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:640 +#: part/api.py:634 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:656 +#: part/api.py:650 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:740 +#: part/api.py:734 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:887 +#: part/api.py:881 msgid "Valid" msgstr "" -#: part/api.py:888 +#: part/api.py:882 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:894 +#: part/api.py:888 msgid "This option must be selected" msgstr "" -#: part/api.py:1111 +#: part/api.py:1105 msgid "BOM Valid" msgstr "" -#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 -#: part/serializers.py:406 part/serializers.py:1134 -#: part/templates/part/part_base.html:260 stock/api.py:781 +#: part/api.py:1508 part/models.py:932 part/models.py:3374 part/models.py:3889 +#: part/serializers.py:401 part/serializers.py:1130 +#: part/templates/part/part_base.html:260 stock/api.py:791 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2376 +#: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/api.py:1803 +#: part/api.py:1796 msgid "Uses" msgstr "" -#: part/bom.py:170 part/models.py:102 part/models.py:982 +#: part/bom.py:170 part/models.py:104 part/models.py:975 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 part/serializers.py:837 +#: part/bom.py:171 part/serializers.py:833 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5970,1054 +6034,1066 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 +#: part/models.py:85 part/models.py:3890 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:84 part/templates/part/category.html:136 +#: part/models.py:86 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "" -#: part/models.py:103 +#: part/models.py:105 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 +#: part/models.py:110 stock/models.py:174 templates/js/translated/part.js:2810 #: templates/js/translated/stock.js:2772 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:110 +#: part/models.py:112 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:119 +#: part/models.py:121 msgid "Default keywords" msgstr "" -#: part/models.py:120 +#: part/models.py:122 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 stock/models.py:85 stock/models.py:156 +#: part/models.py:128 stock/models.py:86 stock/models.py:157 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:127 stock/models.py:157 +#: part/models.py:129 stock/models.py:158 msgid "Icon (optional)" msgstr "" -#: part/models.py:149 +#: part/models.py:151 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:482 +#: part/models.py:485 msgid "Cannot delete this part as it is still active" msgstr "" -#: part/models.py:489 +#: part/models.py:490 msgid "Cannot delete this part as it is used in an assembly" msgstr "" -#: part/models.py:527 +#: part/models.py:528 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:575 part/models.py:582 +#: part/models.py:576 part/models.py:583 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:594 +#: part/models.py:595 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:659 +#: part/models.py:658 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:739 +#: part/models.py:736 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:844 +#: part/models.py:837 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:854 +#: part/models.py:847 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:869 +#: part/models.py:862 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:898 part/models.py:3965 +#: part/models.py:891 part/models.py:3945 msgid "Part name" msgstr "" -#: part/models.py:903 +#: part/models.py:896 msgid "Is Template" msgstr "" -#: part/models.py:904 +#: part/models.py:897 msgid "Is this part a template part?" msgstr "" -#: part/models.py:914 +#: part/models.py:907 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:922 +#: part/models.py:915 msgid "Part description (optional)" msgstr "" -#: part/models.py:930 +#: part/models.py:923 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:940 +#: part/models.py:933 msgid "Part category" msgstr "" -#: part/models.py:948 +#: part/models.py:941 msgid "Internal Part Number" msgstr "" -#: part/models.py:955 +#: part/models.py:948 msgid "Part revision or version number" msgstr "" -#: part/models.py:980 +#: part/models.py:973 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:1026 part/templates/part/part_base.html:376 +#: part/models.py:1019 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:1027 +#: part/models.py:1020 msgid "Default supplier part" msgstr "" -#: part/models.py:1034 +#: part/models.py:1027 msgid "Default Expiry" msgstr "" -#: part/models.py:1035 +#: part/models.py:1028 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:1044 +#: part/models.py:1037 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:1053 +#: part/models.py:1046 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1060 +#: part/models.py:1053 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1066 +#: part/models.py:1059 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1072 +#: part/models.py:1065 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1078 +#: part/models.py:1071 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1084 +#: part/models.py:1077 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1088 +#: part/models.py:1081 msgid "Is this part active?" msgstr "" -#: part/models.py:1094 +#: part/models.py:1087 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1100 +#: part/models.py:1093 msgid "BOM checksum" msgstr "" -#: part/models.py:1101 +#: part/models.py:1094 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1109 +#: part/models.py:1102 msgid "BOM checked by" msgstr "" -#: part/models.py:1114 +#: part/models.py:1107 msgid "BOM checked date" msgstr "" -#: part/models.py:1130 +#: part/models.py:1123 msgid "Creation User" msgstr "" -#: part/models.py:1140 +#: part/models.py:1133 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1145 part/templates/part/part_base.html:339 +#: part/models.py:1138 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2470 +#: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:2018 +#: part/models.py:2011 msgid "Sell multiple" msgstr "" -#: part/models.py:3037 +#: part/models.py:3002 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:3053 +#: part/models.py:3018 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:3054 +#: part/models.py:3019 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:3060 +#: part/models.py:3025 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3026 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:3067 +#: part/models.py:3032 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3033 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3074 +#: part/models.py:3039 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3040 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3046 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3047 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3053 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3054 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3060 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3096 +#: part/models.py:3061 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3102 +#: part/models.py:3067 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3103 +#: part/models.py:3068 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3109 +#: part/models.py:3074 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3110 +#: part/models.py:3075 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3116 +#: part/models.py:3081 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3117 +#: part/models.py:3082 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3124 +#: part/models.py:3089 msgid "Override minimum cost" msgstr "" -#: part/models.py:3131 +#: part/models.py:3096 msgid "Override maximum cost" msgstr "" -#: part/models.py:3138 +#: part/models.py:3103 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3145 +#: part/models.py:3110 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3151 +#: part/models.py:3116 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3152 +#: part/models.py:3117 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3158 +#: part/models.py:3123 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3159 +#: part/models.py:3124 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3165 +#: part/models.py:3130 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3131 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3172 +#: part/models.py:3137 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3138 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3192 +#: part/models.py:3157 msgid "Part for stocktake" msgstr "" -#: part/models.py:3197 +#: part/models.py:3162 msgid "Item Count" msgstr "" -#: part/models.py:3198 +#: part/models.py:3163 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3206 +#: part/models.py:3171 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3210 part/models.py:3293 +#: part/models.py:3175 part/models.py:3258 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report.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/part.js:1086 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" -#: part/models.py:3211 +#: part/models.py:3176 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3219 +#: part/models.py:3184 msgid "Additional notes" msgstr "" -#: part/models.py:3229 +#: part/models.py:3194 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3235 +#: part/models.py:3200 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3236 +#: part/models.py:3201 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3242 +#: part/models.py:3207 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3243 +#: part/models.py:3208 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3264 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3300 +#: part/models.py:3265 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3270 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3306 +#: part/models.py:3271 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3316 +#: part/models.py:3281 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3478 +#: part/models.py:3423 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3489 +#: part/models.py:3444 part/models.py:3608 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3455 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3500 +#: part/models.py:3466 msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3517 templates/js/translated/part.js:2878 +#: part/models.py:3483 templates/js/translated/part.js:2880 msgid "Test Name" msgstr "" -#: part/models.py:3518 +#: part/models.py:3484 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3524 +#: part/models.py:3490 msgid "Test Key" msgstr "" -#: part/models.py:3525 +#: part/models.py:3491 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3532 +#: part/models.py:3498 msgid "Test Description" msgstr "" -#: part/models.py:3533 +#: part/models.py:3499 msgid "Enter description for this test" msgstr "" -#: part/models.py:3537 report/models.py:208 -#: templates/js/translated/part.js:2899 +#: part/models.py:3503 report/models.py:209 +#: templates/js/translated/part.js:2901 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" -#: part/models.py:3537 +#: part/models.py:3503 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3542 templates/js/translated/part.js:2907 +#: part/models.py:3508 templates/js/translated/part.js:2909 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3543 +#: part/models.py:3509 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3548 templates/js/translated/part.js:2915 +#: part/models.py:3514 templates/js/translated/part.js:2917 msgid "Requires Value" msgstr "" -#: part/models.py:3549 +#: part/models.py:3515 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3554 templates/js/translated/part.js:2922 +#: part/models.py:3520 templates/js/translated/part.js:2924 msgid "Requires Attachment" msgstr "" -#: part/models.py:3556 +#: part/models.py:3522 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3603 +#: part/models.py:3528 part/models.py:3667 templates/js/translated/part.js:1637 +msgid "Choices" +msgstr "" + +#: part/models.py:3529 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3583 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3608 +#: part/models.py:3588 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3628 -msgid "Choices must be unique" -msgstr "" - -#: part/models.py:3645 +#: part/models.py:3625 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3660 +#: part/models.py:3640 msgid "Parameter Name" msgstr "" -#: part/models.py:3667 +#: part/models.py:3647 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3675 +#: part/models.py:3655 msgid "Parameter description" msgstr "" -#: part/models.py:3681 templates/js/translated/part.js:1627 +#: part/models.py:3661 templates/js/translated/part.js:1628 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "" -#: part/models.py:3682 +#: part/models.py:3662 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3687 templates/js/translated/part.js:1636 -msgid "Choices" -msgstr "" - -#: part/models.py:3688 +#: part/models.py:3668 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3765 +#: part/models.py:3745 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3808 +#: part/models.py:3788 msgid "Parent Part" msgstr "" -#: part/models.py:3816 part/models.py:3917 part/models.py:3918 +#: part/models.py:3796 part/models.py:3897 part/models.py:3898 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3821 +#: part/models.py:3801 msgid "Data" msgstr "" -#: part/models.py:3822 +#: part/models.py:3802 msgid "Parameter Value" msgstr "" -#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3904 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3925 +#: part/models.py:3905 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3963 +#: part/models.py:3943 msgid "Part ID or part name" msgstr "" -#: part/models.py:3964 +#: part/models.py:3944 msgid "Unique part ID value" msgstr "" -#: part/models.py:3966 +#: part/models.py:3946 msgid "Part IPN value" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "Level" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "BOM level" msgstr "" -#: part/models.py:4057 +#: part/models.py:4037 msgid "Select parent part" msgstr "" -#: part/models.py:4067 +#: part/models.py:4047 msgid "Sub part" msgstr "" -#: part/models.py:4068 +#: part/models.py:4048 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4079 +#: part/models.py:4059 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4085 +#: part/models.py:4065 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4091 +#: part/models.py:4071 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4098 part/templates/part/upload_bom.html:55 +#: part/models.py:4078 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4099 +#: part/models.py:4079 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4106 +#: part/models.py:4086 msgid "BOM item reference" msgstr "" -#: part/models.py:4114 +#: part/models.py:4094 msgid "BOM item notes" msgstr "" -#: part/models.py:4120 +#: part/models.py:4100 msgid "Checksum" msgstr "" -#: part/models.py:4121 +#: part/models.py:4101 msgid "BOM line checksum" msgstr "" -#: part/models.py:4126 templates/js/translated/table_filters.js:174 +#: part/models.py:4106 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4127 +#: part/models.py:4107 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4132 part/templates/part/upload_bom.html:57 +#: part/models.py:4112 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:4133 +#: part/models.py:4113 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4138 part/templates/part/upload_bom.html:56 +#: part/models.py:4118 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4139 +#: part/models.py:4119 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4224 stock/models.py:664 +#: part/models.py:4204 stock/models.py:662 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4234 part/models.py:4236 +#: part/models.py:4214 part/models.py:4216 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4376 +#: part/models.py:4354 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4397 +#: part/models.py:4375 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4410 +#: part/models.py:4388 msgid "Parent BOM item" msgstr "" -#: part/models.py:4418 +#: part/models.py:4396 msgid "Substitute part" msgstr "" -#: part/models.py:4434 +#: part/models.py:4412 msgid "Part 1" msgstr "" -#: part/models.py:4442 +#: part/models.py:4420 msgid "Part 2" msgstr "" -#: part/models.py:4443 +#: part/models.py:4421 msgid "Select Related Part" msgstr "" -#: part/models.py:4462 +#: part/models.py:4440 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4467 +#: part/models.py:4445 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:119 part/serializers.py:141 +#: part/serializers.py:118 +msgid "Parent Category" +msgstr "" + +#: part/serializers.py:119 templates/js/translated/part.js:309 +msgid "Parent part category" +msgstr "" + +#: part/serializers.py:126 part/serializers.py:148 #: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/serializers.py:185 +#: part/serializers.py:180 msgid "Results" msgstr "" -#: part/serializers.py:186 +#: part/serializers.py:181 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 +#: part/serializers.py:205 part/serializers.py:223 stock/serializers.py:562 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:273 +#: part/serializers.py:268 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:397 +#: part/serializers.py:392 msgid "No parts selected" msgstr "" -#: part/serializers.py:407 +#: part/serializers.py:402 msgid "Select category" msgstr "" -#: part/serializers.py:442 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:443 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:448 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:449 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:455 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:456 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:463 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:488 +#: part/serializers.py:483 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:490 +#: part/serializers.py:485 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:497 +#: part/serializers.py:492 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:493 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:510 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:531 +#: part/serializers.py:526 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:541 +#: part/serializers.py:536 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:548 +#: part/serializers.py:543 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:557 +#: part/serializers.py:552 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:568 +#: part/serializers.py:563 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:575 +#: part/serializers.py:570 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:834 msgid "External Stock" msgstr "" -#: part/serializers.py:840 +#: part/serializers.py:836 msgid "Unallocated Stock" msgstr "" -#: part/serializers.py:843 +#: part/serializers.py:839 msgid "Variant Stock" msgstr "" -#: part/serializers.py:873 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:471 +#: part/serializers.py:869 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:472 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:870 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:880 templates/js/translated/part.js:102 +#: part/serializers.py:876 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:881 +#: part/serializers.py:877 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:887 +#: part/serializers.py:883 msgid "Supplier Information" msgstr "" -#: part/serializers.py:888 +#: part/serializers.py:884 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:896 +#: part/serializers.py:892 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:897 +#: part/serializers.py:893 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:902 +#: part/serializers.py:898 msgid "Existing Image" msgstr "" -#: part/serializers.py:903 +#: part/serializers.py:899 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:920 +#: part/serializers.py:916 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1126 +#: part/serializers.py:1122 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1136 +#: part/serializers.py:1132 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1146 +#: part/serializers.py:1142 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1152 +#: part/serializers.py:1148 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1153 +#: part/serializers.py:1149 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1158 +#: part/serializers.py:1154 msgid "Generate Report" msgstr "" -#: part/serializers.py:1159 +#: part/serializers.py:1155 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1164 +#: part/serializers.py:1160 msgid "Update Parts" msgstr "" -#: part/serializers.py:1165 +#: part/serializers.py:1161 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1173 +#: part/serializers.py:1169 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1279 +#: part/serializers.py:1275 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1286 +#: part/serializers.py:1282 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1294 +#: part/serializers.py:1290 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1301 +#: part/serializers.py:1297 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1330 +#: part/serializers.py:1326 msgid "Update" msgstr "" -#: part/serializers.py:1331 +#: part/serializers.py:1327 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1354 +#: part/serializers.py:1350 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1361 +#: part/serializers.py:1357 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1364 +#: part/serializers.py:1360 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1727 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1739 +#: part/serializers.py:1735 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1740 +#: part/serializers.py:1736 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1745 +#: part/serializers.py:1741 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1746 +#: part/serializers.py:1742 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1747 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1752 +#: part/serializers.py:1748 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1757 +#: part/serializers.py:1753 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1758 +#: part/serializers.py:1754 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1792 +#: part/serializers.py:1788 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1793 +#: part/serializers.py:1789 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1823 +#: part/serializers.py:1819 msgid "No part column specified" msgstr "" -#: part/serializers.py:1867 +#: part/serializers.py:1863 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1870 +#: part/serializers.py:1866 msgid "No matching part found" msgstr "" -#: part/serializers.py:1873 +#: part/serializers.py:1869 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1882 +#: part/serializers.py:1878 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1890 +#: part/serializers.py:1886 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1911 +#: part/serializers.py:1907 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 +#: part/stocktake.py:225 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "" -#: part/stocktake.py:225 +#: part/stocktake.py:226 msgid "Total Cost Min" msgstr "" -#: part/stocktake.py:226 +#: part/stocktake.py:227 msgid "Total Cost Max" msgstr "" -#: part/stocktake.py:284 +#: part/stocktake.py:285 msgid "Stocktake Report Available" msgstr "" -#: part/stocktake.py:285 +#: part/stocktake.py:286 msgid "A new stocktake report is available for download" msgstr "" @@ -7151,7 +7227,7 @@ 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 +#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" @@ -7251,15 +7327,15 @@ msgstr "" msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:655 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:663 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:748 +#: part/templates/part/detail.html:750 msgid "Add Test Result Template" msgstr "" @@ -7340,7 +7416,7 @@ msgstr "" msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" msgstr "" @@ -7412,7 +7488,7 @@ 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:2443 +#: templates/js/translated/part.js:1265 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7505,8 +7581,8 @@ msgstr "" #: 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:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/part.js:1243 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 #: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7549,7 +7625,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:247 +#: part/templates/part/prices.html:28 stock/admin.py:251 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 @@ -7626,8 +7702,8 @@ msgstr "" #: part/templates/part/stock_count.html:7 #: templates/js/translated/model_renderers.js:227 -#: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 -#: templates/js/translated/part.js:2142 +#: templates/js/translated/part.js:705 templates/js/translated/part.js:2141 +#: templates/js/translated/part.js:2143 msgid "No Stock" msgstr "" @@ -7999,7 +8075,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:308 msgid "Landscape" msgstr "" @@ -8112,62 +8188,62 @@ msgstr "" msgid "Uninstalled plugin successfully" msgstr "" -#: plugin/models.py:35 +#: plugin/models.py:36 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:36 +#: plugin/models.py:37 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:42 users/models.py:100 +#: plugin/models.py:43 users/models.py:100 msgid "Key" msgstr "" -#: plugin/models.py:43 +#: plugin/models.py:44 msgid "Key of plugin" msgstr "" -#: plugin/models.py:51 +#: plugin/models.py:52 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:58 plugin/serializers.py:90 +#: plugin/models.py:59 plugin/serializers.py:90 msgid "Package Name" msgstr "" -#: plugin/models.py:60 +#: plugin/models.py:61 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:65 +#: plugin/models.py:66 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:156 templates/js/translated/table_filters.js:370 +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "" -#: plugin/models.py:165 +#: plugin/models.py:166 msgid "Sample plugin" msgstr "" -#: plugin/models.py:173 +#: plugin/models.py:174 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:181 +#: plugin/models.py:182 msgid "Package Plugin" msgstr "" -#: plugin/models.py:205 report/models.py:474 +#: plugin/models.py:220 report/models.py:475 #: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:252 +#: plugin/models.py:267 msgid "Method" msgstr "" @@ -8175,17 +8251,17 @@ msgstr "" msgid "No author found" msgstr "" -#: plugin/registry.py:597 +#: plugin/registry.py:534 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:600 +#: plugin/registry.py:537 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:602 +#: plugin/registry.py:539 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -8300,23 +8376,19 @@ msgstr "" msgid "Activate this plugin" msgstr "" -#: plugin/serializers.py:234 +#: plugin/serializers.py:226 msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:235 +#: plugin/serializers.py:227 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:77 +#: report/api.py:88 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:89 report/serializers.py:53 -msgid "Model Type" -msgstr "" - -#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/api.py:103 report/models.py:439 report/serializers.py:98 #: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 #: templates/js/translated/return_order.js:353 #: templates/js/translated/sales_order.js:887 @@ -8324,176 +8396,176 @@ msgstr "" msgid "Items" msgstr "" -#: report/api.py:168 +#: report/api.py:180 msgid "Plugin not found" msgstr "" -#: report/api.py:170 +#: report/api.py:182 msgid "Plugin is not active" msgstr "" -#: report/api.py:172 +#: report/api.py:184 msgid "Plugin does not support label printing" msgstr "" -#: report/api.py:221 +#: report/api.py:233 msgid "Invalid label dimensions" msgstr "" -#: report/api.py:236 report/api.py:316 +#: report/api.py:248 report/api.py:329 msgid "No valid items provided to template" msgstr "" -#: report/api.py:271 +#: report/api.py:283 msgid "Error printing label" msgstr "" -#: report/api.py:362 report/api.py:398 +#: report/api.py:375 report/api.py:411 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/helpers.py:41 +#: report/helpers.py:43 msgid "A4" msgstr "" -#: report/helpers.py:42 +#: report/helpers.py:44 msgid "A3" msgstr "" -#: report/helpers.py:43 +#: report/helpers.py:45 msgid "Legal" msgstr "" -#: report/helpers.py:44 +#: report/helpers.py:46 msgid "Letter" msgstr "" -#: report/models.py:118 +#: report/models.py:119 msgid "Template file with this name already exists" msgstr "" -#: report/models.py:150 +#: report/models.py:151 msgid "Template name" msgstr "" -#: report/models.py:156 +#: report/models.py:157 msgid "Template description" msgstr "" -#: report/models.py:162 +#: report/models.py:163 msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Filename Pattern" msgstr "" -#: report/models.py:203 +#: report/models.py:204 msgid "Pattern for generating filenames" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Template is enabled" msgstr "" -#: report/models.py:214 +#: report/models.py:215 msgid "Target model type for template" msgstr "" -#: report/models.py:234 +#: report/models.py:235 msgid "Filters" msgstr "" -#: report/models.py:235 +#: report/models.py:236 msgid "Template query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:294 report/models.py:361 +#: report/models.py:295 report/models.py:362 msgid "Template file" msgstr "" -#: report/models.py:302 +#: report/models.py:303 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:308 +#: report/models.py:309 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:367 +#: report/models.py:368 msgid "Width [mm]" msgstr "" -#: report/models.py:368 +#: report/models.py:369 msgid "Label width, specified in mm" msgstr "" -#: report/models.py:374 +#: report/models.py:375 msgid "Height [mm]" msgstr "" -#: report/models.py:375 +#: report/models.py:376 msgid "Label height, specified in mm" msgstr "" -#: report/models.py:438 +#: report/models.py:439 msgid "Number of items to process" msgstr "" -#: report/models.py:444 +#: report/models.py:445 msgid "Report generation is complete" msgstr "" -#: report/models.py:448 templates/js/translated/build.js:2177 +#: report/models.py:449 templates/js/translated/build.js:2177 msgid "Progress" msgstr "" -#: report/models.py:448 +#: report/models.py:449 msgid "Report generation progress" msgstr "" -#: report/models.py:456 +#: report/models.py:457 msgid "Report Template" msgstr "" -#: report/models.py:463 report/models.py:486 +#: report/models.py:464 report/models.py:487 msgid "Output File" msgstr "" -#: report/models.py:464 report/models.py:487 +#: report/models.py:465 report/models.py:488 msgid "Generated output file" msgstr "" -#: report/models.py:475 +#: report/models.py:476 msgid "Label output plugin" msgstr "" -#: report/models.py:479 +#: report/models.py:480 msgid "Label Template" msgstr "" -#: report/models.py:502 +#: report/models.py:503 msgid "Snippet" msgstr "" -#: report/models.py:503 +#: report/models.py:504 msgid "Report snippet file" msgstr "" -#: report/models.py:510 +#: report/models.py:511 msgid "Snippet file description" msgstr "" -#: report/models.py:528 +#: report/models.py:529 msgid "Asset" msgstr "" -#: report/models.py:529 +#: report/models.py:530 msgid "Report asset file" msgstr "" -#: report/models.py:536 +#: report/models.py:537 msgid "Asset file description" msgstr "" @@ -8566,8 +8638,8 @@ msgid "Total" msgstr "" #: report/templates/report/inventree_return_order_report.html:25 -#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 -#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:824 +#: stock/serializers.py:149 stock/templates/stock/item_base.html:311 #: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 #: templates/js/translated/build.js:2355 #: templates/js/translated/model_renderers.js:230 @@ -8597,32 +8669,32 @@ msgstr "" msgid "Test" msgstr "" -#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2412 msgid "Result" msgstr "" -#: report/templates/report/inventree_test_report.html:130 +#: report/templates/report/inventree_test_report.html:129 msgid "Pass" msgstr "" -#: report/templates/report/inventree_test_report.html:132 +#: report/templates/report/inventree_test_report.html:131 msgid "Fail" msgstr "" -#: report/templates/report/inventree_test_report.html:139 +#: report/templates/report/inventree_test_report.html:138 msgid "No result (required)" msgstr "" -#: report/templates/report/inventree_test_report.html:141 +#: report/templates/report/inventree_test_report.html:140 msgid "No result" msgstr "" -#: report/templates/report/inventree_test_report.html:154 +#: report/templates/report/inventree_test_report.html:153 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "" -#: report/templates/report/inventree_test_report.html:168 stock/admin.py:162 +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 #: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 #: templates/js/translated/stock.js:3110 msgid "Serial" @@ -8644,654 +8716,670 @@ msgstr "" msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:172 +#: stock/admin.py:51 stock/admin.py:171 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:176 +#: stock/admin.py:53 stock/admin.py:175 msgid "Location Name" msgstr "" -#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/admin.py:63 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:149 +#: stock/admin.py:148 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:168 +#: stock/admin.py:167 msgid "Status Code" msgstr "" -#: stock/admin.py:180 +#: stock/admin.py:179 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:185 +#: stock/admin.py:184 +msgid "Supplier Part SKU" +msgstr "" + +#: stock/admin.py:189 msgid "Supplier ID" msgstr "" -#: stock/admin.py:191 +#: stock/admin.py:195 msgid "Supplier Name" msgstr "" -#: stock/admin.py:196 +#: stock/admin.py:200 msgid "Customer ID" msgstr "" -#: stock/admin.py:201 stock/models.py:806 +#: stock/admin.py:205 stock/models.py:804 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:206 +#: stock/admin.py:210 msgid "Build ID" msgstr "" -#: stock/admin.py:216 +#: stock/admin.py:220 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:221 +#: stock/admin.py:225 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:236 +#: stock/admin.py:240 msgid "Review Needed" msgstr "" -#: stock/admin.py:241 +#: stock/admin.py:245 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:256 stock/models.py:900 +#: stock/admin.py:260 stock/models.py:898 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "" -#: stock/api.py:318 +#: stock/api.py:312 msgid "Filter by location depth" msgstr "" -#: stock/api.py:338 +#: stock/api.py:332 +msgid "Filter by top-level locations" +msgstr "" + +#: stock/api.py:347 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:359 +#: stock/api.py:369 stock/serializers.py:1085 msgid "Parent Location" msgstr "" -#: stock/api.py:360 +#: stock/api.py:370 msgid "Filter by parent location" msgstr "" -#: stock/api.py:615 templates/js/translated/table_filters.js:427 +#: stock/api.py:625 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:803 +#: stock/api.py:813 msgid "Part Tree" msgstr "" -#: stock/api.py:833 +#: stock/api.py:843 msgid "Expiry date before" msgstr "" -#: stock/api.py:837 +#: stock/api.py:847 msgid "Expiry date after" msgstr "" -#: stock/api.py:840 stock/templates/stock/item_base.html:439 +#: stock/api.py:850 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:927 +#: stock/api.py:937 msgid "Quantity is required" msgstr "" -#: stock/api.py:933 +#: stock/api.py:943 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:964 +#: stock/api.py:974 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:974 +#: stock/api.py:984 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:1005 +#: stock/api.py:1015 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:59 +#: stock/models.py:60 msgid "Stock Location type" msgstr "" -#: stock/models.py:60 +#: stock/models.py:61 msgid "Stock Location types" msgstr "" -#: stock/models.py:86 +#: stock/models.py:87 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:123 stock/models.py:788 +#: stock/models.py:124 stock/models.py:786 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:124 stock/templates/stock/location.html:186 +#: stock/models.py:125 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "" -#: stock/models.py:166 stock/models.py:949 +#: stock/models.py:167 stock/models.py:947 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:167 stock/models.py:950 +#: stock/models.py:168 stock/models.py:948 msgid "Select Owner" msgstr "" -#: stock/models.py:175 +#: stock/models.py:176 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:182 templates/js/translated/stock.js:2781 +#: stock/models.py:183 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:183 +#: stock/models.py:184 msgid "This is an external stock location" msgstr "" -#: stock/models.py:189 templates/js/translated/stock.js:2790 +#: stock/models.py:190 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" -#: stock/models.py:193 +#: stock/models.py:194 msgid "Stock location type of this location" msgstr "" -#: stock/models.py:262 +#: stock/models.py:261 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:643 +#: stock/models.py:641 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:670 stock/serializers.py:419 +#: stock/models.py:668 stock/serializers.py:446 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:687 +#: stock/models.py:685 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:697 stock/models.py:710 +#: stock/models.py:695 stock/models.py:708 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:700 +#: stock/models.py:698 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:724 +#: stock/models.py:722 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:729 +#: stock/models.py:727 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:742 +#: stock/models.py:740 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:758 +#: stock/models.py:756 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:770 +#: stock/models.py:768 msgid "Base part" msgstr "" -#: stock/models.py:780 +#: stock/models.py:778 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:792 +#: stock/models.py:790 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:800 stock/serializers.py:1480 +#: stock/models.py:798 stock/serializers.py:1476 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:811 +#: stock/models.py:809 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:830 +#: stock/models.py:828 msgid "Serial number for this item" msgstr "" -#: stock/models.py:844 stock/serializers.py:1463 +#: stock/models.py:842 stock/serializers.py:1459 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:849 +#: stock/models.py:847 msgid "Stock Quantity" msgstr "" -#: stock/models.py:859 +#: stock/models.py:857 msgid "Source Build" msgstr "" -#: stock/models.py:862 +#: stock/models.py:860 msgid "Build for this stock item" msgstr "" -#: stock/models.py:869 stock/templates/stock/item_base.html:363 +#: stock/models.py:867 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:872 +#: stock/models.py:870 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:881 +#: stock/models.py:879 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:885 +#: stock/models.py:883 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:891 +#: stock/models.py:889 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:902 +#: stock/models.py:900 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:920 +#: stock/models.py:918 msgid "Delete on deplete" msgstr "" -#: stock/models.py:921 +#: stock/models.py:919 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:941 +#: stock/models.py:939 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:972 +#: stock/models.py:970 msgid "Converted to part" msgstr "" -#: stock/models.py:1490 +#: stock/models.py:1486 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1496 +#: stock/models.py:1492 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1500 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1510 +#: stock/models.py:1506 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1515 +#: stock/models.py:1511 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1523 stock/serializers.py:658 +#: stock/models.py:1519 stock/serializers.py:660 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1620 +#: stock/models.py:1616 msgid "Test template does not exist" msgstr "" -#: stock/models.py:1638 +#: stock/models.py:1634 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1642 +#: stock/models.py:1638 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1645 +#: stock/models.py:1641 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1648 +#: stock/models.py:1644 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1651 +#: stock/models.py:1647 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1654 +#: stock/models.py:1650 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1661 stock/serializers.py:1369 +#: stock/models.py:1657 stock/serializers.py:1365 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1665 +#: stock/models.py:1661 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1673 +#: stock/models.py:1669 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1678 +#: stock/models.py:1674 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1905 +#: stock/models.py:1901 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2310 msgid "Entry notes" msgstr "" -#: stock/models.py:2391 +#: stock/models.py:2378 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2396 +#: stock/models.py:2383 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2423 +#: stock/models.py:2388 +msgid "Invalid value for this test" +msgstr "" + +#: stock/models.py:2412 msgid "Test result" msgstr "" -#: stock/models.py:2430 +#: stock/models.py:2419 msgid "Test output value" msgstr "" -#: stock/models.py:2438 +#: stock/models.py:2427 msgid "Test result attachment" msgstr "" -#: stock/models.py:2442 +#: stock/models.py:2431 msgid "Test notes" msgstr "" -#: stock/models.py:2450 templates/js/translated/stock.js:1548 +#: stock/models.py:2439 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2440 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2457 +#: stock/models.py:2446 msgid "Started" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2447 msgid "The timestamp of the test start" msgstr "" -#: stock/models.py:2464 +#: stock/models.py:2453 msgid "Finished" msgstr "" -#: stock/models.py:2465 +#: stock/models.py:2454 msgid "The timestamp of the test finish" msgstr "" -#: stock/serializers.py:75 +#: stock/serializers.py:74 msgid "Generated batch code" msgstr "" -#: stock/serializers.py:84 +#: stock/serializers.py:83 msgid "Select build order" msgstr "" -#: stock/serializers.py:93 +#: stock/serializers.py:92 msgid "Select stock item to generate batch code for" msgstr "" -#: stock/serializers.py:102 +#: stock/serializers.py:101 msgid "Select location to generate batch code for" msgstr "" -#: stock/serializers.py:111 +#: stock/serializers.py:110 msgid "Select part to generate batch code for" msgstr "" -#: stock/serializers.py:120 +#: stock/serializers.py:119 msgid "Select purchase order" msgstr "" -#: stock/serializers.py:127 +#: stock/serializers.py:126 msgid "Enter quantity for batch code" msgstr "" -#: stock/serializers.py:150 +#: stock/serializers.py:149 msgid "Generated serial number" msgstr "" -#: stock/serializers.py:159 +#: stock/serializers.py:158 msgid "Select part to generate serial number for" msgstr "" -#: stock/serializers.py:167 +#: stock/serializers.py:166 msgid "Quantity of serial numbers to generate" msgstr "" -#: stock/serializers.py:229 +#: stock/serializers.py:228 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:248 +#: stock/serializers.py:247 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:280 +#: stock/serializers.py:279 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:313 +#: stock/serializers.py:315 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:411 +#: stock/serializers.py:438 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:531 +#: stock/serializers.py:558 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:595 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:606 +#: stock/serializers.py:608 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:613 +#: stock/serializers.py:615 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 +#: stock/serializers.py:626 stock/serializers.py:1322 stock/serializers.py:1578 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:631 +#: stock/serializers.py:633 msgid "Optional note field" msgstr "" -#: stock/serializers.py:641 +#: stock/serializers.py:643 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:696 +#: stock/serializers.py:698 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:703 +#: stock/serializers.py:705 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:704 +#: stock/serializers.py:706 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 -#: stock/serializers.py:935 +#: stock/serializers.py:711 stock/serializers.py:791 stock/serializers.py:887 +#: stock/serializers.py:937 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:719 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:725 +#: stock/serializers.py:727 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:736 +#: stock/serializers.py:738 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:749 +#: stock/serializers.py:751 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:784 +#: stock/serializers.py:786 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:819 +#: stock/serializers.py:821 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:834 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:849 +#: stock/serializers.py:851 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:880 +#: stock/serializers.py:882 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:917 +#: stock/serializers.py:919 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:923 +#: stock/serializers.py:925 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:1019 stock/serializers.py:1082 +#: stock/serializers.py:1021 stock/serializers.py:1093 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:220 +#: stock/templates/stock/location.html:222 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1198 +#: stock/serializers.py:1086 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: stock/serializers.py:1194 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1202 +#: stock/serializers.py:1198 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1206 +#: stock/serializers.py:1202 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1230 +#: stock/serializers.py:1226 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1236 +#: stock/serializers.py:1232 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1244 +#: stock/serializers.py:1240 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1254 stock/serializers.py:1508 +#: stock/serializers.py:1250 stock/serializers.py:1504 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1333 +#: stock/serializers.py:1329 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1338 +#: stock/serializers.py:1334 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1339 +#: stock/serializers.py:1335 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1344 +#: stock/serializers.py:1340 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1345 +#: stock/serializers.py:1341 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1355 +#: stock/serializers.py:1351 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1422 +#: stock/serializers.py:1418 msgid "No Change" msgstr "" -#: stock/serializers.py:1451 +#: stock/serializers.py:1447 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1470 +#: stock/serializers.py:1466 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1498 +#: stock/serializers.py:1494 msgid "Stock transaction notes" msgstr "" @@ -9444,7 +9532,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276 msgid "Delete Test Data" msgstr "" @@ -9464,11 +9552,11 @@ msgstr "" msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:272 +#: stock/templates/stock/item.html:264 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "" @@ -9754,28 +9842,28 @@ msgstr "" msgid "Location Type" msgstr "" -#: stock/templates/stock/location.html:224 +#: stock/templates/stock/location.html:226 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:225 +#: stock/templates/stock/location.html:227 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:295 +#: stock/templates/stock/location.html:299 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:317 +#: stock/templates/stock/location.html:321 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:390 +#: stock/templates/stock/location.html:394 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:401 +#: stock/templates/stock/location.html:405 msgid "Link Barcode to Stock Location" msgstr "" @@ -10199,20 +10287,20 @@ msgstr "" msgid "Pricing Settings" msgstr "" -#: templates/InvenTree/settings/pricing.html:34 +#: templates/InvenTree/settings/pricing.html:35 msgid "Exchange Rates" msgstr "" -#: templates/InvenTree/settings/pricing.html:38 +#: templates/InvenTree/settings/pricing.html:39 msgid "Update Now" msgstr "" -#: templates/InvenTree/settings/pricing.html:46 -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 msgid "Last Update" msgstr "" -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:51 msgid "Never" msgstr "" @@ -10269,8 +10357,8 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:547 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 +#: templates/js/translated/part.js:393 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:402 msgid "Delete" msgstr "" @@ -10310,12 +10398,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 -#: templates/js/translated/part.js:1645 +#: templates/js/translated/part.js:1646 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 -#: templates/js/translated/part.js:1646 +#: templates/js/translated/part.js:1647 msgid "Delete Template" msgstr "" @@ -10705,7 +10793,7 @@ msgid "Submit Bug Report" msgstr "" #: templates/about.html:91 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 +#: templates/js/translated/helpers.js:589 msgid "copy to clipboard" msgstr "" @@ -10769,7 +10857,7 @@ 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 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45 msgid "Return to Site" msgstr "" @@ -10883,15 +10971,19 @@ msgstr "" msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "" -#: templates/allauth_2fa/setup.html:23 +#: templates/allauth_2fa/setup.html:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 msgid "Step 2" msgstr "" -#: templates/allauth_2fa/setup.html:27 +#: templates/allauth_2fa/setup.html:28 msgid "Input a token generated by the app:" msgstr "" -#: templates/allauth_2fa/setup.html:37 +#: templates/allauth_2fa/setup.html:38 msgid "Verify" msgstr "" @@ -10970,7 +11062,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3217 +#: templates/js/translated/part.js:3219 msgid "Minimum Quantity" msgstr "" @@ -11058,27 +11150,27 @@ msgstr "" msgid "Delete attachments" msgstr "" -#: templates/js/translated/attachment.js:253 +#: templates/js/translated/attachment.js:260 msgid "Attachment actions" msgstr "" -#: templates/js/translated/attachment.js:275 +#: templates/js/translated/attachment.js:294 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:315 +#: templates/js/translated/attachment.js:334 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:365 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:366 +#: templates/js/translated/attachment.js:385 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:374 +#: templates/js/translated/attachment.js:393 msgid "Delete attachment" msgstr "" @@ -11359,7 +11451,7 @@ msgid "Includes variant and substitute stock" msgstr "" #: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 -#: templates/js/translated/part.js:1256 +#: templates/js/translated/part.js:1257 #: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" @@ -11686,7 +11778,7 @@ msgstr "" #: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 #: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 -#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11729,8 +11821,8 @@ msgstr "" msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 -#: templates/js/translated/part.js:1202 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:791 +#: templates/js/translated/part.js:1203 msgid "Trackable part" msgstr "" @@ -11916,7 +12008,7 @@ msgid "Delete Parameters" msgstr "" #: templates/js/translated/company.js:1191 -#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2244 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2245 msgid "Order parts" msgstr "" @@ -11933,34 +12025,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:1279 -#: templates/js/translated/company.js:1567 templates/js/translated/part.js:798 -#: templates/js/translated/part.js:1210 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Template part" msgstr "" #: templates/js/translated/company.js:1283 -#: templates/js/translated/company.js:1571 templates/js/translated/part.js:802 -#: templates/js/translated/part.js:1214 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:803 +#: templates/js/translated/part.js:1215 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1464 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1465 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1527 +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1528 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1528 +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1529 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1433 +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1434 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1549 +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1550 msgid "Delete Parameter" msgstr "" @@ -12094,23 +12186,23 @@ msgstr "" msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2499 +#: templates/js/translated/forms.js:2500 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3113 +#: templates/js/translated/forms.js:3114 msgid "Select Columns" msgstr "" @@ -12211,7 +12303,7 @@ msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 -#: templates/js/translated/part.js:1604 +#: templates/js/translated/part.js:1605 msgid "ID" msgstr "" @@ -12292,347 +12384,343 @@ msgstr "" 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 +#: templates/js/translated/part.js:333 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:355 +#: templates/js/translated/part.js:356 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:356 +#: templates/js/translated/part.js:357 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:370 +#: templates/js/translated/part.js:371 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:383 +#: templates/js/translated/part.js:384 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:388 +#: templates/js/translated/part.js:389 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:397 +#: templates/js/translated/part.js:398 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:401 +#: templates/js/translated/part.js:402 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:406 +#: templates/js/translated/part.js:407 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:430 +#: templates/js/translated/part.js:431 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:432 +#: templates/js/translated/part.js:433 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:433 +#: templates/js/translated/part.js:434 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:462 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:463 +#: templates/js/translated/part.js:464 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:474 +#: templates/js/translated/part.js:475 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:531 +#: templates/js/translated/part.js:532 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:532 +#: templates/js/translated/part.js:533 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:546 +#: templates/js/translated/part.js:547 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:548 +#: templates/js/translated/part.js:549 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:549 +#: templates/js/translated/part.js:550 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:550 +#: templates/js/translated/part.js:551 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:557 +#: templates/js/translated/part.js:558 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:593 +#: templates/js/translated/part.js:594 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:595 +#: templates/js/translated/part.js:596 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:600 +#: templates/js/translated/part.js:601 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:602 +#: templates/js/translated/part.js:603 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:619 +#: templates/js/translated/part.js:620 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:629 +#: templates/js/translated/part.js:630 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:632 +#: templates/js/translated/part.js:633 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:657 +#: templates/js/translated/part.js:658 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:685 +#: templates/js/translated/part.js:686 #: templates/js/translated/table_filters.js:747 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:688 +#: templates/js/translated/part.js:689 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:748 +#: templates/js/translated/part.js:749 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:771 +#: templates/js/translated/part.js:772 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +#: templates/js/translated/part.js:795 templates/js/translated/part.js:1207 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:806 +#: templates/js/translated/part.js:807 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:810 +#: templates/js/translated/part.js:811 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:897 +#: templates/js/translated/part.js:898 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:901 +#: templates/js/translated/part.js:902 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1050 +#: templates/js/translated/part.js:1051 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1145 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +#: templates/js/translated/part.js:1113 templates/js/translated/part.js:1155 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1281 +#: templates/js/translated/part.js:1282 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1599 +#: templates/js/translated/part.js:1600 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1662 +#: templates/js/translated/part.js:1663 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1674 +#: templates/js/translated/part.js:1675 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1682 +#: templates/js/translated/part.js:1683 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1716 +#: templates/js/translated/part.js:1717 #: templates/js/translated/purchase_order.js:1654 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1860 +#: templates/js/translated/part.js:1861 #: templates/js/translated/purchase_order.js:2153 #: templates/js/translated/return_order.js:755 #: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1906 +#: templates/js/translated/part.js:1907 #: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1970 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1991 +#: templates/js/translated/part.js:1992 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 +#: templates/js/translated/part.js:2080 templates/js/translated/part.js:2506 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2200 +#: templates/js/translated/part.js:2201 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2205 +#: templates/js/translated/part.js:2206 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2235 +#: templates/js/translated/part.js:2236 msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2286 +#: templates/js/translated/part.js:2287 msgid "part" msgstr "" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2288 msgid "parts" msgstr "" -#: templates/js/translated/part.js:2383 +#: templates/js/translated/part.js:2384 msgid "No category" msgstr "" -#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2546 +#: templates/js/translated/part.js:2547 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2644 +#: templates/js/translated/part.js:2645 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2760 +#: templates/js/translated/part.js:2761 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2776 +#: templates/js/translated/part.js:2777 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2865 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2887 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/part.js:2938 templates/js/translated/stock.js:1457 #: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2940 +#: templates/js/translated/part.js:2942 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2956 +#: templates/js/translated/part.js:2958 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2970 +#: templates/js/translated/part.js:2972 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3051 templates/js/translated/part.js:3052 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3052 +#: templates/js/translated/part.js:3054 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3058 +#: templates/js/translated/part.js:3060 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3108 +#: templates/js/translated/part.js:3110 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3114 +#: templates/js/translated/part.js:3116 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3210 +#: templates/js/translated/part.js:3212 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3226 +#: templates/js/translated/part.js:3228 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3271 +#: templates/js/translated/part.js:3273 msgid "Minimum Stock Level" msgstr "" @@ -13240,10 +13328,6 @@ msgstr "" 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 "" @@ -13412,7 +13496,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:401 +#: templates/js/translated/stock.js:1042 users/models.py:392 msgid "Add" msgstr "" @@ -14303,34 +14387,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:384 +#: users/models.py:375 msgid "Permission set" msgstr "" -#: users/models.py:393 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "View" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "Permission to view items" msgstr "" -#: users/models.py:401 +#: users/models.py:392 msgid "Permission to add items" msgstr "" -#: users/models.py:405 +#: users/models.py:396 msgid "Change" msgstr "" -#: users/models.py:407 +#: users/models.py:398 msgid "Permissions to edit items" msgstr "" -#: users/models.py:413 +#: users/models.py:404 msgid "Permission to delete items" msgstr "" + diff --git a/src/backend/InvenTree/locale/sl/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/sl/LC_MESSAGES/django.po index 0c4680395b..222b064fcd 100644 --- a/src/backend/InvenTree/locale/sl/LC_MESSAGES/django.po +++ b/src/backend/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-05-31 07:08+0000\n" -"PO-Revision-Date: 2024-05-27 11:54\n" +"POT-Creation-Date: 2024-06-26 03:18+0000\n" +"PO-Revision-Date: 2024-06-26 06:04\n" "Last-Translator: \n" "Language-Team: Slovenian\n" "Language: sl_SI\n" @@ -21,7 +21,7 @@ msgstr "" msgid "API endpoint not found" msgstr "API vmesnik ni najden" -#: InvenTree/api.py:536 +#: InvenTree/api.py:520 msgid "User does not have permission to view this model" msgstr "Uporabnik nima dovoljenja pogleda tega modela" @@ -52,25 +52,25 @@ msgstr "Vnesena napačna količina ({exc})" msgid "Error details can be found in the admin panel" msgstr "Podrobnosti napake so vidne v pogledu administratorja" -#: InvenTree/fields.py:139 +#: InvenTree/fields.py:136 msgid "Enter date" msgstr "Vnesi datum" -#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 -#: build/serializers.py:531 build/templates/build/sidebar.html:21 -#: company/models.py:849 company/templates/company/sidebar.html:37 -#: order/models.py:1332 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:205 InvenTree/models.py:918 build/serializers.py:452 +#: build/serializers.py:530 build/templates/build/sidebar.html:21 +#: company/models.py:817 company/templates/company/sidebar.html:37 +#: order/models.py:1296 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:3218 part/templates/part/part_sidebar.html:63 +#: part/models.py:3183 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_report.html:172 -#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 -#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 -#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 -#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:230 stock/models.py:2309 stock/models.py:2431 +#: stock/serializers.py:632 stock/serializers.py:790 stock/serializers.py:886 +#: stock/serializers.py:936 stock/serializers.py:1239 stock/serializers.py:1328 +#: stock/serializers.py:1493 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1080 +#: templates/js/translated/part.js:1081 #: templates/js/translated/purchase_order.js:2200 #: templates/js/translated/return_order.js:775 #: templates/js/translated/sales_order.js:1103 @@ -120,15 +120,15 @@ msgstr "Potrdite e-pošto" msgid "You must type the same email each time." msgstr "E-pošti se morata ujemati" -#: InvenTree/forms.py:253 InvenTree/forms.py:261 +#: InvenTree/forms.py:248 InvenTree/forms.py:256 msgid "The provided primary email address is not valid." msgstr "Podana epošta ni veljavna." -#: InvenTree/forms.py:268 +#: InvenTree/forms.py:263 msgid "The provided email domain is not approved." msgstr "Domena epošte ni podprta." -#: InvenTree/forms.py:395 +#: InvenTree/forms.py:390 msgid "Registration is disabled." msgstr "Registracija je onemogočena." @@ -171,35 +171,35 @@ msgstr "Število unikatnih serijskih številk ({len(serials)}) se mora ujemati s msgid "Remove HTML tags from this value" msgstr "Odstranite oznako HTML iz te vrednosti" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Connection error" msgstr "Napaka povezave" -#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 msgid "Server responded with invalid status code" msgstr "Odziv serverja: napravilni status kode" -#: InvenTree/helpers_model.py:158 +#: InvenTree/helpers_model.py:148 msgid "Exception occurred" msgstr "Pojavila se je izjema" -#: InvenTree/helpers_model.py:168 +#: InvenTree/helpers_model.py:158 msgid "Server responded with invalid Content-Length value" msgstr "Odziv serverja: napačna dolžina vrednosti" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:161 msgid "Image size is too large" msgstr "Prevelika velikost slike" -#: InvenTree/helpers_model.py:183 +#: InvenTree/helpers_model.py:173 msgid "Image download exceeded maximum size" msgstr "Prenos slike presegel največjo velikost" -#: InvenTree/helpers_model.py:188 +#: InvenTree/helpers_model.py:178 msgid "Remote server returned empty response" msgstr "Oddaljeni server vrnil prazen odziv" -#: InvenTree/helpers_model.py:196 +#: InvenTree/helpers_model.py:186 msgid "Supplied URL is not a valid image file" msgstr "Podani URL ni veljavna slikovna datoteka" @@ -296,46 +296,50 @@ msgid "Portuguese (Brazilian)" msgstr "Portugalščina (Brazilsko)" #: InvenTree/locales.py:41 +msgid "Romanian" +msgstr "" + +#: InvenTree/locales.py:42 msgid "Russian" msgstr "Ruščina" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:43 msgid "Slovak" msgstr "Slovaščina" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:44 msgid "Slovenian" msgstr "Slovenščina" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:45 msgid "Serbian" msgstr "Srbščina" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:46 msgid "Swedish" msgstr "Švedščina" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:47 msgid "Thai" msgstr "Tajščina" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:48 msgid "Turkish" msgstr "Turščina" -#: InvenTree/locales.py:48 +#: InvenTree/locales.py:49 msgid "Ukrainian" msgstr "" -#: InvenTree/locales.py:49 +#: InvenTree/locales.py:50 msgid "Vietnamese" msgstr "Vietnamščina" -#: InvenTree/locales.py:50 +#: InvenTree/locales.py:51 msgid "Chinese (Simplified)" msgstr "Kitajščina (poenostavljena)" -#: InvenTree/locales.py:51 +#: InvenTree/locales.py:52 msgid "Chinese (Traditional)" msgstr "Kitajščina (tradicionalno)" @@ -344,153 +348,65 @@ msgstr "Kitajščina (tradicionalno)" msgid "[{site_name}] Log in to the app" msgstr "[{site_name}] Prijavite se v aplikacijo" -#: InvenTree/magic_login.py:38 company/models.py:133 +#: InvenTree/magic_login.py:38 company/models.py:136 #: company/templates/company/company_base.html:138 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:677 msgid "Email" msgstr "E-pošta" -#: InvenTree/models.py:107 +#: InvenTree/models.py:105 msgid "Error running plugin validation" msgstr "Napaka pri izvajanju preverjanja vtičnika" -#: InvenTree/models.py:176 +#: InvenTree/models.py:174 msgid "Metadata must be a python dict object" msgstr "Metapodatki morajo biti objekt tipa python dict" -#: InvenTree/models.py:182 +#: InvenTree/models.py:180 msgid "Plugin Metadata" msgstr "Metapodatki vtičnika" -#: InvenTree/models.py:183 +#: InvenTree/models.py:181 msgid "JSON metadata field, for use by external plugins" msgstr "Polje metapodatkov JSON za uporabo pri zunanjih vtičnikih" -#: InvenTree/models.py:413 +#: InvenTree/models.py:408 msgid "Improperly formatted pattern" msgstr "Nepravilno nastavljen vzorec" -#: InvenTree/models.py:420 +#: InvenTree/models.py:415 msgid "Unknown format key specified" msgstr "Nastavljen neprepoznan ključ formata" -#: InvenTree/models.py:426 +#: InvenTree/models.py:421 msgid "Missing required format key" msgstr "Manjka obvezen ključ formata" -#: InvenTree/models.py:437 +#: InvenTree/models.py:432 msgid "Reference field cannot be empty" msgstr "Referenčno polje ne sme biti prazno" -#: InvenTree/models.py:445 +#: InvenTree/models.py:440 msgid "Reference must match required pattern" msgstr "Referenca se mora ujemati s vzorcem" -#: InvenTree/models.py:476 +#: InvenTree/models.py:471 msgid "Reference number is too large" msgstr "Referenčna številka prevelika" -#: InvenTree/models.py:550 -msgid "Missing file" -msgstr "Manjka datoteka" - -#: InvenTree/models.py:551 -msgid "Missing external link" -msgstr "Manjka zunanja povezava" - -#: InvenTree/models.py:572 stock/models.py:2437 -#: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:326 -msgid "Attachment" -msgstr "Priloga" - -#: InvenTree/models.py:573 -msgid "Select file to attach" -msgstr "Izberite prilogo" - -#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:831 -#: order/models.py:303 order/models.py:1337 order/models.py:1753 -#: part/admin.py:55 part/models.py:962 -#: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_report.html:164 -#: stock/admin.py:225 templates/js/translated/company.js:1319 -#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2455 -#: templates/js/translated/purchase_order.js:2040 -#: templates/js/translated/purchase_order.js:2204 -#: templates/js/translated/return_order.js:779 -#: templates/js/translated/sales_order.js:1092 -#: templates/js/translated/sales_order.js:2023 -msgid "Link" -msgstr "Povezava" - -#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 -#: stock/models.py:836 -msgid "Link to external URL" -msgstr "Zunanja povezava" - -#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:341 -msgid "Comment" -msgstr "Komentar" - -#: InvenTree/models.py:589 -msgid "File comment" -msgstr "Komentar datoteke" - -#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 -#: common/models.py:2518 common/models.py:2742 common/models.py:2743 -#: common/models.py:2988 common/models.py:2989 part/models.py:3228 -#: part/models.py:3315 part/models.py:3408 part/models.py:3436 -#: plugin/models.py:259 plugin/models.py:260 -#: report/templates/report/inventree_test_report.html:105 -#: templates/js/translated/stock.js:3036 users/models.py:111 -msgid "User" -msgstr "Uporabnik" - -#: InvenTree/models.py:602 -msgid "upload date" -msgstr "naloži datum" - -#: InvenTree/models.py:624 -msgid "Filename must not be empty" -msgstr "Ime ne sme biti prazno" - -#: InvenTree/models.py:635 -msgid "Invalid attachment directory" -msgstr "Neveljavna mapa prilog" - -#: InvenTree/models.py:665 -#, python-brace-format -msgid "Filename contains illegal character '{c}'" -msgstr "Ime datoteke vsebuje neveljavni znak '{c}'" - -#: InvenTree/models.py:668 -msgid "Filename missing extension" -msgstr "Datoteki manjka končnica" - -#: InvenTree/models.py:677 -msgid "Attachment with this filename already exists" -msgstr "Priloga s tem imenom že obstaja" - -#: InvenTree/models.py:684 -msgid "Error renaming file" -msgstr "Napaka pri preimenovanju datoteke" - -#: InvenTree/models.py:860 +#: InvenTree/models.py:719 msgid "Duplicate names cannot exist under the same parent" msgstr "Podvojena imena ne morejo obstajati pod istim nadrejenim elementom" -#: InvenTree/models.py:877 +#: InvenTree/models.py:736 msgid "Invalid choice" msgstr "Nedovoljena izbira" -#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 -#: common/serializers.py:403 company/models.py:614 machine/models.py:24 -#: part/models.py:898 part/models.py:3659 plugin/models.py:50 -#: report/models.py:149 stock/models.py:72 +#: InvenTree/models.py:766 common/models.py:2623 common/models.py:3036 +#: common/serializers.py:408 company/models.py:580 machine/models.py:24 +#: part/models.py:891 part/models.py:3639 plugin/models.py:51 +#: report/models.py:150 stock/models.py:73 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:83 @@ -501,25 +417,25 @@ msgstr "Nedovoljena izbira" #: templates/js/translated/company.js:724 #: templates/js/translated/company.js:913 #: templates/js/translated/company.js:1165 -#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 -#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1187 +#: templates/js/translated/part.js:1475 templates/js/translated/part.js:1611 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Ime" -#: InvenTree/models.py:913 build/models.py:218 -#: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:523 company/models.py:840 +#: InvenTree/models.py:772 build/models.py:220 +#: build/templates/build/detail.html:24 common/models.py:138 +#: company/models.py:509 company/models.py:808 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 order/models.py:289 -#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 -#: part/models.py:3674 part/templates/part/category.html:82 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:914 +#: part/models.py:3654 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:155 -#: report/models.py:509 report/models.py:535 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 #: report/templates/report/inventree_build_order_report.html:117 -#: stock/admin.py:55 stock/models.py:78 stock/templates/stock/location.html:125 +#: stock/admin.py:54 stock/models.py:79 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 @@ -528,10 +444,10 @@ msgstr "Ime" #: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 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:2354 -#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1239 +#: templates/js/translated/part.js:1484 templates/js/translated/part.js:1622 +#: templates/js/translated/part.js:1959 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2897 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1706 #: templates/js/translated/purchase_order.js:1849 @@ -544,149 +460,141 @@ msgstr "Ime" msgid "Description" msgstr "Opis" -#: InvenTree/models.py:914 stock/models.py:79 +#: InvenTree/models.py:773 stock/models.py:80 msgid "Description (optional)" msgstr "Opis (opcijsko)" -#: InvenTree/models.py:923 -msgid "parent" -msgstr "nadrejen" - -#: InvenTree/models.py:929 templates/js/translated/part.js:2793 +#: InvenTree/models.py:788 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Pot" -#: InvenTree/models.py:1035 +#: InvenTree/models.py:918 msgid "Markdown notes (optional)" msgstr "Markdown opombe (neobvezno)" -#: InvenTree/models.py:1064 +#: InvenTree/models.py:947 msgid "Barcode Data" msgstr "Podatki čtrne kode" -#: InvenTree/models.py:1065 +#: InvenTree/models.py:948 msgid "Third party barcode data" msgstr "Podatki črtne kode tretje osebe" -#: InvenTree/models.py:1071 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "Oznaka črtne kode" -#: InvenTree/models.py:1072 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "Enolična oznaka podatkov črtne kode" -#: InvenTree/models.py:1125 +#: InvenTree/models.py:1008 msgid "Existing barcode found" msgstr "Črtna koda že obstaja" -#: InvenTree/models.py:1168 +#: InvenTree/models.py:1051 msgid "Server Error" msgstr "Napaka strežnika" -#: InvenTree/models.py:1169 +#: InvenTree/models.py:1052 msgid "An error has been logged by the server." msgstr "Zaznana napaka na strežniku." -#: InvenTree/serializers.py:62 part/models.py:4212 +#: InvenTree/serializers.py:63 part/models.py:4192 msgid "Must be a valid number" msgstr "Mora biti veljavna številka" -#: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:3036 +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3001 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Valuta" -#: InvenTree/serializers.py:102 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "Izberite valuto med razpoložljivimi možnostmi" -#: InvenTree/serializers.py:441 +#: InvenTree/serializers.py:442 msgid "You do not have permission to change this user role." msgstr "Nimate dovoljenja za spreminjanje vloge tega uporabnika." -#: InvenTree/serializers.py:453 +#: InvenTree/serializers.py:454 msgid "Only superusers can create new users" msgstr "Samo superuporabniki lahko ustvarijo nove uporabnike" -#: InvenTree/serializers.py:472 +#: InvenTree/serializers.py:473 msgid "Your account has been created." msgstr "Vaš račun je bil ustvarjen." -#: InvenTree/serializers.py:474 +#: InvenTree/serializers.py:475 msgid "Please use the password reset function to login" msgstr "Za prijavo uporabite funkcijo ponastavitve gesla" -#: InvenTree/serializers.py:481 +#: InvenTree/serializers.py:482 msgid "Welcome to InvenTree" msgstr "Dobrodošli v InvenTree" -#: InvenTree/serializers.py:542 -msgid "Filename" -msgstr "Ime datoteke" - -#: InvenTree/serializers.py:576 +#: InvenTree/serializers.py:540 msgid "Invalid value" msgstr "Neveljavna vrednost" -#: InvenTree/serializers.py:596 +#: InvenTree/serializers.py:560 msgid "Data File" msgstr "Podatki datoteke" -#: InvenTree/serializers.py:597 +#: InvenTree/serializers.py:561 msgid "Select data file for upload" msgstr "Izberite datoteke za naložiti" -#: InvenTree/serializers.py:614 +#: InvenTree/serializers.py:578 msgid "Unsupported file type" msgstr "Nepodprta vrsta datotek" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:584 msgid "File is too large" msgstr "Datoteka je prevelika" -#: InvenTree/serializers.py:641 +#: InvenTree/serializers.py:605 msgid "No columns found in file" msgstr "V datoteki ni bilo najdenih stolpcev" -#: InvenTree/serializers.py:644 +#: InvenTree/serializers.py:608 msgid "No data rows found in file" msgstr "V datoteki ni bilo njadenih vrstic" -#: InvenTree/serializers.py:757 +#: InvenTree/serializers.py:721 msgid "No data rows provided" msgstr "Niso bile podane vrste s podatki" -#: InvenTree/serializers.py:760 +#: InvenTree/serializers.py:724 msgid "No data columns supplied" msgstr "Niso bili podani stolpci s podatki" -#: InvenTree/serializers.py:827 +#: InvenTree/serializers.py:791 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Manjka obvezni stolpec: '{name}'" -#: InvenTree/serializers.py:836 +#: InvenTree/serializers.py:800 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Dvojni stolpec: '{col}'" -#: InvenTree/serializers.py:859 +#: InvenTree/serializers.py:840 msgid "Remote Image" msgstr "Oddaljena slika" -#: InvenTree/serializers.py:860 +#: InvenTree/serializers.py:841 msgid "URL of remote image file" msgstr "Povezava do oddaljene slike" -#: InvenTree/serializers.py:878 +#: InvenTree/serializers.py:859 msgid "Downloading images from remote URL is not enabled" msgstr "Prenos slik iz oddaljene povezave ni omogočen" -#: InvenTree/status.py:66 part/serializers.py:1178 +#: InvenTree/status.py:66 part/serializers.py:1174 msgid "Background worker check failed" msgstr "Nadzor dela v ozadju neuspel" @@ -698,27 +606,27 @@ msgstr "Zaledje e-pošte ni nastavljeno" msgid "InvenTree system health checks failed" msgstr "Preverjanje zdravja sistema InvenTree neuspelo" -#: InvenTree/templatetags/inventree_extras.py:183 +#: InvenTree/templatetags/inventree_extras.py:184 msgid "Unknown database" msgstr "" -#: InvenTree/validators.py:31 InvenTree/validators.py:33 +#: InvenTree/validators.py:32 InvenTree/validators.py:34 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:39 +#: InvenTree/validators.py:40 msgid "Not a valid currency code" msgstr "Neveljavna oznaka valute" -#: InvenTree/validators.py:121 InvenTree/validators.py:137 +#: InvenTree/validators.py:118 InvenTree/validators.py:134 msgid "Overage value must not be negative" msgstr "Prestara vrednost ne sme biti negativna" -#: InvenTree/validators.py:139 +#: InvenTree/validators.py:136 msgid "Overage must not exceed 100%" msgstr "Prestarost ne sme presegati 100%" -#: InvenTree/validators.py:145 +#: InvenTree/validators.py:142 msgid "Invalid value for overage" msgstr "Neveljavna vrednost za prestarost" @@ -750,14 +658,14 @@ 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:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: build/api.py:299 part/models.py:4070 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:300 part/models.py:4084 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4064 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2529 #: templates/js/translated/table_filters.js:186 @@ -778,30 +686,30 @@ msgstr "" msgid "Allocated" msgstr "" -#: build/api.py:311 company/models.py:904 company/serializers.py:383 +#: build/api.py:311 company/models.py:872 company/serializers.py:359 #: 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:2561 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:234 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 -#: templates/js/translated/part.js:699 +#: templates/js/translated/part.js:693 templates/js/translated/part.js:695 +#: templates/js/translated/part.js:700 #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:575 msgid "Available" msgstr "" -#: build/models.py:83 build/templates/build/build_base.html:9 +#: build/models.py:85 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_report.html:105 -#: stock/serializers.py:83 templates/email/build_order_completed.html:16 +#: stock/serializers.py:82 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:2892 msgid "Build Order" msgstr "Nalog izgradnje" -#: build/models.py:84 build/templates/build/build_base.html:13 +#: build/models.py:86 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 @@ -812,25 +720,25 @@ msgstr "Nalog izgradnje" msgid "Build Orders" msgstr "Nalogi izgradnje" -#: build/models.py:131 +#: build/models.py:133 msgid "Invalid choice for parent build" msgstr "Neveljavna izbira za nadrejeno izgradnjo" -#: build/models.py:142 order/models.py:240 +#: build/models.py:144 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "" -#: build/models.py:148 +#: build/models.py:150 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:209 +#: build/models.py:211 msgid "Build Order Reference" msgstr "Referenca naloga izgradnje" -#: build/models.py:210 order/models.py:463 order/models.py:928 -#: order/models.py:1325 order/models.py:2056 part/admin.py:419 -#: part/models.py:4105 part/templates/part/upload_bom.html:54 +#: build/models.py:212 order/models.py:463 order/models.py:926 +#: order/models.py:1289 order/models.py:2020 part/admin.py:411 +#: part/models.py:4085 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_purchase_order_report.html:28 #: report/templates/report/inventree_return_order_report.html:26 @@ -844,27 +752,27 @@ msgstr "Referenca naloga izgradnje" msgid "Reference" msgstr "Referenca" -#: build/models.py:221 +#: build/models.py:223 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:229 build/templates/build/build_base.html:183 +#: build/models.py:231 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Nadrejena izgradnja" -#: build/models.py:230 +#: build/models.py:232 msgid "BuildOrder to which this build is allocated" msgstr "Nalog izgradnje na katerega se ta izgradnaj nanaša" -#: build/models.py:235 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 -#: order/models.py:1450 order/models.py:1595 order/models.py:1596 -#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 -#: part/models.py:3191 part/models.py:3335 part/models.py:3358 -#: part/models.py:3379 part/models.py:3401 part/models.py:3511 -#: part/models.py:3807 part/models.py:3963 part/models.py:4056 -#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 +#: build/models.py:237 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1026 order/api.py:805 +#: order/models.py:1414 order/models.py:1559 order/models.py:1560 +#: part/api.py:1494 part/api.py:1788 part/models.py:395 part/models.py:3012 +#: part/models.py:3156 part/models.py:3303 part/models.py:3324 +#: part/models.py:3346 part/models.py:3477 part/models.py:3787 +#: part/models.py:3943 part/models.py:4036 part/models.py:4395 +#: part/serializers.py:1120 part/serializers.py:1726 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -875,8 +783,8 @@ msgstr "Nalog izgradnje na katerega se ta izgradnaj nanaša" #: report/templates/report/inventree_return_order_report.html:24 #: report/templates/report/inventree_sales_order_report.html:27 #: report/templates/report/inventree_stock_location_report.html:102 -#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 -#: stock/serializers.py:818 templates/InvenTree/search.html:82 +#: stock/serializers.py:109 stock/serializers.py:157 stock/serializers.py:423 +#: stock/serializers.py:820 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 @@ -889,8 +797,8 @@ msgstr "Nalog izgradnje na katerega se ta izgradnaj nanaša" #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 -#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2323 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:1944 templates/js/translated/part.js:2016 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 #: templates/js/translated/purchase_order.js:751 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1848 @@ -908,107 +816,107 @@ msgstr "Nalog izgradnje na katerega se ta izgradnaj nanaša" msgid "Part" msgstr "Del" -#: build/models.py:243 +#: build/models.py:245 msgid "Select part to build" msgstr "Izberite del za izgradnjo" -#: build/models.py:248 +#: build/models.py:250 msgid "Sales Order Reference" msgstr "Referenca dobavnica" -#: build/models.py:252 +#: build/models.py:254 msgid "SalesOrder to which this build is allocated" msgstr "Dobavnica na katero se navezuje ta izgradnja" -#: build/models.py:257 build/serializers.py:1000 +#: build/models.py:259 build/serializers.py:999 #: templates/js/translated/build.js:1731 #: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "Lokacija vira" -#: build/models.py:261 +#: build/models.py:263 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:266 +#: build/models.py:268 msgid "Destination Location" msgstr "Ciljna lokacija" -#: build/models.py:270 +#: build/models.py:272 msgid "Select location where the completed items will be stored" msgstr "Izberite lokacijo, kjer bodo končne postavke shranjene" -#: build/models.py:274 +#: build/models.py:276 msgid "Build Quantity" msgstr "Količina izgradenj" -#: build/models.py:277 +#: build/models.py:279 msgid "Number of stock items to build" msgstr "Število postavk za izgradnjo" -#: build/models.py:281 +#: build/models.py:283 msgid "Completed items" msgstr "Končane postavke" -#: build/models.py:283 +#: build/models.py:285 msgid "Number of stock items which have been completed" msgstr "Število postavk zaloge, ki so bile končane" -#: build/models.py:287 +#: build/models.py:289 msgid "Build Status" msgstr "Status izgradnje" -#: build/models.py:291 +#: build/models.py:293 msgid "Build status code" msgstr "Koda statusa izgradnje" -#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 -#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 +#: build/models.py:302 build/serializers.py:286 order/serializers.py:580 +#: stock/models.py:838 stock/serializers.py:74 stock/serializers.py:1458 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Številka serije" -#: build/models.py:304 build/serializers.py:288 +#: build/models.py:306 build/serializers.py:287 msgid "Batch code for this build output" msgstr "Številka serije za to izgradnjo" -#: build/models.py:307 order/models.py:316 order/serializers.py:120 -#: part/models.py:1122 part/templates/part/part_base.html:310 +#: build/models.py:309 order/models.py:316 order/serializers.py:119 +#: part/models.py:1115 part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:338 #: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "Datum ustvarjenja" -#: build/models.py:311 +#: build/models.py:313 msgid "Target completion date" msgstr "Rok dokončanja" -#: build/models.py:312 +#: build/models.py:314 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:315 order/models.py:521 order/models.py:2101 +#: build/models.py:317 order/models.py:521 order/models.py:2065 #: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "Datom končanja" -#: build/models.py:321 +#: build/models.py:323 msgid "completed by" msgstr "dokončal" -#: build/models.py:329 templates/js/translated/build.js:2207 +#: build/models.py:331 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "Izdal" -#: build/models.py:330 +#: build/models.py:332 msgid "User who issued this build order" msgstr "Uporabnik, ki je izdal nalog za izgradnjo" -#: build/models.py:338 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:145 +#: build/models.py:340 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:147 #: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:232 part/models.py:1139 +#: order/templates/order/sales_order_base.html:232 part/models.py:1132 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_report.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 @@ -1019,31 +927,36 @@ msgstr "Uporabnik, ki je izdal nalog za izgradnjo" msgid "Responsible" msgstr "Odgovoren" -#: build/models.py:339 +#: build/models.py:341 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:344 build/templates/build/detail.html:108 +#: build/models.py:346 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:184 -#: part/templates/part/part_base.html:383 stock/models.py:836 +#: part/templates/part/part_base.html:383 stock/models.py:834 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "Zunanja povezava" -#: build/models.py:349 +#: build/models.py:347 common/models.py:3178 part/models.py:956 +#: stock/models.py:834 +msgid "Link to external URL" +msgstr "Zunanja povezava" + +#: build/models.py:351 msgid "Build Priority" msgstr "" -#: build/models.py:352 +#: build/models.py:354 msgid "Priority of this build order" msgstr "" -#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: build/models.py:361 common/models.py:131 order/admin.py:18 #: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 #: templates/js/translated/build.js:2144 #: templates/js/translated/purchase_order.js:1710 @@ -1054,65 +967,65 @@ msgstr "" msgid "Project Code" msgstr "" -#: build/models.py:360 +#: build/models.py:362 msgid "Project code for this build order" msgstr "" -#: build/models.py:593 build/models.py:658 +#: build/models.py:595 build/models.py:660 msgid "Failed to offload task to complete build allocations" msgstr "" -#: build/models.py:615 +#: build/models.py:617 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Nalog izgradnje {build} je dokončan" -#: build/models.py:621 +#: build/models.py:623 msgid "A build order has been completed" msgstr "Nalog izgradnej dokončan" -#: build/models.py:847 build/models.py:932 +#: build/models.py:849 build/models.py:934 msgid "No build output specified" msgstr "Ni določena izgradnja" -#: build/models.py:850 +#: build/models.py:852 msgid "Build output is already completed" msgstr "Igradnja je že dokončana" -#: build/models.py:853 +#: build/models.py:855 msgid "Build output does not match Build Order" msgstr "Izgradnja se ne ujema s nalogom izdelave" -#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 -#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 -#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 -#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 +#: build/models.py:938 build/serializers.py:219 build/serializers.py:268 +#: build/serializers.py:866 order/models.py:559 order/serializers.py:432 +#: order/serializers.py:575 part/serializers.py:1484 part/serializers.py:1884 +#: stock/models.py:677 stock/models.py:1495 stock/serializers.py:603 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:941 build/serializers.py:225 +#: build/models.py:943 build/serializers.py:224 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1001 build/serializers.py:548 +#: build/models.py:1003 build/serializers.py:547 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1352 +#: build/models.py:1344 msgid "Build Order Line Item" msgstr "" -#: build/models.py:1377 +#: build/models.py:1369 msgid "Build object" msgstr "" -#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 -#: build/serializers.py:254 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2539 -#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 -#: part/forms.py:48 part/models.py:3205 part/models.py:4078 +#: build/models.py:1383 build/models.py:1639 build/serializers.py:206 +#: build/serializers.py:253 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2509 +#: order/models.py:1272 order/models.py:1931 order/serializers.py:1327 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3170 part/models.py:4058 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1121,8 +1034,8 @@ msgstr "" #: report/templates/report/inventree_sales_order_report.html:29 #: report/templates/report/inventree_stock_location_report.html:104 #: report/templates/report/inventree_test_report.html:90 -#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 -#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:125 stock/serializers.py:165 stock/serializers.py:594 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1133,8 +1046,8 @@ msgstr "" #: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 #: templates/js/translated/model_renderers.js:236 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:962 +#: templates/js/translated/part.js:1812 templates/js/translated/part.js:3342 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1154,38 +1067,38 @@ msgstr "" msgid "Quantity" msgstr "Količina" -#: build/models.py:1392 +#: build/models.py:1384 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1472 +#: build/models.py:1464 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:1481 +#: build/models.py:1473 #, 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:1491 order/models.py:1918 +#: build/models.py:1483 order/models.py:1882 msgid "Stock item is over-allocated" msgstr "Preveč zaloge je prestavljene" -#: build/models.py:1497 order/models.py:1921 +#: build/models.py:1489 order/models.py:1885 msgid "Allocation quantity must be greater than zero" msgstr "Prestavljena količina mora biti večja od 0" -#: build/models.py:1503 +#: build/models.py:1495 msgid "Quantity must be 1 for serialized stock" msgstr "Količina za zalogo s serijsko številko mora biti 1" -#: build/models.py:1562 +#: build/models.py:1554 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 -#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 -#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: build/models.py:1626 build/serializers.py:846 order/serializers.py:1171 +#: order/serializers.py:1192 stock/models.py:358 stock/serializers.py:91 +#: stock/serializers.py:697 stock/serializers.py:1177 stock/serializers.py:1289 #: stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 @@ -1201,70 +1114,70 @@ msgstr "" msgid "Stock Item" msgstr "Postavka zaloge" -#: build/models.py:1635 +#: build/models.py:1627 msgid "Source stock item" msgstr "Izvorna postavka zaloge" -#: build/models.py:1648 +#: build/models.py:1640 msgid "Stock quantity to allocate to build" msgstr "Količina zaloge za prestavljanje za izgradnjo" -#: build/models.py:1656 +#: build/models.py:1648 msgid "Install into" msgstr "Inštaliraj v" -#: build/models.py:1657 +#: build/models.py:1649 msgid "Destination stock item" msgstr "Destinacija postavke zaloge" -#: build/serializers.py:157 build/serializers.py:876 +#: build/serializers.py:156 build/serializers.py:875 #: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "Izgradnja" -#: build/serializers.py:169 +#: build/serializers.py:168 msgid "Build output does not match the parent build" msgstr "Izgradnja se ne ujema z nadrejeno izgradnjo" -#: build/serializers.py:173 +#: build/serializers.py:172 msgid "Output part does not match BuildOrder part" msgstr "Izhodni del se ne ujema s naročilom sestava" -#: build/serializers.py:177 +#: build/serializers.py:176 msgid "This build output has already been completed" msgstr "Ta sestava je že zaključena" -#: build/serializers.py:188 +#: build/serializers.py:187 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:208 build/serializers.py:255 +#: build/serializers.py:207 build/serializers.py:254 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:276 +#: build/serializers.py:275 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:279 +#: build/serializers.py:278 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:294 order/serializers.py:589 order/serializers.py:1343 -#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:293 order/serializers.py:588 order/serializers.py:1331 +#: stock/serializers.py:614 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:295 +#: build/serializers.py:294 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 -#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 -#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 -#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 -#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 +#: build/serializers.py:299 build/serializers.py:440 build/serializers.py:512 +#: order/serializers.py:564 order/serializers.py:672 order/serializers.py:1656 +#: part/serializers.py:1140 stock/serializers.py:100 stock/serializers.py:625 +#: stock/serializers.py:785 stock/serializers.py:881 stock/serializers.py:1321 +#: stock/serializers.py:1577 stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:1001 #: templates/js/translated/build.js:2372 @@ -1280,54 +1193,54 @@ msgstr "" msgid "Location" msgstr "" -#: build/serializers.py:301 +#: build/serializers.py:300 msgid "Stock location for build output" msgstr "" -#: build/serializers.py:315 +#: build/serializers.py:314 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:316 +#: build/serializers.py:315 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:331 +#: build/serializers.py:330 msgid "Serial numbers must be provided for trackable parts" msgstr "" -#: build/serializers.py:356 stock/api.py:1031 +#: build/serializers.py:355 stock/api.py:1041 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:403 build/serializers.py:465 build/serializers.py:554 +#: build/serializers.py:402 build/serializers.py:464 build/serializers.py:553 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:442 +#: build/serializers.py:441 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:448 +#: build/serializers.py:447 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:449 +#: build/serializers.py:448 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:454 +#: build/serializers.py:453 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:514 +#: build/serializers.py:513 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:520 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:952 -#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 -#: stock/serializers.py:930 stock/serializers.py:1469 +#: build/serializers.py:519 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2044 order/serializers.py:596 stock/admin.py:164 +#: stock/serializers.py:932 stock/serializers.py:1465 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 @@ -1339,188 +1252,188 @@ msgstr "" msgid "Status" msgstr "" -#: build/serializers.py:526 +#: build/serializers.py:525 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:527 +#: build/serializers.py:526 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:611 msgid "Consume Allocated Stock" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:612 msgid "Consume any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:619 +#: build/serializers.py:618 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:620 +#: build/serializers.py:619 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:646 msgid "Not permitted" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:647 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:648 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:679 +#: build/serializers.py:678 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:681 +#: build/serializers.py:680 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:691 +#: build/serializers.py:690 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:696 +#: build/serializers.py:695 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:697 +#: build/serializers.py:696 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:707 templates/js/translated/build.js:315 +#: build/serializers.py:706 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:712 order/serializers.py:301 order/serializers.py:1246 +#: build/serializers.py:711 order/serializers.py:300 order/serializers.py:1234 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:713 +#: build/serializers.py:712 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:723 templates/js/translated/build.js:319 +#: build/serializers.py:722 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:732 templates/js/translated/build.js:303 +#: build/serializers.py:731 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:770 +#: build/serializers.py:769 msgid "Build Line" msgstr "" -#: build/serializers.py:780 +#: build/serializers.py:779 msgid "Build output" msgstr "" -#: build/serializers.py:788 +#: build/serializers.py:787 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:824 +#: build/serializers.py:823 msgid "Build Line Item" msgstr "" -#: build/serializers.py:838 +#: build/serializers.py:837 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:853 stock/serializers.py:1194 +#: build/serializers.py:852 stock/serializers.py:1190 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:901 order/serializers.py:1237 +#: build/serializers.py:900 order/serializers.py:1225 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:907 +#: build/serializers.py:906 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:914 +#: build/serializers.py:913 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:938 order/serializers.py:1489 +#: build/serializers.py:937 order/serializers.py:1477 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:1001 +#: build/serializers.py:1000 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:1009 +#: build/serializers.py:1008 msgid "Exclude Location" msgstr "" -#: build/serializers.py:1010 +#: build/serializers.py:1009 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:1015 +#: build/serializers.py:1014 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:1016 +#: build/serializers.py:1015 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:1021 +#: build/serializers.py:1020 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:1022 +#: build/serializers.py:1021 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:1027 +#: build/serializers.py:1026 msgid "Optional Items" msgstr "" -#: build/serializers.py:1028 +#: build/serializers.py:1027 msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1050 +#: build/serializers.py:1049 msgid "Failed to start auto-allocation task" msgstr "" -#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 -#: stock/api.py:794 +#: build/serializers.py:1139 part/models.py:3953 part/models.py:4387 +#: stock/api.py:804 msgid "BOM Item" msgstr "" -#: build/serializers.py:1149 templates/js/translated/index.js:130 +#: build/serializers.py:1148 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:832 part/serializers.py:1506 +#: build/serializers.py:1153 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:828 part/serializers.py:1502 #: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 -#: templates/js/translated/build.js:2613 templates/js/translated/part.js:709 -#: templates/js/translated/part.js:2148 +#: templates/js/translated/build.js:2613 templates/js/translated/part.js:710 +#: templates/js/translated/part.js:2149 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1159 part/serializers.py:1508 +#: build/serializers.py:1158 part/serializers.py:1504 #: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 +#: build/serializers.py:1163 part/bom.py:172 part/serializers.py:1527 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1929 msgid "Available Stock" @@ -1544,7 +1457,7 @@ msgstr "Preklicano" #: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 #: order/status_codes.py:44 order/status_codes.py:69 #: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:165 report/models.py:443 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 msgid "Complete" msgstr "Končano" @@ -1674,11 +1587,11 @@ msgstr "" #: build/templates/build/build_base.html:160 #: build/templates/build/detail.html:138 order/models.py:309 -#: order/models.py:1343 order/templates/order/order_base.html:186 +#: order/models.py:1307 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:196 #: report/templates/report/inventree_build_order_report.html:125 -#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1831 #: templates/js/translated/purchase_order.js:1739 #: templates/js/translated/purchase_order.js:2147 #: templates/js/translated/return_order.js:346 @@ -1711,8 +1624,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 -#: order/models.py:1587 order/models.py:1701 order/models.py:1855 +#: build/templates/build/detail.html:101 order/api.py:1463 order/models.py:845 +#: order/models.py:1551 order/models.py:1665 order/models.py:1819 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_report.html:135 @@ -1762,7 +1675,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1479 +#: build/templates/build/detail.html:49 order/models.py:1443 #: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "" @@ -1775,7 +1688,7 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:163 +#: build/templates/build/detail.html:80 stock/admin.py:162 #: stock/templates/stock/item_base.html:162 #: templates/js/translated/build.js:1380 #: templates/js/translated/model_renderers.js:241 @@ -1894,11 +1807,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:436 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -1914,6 +1827,34 @@ msgstr "" msgid "Incomplete Outputs" msgstr "" +#: common/api.py:689 +msgid "Is Link" +msgstr "" + +#: common/api.py:697 +msgid "Is File" +msgstr "" + +#: common/api.py:739 +msgid "User does not have permission to delete this attachment" +msgstr "" + +#: common/currency.py:130 +msgid "Invalid currency code" +msgstr "" + +#: common/currency.py:132 +msgid "Duplicate currency code" +msgstr "" + +#: common/currency.py:137 +msgid "No valid currency codes provided" +msgstr "" + +#: common/currency.py:154 +msgid "No plugin" +msgstr "" + #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1952,1509 +1893,1512 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:71 +#: common/models.py:73 msgid "Updated" msgstr "" -#: common/models.py:72 +#: common/models.py:74 msgid "Timestamp of last update" msgstr "" -#: common/models.py:105 +#: common/models.py:107 msgid "Site URL is locked by configuration" msgstr "" -#: common/models.py:130 +#: common/models.py:132 msgid "Unique project code" msgstr "" -#: common/models.py:137 +#: common/models.py:139 msgid "Project description" msgstr "" -#: common/models.py:146 +#: common/models.py:148 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:766 +#: common/models.py:765 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:770 +#: common/models.py:769 msgid "Settings value" msgstr "" -#: common/models.py:822 +#: common/models.py:821 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:838 +#: common/models.py:837 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:846 +#: common/models.py:845 msgid "Value must be an integer value" msgstr "" -#: common/models.py:883 +#: common/models.py:882 msgid "Key string must be unique" msgstr "" -#: common/models.py:1115 +#: common/models.py:1114 msgid "No group" msgstr "" -#: common/models.py:1158 -msgid "An empty domain is not allowed." -msgstr "" - -#: common/models.py:1160 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "" - -#: common/models.py:1172 -msgid "No plugin" -msgstr "" - -#: common/models.py:1260 +#: common/models.py:1213 msgid "Restart required" msgstr "" -#: common/models.py:1262 +#: common/models.py:1215 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1269 +#: common/models.py:1222 msgid "Pending migrations" msgstr "" -#: common/models.py:1270 +#: common/models.py:1223 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1275 +#: common/models.py:1228 msgid "Server Instance Name" msgstr "" -#: common/models.py:1277 +#: common/models.py:1230 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1281 +#: common/models.py:1234 msgid "Use instance name" msgstr "" -#: common/models.py:1282 +#: common/models.py:1235 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1287 +#: common/models.py:1240 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1288 +#: common/models.py:1241 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1293 company/models.py:108 company/models.py:109 +#: common/models.py:1246 company/models.py:111 company/models.py:112 msgid "Company name" msgstr "" -#: common/models.py:1294 +#: common/models.py:1247 msgid "Internal company name" msgstr "" -#: common/models.py:1298 +#: common/models.py:1251 msgid "Base URL" msgstr "" -#: common/models.py:1299 +#: common/models.py:1252 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1305 +#: common/models.py:1258 msgid "Default Currency" msgstr "" -#: common/models.py:1306 +#: common/models.py:1259 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1312 +#: common/models.py:1265 +msgid "Supported Currencies" +msgstr "" + +#: common/models.py:1266 +msgid "List of supported currency codes" +msgstr "" + +#: common/models.py:1272 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1314 +#: common/models.py:1274 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1317 common/models.py:1373 common/models.py:1386 -#: common/models.py:1394 common/models.py:1403 common/models.py:1412 -#: common/models.py:1620 common/models.py:1642 common/models.py:1757 -#: common/models.py:2076 +#: common/models.py:1277 common/models.py:1333 common/models.py:1346 +#: common/models.py:1354 common/models.py:1363 common/models.py:1372 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:2046 msgid "days" msgstr "" -#: common/models.py:1321 +#: common/models.py:1281 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1322 +#: common/models.py:1282 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1327 +#: common/models.py:1287 msgid "Download from URL" msgstr "" -#: common/models.py:1329 +#: common/models.py:1289 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1335 +#: common/models.py:1295 msgid "Download Size Limit" msgstr "" -#: common/models.py:1336 +#: common/models.py:1296 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1342 +#: common/models.py:1302 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1344 +#: common/models.py:1304 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:1349 +#: common/models.py:1309 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1350 +#: common/models.py:1310 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1355 +#: common/models.py:1315 msgid "Require confirm" msgstr "" -#: common/models.py:1356 +#: common/models.py:1316 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1361 +#: common/models.py:1321 msgid "Tree Depth" msgstr "" -#: common/models.py:1363 +#: common/models.py:1323 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1369 +#: common/models.py:1329 msgid "Update Check Interval" msgstr "" -#: common/models.py:1370 +#: common/models.py:1330 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1376 +#: common/models.py:1336 msgid "Automatic Backup" msgstr "" -#: common/models.py:1377 +#: common/models.py:1337 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1382 +#: common/models.py:1342 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1383 +#: common/models.py:1343 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1389 +#: common/models.py:1349 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1391 +#: common/models.py:1351 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1398 +#: common/models.py:1358 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1400 +#: common/models.py:1360 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1407 +#: common/models.py:1367 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1409 +#: common/models.py:1369 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1416 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1376 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1417 +#: common/models.py:1377 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1422 +#: common/models.py:1382 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1423 +#: common/models.py:1383 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1429 +#: common/models.py:1389 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1430 +#: common/models.py:1390 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1435 +#: common/models.py:1395 msgid "Part Revisions" msgstr "" -#: common/models.py:1436 +#: common/models.py:1396 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1441 +#: common/models.py:1401 msgid "Allow Deletion from Assembly" msgstr "" -#: common/models.py:1442 +#: common/models.py:1402 msgid "Allow deletion of parts which are used in an assembly" msgstr "" -#: common/models.py:1447 +#: common/models.py:1407 msgid "IPN Regex" msgstr "" -#: common/models.py:1448 +#: common/models.py:1408 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1451 +#: common/models.py:1411 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1452 +#: common/models.py:1412 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1457 +#: common/models.py:1417 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1458 +#: common/models.py:1418 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1463 +#: common/models.py:1423 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1464 +#: common/models.py:1424 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1469 +#: common/models.py:1429 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1470 +#: common/models.py:1430 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1475 +#: common/models.py:1435 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1476 +#: common/models.py:1436 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1481 +#: common/models.py:1441 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1482 +#: common/models.py:1442 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1487 part/admin.py:108 part/models.py:3815 -#: report/models.py:293 report/models.py:360 report/serializers.py:90 -#: report/serializers.py:131 stock/serializers.py:228 +#: common/models.py:1447 part/admin.py:108 part/models.py:3795 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:227 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1488 +#: common/models.py:1448 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 +#: common/models.py:1453 part/admin.py:91 part/admin.py:425 part/models.py:1052 #: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" msgstr "" -#: common/models.py:1494 +#: common/models.py:1454 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1499 part/admin.py:95 part/models.py:1065 +#: common/models.py:1459 part/admin.py:95 part/models.py:1058 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1500 +#: common/models.py:1460 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1505 part/admin.py:100 part/models.py:1077 +#: common/models.py:1465 part/admin.py:100 part/models.py:1070 msgid "Purchaseable" msgstr "" -#: common/models.py:1506 +#: common/models.py:1466 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1511 part/admin.py:104 part/models.py:1083 +#: common/models.py:1471 part/admin.py:104 part/models.py:1076 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1512 +#: common/models.py:1472 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1517 part/admin.py:113 part/models.py:1071 +#: common/models.py:1477 part/admin.py:113 part/models.py:1064 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" msgstr "" -#: common/models.py:1518 +#: common/models.py:1478 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1523 part/admin.py:117 part/models.py:1093 +#: common/models.py:1483 part/admin.py:117 part/models.py:1086 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" msgstr "" -#: common/models.py:1524 +#: common/models.py:1484 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1529 +#: common/models.py:1489 msgid "Show Import in Views" msgstr "" -#: common/models.py:1530 +#: common/models.py:1490 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1535 +#: common/models.py:1495 msgid "Show related parts" msgstr "" -#: common/models.py:1536 +#: common/models.py:1496 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1541 +#: common/models.py:1501 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1542 +#: common/models.py:1502 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1547 templates/js/translated/part.js:107 +#: common/models.py:1507 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1549 +#: common/models.py:1509 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1555 +#: common/models.py:1515 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1556 +#: common/models.py:1516 msgid "Format to display the part name" msgstr "" -#: common/models.py:1562 +#: common/models.py:1522 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1563 +#: common/models.py:1523 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1567 +#: common/models.py:1527 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1569 +#: common/models.py:1529 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1575 +#: common/models.py:1535 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1577 +#: common/models.py:1537 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1583 +#: common/models.py:1548 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1585 +#: common/models.py:1550 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1591 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1593 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1599 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1601 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1607 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1609 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1615 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1617 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1630 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1632 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1638 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1640 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1647 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1648 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1653 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1655 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1661 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1662 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1667 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1669 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1675 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1676 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1681 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1682 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1687 +#: common/models.py:1657 msgid "Log Report Errors" msgstr "" -#: common/models.py:1688 +#: common/models.py:1658 msgid "Log errors which occur when generating reports" msgstr "" -#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:301 +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:302 msgid "Page Size" msgstr "" -#: common/models.py:1694 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1699 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1700 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1705 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1707 +#: common/models.py:1677 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1713 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1714 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1719 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1720 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1725 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1727 +#: common/models.py:1697 msgid "Determines default behavior when a stock item is depleted" msgstr "" -#: common/models.py:1733 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1735 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1740 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1741 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1746 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1747 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1752 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1754 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1761 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1762 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1767 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1768 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1773 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1774 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1778 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1779 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1784 +#: common/models.py:1754 msgid "Check BOM when installing items" msgstr "" -#: common/models.py:1786 +#: common/models.py:1756 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "" -#: common/models.py:1792 +#: common/models.py:1762 msgid "Allow Out of Stock Transfer" msgstr "" -#: common/models.py:1794 +#: common/models.py:1764 msgid "Allow stock items which are not in stock to be transferred between stock locations" msgstr "" -#: common/models.py:1800 +#: common/models.py:1770 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1802 +#: common/models.py:1772 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1808 common/models.py:1836 common/models.py:1858 -#: common/models.py:1894 +#: common/models.py:1778 common/models.py:1806 common/models.py:1828 +#: common/models.py:1864 msgid "Require Responsible Owner" msgstr "" -#: common/models.py:1809 common/models.py:1837 common/models.py:1859 -#: common/models.py:1895 +#: common/models.py:1779 common/models.py:1807 common/models.py:1829 +#: common/models.py:1865 msgid "A responsible owner must be assigned to each order" msgstr "" -#: common/models.py:1814 +#: common/models.py:1784 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1816 +#: common/models.py:1786 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:1822 +#: common/models.py:1792 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1823 +#: common/models.py:1793 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1828 +#: common/models.py:1798 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1830 +#: common/models.py:1800 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1842 +#: common/models.py:1812 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1844 +#: common/models.py:1814 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1850 +#: common/models.py:1820 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1852 +#: common/models.py:1822 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1864 +#: common/models.py:1834 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1865 +#: common/models.py:1835 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1870 +#: common/models.py:1840 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1872 +#: common/models.py:1842 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1878 -#, fuzzy -#| msgid "A build order has been completed" +#: common/models.py:1848 msgid "Mark Shipped Orders as Complete" -msgstr "Nalog izgradnej dokončan" +msgstr "" -#: common/models.py:1880 +#: common/models.py:1850 msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" msgstr "" -#: common/models.py:1886 +#: common/models.py:1856 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1888 +#: common/models.py:1858 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1900 +#: common/models.py:1870 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1902 +#: common/models.py:1872 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1908 +#: common/models.py:1878 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1910 +#: common/models.py:1880 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1917 +#: common/models.py:1887 msgid "Enable password forgot" msgstr "" -#: common/models.py:1918 +#: common/models.py:1888 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1923 +#: common/models.py:1893 msgid "Enable registration" msgstr "" -#: common/models.py:1924 +#: common/models.py:1894 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1929 +#: common/models.py:1899 msgid "Enable SSO" msgstr "" -#: common/models.py:1930 +#: common/models.py:1900 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1935 +#: common/models.py:1905 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1937 +#: common/models.py:1907 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1943 +#: common/models.py:1913 msgid "Email required" msgstr "" -#: common/models.py:1944 +#: common/models.py:1914 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1949 +#: common/models.py:1919 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1951 +#: common/models.py:1921 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1957 +#: common/models.py:1927 msgid "Mail twice" msgstr "" -#: common/models.py:1958 +#: common/models.py:1928 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1963 +#: common/models.py:1933 msgid "Password twice" msgstr "" -#: common/models.py:1964 +#: common/models.py:1934 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1969 +#: common/models.py:1939 msgid "Allowed domains" msgstr "" -#: common/models.py:1971 +#: common/models.py:1941 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1977 +#: common/models.py:1947 msgid "Group on signup" msgstr "" -#: common/models.py:1978 +#: common/models.py:1948 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1983 +#: common/models.py:1953 msgid "Enforce MFA" msgstr "" -#: common/models.py:1984 +#: common/models.py:1954 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1989 +#: common/models.py:1959 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1991 +#: common/models.py:1961 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1999 +#: common/models.py:1969 msgid "Check for plugin updates" msgstr "" -#: common/models.py:2000 +#: common/models.py:1970 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:2006 +#: common/models.py:1976 msgid "Enable URL integration" msgstr "" -#: common/models.py:2007 +#: common/models.py:1977 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:2013 +#: common/models.py:1983 msgid "Enable navigation integration" msgstr "" -#: common/models.py:2014 +#: common/models.py:1984 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:2020 +#: common/models.py:1990 msgid "Enable app integration" msgstr "" -#: common/models.py:2021 +#: common/models.py:1991 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:2027 +#: common/models.py:1997 msgid "Enable schedule integration" msgstr "" -#: common/models.py:2028 +#: common/models.py:1998 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:2034 +#: common/models.py:2004 msgid "Enable event integration" msgstr "" -#: common/models.py:2035 +#: common/models.py:2005 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:2041 +#: common/models.py:2011 msgid "Enable project codes" msgstr "" -#: common/models.py:2042 +#: common/models.py:2012 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:2047 +#: common/models.py:2017 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:2049 +#: common/models.py:2019 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:2055 +#: common/models.py:2025 msgid "Exclude External Locations" msgstr "" -#: common/models.py:2057 +#: common/models.py:2027 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:2063 +#: common/models.py:2033 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:2065 +#: common/models.py:2035 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:2071 +#: common/models.py:2041 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:2073 +#: common/models.py:2043 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:2080 +#: common/models.py:2050 msgid "Display Users full names" msgstr "" -#: common/models.py:2081 +#: common/models.py:2051 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:2086 +#: common/models.py:2056 msgid "Enable Test Station Data" msgstr "" -#: common/models.py:2087 +#: common/models.py:2057 msgid "Enable test station data collection for test results" msgstr "" -#: common/models.py:2099 common/models.py:2509 +#: common/models.py:2069 common/models.py:2479 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2142 +#: common/models.py:2112 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2144 +#: common/models.py:2114 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2150 +#: common/models.py:2120 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2151 +#: common/models.py:2121 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2156 +#: common/models.py:2126 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2157 +#: common/models.py:2127 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2162 +#: common/models.py:2132 msgid "Show latest parts" msgstr "" -#: common/models.py:2163 +#: common/models.py:2133 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2168 +#: common/models.py:2138 msgid "Show invalid BOMs" msgstr "" -#: common/models.py:2169 +#: common/models.py:2139 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2174 +#: common/models.py:2144 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2175 +#: common/models.py:2145 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2180 +#: common/models.py:2150 msgid "Show low stock" msgstr "" -#: common/models.py:2181 +#: common/models.py:2151 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2186 +#: common/models.py:2156 msgid "Show depleted stock" msgstr "" -#: common/models.py:2187 +#: common/models.py:2157 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2192 +#: common/models.py:2162 msgid "Show needed stock" msgstr "" -#: common/models.py:2193 +#: common/models.py:2163 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2198 +#: common/models.py:2168 msgid "Show expired stock" msgstr "" -#: common/models.py:2199 +#: common/models.py:2169 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2204 +#: common/models.py:2174 msgid "Show stale stock" msgstr "" -#: common/models.py:2205 +#: common/models.py:2175 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2210 +#: common/models.py:2180 msgid "Show pending builds" msgstr "" -#: common/models.py:2211 +#: common/models.py:2181 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2216 +#: common/models.py:2186 msgid "Show overdue builds" msgstr "" -#: common/models.py:2217 +#: common/models.py:2187 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2222 +#: common/models.py:2192 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2223 +#: common/models.py:2193 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2228 +#: common/models.py:2198 msgid "Show overdue POs" msgstr "" -#: common/models.py:2229 +#: common/models.py:2199 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2234 +#: common/models.py:2204 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2235 +#: common/models.py:2205 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2240 +#: common/models.py:2210 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2241 +#: common/models.py:2211 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2246 +#: common/models.py:2216 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2247 +#: common/models.py:2217 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2252 +#: common/models.py:2222 msgid "Show News" msgstr "" -#: common/models.py:2253 +#: common/models.py:2223 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2258 +#: common/models.py:2228 msgid "Inline label display" msgstr "" -#: common/models.py:2260 +#: common/models.py:2230 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2266 +#: common/models.py:2236 msgid "Default label printer" msgstr "" -#: common/models.py:2268 +#: common/models.py:2238 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2274 +#: common/models.py:2244 msgid "Inline report display" msgstr "" -#: common/models.py:2276 +#: common/models.py:2246 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2282 +#: common/models.py:2252 msgid "Search Parts" msgstr "" -#: common/models.py:2283 +#: common/models.py:2253 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2288 +#: common/models.py:2258 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2289 +#: common/models.py:2259 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2294 +#: common/models.py:2264 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2295 +#: common/models.py:2265 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2300 +#: common/models.py:2270 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2301 +#: common/models.py:2271 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2306 +#: common/models.py:2276 msgid "Search Categories" msgstr "" -#: common/models.py:2307 +#: common/models.py:2277 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2312 +#: common/models.py:2282 msgid "Search Stock" msgstr "" -#: common/models.py:2313 +#: common/models.py:2283 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2318 +#: common/models.py:2288 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2320 +#: common/models.py:2290 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2326 +#: common/models.py:2296 msgid "Search Locations" msgstr "" -#: common/models.py:2327 +#: common/models.py:2297 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2332 +#: common/models.py:2302 msgid "Search Companies" msgstr "" -#: common/models.py:2333 +#: common/models.py:2303 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2338 +#: common/models.py:2308 msgid "Search Build Orders" msgstr "" -#: common/models.py:2339 +#: common/models.py:2309 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2344 +#: common/models.py:2314 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2345 +#: common/models.py:2315 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2350 +#: common/models.py:2320 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2352 +#: common/models.py:2322 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2358 +#: common/models.py:2328 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2359 +#: common/models.py:2329 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2364 +#: common/models.py:2334 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2366 +#: common/models.py:2336 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2372 +#: common/models.py:2342 msgid "Search Return Orders" msgstr "" -#: common/models.py:2373 +#: common/models.py:2343 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2378 +#: common/models.py:2348 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2380 +#: common/models.py:2350 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2386 +#: common/models.py:2356 msgid "Search Preview Results" msgstr "" -#: common/models.py:2388 +#: common/models.py:2358 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2394 +#: common/models.py:2364 msgid "Regex Search" msgstr "" -#: common/models.py:2395 +#: common/models.py:2365 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2400 +#: common/models.py:2370 msgid "Whole Word Search" msgstr "" -#: common/models.py:2401 +#: common/models.py:2371 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2406 +#: common/models.py:2376 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2407 +#: common/models.py:2377 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2412 +#: common/models.py:2382 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2413 +#: common/models.py:2383 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2418 +#: common/models.py:2388 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2419 +#: common/models.py:2389 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2424 +#: common/models.py:2394 msgid "Date Format" msgstr "" -#: common/models.py:2425 +#: common/models.py:2395 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2438 part/templates/part/detail.html:41 +#: common/models.py:2408 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2439 +#: common/models.py:2409 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2444 part/templates/part/detail.html:62 +#: common/models.py:2414 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2446 +#: common/models.py:2416 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2452 +#: common/models.py:2422 msgid "Table String Length" msgstr "" -#: common/models.py:2454 +#: common/models.py:2424 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2460 +#: common/models.py:2430 msgid "Default part label template" msgstr "" -#: common/models.py:2461 +#: common/models.py:2431 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2466 +#: common/models.py:2436 msgid "Default stock item template" msgstr "" -#: common/models.py:2468 +#: common/models.py:2438 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2474 +#: common/models.py:2444 msgid "Default stock location label template" msgstr "" -#: common/models.py:2476 +#: common/models.py:2446 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2482 +#: common/models.py:2452 msgid "Default build line label template" msgstr "" -#: common/models.py:2484 +#: common/models.py:2454 msgid "The build line label template to be automatically selected" msgstr "" -#: common/models.py:2490 +#: common/models.py:2460 msgid "Receive error reports" msgstr "" -#: common/models.py:2491 +#: common/models.py:2461 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2496 +#: common/models.py:2466 msgid "Last used printing machines" msgstr "" -#: common/models.py:2497 +#: common/models.py:2467 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2540 +#: common/models.py:2487 common/models.py:2488 common/models.py:2636 +#: common/models.py:2637 common/models.py:2882 common/models.py:2883 +#: common/models.py:3193 common/models.py:3194 part/models.py:3193 +#: part/models.py:3280 part/models.py:3353 part/models.py:3381 +#: plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "Uporabnik" + +#: common/models.py:2510 msgid "Price break quantity" msgstr "" -#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1382 order/models.py:2301 -#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 +#: common/models.py:2517 company/serializers.py:472 order/admin.py:42 +#: order/models.py:1346 order/models.py:2265 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1886 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:740 msgid "Price" msgstr "" -#: common/models.py:2548 +#: common/models.py:2518 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2719 common/models.py:2904 +#: common/models.py:2613 common/models.py:2798 msgid "Endpoint" msgstr "" -#: common/models.py:2720 +#: common/models.py:2614 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2730 +#: common/models.py:2624 msgid "Name for this webhook" msgstr "" -#: common/models.py:2734 company/models.py:160 company/models.py:814 -#: machine/models.py:39 part/admin.py:88 part/models.py:1088 -#: plugin/models.py:65 templates/js/translated/company.js:523 +#: common/models.py:2628 company/models.py:163 company/models.py:782 +#: machine/models.py:39 part/admin.py:88 part/models.py:1081 +#: plugin/models.py:66 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3464,101 +3408,118 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2734 +#: common/models.py:2628 msgid "Is this webhook active" msgstr "" -#: common/models.py:2750 users/models.py:159 +#: common/models.py:2644 users/models.py:159 msgid "Token" msgstr "" -#: common/models.py:2751 +#: common/models.py:2645 msgid "Token for access" msgstr "" -#: common/models.py:2759 +#: common/models.py:2653 msgid "Secret" msgstr "" -#: common/models.py:2760 +#: common/models.py:2654 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2868 +#: common/models.py:2762 msgid "Message ID" msgstr "" -#: common/models.py:2869 +#: common/models.py:2763 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2877 +#: common/models.py:2771 msgid "Host" msgstr "" -#: common/models.py:2878 +#: common/models.py:2772 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2886 +#: common/models.py:2780 msgid "Header" msgstr "" -#: common/models.py:2887 +#: common/models.py:2781 msgid "Header of this message" msgstr "" -#: common/models.py:2894 +#: common/models.py:2788 msgid "Body" msgstr "" -#: common/models.py:2895 +#: common/models.py:2789 msgid "Body of this message" msgstr "" -#: common/models.py:2905 +#: common/models.py:2799 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2910 +#: common/models.py:2804 msgid "Worked on" msgstr "" -#: common/models.py:2911 +#: common/models.py:2805 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:3037 +#: common/models.py:2931 msgid "Id" msgstr "" -#: common/models.py:3039 templates/js/translated/company.js:965 +#: common/models.py:2933 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:3043 templates/js/translated/news.js:60 +#: common/models.py:2935 common/models.py:3177 company/models.py:149 +#: company/models.py:440 company/models.py:500 company/models.py:799 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +#: part/admin.py:55 part/models.py:955 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "Povezava" + +#: common/models.py:2937 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:3045 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2939 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:3047 templates/js/translated/news.js:52 +#: common/models.py:2941 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Read" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Was this news item read?" msgstr "" -#: common/models.py:3067 company/models.py:156 part/models.py:972 +#: common/models.py:2961 company/models.py:159 part/models.py:965 #: 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.html:35 @@ -3568,34 +3529,89 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:3067 +#: common/models.py:2961 msgid "Image file" msgstr "" -#: common/models.py:3109 +#: common/models.py:2973 common/models.py:3161 +msgid "Target model type for this image" +msgstr "" + +#: common/models.py:2977 +msgid "Target model ID for this image" +msgstr "" + +#: common/models.py:3018 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3128 +#: common/models.py:3037 msgid "Unit name" msgstr "" -#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3044 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3136 +#: common/models.py:3045 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3052 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3144 +#: common/models.py:3053 msgid "Unit definition" msgstr "" +#: common/models.py:3111 common/models.py:3168 stock/models.py:2426 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "Priloga" + +#: common/models.py:3123 +msgid "Missing file" +msgstr "Manjka datoteka" + +#: common/models.py:3124 +msgid "Missing external link" +msgstr "Manjka zunanja povezava" + +#: common/models.py:3169 +msgid "Select file to attach" +msgstr "Izberite prilogo" + +#: common/models.py:3184 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "Komentar" + +#: common/models.py:3185 +msgid "Attachment comment" +msgstr "" + +#: common/models.py:3201 +msgid "Upload date" +msgstr "" + +#: common/models.py:3202 +msgid "Date the file was uploaded" +msgstr "" + +#: common/models.py:3206 +msgid "File size" +msgstr "" + +#: common/models.py:3206 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3244 common/serializers.py:553 +msgid "Invalid model type specified for attachment" +msgstr "" + #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" @@ -3630,66 +3646,103 @@ msgstr "" msgid "Error raised by plugin" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:371 msgid "Is Running" msgstr "" -#: common/serializers.py:372 +#: common/serializers.py:377 msgid "Pending Tasks" msgstr "" -#: common/serializers.py:378 +#: common/serializers.py:383 msgid "Scheduled Tasks" msgstr "" -#: common/serializers.py:384 +#: common/serializers.py:389 msgid "Failed Tasks" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Task ID" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Unique task ID" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock time" msgstr "" -#: common/serializers.py:403 +#: common/serializers.py:408 msgid "Task name" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function name" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Arguments" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Task arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Keyword Arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Task keyword arguments" msgstr "" +#: common/serializers.py:525 +msgid "Filename" +msgstr "Ime datoteke" + +#: common/serializers.py:532 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: common/serializers.py:559 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "" + +#: common/validators.py:33 +msgid "No attachment model type provided" +msgstr "" + +#: common/validators.py:39 +msgid "Invalid attachment model type" +msgstr "" + +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "" + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +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 @@ -3728,210 +3781,222 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/api.py:164 +#: company/api.py:144 msgid "Part is Active" msgstr "" -#: company/api.py:168 +#: company/api.py:148 msgid "Manufacturer is Active" msgstr "" -#: company/api.py:317 +#: company/api.py:281 msgid "Supplier Part is Active" msgstr "" -#: company/api.py:321 +#: company/api.py:285 msgid "Internal Part is Active" msgstr "" -#: company/api.py:325 +#: company/api.py:289 msgid "Supplier is Active" msgstr "" -#: company/models.py:114 +#: company/models.py:100 company/models.py:365 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:822 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "" + +#: company/models.py:117 msgid "Company description" msgstr "" -#: company/models.py:115 +#: company/models.py:118 msgid "Description of the company" msgstr "" -#: company/models.py:120 company/templates/company/company_base.html:106 +#: company/models.py:123 company/templates/company/company_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:532 msgid "Website" msgstr "" -#: company/models.py:120 +#: company/models.py:123 msgid "Company website URL" msgstr "" -#: company/models.py:125 +#: company/models.py:128 msgid "Phone number" msgstr "" -#: company/models.py:127 +#: company/models.py:130 msgid "Contact phone number" msgstr "" -#: company/models.py:134 +#: company/models.py:137 msgid "Contact email address" msgstr "" -#: company/models.py:139 company/templates/company/company_base.html:145 +#: company/models.py:142 company/templates/company/company_base.html:145 #: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "" -#: company/models.py:141 +#: company/models.py:144 msgid "Point of contact" msgstr "" -#: company/models.py:147 +#: company/models.py:150 msgid "Link to external company information" msgstr "" -#: company/models.py:160 +#: company/models.py:163 msgid "Is this company active?" msgstr "" -#: company/models.py:165 +#: company/models.py:168 msgid "is customer" msgstr "" -#: company/models.py:166 +#: company/models.py:169 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:171 +#: company/models.py:174 msgid "is supplier" msgstr "" -#: company/models.py:172 +#: company/models.py:175 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:177 +#: company/models.py:180 msgid "is manufacturer" msgstr "" -#: company/models.py:178 +#: company/models.py:181 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:186 +#: company/models.py:189 msgid "Default currency used for this company" msgstr "" -#: company/models.py:273 company/models.py:382 -#: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:812 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 -msgid "Company" -msgstr "" - -#: company/models.py:383 +#: company/models.py:366 msgid "Select company" msgstr "" -#: company/models.py:388 +#: company/models.py:371 msgid "Address title" msgstr "" -#: company/models.py:389 +#: company/models.py:372 msgid "Title describing the address entry" msgstr "" -#: company/models.py:395 +#: company/models.py:378 msgid "Primary address" msgstr "" -#: company/models.py:396 +#: company/models.py:379 msgid "Set as primary address" msgstr "" -#: company/models.py:401 templates/js/translated/company.js:914 +#: company/models.py:384 templates/js/translated/company.js:914 #: templates/js/translated/company.js:971 msgid "Line 1" msgstr "" -#: company/models.py:402 +#: company/models.py:385 msgid "Address line 1" msgstr "" -#: company/models.py:408 templates/js/translated/company.js:915 +#: company/models.py:391 templates/js/translated/company.js:915 #: templates/js/translated/company.js:977 msgid "Line 2" msgstr "" -#: company/models.py:409 +#: company/models.py:392 msgid "Address line 2" msgstr "" -#: company/models.py:415 company/models.py:416 +#: company/models.py:398 company/models.py:399 #: templates/js/translated/company.js:983 msgid "Postal code" msgstr "" -#: company/models.py:422 +#: company/models.py:405 msgid "City/Region" msgstr "" -#: company/models.py:423 +#: company/models.py:406 msgid "Postal code city/region" msgstr "" -#: company/models.py:429 +#: company/models.py:412 msgid "State/Province" msgstr "" -#: company/models.py:430 +#: company/models.py:413 msgid "State or province" msgstr "" -#: company/models.py:436 templates/js/translated/company.js:1001 +#: company/models.py:419 templates/js/translated/company.js:1001 msgid "Country" msgstr "" -#: company/models.py:437 +#: company/models.py:420 msgid "Address country" msgstr "" -#: company/models.py:443 +#: company/models.py:426 msgid "Courier shipping notes" msgstr "" -#: company/models.py:444 +#: company/models.py:427 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:450 +#: company/models.py:433 msgid "Internal shipping notes" msgstr "" -#: company/models.py:451 +#: company/models.py:434 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:458 +#: company/models.py:441 msgid "Link to address information (external)" msgstr "" -#: company/models.py:489 company/models.py:792 stock/models.py:768 -#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 +#: company/models.py:463 company/models.py:574 company/models.py:792 +#: 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:475 company/models.py:760 stock/models.py:766 +#: stock/serializers.py:422 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:491 company/models.py:794 +#: company/models.py:477 company/models.py:762 msgid "Select part" msgstr "" -#: company/models.py:500 company/templates/company/company_base.html:82 +#: company/models.py:486 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:530 +#: company/templates/company/supplier_part.html:145 part/serializers.py:525 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -3941,152 +4006,154 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:501 +#: company/models.py:487 msgid "Select manufacturer" msgstr "" -#: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:540 +#: company/models.py:493 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:535 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 -#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1801 #: templates/js/translated/purchase_order.js:1851 #: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "" -#: company/models.py:508 +#: company/models.py:494 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:515 +#: company/models.py:501 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:524 +#: company/models.py:510 msgid "Manufacturer part description" msgstr "" -#: company/models.py:581 company/models.py:608 company/models.py:824 -#: 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:615 +#: company/models.py:581 msgid "Parameter name" msgstr "" -#: company/models.py:621 report/templates/report/inventree_test_report.html:104 -#: stock/models.py:2429 templates/js/translated/company.js:1166 -#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 +#: company/models.py:587 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2418 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1493 #: templates/js/translated/stock.js:1522 msgid "Value" msgstr "" -#: company/models.py:622 +#: company/models.py:588 msgid "Parameter value" msgstr "" -#: company/models.py:629 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1052 part/models.py:3666 +#: company/models.py:595 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1045 part/models.py:3646 #: part/templates/part/part_base.html:284 -#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1512 +#: templates/js/translated/part.js:1616 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:630 +#: company/models.py:596 msgid "Parameter units" msgstr "" -#: company/models.py:732 +#: company/models.py:648 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:777 stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "" + +#: company/models.py:700 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:739 +#: company/models.py:707 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:753 +#: company/models.py:721 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/models.py:770 company/templates/company/company_base.html:87 #: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:514 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:509 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:511 -#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1769 #: templates/js/translated/pricing.js:498 #: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "" -#: company/models.py:803 +#: company/models.py:771 msgid "Select supplier" msgstr "" -#: company/models.py:809 part/serializers.py:525 +#: company/models.py:777 part/serializers.py:520 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:815 +#: company/models.py:783 msgid "Is this supplier part active?" msgstr "" -#: company/models.py:825 +#: company/models.py:793 msgid "Select manufacturer part" msgstr "" -#: company/models.py:832 +#: company/models.py:800 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:841 +#: company/models.py:809 msgid "Supplier part description" msgstr "" -#: company/models.py:848 company/templates/company/supplier_part.html:187 -#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 +#: company/models.py:816 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4093 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_purchase_order_report.html:32 #: report/templates/report/inventree_return_order_report.html:27 #: report/templates/report/inventree_sales_order_report.html:32 #: report/templates/report/inventree_stock_location_report.html:105 -#: stock/serializers.py:708 +#: stock/serializers.py:710 msgid "Note" msgstr "" -#: company/models.py:857 part/models.py:2010 +#: company/models.py:825 part/models.py:2003 msgid "base cost" msgstr "" -#: company/models.py:858 part/models.py:2011 +#: company/models.py:826 part/models.py:2004 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:865 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 +#: company/models.py:833 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:797 stock/serializers.py:1475 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 #: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "" -#: company/models.py:866 +#: company/models.py:834 msgid "Part packaging" msgstr "" -#: company/models.py:871 templates/js/translated/company.js:1651 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: company/models.py:839 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:311 #: templates/js/translated/purchase_order.js:841 #: templates/js/translated/purchase_order.js:1103 @@ -4095,35 +4162,35 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:873 +#: company/models.py:841 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:892 part/models.py:2017 +#: company/models.py:860 part/models.py:2010 msgid "multiple" msgstr "" -#: company/models.py:893 +#: company/models.py:861 msgid "Order multiple" msgstr "" -#: company/models.py:905 +#: company/models.py:873 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:911 +#: company/models.py:879 msgid "Availability Updated" msgstr "" -#: company/models.py:912 +#: company/models.py:880 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:163 +#: company/serializers.py:161 msgid "Default currency used for this supplier" msgstr "" -#: company/serializers.py:381 part/admin.py:126 +#: company/serializers.py:357 part/admin.py:126 #: part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1689 #: templates/js/translated/table_filters.js:355 @@ -4135,7 +4202,7 @@ msgstr "" #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 #: templates/js/translated/model_renderers.js:312 -#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +#: templates/js/translated/part.js:815 templates/js/translated/part.js:1219 msgid "Inactive" msgstr "" @@ -4174,7 +4241,7 @@ msgstr "" #: report/templates/report/inventree_purchase_order_report.html:40 #: report/templates/report/inventree_sales_order_report.html:40 #: report/templates/report/inventree_test_report.html:84 -#: report/templates/report/inventree_test_report.html:163 +#: report/templates/report/inventree_test_report.html:162 msgid "Part image" msgstr "" @@ -4193,10 +4260,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:92 order/models.py:940 -#: order/models.py:2068 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:148 stock/models.py:821 -#: stock/models.py:822 stock/serializers.py:1229 +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2032 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:819 +#: stock/models.py:820 stock/serializers.py:1225 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 @@ -4407,7 +4474,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:836 +#: part/admin.py:122 part/serializers.py:832 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4427,8 +4494,8 @@ msgstr "" msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:206 -#: templates/js/translated/part.js:1422 +#: company/templates/company/manufacturer_part.html:196 +#: templates/js/translated/part.js:1423 msgid "Add Parameter" msgstr "" @@ -4456,15 +4523,6 @@ msgstr "" msgid "Addresses" msgstr "" -#: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:452 -#: stock/models.py:779 stock/templates/stock/item_base.html:233 -#: templates/js/translated/company.js:1600 -#: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2280 -msgid "Supplier Part" -msgstr "" - #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1526 msgid "Supplier part actions" @@ -4507,8 +4565,8 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:524 -#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: part/bom.py:311 part/serializers.py:519 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1787 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1850 #: templates/js/translated/purchase_order.js:2028 @@ -4520,12 +4578,12 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:207 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" @@ -4557,15 +4615,15 @@ msgid "Update Part Availability" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:835 part/stocktake.py:223 +#: part/serializers.py:831 part/stocktake.py:224 #: part/templates/part/category.html:183 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:916 stock/serializers.py:1080 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:918 stock/serializers.py:1091 #: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:191 #: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1061 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:206 msgid "Stock Items" @@ -4592,10 +4650,6 @@ msgstr "" 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 "" @@ -4616,7 +4670,7 @@ msgstr "" msgid "Connected" msgstr "" -#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: machine/machine_types/label_printer.py:235 order/api.py:1467 #: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "" @@ -4705,7 +4759,7 @@ msgstr "" msgid "Config type" msgstr "" -#: order/admin.py:30 order/models.py:89 +#: order/admin.py:30 order/models.py:90 #: report/templates/report/inventree_purchase_order_report.html:31 #: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 @@ -4714,30 +4768,30 @@ msgstr "" msgid "Total Price" msgstr "" -#: order/api.py:161 order/serializers.py:91 +#: order/api.py:157 order/serializers.py:90 #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "" -#: order/api.py:165 templates/js/translated/table_filters.js:194 +#: order/api.py:161 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "" -#: order/api.py:240 +#: order/api.py:236 msgid "No matching purchase order found" msgstr "" -#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 -#: order/models.py:1586 order/models.py:1700 order/models.py:1854 -#: order/models.py:2267 order/models.py:2318 +#: order/api.py:435 order/api.py:801 order/models.py:1395 order/models.py:1504 +#: order/models.py:1550 order/models.py:1664 order/models.py:1818 +#: order/models.py:2231 order/models.py:2282 #: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "" -#: order/api.py:441 order/api.py:838 +#: order/api.py:439 order/api.py:822 msgid "Order Complete" msgstr "" @@ -4745,13 +4799,13 @@ msgstr "" msgid "Order Pending" msgstr "" -#: order/api.py:1509 order/models.py:380 order/models.py:1432 -#: order/models.py:1541 order/templates/order/order_base.html:9 +#: order/api.py:1461 order/models.py:380 order/models.py:1396 +#: order/models.py:1505 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_purchase_order_report.html:14 -#: stock/serializers.py:119 stock/templates/stock/item_base.html:176 +#: stock/serializers.py:118 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/part.js:1746 templates/js/translated/pricing.js:804 #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1673 @@ -4759,8 +4813,8 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1513 order/models.py:2017 order/models.py:2268 -#: order/models.py:2319 order/templates/order/return_order_base.html:9 +#: order/api.py:1465 order/models.py:1981 order/models.py:2232 +#: order/models.py:2283 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report.html:13 #: templates/js/translated/return_order.js:280 @@ -4768,15 +4822,15 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/models.py:90 +#: order/models.py:91 msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:71 +#: order/models.py:96 order/serializers.py:70 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:72 +#: order/models.py:99 order/serializers.py:71 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -4792,7 +4846,7 @@ msgstr "" msgid "Select project code for this order" msgstr "" -#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 msgid "Link to external page" msgstr "" @@ -4816,11 +4870,11 @@ msgstr "" msgid "Company address for this order" msgstr "" -#: order/models.py:464 order/models.py:929 +#: order/models.py:464 order/models.py:927 msgid "Order reference" msgstr "" -#: order/models.py:472 order/models.py:953 +#: order/models.py:472 order/models.py:951 msgid "Purchase order status" msgstr "" @@ -4841,15 +4895,15 @@ msgstr "" msgid "received by" msgstr "" -#: order/models.py:514 order/models.py:2094 +#: order/models.py:514 order/models.py:2058 msgid "Issue Date" msgstr "" -#: order/models.py:515 order/models.py:2095 +#: order/models.py:515 order/models.py:2059 msgid "Date order was issued" msgstr "" -#: order/models.py:522 order/models.py:2102 +#: order/models.py:522 order/models.py:2066 msgid "Date order was completed" msgstr "" @@ -4861,96 +4915,94 @@ msgstr "" msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:941 +#: order/models.py:939 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:964 order/models.py:2087 +#: order/models.py:962 order/models.py:2051 msgid "Customer Reference " msgstr "" -#: order/models.py:965 order/models.py:2088 +#: order/models.py:963 order/models.py:2052 msgid "Customer order reference code" msgstr "" -#: order/models.py:969 order/models.py:1707 +#: order/models.py:967 order/models.py:1671 #: templates/js/translated/sales_order.js:879 #: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "" -#: order/models.py:978 +#: order/models.py:976 msgid "shipped by" msgstr "" -#: order/models.py:1027 -#, fuzzy -#| msgid "Build output is already completed" +#: order/models.py:1025 msgid "Order is already complete" -msgstr "Igradnja je že dokončana" +msgstr "" -#: order/models.py:1030 +#: order/models.py:1028 msgid "Order is already cancelled" msgstr "" -#: order/models.py:1034 +#: order/models.py:1032 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:1038 +#: order/models.py:1036 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:1043 +#: order/models.py:1041 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1309 +#: order/models.py:1273 msgid "Item quantity" msgstr "" -#: order/models.py:1326 +#: order/models.py:1290 msgid "Line item reference" msgstr "" -#: order/models.py:1333 +#: order/models.py:1297 msgid "Line item notes" msgstr "" -#: order/models.py:1345 +#: order/models.py:1309 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1366 +#: order/models.py:1330 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1372 +#: order/models.py:1336 msgid "Context" msgstr "" -#: order/models.py:1373 +#: order/models.py:1337 msgid "Additional context for this line" msgstr "" -#: order/models.py:1383 +#: order/models.py:1347 msgid "Unit price" msgstr "" -#: order/models.py:1416 +#: order/models.py:1380 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1423 +#: order/models.py:1387 msgid "deleted" msgstr "" -#: order/models.py:1451 +#: order/models.py:1415 msgid "Supplier part" msgstr "" -#: order/models.py:1458 order/templates/order/order_base.html:196 -#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: order/models.py:1422 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1870 templates/js/translated/part.js:1902 #: templates/js/translated/purchase_order.js:1306 #: templates/js/translated/purchase_order.js:2169 #: templates/js/translated/return_order.js:763 @@ -4959,196 +5011,196 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1459 +#: order/models.py:1423 msgid "Number of items received" msgstr "" -#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 +#: order/models.py:1431 stock/models.py:938 stock/serializers.py:556 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "" -#: order/models.py:1468 +#: order/models.py:1432 msgid "Unit purchase price" msgstr "" -#: order/models.py:1483 +#: order/models.py:1447 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1574 +#: order/models.py:1538 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1579 +#: order/models.py:1543 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1605 part/templates/part/part_pricing.html:107 +#: order/models.py:1569 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:1606 +#: order/models.py:1570 msgid "Unit sale price" msgstr "" -#: order/models.py:1615 order/status_codes.py:43 +#: order/models.py:1579 order/status_codes.py:43 #: templates/js/translated/sales_order.js:1559 #: templates/js/translated/sales_order.js:1680 #: templates/js/translated/sales_order.js:1993 msgid "Shipped" msgstr "Poslano" -#: order/models.py:1616 +#: order/models.py:1580 msgid "Shipped quantity" msgstr "" -#: order/models.py:1708 +#: order/models.py:1672 msgid "Date of shipment" msgstr "" -#: order/models.py:1714 templates/js/translated/sales_order.js:1072 +#: order/models.py:1678 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "" -#: order/models.py:1715 +#: order/models.py:1679 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1723 +#: order/models.py:1687 msgid "Checked By" msgstr "" -#: order/models.py:1724 +#: order/models.py:1688 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 -#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 +#: order/models.py:1695 order/models.py:1908 order/serializers.py:1342 +#: order/serializers.py:1452 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "" -#: order/models.py:1732 +#: order/models.py:1696 msgid "Shipment number" msgstr "" -#: order/models.py:1740 +#: order/models.py:1704 msgid "Tracking Number" msgstr "" -#: order/models.py:1741 +#: order/models.py:1705 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1748 +#: order/models.py:1712 msgid "Invoice Number" msgstr "" -#: order/models.py:1749 +#: order/models.py:1713 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1769 +#: order/models.py:1733 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1772 +#: order/models.py:1736 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1890 order/models.py:1892 +#: order/models.py:1854 order/models.py:1856 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1899 +#: order/models.py:1863 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1902 +#: order/models.py:1866 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1905 +#: order/models.py:1869 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1924 order/serializers.py:1231 +#: order/models.py:1888 order/serializers.py:1219 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1927 +#: order/models.py:1891 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1928 plugin/base/barcodes/api.py:481 +#: order/models.py:1892 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1936 +#: order/models.py:1900 msgid "Line" msgstr "" -#: order/models.py:1945 +#: order/models.py:1909 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1958 order/models.py:2275 +#: order/models.py:1922 order/models.py:2239 #: templates/js/translated/return_order.js:721 msgid "Item" msgstr "" -#: order/models.py:1959 +#: order/models.py:1923 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1968 +#: order/models.py:1932 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:2057 +#: order/models.py:2021 msgid "Return Order reference" msgstr "" -#: order/models.py:2069 +#: order/models.py:2033 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:2081 +#: order/models.py:2045 msgid "Return order status" msgstr "" -#: order/models.py:2260 +#: order/models.py:2224 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2276 +#: order/models.py:2240 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2282 +#: order/models.py:2246 msgid "Received Date" msgstr "" -#: order/models.py:2283 +#: order/models.py:2247 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2294 templates/js/translated/return_order.js:732 +#: order/models.py:2258 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2295 +#: order/models.py:2259 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2302 +#: order/models.py:2266 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/serializers.py:79 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_purchase_order_report.html:22 @@ -5157,163 +5209,163 @@ msgstr "" msgid "Line Items" msgstr "" -#: order/serializers.py:84 +#: order/serializers.py:83 msgid "Completed Lines" msgstr "" -#: order/serializers.py:287 +#: order/serializers.py:286 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:302 order/serializers.py:1247 +#: order/serializers.py:301 order/serializers.py:1235 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:312 order/serializers.py:1257 +#: order/serializers.py:311 order/serializers.py:1245 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:440 +#: order/serializers.py:439 msgid "Order is not open" msgstr "" -#: order/serializers.py:461 +#: order/serializers.py:460 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:463 +#: order/serializers.py:462 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:473 +#: order/serializers.py:472 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:478 msgid "Merge Items" msgstr "" -#: order/serializers.py:481 +#: order/serializers.py:480 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:499 +#: order/serializers.py:498 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:502 +#: order/serializers.py:501 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:510 +#: order/serializers.py:509 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:511 +#: order/serializers.py:510 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:550 order/serializers.py:1325 +#: order/serializers.py:549 order/serializers.py:1313 msgid "Line Item" msgstr "" -#: order/serializers.py:556 +#: order/serializers.py:555 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1657 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:581 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:589 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:601 templates/js/translated/barcode.js:52 +#: order/serializers.py:600 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:602 +#: order/serializers.py:601 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:618 +#: order/serializers.py:617 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:642 +#: order/serializers.py:641 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:690 order/serializers.py:1696 +#: order/serializers.py:689 order/serializers.py:1673 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:706 +#: order/serializers.py:705 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:717 +#: order/serializers.py:716 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1074 +#: order/serializers.py:1062 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1134 +#: order/serializers.py:1122 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1195 order/serializers.py:1334 +#: order/serializers.py:1183 order/serializers.py:1322 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1214 +#: order/serializers.py:1202 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1344 +#: order/serializers.py:1332 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1366 order/serializers.py:1472 +#: order/serializers.py:1354 order/serializers.py:1460 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1369 order/serializers.py:1475 +#: order/serializers.py:1357 order/serializers.py:1463 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1416 +#: order/serializers.py:1404 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1423 +#: order/serializers.py:1411 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1650 +#: order/serializers.py:1627 msgid "Return order line item" msgstr "" -#: order/serializers.py:1656 +#: order/serializers.py:1633 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1659 +#: order/serializers.py:1636 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1688 +#: order/serializers.py:1665 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1766 +#: order/serializers.py:1743 msgid "Line price currency" msgstr "" @@ -5643,7 +5695,7 @@ msgstr "" #: 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/part.js:1073 #: templates/js/translated/purchase_order.js:1752 #: templates/js/translated/return_order.js:380 #: templates/js/translated/sales_order.js:891 @@ -5739,34 +5791,34 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:406 part/models.py:3964 part/stocktake.py:218 -#: stock/admin.py:153 +#: part/admin.py:39 part/admin.py:398 part/models.py:3944 part/stocktake.py:219 +#: stock/admin.py:152 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 -#: stock/admin.py:157 +#: part/admin.py:41 part/admin.py:405 part/models.py:3945 part/stocktake.py:220 +#: stock/admin.py:156 msgid "Part Name" msgstr "" -#: part/admin.py:45 part/stocktake.py:220 +#: part/admin.py:45 part/stocktake.py:221 msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:940 part/templates/part/part_base.html:269 #: report/templates/report/inventree_stock_location_report.html:103 -#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/part.js:1227 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 -#: report/models.py:161 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2346 +#: part/admin.py:50 part/models.py:949 part/templates/part/part_base.html:277 +#: report/models.py:162 templates/js/translated/part.js:1232 +#: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:319 part/models.py:929 +#: part/admin.py:53 part/admin.py:319 part/models.py:922 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5775,11 +5827,11 @@ msgstr "" msgid "Part Image" msgstr "" -#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:222 msgid "Category ID" msgstr "" -#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:223 msgid "Category Name" msgstr "" @@ -5791,11 +5843,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:908 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1036 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5803,26 +5855,26 @@ msgstr "" 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 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:235 +#: templates/js/translated/part.js:715 templates/js/translated/part.js:2153 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3123 part/models.py:3137 -#: templates/js/translated/part.js:969 +#: part/admin.py:155 part/models.py:3088 part/models.py:3102 +#: templates/js/translated/part.js:970 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3130 part/models.py:3144 -#: templates/js/translated/part.js:979 +#: part/admin.py:158 part/models.py:3095 part/models.py:3109 +#: templates/js/translated/part.js:980 msgid "Maximum Cost" msgstr "" -#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 msgid "Parent ID" msgstr "" -#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 msgid "Parent Name" msgstr "" @@ -5831,141 +5883,149 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:325 part/models.py:393 part/serializers.py:117 -#: part/serializers.py:272 part/serializers.py:391 +#: part/admin.py:325 part/models.py:396 part/serializers.py:124 +#: part/serializers.py:267 part/serializers.py:386 #: 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:2803 templates/js/translated/search.js:130 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "" -#: part/admin.py:386 +#: part/admin.py:378 msgid "BOM Level" msgstr "" -#: part/admin.py:389 +#: part/admin.py:381 msgid "BOM Item ID" msgstr "" -#: part/admin.py:399 +#: part/admin.py:391 msgid "Parent IPN" msgstr "" -#: part/admin.py:410 part/models.py:3966 +#: part/admin.py:402 part/models.py:3946 msgid "Part IPN" msgstr "" -#: part/admin.py:423 part/serializers.py:1278 +#: part/admin.py:415 part/serializers.py:1274 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:428 part/serializers.py:1293 +#: part/admin.py:420 part/serializers.py:1289 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:110 +#: part/api.py:104 msgid "Starred" msgstr "" -#: part/api.py:112 +#: part/api.py:106 msgid "Filter by starred categories" msgstr "" -#: part/api.py:129 stock/api.py:318 +#: part/api.py:123 stock/api.py:312 msgid "Depth" msgstr "" -#: part/api.py:129 +#: part/api.py:123 msgid "Filter by category depth" msgstr "" -#: part/api.py:147 stock/api.py:336 +#: part/api.py:141 stock/api.py:330 +msgid "Top Level" +msgstr "" + +#: part/api.py:143 +msgid "Filter by top-level categories" +msgstr "" + +#: part/api.py:156 stock/api.py:345 msgid "Cascade" msgstr "" -#: part/api.py:149 +#: part/api.py:158 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:169 +#: part/api.py:179 templates/js/translated/part.js:308 msgid "Parent" msgstr "" -#: part/api.py:171 +#: part/api.py:181 msgid "Filter by parent category" msgstr "" -#: part/api.py:204 +#: part/api.py:214 msgid "Exclude Tree" msgstr "" -#: part/api.py:206 +#: part/api.py:216 msgid "Exclude sub-categories under the specified category" msgstr "" -#: part/api.py:455 +#: part/api.py:449 msgid "Has Results" msgstr "" -#: part/api.py:622 +#: part/api.py:616 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:640 +#: part/api.py:634 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:656 +#: part/api.py:650 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:740 +#: part/api.py:734 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:887 +#: part/api.py:881 msgid "Valid" msgstr "" -#: part/api.py:888 +#: part/api.py:882 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:894 +#: part/api.py:888 msgid "This option must be selected" msgstr "" -#: part/api.py:1111 +#: part/api.py:1105 msgid "BOM Valid" msgstr "" -#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 -#: part/serializers.py:406 part/serializers.py:1134 -#: part/templates/part/part_base.html:260 stock/api.py:781 +#: part/api.py:1508 part/models.py:932 part/models.py:3374 part/models.py:3889 +#: part/serializers.py:401 part/serializers.py:1130 +#: part/templates/part/part_base.html:260 stock/api.py:791 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2376 +#: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/api.py:1803 +#: part/api.py:1796 msgid "Uses" msgstr "" -#: part/bom.py:170 part/models.py:102 part/models.py:982 +#: part/bom.py:170 part/models.py:104 part/models.py:975 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 part/serializers.py:837 +#: part/bom.py:171 part/serializers.py:833 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5974,1054 +6034,1066 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 +#: part/models.py:85 part/models.py:3890 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:84 part/templates/part/category.html:136 +#: part/models.py:86 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "" -#: part/models.py:103 +#: part/models.py:105 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 +#: part/models.py:110 stock/models.py:174 templates/js/translated/part.js:2810 #: templates/js/translated/stock.js:2772 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:110 +#: part/models.py:112 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:119 +#: part/models.py:121 msgid "Default keywords" msgstr "" -#: part/models.py:120 +#: part/models.py:122 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 stock/models.py:85 stock/models.py:156 +#: part/models.py:128 stock/models.py:86 stock/models.py:157 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:127 stock/models.py:157 +#: part/models.py:129 stock/models.py:158 msgid "Icon (optional)" msgstr "" -#: part/models.py:149 +#: part/models.py:151 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:482 +#: part/models.py:485 msgid "Cannot delete this part as it is still active" msgstr "" -#: part/models.py:489 +#: part/models.py:490 msgid "Cannot delete this part as it is used in an assembly" msgstr "" -#: part/models.py:527 +#: part/models.py:528 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:575 part/models.py:582 +#: part/models.py:576 part/models.py:583 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:594 +#: part/models.py:595 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:659 +#: part/models.py:658 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:739 +#: part/models.py:736 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:844 +#: part/models.py:837 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:854 +#: part/models.py:847 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:869 +#: part/models.py:862 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:898 part/models.py:3965 +#: part/models.py:891 part/models.py:3945 msgid "Part name" msgstr "" -#: part/models.py:903 +#: part/models.py:896 msgid "Is Template" msgstr "" -#: part/models.py:904 +#: part/models.py:897 msgid "Is this part a template part?" msgstr "" -#: part/models.py:914 +#: part/models.py:907 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:922 +#: part/models.py:915 msgid "Part description (optional)" msgstr "" -#: part/models.py:930 +#: part/models.py:923 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:940 +#: part/models.py:933 msgid "Part category" msgstr "" -#: part/models.py:948 +#: part/models.py:941 msgid "Internal Part Number" msgstr "" -#: part/models.py:955 +#: part/models.py:948 msgid "Part revision or version number" msgstr "" -#: part/models.py:980 +#: part/models.py:973 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:1026 part/templates/part/part_base.html:376 +#: part/models.py:1019 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:1027 +#: part/models.py:1020 msgid "Default supplier part" msgstr "" -#: part/models.py:1034 +#: part/models.py:1027 msgid "Default Expiry" msgstr "" -#: part/models.py:1035 +#: part/models.py:1028 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:1044 +#: part/models.py:1037 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:1053 +#: part/models.py:1046 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1060 +#: part/models.py:1053 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1066 +#: part/models.py:1059 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1072 +#: part/models.py:1065 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1078 +#: part/models.py:1071 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1084 +#: part/models.py:1077 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1088 +#: part/models.py:1081 msgid "Is this part active?" msgstr "" -#: part/models.py:1094 +#: part/models.py:1087 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1100 +#: part/models.py:1093 msgid "BOM checksum" msgstr "" -#: part/models.py:1101 +#: part/models.py:1094 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1109 +#: part/models.py:1102 msgid "BOM checked by" msgstr "" -#: part/models.py:1114 +#: part/models.py:1107 msgid "BOM checked date" msgstr "" -#: part/models.py:1130 +#: part/models.py:1123 msgid "Creation User" msgstr "" -#: part/models.py:1140 +#: part/models.py:1133 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1145 part/templates/part/part_base.html:339 +#: part/models.py:1138 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2470 +#: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:2018 +#: part/models.py:2011 msgid "Sell multiple" msgstr "" -#: part/models.py:3037 +#: part/models.py:3002 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:3053 +#: part/models.py:3018 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:3054 +#: part/models.py:3019 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:3060 +#: part/models.py:3025 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3026 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:3067 +#: part/models.py:3032 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3033 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3074 +#: part/models.py:3039 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3040 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3046 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3047 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3053 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3054 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3060 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3096 +#: part/models.py:3061 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3102 +#: part/models.py:3067 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3103 +#: part/models.py:3068 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3109 +#: part/models.py:3074 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3110 +#: part/models.py:3075 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3116 +#: part/models.py:3081 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3117 +#: part/models.py:3082 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3124 +#: part/models.py:3089 msgid "Override minimum cost" msgstr "" -#: part/models.py:3131 +#: part/models.py:3096 msgid "Override maximum cost" msgstr "" -#: part/models.py:3138 +#: part/models.py:3103 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3145 +#: part/models.py:3110 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3151 +#: part/models.py:3116 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3152 +#: part/models.py:3117 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3158 +#: part/models.py:3123 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3159 +#: part/models.py:3124 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3165 +#: part/models.py:3130 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3131 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3172 +#: part/models.py:3137 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3138 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3192 +#: part/models.py:3157 msgid "Part for stocktake" msgstr "" -#: part/models.py:3197 +#: part/models.py:3162 msgid "Item Count" msgstr "" -#: part/models.py:3198 +#: part/models.py:3163 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3206 +#: part/models.py:3171 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3210 part/models.py:3293 +#: part/models.py:3175 part/models.py:3258 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report.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/part.js:1086 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" -#: part/models.py:3211 +#: part/models.py:3176 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3219 +#: part/models.py:3184 msgid "Additional notes" msgstr "" -#: part/models.py:3229 +#: part/models.py:3194 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3235 +#: part/models.py:3200 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3236 +#: part/models.py:3201 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3242 +#: part/models.py:3207 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3243 +#: part/models.py:3208 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3264 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3300 +#: part/models.py:3265 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3270 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3306 +#: part/models.py:3271 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3316 +#: part/models.py:3281 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3478 +#: part/models.py:3423 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3489 +#: part/models.py:3444 part/models.py:3608 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3455 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3500 +#: part/models.py:3466 msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3517 templates/js/translated/part.js:2878 +#: part/models.py:3483 templates/js/translated/part.js:2880 msgid "Test Name" msgstr "" -#: part/models.py:3518 +#: part/models.py:3484 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3524 +#: part/models.py:3490 msgid "Test Key" msgstr "" -#: part/models.py:3525 +#: part/models.py:3491 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3532 +#: part/models.py:3498 msgid "Test Description" msgstr "" -#: part/models.py:3533 +#: part/models.py:3499 msgid "Enter description for this test" msgstr "" -#: part/models.py:3537 report/models.py:208 -#: templates/js/translated/part.js:2899 +#: part/models.py:3503 report/models.py:209 +#: templates/js/translated/part.js:2901 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" -#: part/models.py:3537 +#: part/models.py:3503 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3542 templates/js/translated/part.js:2907 +#: part/models.py:3508 templates/js/translated/part.js:2909 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3543 +#: part/models.py:3509 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3548 templates/js/translated/part.js:2915 +#: part/models.py:3514 templates/js/translated/part.js:2917 msgid "Requires Value" msgstr "" -#: part/models.py:3549 +#: part/models.py:3515 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3554 templates/js/translated/part.js:2922 +#: part/models.py:3520 templates/js/translated/part.js:2924 msgid "Requires Attachment" msgstr "" -#: part/models.py:3556 +#: part/models.py:3522 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3603 +#: part/models.py:3528 part/models.py:3667 templates/js/translated/part.js:1637 +msgid "Choices" +msgstr "" + +#: part/models.py:3529 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3583 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3608 +#: part/models.py:3588 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3628 -msgid "Choices must be unique" -msgstr "" - -#: part/models.py:3645 +#: part/models.py:3625 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3660 +#: part/models.py:3640 msgid "Parameter Name" msgstr "" -#: part/models.py:3667 +#: part/models.py:3647 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3675 +#: part/models.py:3655 msgid "Parameter description" msgstr "" -#: part/models.py:3681 templates/js/translated/part.js:1627 +#: part/models.py:3661 templates/js/translated/part.js:1628 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "" -#: part/models.py:3682 +#: part/models.py:3662 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3687 templates/js/translated/part.js:1636 -msgid "Choices" -msgstr "" - -#: part/models.py:3688 +#: part/models.py:3668 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3765 +#: part/models.py:3745 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3808 +#: part/models.py:3788 msgid "Parent Part" msgstr "" -#: part/models.py:3816 part/models.py:3917 part/models.py:3918 +#: part/models.py:3796 part/models.py:3897 part/models.py:3898 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3821 +#: part/models.py:3801 msgid "Data" msgstr "" -#: part/models.py:3822 +#: part/models.py:3802 msgid "Parameter Value" msgstr "" -#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3904 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3925 +#: part/models.py:3905 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3963 +#: part/models.py:3943 msgid "Part ID or part name" msgstr "" -#: part/models.py:3964 +#: part/models.py:3944 msgid "Unique part ID value" msgstr "" -#: part/models.py:3966 +#: part/models.py:3946 msgid "Part IPN value" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "Level" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "BOM level" msgstr "" -#: part/models.py:4057 +#: part/models.py:4037 msgid "Select parent part" msgstr "" -#: part/models.py:4067 +#: part/models.py:4047 msgid "Sub part" msgstr "" -#: part/models.py:4068 +#: part/models.py:4048 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4079 +#: part/models.py:4059 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4085 +#: part/models.py:4065 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4091 +#: part/models.py:4071 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4098 part/templates/part/upload_bom.html:55 +#: part/models.py:4078 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4099 +#: part/models.py:4079 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4106 +#: part/models.py:4086 msgid "BOM item reference" msgstr "" -#: part/models.py:4114 +#: part/models.py:4094 msgid "BOM item notes" msgstr "" -#: part/models.py:4120 +#: part/models.py:4100 msgid "Checksum" msgstr "" -#: part/models.py:4121 +#: part/models.py:4101 msgid "BOM line checksum" msgstr "" -#: part/models.py:4126 templates/js/translated/table_filters.js:174 +#: part/models.py:4106 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4127 +#: part/models.py:4107 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4132 part/templates/part/upload_bom.html:57 +#: part/models.py:4112 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:4133 +#: part/models.py:4113 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4138 part/templates/part/upload_bom.html:56 +#: part/models.py:4118 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4139 +#: part/models.py:4119 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4224 stock/models.py:664 +#: part/models.py:4204 stock/models.py:662 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4234 part/models.py:4236 +#: part/models.py:4214 part/models.py:4216 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4376 +#: part/models.py:4354 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4397 +#: part/models.py:4375 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4410 +#: part/models.py:4388 msgid "Parent BOM item" msgstr "" -#: part/models.py:4418 +#: part/models.py:4396 msgid "Substitute part" msgstr "" -#: part/models.py:4434 +#: part/models.py:4412 msgid "Part 1" msgstr "" -#: part/models.py:4442 +#: part/models.py:4420 msgid "Part 2" msgstr "" -#: part/models.py:4443 +#: part/models.py:4421 msgid "Select Related Part" msgstr "" -#: part/models.py:4462 +#: part/models.py:4440 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4467 +#: part/models.py:4445 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:119 part/serializers.py:141 +#: part/serializers.py:118 +msgid "Parent Category" +msgstr "" + +#: part/serializers.py:119 templates/js/translated/part.js:309 +msgid "Parent part category" +msgstr "" + +#: part/serializers.py:126 part/serializers.py:148 #: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/serializers.py:185 +#: part/serializers.py:180 msgid "Results" msgstr "" -#: part/serializers.py:186 +#: part/serializers.py:181 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 +#: part/serializers.py:205 part/serializers.py:223 stock/serializers.py:562 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:273 +#: part/serializers.py:268 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:397 +#: part/serializers.py:392 msgid "No parts selected" msgstr "" -#: part/serializers.py:407 +#: part/serializers.py:402 msgid "Select category" msgstr "" -#: part/serializers.py:442 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:443 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:448 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:449 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:455 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:456 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:463 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:488 +#: part/serializers.py:483 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:490 +#: part/serializers.py:485 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:497 +#: part/serializers.py:492 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:493 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:510 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:531 +#: part/serializers.py:526 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:541 +#: part/serializers.py:536 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:548 +#: part/serializers.py:543 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:557 +#: part/serializers.py:552 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:568 +#: part/serializers.py:563 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:575 +#: part/serializers.py:570 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:834 msgid "External Stock" msgstr "" -#: part/serializers.py:840 +#: part/serializers.py:836 msgid "Unallocated Stock" msgstr "" -#: part/serializers.py:843 +#: part/serializers.py:839 msgid "Variant Stock" msgstr "" -#: part/serializers.py:873 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:471 +#: part/serializers.py:869 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:472 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:870 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:880 templates/js/translated/part.js:102 +#: part/serializers.py:876 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:881 +#: part/serializers.py:877 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:887 +#: part/serializers.py:883 msgid "Supplier Information" msgstr "" -#: part/serializers.py:888 +#: part/serializers.py:884 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:896 +#: part/serializers.py:892 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:897 +#: part/serializers.py:893 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:902 +#: part/serializers.py:898 msgid "Existing Image" msgstr "" -#: part/serializers.py:903 +#: part/serializers.py:899 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:920 +#: part/serializers.py:916 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1126 +#: part/serializers.py:1122 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1136 +#: part/serializers.py:1132 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1146 +#: part/serializers.py:1142 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1152 +#: part/serializers.py:1148 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1153 +#: part/serializers.py:1149 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1158 +#: part/serializers.py:1154 msgid "Generate Report" msgstr "" -#: part/serializers.py:1159 +#: part/serializers.py:1155 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1164 +#: part/serializers.py:1160 msgid "Update Parts" msgstr "" -#: part/serializers.py:1165 +#: part/serializers.py:1161 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1173 +#: part/serializers.py:1169 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1279 +#: part/serializers.py:1275 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1286 +#: part/serializers.py:1282 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1294 +#: part/serializers.py:1290 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1301 +#: part/serializers.py:1297 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1330 +#: part/serializers.py:1326 msgid "Update" msgstr "" -#: part/serializers.py:1331 +#: part/serializers.py:1327 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1354 +#: part/serializers.py:1350 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1361 +#: part/serializers.py:1357 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1364 +#: part/serializers.py:1360 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1727 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1739 +#: part/serializers.py:1735 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1740 +#: part/serializers.py:1736 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1745 +#: part/serializers.py:1741 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1746 +#: part/serializers.py:1742 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1747 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1752 +#: part/serializers.py:1748 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1757 +#: part/serializers.py:1753 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1758 +#: part/serializers.py:1754 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1792 +#: part/serializers.py:1788 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1793 +#: part/serializers.py:1789 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1823 +#: part/serializers.py:1819 msgid "No part column specified" msgstr "" -#: part/serializers.py:1867 +#: part/serializers.py:1863 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1870 +#: part/serializers.py:1866 msgid "No matching part found" msgstr "" -#: part/serializers.py:1873 +#: part/serializers.py:1869 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1882 +#: part/serializers.py:1878 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1890 +#: part/serializers.py:1886 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1911 +#: part/serializers.py:1907 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 +#: part/stocktake.py:225 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "" -#: part/stocktake.py:225 +#: part/stocktake.py:226 msgid "Total Cost Min" msgstr "" -#: part/stocktake.py:226 +#: part/stocktake.py:227 msgid "Total Cost Max" msgstr "" -#: part/stocktake.py:284 +#: part/stocktake.py:285 msgid "Stocktake Report Available" msgstr "" -#: part/stocktake.py:285 +#: part/stocktake.py:286 msgid "A new stocktake report is available for download" msgstr "" @@ -7155,7 +7227,7 @@ 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 +#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" @@ -7255,15 +7327,15 @@ msgstr "" msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:655 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:663 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:748 +#: part/templates/part/detail.html:750 msgid "Add Test Result Template" msgstr "" @@ -7344,7 +7416,7 @@ msgstr "" msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" msgstr "" @@ -7416,7 +7488,7 @@ 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:2443 +#: templates/js/translated/part.js:1265 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7509,8 +7581,8 @@ msgstr "" #: 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:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/part.js:1243 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 #: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7553,7 +7625,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:247 +#: part/templates/part/prices.html:28 stock/admin.py:251 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 @@ -7630,8 +7702,8 @@ msgstr "" #: part/templates/part/stock_count.html:7 #: templates/js/translated/model_renderers.js:227 -#: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 -#: templates/js/translated/part.js:2142 +#: templates/js/translated/part.js:705 templates/js/translated/part.js:2141 +#: templates/js/translated/part.js:2143 msgid "No Stock" msgstr "" @@ -8003,7 +8075,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:308 msgid "Landscape" msgstr "" @@ -8116,62 +8188,62 @@ msgstr "" msgid "Uninstalled plugin successfully" msgstr "" -#: plugin/models.py:35 +#: plugin/models.py:36 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:36 +#: plugin/models.py:37 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:42 users/models.py:100 +#: plugin/models.py:43 users/models.py:100 msgid "Key" msgstr "" -#: plugin/models.py:43 +#: plugin/models.py:44 msgid "Key of plugin" msgstr "" -#: plugin/models.py:51 +#: plugin/models.py:52 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:58 plugin/serializers.py:90 +#: plugin/models.py:59 plugin/serializers.py:90 msgid "Package Name" msgstr "" -#: plugin/models.py:60 +#: plugin/models.py:61 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:65 +#: plugin/models.py:66 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:156 templates/js/translated/table_filters.js:370 +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "" -#: plugin/models.py:165 +#: plugin/models.py:166 msgid "Sample plugin" msgstr "" -#: plugin/models.py:173 +#: plugin/models.py:174 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:181 +#: plugin/models.py:182 msgid "Package Plugin" msgstr "" -#: plugin/models.py:205 report/models.py:474 +#: plugin/models.py:220 report/models.py:475 #: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:252 +#: plugin/models.py:267 msgid "Method" msgstr "" @@ -8179,17 +8251,17 @@ msgstr "" msgid "No author found" msgstr "" -#: plugin/registry.py:597 +#: plugin/registry.py:534 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:600 +#: plugin/registry.py:537 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:602 +#: plugin/registry.py:539 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -8304,23 +8376,19 @@ msgstr "" msgid "Activate this plugin" msgstr "" -#: plugin/serializers.py:234 +#: plugin/serializers.py:226 msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:235 +#: plugin/serializers.py:227 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:77 +#: report/api.py:88 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:89 report/serializers.py:53 -msgid "Model Type" -msgstr "" - -#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/api.py:103 report/models.py:439 report/serializers.py:98 #: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 #: templates/js/translated/return_order.js:353 #: templates/js/translated/sales_order.js:887 @@ -8328,176 +8396,176 @@ msgstr "" msgid "Items" msgstr "" -#: report/api.py:168 +#: report/api.py:180 msgid "Plugin not found" msgstr "" -#: report/api.py:170 +#: report/api.py:182 msgid "Plugin is not active" msgstr "" -#: report/api.py:172 +#: report/api.py:184 msgid "Plugin does not support label printing" msgstr "" -#: report/api.py:221 +#: report/api.py:233 msgid "Invalid label dimensions" msgstr "" -#: report/api.py:236 report/api.py:316 +#: report/api.py:248 report/api.py:329 msgid "No valid items provided to template" msgstr "" -#: report/api.py:271 +#: report/api.py:283 msgid "Error printing label" msgstr "" -#: report/api.py:362 report/api.py:398 +#: report/api.py:375 report/api.py:411 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/helpers.py:41 +#: report/helpers.py:43 msgid "A4" msgstr "" -#: report/helpers.py:42 +#: report/helpers.py:44 msgid "A3" msgstr "" -#: report/helpers.py:43 +#: report/helpers.py:45 msgid "Legal" msgstr "" -#: report/helpers.py:44 +#: report/helpers.py:46 msgid "Letter" msgstr "" -#: report/models.py:118 +#: report/models.py:119 msgid "Template file with this name already exists" msgstr "" -#: report/models.py:150 +#: report/models.py:151 msgid "Template name" msgstr "" -#: report/models.py:156 +#: report/models.py:157 msgid "Template description" msgstr "" -#: report/models.py:162 +#: report/models.py:163 msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Filename Pattern" msgstr "" -#: report/models.py:203 +#: report/models.py:204 msgid "Pattern for generating filenames" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Template is enabled" msgstr "" -#: report/models.py:214 +#: report/models.py:215 msgid "Target model type for template" msgstr "" -#: report/models.py:234 +#: report/models.py:235 msgid "Filters" msgstr "" -#: report/models.py:235 +#: report/models.py:236 msgid "Template query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:294 report/models.py:361 +#: report/models.py:295 report/models.py:362 msgid "Template file" msgstr "" -#: report/models.py:302 +#: report/models.py:303 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:308 +#: report/models.py:309 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:367 +#: report/models.py:368 msgid "Width [mm]" msgstr "" -#: report/models.py:368 +#: report/models.py:369 msgid "Label width, specified in mm" msgstr "" -#: report/models.py:374 +#: report/models.py:375 msgid "Height [mm]" msgstr "" -#: report/models.py:375 +#: report/models.py:376 msgid "Label height, specified in mm" msgstr "" -#: report/models.py:438 +#: report/models.py:439 msgid "Number of items to process" msgstr "" -#: report/models.py:444 +#: report/models.py:445 msgid "Report generation is complete" msgstr "" -#: report/models.py:448 templates/js/translated/build.js:2177 +#: report/models.py:449 templates/js/translated/build.js:2177 msgid "Progress" msgstr "" -#: report/models.py:448 +#: report/models.py:449 msgid "Report generation progress" msgstr "" -#: report/models.py:456 +#: report/models.py:457 msgid "Report Template" msgstr "" -#: report/models.py:463 report/models.py:486 +#: report/models.py:464 report/models.py:487 msgid "Output File" msgstr "" -#: report/models.py:464 report/models.py:487 +#: report/models.py:465 report/models.py:488 msgid "Generated output file" msgstr "" -#: report/models.py:475 +#: report/models.py:476 msgid "Label output plugin" msgstr "" -#: report/models.py:479 +#: report/models.py:480 msgid "Label Template" msgstr "" -#: report/models.py:502 +#: report/models.py:503 msgid "Snippet" msgstr "" -#: report/models.py:503 +#: report/models.py:504 msgid "Report snippet file" msgstr "" -#: report/models.py:510 +#: report/models.py:511 msgid "Snippet file description" msgstr "" -#: report/models.py:528 +#: report/models.py:529 msgid "Asset" msgstr "" -#: report/models.py:529 +#: report/models.py:530 msgid "Report asset file" msgstr "" -#: report/models.py:536 +#: report/models.py:537 msgid "Asset file description" msgstr "" @@ -8570,8 +8638,8 @@ msgid "Total" msgstr "" #: report/templates/report/inventree_return_order_report.html:25 -#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 -#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:824 +#: stock/serializers.py:149 stock/templates/stock/item_base.html:311 #: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 #: templates/js/translated/build.js:2355 #: templates/js/translated/model_renderers.js:230 @@ -8601,32 +8669,32 @@ msgstr "" msgid "Test" msgstr "" -#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2412 msgid "Result" msgstr "" -#: report/templates/report/inventree_test_report.html:130 +#: report/templates/report/inventree_test_report.html:129 msgid "Pass" msgstr "" -#: report/templates/report/inventree_test_report.html:132 +#: report/templates/report/inventree_test_report.html:131 msgid "Fail" msgstr "" -#: report/templates/report/inventree_test_report.html:139 +#: report/templates/report/inventree_test_report.html:138 msgid "No result (required)" msgstr "" -#: report/templates/report/inventree_test_report.html:141 +#: report/templates/report/inventree_test_report.html:140 msgid "No result" msgstr "" -#: report/templates/report/inventree_test_report.html:154 +#: report/templates/report/inventree_test_report.html:153 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "" -#: report/templates/report/inventree_test_report.html:168 stock/admin.py:162 +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 #: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 #: templates/js/translated/stock.js:3110 msgid "Serial" @@ -8648,654 +8716,670 @@ msgstr "" msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:172 +#: stock/admin.py:51 stock/admin.py:171 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:176 +#: stock/admin.py:53 stock/admin.py:175 msgid "Location Name" msgstr "" -#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/admin.py:63 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:149 +#: stock/admin.py:148 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:168 +#: stock/admin.py:167 msgid "Status Code" msgstr "" -#: stock/admin.py:180 +#: stock/admin.py:179 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:185 +#: stock/admin.py:184 +msgid "Supplier Part SKU" +msgstr "" + +#: stock/admin.py:189 msgid "Supplier ID" msgstr "" -#: stock/admin.py:191 +#: stock/admin.py:195 msgid "Supplier Name" msgstr "" -#: stock/admin.py:196 +#: stock/admin.py:200 msgid "Customer ID" msgstr "" -#: stock/admin.py:201 stock/models.py:806 +#: stock/admin.py:205 stock/models.py:804 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:206 +#: stock/admin.py:210 msgid "Build ID" msgstr "" -#: stock/admin.py:216 +#: stock/admin.py:220 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:221 +#: stock/admin.py:225 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:236 +#: stock/admin.py:240 msgid "Review Needed" msgstr "" -#: stock/admin.py:241 +#: stock/admin.py:245 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:256 stock/models.py:900 +#: stock/admin.py:260 stock/models.py:898 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "" -#: stock/api.py:318 +#: stock/api.py:312 msgid "Filter by location depth" msgstr "" -#: stock/api.py:338 +#: stock/api.py:332 +msgid "Filter by top-level locations" +msgstr "" + +#: stock/api.py:347 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:359 +#: stock/api.py:369 stock/serializers.py:1085 msgid "Parent Location" msgstr "" -#: stock/api.py:360 +#: stock/api.py:370 msgid "Filter by parent location" msgstr "" -#: stock/api.py:615 templates/js/translated/table_filters.js:427 +#: stock/api.py:625 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:803 +#: stock/api.py:813 msgid "Part Tree" msgstr "" -#: stock/api.py:833 +#: stock/api.py:843 msgid "Expiry date before" msgstr "" -#: stock/api.py:837 +#: stock/api.py:847 msgid "Expiry date after" msgstr "" -#: stock/api.py:840 stock/templates/stock/item_base.html:439 +#: stock/api.py:850 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:927 +#: stock/api.py:937 msgid "Quantity is required" msgstr "" -#: stock/api.py:933 +#: stock/api.py:943 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:964 +#: stock/api.py:974 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:974 +#: stock/api.py:984 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:1005 +#: stock/api.py:1015 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:59 +#: stock/models.py:60 msgid "Stock Location type" msgstr "" -#: stock/models.py:60 +#: stock/models.py:61 msgid "Stock Location types" msgstr "" -#: stock/models.py:86 +#: stock/models.py:87 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:123 stock/models.py:788 +#: stock/models.py:124 stock/models.py:786 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:124 stock/templates/stock/location.html:186 +#: stock/models.py:125 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "" -#: stock/models.py:166 stock/models.py:949 +#: stock/models.py:167 stock/models.py:947 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:167 stock/models.py:950 +#: stock/models.py:168 stock/models.py:948 msgid "Select Owner" msgstr "" -#: stock/models.py:175 +#: stock/models.py:176 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:182 templates/js/translated/stock.js:2781 +#: stock/models.py:183 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:183 +#: stock/models.py:184 msgid "This is an external stock location" msgstr "" -#: stock/models.py:189 templates/js/translated/stock.js:2790 +#: stock/models.py:190 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" -#: stock/models.py:193 +#: stock/models.py:194 msgid "Stock location type of this location" msgstr "" -#: stock/models.py:262 +#: stock/models.py:261 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:643 +#: stock/models.py:641 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:670 stock/serializers.py:419 +#: stock/models.py:668 stock/serializers.py:446 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:687 +#: stock/models.py:685 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:697 stock/models.py:710 +#: stock/models.py:695 stock/models.py:708 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:700 +#: stock/models.py:698 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:724 +#: stock/models.py:722 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:729 +#: stock/models.py:727 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:742 +#: stock/models.py:740 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:758 +#: stock/models.py:756 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:770 +#: stock/models.py:768 msgid "Base part" msgstr "" -#: stock/models.py:780 +#: stock/models.py:778 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:792 +#: stock/models.py:790 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:800 stock/serializers.py:1480 +#: stock/models.py:798 stock/serializers.py:1476 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:811 +#: stock/models.py:809 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:830 +#: stock/models.py:828 msgid "Serial number for this item" msgstr "" -#: stock/models.py:844 stock/serializers.py:1463 +#: stock/models.py:842 stock/serializers.py:1459 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:849 +#: stock/models.py:847 msgid "Stock Quantity" msgstr "" -#: stock/models.py:859 +#: stock/models.py:857 msgid "Source Build" msgstr "" -#: stock/models.py:862 +#: stock/models.py:860 msgid "Build for this stock item" msgstr "" -#: stock/models.py:869 stock/templates/stock/item_base.html:363 +#: stock/models.py:867 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:872 +#: stock/models.py:870 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:881 +#: stock/models.py:879 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:885 +#: stock/models.py:883 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:891 +#: stock/models.py:889 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:902 +#: stock/models.py:900 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:920 +#: stock/models.py:918 msgid "Delete on deplete" msgstr "" -#: stock/models.py:921 +#: stock/models.py:919 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:941 +#: stock/models.py:939 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:972 +#: stock/models.py:970 msgid "Converted to part" msgstr "" -#: stock/models.py:1490 +#: stock/models.py:1486 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1496 +#: stock/models.py:1492 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1500 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1510 +#: stock/models.py:1506 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1515 +#: stock/models.py:1511 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1523 stock/serializers.py:658 +#: stock/models.py:1519 stock/serializers.py:660 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1620 +#: stock/models.py:1616 msgid "Test template does not exist" msgstr "" -#: stock/models.py:1638 +#: stock/models.py:1634 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1642 +#: stock/models.py:1638 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1645 +#: stock/models.py:1641 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1648 +#: stock/models.py:1644 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1651 +#: stock/models.py:1647 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1654 +#: stock/models.py:1650 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1661 stock/serializers.py:1369 +#: stock/models.py:1657 stock/serializers.py:1365 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1665 +#: stock/models.py:1661 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1673 +#: stock/models.py:1669 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1678 +#: stock/models.py:1674 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1905 +#: stock/models.py:1901 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2310 msgid "Entry notes" msgstr "" -#: stock/models.py:2391 +#: stock/models.py:2378 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2396 +#: stock/models.py:2383 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2423 +#: stock/models.py:2388 +msgid "Invalid value for this test" +msgstr "" + +#: stock/models.py:2412 msgid "Test result" msgstr "" -#: stock/models.py:2430 +#: stock/models.py:2419 msgid "Test output value" msgstr "" -#: stock/models.py:2438 +#: stock/models.py:2427 msgid "Test result attachment" msgstr "" -#: stock/models.py:2442 +#: stock/models.py:2431 msgid "Test notes" msgstr "" -#: stock/models.py:2450 templates/js/translated/stock.js:1548 +#: stock/models.py:2439 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2440 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2457 +#: stock/models.py:2446 msgid "Started" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2447 msgid "The timestamp of the test start" msgstr "" -#: stock/models.py:2464 +#: stock/models.py:2453 msgid "Finished" msgstr "" -#: stock/models.py:2465 +#: stock/models.py:2454 msgid "The timestamp of the test finish" msgstr "" -#: stock/serializers.py:75 +#: stock/serializers.py:74 msgid "Generated batch code" msgstr "" -#: stock/serializers.py:84 +#: stock/serializers.py:83 msgid "Select build order" msgstr "" -#: stock/serializers.py:93 +#: stock/serializers.py:92 msgid "Select stock item to generate batch code for" msgstr "" -#: stock/serializers.py:102 +#: stock/serializers.py:101 msgid "Select location to generate batch code for" msgstr "" -#: stock/serializers.py:111 +#: stock/serializers.py:110 msgid "Select part to generate batch code for" msgstr "" -#: stock/serializers.py:120 +#: stock/serializers.py:119 msgid "Select purchase order" msgstr "" -#: stock/serializers.py:127 +#: stock/serializers.py:126 msgid "Enter quantity for batch code" msgstr "" -#: stock/serializers.py:150 +#: stock/serializers.py:149 msgid "Generated serial number" msgstr "" -#: stock/serializers.py:159 +#: stock/serializers.py:158 msgid "Select part to generate serial number for" msgstr "" -#: stock/serializers.py:167 +#: stock/serializers.py:166 msgid "Quantity of serial numbers to generate" msgstr "" -#: stock/serializers.py:229 +#: stock/serializers.py:228 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:248 +#: stock/serializers.py:247 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:280 +#: stock/serializers.py:279 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:313 +#: stock/serializers.py:315 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:411 +#: stock/serializers.py:438 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:531 +#: stock/serializers.py:558 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:595 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:606 +#: stock/serializers.py:608 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:613 +#: stock/serializers.py:615 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 +#: stock/serializers.py:626 stock/serializers.py:1322 stock/serializers.py:1578 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:631 +#: stock/serializers.py:633 msgid "Optional note field" msgstr "" -#: stock/serializers.py:641 +#: stock/serializers.py:643 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:696 +#: stock/serializers.py:698 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:703 +#: stock/serializers.py:705 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:704 +#: stock/serializers.py:706 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 -#: stock/serializers.py:935 +#: stock/serializers.py:711 stock/serializers.py:791 stock/serializers.py:887 +#: stock/serializers.py:937 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:719 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:725 +#: stock/serializers.py:727 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:736 +#: stock/serializers.py:738 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:749 +#: stock/serializers.py:751 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:784 +#: stock/serializers.py:786 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:819 +#: stock/serializers.py:821 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:834 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:849 +#: stock/serializers.py:851 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:880 +#: stock/serializers.py:882 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:917 +#: stock/serializers.py:919 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:923 +#: stock/serializers.py:925 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:1019 stock/serializers.py:1082 +#: stock/serializers.py:1021 stock/serializers.py:1093 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:220 +#: stock/templates/stock/location.html:222 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1198 +#: stock/serializers.py:1086 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: stock/serializers.py:1194 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1202 +#: stock/serializers.py:1198 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1206 +#: stock/serializers.py:1202 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1230 +#: stock/serializers.py:1226 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1236 +#: stock/serializers.py:1232 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1244 +#: stock/serializers.py:1240 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1254 stock/serializers.py:1508 +#: stock/serializers.py:1250 stock/serializers.py:1504 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1333 +#: stock/serializers.py:1329 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1338 +#: stock/serializers.py:1334 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1339 +#: stock/serializers.py:1335 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1344 +#: stock/serializers.py:1340 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1345 +#: stock/serializers.py:1341 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1355 +#: stock/serializers.py:1351 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1422 +#: stock/serializers.py:1418 msgid "No Change" msgstr "" -#: stock/serializers.py:1451 +#: stock/serializers.py:1447 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1470 +#: stock/serializers.py:1466 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1498 +#: stock/serializers.py:1494 msgid "Stock transaction notes" msgstr "" @@ -9448,7 +9532,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276 msgid "Delete Test Data" msgstr "" @@ -9468,11 +9552,11 @@ msgstr "" msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:272 +#: stock/templates/stock/item.html:264 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "" @@ -9758,28 +9842,28 @@ msgstr "" msgid "Location Type" msgstr "" -#: stock/templates/stock/location.html:224 +#: stock/templates/stock/location.html:226 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:225 +#: stock/templates/stock/location.html:227 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:295 +#: stock/templates/stock/location.html:299 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:317 +#: stock/templates/stock/location.html:321 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:390 +#: stock/templates/stock/location.html:394 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:401 +#: stock/templates/stock/location.html:405 msgid "Link Barcode to Stock Location" msgstr "" @@ -10203,20 +10287,20 @@ msgstr "" msgid "Pricing Settings" msgstr "" -#: templates/InvenTree/settings/pricing.html:34 +#: templates/InvenTree/settings/pricing.html:35 msgid "Exchange Rates" msgstr "" -#: templates/InvenTree/settings/pricing.html:38 +#: templates/InvenTree/settings/pricing.html:39 msgid "Update Now" msgstr "" -#: templates/InvenTree/settings/pricing.html:46 -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 msgid "Last Update" msgstr "" -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:51 msgid "Never" msgstr "" @@ -10273,8 +10357,8 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:547 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 +#: templates/js/translated/part.js:393 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:402 msgid "Delete" msgstr "" @@ -10314,12 +10398,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 -#: templates/js/translated/part.js:1645 +#: templates/js/translated/part.js:1646 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 -#: templates/js/translated/part.js:1646 +#: templates/js/translated/part.js:1647 msgid "Delete Template" msgstr "" @@ -10709,7 +10793,7 @@ msgid "Submit Bug Report" msgstr "" #: templates/about.html:91 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 +#: templates/js/translated/helpers.js:589 msgid "copy to clipboard" msgstr "" @@ -10773,7 +10857,7 @@ 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 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45 msgid "Return to Site" msgstr "" @@ -10887,15 +10971,19 @@ msgstr "" msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "" -#: templates/allauth_2fa/setup.html:23 +#: templates/allauth_2fa/setup.html:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 msgid "Step 2" msgstr "" -#: templates/allauth_2fa/setup.html:27 +#: templates/allauth_2fa/setup.html:28 msgid "Input a token generated by the app:" msgstr "" -#: templates/allauth_2fa/setup.html:37 +#: templates/allauth_2fa/setup.html:38 msgid "Verify" msgstr "" @@ -10974,7 +11062,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3217 +#: templates/js/translated/part.js:3219 msgid "Minimum Quantity" msgstr "" @@ -11062,27 +11150,27 @@ msgstr "" msgid "Delete attachments" msgstr "" -#: templates/js/translated/attachment.js:253 +#: templates/js/translated/attachment.js:260 msgid "Attachment actions" msgstr "" -#: templates/js/translated/attachment.js:275 +#: templates/js/translated/attachment.js:294 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:315 +#: templates/js/translated/attachment.js:334 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:365 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:366 +#: templates/js/translated/attachment.js:385 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:374 +#: templates/js/translated/attachment.js:393 msgid "Delete attachment" msgstr "" @@ -11363,7 +11451,7 @@ msgid "Includes variant and substitute stock" msgstr "" #: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 -#: templates/js/translated/part.js:1256 +#: templates/js/translated/part.js:1257 #: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" @@ -11690,7 +11778,7 @@ msgstr "" #: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 #: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 -#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11733,8 +11821,8 @@ msgstr "" msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 -#: templates/js/translated/part.js:1202 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:791 +#: templates/js/translated/part.js:1203 msgid "Trackable part" msgstr "" @@ -11920,7 +12008,7 @@ msgid "Delete Parameters" msgstr "" #: templates/js/translated/company.js:1191 -#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2244 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2245 msgid "Order parts" msgstr "" @@ -11937,34 +12025,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:1279 -#: templates/js/translated/company.js:1567 templates/js/translated/part.js:798 -#: templates/js/translated/part.js:1210 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Template part" msgstr "" #: templates/js/translated/company.js:1283 -#: templates/js/translated/company.js:1571 templates/js/translated/part.js:802 -#: templates/js/translated/part.js:1214 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:803 +#: templates/js/translated/part.js:1215 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1464 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1465 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1527 +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1528 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1528 +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1529 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1433 +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1434 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1549 +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1550 msgid "Delete Parameter" msgstr "" @@ -12098,23 +12186,23 @@ msgstr "" msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2499 +#: templates/js/translated/forms.js:2500 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3113 +#: templates/js/translated/forms.js:3114 msgid "Select Columns" msgstr "" @@ -12215,7 +12303,7 @@ msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 -#: templates/js/translated/part.js:1604 +#: templates/js/translated/part.js:1605 msgid "ID" msgstr "" @@ -12296,347 +12384,343 @@ msgstr "" 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 +#: templates/js/translated/part.js:333 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:355 +#: templates/js/translated/part.js:356 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:356 +#: templates/js/translated/part.js:357 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:370 +#: templates/js/translated/part.js:371 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:383 +#: templates/js/translated/part.js:384 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:388 +#: templates/js/translated/part.js:389 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:397 +#: templates/js/translated/part.js:398 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:401 +#: templates/js/translated/part.js:402 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:406 +#: templates/js/translated/part.js:407 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:430 +#: templates/js/translated/part.js:431 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:432 +#: templates/js/translated/part.js:433 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:433 +#: templates/js/translated/part.js:434 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:462 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:463 +#: templates/js/translated/part.js:464 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:474 +#: templates/js/translated/part.js:475 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:531 +#: templates/js/translated/part.js:532 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:532 +#: templates/js/translated/part.js:533 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:546 +#: templates/js/translated/part.js:547 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:548 +#: templates/js/translated/part.js:549 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:549 +#: templates/js/translated/part.js:550 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:550 +#: templates/js/translated/part.js:551 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:557 +#: templates/js/translated/part.js:558 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:593 +#: templates/js/translated/part.js:594 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:595 +#: templates/js/translated/part.js:596 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:600 +#: templates/js/translated/part.js:601 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:602 +#: templates/js/translated/part.js:603 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:619 +#: templates/js/translated/part.js:620 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:629 +#: templates/js/translated/part.js:630 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:632 +#: templates/js/translated/part.js:633 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:657 +#: templates/js/translated/part.js:658 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:685 +#: templates/js/translated/part.js:686 #: templates/js/translated/table_filters.js:747 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:688 +#: templates/js/translated/part.js:689 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:748 +#: templates/js/translated/part.js:749 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:771 +#: templates/js/translated/part.js:772 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +#: templates/js/translated/part.js:795 templates/js/translated/part.js:1207 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:806 +#: templates/js/translated/part.js:807 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:810 +#: templates/js/translated/part.js:811 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:897 +#: templates/js/translated/part.js:898 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:901 +#: templates/js/translated/part.js:902 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1050 +#: templates/js/translated/part.js:1051 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1145 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +#: templates/js/translated/part.js:1113 templates/js/translated/part.js:1155 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1281 +#: templates/js/translated/part.js:1282 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1599 +#: templates/js/translated/part.js:1600 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1662 +#: templates/js/translated/part.js:1663 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1674 +#: templates/js/translated/part.js:1675 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1682 +#: templates/js/translated/part.js:1683 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1716 +#: templates/js/translated/part.js:1717 #: templates/js/translated/purchase_order.js:1654 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1860 +#: templates/js/translated/part.js:1861 #: templates/js/translated/purchase_order.js:2153 #: templates/js/translated/return_order.js:755 #: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1906 +#: templates/js/translated/part.js:1907 #: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1970 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1991 +#: templates/js/translated/part.js:1992 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 +#: templates/js/translated/part.js:2080 templates/js/translated/part.js:2506 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2200 +#: templates/js/translated/part.js:2201 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2205 +#: templates/js/translated/part.js:2206 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2235 +#: templates/js/translated/part.js:2236 msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2286 +#: templates/js/translated/part.js:2287 msgid "part" msgstr "" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2288 msgid "parts" msgstr "" -#: templates/js/translated/part.js:2383 +#: templates/js/translated/part.js:2384 msgid "No category" msgstr "" -#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2546 +#: templates/js/translated/part.js:2547 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2644 +#: templates/js/translated/part.js:2645 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2760 +#: templates/js/translated/part.js:2761 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2776 +#: templates/js/translated/part.js:2777 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2865 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2887 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/part.js:2938 templates/js/translated/stock.js:1457 #: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2940 +#: templates/js/translated/part.js:2942 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2956 +#: templates/js/translated/part.js:2958 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2970 +#: templates/js/translated/part.js:2972 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3051 templates/js/translated/part.js:3052 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3052 +#: templates/js/translated/part.js:3054 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3058 +#: templates/js/translated/part.js:3060 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3108 +#: templates/js/translated/part.js:3110 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3114 +#: templates/js/translated/part.js:3116 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3210 +#: templates/js/translated/part.js:3212 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3226 +#: templates/js/translated/part.js:3228 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3271 +#: templates/js/translated/part.js:3273 msgid "Minimum Stock Level" msgstr "" @@ -13244,10 +13328,6 @@ msgstr "" 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 "" @@ -13416,7 +13496,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:401 +#: templates/js/translated/stock.js:1042 users/models.py:392 msgid "Add" msgstr "" @@ -14307,34 +14387,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:384 +#: users/models.py:375 msgid "Permission set" msgstr "" -#: users/models.py:393 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "View" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "Permission to view items" msgstr "" -#: users/models.py:401 +#: users/models.py:392 msgid "Permission to add items" msgstr "" -#: users/models.py:405 +#: users/models.py:396 msgid "Change" msgstr "" -#: users/models.py:407 +#: users/models.py:398 msgid "Permissions to edit items" msgstr "" -#: users/models.py:413 +#: users/models.py:404 msgid "Permission to delete items" msgstr "" + diff --git a/src/backend/InvenTree/locale/sr/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/sr/LC_MESSAGES/django.po index 2e4c8f2035..d0cdbc1259 100644 --- a/src/backend/InvenTree/locale/sr/LC_MESSAGES/django.po +++ b/src/backend/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-05-31 07:08+0000\n" -"PO-Revision-Date: 2024-05-27 11:55\n" +"POT-Creation-Date: 2024-06-26 03:18+0000\n" +"PO-Revision-Date: 2024-06-26 06:05\n" "Last-Translator: \n" "Language-Team: Serbian (Latin)\n" "Language: sr_CS\n" @@ -21,7 +21,7 @@ msgstr "" msgid "API endpoint not found" msgstr "API krajnja tačka nije pronađena" -#: InvenTree/api.py:536 +#: InvenTree/api.py:520 msgid "User does not have permission to view this model" msgstr "Korisnik nema dozvolu za pregled ovog modela" @@ -52,25 +52,25 @@ msgstr "Isporučena nevažeća količina ({exc})" msgid "Error details can be found in the admin panel" msgstr "Detalji o grešci se mogu naći u admin sekciji" -#: InvenTree/fields.py:139 +#: InvenTree/fields.py:136 msgid "Enter date" msgstr "Unesite datum" -#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 -#: build/serializers.py:531 build/templates/build/sidebar.html:21 -#: company/models.py:849 company/templates/company/sidebar.html:37 -#: order/models.py:1332 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:205 InvenTree/models.py:918 build/serializers.py:452 +#: build/serializers.py:530 build/templates/build/sidebar.html:21 +#: company/models.py:817 company/templates/company/sidebar.html:37 +#: order/models.py:1296 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:3218 part/templates/part/part_sidebar.html:63 +#: part/models.py:3183 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_report.html:172 -#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 -#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 -#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 -#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:230 stock/models.py:2309 stock/models.py:2431 +#: stock/serializers.py:632 stock/serializers.py:790 stock/serializers.py:886 +#: stock/serializers.py:936 stock/serializers.py:1239 stock/serializers.py:1328 +#: stock/serializers.py:1493 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1080 +#: templates/js/translated/part.js:1081 #: templates/js/translated/purchase_order.js:2200 #: templates/js/translated/return_order.js:775 #: templates/js/translated/sales_order.js:1103 @@ -120,15 +120,15 @@ msgstr "Potvrda adrese e-pošte" msgid "You must type the same email each time." msgstr "Svaki put morate upisati istu e-poštu." -#: InvenTree/forms.py:253 InvenTree/forms.py:261 +#: InvenTree/forms.py:248 InvenTree/forms.py:256 msgid "The provided primary email address is not valid." msgstr "Navedena primarna adresa e-pošte nije važeća." -#: InvenTree/forms.py:268 +#: InvenTree/forms.py:263 msgid "The provided email domain is not approved." msgstr "Navedeni domen adrese e-pošte nije prihvaćen." -#: InvenTree/forms.py:395 +#: InvenTree/forms.py:390 msgid "Registration is disabled." msgstr "Registracija je onemogućena." @@ -171,35 +171,35 @@ msgstr "Broj jedinstvenih serijskih brojeva ({len(serials)}) mora odgovarati kol msgid "Remove HTML tags from this value" msgstr "Uklonite HTML oznake iz ove vrednosti" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Connection error" msgstr "Greška u povezivanju" -#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 msgid "Server responded with invalid status code" msgstr "Server je odgovorio nevažećim statusnim kodom" -#: InvenTree/helpers_model.py:158 +#: InvenTree/helpers_model.py:148 msgid "Exception occurred" msgstr "Došlo je do izuzetka" -#: InvenTree/helpers_model.py:168 +#: InvenTree/helpers_model.py:158 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:171 +#: InvenTree/helpers_model.py:161 msgid "Image size is too large" msgstr "Veličina slike je prevelika" -#: InvenTree/helpers_model.py:183 +#: InvenTree/helpers_model.py:173 msgid "Image download exceeded maximum size" msgstr "Preuzimanje slike premašilo je maksimalnu veličinu" -#: InvenTree/helpers_model.py:188 +#: InvenTree/helpers_model.py:178 msgid "Remote server returned empty response" msgstr "Udaljeni server vratio je prazan odgovor" -#: InvenTree/helpers_model.py:196 +#: InvenTree/helpers_model.py:186 msgid "Supplied URL is not a valid image file" msgstr "Navedeni URL nije važeća slikovna datoteka" @@ -296,46 +296,50 @@ msgid "Portuguese (Brazilian)" msgstr "Portugalski (Brazil)" #: InvenTree/locales.py:41 +msgid "Romanian" +msgstr "" + +#: InvenTree/locales.py:42 msgid "Russian" msgstr "Ruski" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:43 msgid "Slovak" msgstr "" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:44 msgid "Slovenian" msgstr "Slovenski" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:45 msgid "Serbian" msgstr "Srpski" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:46 msgid "Swedish" msgstr "Švedski" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:47 msgid "Thai" msgstr "Tajlandski" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:48 msgid "Turkish" msgstr "Turski" -#: InvenTree/locales.py:48 +#: InvenTree/locales.py:49 msgid "Ukrainian" msgstr "" -#: InvenTree/locales.py:49 +#: InvenTree/locales.py:50 msgid "Vietnamese" msgstr "Vijetnamski" -#: InvenTree/locales.py:50 +#: InvenTree/locales.py:51 msgid "Chinese (Simplified)" msgstr "Kineski (Uprošćeni)" -#: InvenTree/locales.py:51 +#: InvenTree/locales.py:52 msgid "Chinese (Traditional)" msgstr "Kineski (Tradicionalni)" @@ -344,153 +348,65 @@ msgstr "Kineski (Tradicionalni)" msgid "[{site_name}] Log in to the app" msgstr "" -#: InvenTree/magic_login.py:38 company/models.py:133 +#: InvenTree/magic_login.py:38 company/models.py:136 #: company/templates/company/company_base.html:138 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:677 msgid "Email" msgstr "E-Pošta" -#: InvenTree/models.py:107 +#: InvenTree/models.py:105 msgid "Error running plugin validation" msgstr "" -#: InvenTree/models.py:176 +#: InvenTree/models.py:174 msgid "Metadata must be a python dict object" msgstr "Metapodaci moraju biti \"python dict\" objekat" -#: InvenTree/models.py:182 +#: InvenTree/models.py:180 msgid "Plugin Metadata" msgstr "Metapodaci dodatka" -#: InvenTree/models.py:183 +#: InvenTree/models.py:181 msgid "JSON metadata field, for use by external plugins" msgstr "Polje metapodataka JSON, za korištenje eksternih dodataka" -#: InvenTree/models.py:413 +#: InvenTree/models.py:408 msgid "Improperly formatted pattern" msgstr "Neispravno formatiran obrazac" -#: InvenTree/models.py:420 +#: InvenTree/models.py:415 msgid "Unknown format key specified" msgstr "Naveden je ključ nepoznatog formata" -#: InvenTree/models.py:426 +#: InvenTree/models.py:421 msgid "Missing required format key" msgstr "Nedostaje potreban ključ formata" -#: InvenTree/models.py:437 +#: InvenTree/models.py:432 msgid "Reference field cannot be empty" msgstr "Polje za reference ne može biti prazno" -#: InvenTree/models.py:445 +#: InvenTree/models.py:440 msgid "Reference must match required pattern" msgstr "Referenca mora odgovarati traženom obrascu" -#: InvenTree/models.py:476 +#: InvenTree/models.py:471 msgid "Reference number is too large" msgstr "Broj reference je predugačak" -#: InvenTree/models.py:550 -msgid "Missing file" -msgstr "Nedostaje datoteka" - -#: InvenTree/models.py:551 -msgid "Missing external link" -msgstr "Nedostaje eksterni link" - -#: InvenTree/models.py:572 stock/models.py:2437 -#: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:326 -msgid "Attachment" -msgstr "Prilog" - -#: InvenTree/models.py:573 -msgid "Select file to attach" -msgstr "Izaberite datoteku za prilog" - -#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:831 -#: order/models.py:303 order/models.py:1337 order/models.py:1753 -#: part/admin.py:55 part/models.py:962 -#: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_report.html:164 -#: stock/admin.py:225 templates/js/translated/company.js:1319 -#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2455 -#: templates/js/translated/purchase_order.js:2040 -#: templates/js/translated/purchase_order.js:2204 -#: templates/js/translated/return_order.js:779 -#: templates/js/translated/sales_order.js:1092 -#: templates/js/translated/sales_order.js:2023 -msgid "Link" -msgstr "" - -#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 -#: stock/models.py:836 -msgid "Link to external URL" -msgstr "Link za eksterni URL" - -#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:341 -msgid "Comment" -msgstr "Komentar" - -#: InvenTree/models.py:589 -msgid "File comment" -msgstr "Datoteka komentara" - -#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 -#: common/models.py:2518 common/models.py:2742 common/models.py:2743 -#: common/models.py:2988 common/models.py:2989 part/models.py:3228 -#: part/models.py:3315 part/models.py:3408 part/models.py:3436 -#: plugin/models.py:259 plugin/models.py:260 -#: report/templates/report/inventree_test_report.html:105 -#: templates/js/translated/stock.js:3036 users/models.py:111 -msgid "User" -msgstr "Korisnik" - -#: InvenTree/models.py:602 -msgid "upload date" -msgstr "dadajte datoteku" - -#: InvenTree/models.py:624 -msgid "Filename must not be empty" -msgstr "Ime datoteke ne sme biti prazno" - -#: InvenTree/models.py:635 -msgid "Invalid attachment directory" -msgstr "Direktorijum nevažećih datoteka" - -#: InvenTree/models.py:665 -#, python-brace-format -msgid "Filename contains illegal character '{c}'" -msgstr "Ime datoteke sadrži neprihvatljivi karakter '{c}'" - -#: InvenTree/models.py:668 -msgid "Filename missing extension" -msgstr "Imenu datoteke nedostaje ekstenzija" - -#: InvenTree/models.py:677 -msgid "Attachment with this filename already exists" -msgstr "Prilog s ovim nazivom datoteke već postoji" - -#: InvenTree/models.py:684 -msgid "Error renaming file" -msgstr "Greška pri preimenovanju datoteke" - -#: InvenTree/models.py:860 +#: InvenTree/models.py:719 msgid "Duplicate names cannot exist under the same parent" msgstr "Dvostruka imena ne mogu postojati pod istom nadredjenom grupom" -#: InvenTree/models.py:877 +#: InvenTree/models.py:736 msgid "Invalid choice" msgstr "Nevažeći izvor" -#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 -#: common/serializers.py:403 company/models.py:614 machine/models.py:24 -#: part/models.py:898 part/models.py:3659 plugin/models.py:50 -#: report/models.py:149 stock/models.py:72 +#: InvenTree/models.py:766 common/models.py:2623 common/models.py:3036 +#: common/serializers.py:408 company/models.py:580 machine/models.py:24 +#: part/models.py:891 part/models.py:3639 plugin/models.py:51 +#: report/models.py:150 stock/models.py:73 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:83 @@ -501,25 +417,25 @@ msgstr "Nevažeći izvor" #: templates/js/translated/company.js:724 #: templates/js/translated/company.js:913 #: templates/js/translated/company.js:1165 -#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 -#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1187 +#: templates/js/translated/part.js:1475 templates/js/translated/part.js:1611 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Ime" -#: InvenTree/models.py:913 build/models.py:218 -#: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:523 company/models.py:840 +#: InvenTree/models.py:772 build/models.py:220 +#: build/templates/build/detail.html:24 common/models.py:138 +#: company/models.py:509 company/models.py:808 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 order/models.py:289 -#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 -#: part/models.py:3674 part/templates/part/category.html:82 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:914 +#: part/models.py:3654 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:155 -#: report/models.py:509 report/models.py:535 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 #: report/templates/report/inventree_build_order_report.html:117 -#: stock/admin.py:55 stock/models.py:78 stock/templates/stock/location.html:125 +#: stock/admin.py:54 stock/models.py:79 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 @@ -528,10 +444,10 @@ msgstr "Ime" #: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 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:2354 -#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1239 +#: templates/js/translated/part.js:1484 templates/js/translated/part.js:1622 +#: templates/js/translated/part.js:1959 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2897 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1706 #: templates/js/translated/purchase_order.js:1849 @@ -544,149 +460,141 @@ msgstr "Ime" msgid "Description" msgstr "Opis" -#: InvenTree/models.py:914 stock/models.py:79 +#: InvenTree/models.py:773 stock/models.py:80 msgid "Description (optional)" msgstr "Opis (Opciono)" -#: InvenTree/models.py:923 -msgid "parent" -msgstr "nadređeni" - -#: InvenTree/models.py:929 templates/js/translated/part.js:2793 +#: InvenTree/models.py:788 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Putanja" -#: InvenTree/models.py:1035 +#: InvenTree/models.py:918 msgid "Markdown notes (optional)" msgstr "Zabeleške (Opciono)" -#: InvenTree/models.py:1064 +#: InvenTree/models.py:947 msgid "Barcode Data" msgstr "Podaci sa barkoda" -#: InvenTree/models.py:1065 +#: InvenTree/models.py:948 msgid "Third party barcode data" msgstr "Podaci sa barkoda trećih lica" -#: InvenTree/models.py:1071 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "Heš barkoda" -#: InvenTree/models.py:1072 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "Jedinstveni hash barkoda" -#: InvenTree/models.py:1125 +#: InvenTree/models.py:1008 msgid "Existing barcode found" msgstr "Postojeći barkod pronađen" -#: InvenTree/models.py:1168 +#: InvenTree/models.py:1051 msgid "Server Error" msgstr "Greška servera" -#: InvenTree/models.py:1169 +#: InvenTree/models.py:1052 msgid "An error has been logged by the server." msgstr "Server je zabležio grešku." -#: InvenTree/serializers.py:62 part/models.py:4212 +#: InvenTree/serializers.py:63 part/models.py:4192 msgid "Must be a valid number" msgstr "Mora biti važeći broj" -#: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:3036 +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3001 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Valuta" -#: InvenTree/serializers.py:102 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "Odaberite valutu među dostupnim opcijama" -#: InvenTree/serializers.py:441 +#: InvenTree/serializers.py:442 msgid "You do not have permission to change this user role." msgstr "Nemate dozvolu za promenu ove korisničke uloge." -#: InvenTree/serializers.py:453 +#: InvenTree/serializers.py:454 msgid "Only superusers can create new users" msgstr "Samo superkorisnici mogu kreirati nove korisnike" -#: InvenTree/serializers.py:472 +#: InvenTree/serializers.py:473 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:474 +#: InvenTree/serializers.py:475 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:481 +#: InvenTree/serializers.py:482 msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:542 -msgid "Filename" -msgstr "Ime datoteke" - -#: InvenTree/serializers.py:576 +#: InvenTree/serializers.py:540 msgid "Invalid value" msgstr "Nevažeća vrednost" -#: InvenTree/serializers.py:596 +#: InvenTree/serializers.py:560 msgid "Data File" msgstr "Datoteka" -#: InvenTree/serializers.py:597 +#: InvenTree/serializers.py:561 msgid "Select data file for upload" msgstr "Odaberite datoteku za učitavanje" -#: InvenTree/serializers.py:614 +#: InvenTree/serializers.py:578 msgid "Unsupported file type" msgstr "Nije podržan tip datoteke" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:584 msgid "File is too large" msgstr "Prevelika datoteka" -#: InvenTree/serializers.py:641 +#: InvenTree/serializers.py:605 msgid "No columns found in file" msgstr "Nisu pronađene kolone podataka u datoteci" -#: InvenTree/serializers.py:644 +#: InvenTree/serializers.py:608 msgid "No data rows found in file" msgstr "Nisu pronađeni redovi podataka u datoteci" -#: InvenTree/serializers.py:757 +#: InvenTree/serializers.py:721 msgid "No data rows provided" msgstr "Nisu navedeni redovi podataka" -#: InvenTree/serializers.py:760 +#: InvenTree/serializers.py:724 msgid "No data columns supplied" msgstr "Nisu obezbeđene kolone podataka" -#: InvenTree/serializers.py:827 +#: InvenTree/serializers.py:791 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Nedostaje potrebna kolona: '{name}'" -#: InvenTree/serializers.py:836 +#: InvenTree/serializers.py:800 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Duplicirana kolona: '{col}'" -#: InvenTree/serializers.py:859 +#: InvenTree/serializers.py:840 msgid "Remote Image" msgstr "Udaljena slika" -#: InvenTree/serializers.py:860 +#: InvenTree/serializers.py:841 msgid "URL of remote image file" msgstr "URL udaljene slike" -#: InvenTree/serializers.py:878 +#: InvenTree/serializers.py:859 msgid "Downloading images from remote URL is not enabled" msgstr "Preuzimanje slika s udaljenog URL-a nije omogućeno" -#: InvenTree/status.py:66 part/serializers.py:1178 +#: InvenTree/status.py:66 part/serializers.py:1174 msgid "Background worker check failed" msgstr "Provera pozadinskog radnika nije uspjela" @@ -698,27 +606,27 @@ msgstr "Pozadina e-pošte nije konfigurirana" msgid "InvenTree system health checks failed" msgstr "Provere integriteta sistema InvenTree nije uspela" -#: InvenTree/templatetags/inventree_extras.py:183 +#: InvenTree/templatetags/inventree_extras.py:184 msgid "Unknown database" msgstr "" -#: InvenTree/validators.py:31 InvenTree/validators.py:33 +#: InvenTree/validators.py:32 InvenTree/validators.py:34 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:39 +#: InvenTree/validators.py:40 msgid "Not a valid currency code" msgstr "" -#: InvenTree/validators.py:121 InvenTree/validators.py:137 +#: InvenTree/validators.py:118 InvenTree/validators.py:134 msgid "Overage value must not be negative" msgstr "" -#: InvenTree/validators.py:139 +#: InvenTree/validators.py:136 msgid "Overage must not exceed 100%" msgstr "" -#: InvenTree/validators.py:145 +#: InvenTree/validators.py:142 msgid "Invalid value for overage" msgstr "" @@ -750,14 +658,14 @@ msgstr "" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: build/api.py:299 part/models.py:4070 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:300 part/models.py:4084 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4064 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2529 #: templates/js/translated/table_filters.js:186 @@ -778,30 +686,30 @@ msgstr "" msgid "Allocated" msgstr "" -#: build/api.py:311 company/models.py:904 company/serializers.py:383 +#: build/api.py:311 company/models.py:872 company/serializers.py:359 #: 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:2561 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:234 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 -#: templates/js/translated/part.js:699 +#: templates/js/translated/part.js:693 templates/js/translated/part.js:695 +#: templates/js/translated/part.js:700 #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:575 msgid "Available" msgstr "" -#: build/models.py:83 build/templates/build/build_base.html:9 +#: build/models.py:85 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_report.html:105 -#: stock/serializers.py:83 templates/email/build_order_completed.html:16 +#: stock/serializers.py:82 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:2892 msgid "Build Order" msgstr "Nalog za izradu" -#: build/models.py:84 build/templates/build/build_base.html:13 +#: build/models.py:86 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 @@ -812,25 +720,25 @@ msgstr "Nalog za izradu" msgid "Build Orders" msgstr "Nalozi za izradu" -#: build/models.py:131 +#: build/models.py:133 msgid "Invalid choice for parent build" msgstr "Nevažeći izbor za nadređenu verziju" -#: build/models.py:142 order/models.py:240 +#: build/models.py:144 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "" -#: build/models.py:148 +#: build/models.py:150 msgid "Build order part cannot be changed" msgstr "Deo u nalogu za izradu ne može se izmeniti" -#: build/models.py:209 +#: build/models.py:211 msgid "Build Order Reference" msgstr "Reference naloga za pravljenje" -#: build/models.py:210 order/models.py:463 order/models.py:928 -#: order/models.py:1325 order/models.py:2056 part/admin.py:419 -#: part/models.py:4105 part/templates/part/upload_bom.html:54 +#: build/models.py:212 order/models.py:463 order/models.py:926 +#: order/models.py:1289 order/models.py:2020 part/admin.py:411 +#: part/models.py:4085 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_purchase_order_report.html:28 #: report/templates/report/inventree_return_order_report.html:26 @@ -844,27 +752,27 @@ msgstr "Reference naloga za pravljenje" msgid "Reference" msgstr "Referenca" -#: build/models.py:221 +#: build/models.py:223 msgid "Brief description of the build (optional)" msgstr "Kratak opis izrade (nije obavezno)" -#: build/models.py:229 build/templates/build/build_base.html:183 +#: build/models.py:231 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:230 +#: build/models.py:232 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:235 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 -#: order/models.py:1450 order/models.py:1595 order/models.py:1596 -#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 -#: part/models.py:3191 part/models.py:3335 part/models.py:3358 -#: part/models.py:3379 part/models.py:3401 part/models.py:3511 -#: part/models.py:3807 part/models.py:3963 part/models.py:4056 -#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 +#: build/models.py:237 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1026 order/api.py:805 +#: order/models.py:1414 order/models.py:1559 order/models.py:1560 +#: part/api.py:1494 part/api.py:1788 part/models.py:395 part/models.py:3012 +#: part/models.py:3156 part/models.py:3303 part/models.py:3324 +#: part/models.py:3346 part/models.py:3477 part/models.py:3787 +#: part/models.py:3943 part/models.py:4036 part/models.py:4395 +#: part/serializers.py:1120 part/serializers.py:1726 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -875,8 +783,8 @@ msgstr "" #: report/templates/report/inventree_return_order_report.html:24 #: report/templates/report/inventree_sales_order_report.html:27 #: report/templates/report/inventree_stock_location_report.html:102 -#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 -#: stock/serializers.py:818 templates/InvenTree/search.html:82 +#: stock/serializers.py:109 stock/serializers.py:157 stock/serializers.py:423 +#: stock/serializers.py:820 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 @@ -889,8 +797,8 @@ msgstr "" #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 -#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2323 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:1944 templates/js/translated/part.js:2016 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 #: templates/js/translated/purchase_order.js:751 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1848 @@ -908,107 +816,107 @@ msgstr "" msgid "Part" msgstr "" -#: build/models.py:243 +#: build/models.py:245 msgid "Select part to build" msgstr "" -#: build/models.py:248 +#: build/models.py:250 msgid "Sales Order Reference" msgstr "" -#: build/models.py:252 +#: build/models.py:254 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:257 build/serializers.py:1000 +#: build/models.py:259 build/serializers.py:999 #: templates/js/translated/build.js:1731 #: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "" -#: build/models.py:261 +#: build/models.py:263 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:266 +#: build/models.py:268 msgid "Destination Location" msgstr "" -#: build/models.py:270 +#: build/models.py:272 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:274 +#: build/models.py:276 msgid "Build Quantity" msgstr "" -#: build/models.py:277 +#: build/models.py:279 msgid "Number of stock items to build" msgstr "" -#: build/models.py:281 +#: build/models.py:283 msgid "Completed items" msgstr "" -#: build/models.py:283 +#: build/models.py:285 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:287 +#: build/models.py:289 msgid "Build Status" msgstr "" -#: build/models.py:291 +#: build/models.py:293 msgid "Build status code" msgstr "" -#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 -#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 +#: build/models.py:302 build/serializers.py:286 order/serializers.py:580 +#: stock/models.py:838 stock/serializers.py:74 stock/serializers.py:1458 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "" -#: build/models.py:304 build/serializers.py:288 +#: build/models.py:306 build/serializers.py:287 msgid "Batch code for this build output" msgstr "" -#: build/models.py:307 order/models.py:316 order/serializers.py:120 -#: part/models.py:1122 part/templates/part/part_base.html:310 +#: build/models.py:309 order/models.py:316 order/serializers.py:119 +#: part/models.py:1115 part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:338 #: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "" -#: build/models.py:311 +#: build/models.py:313 msgid "Target completion date" msgstr "" -#: build/models.py:312 +#: build/models.py:314 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:315 order/models.py:521 order/models.py:2101 +#: build/models.py:317 order/models.py:521 order/models.py:2065 #: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "" -#: build/models.py:321 +#: build/models.py:323 msgid "completed by" msgstr "" -#: build/models.py:329 templates/js/translated/build.js:2207 +#: build/models.py:331 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "" -#: build/models.py:330 +#: build/models.py:332 msgid "User who issued this build order" msgstr "" -#: build/models.py:338 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:145 +#: build/models.py:340 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:147 #: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:232 part/models.py:1139 +#: order/templates/order/sales_order_base.html:232 part/models.py:1132 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_report.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 @@ -1019,31 +927,36 @@ msgstr "" msgid "Responsible" msgstr "" -#: build/models.py:339 +#: build/models.py:341 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:344 build/templates/build/detail.html:108 +#: build/models.py:346 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:184 -#: part/templates/part/part_base.html:383 stock/models.py:836 +#: part/templates/part/part_base.html:383 stock/models.py:834 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "" -#: build/models.py:349 +#: build/models.py:347 common/models.py:3178 part/models.py:956 +#: stock/models.py:834 +msgid "Link to external URL" +msgstr "Link za eksterni URL" + +#: build/models.py:351 msgid "Build Priority" msgstr "" -#: build/models.py:352 +#: build/models.py:354 msgid "Priority of this build order" msgstr "" -#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: build/models.py:361 common/models.py:131 order/admin.py:18 #: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 #: templates/js/translated/build.js:2144 #: templates/js/translated/purchase_order.js:1710 @@ -1054,65 +967,65 @@ msgstr "" msgid "Project Code" msgstr "" -#: build/models.py:360 +#: build/models.py:362 msgid "Project code for this build order" msgstr "" -#: build/models.py:593 build/models.py:658 +#: build/models.py:595 build/models.py:660 msgid "Failed to offload task to complete build allocations" msgstr "" -#: build/models.py:615 +#: build/models.py:617 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:621 +#: build/models.py:623 msgid "A build order has been completed" msgstr "" -#: build/models.py:847 build/models.py:932 +#: build/models.py:849 build/models.py:934 msgid "No build output specified" msgstr "" -#: build/models.py:850 +#: build/models.py:852 msgid "Build output is already completed" msgstr "" -#: build/models.py:853 +#: build/models.py:855 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 -#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 -#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 -#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 +#: build/models.py:938 build/serializers.py:219 build/serializers.py:268 +#: build/serializers.py:866 order/models.py:559 order/serializers.py:432 +#: order/serializers.py:575 part/serializers.py:1484 part/serializers.py:1884 +#: stock/models.py:677 stock/models.py:1495 stock/serializers.py:603 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:941 build/serializers.py:225 +#: build/models.py:943 build/serializers.py:224 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1001 build/serializers.py:548 +#: build/models.py:1003 build/serializers.py:547 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1352 +#: build/models.py:1344 msgid "Build Order Line Item" msgstr "" -#: build/models.py:1377 +#: build/models.py:1369 msgid "Build object" msgstr "" -#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 -#: build/serializers.py:254 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2539 -#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 -#: part/forms.py:48 part/models.py:3205 part/models.py:4078 +#: build/models.py:1383 build/models.py:1639 build/serializers.py:206 +#: build/serializers.py:253 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2509 +#: order/models.py:1272 order/models.py:1931 order/serializers.py:1327 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3170 part/models.py:4058 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1121,8 +1034,8 @@ msgstr "" #: report/templates/report/inventree_sales_order_report.html:29 #: report/templates/report/inventree_stock_location_report.html:104 #: report/templates/report/inventree_test_report.html:90 -#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 -#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:125 stock/serializers.py:165 stock/serializers.py:594 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1133,8 +1046,8 @@ msgstr "" #: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 #: templates/js/translated/model_renderers.js:236 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:962 +#: templates/js/translated/part.js:1812 templates/js/translated/part.js:3342 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1154,38 +1067,38 @@ msgstr "" msgid "Quantity" msgstr "" -#: build/models.py:1392 +#: build/models.py:1384 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1472 +#: build/models.py:1464 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1481 +#: build/models.py:1473 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1491 order/models.py:1918 +#: build/models.py:1483 order/models.py:1882 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1497 order/models.py:1921 +#: build/models.py:1489 order/models.py:1885 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1503 +#: build/models.py:1495 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1562 +#: build/models.py:1554 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 -#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 -#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: build/models.py:1626 build/serializers.py:846 order/serializers.py:1171 +#: order/serializers.py:1192 stock/models.py:358 stock/serializers.py:91 +#: stock/serializers.py:697 stock/serializers.py:1177 stock/serializers.py:1289 #: stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 @@ -1201,70 +1114,70 @@ msgstr "" msgid "Stock Item" msgstr "" -#: build/models.py:1635 +#: build/models.py:1627 msgid "Source stock item" msgstr "" -#: build/models.py:1648 +#: build/models.py:1640 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1656 +#: build/models.py:1648 msgid "Install into" msgstr "" -#: build/models.py:1657 +#: build/models.py:1649 msgid "Destination stock item" msgstr "" -#: build/serializers.py:157 build/serializers.py:876 +#: build/serializers.py:156 build/serializers.py:875 #: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "" -#: build/serializers.py:169 +#: build/serializers.py:168 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:173 +#: build/serializers.py:172 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:177 +#: build/serializers.py:176 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:188 +#: build/serializers.py:187 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:208 build/serializers.py:255 +#: build/serializers.py:207 build/serializers.py:254 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:276 +#: build/serializers.py:275 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:279 +#: build/serializers.py:278 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:294 order/serializers.py:589 order/serializers.py:1343 -#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:293 order/serializers.py:588 order/serializers.py:1331 +#: stock/serializers.py:614 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:295 +#: build/serializers.py:294 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 -#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 -#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 -#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 -#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 +#: build/serializers.py:299 build/serializers.py:440 build/serializers.py:512 +#: order/serializers.py:564 order/serializers.py:672 order/serializers.py:1656 +#: part/serializers.py:1140 stock/serializers.py:100 stock/serializers.py:625 +#: stock/serializers.py:785 stock/serializers.py:881 stock/serializers.py:1321 +#: stock/serializers.py:1577 stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:1001 #: templates/js/translated/build.js:2372 @@ -1280,54 +1193,54 @@ msgstr "" msgid "Location" msgstr "" -#: build/serializers.py:301 +#: build/serializers.py:300 msgid "Stock location for build output" msgstr "" -#: build/serializers.py:315 +#: build/serializers.py:314 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:316 +#: build/serializers.py:315 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:331 +#: build/serializers.py:330 msgid "Serial numbers must be provided for trackable parts" msgstr "" -#: build/serializers.py:356 stock/api.py:1031 +#: build/serializers.py:355 stock/api.py:1041 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:403 build/serializers.py:465 build/serializers.py:554 +#: build/serializers.py:402 build/serializers.py:464 build/serializers.py:553 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:442 +#: build/serializers.py:441 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:448 +#: build/serializers.py:447 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:449 +#: build/serializers.py:448 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:454 +#: build/serializers.py:453 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:514 +#: build/serializers.py:513 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:520 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:952 -#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 -#: stock/serializers.py:930 stock/serializers.py:1469 +#: build/serializers.py:519 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2044 order/serializers.py:596 stock/admin.py:164 +#: stock/serializers.py:932 stock/serializers.py:1465 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 @@ -1339,188 +1252,188 @@ msgstr "" msgid "Status" msgstr "" -#: build/serializers.py:526 +#: build/serializers.py:525 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:527 +#: build/serializers.py:526 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:611 msgid "Consume Allocated Stock" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:612 msgid "Consume any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:619 +#: build/serializers.py:618 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:620 +#: build/serializers.py:619 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:646 msgid "Not permitted" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:647 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:648 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:679 +#: build/serializers.py:678 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:681 +#: build/serializers.py:680 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:691 +#: build/serializers.py:690 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:696 +#: build/serializers.py:695 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:697 +#: build/serializers.py:696 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:707 templates/js/translated/build.js:315 +#: build/serializers.py:706 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:712 order/serializers.py:301 order/serializers.py:1246 +#: build/serializers.py:711 order/serializers.py:300 order/serializers.py:1234 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:713 +#: build/serializers.py:712 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:723 templates/js/translated/build.js:319 +#: build/serializers.py:722 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:732 templates/js/translated/build.js:303 +#: build/serializers.py:731 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:770 +#: build/serializers.py:769 msgid "Build Line" msgstr "" -#: build/serializers.py:780 +#: build/serializers.py:779 msgid "Build output" msgstr "" -#: build/serializers.py:788 +#: build/serializers.py:787 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:824 +#: build/serializers.py:823 msgid "Build Line Item" msgstr "" -#: build/serializers.py:838 +#: build/serializers.py:837 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:853 stock/serializers.py:1194 +#: build/serializers.py:852 stock/serializers.py:1190 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:901 order/serializers.py:1237 +#: build/serializers.py:900 order/serializers.py:1225 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:907 +#: build/serializers.py:906 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:914 +#: build/serializers.py:913 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:938 order/serializers.py:1489 +#: build/serializers.py:937 order/serializers.py:1477 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:1001 +#: build/serializers.py:1000 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:1009 +#: build/serializers.py:1008 msgid "Exclude Location" msgstr "" -#: build/serializers.py:1010 +#: build/serializers.py:1009 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:1015 +#: build/serializers.py:1014 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:1016 +#: build/serializers.py:1015 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:1021 +#: build/serializers.py:1020 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:1022 +#: build/serializers.py:1021 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:1027 +#: build/serializers.py:1026 msgid "Optional Items" msgstr "" -#: build/serializers.py:1028 +#: build/serializers.py:1027 msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1050 +#: build/serializers.py:1049 msgid "Failed to start auto-allocation task" msgstr "" -#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 -#: stock/api.py:794 +#: build/serializers.py:1139 part/models.py:3953 part/models.py:4387 +#: stock/api.py:804 msgid "BOM Item" msgstr "" -#: build/serializers.py:1149 templates/js/translated/index.js:130 +#: build/serializers.py:1148 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:832 part/serializers.py:1506 +#: build/serializers.py:1153 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:828 part/serializers.py:1502 #: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 -#: templates/js/translated/build.js:2613 templates/js/translated/part.js:709 -#: templates/js/translated/part.js:2148 +#: templates/js/translated/build.js:2613 templates/js/translated/part.js:710 +#: templates/js/translated/part.js:2149 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1159 part/serializers.py:1508 +#: build/serializers.py:1158 part/serializers.py:1504 #: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 +#: build/serializers.py:1163 part/bom.py:172 part/serializers.py:1527 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1929 msgid "Available Stock" @@ -1544,7 +1457,7 @@ msgstr "Otkazano" #: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 #: order/status_codes.py:44 order/status_codes.py:69 #: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:165 report/models.py:443 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 msgid "Complete" msgstr "Gotovo" @@ -1674,11 +1587,11 @@ msgstr "" #: build/templates/build/build_base.html:160 #: build/templates/build/detail.html:138 order/models.py:309 -#: order/models.py:1343 order/templates/order/order_base.html:186 +#: order/models.py:1307 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:196 #: report/templates/report/inventree_build_order_report.html:125 -#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1831 #: templates/js/translated/purchase_order.js:1739 #: templates/js/translated/purchase_order.js:2147 #: templates/js/translated/return_order.js:346 @@ -1711,8 +1624,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 -#: order/models.py:1587 order/models.py:1701 order/models.py:1855 +#: build/templates/build/detail.html:101 order/api.py:1463 order/models.py:845 +#: order/models.py:1551 order/models.py:1665 order/models.py:1819 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_report.html:135 @@ -1762,7 +1675,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1479 +#: build/templates/build/detail.html:49 order/models.py:1443 #: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "" @@ -1775,7 +1688,7 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:163 +#: build/templates/build/detail.html:80 stock/admin.py:162 #: stock/templates/stock/item_base.html:162 #: templates/js/translated/build.js:1380 #: templates/js/translated/model_renderers.js:241 @@ -1894,11 +1807,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:436 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -1914,6 +1827,34 @@ msgstr "" msgid "Incomplete Outputs" msgstr "" +#: common/api.py:689 +msgid "Is Link" +msgstr "" + +#: common/api.py:697 +msgid "Is File" +msgstr "" + +#: common/api.py:739 +msgid "User does not have permission to delete this attachment" +msgstr "" + +#: common/currency.py:130 +msgid "Invalid currency code" +msgstr "" + +#: common/currency.py:132 +msgid "Duplicate currency code" +msgstr "" + +#: common/currency.py:137 +msgid "No valid currency codes provided" +msgstr "" + +#: common/currency.py:154 +msgid "No plugin" +msgstr "" + #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1952,1507 +1893,1512 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:71 +#: common/models.py:73 msgid "Updated" msgstr "" -#: common/models.py:72 +#: common/models.py:74 msgid "Timestamp of last update" msgstr "" -#: common/models.py:105 +#: common/models.py:107 msgid "Site URL is locked by configuration" msgstr "" -#: common/models.py:130 +#: common/models.py:132 msgid "Unique project code" msgstr "" -#: common/models.py:137 +#: common/models.py:139 msgid "Project description" msgstr "" -#: common/models.py:146 +#: common/models.py:148 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:766 +#: common/models.py:765 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:770 +#: common/models.py:769 msgid "Settings value" msgstr "" -#: common/models.py:822 +#: common/models.py:821 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:838 +#: common/models.py:837 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:846 +#: common/models.py:845 msgid "Value must be an integer value" msgstr "" -#: common/models.py:883 +#: common/models.py:882 msgid "Key string must be unique" msgstr "" -#: common/models.py:1115 +#: common/models.py:1114 msgid "No group" msgstr "" -#: common/models.py:1158 -msgid "An empty domain is not allowed." -msgstr "" - -#: common/models.py:1160 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "" - -#: common/models.py:1172 -msgid "No plugin" -msgstr "" - -#: common/models.py:1260 +#: common/models.py:1213 msgid "Restart required" msgstr "" -#: common/models.py:1262 +#: common/models.py:1215 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1269 +#: common/models.py:1222 msgid "Pending migrations" msgstr "" -#: common/models.py:1270 +#: common/models.py:1223 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1275 +#: common/models.py:1228 msgid "Server Instance Name" msgstr "" -#: common/models.py:1277 +#: common/models.py:1230 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1281 +#: common/models.py:1234 msgid "Use instance name" msgstr "" -#: common/models.py:1282 +#: common/models.py:1235 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1287 +#: common/models.py:1240 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1288 +#: common/models.py:1241 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1293 company/models.py:108 company/models.py:109 +#: common/models.py:1246 company/models.py:111 company/models.py:112 msgid "Company name" msgstr "" -#: common/models.py:1294 +#: common/models.py:1247 msgid "Internal company name" msgstr "" -#: common/models.py:1298 +#: common/models.py:1251 msgid "Base URL" msgstr "" -#: common/models.py:1299 +#: common/models.py:1252 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1305 +#: common/models.py:1258 msgid "Default Currency" msgstr "" -#: common/models.py:1306 +#: common/models.py:1259 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1312 +#: common/models.py:1265 +msgid "Supported Currencies" +msgstr "" + +#: common/models.py:1266 +msgid "List of supported currency codes" +msgstr "" + +#: common/models.py:1272 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1314 +#: common/models.py:1274 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1317 common/models.py:1373 common/models.py:1386 -#: common/models.py:1394 common/models.py:1403 common/models.py:1412 -#: common/models.py:1620 common/models.py:1642 common/models.py:1757 -#: common/models.py:2076 +#: common/models.py:1277 common/models.py:1333 common/models.py:1346 +#: common/models.py:1354 common/models.py:1363 common/models.py:1372 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:2046 msgid "days" msgstr "" -#: common/models.py:1321 +#: common/models.py:1281 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1322 +#: common/models.py:1282 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1327 +#: common/models.py:1287 msgid "Download from URL" msgstr "" -#: common/models.py:1329 +#: common/models.py:1289 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1335 +#: common/models.py:1295 msgid "Download Size Limit" msgstr "" -#: common/models.py:1336 +#: common/models.py:1296 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1342 +#: common/models.py:1302 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1344 +#: common/models.py:1304 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:1349 +#: common/models.py:1309 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1350 +#: common/models.py:1310 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1355 +#: common/models.py:1315 msgid "Require confirm" msgstr "" -#: common/models.py:1356 +#: common/models.py:1316 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1361 +#: common/models.py:1321 msgid "Tree Depth" msgstr "" -#: common/models.py:1363 +#: common/models.py:1323 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1369 +#: common/models.py:1329 msgid "Update Check Interval" msgstr "" -#: common/models.py:1370 +#: common/models.py:1330 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1376 +#: common/models.py:1336 msgid "Automatic Backup" msgstr "" -#: common/models.py:1377 +#: common/models.py:1337 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1382 +#: common/models.py:1342 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1383 +#: common/models.py:1343 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1389 +#: common/models.py:1349 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1391 +#: common/models.py:1351 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1398 +#: common/models.py:1358 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1400 +#: common/models.py:1360 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1407 +#: common/models.py:1367 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1409 +#: common/models.py:1369 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1416 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1376 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1417 +#: common/models.py:1377 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1422 +#: common/models.py:1382 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1423 +#: common/models.py:1383 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1429 +#: common/models.py:1389 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1430 +#: common/models.py:1390 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1435 +#: common/models.py:1395 msgid "Part Revisions" msgstr "" -#: common/models.py:1436 +#: common/models.py:1396 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1441 +#: common/models.py:1401 msgid "Allow Deletion from Assembly" msgstr "" -#: common/models.py:1442 +#: common/models.py:1402 msgid "Allow deletion of parts which are used in an assembly" msgstr "" -#: common/models.py:1447 +#: common/models.py:1407 msgid "IPN Regex" msgstr "" -#: common/models.py:1448 +#: common/models.py:1408 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1451 +#: common/models.py:1411 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1452 +#: common/models.py:1412 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1457 +#: common/models.py:1417 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1458 +#: common/models.py:1418 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1463 +#: common/models.py:1423 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1464 +#: common/models.py:1424 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1469 +#: common/models.py:1429 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1470 +#: common/models.py:1430 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1475 +#: common/models.py:1435 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1476 +#: common/models.py:1436 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1481 +#: common/models.py:1441 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1482 +#: common/models.py:1442 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1487 part/admin.py:108 part/models.py:3815 -#: report/models.py:293 report/models.py:360 report/serializers.py:90 -#: report/serializers.py:131 stock/serializers.py:228 +#: common/models.py:1447 part/admin.py:108 part/models.py:3795 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:227 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1488 +#: common/models.py:1448 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 +#: common/models.py:1453 part/admin.py:91 part/admin.py:425 part/models.py:1052 #: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" msgstr "" -#: common/models.py:1494 +#: common/models.py:1454 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1499 part/admin.py:95 part/models.py:1065 +#: common/models.py:1459 part/admin.py:95 part/models.py:1058 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1500 +#: common/models.py:1460 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1505 part/admin.py:100 part/models.py:1077 +#: common/models.py:1465 part/admin.py:100 part/models.py:1070 msgid "Purchaseable" msgstr "" -#: common/models.py:1506 +#: common/models.py:1466 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1511 part/admin.py:104 part/models.py:1083 +#: common/models.py:1471 part/admin.py:104 part/models.py:1076 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1512 +#: common/models.py:1472 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1517 part/admin.py:113 part/models.py:1071 +#: common/models.py:1477 part/admin.py:113 part/models.py:1064 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" msgstr "" -#: common/models.py:1518 +#: common/models.py:1478 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1523 part/admin.py:117 part/models.py:1093 +#: common/models.py:1483 part/admin.py:117 part/models.py:1086 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" msgstr "" -#: common/models.py:1524 +#: common/models.py:1484 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1529 +#: common/models.py:1489 msgid "Show Import in Views" msgstr "" -#: common/models.py:1530 +#: common/models.py:1490 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1535 +#: common/models.py:1495 msgid "Show related parts" msgstr "" -#: common/models.py:1536 +#: common/models.py:1496 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1541 +#: common/models.py:1501 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1542 +#: common/models.py:1502 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1547 templates/js/translated/part.js:107 +#: common/models.py:1507 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1549 +#: common/models.py:1509 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1555 +#: common/models.py:1515 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1556 +#: common/models.py:1516 msgid "Format to display the part name" msgstr "" -#: common/models.py:1562 +#: common/models.py:1522 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1563 +#: common/models.py:1523 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1567 +#: common/models.py:1527 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1569 +#: common/models.py:1529 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1575 +#: common/models.py:1535 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1577 +#: common/models.py:1537 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1583 +#: common/models.py:1548 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1585 +#: common/models.py:1550 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1591 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1593 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1599 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1601 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1607 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1609 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1615 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1617 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1630 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1632 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1638 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1640 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1647 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1648 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1653 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1655 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1661 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1662 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1667 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1669 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1675 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1676 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1681 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1682 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1687 +#: common/models.py:1657 msgid "Log Report Errors" msgstr "" -#: common/models.py:1688 +#: common/models.py:1658 msgid "Log errors which occur when generating reports" msgstr "" -#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:301 +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:302 msgid "Page Size" msgstr "" -#: common/models.py:1694 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1699 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1700 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1705 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1707 +#: common/models.py:1677 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1713 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1714 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1719 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1720 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1725 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1727 +#: common/models.py:1697 msgid "Determines default behavior when a stock item is depleted" msgstr "" -#: common/models.py:1733 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1735 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1740 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1741 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1746 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1747 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1752 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1754 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1761 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1762 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1767 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1768 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1773 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1774 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1778 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1779 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1784 +#: common/models.py:1754 msgid "Check BOM when installing items" msgstr "" -#: common/models.py:1786 +#: common/models.py:1756 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "" -#: common/models.py:1792 +#: common/models.py:1762 msgid "Allow Out of Stock Transfer" msgstr "" -#: common/models.py:1794 +#: common/models.py:1764 msgid "Allow stock items which are not in stock to be transferred between stock locations" msgstr "" -#: common/models.py:1800 +#: common/models.py:1770 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1802 +#: common/models.py:1772 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1808 common/models.py:1836 common/models.py:1858 -#: common/models.py:1894 +#: common/models.py:1778 common/models.py:1806 common/models.py:1828 +#: common/models.py:1864 msgid "Require Responsible Owner" msgstr "" -#: common/models.py:1809 common/models.py:1837 common/models.py:1859 -#: common/models.py:1895 +#: common/models.py:1779 common/models.py:1807 common/models.py:1829 +#: common/models.py:1865 msgid "A responsible owner must be assigned to each order" msgstr "" -#: common/models.py:1814 +#: common/models.py:1784 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1816 +#: common/models.py:1786 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:1822 +#: common/models.py:1792 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1823 +#: common/models.py:1793 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1828 +#: common/models.py:1798 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1830 +#: common/models.py:1800 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1842 +#: common/models.py:1812 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1844 +#: common/models.py:1814 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1850 +#: common/models.py:1820 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1852 +#: common/models.py:1822 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1864 +#: common/models.py:1834 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1865 +#: common/models.py:1835 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1870 +#: common/models.py:1840 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1872 +#: common/models.py:1842 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1878 +#: common/models.py:1848 msgid "Mark Shipped Orders as Complete" msgstr "" -#: common/models.py:1880 +#: common/models.py:1850 msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" msgstr "" -#: common/models.py:1886 +#: common/models.py:1856 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1888 +#: common/models.py:1858 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1900 +#: common/models.py:1870 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1902 +#: common/models.py:1872 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1908 +#: common/models.py:1878 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1910 +#: common/models.py:1880 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1917 +#: common/models.py:1887 msgid "Enable password forgot" msgstr "" -#: common/models.py:1918 +#: common/models.py:1888 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1923 +#: common/models.py:1893 msgid "Enable registration" msgstr "" -#: common/models.py:1924 +#: common/models.py:1894 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1929 +#: common/models.py:1899 msgid "Enable SSO" msgstr "" -#: common/models.py:1930 +#: common/models.py:1900 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1935 +#: common/models.py:1905 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1937 +#: common/models.py:1907 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1943 +#: common/models.py:1913 msgid "Email required" msgstr "" -#: common/models.py:1944 +#: common/models.py:1914 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1949 +#: common/models.py:1919 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1951 +#: common/models.py:1921 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1957 +#: common/models.py:1927 msgid "Mail twice" msgstr "" -#: common/models.py:1958 +#: common/models.py:1928 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1963 +#: common/models.py:1933 msgid "Password twice" msgstr "" -#: common/models.py:1964 +#: common/models.py:1934 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1969 +#: common/models.py:1939 msgid "Allowed domains" msgstr "" -#: common/models.py:1971 +#: common/models.py:1941 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1977 +#: common/models.py:1947 msgid "Group on signup" msgstr "" -#: common/models.py:1978 +#: common/models.py:1948 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1983 +#: common/models.py:1953 msgid "Enforce MFA" msgstr "" -#: common/models.py:1984 +#: common/models.py:1954 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1989 +#: common/models.py:1959 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1991 +#: common/models.py:1961 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1999 +#: common/models.py:1969 msgid "Check for plugin updates" msgstr "" -#: common/models.py:2000 +#: common/models.py:1970 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:2006 +#: common/models.py:1976 msgid "Enable URL integration" msgstr "" -#: common/models.py:2007 +#: common/models.py:1977 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:2013 +#: common/models.py:1983 msgid "Enable navigation integration" msgstr "" -#: common/models.py:2014 +#: common/models.py:1984 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:2020 +#: common/models.py:1990 msgid "Enable app integration" msgstr "" -#: common/models.py:2021 +#: common/models.py:1991 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:2027 +#: common/models.py:1997 msgid "Enable schedule integration" msgstr "" -#: common/models.py:2028 +#: common/models.py:1998 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:2034 +#: common/models.py:2004 msgid "Enable event integration" msgstr "" -#: common/models.py:2035 +#: common/models.py:2005 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:2041 +#: common/models.py:2011 msgid "Enable project codes" msgstr "" -#: common/models.py:2042 +#: common/models.py:2012 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:2047 +#: common/models.py:2017 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:2049 +#: common/models.py:2019 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:2055 +#: common/models.py:2025 msgid "Exclude External Locations" msgstr "" -#: common/models.py:2057 +#: common/models.py:2027 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:2063 +#: common/models.py:2033 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:2065 +#: common/models.py:2035 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:2071 +#: common/models.py:2041 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:2073 +#: common/models.py:2043 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:2080 +#: common/models.py:2050 msgid "Display Users full names" msgstr "" -#: common/models.py:2081 +#: common/models.py:2051 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:2086 +#: common/models.py:2056 msgid "Enable Test Station Data" msgstr "" -#: common/models.py:2087 +#: common/models.py:2057 msgid "Enable test station data collection for test results" msgstr "" -#: common/models.py:2099 common/models.py:2509 +#: common/models.py:2069 common/models.py:2479 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2142 +#: common/models.py:2112 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2144 +#: common/models.py:2114 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2150 +#: common/models.py:2120 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2151 +#: common/models.py:2121 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2156 +#: common/models.py:2126 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2157 +#: common/models.py:2127 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2162 +#: common/models.py:2132 msgid "Show latest parts" msgstr "" -#: common/models.py:2163 +#: common/models.py:2133 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2168 +#: common/models.py:2138 msgid "Show invalid BOMs" msgstr "" -#: common/models.py:2169 +#: common/models.py:2139 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2174 +#: common/models.py:2144 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2175 +#: common/models.py:2145 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2180 +#: common/models.py:2150 msgid "Show low stock" msgstr "" -#: common/models.py:2181 +#: common/models.py:2151 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2186 +#: common/models.py:2156 msgid "Show depleted stock" msgstr "" -#: common/models.py:2187 +#: common/models.py:2157 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2192 +#: common/models.py:2162 msgid "Show needed stock" msgstr "" -#: common/models.py:2193 +#: common/models.py:2163 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2198 +#: common/models.py:2168 msgid "Show expired stock" msgstr "" -#: common/models.py:2199 +#: common/models.py:2169 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2204 +#: common/models.py:2174 msgid "Show stale stock" msgstr "" -#: common/models.py:2205 +#: common/models.py:2175 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2210 +#: common/models.py:2180 msgid "Show pending builds" msgstr "" -#: common/models.py:2211 +#: common/models.py:2181 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2216 +#: common/models.py:2186 msgid "Show overdue builds" msgstr "" -#: common/models.py:2217 +#: common/models.py:2187 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2222 +#: common/models.py:2192 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2223 +#: common/models.py:2193 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2228 +#: common/models.py:2198 msgid "Show overdue POs" msgstr "" -#: common/models.py:2229 +#: common/models.py:2199 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2234 +#: common/models.py:2204 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2235 +#: common/models.py:2205 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2240 +#: common/models.py:2210 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2241 +#: common/models.py:2211 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2246 +#: common/models.py:2216 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2247 +#: common/models.py:2217 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2252 +#: common/models.py:2222 msgid "Show News" msgstr "" -#: common/models.py:2253 +#: common/models.py:2223 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2258 +#: common/models.py:2228 msgid "Inline label display" msgstr "" -#: common/models.py:2260 +#: common/models.py:2230 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2266 +#: common/models.py:2236 msgid "Default label printer" msgstr "" -#: common/models.py:2268 +#: common/models.py:2238 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2274 +#: common/models.py:2244 msgid "Inline report display" msgstr "" -#: common/models.py:2276 +#: common/models.py:2246 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2282 +#: common/models.py:2252 msgid "Search Parts" msgstr "" -#: common/models.py:2283 +#: common/models.py:2253 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2288 +#: common/models.py:2258 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2289 +#: common/models.py:2259 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2294 +#: common/models.py:2264 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2295 +#: common/models.py:2265 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2300 +#: common/models.py:2270 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2301 +#: common/models.py:2271 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2306 +#: common/models.py:2276 msgid "Search Categories" msgstr "" -#: common/models.py:2307 +#: common/models.py:2277 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2312 +#: common/models.py:2282 msgid "Search Stock" msgstr "" -#: common/models.py:2313 +#: common/models.py:2283 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2318 +#: common/models.py:2288 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2320 +#: common/models.py:2290 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2326 +#: common/models.py:2296 msgid "Search Locations" msgstr "" -#: common/models.py:2327 +#: common/models.py:2297 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2332 +#: common/models.py:2302 msgid "Search Companies" msgstr "" -#: common/models.py:2333 +#: common/models.py:2303 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2338 +#: common/models.py:2308 msgid "Search Build Orders" msgstr "" -#: common/models.py:2339 +#: common/models.py:2309 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2344 +#: common/models.py:2314 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2345 +#: common/models.py:2315 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2350 +#: common/models.py:2320 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2352 +#: common/models.py:2322 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2358 +#: common/models.py:2328 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2359 +#: common/models.py:2329 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2364 +#: common/models.py:2334 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2366 +#: common/models.py:2336 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2372 +#: common/models.py:2342 msgid "Search Return Orders" msgstr "" -#: common/models.py:2373 +#: common/models.py:2343 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2378 +#: common/models.py:2348 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2380 +#: common/models.py:2350 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2386 +#: common/models.py:2356 msgid "Search Preview Results" msgstr "" -#: common/models.py:2388 +#: common/models.py:2358 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2394 +#: common/models.py:2364 msgid "Regex Search" msgstr "" -#: common/models.py:2395 +#: common/models.py:2365 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2400 +#: common/models.py:2370 msgid "Whole Word Search" msgstr "" -#: common/models.py:2401 +#: common/models.py:2371 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2406 +#: common/models.py:2376 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2407 +#: common/models.py:2377 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2412 +#: common/models.py:2382 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2413 +#: common/models.py:2383 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2418 +#: common/models.py:2388 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2419 +#: common/models.py:2389 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2424 +#: common/models.py:2394 msgid "Date Format" msgstr "" -#: common/models.py:2425 +#: common/models.py:2395 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2438 part/templates/part/detail.html:41 +#: common/models.py:2408 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2439 +#: common/models.py:2409 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2444 part/templates/part/detail.html:62 +#: common/models.py:2414 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2446 +#: common/models.py:2416 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2452 +#: common/models.py:2422 msgid "Table String Length" msgstr "" -#: common/models.py:2454 +#: common/models.py:2424 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2460 +#: common/models.py:2430 msgid "Default part label template" msgstr "" -#: common/models.py:2461 +#: common/models.py:2431 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2466 +#: common/models.py:2436 msgid "Default stock item template" msgstr "" -#: common/models.py:2468 +#: common/models.py:2438 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2474 +#: common/models.py:2444 msgid "Default stock location label template" msgstr "" -#: common/models.py:2476 +#: common/models.py:2446 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2482 +#: common/models.py:2452 msgid "Default build line label template" msgstr "" -#: common/models.py:2484 +#: common/models.py:2454 msgid "The build line label template to be automatically selected" msgstr "" -#: common/models.py:2490 +#: common/models.py:2460 msgid "Receive error reports" msgstr "" -#: common/models.py:2491 +#: common/models.py:2461 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2496 +#: common/models.py:2466 msgid "Last used printing machines" msgstr "" -#: common/models.py:2497 +#: common/models.py:2467 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2540 +#: common/models.py:2487 common/models.py:2488 common/models.py:2636 +#: common/models.py:2637 common/models.py:2882 common/models.py:2883 +#: common/models.py:3193 common/models.py:3194 part/models.py:3193 +#: part/models.py:3280 part/models.py:3353 part/models.py:3381 +#: plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "Korisnik" + +#: common/models.py:2510 msgid "Price break quantity" msgstr "" -#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1382 order/models.py:2301 -#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 +#: common/models.py:2517 company/serializers.py:472 order/admin.py:42 +#: order/models.py:1346 order/models.py:2265 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1886 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:740 msgid "Price" msgstr "" -#: common/models.py:2548 +#: common/models.py:2518 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2719 common/models.py:2904 +#: common/models.py:2613 common/models.py:2798 msgid "Endpoint" msgstr "" -#: common/models.py:2720 +#: common/models.py:2614 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2730 +#: common/models.py:2624 msgid "Name for this webhook" msgstr "" -#: common/models.py:2734 company/models.py:160 company/models.py:814 -#: machine/models.py:39 part/admin.py:88 part/models.py:1088 -#: plugin/models.py:65 templates/js/translated/company.js:523 +#: common/models.py:2628 company/models.py:163 company/models.py:782 +#: machine/models.py:39 part/admin.py:88 part/models.py:1081 +#: plugin/models.py:66 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3462,101 +3408,118 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2734 +#: common/models.py:2628 msgid "Is this webhook active" msgstr "" -#: common/models.py:2750 users/models.py:159 +#: common/models.py:2644 users/models.py:159 msgid "Token" msgstr "" -#: common/models.py:2751 +#: common/models.py:2645 msgid "Token for access" msgstr "" -#: common/models.py:2759 +#: common/models.py:2653 msgid "Secret" msgstr "" -#: common/models.py:2760 +#: common/models.py:2654 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2868 +#: common/models.py:2762 msgid "Message ID" msgstr "" -#: common/models.py:2869 +#: common/models.py:2763 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2877 +#: common/models.py:2771 msgid "Host" msgstr "" -#: common/models.py:2878 +#: common/models.py:2772 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2886 +#: common/models.py:2780 msgid "Header" msgstr "" -#: common/models.py:2887 +#: common/models.py:2781 msgid "Header of this message" msgstr "" -#: common/models.py:2894 +#: common/models.py:2788 msgid "Body" msgstr "" -#: common/models.py:2895 +#: common/models.py:2789 msgid "Body of this message" msgstr "" -#: common/models.py:2905 +#: common/models.py:2799 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2910 +#: common/models.py:2804 msgid "Worked on" msgstr "" -#: common/models.py:2911 +#: common/models.py:2805 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:3037 +#: common/models.py:2931 msgid "Id" msgstr "" -#: common/models.py:3039 templates/js/translated/company.js:965 +#: common/models.py:2933 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:3043 templates/js/translated/news.js:60 +#: common/models.py:2935 common/models.py:3177 company/models.py:149 +#: company/models.py:440 company/models.py:500 company/models.py:799 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +#: part/admin.py:55 part/models.py:955 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "" + +#: common/models.py:2937 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:3045 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2939 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:3047 templates/js/translated/news.js:52 +#: common/models.py:2941 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Read" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Was this news item read?" msgstr "" -#: common/models.py:3067 company/models.py:156 part/models.py:972 +#: common/models.py:2961 company/models.py:159 part/models.py:965 #: 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.html:35 @@ -3566,34 +3529,89 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:3067 +#: common/models.py:2961 msgid "Image file" msgstr "" -#: common/models.py:3109 +#: common/models.py:2973 common/models.py:3161 +msgid "Target model type for this image" +msgstr "" + +#: common/models.py:2977 +msgid "Target model ID for this image" +msgstr "" + +#: common/models.py:3018 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3128 +#: common/models.py:3037 msgid "Unit name" msgstr "" -#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3044 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3136 +#: common/models.py:3045 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3052 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3144 +#: common/models.py:3053 msgid "Unit definition" msgstr "" +#: common/models.py:3111 common/models.py:3168 stock/models.py:2426 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "Prilog" + +#: common/models.py:3123 +msgid "Missing file" +msgstr "Nedostaje datoteka" + +#: common/models.py:3124 +msgid "Missing external link" +msgstr "Nedostaje eksterni link" + +#: common/models.py:3169 +msgid "Select file to attach" +msgstr "Izaberite datoteku za prilog" + +#: common/models.py:3184 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "Komentar" + +#: common/models.py:3185 +msgid "Attachment comment" +msgstr "" + +#: common/models.py:3201 +msgid "Upload date" +msgstr "" + +#: common/models.py:3202 +msgid "Date the file was uploaded" +msgstr "" + +#: common/models.py:3206 +msgid "File size" +msgstr "" + +#: common/models.py:3206 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3244 common/serializers.py:553 +msgid "Invalid model type specified for attachment" +msgstr "" + #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" @@ -3628,66 +3646,103 @@ msgstr "" msgid "Error raised by plugin" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:371 msgid "Is Running" msgstr "" -#: common/serializers.py:372 +#: common/serializers.py:377 msgid "Pending Tasks" msgstr "" -#: common/serializers.py:378 +#: common/serializers.py:383 msgid "Scheduled Tasks" msgstr "" -#: common/serializers.py:384 +#: common/serializers.py:389 msgid "Failed Tasks" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Task ID" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Unique task ID" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock time" msgstr "" -#: common/serializers.py:403 +#: common/serializers.py:408 msgid "Task name" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function name" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Arguments" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Task arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Keyword Arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Task keyword arguments" msgstr "" +#: common/serializers.py:525 +msgid "Filename" +msgstr "Ime datoteke" + +#: common/serializers.py:532 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: common/serializers.py:559 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "" + +#: common/validators.py:33 +msgid "No attachment model type provided" +msgstr "" + +#: common/validators.py:39 +msgid "Invalid attachment model type" +msgstr "" + +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "" + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +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 @@ -3726,210 +3781,222 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/api.py:164 +#: company/api.py:144 msgid "Part is Active" msgstr "" -#: company/api.py:168 +#: company/api.py:148 msgid "Manufacturer is Active" msgstr "" -#: company/api.py:317 +#: company/api.py:281 msgid "Supplier Part is Active" msgstr "" -#: company/api.py:321 +#: company/api.py:285 msgid "Internal Part is Active" msgstr "" -#: company/api.py:325 +#: company/api.py:289 msgid "Supplier is Active" msgstr "" -#: company/models.py:114 +#: company/models.py:100 company/models.py:365 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:822 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "" + +#: company/models.py:117 msgid "Company description" msgstr "" -#: company/models.py:115 +#: company/models.py:118 msgid "Description of the company" msgstr "" -#: company/models.py:120 company/templates/company/company_base.html:106 +#: company/models.py:123 company/templates/company/company_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:532 msgid "Website" msgstr "" -#: company/models.py:120 +#: company/models.py:123 msgid "Company website URL" msgstr "" -#: company/models.py:125 +#: company/models.py:128 msgid "Phone number" msgstr "" -#: company/models.py:127 +#: company/models.py:130 msgid "Contact phone number" msgstr "" -#: company/models.py:134 +#: company/models.py:137 msgid "Contact email address" msgstr "" -#: company/models.py:139 company/templates/company/company_base.html:145 +#: company/models.py:142 company/templates/company/company_base.html:145 #: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "" -#: company/models.py:141 +#: company/models.py:144 msgid "Point of contact" msgstr "" -#: company/models.py:147 +#: company/models.py:150 msgid "Link to external company information" msgstr "" -#: company/models.py:160 +#: company/models.py:163 msgid "Is this company active?" msgstr "" -#: company/models.py:165 +#: company/models.py:168 msgid "is customer" msgstr "" -#: company/models.py:166 +#: company/models.py:169 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:171 +#: company/models.py:174 msgid "is supplier" msgstr "" -#: company/models.py:172 +#: company/models.py:175 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:177 +#: company/models.py:180 msgid "is manufacturer" msgstr "" -#: company/models.py:178 +#: company/models.py:181 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:186 +#: company/models.py:189 msgid "Default currency used for this company" msgstr "" -#: company/models.py:273 company/models.py:382 -#: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:812 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 -msgid "Company" -msgstr "" - -#: company/models.py:383 +#: company/models.py:366 msgid "Select company" msgstr "" -#: company/models.py:388 +#: company/models.py:371 msgid "Address title" msgstr "" -#: company/models.py:389 +#: company/models.py:372 msgid "Title describing the address entry" msgstr "" -#: company/models.py:395 +#: company/models.py:378 msgid "Primary address" msgstr "" -#: company/models.py:396 +#: company/models.py:379 msgid "Set as primary address" msgstr "" -#: company/models.py:401 templates/js/translated/company.js:914 +#: company/models.py:384 templates/js/translated/company.js:914 #: templates/js/translated/company.js:971 msgid "Line 1" msgstr "" -#: company/models.py:402 +#: company/models.py:385 msgid "Address line 1" msgstr "" -#: company/models.py:408 templates/js/translated/company.js:915 +#: company/models.py:391 templates/js/translated/company.js:915 #: templates/js/translated/company.js:977 msgid "Line 2" msgstr "" -#: company/models.py:409 +#: company/models.py:392 msgid "Address line 2" msgstr "" -#: company/models.py:415 company/models.py:416 +#: company/models.py:398 company/models.py:399 #: templates/js/translated/company.js:983 msgid "Postal code" msgstr "" -#: company/models.py:422 +#: company/models.py:405 msgid "City/Region" msgstr "" -#: company/models.py:423 +#: company/models.py:406 msgid "Postal code city/region" msgstr "" -#: company/models.py:429 +#: company/models.py:412 msgid "State/Province" msgstr "" -#: company/models.py:430 +#: company/models.py:413 msgid "State or province" msgstr "" -#: company/models.py:436 templates/js/translated/company.js:1001 +#: company/models.py:419 templates/js/translated/company.js:1001 msgid "Country" msgstr "" -#: company/models.py:437 +#: company/models.py:420 msgid "Address country" msgstr "" -#: company/models.py:443 +#: company/models.py:426 msgid "Courier shipping notes" msgstr "" -#: company/models.py:444 +#: company/models.py:427 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:450 +#: company/models.py:433 msgid "Internal shipping notes" msgstr "" -#: company/models.py:451 +#: company/models.py:434 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:458 +#: company/models.py:441 msgid "Link to address information (external)" msgstr "" -#: company/models.py:489 company/models.py:792 stock/models.py:768 -#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 +#: company/models.py:463 company/models.py:574 company/models.py:792 +#: 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:475 company/models.py:760 stock/models.py:766 +#: stock/serializers.py:422 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:491 company/models.py:794 +#: company/models.py:477 company/models.py:762 msgid "Select part" msgstr "" -#: company/models.py:500 company/templates/company/company_base.html:82 +#: company/models.py:486 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:530 +#: company/templates/company/supplier_part.html:145 part/serializers.py:525 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -3939,152 +4006,154 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:501 +#: company/models.py:487 msgid "Select manufacturer" msgstr "" -#: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:540 +#: company/models.py:493 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:535 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 -#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1801 #: templates/js/translated/purchase_order.js:1851 #: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "" -#: company/models.py:508 +#: company/models.py:494 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:515 +#: company/models.py:501 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:524 +#: company/models.py:510 msgid "Manufacturer part description" msgstr "" -#: company/models.py:581 company/models.py:608 company/models.py:824 -#: 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:615 +#: company/models.py:581 msgid "Parameter name" msgstr "" -#: company/models.py:621 report/templates/report/inventree_test_report.html:104 -#: stock/models.py:2429 templates/js/translated/company.js:1166 -#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 +#: company/models.py:587 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2418 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1493 #: templates/js/translated/stock.js:1522 msgid "Value" msgstr "" -#: company/models.py:622 +#: company/models.py:588 msgid "Parameter value" msgstr "" -#: company/models.py:629 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1052 part/models.py:3666 +#: company/models.py:595 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1045 part/models.py:3646 #: part/templates/part/part_base.html:284 -#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1512 +#: templates/js/translated/part.js:1616 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:630 +#: company/models.py:596 msgid "Parameter units" msgstr "" -#: company/models.py:732 +#: company/models.py:648 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:777 stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "" + +#: company/models.py:700 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:739 +#: company/models.py:707 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:753 +#: company/models.py:721 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/models.py:770 company/templates/company/company_base.html:87 #: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:514 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:509 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:511 -#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1769 #: templates/js/translated/pricing.js:498 #: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "" -#: company/models.py:803 +#: company/models.py:771 msgid "Select supplier" msgstr "" -#: company/models.py:809 part/serializers.py:525 +#: company/models.py:777 part/serializers.py:520 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:815 +#: company/models.py:783 msgid "Is this supplier part active?" msgstr "" -#: company/models.py:825 +#: company/models.py:793 msgid "Select manufacturer part" msgstr "" -#: company/models.py:832 +#: company/models.py:800 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:841 +#: company/models.py:809 msgid "Supplier part description" msgstr "" -#: company/models.py:848 company/templates/company/supplier_part.html:187 -#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 +#: company/models.py:816 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4093 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_purchase_order_report.html:32 #: report/templates/report/inventree_return_order_report.html:27 #: report/templates/report/inventree_sales_order_report.html:32 #: report/templates/report/inventree_stock_location_report.html:105 -#: stock/serializers.py:708 +#: stock/serializers.py:710 msgid "Note" msgstr "" -#: company/models.py:857 part/models.py:2010 +#: company/models.py:825 part/models.py:2003 msgid "base cost" msgstr "" -#: company/models.py:858 part/models.py:2011 +#: company/models.py:826 part/models.py:2004 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:865 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 +#: company/models.py:833 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:797 stock/serializers.py:1475 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 #: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "" -#: company/models.py:866 +#: company/models.py:834 msgid "Part packaging" msgstr "" -#: company/models.py:871 templates/js/translated/company.js:1651 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: company/models.py:839 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:311 #: templates/js/translated/purchase_order.js:841 #: templates/js/translated/purchase_order.js:1103 @@ -4093,35 +4162,35 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:873 +#: company/models.py:841 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:892 part/models.py:2017 +#: company/models.py:860 part/models.py:2010 msgid "multiple" msgstr "" -#: company/models.py:893 +#: company/models.py:861 msgid "Order multiple" msgstr "" -#: company/models.py:905 +#: company/models.py:873 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:911 +#: company/models.py:879 msgid "Availability Updated" msgstr "" -#: company/models.py:912 +#: company/models.py:880 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:163 +#: company/serializers.py:161 msgid "Default currency used for this supplier" msgstr "" -#: company/serializers.py:381 part/admin.py:126 +#: company/serializers.py:357 part/admin.py:126 #: part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1689 #: templates/js/translated/table_filters.js:355 @@ -4133,7 +4202,7 @@ msgstr "" #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 #: templates/js/translated/model_renderers.js:312 -#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +#: templates/js/translated/part.js:815 templates/js/translated/part.js:1219 msgid "Inactive" msgstr "" @@ -4172,7 +4241,7 @@ msgstr "" #: report/templates/report/inventree_purchase_order_report.html:40 #: report/templates/report/inventree_sales_order_report.html:40 #: report/templates/report/inventree_test_report.html:84 -#: report/templates/report/inventree_test_report.html:163 +#: report/templates/report/inventree_test_report.html:162 msgid "Part image" msgstr "" @@ -4191,10 +4260,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:92 order/models.py:940 -#: order/models.py:2068 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:148 stock/models.py:821 -#: stock/models.py:822 stock/serializers.py:1229 +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2032 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:819 +#: stock/models.py:820 stock/serializers.py:1225 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 @@ -4405,7 +4474,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:836 +#: part/admin.py:122 part/serializers.py:832 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4425,8 +4494,8 @@ msgstr "" msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:206 -#: templates/js/translated/part.js:1422 +#: company/templates/company/manufacturer_part.html:196 +#: templates/js/translated/part.js:1423 msgid "Add Parameter" msgstr "" @@ -4454,15 +4523,6 @@ msgstr "" msgid "Addresses" msgstr "" -#: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:452 -#: stock/models.py:779 stock/templates/stock/item_base.html:233 -#: templates/js/translated/company.js:1600 -#: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2280 -msgid "Supplier Part" -msgstr "" - #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1526 msgid "Supplier part actions" @@ -4505,8 +4565,8 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:524 -#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: part/bom.py:311 part/serializers.py:519 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1787 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1850 #: templates/js/translated/purchase_order.js:2028 @@ -4518,12 +4578,12 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:207 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" @@ -4555,15 +4615,15 @@ msgid "Update Part Availability" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:835 part/stocktake.py:223 +#: part/serializers.py:831 part/stocktake.py:224 #: part/templates/part/category.html:183 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:916 stock/serializers.py:1080 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:918 stock/serializers.py:1091 #: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:191 #: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1061 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:206 msgid "Stock Items" @@ -4590,10 +4650,6 @@ msgstr "" 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 "" @@ -4614,7 +4670,7 @@ msgstr "" msgid "Connected" msgstr "" -#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: machine/machine_types/label_printer.py:235 order/api.py:1467 #: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "" @@ -4703,7 +4759,7 @@ msgstr "" msgid "Config type" msgstr "" -#: order/admin.py:30 order/models.py:89 +#: order/admin.py:30 order/models.py:90 #: report/templates/report/inventree_purchase_order_report.html:31 #: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 @@ -4712,30 +4768,30 @@ msgstr "" msgid "Total Price" msgstr "" -#: order/api.py:161 order/serializers.py:91 +#: order/api.py:157 order/serializers.py:90 #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "" -#: order/api.py:165 templates/js/translated/table_filters.js:194 +#: order/api.py:161 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "" -#: order/api.py:240 +#: order/api.py:236 msgid "No matching purchase order found" msgstr "" -#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 -#: order/models.py:1586 order/models.py:1700 order/models.py:1854 -#: order/models.py:2267 order/models.py:2318 +#: order/api.py:435 order/api.py:801 order/models.py:1395 order/models.py:1504 +#: order/models.py:1550 order/models.py:1664 order/models.py:1818 +#: order/models.py:2231 order/models.py:2282 #: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "" -#: order/api.py:441 order/api.py:838 +#: order/api.py:439 order/api.py:822 msgid "Order Complete" msgstr "" @@ -4743,13 +4799,13 @@ msgstr "" msgid "Order Pending" msgstr "" -#: order/api.py:1509 order/models.py:380 order/models.py:1432 -#: order/models.py:1541 order/templates/order/order_base.html:9 +#: order/api.py:1461 order/models.py:380 order/models.py:1396 +#: order/models.py:1505 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_purchase_order_report.html:14 -#: stock/serializers.py:119 stock/templates/stock/item_base.html:176 +#: stock/serializers.py:118 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/part.js:1746 templates/js/translated/pricing.js:804 #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1673 @@ -4757,8 +4813,8 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1513 order/models.py:2017 order/models.py:2268 -#: order/models.py:2319 order/templates/order/return_order_base.html:9 +#: order/api.py:1465 order/models.py:1981 order/models.py:2232 +#: order/models.py:2283 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report.html:13 #: templates/js/translated/return_order.js:280 @@ -4766,15 +4822,15 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/models.py:90 +#: order/models.py:91 msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:71 +#: order/models.py:96 order/serializers.py:70 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:72 +#: order/models.py:99 order/serializers.py:71 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -4790,7 +4846,7 @@ msgstr "" msgid "Select project code for this order" msgstr "" -#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 msgid "Link to external page" msgstr "" @@ -4814,11 +4870,11 @@ msgstr "" msgid "Company address for this order" msgstr "" -#: order/models.py:464 order/models.py:929 +#: order/models.py:464 order/models.py:927 msgid "Order reference" msgstr "" -#: order/models.py:472 order/models.py:953 +#: order/models.py:472 order/models.py:951 msgid "Purchase order status" msgstr "" @@ -4839,15 +4895,15 @@ msgstr "" msgid "received by" msgstr "" -#: order/models.py:514 order/models.py:2094 +#: order/models.py:514 order/models.py:2058 msgid "Issue Date" msgstr "" -#: order/models.py:515 order/models.py:2095 +#: order/models.py:515 order/models.py:2059 msgid "Date order was issued" msgstr "" -#: order/models.py:522 order/models.py:2102 +#: order/models.py:522 order/models.py:2066 msgid "Date order was completed" msgstr "" @@ -4859,94 +4915,94 @@ msgstr "" msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:941 +#: order/models.py:939 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:964 order/models.py:2087 +#: order/models.py:962 order/models.py:2051 msgid "Customer Reference " msgstr "" -#: order/models.py:965 order/models.py:2088 +#: order/models.py:963 order/models.py:2052 msgid "Customer order reference code" msgstr "" -#: order/models.py:969 order/models.py:1707 +#: order/models.py:967 order/models.py:1671 #: templates/js/translated/sales_order.js:879 #: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "" -#: order/models.py:978 +#: order/models.py:976 msgid "shipped by" msgstr "" -#: order/models.py:1027 +#: order/models.py:1025 msgid "Order is already complete" msgstr "" -#: order/models.py:1030 +#: order/models.py:1028 msgid "Order is already cancelled" msgstr "" -#: order/models.py:1034 +#: order/models.py:1032 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:1038 +#: order/models.py:1036 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:1043 +#: order/models.py:1041 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1309 +#: order/models.py:1273 msgid "Item quantity" msgstr "" -#: order/models.py:1326 +#: order/models.py:1290 msgid "Line item reference" msgstr "" -#: order/models.py:1333 +#: order/models.py:1297 msgid "Line item notes" msgstr "" -#: order/models.py:1345 +#: order/models.py:1309 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1366 +#: order/models.py:1330 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1372 +#: order/models.py:1336 msgid "Context" msgstr "" -#: order/models.py:1373 +#: order/models.py:1337 msgid "Additional context for this line" msgstr "" -#: order/models.py:1383 +#: order/models.py:1347 msgid "Unit price" msgstr "" -#: order/models.py:1416 +#: order/models.py:1380 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1423 +#: order/models.py:1387 msgid "deleted" msgstr "" -#: order/models.py:1451 +#: order/models.py:1415 msgid "Supplier part" msgstr "" -#: order/models.py:1458 order/templates/order/order_base.html:196 -#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: order/models.py:1422 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1870 templates/js/translated/part.js:1902 #: templates/js/translated/purchase_order.js:1306 #: templates/js/translated/purchase_order.js:2169 #: templates/js/translated/return_order.js:763 @@ -4955,196 +5011,196 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1459 +#: order/models.py:1423 msgid "Number of items received" msgstr "" -#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 +#: order/models.py:1431 stock/models.py:938 stock/serializers.py:556 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "" -#: order/models.py:1468 +#: order/models.py:1432 msgid "Unit purchase price" msgstr "" -#: order/models.py:1483 +#: order/models.py:1447 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1574 +#: order/models.py:1538 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1579 +#: order/models.py:1543 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1605 part/templates/part/part_pricing.html:107 +#: order/models.py:1569 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:1606 +#: order/models.py:1570 msgid "Unit sale price" msgstr "" -#: order/models.py:1615 order/status_codes.py:43 +#: order/models.py:1579 order/status_codes.py:43 #: templates/js/translated/sales_order.js:1559 #: templates/js/translated/sales_order.js:1680 #: templates/js/translated/sales_order.js:1993 msgid "Shipped" msgstr "Poslato" -#: order/models.py:1616 +#: order/models.py:1580 msgid "Shipped quantity" msgstr "" -#: order/models.py:1708 +#: order/models.py:1672 msgid "Date of shipment" msgstr "" -#: order/models.py:1714 templates/js/translated/sales_order.js:1072 +#: order/models.py:1678 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "" -#: order/models.py:1715 +#: order/models.py:1679 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1723 +#: order/models.py:1687 msgid "Checked By" msgstr "" -#: order/models.py:1724 +#: order/models.py:1688 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 -#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 +#: order/models.py:1695 order/models.py:1908 order/serializers.py:1342 +#: order/serializers.py:1452 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "" -#: order/models.py:1732 +#: order/models.py:1696 msgid "Shipment number" msgstr "" -#: order/models.py:1740 +#: order/models.py:1704 msgid "Tracking Number" msgstr "" -#: order/models.py:1741 +#: order/models.py:1705 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1748 +#: order/models.py:1712 msgid "Invoice Number" msgstr "" -#: order/models.py:1749 +#: order/models.py:1713 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1769 +#: order/models.py:1733 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1772 +#: order/models.py:1736 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1890 order/models.py:1892 +#: order/models.py:1854 order/models.py:1856 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1899 +#: order/models.py:1863 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1902 +#: order/models.py:1866 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1905 +#: order/models.py:1869 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1924 order/serializers.py:1231 +#: order/models.py:1888 order/serializers.py:1219 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1927 +#: order/models.py:1891 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1928 plugin/base/barcodes/api.py:481 +#: order/models.py:1892 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1936 +#: order/models.py:1900 msgid "Line" msgstr "" -#: order/models.py:1945 +#: order/models.py:1909 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1958 order/models.py:2275 +#: order/models.py:1922 order/models.py:2239 #: templates/js/translated/return_order.js:721 msgid "Item" msgstr "" -#: order/models.py:1959 +#: order/models.py:1923 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1968 +#: order/models.py:1932 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:2057 +#: order/models.py:2021 msgid "Return Order reference" msgstr "" -#: order/models.py:2069 +#: order/models.py:2033 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:2081 +#: order/models.py:2045 msgid "Return order status" msgstr "" -#: order/models.py:2260 +#: order/models.py:2224 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2276 +#: order/models.py:2240 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2282 +#: order/models.py:2246 msgid "Received Date" msgstr "" -#: order/models.py:2283 +#: order/models.py:2247 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2294 templates/js/translated/return_order.js:732 +#: order/models.py:2258 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2295 +#: order/models.py:2259 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2302 +#: order/models.py:2266 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/serializers.py:79 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_purchase_order_report.html:22 @@ -5153,163 +5209,163 @@ msgstr "" msgid "Line Items" msgstr "" -#: order/serializers.py:84 +#: order/serializers.py:83 msgid "Completed Lines" msgstr "" -#: order/serializers.py:287 +#: order/serializers.py:286 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:302 order/serializers.py:1247 +#: order/serializers.py:301 order/serializers.py:1235 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:312 order/serializers.py:1257 +#: order/serializers.py:311 order/serializers.py:1245 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:440 +#: order/serializers.py:439 msgid "Order is not open" msgstr "" -#: order/serializers.py:461 +#: order/serializers.py:460 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:463 +#: order/serializers.py:462 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:473 +#: order/serializers.py:472 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:478 msgid "Merge Items" msgstr "" -#: order/serializers.py:481 +#: order/serializers.py:480 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:499 +#: order/serializers.py:498 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:502 +#: order/serializers.py:501 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:510 +#: order/serializers.py:509 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:511 +#: order/serializers.py:510 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:550 order/serializers.py:1325 +#: order/serializers.py:549 order/serializers.py:1313 msgid "Line Item" msgstr "" -#: order/serializers.py:556 +#: order/serializers.py:555 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1657 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:581 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:589 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:601 templates/js/translated/barcode.js:52 +#: order/serializers.py:600 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:602 +#: order/serializers.py:601 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:618 +#: order/serializers.py:617 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:642 +#: order/serializers.py:641 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:690 order/serializers.py:1696 +#: order/serializers.py:689 order/serializers.py:1673 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:706 +#: order/serializers.py:705 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:717 +#: order/serializers.py:716 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1074 +#: order/serializers.py:1062 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1134 +#: order/serializers.py:1122 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1195 order/serializers.py:1334 +#: order/serializers.py:1183 order/serializers.py:1322 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1214 +#: order/serializers.py:1202 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1344 +#: order/serializers.py:1332 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1366 order/serializers.py:1472 +#: order/serializers.py:1354 order/serializers.py:1460 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1369 order/serializers.py:1475 +#: order/serializers.py:1357 order/serializers.py:1463 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1416 +#: order/serializers.py:1404 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1423 +#: order/serializers.py:1411 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1650 +#: order/serializers.py:1627 msgid "Return order line item" msgstr "" -#: order/serializers.py:1656 +#: order/serializers.py:1633 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1659 +#: order/serializers.py:1636 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1688 +#: order/serializers.py:1665 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1766 +#: order/serializers.py:1743 msgid "Line price currency" msgstr "" @@ -5639,7 +5695,7 @@ msgstr "" #: 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/part.js:1073 #: templates/js/translated/purchase_order.js:1752 #: templates/js/translated/return_order.js:380 #: templates/js/translated/sales_order.js:891 @@ -5735,34 +5791,34 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:406 part/models.py:3964 part/stocktake.py:218 -#: stock/admin.py:153 +#: part/admin.py:39 part/admin.py:398 part/models.py:3944 part/stocktake.py:219 +#: stock/admin.py:152 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 -#: stock/admin.py:157 +#: part/admin.py:41 part/admin.py:405 part/models.py:3945 part/stocktake.py:220 +#: stock/admin.py:156 msgid "Part Name" msgstr "" -#: part/admin.py:45 part/stocktake.py:220 +#: part/admin.py:45 part/stocktake.py:221 msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:940 part/templates/part/part_base.html:269 #: report/templates/report/inventree_stock_location_report.html:103 -#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/part.js:1227 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 -#: report/models.py:161 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2346 +#: part/admin.py:50 part/models.py:949 part/templates/part/part_base.html:277 +#: report/models.py:162 templates/js/translated/part.js:1232 +#: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:319 part/models.py:929 +#: part/admin.py:53 part/admin.py:319 part/models.py:922 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5771,11 +5827,11 @@ msgstr "" msgid "Part Image" msgstr "" -#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:222 msgid "Category ID" msgstr "" -#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:223 msgid "Category Name" msgstr "" @@ -5787,11 +5843,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:908 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1036 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5799,26 +5855,26 @@ msgstr "" 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 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:235 +#: templates/js/translated/part.js:715 templates/js/translated/part.js:2153 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3123 part/models.py:3137 -#: templates/js/translated/part.js:969 +#: part/admin.py:155 part/models.py:3088 part/models.py:3102 +#: templates/js/translated/part.js:970 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3130 part/models.py:3144 -#: templates/js/translated/part.js:979 +#: part/admin.py:158 part/models.py:3095 part/models.py:3109 +#: templates/js/translated/part.js:980 msgid "Maximum Cost" msgstr "" -#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 msgid "Parent ID" msgstr "" -#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 msgid "Parent Name" msgstr "" @@ -5827,141 +5883,149 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:325 part/models.py:393 part/serializers.py:117 -#: part/serializers.py:272 part/serializers.py:391 +#: part/admin.py:325 part/models.py:396 part/serializers.py:124 +#: part/serializers.py:267 part/serializers.py:386 #: 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:2803 templates/js/translated/search.js:130 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "" -#: part/admin.py:386 +#: part/admin.py:378 msgid "BOM Level" msgstr "" -#: part/admin.py:389 +#: part/admin.py:381 msgid "BOM Item ID" msgstr "" -#: part/admin.py:399 +#: part/admin.py:391 msgid "Parent IPN" msgstr "" -#: part/admin.py:410 part/models.py:3966 +#: part/admin.py:402 part/models.py:3946 msgid "Part IPN" msgstr "" -#: part/admin.py:423 part/serializers.py:1278 +#: part/admin.py:415 part/serializers.py:1274 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:428 part/serializers.py:1293 +#: part/admin.py:420 part/serializers.py:1289 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:110 +#: part/api.py:104 msgid "Starred" msgstr "" -#: part/api.py:112 +#: part/api.py:106 msgid "Filter by starred categories" msgstr "" -#: part/api.py:129 stock/api.py:318 +#: part/api.py:123 stock/api.py:312 msgid "Depth" msgstr "" -#: part/api.py:129 +#: part/api.py:123 msgid "Filter by category depth" msgstr "" -#: part/api.py:147 stock/api.py:336 +#: part/api.py:141 stock/api.py:330 +msgid "Top Level" +msgstr "" + +#: part/api.py:143 +msgid "Filter by top-level categories" +msgstr "" + +#: part/api.py:156 stock/api.py:345 msgid "Cascade" msgstr "" -#: part/api.py:149 +#: part/api.py:158 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:169 +#: part/api.py:179 templates/js/translated/part.js:308 msgid "Parent" msgstr "" -#: part/api.py:171 +#: part/api.py:181 msgid "Filter by parent category" msgstr "" -#: part/api.py:204 +#: part/api.py:214 msgid "Exclude Tree" msgstr "" -#: part/api.py:206 +#: part/api.py:216 msgid "Exclude sub-categories under the specified category" msgstr "" -#: part/api.py:455 +#: part/api.py:449 msgid "Has Results" msgstr "" -#: part/api.py:622 +#: part/api.py:616 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:640 +#: part/api.py:634 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:656 +#: part/api.py:650 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:740 +#: part/api.py:734 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:887 +#: part/api.py:881 msgid "Valid" msgstr "" -#: part/api.py:888 +#: part/api.py:882 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:894 +#: part/api.py:888 msgid "This option must be selected" msgstr "" -#: part/api.py:1111 +#: part/api.py:1105 msgid "BOM Valid" msgstr "" -#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 -#: part/serializers.py:406 part/serializers.py:1134 -#: part/templates/part/part_base.html:260 stock/api.py:781 +#: part/api.py:1508 part/models.py:932 part/models.py:3374 part/models.py:3889 +#: part/serializers.py:401 part/serializers.py:1130 +#: part/templates/part/part_base.html:260 stock/api.py:791 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2376 +#: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/api.py:1803 +#: part/api.py:1796 msgid "Uses" msgstr "" -#: part/bom.py:170 part/models.py:102 part/models.py:982 +#: part/bom.py:170 part/models.py:104 part/models.py:975 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 part/serializers.py:837 +#: part/bom.py:171 part/serializers.py:833 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5970,1054 +6034,1066 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 +#: part/models.py:85 part/models.py:3890 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:84 part/templates/part/category.html:136 +#: part/models.py:86 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "" -#: part/models.py:103 +#: part/models.py:105 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 +#: part/models.py:110 stock/models.py:174 templates/js/translated/part.js:2810 #: templates/js/translated/stock.js:2772 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:110 +#: part/models.py:112 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:119 +#: part/models.py:121 msgid "Default keywords" msgstr "" -#: part/models.py:120 +#: part/models.py:122 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 stock/models.py:85 stock/models.py:156 +#: part/models.py:128 stock/models.py:86 stock/models.py:157 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:127 stock/models.py:157 +#: part/models.py:129 stock/models.py:158 msgid "Icon (optional)" msgstr "" -#: part/models.py:149 +#: part/models.py:151 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:482 +#: part/models.py:485 msgid "Cannot delete this part as it is still active" msgstr "" -#: part/models.py:489 +#: part/models.py:490 msgid "Cannot delete this part as it is used in an assembly" msgstr "" -#: part/models.py:527 +#: part/models.py:528 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:575 part/models.py:582 +#: part/models.py:576 part/models.py:583 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:594 +#: part/models.py:595 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:659 +#: part/models.py:658 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:739 +#: part/models.py:736 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:844 +#: part/models.py:837 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:854 +#: part/models.py:847 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:869 +#: part/models.py:862 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:898 part/models.py:3965 +#: part/models.py:891 part/models.py:3945 msgid "Part name" msgstr "" -#: part/models.py:903 +#: part/models.py:896 msgid "Is Template" msgstr "" -#: part/models.py:904 +#: part/models.py:897 msgid "Is this part a template part?" msgstr "" -#: part/models.py:914 +#: part/models.py:907 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:922 +#: part/models.py:915 msgid "Part description (optional)" msgstr "" -#: part/models.py:930 +#: part/models.py:923 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:940 +#: part/models.py:933 msgid "Part category" msgstr "" -#: part/models.py:948 +#: part/models.py:941 msgid "Internal Part Number" msgstr "" -#: part/models.py:955 +#: part/models.py:948 msgid "Part revision or version number" msgstr "" -#: part/models.py:980 +#: part/models.py:973 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:1026 part/templates/part/part_base.html:376 +#: part/models.py:1019 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:1027 +#: part/models.py:1020 msgid "Default supplier part" msgstr "" -#: part/models.py:1034 +#: part/models.py:1027 msgid "Default Expiry" msgstr "" -#: part/models.py:1035 +#: part/models.py:1028 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:1044 +#: part/models.py:1037 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:1053 +#: part/models.py:1046 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1060 +#: part/models.py:1053 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1066 +#: part/models.py:1059 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1072 +#: part/models.py:1065 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1078 +#: part/models.py:1071 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1084 +#: part/models.py:1077 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1088 +#: part/models.py:1081 msgid "Is this part active?" msgstr "" -#: part/models.py:1094 +#: part/models.py:1087 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1100 +#: part/models.py:1093 msgid "BOM checksum" msgstr "" -#: part/models.py:1101 +#: part/models.py:1094 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1109 +#: part/models.py:1102 msgid "BOM checked by" msgstr "" -#: part/models.py:1114 +#: part/models.py:1107 msgid "BOM checked date" msgstr "" -#: part/models.py:1130 +#: part/models.py:1123 msgid "Creation User" msgstr "" -#: part/models.py:1140 +#: part/models.py:1133 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1145 part/templates/part/part_base.html:339 +#: part/models.py:1138 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2470 +#: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:2018 +#: part/models.py:2011 msgid "Sell multiple" msgstr "" -#: part/models.py:3037 +#: part/models.py:3002 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:3053 +#: part/models.py:3018 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:3054 +#: part/models.py:3019 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:3060 +#: part/models.py:3025 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3026 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:3067 +#: part/models.py:3032 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3033 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3074 +#: part/models.py:3039 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3040 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3046 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3047 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3053 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3054 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3060 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3096 +#: part/models.py:3061 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3102 +#: part/models.py:3067 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3103 +#: part/models.py:3068 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3109 +#: part/models.py:3074 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3110 +#: part/models.py:3075 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3116 +#: part/models.py:3081 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3117 +#: part/models.py:3082 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3124 +#: part/models.py:3089 msgid "Override minimum cost" msgstr "" -#: part/models.py:3131 +#: part/models.py:3096 msgid "Override maximum cost" msgstr "" -#: part/models.py:3138 +#: part/models.py:3103 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3145 +#: part/models.py:3110 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3151 +#: part/models.py:3116 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3152 +#: part/models.py:3117 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3158 +#: part/models.py:3123 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3159 +#: part/models.py:3124 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3165 +#: part/models.py:3130 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3131 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3172 +#: part/models.py:3137 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3138 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3192 +#: part/models.py:3157 msgid "Part for stocktake" msgstr "" -#: part/models.py:3197 +#: part/models.py:3162 msgid "Item Count" msgstr "" -#: part/models.py:3198 +#: part/models.py:3163 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3206 +#: part/models.py:3171 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3210 part/models.py:3293 +#: part/models.py:3175 part/models.py:3258 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report.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/part.js:1086 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" -#: part/models.py:3211 +#: part/models.py:3176 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3219 +#: part/models.py:3184 msgid "Additional notes" msgstr "" -#: part/models.py:3229 +#: part/models.py:3194 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3235 +#: part/models.py:3200 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3236 +#: part/models.py:3201 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3242 +#: part/models.py:3207 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3243 +#: part/models.py:3208 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3264 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3300 +#: part/models.py:3265 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3270 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3306 +#: part/models.py:3271 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3316 +#: part/models.py:3281 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3478 +#: part/models.py:3423 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3489 +#: part/models.py:3444 part/models.py:3608 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3455 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3500 +#: part/models.py:3466 msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3517 templates/js/translated/part.js:2878 +#: part/models.py:3483 templates/js/translated/part.js:2880 msgid "Test Name" msgstr "" -#: part/models.py:3518 +#: part/models.py:3484 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3524 +#: part/models.py:3490 msgid "Test Key" msgstr "" -#: part/models.py:3525 +#: part/models.py:3491 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3532 +#: part/models.py:3498 msgid "Test Description" msgstr "" -#: part/models.py:3533 +#: part/models.py:3499 msgid "Enter description for this test" msgstr "" -#: part/models.py:3537 report/models.py:208 -#: templates/js/translated/part.js:2899 +#: part/models.py:3503 report/models.py:209 +#: templates/js/translated/part.js:2901 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" -#: part/models.py:3537 +#: part/models.py:3503 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3542 templates/js/translated/part.js:2907 +#: part/models.py:3508 templates/js/translated/part.js:2909 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3543 +#: part/models.py:3509 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3548 templates/js/translated/part.js:2915 +#: part/models.py:3514 templates/js/translated/part.js:2917 msgid "Requires Value" msgstr "" -#: part/models.py:3549 +#: part/models.py:3515 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3554 templates/js/translated/part.js:2922 +#: part/models.py:3520 templates/js/translated/part.js:2924 msgid "Requires Attachment" msgstr "" -#: part/models.py:3556 +#: part/models.py:3522 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3603 +#: part/models.py:3528 part/models.py:3667 templates/js/translated/part.js:1637 +msgid "Choices" +msgstr "" + +#: part/models.py:3529 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3583 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3608 +#: part/models.py:3588 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3628 -msgid "Choices must be unique" -msgstr "" - -#: part/models.py:3645 +#: part/models.py:3625 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3660 +#: part/models.py:3640 msgid "Parameter Name" msgstr "" -#: part/models.py:3667 +#: part/models.py:3647 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3675 +#: part/models.py:3655 msgid "Parameter description" msgstr "" -#: part/models.py:3681 templates/js/translated/part.js:1627 +#: part/models.py:3661 templates/js/translated/part.js:1628 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "" -#: part/models.py:3682 +#: part/models.py:3662 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3687 templates/js/translated/part.js:1636 -msgid "Choices" -msgstr "" - -#: part/models.py:3688 +#: part/models.py:3668 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3765 +#: part/models.py:3745 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3808 +#: part/models.py:3788 msgid "Parent Part" msgstr "" -#: part/models.py:3816 part/models.py:3917 part/models.py:3918 +#: part/models.py:3796 part/models.py:3897 part/models.py:3898 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3821 +#: part/models.py:3801 msgid "Data" msgstr "" -#: part/models.py:3822 +#: part/models.py:3802 msgid "Parameter Value" msgstr "" -#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3904 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3925 +#: part/models.py:3905 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3963 +#: part/models.py:3943 msgid "Part ID or part name" msgstr "" -#: part/models.py:3964 +#: part/models.py:3944 msgid "Unique part ID value" msgstr "" -#: part/models.py:3966 +#: part/models.py:3946 msgid "Part IPN value" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "Level" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "BOM level" msgstr "" -#: part/models.py:4057 +#: part/models.py:4037 msgid "Select parent part" msgstr "" -#: part/models.py:4067 +#: part/models.py:4047 msgid "Sub part" msgstr "" -#: part/models.py:4068 +#: part/models.py:4048 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4079 +#: part/models.py:4059 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4085 +#: part/models.py:4065 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4091 +#: part/models.py:4071 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4098 part/templates/part/upload_bom.html:55 +#: part/models.py:4078 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4099 +#: part/models.py:4079 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4106 +#: part/models.py:4086 msgid "BOM item reference" msgstr "" -#: part/models.py:4114 +#: part/models.py:4094 msgid "BOM item notes" msgstr "" -#: part/models.py:4120 +#: part/models.py:4100 msgid "Checksum" msgstr "" -#: part/models.py:4121 +#: part/models.py:4101 msgid "BOM line checksum" msgstr "" -#: part/models.py:4126 templates/js/translated/table_filters.js:174 +#: part/models.py:4106 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4127 +#: part/models.py:4107 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4132 part/templates/part/upload_bom.html:57 +#: part/models.py:4112 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:4133 +#: part/models.py:4113 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4138 part/templates/part/upload_bom.html:56 +#: part/models.py:4118 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4139 +#: part/models.py:4119 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4224 stock/models.py:664 +#: part/models.py:4204 stock/models.py:662 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4234 part/models.py:4236 +#: part/models.py:4214 part/models.py:4216 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4376 +#: part/models.py:4354 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4397 +#: part/models.py:4375 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4410 +#: part/models.py:4388 msgid "Parent BOM item" msgstr "" -#: part/models.py:4418 +#: part/models.py:4396 msgid "Substitute part" msgstr "" -#: part/models.py:4434 +#: part/models.py:4412 msgid "Part 1" msgstr "" -#: part/models.py:4442 +#: part/models.py:4420 msgid "Part 2" msgstr "" -#: part/models.py:4443 +#: part/models.py:4421 msgid "Select Related Part" msgstr "" -#: part/models.py:4462 +#: part/models.py:4440 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4467 +#: part/models.py:4445 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:119 part/serializers.py:141 +#: part/serializers.py:118 +msgid "Parent Category" +msgstr "" + +#: part/serializers.py:119 templates/js/translated/part.js:309 +msgid "Parent part category" +msgstr "" + +#: part/serializers.py:126 part/serializers.py:148 #: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/serializers.py:185 +#: part/serializers.py:180 msgid "Results" msgstr "" -#: part/serializers.py:186 +#: part/serializers.py:181 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 +#: part/serializers.py:205 part/serializers.py:223 stock/serializers.py:562 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:273 +#: part/serializers.py:268 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:397 +#: part/serializers.py:392 msgid "No parts selected" msgstr "" -#: part/serializers.py:407 +#: part/serializers.py:402 msgid "Select category" msgstr "" -#: part/serializers.py:442 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:443 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:448 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:449 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:455 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:456 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:463 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:488 +#: part/serializers.py:483 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:490 +#: part/serializers.py:485 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:497 +#: part/serializers.py:492 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:493 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:510 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:531 +#: part/serializers.py:526 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:541 +#: part/serializers.py:536 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:548 +#: part/serializers.py:543 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:557 +#: part/serializers.py:552 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:568 +#: part/serializers.py:563 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:575 +#: part/serializers.py:570 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:834 msgid "External Stock" msgstr "" -#: part/serializers.py:840 +#: part/serializers.py:836 msgid "Unallocated Stock" msgstr "" -#: part/serializers.py:843 +#: part/serializers.py:839 msgid "Variant Stock" msgstr "" -#: part/serializers.py:873 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:471 +#: part/serializers.py:869 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:472 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:870 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:880 templates/js/translated/part.js:102 +#: part/serializers.py:876 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:881 +#: part/serializers.py:877 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:887 +#: part/serializers.py:883 msgid "Supplier Information" msgstr "" -#: part/serializers.py:888 +#: part/serializers.py:884 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:896 +#: part/serializers.py:892 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:897 +#: part/serializers.py:893 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:902 +#: part/serializers.py:898 msgid "Existing Image" msgstr "" -#: part/serializers.py:903 +#: part/serializers.py:899 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:920 +#: part/serializers.py:916 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1126 +#: part/serializers.py:1122 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1136 +#: part/serializers.py:1132 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1146 +#: part/serializers.py:1142 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1152 +#: part/serializers.py:1148 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1153 +#: part/serializers.py:1149 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1158 +#: part/serializers.py:1154 msgid "Generate Report" msgstr "" -#: part/serializers.py:1159 +#: part/serializers.py:1155 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1164 +#: part/serializers.py:1160 msgid "Update Parts" msgstr "" -#: part/serializers.py:1165 +#: part/serializers.py:1161 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1173 +#: part/serializers.py:1169 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1279 +#: part/serializers.py:1275 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1286 +#: part/serializers.py:1282 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1294 +#: part/serializers.py:1290 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1301 +#: part/serializers.py:1297 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1330 +#: part/serializers.py:1326 msgid "Update" msgstr "" -#: part/serializers.py:1331 +#: part/serializers.py:1327 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1354 +#: part/serializers.py:1350 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1361 +#: part/serializers.py:1357 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1364 +#: part/serializers.py:1360 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1727 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1739 +#: part/serializers.py:1735 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1740 +#: part/serializers.py:1736 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1745 +#: part/serializers.py:1741 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1746 +#: part/serializers.py:1742 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1747 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1752 +#: part/serializers.py:1748 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1757 +#: part/serializers.py:1753 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1758 +#: part/serializers.py:1754 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1792 +#: part/serializers.py:1788 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1793 +#: part/serializers.py:1789 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1823 +#: part/serializers.py:1819 msgid "No part column specified" msgstr "" -#: part/serializers.py:1867 +#: part/serializers.py:1863 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1870 +#: part/serializers.py:1866 msgid "No matching part found" msgstr "" -#: part/serializers.py:1873 +#: part/serializers.py:1869 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1882 +#: part/serializers.py:1878 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1890 +#: part/serializers.py:1886 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1911 +#: part/serializers.py:1907 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 +#: part/stocktake.py:225 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "" -#: part/stocktake.py:225 +#: part/stocktake.py:226 msgid "Total Cost Min" msgstr "" -#: part/stocktake.py:226 +#: part/stocktake.py:227 msgid "Total Cost Max" msgstr "" -#: part/stocktake.py:284 +#: part/stocktake.py:285 msgid "Stocktake Report Available" msgstr "" -#: part/stocktake.py:285 +#: part/stocktake.py:286 msgid "A new stocktake report is available for download" msgstr "" @@ -7151,7 +7227,7 @@ 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 +#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" @@ -7251,15 +7327,15 @@ msgstr "" msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:655 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:663 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:748 +#: part/templates/part/detail.html:750 msgid "Add Test Result Template" msgstr "" @@ -7340,7 +7416,7 @@ msgstr "" msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" msgstr "" @@ -7412,7 +7488,7 @@ 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:2443 +#: templates/js/translated/part.js:1265 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7505,8 +7581,8 @@ msgstr "" #: 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:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/part.js:1243 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 #: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7549,7 +7625,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:247 +#: part/templates/part/prices.html:28 stock/admin.py:251 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 @@ -7626,8 +7702,8 @@ msgstr "" #: part/templates/part/stock_count.html:7 #: templates/js/translated/model_renderers.js:227 -#: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 -#: templates/js/translated/part.js:2142 +#: templates/js/translated/part.js:705 templates/js/translated/part.js:2141 +#: templates/js/translated/part.js:2143 msgid "No Stock" msgstr "" @@ -7999,7 +8075,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:308 msgid "Landscape" msgstr "" @@ -8112,62 +8188,62 @@ msgstr "" msgid "Uninstalled plugin successfully" msgstr "" -#: plugin/models.py:35 +#: plugin/models.py:36 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:36 +#: plugin/models.py:37 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:42 users/models.py:100 +#: plugin/models.py:43 users/models.py:100 msgid "Key" msgstr "" -#: plugin/models.py:43 +#: plugin/models.py:44 msgid "Key of plugin" msgstr "" -#: plugin/models.py:51 +#: plugin/models.py:52 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:58 plugin/serializers.py:90 +#: plugin/models.py:59 plugin/serializers.py:90 msgid "Package Name" msgstr "" -#: plugin/models.py:60 +#: plugin/models.py:61 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:65 +#: plugin/models.py:66 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:156 templates/js/translated/table_filters.js:370 +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "" -#: plugin/models.py:165 +#: plugin/models.py:166 msgid "Sample plugin" msgstr "" -#: plugin/models.py:173 +#: plugin/models.py:174 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:181 +#: plugin/models.py:182 msgid "Package Plugin" msgstr "" -#: plugin/models.py:205 report/models.py:474 +#: plugin/models.py:220 report/models.py:475 #: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:252 +#: plugin/models.py:267 msgid "Method" msgstr "" @@ -8175,17 +8251,17 @@ msgstr "" msgid "No author found" msgstr "" -#: plugin/registry.py:597 +#: plugin/registry.py:534 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:600 +#: plugin/registry.py:537 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:602 +#: plugin/registry.py:539 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -8300,23 +8376,19 @@ msgstr "" msgid "Activate this plugin" msgstr "" -#: plugin/serializers.py:234 +#: plugin/serializers.py:226 msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:235 +#: plugin/serializers.py:227 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:77 +#: report/api.py:88 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:89 report/serializers.py:53 -msgid "Model Type" -msgstr "" - -#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/api.py:103 report/models.py:439 report/serializers.py:98 #: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 #: templates/js/translated/return_order.js:353 #: templates/js/translated/sales_order.js:887 @@ -8324,176 +8396,176 @@ msgstr "" msgid "Items" msgstr "" -#: report/api.py:168 +#: report/api.py:180 msgid "Plugin not found" msgstr "" -#: report/api.py:170 +#: report/api.py:182 msgid "Plugin is not active" msgstr "" -#: report/api.py:172 +#: report/api.py:184 msgid "Plugin does not support label printing" msgstr "" -#: report/api.py:221 +#: report/api.py:233 msgid "Invalid label dimensions" msgstr "" -#: report/api.py:236 report/api.py:316 +#: report/api.py:248 report/api.py:329 msgid "No valid items provided to template" msgstr "" -#: report/api.py:271 +#: report/api.py:283 msgid "Error printing label" msgstr "" -#: report/api.py:362 report/api.py:398 +#: report/api.py:375 report/api.py:411 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/helpers.py:41 +#: report/helpers.py:43 msgid "A4" msgstr "" -#: report/helpers.py:42 +#: report/helpers.py:44 msgid "A3" msgstr "" -#: report/helpers.py:43 +#: report/helpers.py:45 msgid "Legal" msgstr "" -#: report/helpers.py:44 +#: report/helpers.py:46 msgid "Letter" msgstr "" -#: report/models.py:118 +#: report/models.py:119 msgid "Template file with this name already exists" msgstr "" -#: report/models.py:150 +#: report/models.py:151 msgid "Template name" msgstr "" -#: report/models.py:156 +#: report/models.py:157 msgid "Template description" msgstr "" -#: report/models.py:162 +#: report/models.py:163 msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Filename Pattern" msgstr "" -#: report/models.py:203 +#: report/models.py:204 msgid "Pattern for generating filenames" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Template is enabled" msgstr "" -#: report/models.py:214 +#: report/models.py:215 msgid "Target model type for template" msgstr "" -#: report/models.py:234 +#: report/models.py:235 msgid "Filters" msgstr "" -#: report/models.py:235 +#: report/models.py:236 msgid "Template query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:294 report/models.py:361 +#: report/models.py:295 report/models.py:362 msgid "Template file" msgstr "" -#: report/models.py:302 +#: report/models.py:303 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:308 +#: report/models.py:309 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:367 +#: report/models.py:368 msgid "Width [mm]" msgstr "" -#: report/models.py:368 +#: report/models.py:369 msgid "Label width, specified in mm" msgstr "" -#: report/models.py:374 +#: report/models.py:375 msgid "Height [mm]" msgstr "" -#: report/models.py:375 +#: report/models.py:376 msgid "Label height, specified in mm" msgstr "" -#: report/models.py:438 +#: report/models.py:439 msgid "Number of items to process" msgstr "" -#: report/models.py:444 +#: report/models.py:445 msgid "Report generation is complete" msgstr "" -#: report/models.py:448 templates/js/translated/build.js:2177 +#: report/models.py:449 templates/js/translated/build.js:2177 msgid "Progress" msgstr "" -#: report/models.py:448 +#: report/models.py:449 msgid "Report generation progress" msgstr "" -#: report/models.py:456 +#: report/models.py:457 msgid "Report Template" msgstr "" -#: report/models.py:463 report/models.py:486 +#: report/models.py:464 report/models.py:487 msgid "Output File" msgstr "" -#: report/models.py:464 report/models.py:487 +#: report/models.py:465 report/models.py:488 msgid "Generated output file" msgstr "" -#: report/models.py:475 +#: report/models.py:476 msgid "Label output plugin" msgstr "" -#: report/models.py:479 +#: report/models.py:480 msgid "Label Template" msgstr "" -#: report/models.py:502 +#: report/models.py:503 msgid "Snippet" msgstr "" -#: report/models.py:503 +#: report/models.py:504 msgid "Report snippet file" msgstr "" -#: report/models.py:510 +#: report/models.py:511 msgid "Snippet file description" msgstr "" -#: report/models.py:528 +#: report/models.py:529 msgid "Asset" msgstr "" -#: report/models.py:529 +#: report/models.py:530 msgid "Report asset file" msgstr "" -#: report/models.py:536 +#: report/models.py:537 msgid "Asset file description" msgstr "" @@ -8566,8 +8638,8 @@ msgid "Total" msgstr "" #: report/templates/report/inventree_return_order_report.html:25 -#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 -#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:824 +#: stock/serializers.py:149 stock/templates/stock/item_base.html:311 #: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 #: templates/js/translated/build.js:2355 #: templates/js/translated/model_renderers.js:230 @@ -8597,32 +8669,32 @@ msgstr "" msgid "Test" msgstr "" -#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2412 msgid "Result" msgstr "" -#: report/templates/report/inventree_test_report.html:130 +#: report/templates/report/inventree_test_report.html:129 msgid "Pass" msgstr "" -#: report/templates/report/inventree_test_report.html:132 +#: report/templates/report/inventree_test_report.html:131 msgid "Fail" msgstr "" -#: report/templates/report/inventree_test_report.html:139 +#: report/templates/report/inventree_test_report.html:138 msgid "No result (required)" msgstr "" -#: report/templates/report/inventree_test_report.html:141 +#: report/templates/report/inventree_test_report.html:140 msgid "No result" msgstr "" -#: report/templates/report/inventree_test_report.html:154 +#: report/templates/report/inventree_test_report.html:153 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "" -#: report/templates/report/inventree_test_report.html:168 stock/admin.py:162 +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 #: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 #: templates/js/translated/stock.js:3110 msgid "Serial" @@ -8644,654 +8716,670 @@ msgstr "" msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:172 +#: stock/admin.py:51 stock/admin.py:171 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:176 +#: stock/admin.py:53 stock/admin.py:175 msgid "Location Name" msgstr "" -#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/admin.py:63 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:149 +#: stock/admin.py:148 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:168 +#: stock/admin.py:167 msgid "Status Code" msgstr "" -#: stock/admin.py:180 +#: stock/admin.py:179 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:185 +#: stock/admin.py:184 +msgid "Supplier Part SKU" +msgstr "" + +#: stock/admin.py:189 msgid "Supplier ID" msgstr "" -#: stock/admin.py:191 +#: stock/admin.py:195 msgid "Supplier Name" msgstr "" -#: stock/admin.py:196 +#: stock/admin.py:200 msgid "Customer ID" msgstr "" -#: stock/admin.py:201 stock/models.py:806 +#: stock/admin.py:205 stock/models.py:804 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:206 +#: stock/admin.py:210 msgid "Build ID" msgstr "" -#: stock/admin.py:216 +#: stock/admin.py:220 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:221 +#: stock/admin.py:225 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:236 +#: stock/admin.py:240 msgid "Review Needed" msgstr "" -#: stock/admin.py:241 +#: stock/admin.py:245 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:256 stock/models.py:900 +#: stock/admin.py:260 stock/models.py:898 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "" -#: stock/api.py:318 +#: stock/api.py:312 msgid "Filter by location depth" msgstr "" -#: stock/api.py:338 +#: stock/api.py:332 +msgid "Filter by top-level locations" +msgstr "" + +#: stock/api.py:347 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:359 +#: stock/api.py:369 stock/serializers.py:1085 msgid "Parent Location" msgstr "" -#: stock/api.py:360 +#: stock/api.py:370 msgid "Filter by parent location" msgstr "" -#: stock/api.py:615 templates/js/translated/table_filters.js:427 +#: stock/api.py:625 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:803 +#: stock/api.py:813 msgid "Part Tree" msgstr "" -#: stock/api.py:833 +#: stock/api.py:843 msgid "Expiry date before" msgstr "" -#: stock/api.py:837 +#: stock/api.py:847 msgid "Expiry date after" msgstr "" -#: stock/api.py:840 stock/templates/stock/item_base.html:439 +#: stock/api.py:850 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:927 +#: stock/api.py:937 msgid "Quantity is required" msgstr "" -#: stock/api.py:933 +#: stock/api.py:943 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:964 +#: stock/api.py:974 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:974 +#: stock/api.py:984 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:1005 +#: stock/api.py:1015 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:59 +#: stock/models.py:60 msgid "Stock Location type" msgstr "" -#: stock/models.py:60 +#: stock/models.py:61 msgid "Stock Location types" msgstr "" -#: stock/models.py:86 +#: stock/models.py:87 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:123 stock/models.py:788 +#: stock/models.py:124 stock/models.py:786 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:124 stock/templates/stock/location.html:186 +#: stock/models.py:125 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "" -#: stock/models.py:166 stock/models.py:949 +#: stock/models.py:167 stock/models.py:947 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:167 stock/models.py:950 +#: stock/models.py:168 stock/models.py:948 msgid "Select Owner" msgstr "" -#: stock/models.py:175 +#: stock/models.py:176 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:182 templates/js/translated/stock.js:2781 +#: stock/models.py:183 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:183 +#: stock/models.py:184 msgid "This is an external stock location" msgstr "" -#: stock/models.py:189 templates/js/translated/stock.js:2790 +#: stock/models.py:190 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" -#: stock/models.py:193 +#: stock/models.py:194 msgid "Stock location type of this location" msgstr "" -#: stock/models.py:262 +#: stock/models.py:261 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:643 +#: stock/models.py:641 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:670 stock/serializers.py:419 +#: stock/models.py:668 stock/serializers.py:446 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:687 +#: stock/models.py:685 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:697 stock/models.py:710 +#: stock/models.py:695 stock/models.py:708 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:700 +#: stock/models.py:698 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:724 +#: stock/models.py:722 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:729 +#: stock/models.py:727 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:742 +#: stock/models.py:740 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:758 +#: stock/models.py:756 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:770 +#: stock/models.py:768 msgid "Base part" msgstr "" -#: stock/models.py:780 +#: stock/models.py:778 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:792 +#: stock/models.py:790 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:800 stock/serializers.py:1480 +#: stock/models.py:798 stock/serializers.py:1476 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:811 +#: stock/models.py:809 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:830 +#: stock/models.py:828 msgid "Serial number for this item" msgstr "" -#: stock/models.py:844 stock/serializers.py:1463 +#: stock/models.py:842 stock/serializers.py:1459 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:849 +#: stock/models.py:847 msgid "Stock Quantity" msgstr "" -#: stock/models.py:859 +#: stock/models.py:857 msgid "Source Build" msgstr "" -#: stock/models.py:862 +#: stock/models.py:860 msgid "Build for this stock item" msgstr "" -#: stock/models.py:869 stock/templates/stock/item_base.html:363 +#: stock/models.py:867 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:872 +#: stock/models.py:870 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:881 +#: stock/models.py:879 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:885 +#: stock/models.py:883 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:891 +#: stock/models.py:889 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:902 +#: stock/models.py:900 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:920 +#: stock/models.py:918 msgid "Delete on deplete" msgstr "" -#: stock/models.py:921 +#: stock/models.py:919 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:941 +#: stock/models.py:939 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:972 +#: stock/models.py:970 msgid "Converted to part" msgstr "" -#: stock/models.py:1490 +#: stock/models.py:1486 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1496 +#: stock/models.py:1492 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1500 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1510 +#: stock/models.py:1506 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1515 +#: stock/models.py:1511 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1523 stock/serializers.py:658 +#: stock/models.py:1519 stock/serializers.py:660 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1620 +#: stock/models.py:1616 msgid "Test template does not exist" msgstr "" -#: stock/models.py:1638 +#: stock/models.py:1634 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1642 +#: stock/models.py:1638 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1645 +#: stock/models.py:1641 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1648 +#: stock/models.py:1644 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1651 +#: stock/models.py:1647 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1654 +#: stock/models.py:1650 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1661 stock/serializers.py:1369 +#: stock/models.py:1657 stock/serializers.py:1365 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1665 +#: stock/models.py:1661 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1673 +#: stock/models.py:1669 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1678 +#: stock/models.py:1674 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1905 +#: stock/models.py:1901 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2310 msgid "Entry notes" msgstr "" -#: stock/models.py:2391 +#: stock/models.py:2378 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2396 +#: stock/models.py:2383 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2423 +#: stock/models.py:2388 +msgid "Invalid value for this test" +msgstr "" + +#: stock/models.py:2412 msgid "Test result" msgstr "" -#: stock/models.py:2430 +#: stock/models.py:2419 msgid "Test output value" msgstr "" -#: stock/models.py:2438 +#: stock/models.py:2427 msgid "Test result attachment" msgstr "" -#: stock/models.py:2442 +#: stock/models.py:2431 msgid "Test notes" msgstr "" -#: stock/models.py:2450 templates/js/translated/stock.js:1548 +#: stock/models.py:2439 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2440 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2457 +#: stock/models.py:2446 msgid "Started" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2447 msgid "The timestamp of the test start" msgstr "" -#: stock/models.py:2464 +#: stock/models.py:2453 msgid "Finished" msgstr "" -#: stock/models.py:2465 +#: stock/models.py:2454 msgid "The timestamp of the test finish" msgstr "" -#: stock/serializers.py:75 +#: stock/serializers.py:74 msgid "Generated batch code" msgstr "" -#: stock/serializers.py:84 +#: stock/serializers.py:83 msgid "Select build order" msgstr "" -#: stock/serializers.py:93 +#: stock/serializers.py:92 msgid "Select stock item to generate batch code for" msgstr "" -#: stock/serializers.py:102 +#: stock/serializers.py:101 msgid "Select location to generate batch code for" msgstr "" -#: stock/serializers.py:111 +#: stock/serializers.py:110 msgid "Select part to generate batch code for" msgstr "" -#: stock/serializers.py:120 +#: stock/serializers.py:119 msgid "Select purchase order" msgstr "" -#: stock/serializers.py:127 +#: stock/serializers.py:126 msgid "Enter quantity for batch code" msgstr "" -#: stock/serializers.py:150 +#: stock/serializers.py:149 msgid "Generated serial number" msgstr "" -#: stock/serializers.py:159 +#: stock/serializers.py:158 msgid "Select part to generate serial number for" msgstr "" -#: stock/serializers.py:167 +#: stock/serializers.py:166 msgid "Quantity of serial numbers to generate" msgstr "" -#: stock/serializers.py:229 +#: stock/serializers.py:228 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:248 +#: stock/serializers.py:247 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:280 +#: stock/serializers.py:279 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:313 +#: stock/serializers.py:315 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:411 +#: stock/serializers.py:438 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:531 +#: stock/serializers.py:558 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:595 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:606 +#: stock/serializers.py:608 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:613 +#: stock/serializers.py:615 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 +#: stock/serializers.py:626 stock/serializers.py:1322 stock/serializers.py:1578 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:631 +#: stock/serializers.py:633 msgid "Optional note field" msgstr "" -#: stock/serializers.py:641 +#: stock/serializers.py:643 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:696 +#: stock/serializers.py:698 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:703 +#: stock/serializers.py:705 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:704 +#: stock/serializers.py:706 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 -#: stock/serializers.py:935 +#: stock/serializers.py:711 stock/serializers.py:791 stock/serializers.py:887 +#: stock/serializers.py:937 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:719 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:725 +#: stock/serializers.py:727 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:736 +#: stock/serializers.py:738 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:749 +#: stock/serializers.py:751 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:784 +#: stock/serializers.py:786 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:819 +#: stock/serializers.py:821 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:834 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:849 +#: stock/serializers.py:851 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:880 +#: stock/serializers.py:882 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:917 +#: stock/serializers.py:919 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:923 +#: stock/serializers.py:925 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:1019 stock/serializers.py:1082 +#: stock/serializers.py:1021 stock/serializers.py:1093 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:220 +#: stock/templates/stock/location.html:222 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1198 +#: stock/serializers.py:1086 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: stock/serializers.py:1194 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1202 +#: stock/serializers.py:1198 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1206 +#: stock/serializers.py:1202 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1230 +#: stock/serializers.py:1226 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1236 +#: stock/serializers.py:1232 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1244 +#: stock/serializers.py:1240 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1254 stock/serializers.py:1508 +#: stock/serializers.py:1250 stock/serializers.py:1504 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1333 +#: stock/serializers.py:1329 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1338 +#: stock/serializers.py:1334 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1339 +#: stock/serializers.py:1335 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1344 +#: stock/serializers.py:1340 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1345 +#: stock/serializers.py:1341 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1355 +#: stock/serializers.py:1351 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1422 +#: stock/serializers.py:1418 msgid "No Change" msgstr "" -#: stock/serializers.py:1451 +#: stock/serializers.py:1447 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1470 +#: stock/serializers.py:1466 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1498 +#: stock/serializers.py:1494 msgid "Stock transaction notes" msgstr "" @@ -9444,7 +9532,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276 msgid "Delete Test Data" msgstr "" @@ -9464,11 +9552,11 @@ msgstr "" msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:272 +#: stock/templates/stock/item.html:264 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "" @@ -9754,28 +9842,28 @@ msgstr "" msgid "Location Type" msgstr "" -#: stock/templates/stock/location.html:224 +#: stock/templates/stock/location.html:226 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:225 +#: stock/templates/stock/location.html:227 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:295 +#: stock/templates/stock/location.html:299 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:317 +#: stock/templates/stock/location.html:321 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:390 +#: stock/templates/stock/location.html:394 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:401 +#: stock/templates/stock/location.html:405 msgid "Link Barcode to Stock Location" msgstr "" @@ -10199,20 +10287,20 @@ msgstr "" msgid "Pricing Settings" msgstr "" -#: templates/InvenTree/settings/pricing.html:34 +#: templates/InvenTree/settings/pricing.html:35 msgid "Exchange Rates" msgstr "" -#: templates/InvenTree/settings/pricing.html:38 +#: templates/InvenTree/settings/pricing.html:39 msgid "Update Now" msgstr "" -#: templates/InvenTree/settings/pricing.html:46 -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 msgid "Last Update" msgstr "" -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:51 msgid "Never" msgstr "" @@ -10269,8 +10357,8 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:547 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 +#: templates/js/translated/part.js:393 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:402 msgid "Delete" msgstr "" @@ -10310,12 +10398,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 -#: templates/js/translated/part.js:1645 +#: templates/js/translated/part.js:1646 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 -#: templates/js/translated/part.js:1646 +#: templates/js/translated/part.js:1647 msgid "Delete Template" msgstr "" @@ -10705,7 +10793,7 @@ msgid "Submit Bug Report" msgstr "" #: templates/about.html:91 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 +#: templates/js/translated/helpers.js:589 msgid "copy to clipboard" msgstr "" @@ -10769,7 +10857,7 @@ 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 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45 msgid "Return to Site" msgstr "" @@ -10883,15 +10971,19 @@ msgstr "" msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "" -#: templates/allauth_2fa/setup.html:23 +#: templates/allauth_2fa/setup.html:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 msgid "Step 2" msgstr "" -#: templates/allauth_2fa/setup.html:27 +#: templates/allauth_2fa/setup.html:28 msgid "Input a token generated by the app:" msgstr "" -#: templates/allauth_2fa/setup.html:37 +#: templates/allauth_2fa/setup.html:38 msgid "Verify" msgstr "" @@ -10970,7 +11062,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3217 +#: templates/js/translated/part.js:3219 msgid "Minimum Quantity" msgstr "" @@ -11058,27 +11150,27 @@ msgstr "" msgid "Delete attachments" msgstr "" -#: templates/js/translated/attachment.js:253 +#: templates/js/translated/attachment.js:260 msgid "Attachment actions" msgstr "" -#: templates/js/translated/attachment.js:275 +#: templates/js/translated/attachment.js:294 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:315 +#: templates/js/translated/attachment.js:334 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:365 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:366 +#: templates/js/translated/attachment.js:385 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:374 +#: templates/js/translated/attachment.js:393 msgid "Delete attachment" msgstr "" @@ -11359,7 +11451,7 @@ msgid "Includes variant and substitute stock" msgstr "" #: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 -#: templates/js/translated/part.js:1256 +#: templates/js/translated/part.js:1257 #: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" @@ -11686,7 +11778,7 @@ msgstr "" #: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 #: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 -#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11729,8 +11821,8 @@ msgstr "" msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 -#: templates/js/translated/part.js:1202 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:791 +#: templates/js/translated/part.js:1203 msgid "Trackable part" msgstr "" @@ -11916,7 +12008,7 @@ msgid "Delete Parameters" msgstr "" #: templates/js/translated/company.js:1191 -#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2244 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2245 msgid "Order parts" msgstr "" @@ -11933,34 +12025,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:1279 -#: templates/js/translated/company.js:1567 templates/js/translated/part.js:798 -#: templates/js/translated/part.js:1210 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Template part" msgstr "" #: templates/js/translated/company.js:1283 -#: templates/js/translated/company.js:1571 templates/js/translated/part.js:802 -#: templates/js/translated/part.js:1214 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:803 +#: templates/js/translated/part.js:1215 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1464 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1465 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1527 +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1528 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1528 +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1529 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1433 +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1434 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1549 +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1550 msgid "Delete Parameter" msgstr "" @@ -12094,23 +12186,23 @@ msgstr "" msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2499 +#: templates/js/translated/forms.js:2500 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3113 +#: templates/js/translated/forms.js:3114 msgid "Select Columns" msgstr "" @@ -12211,7 +12303,7 @@ msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 -#: templates/js/translated/part.js:1604 +#: templates/js/translated/part.js:1605 msgid "ID" msgstr "" @@ -12292,347 +12384,343 @@ msgstr "" 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 +#: templates/js/translated/part.js:333 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:355 +#: templates/js/translated/part.js:356 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:356 +#: templates/js/translated/part.js:357 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:370 +#: templates/js/translated/part.js:371 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:383 +#: templates/js/translated/part.js:384 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:388 +#: templates/js/translated/part.js:389 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:397 +#: templates/js/translated/part.js:398 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:401 +#: templates/js/translated/part.js:402 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:406 +#: templates/js/translated/part.js:407 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:430 +#: templates/js/translated/part.js:431 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:432 +#: templates/js/translated/part.js:433 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:433 +#: templates/js/translated/part.js:434 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:462 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:463 +#: templates/js/translated/part.js:464 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:474 +#: templates/js/translated/part.js:475 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:531 +#: templates/js/translated/part.js:532 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:532 +#: templates/js/translated/part.js:533 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:546 +#: templates/js/translated/part.js:547 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:548 +#: templates/js/translated/part.js:549 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:549 +#: templates/js/translated/part.js:550 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:550 +#: templates/js/translated/part.js:551 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:557 +#: templates/js/translated/part.js:558 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:593 +#: templates/js/translated/part.js:594 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:595 +#: templates/js/translated/part.js:596 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:600 +#: templates/js/translated/part.js:601 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:602 +#: templates/js/translated/part.js:603 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:619 +#: templates/js/translated/part.js:620 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:629 +#: templates/js/translated/part.js:630 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:632 +#: templates/js/translated/part.js:633 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:657 +#: templates/js/translated/part.js:658 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:685 +#: templates/js/translated/part.js:686 #: templates/js/translated/table_filters.js:747 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:688 +#: templates/js/translated/part.js:689 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:748 +#: templates/js/translated/part.js:749 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:771 +#: templates/js/translated/part.js:772 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +#: templates/js/translated/part.js:795 templates/js/translated/part.js:1207 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:806 +#: templates/js/translated/part.js:807 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:810 +#: templates/js/translated/part.js:811 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:897 +#: templates/js/translated/part.js:898 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:901 +#: templates/js/translated/part.js:902 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1050 +#: templates/js/translated/part.js:1051 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1145 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +#: templates/js/translated/part.js:1113 templates/js/translated/part.js:1155 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1281 +#: templates/js/translated/part.js:1282 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1599 +#: templates/js/translated/part.js:1600 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1662 +#: templates/js/translated/part.js:1663 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1674 +#: templates/js/translated/part.js:1675 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1682 +#: templates/js/translated/part.js:1683 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1716 +#: templates/js/translated/part.js:1717 #: templates/js/translated/purchase_order.js:1654 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1860 +#: templates/js/translated/part.js:1861 #: templates/js/translated/purchase_order.js:2153 #: templates/js/translated/return_order.js:755 #: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1906 +#: templates/js/translated/part.js:1907 #: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1970 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1991 +#: templates/js/translated/part.js:1992 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 +#: templates/js/translated/part.js:2080 templates/js/translated/part.js:2506 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2200 +#: templates/js/translated/part.js:2201 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2205 +#: templates/js/translated/part.js:2206 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2235 +#: templates/js/translated/part.js:2236 msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2286 +#: templates/js/translated/part.js:2287 msgid "part" msgstr "" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2288 msgid "parts" msgstr "" -#: templates/js/translated/part.js:2383 +#: templates/js/translated/part.js:2384 msgid "No category" msgstr "" -#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2546 +#: templates/js/translated/part.js:2547 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2644 +#: templates/js/translated/part.js:2645 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2760 +#: templates/js/translated/part.js:2761 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2776 +#: templates/js/translated/part.js:2777 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2865 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2887 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/part.js:2938 templates/js/translated/stock.js:1457 #: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2940 +#: templates/js/translated/part.js:2942 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2956 +#: templates/js/translated/part.js:2958 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2970 +#: templates/js/translated/part.js:2972 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3051 templates/js/translated/part.js:3052 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3052 +#: templates/js/translated/part.js:3054 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3058 +#: templates/js/translated/part.js:3060 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3108 +#: templates/js/translated/part.js:3110 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3114 +#: templates/js/translated/part.js:3116 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3210 +#: templates/js/translated/part.js:3212 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3226 +#: templates/js/translated/part.js:3228 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3271 +#: templates/js/translated/part.js:3273 msgid "Minimum Stock Level" msgstr "" @@ -13240,10 +13328,6 @@ msgstr "" 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 "" @@ -13412,7 +13496,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:401 +#: templates/js/translated/stock.js:1042 users/models.py:392 msgid "Add" msgstr "" @@ -14303,34 +14387,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:384 +#: users/models.py:375 msgid "Permission set" msgstr "" -#: users/models.py:393 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "View" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "Permission to view items" msgstr "" -#: users/models.py:401 +#: users/models.py:392 msgid "Permission to add items" msgstr "" -#: users/models.py:405 +#: users/models.py:396 msgid "Change" msgstr "" -#: users/models.py:407 +#: users/models.py:398 msgid "Permissions to edit items" msgstr "" -#: users/models.py:413 +#: users/models.py:404 msgid "Permission to delete items" msgstr "" + diff --git a/src/backend/InvenTree/locale/sv/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/sv/LC_MESSAGES/django.po index 007bbf6fa5..7623cdf051 100644 --- a/src/backend/InvenTree/locale/sv/LC_MESSAGES/django.po +++ b/src/backend/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-05-31 07:08+0000\n" -"PO-Revision-Date: 2024-05-27 11:54\n" +"POT-Creation-Date: 2024-06-26 03:18+0000\n" +"PO-Revision-Date: 2024-06-26 06:04\n" "Last-Translator: \n" "Language-Team: Swedish\n" "Language: sv_SE\n" @@ -21,7 +21,7 @@ msgstr "" msgid "API endpoint not found" msgstr "API-slutpunkt hittades inte" -#: InvenTree/api.py:536 +#: InvenTree/api.py:520 msgid "User does not have permission to view this model" msgstr "Användaren har inte behörighet att se denna modell" @@ -52,25 +52,25 @@ msgstr "Ogiltigt antal angivet ({exc})" msgid "Error details can be found in the admin panel" msgstr "Information om felet finns under Error i adminpanelen" -#: InvenTree/fields.py:139 +#: InvenTree/fields.py:136 msgid "Enter date" msgstr "Ange datum" -#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 -#: build/serializers.py:531 build/templates/build/sidebar.html:21 -#: company/models.py:849 company/templates/company/sidebar.html:37 -#: order/models.py:1332 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:205 InvenTree/models.py:918 build/serializers.py:452 +#: build/serializers.py:530 build/templates/build/sidebar.html:21 +#: company/models.py:817 company/templates/company/sidebar.html:37 +#: order/models.py:1296 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:3218 part/templates/part/part_sidebar.html:63 +#: part/models.py:3183 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_report.html:172 -#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 -#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 -#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 -#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:230 stock/models.py:2309 stock/models.py:2431 +#: stock/serializers.py:632 stock/serializers.py:790 stock/serializers.py:886 +#: stock/serializers.py:936 stock/serializers.py:1239 stock/serializers.py:1328 +#: stock/serializers.py:1493 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1080 +#: templates/js/translated/part.js:1081 #: templates/js/translated/purchase_order.js:2200 #: templates/js/translated/return_order.js:775 #: templates/js/translated/sales_order.js:1103 @@ -120,15 +120,15 @@ msgstr "Bekräfta e-postadress" msgid "You must type the same email each time." msgstr "Du måste ange samma e-post varje gång." -#: InvenTree/forms.py:253 InvenTree/forms.py:261 +#: InvenTree/forms.py:248 InvenTree/forms.py:256 msgid "The provided primary email address is not valid." msgstr "Den angivna primära e-postadressen är inte giltig." -#: InvenTree/forms.py:268 +#: InvenTree/forms.py:263 msgid "The provided email domain is not approved." msgstr "Den angivna e-postdomänen är inte godkänd." -#: InvenTree/forms.py:395 +#: InvenTree/forms.py:390 msgid "Registration is disabled." msgstr "Registrering är stängd." @@ -171,35 +171,35 @@ msgstr "" msgid "Remove HTML tags from this value" msgstr "Ta bort HTML-taggar från detta värde" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Connection error" msgstr "Anslutningsfel" -#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 msgid "Server responded with invalid status code" msgstr "Servern svarade med ogiltig statuskod" -#: InvenTree/helpers_model.py:158 +#: InvenTree/helpers_model.py:148 msgid "Exception occurred" msgstr "Undantag inträffade" -#: InvenTree/helpers_model.py:168 +#: InvenTree/helpers_model.py:158 msgid "Server responded with invalid Content-Length value" msgstr "Servern svarade med ogiltigt innehållslängdsvärde" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:161 msgid "Image size is too large" msgstr "Bilden är för stor" -#: InvenTree/helpers_model.py:183 +#: InvenTree/helpers_model.py:173 msgid "Image download exceeded maximum size" msgstr "Nedladdning av bilder överskred maximal storlek" -#: InvenTree/helpers_model.py:188 +#: InvenTree/helpers_model.py:178 msgid "Remote server returned empty response" msgstr "Fjärrservern returnerade tomt svar" -#: InvenTree/helpers_model.py:196 +#: InvenTree/helpers_model.py:186 msgid "Supplied URL is not a valid image file" msgstr "Angiven URL är inte en giltig bildfil" @@ -296,46 +296,50 @@ msgid "Portuguese (Brazilian)" msgstr "Portugisiska (brasiliansk)" #: InvenTree/locales.py:41 +msgid "Romanian" +msgstr "Rumänska" + +#: InvenTree/locales.py:42 msgid "Russian" msgstr "Ryska" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:43 msgid "Slovak" msgstr "Slovakiska" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:44 msgid "Slovenian" msgstr "Slovenska" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:45 msgid "Serbian" msgstr "Serbiska" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:46 msgid "Swedish" msgstr "Svenska" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:47 msgid "Thai" msgstr "Thailändska" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:48 msgid "Turkish" msgstr "Turkiska" -#: InvenTree/locales.py:48 +#: InvenTree/locales.py:49 msgid "Ukrainian" msgstr "Ukrainska" -#: InvenTree/locales.py:49 +#: InvenTree/locales.py:50 msgid "Vietnamese" msgstr "Vietnamesiska" -#: InvenTree/locales.py:50 +#: InvenTree/locales.py:51 msgid "Chinese (Simplified)" msgstr "Kinesiska (Förenklad)" -#: InvenTree/locales.py:51 +#: InvenTree/locales.py:52 msgid "Chinese (Traditional)" msgstr "Kinesiska (Traditionell)" @@ -344,153 +348,65 @@ msgstr "Kinesiska (Traditionell)" msgid "[{site_name}] Log in to the app" msgstr "" -#: InvenTree/magic_login.py:38 company/models.py:133 +#: InvenTree/magic_login.py:38 company/models.py:136 #: company/templates/company/company_base.html:138 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:677 msgid "Email" msgstr "E-postadress" -#: InvenTree/models.py:107 +#: InvenTree/models.py:105 msgid "Error running plugin validation" msgstr "" -#: InvenTree/models.py:176 +#: InvenTree/models.py:174 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:182 +#: InvenTree/models.py:180 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:183 +#: InvenTree/models.py:181 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:413 +#: InvenTree/models.py:408 msgid "Improperly formatted pattern" msgstr "Felaktigt formaterat mönster" -#: InvenTree/models.py:420 +#: InvenTree/models.py:415 msgid "Unknown format key specified" msgstr "Okänd formatnyckel angiven" -#: InvenTree/models.py:426 +#: InvenTree/models.py:421 msgid "Missing required format key" msgstr "Obligatorisk formatnyckel saknas" -#: InvenTree/models.py:437 +#: InvenTree/models.py:432 msgid "Reference field cannot be empty" msgstr "Textfältet kan inte lämnas tomt" -#: InvenTree/models.py:445 +#: InvenTree/models.py:440 msgid "Reference must match required pattern" msgstr "Referensen måste matcha obligatoriskt mönster" -#: InvenTree/models.py:476 +#: InvenTree/models.py:471 msgid "Reference number is too large" msgstr "Referensnumret är för stort" -#: InvenTree/models.py:550 -msgid "Missing file" -msgstr "Saknad fil" - -#: InvenTree/models.py:551 -msgid "Missing external link" -msgstr "Extern länk saknas" - -#: InvenTree/models.py:572 stock/models.py:2437 -#: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:326 -msgid "Attachment" -msgstr "Bilaga" - -#: InvenTree/models.py:573 -msgid "Select file to attach" -msgstr "Välj fil att bifoga" - -#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:831 -#: order/models.py:303 order/models.py:1337 order/models.py:1753 -#: part/admin.py:55 part/models.py:962 -#: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_report.html:164 -#: stock/admin.py:225 templates/js/translated/company.js:1319 -#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2455 -#: templates/js/translated/purchase_order.js:2040 -#: templates/js/translated/purchase_order.js:2204 -#: templates/js/translated/return_order.js:779 -#: templates/js/translated/sales_order.js:1092 -#: templates/js/translated/sales_order.js:2023 -msgid "Link" -msgstr "Länk" - -#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 -#: stock/models.py:836 -msgid "Link to external URL" -msgstr "Länk till extern URL" - -#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:341 -msgid "Comment" -msgstr "Kommentar" - -#: InvenTree/models.py:589 -msgid "File comment" -msgstr "Fil kommentar" - -#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 -#: common/models.py:2518 common/models.py:2742 common/models.py:2743 -#: common/models.py:2988 common/models.py:2989 part/models.py:3228 -#: part/models.py:3315 part/models.py:3408 part/models.py:3436 -#: plugin/models.py:259 plugin/models.py:260 -#: report/templates/report/inventree_test_report.html:105 -#: templates/js/translated/stock.js:3036 users/models.py:111 -msgid "User" -msgstr "Användare" - -#: InvenTree/models.py:602 -msgid "upload date" -msgstr "uppladdningsdatum" - -#: InvenTree/models.py:624 -msgid "Filename must not be empty" -msgstr "Filnamnet får inte vara tomt" - -#: InvenTree/models.py:635 -msgid "Invalid attachment directory" -msgstr "Ogiltig katalog för bilaga" - -#: InvenTree/models.py:665 -#, python-brace-format -msgid "Filename contains illegal character '{c}'" -msgstr "Filnamnet innehåller ogiltiga tecken '{c}'" - -#: InvenTree/models.py:668 -msgid "Filename missing extension" -msgstr "Filnamn saknar ändelse" - -#: InvenTree/models.py:677 -msgid "Attachment with this filename already exists" -msgstr "Det finns redan en bilaga med detta filnamn" - -#: InvenTree/models.py:684 -msgid "Error renaming file" -msgstr "Fel vid namnbyte av fil" - -#: InvenTree/models.py:860 +#: InvenTree/models.py:719 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:877 +#: InvenTree/models.py:736 msgid "Invalid choice" msgstr "Ogiltigt val" -#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 -#: common/serializers.py:403 company/models.py:614 machine/models.py:24 -#: part/models.py:898 part/models.py:3659 plugin/models.py:50 -#: report/models.py:149 stock/models.py:72 +#: InvenTree/models.py:766 common/models.py:2623 common/models.py:3036 +#: common/serializers.py:408 company/models.py:580 machine/models.py:24 +#: part/models.py:891 part/models.py:3639 plugin/models.py:51 +#: report/models.py:150 stock/models.py:73 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:83 @@ -501,25 +417,25 @@ msgstr "Ogiltigt val" #: templates/js/translated/company.js:724 #: templates/js/translated/company.js:913 #: templates/js/translated/company.js:1165 -#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 -#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1187 +#: templates/js/translated/part.js:1475 templates/js/translated/part.js:1611 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Namn" -#: InvenTree/models.py:913 build/models.py:218 -#: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:523 company/models.py:840 +#: InvenTree/models.py:772 build/models.py:220 +#: build/templates/build/detail.html:24 common/models.py:138 +#: company/models.py:509 company/models.py:808 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 order/models.py:289 -#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 -#: part/models.py:3674 part/templates/part/category.html:82 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:914 +#: part/models.py:3654 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:155 -#: report/models.py:509 report/models.py:535 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 #: report/templates/report/inventree_build_order_report.html:117 -#: stock/admin.py:55 stock/models.py:78 stock/templates/stock/location.html:125 +#: stock/admin.py:54 stock/models.py:79 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 @@ -528,10 +444,10 @@ msgstr "Namn" #: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 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:2354 -#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1239 +#: templates/js/translated/part.js:1484 templates/js/translated/part.js:1622 +#: templates/js/translated/part.js:1959 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2897 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1706 #: templates/js/translated/purchase_order.js:1849 @@ -544,149 +460,141 @@ msgstr "Namn" msgid "Description" msgstr "Beskrivning" -#: InvenTree/models.py:914 stock/models.py:79 +#: InvenTree/models.py:773 stock/models.py:80 msgid "Description (optional)" msgstr "Beskrivning (valfritt)" -#: InvenTree/models.py:923 -msgid "parent" -msgstr "överordnad" - -#: InvenTree/models.py:929 templates/js/translated/part.js:2793 +#: InvenTree/models.py:788 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Sökväg" -#: InvenTree/models.py:1035 +#: InvenTree/models.py:918 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:1064 +#: InvenTree/models.py:947 msgid "Barcode Data" msgstr "Streckkodsdata" -#: InvenTree/models.py:1065 +#: InvenTree/models.py:948 msgid "Third party barcode data" msgstr "" -#: InvenTree/models.py:1071 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:1072 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:1125 +#: InvenTree/models.py:1008 msgid "Existing barcode found" msgstr "Befintlig streckkod hittades" -#: InvenTree/models.py:1168 +#: InvenTree/models.py:1051 msgid "Server Error" msgstr "Serverfel" -#: InvenTree/models.py:1169 +#: InvenTree/models.py:1052 msgid "An error has been logged by the server." msgstr "Ett fel har loggats av servern." -#: InvenTree/serializers.py:62 part/models.py:4212 +#: InvenTree/serializers.py:63 part/models.py:4192 msgid "Must be a valid number" msgstr "Måste vara ett giltigt nummer" -#: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:3036 +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3001 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Valuta" -#: InvenTree/serializers.py:102 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "Välj valuta från tillgängliga alternativ" -#: InvenTree/serializers.py:441 +#: InvenTree/serializers.py:442 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:453 +#: InvenTree/serializers.py:454 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:472 +#: InvenTree/serializers.py:473 msgid "Your account has been created." msgstr "Ditt konto har skapats." -#: InvenTree/serializers.py:474 +#: InvenTree/serializers.py:475 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:481 +#: InvenTree/serializers.py:482 msgid "Welcome to InvenTree" msgstr "Välkommen till InvenTree" -#: InvenTree/serializers.py:542 -msgid "Filename" -msgstr "Filnamn" - -#: InvenTree/serializers.py:576 +#: InvenTree/serializers.py:540 msgid "Invalid value" msgstr "Ogiltigt värde" -#: InvenTree/serializers.py:596 +#: InvenTree/serializers.py:560 msgid "Data File" msgstr "Datafil" -#: InvenTree/serializers.py:597 +#: InvenTree/serializers.py:561 msgid "Select data file for upload" msgstr "Välj fil för uppladdning" -#: InvenTree/serializers.py:614 +#: InvenTree/serializers.py:578 msgid "Unsupported file type" msgstr "Filtypen stöds inte" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:584 msgid "File is too large" msgstr "Filen är för stor" -#: InvenTree/serializers.py:641 +#: InvenTree/serializers.py:605 msgid "No columns found in file" msgstr "Inga kolumner hittades i filen" -#: InvenTree/serializers.py:644 +#: InvenTree/serializers.py:608 msgid "No data rows found in file" msgstr "Inga rader hittades i filen" -#: InvenTree/serializers.py:757 +#: InvenTree/serializers.py:721 msgid "No data rows provided" msgstr "Inga rader angivna" -#: InvenTree/serializers.py:760 +#: InvenTree/serializers.py:724 msgid "No data columns supplied" msgstr "Inga datakolumner har angetts" -#: InvenTree/serializers.py:827 +#: InvenTree/serializers.py:791 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Saknar obligatorisk kolumn: '{name}'" -#: InvenTree/serializers.py:836 +#: InvenTree/serializers.py:800 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Duplicerad kolumn: '{col}'" -#: InvenTree/serializers.py:859 +#: InvenTree/serializers.py:840 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:860 +#: InvenTree/serializers.py:841 msgid "URL of remote image file" msgstr "URL för fjärrbildsfil" -#: InvenTree/serializers.py:878 +#: InvenTree/serializers.py:859 msgid "Downloading images from remote URL is not enabled" msgstr "Nedladdning av bilder från fjärr-URL är inte aktiverad" -#: InvenTree/status.py:66 part/serializers.py:1178 +#: InvenTree/status.py:66 part/serializers.py:1174 msgid "Background worker check failed" msgstr "Kontroll av bakgrundsarbetare misslyckades" @@ -698,27 +606,27 @@ msgstr "Backend för e-post är inte konfigurerad" msgid "InvenTree system health checks failed" msgstr "InvenTree systemhälsokontroll misslyckades" -#: InvenTree/templatetags/inventree_extras.py:183 +#: InvenTree/templatetags/inventree_extras.py:184 msgid "Unknown database" msgstr "Okänd databas" -#: InvenTree/validators.py:31 InvenTree/validators.py:33 +#: InvenTree/validators.py:32 InvenTree/validators.py:34 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:39 +#: InvenTree/validators.py:40 msgid "Not a valid currency code" msgstr "Inte en giltig valutakod" -#: InvenTree/validators.py:121 InvenTree/validators.py:137 +#: InvenTree/validators.py:118 InvenTree/validators.py:134 msgid "Overage value must not be negative" msgstr "Överskott värde får inte vara negativt" -#: InvenTree/validators.py:139 +#: InvenTree/validators.py:136 msgid "Overage must not exceed 100%" msgstr "Överskott får inte överstiga 100%" -#: InvenTree/validators.py:145 +#: InvenTree/validators.py:142 msgid "Invalid value for overage" msgstr "Ogiltigt värde för överskott" @@ -750,14 +658,14 @@ 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:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: build/api.py:299 part/models.py:4070 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:300 part/models.py:4084 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4064 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2529 #: templates/js/translated/table_filters.js:186 @@ -778,30 +686,30 @@ msgstr "" msgid "Allocated" msgstr "" -#: build/api.py:311 company/models.py:904 company/serializers.py:383 +#: build/api.py:311 company/models.py:872 company/serializers.py:359 #: 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:2561 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:234 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 -#: templates/js/translated/part.js:699 +#: templates/js/translated/part.js:693 templates/js/translated/part.js:695 +#: templates/js/translated/part.js:700 #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:575 msgid "Available" msgstr "" -#: build/models.py:83 build/templates/build/build_base.html:9 +#: build/models.py:85 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_report.html:105 -#: stock/serializers.py:83 templates/email/build_order_completed.html:16 +#: stock/serializers.py:82 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:2892 msgid "Build Order" msgstr "Byggorder" -#: build/models.py:84 build/templates/build/build_base.html:13 +#: build/models.py:86 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 @@ -812,25 +720,25 @@ msgstr "Byggorder" msgid "Build Orders" msgstr "Byggordrar" -#: build/models.py:131 +#: build/models.py:133 msgid "Invalid choice for parent build" msgstr "Ogiltigt val för överordnad bygge" -#: build/models.py:142 order/models.py:240 +#: build/models.py:144 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "" -#: build/models.py:148 +#: build/models.py:150 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:209 +#: build/models.py:211 msgid "Build Order Reference" msgstr "Byggorderreferens" -#: build/models.py:210 order/models.py:463 order/models.py:928 -#: order/models.py:1325 order/models.py:2056 part/admin.py:419 -#: part/models.py:4105 part/templates/part/upload_bom.html:54 +#: build/models.py:212 order/models.py:463 order/models.py:926 +#: order/models.py:1289 order/models.py:2020 part/admin.py:411 +#: part/models.py:4085 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_purchase_order_report.html:28 #: report/templates/report/inventree_return_order_report.html:26 @@ -844,27 +752,27 @@ msgstr "Byggorderreferens" msgid "Reference" msgstr "Referens" -#: build/models.py:221 +#: build/models.py:223 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:229 build/templates/build/build_base.html:183 +#: build/models.py:231 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Överordnat Bygge" -#: build/models.py:230 +#: build/models.py:232 msgid "BuildOrder to which this build is allocated" msgstr "Byggorder till vilken detta bygge är tilldelad" -#: build/models.py:235 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 -#: order/models.py:1450 order/models.py:1595 order/models.py:1596 -#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 -#: part/models.py:3191 part/models.py:3335 part/models.py:3358 -#: part/models.py:3379 part/models.py:3401 part/models.py:3511 -#: part/models.py:3807 part/models.py:3963 part/models.py:4056 -#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 +#: build/models.py:237 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1026 order/api.py:805 +#: order/models.py:1414 order/models.py:1559 order/models.py:1560 +#: part/api.py:1494 part/api.py:1788 part/models.py:395 part/models.py:3012 +#: part/models.py:3156 part/models.py:3303 part/models.py:3324 +#: part/models.py:3346 part/models.py:3477 part/models.py:3787 +#: part/models.py:3943 part/models.py:4036 part/models.py:4395 +#: part/serializers.py:1120 part/serializers.py:1726 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -875,8 +783,8 @@ msgstr "Byggorder till vilken detta bygge är tilldelad" #: report/templates/report/inventree_return_order_report.html:24 #: report/templates/report/inventree_sales_order_report.html:27 #: report/templates/report/inventree_stock_location_report.html:102 -#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 -#: stock/serializers.py:818 templates/InvenTree/search.html:82 +#: stock/serializers.py:109 stock/serializers.py:157 stock/serializers.py:423 +#: stock/serializers.py:820 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 @@ -889,8 +797,8 @@ msgstr "Byggorder till vilken detta bygge är tilldelad" #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 -#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2323 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:1944 templates/js/translated/part.js:2016 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 #: templates/js/translated/purchase_order.js:751 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1848 @@ -908,107 +816,107 @@ msgstr "Byggorder till vilken detta bygge är tilldelad" msgid "Part" msgstr "Del" -#: build/models.py:243 +#: build/models.py:245 msgid "Select part to build" msgstr "Välj del att bygga" -#: build/models.py:248 +#: build/models.py:250 msgid "Sales Order Reference" msgstr "Försäljningsorderreferens" -#: build/models.py:252 +#: build/models.py:254 msgid "SalesOrder to which this build is allocated" msgstr "Försäljningsorder till vilken detta bygge allokeras" -#: build/models.py:257 build/serializers.py:1000 +#: build/models.py:259 build/serializers.py:999 #: templates/js/translated/build.js:1731 #: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "Källa Plats" -#: build/models.py:261 +#: build/models.py:263 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:266 +#: build/models.py:268 msgid "Destination Location" msgstr "Destinationsplats" -#: build/models.py:270 +#: build/models.py:272 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:274 +#: build/models.py:276 msgid "Build Quantity" msgstr "Bygg kvantitet" -#: build/models.py:277 +#: build/models.py:279 msgid "Number of stock items to build" msgstr "Antal lagerobjekt att bygga" -#: build/models.py:281 +#: build/models.py:283 msgid "Completed items" msgstr "Slutförda objekt" -#: build/models.py:283 +#: build/models.py:285 msgid "Number of stock items which have been completed" msgstr "Antal lagerposter som har slutförts" -#: build/models.py:287 +#: build/models.py:289 msgid "Build Status" msgstr "Byggstatus" -#: build/models.py:291 +#: build/models.py:293 msgid "Build status code" msgstr "Bygg statuskod" -#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 -#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 +#: build/models.py:302 build/serializers.py:286 order/serializers.py:580 +#: stock/models.py:838 stock/serializers.py:74 stock/serializers.py:1458 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Batchkod" -#: build/models.py:304 build/serializers.py:288 +#: build/models.py:306 build/serializers.py:287 msgid "Batch code for this build output" msgstr "Batch-kod för denna byggutdata" -#: build/models.py:307 order/models.py:316 order/serializers.py:120 -#: part/models.py:1122 part/templates/part/part_base.html:310 +#: build/models.py:309 order/models.py:316 order/serializers.py:119 +#: part/models.py:1115 part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:338 #: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "Skapad" -#: build/models.py:311 +#: build/models.py:313 msgid "Target completion date" msgstr "Datum för slutförande" -#: build/models.py:312 +#: build/models.py:314 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:315 order/models.py:521 order/models.py:2101 +#: build/models.py:317 order/models.py:521 order/models.py:2065 #: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "Slutförandedatum" -#: build/models.py:321 +#: build/models.py:323 msgid "completed by" msgstr "slutfört av" -#: build/models.py:329 templates/js/translated/build.js:2207 +#: build/models.py:331 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "Utfärdad av" -#: build/models.py:330 +#: build/models.py:332 msgid "User who issued this build order" msgstr "Användare som utfärdade denna byggorder" -#: build/models.py:338 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:145 +#: build/models.py:340 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:147 #: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:232 part/models.py:1139 +#: order/templates/order/sales_order_base.html:232 part/models.py:1132 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_report.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 @@ -1019,31 +927,36 @@ msgstr "Användare som utfärdade denna byggorder" msgid "Responsible" msgstr "Ansvarig" -#: build/models.py:339 +#: build/models.py:341 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:344 build/templates/build/detail.html:108 +#: build/models.py:346 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:184 -#: part/templates/part/part_base.html:383 stock/models.py:836 +#: part/templates/part/part_base.html:383 stock/models.py:834 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "Extern länk" -#: build/models.py:349 +#: build/models.py:347 common/models.py:3178 part/models.py:956 +#: stock/models.py:834 +msgid "Link to external URL" +msgstr "Länk till extern URL" + +#: build/models.py:351 msgid "Build Priority" msgstr "" -#: build/models.py:352 +#: build/models.py:354 msgid "Priority of this build order" msgstr "" -#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: build/models.py:361 common/models.py:131 order/admin.py:18 #: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 #: templates/js/translated/build.js:2144 #: templates/js/translated/purchase_order.js:1710 @@ -1054,65 +967,65 @@ msgstr "" msgid "Project Code" msgstr "Projektkod" -#: build/models.py:360 +#: build/models.py:362 msgid "Project code for this build order" msgstr "" -#: build/models.py:593 build/models.py:658 +#: build/models.py:595 build/models.py:660 msgid "Failed to offload task to complete build allocations" msgstr "" -#: build/models.py:615 +#: build/models.py:617 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Byggorder {build} har slutförts" -#: build/models.py:621 +#: build/models.py:623 msgid "A build order has been completed" msgstr "En byggorder har slutförts" -#: build/models.py:847 build/models.py:932 +#: build/models.py:849 build/models.py:934 msgid "No build output specified" msgstr "Ingen byggutgång angiven" -#: build/models.py:850 +#: build/models.py:852 msgid "Build output is already completed" msgstr "Byggutgång är redan slutförd" -#: build/models.py:853 +#: build/models.py:855 msgid "Build output does not match Build Order" msgstr "Byggutgång matchar inte bygg order" -#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 -#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 -#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 -#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 +#: build/models.py:938 build/serializers.py:219 build/serializers.py:268 +#: build/serializers.py:866 order/models.py:559 order/serializers.py:432 +#: order/serializers.py:575 part/serializers.py:1484 part/serializers.py:1884 +#: stock/models.py:677 stock/models.py:1495 stock/serializers.py:603 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:941 build/serializers.py:225 +#: build/models.py:943 build/serializers.py:224 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1001 build/serializers.py:548 +#: build/models.py:1003 build/serializers.py:547 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1352 +#: build/models.py:1344 msgid "Build Order Line Item" msgstr "" -#: build/models.py:1377 +#: build/models.py:1369 msgid "Build object" msgstr "" -#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 -#: build/serializers.py:254 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2539 -#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 -#: part/forms.py:48 part/models.py:3205 part/models.py:4078 +#: build/models.py:1383 build/models.py:1639 build/serializers.py:206 +#: build/serializers.py:253 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2509 +#: order/models.py:1272 order/models.py:1931 order/serializers.py:1327 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3170 part/models.py:4058 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1121,8 +1034,8 @@ msgstr "" #: report/templates/report/inventree_sales_order_report.html:29 #: report/templates/report/inventree_stock_location_report.html:104 #: report/templates/report/inventree_test_report.html:90 -#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 -#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:125 stock/serializers.py:165 stock/serializers.py:594 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1133,8 +1046,8 @@ msgstr "" #: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 #: templates/js/translated/model_renderers.js:236 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:962 +#: templates/js/translated/part.js:1812 templates/js/translated/part.js:3342 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1154,38 +1067,38 @@ msgstr "" msgid "Quantity" msgstr "Antal" -#: build/models.py:1392 +#: build/models.py:1384 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1472 +#: build/models.py:1464 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:1481 +#: build/models.py:1473 #, 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:1491 order/models.py:1918 +#: build/models.py:1483 order/models.py:1882 msgid "Stock item is over-allocated" msgstr "Lagerposten är överallokerad" -#: build/models.py:1497 order/models.py:1921 +#: build/models.py:1489 order/models.py:1885 msgid "Allocation quantity must be greater than zero" msgstr "Allokeringsmängden måste vara större än noll" -#: build/models.py:1503 +#: build/models.py:1495 msgid "Quantity must be 1 for serialized stock" msgstr "Antal måste vara 1 för serialiserat lager" -#: build/models.py:1562 +#: build/models.py:1554 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 -#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 -#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: build/models.py:1626 build/serializers.py:846 order/serializers.py:1171 +#: order/serializers.py:1192 stock/models.py:358 stock/serializers.py:91 +#: stock/serializers.py:697 stock/serializers.py:1177 stock/serializers.py:1289 #: stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 @@ -1201,70 +1114,70 @@ msgstr "" msgid "Stock Item" msgstr "Artikel i lager" -#: build/models.py:1635 +#: build/models.py:1627 msgid "Source stock item" msgstr "Källa lagervara" -#: build/models.py:1648 +#: build/models.py:1640 msgid "Stock quantity to allocate to build" msgstr "Lagersaldo att allokera för att bygga" -#: build/models.py:1656 +#: build/models.py:1648 msgid "Install into" msgstr "Installera till" -#: build/models.py:1657 +#: build/models.py:1649 msgid "Destination stock item" msgstr "Destination lagervara" -#: build/serializers.py:157 build/serializers.py:876 +#: build/serializers.py:156 build/serializers.py:875 #: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "Bygg utdata" -#: build/serializers.py:169 +#: build/serializers.py:168 msgid "Build output does not match the parent build" msgstr "Byggutdata matchar inte överordnad version" -#: build/serializers.py:173 +#: build/serializers.py:172 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:177 +#: build/serializers.py:176 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:188 +#: build/serializers.py:187 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:208 build/serializers.py:255 +#: build/serializers.py:207 build/serializers.py:254 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:276 +#: build/serializers.py:275 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:279 +#: build/serializers.py:278 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:294 order/serializers.py:589 order/serializers.py:1343 -#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:293 order/serializers.py:588 order/serializers.py:1331 +#: stock/serializers.py:614 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Serienummer" -#: build/serializers.py:295 +#: build/serializers.py:294 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 -#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 -#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 -#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 -#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 +#: build/serializers.py:299 build/serializers.py:440 build/serializers.py:512 +#: order/serializers.py:564 order/serializers.py:672 order/serializers.py:1656 +#: part/serializers.py:1140 stock/serializers.py:100 stock/serializers.py:625 +#: stock/serializers.py:785 stock/serializers.py:881 stock/serializers.py:1321 +#: stock/serializers.py:1577 stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:1001 #: templates/js/translated/build.js:2372 @@ -1280,54 +1193,54 @@ msgstr "" msgid "Location" msgstr "Plats" -#: build/serializers.py:301 +#: build/serializers.py:300 msgid "Stock location for build output" msgstr "" -#: build/serializers.py:315 +#: build/serializers.py:314 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:316 +#: build/serializers.py:315 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:331 +#: build/serializers.py:330 msgid "Serial numbers must be provided for trackable parts" msgstr "" -#: build/serializers.py:356 stock/api.py:1031 +#: build/serializers.py:355 stock/api.py:1041 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:403 build/serializers.py:465 build/serializers.py:554 +#: build/serializers.py:402 build/serializers.py:464 build/serializers.py:553 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:442 +#: build/serializers.py:441 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:448 +#: build/serializers.py:447 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:449 +#: build/serializers.py:448 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:454 +#: build/serializers.py:453 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:514 +#: build/serializers.py:513 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:520 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:952 -#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 -#: stock/serializers.py:930 stock/serializers.py:1469 +#: build/serializers.py:519 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2044 order/serializers.py:596 stock/admin.py:164 +#: stock/serializers.py:932 stock/serializers.py:1465 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 @@ -1339,188 +1252,188 @@ msgstr "" msgid "Status" msgstr "Status" -#: build/serializers.py:526 +#: build/serializers.py:525 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:527 +#: build/serializers.py:526 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:611 msgid "Consume Allocated Stock" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:612 msgid "Consume any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:619 +#: build/serializers.py:618 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:620 +#: build/serializers.py:619 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:646 msgid "Not permitted" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:647 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:648 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:679 +#: build/serializers.py:678 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:681 +#: build/serializers.py:680 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:691 +#: build/serializers.py:690 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:696 +#: build/serializers.py:695 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:697 +#: build/serializers.py:696 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:707 templates/js/translated/build.js:315 +#: build/serializers.py:706 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:712 order/serializers.py:301 order/serializers.py:1246 +#: build/serializers.py:711 order/serializers.py:300 order/serializers.py:1234 msgid "Accept Incomplete" msgstr "Acceptera ofullständig" -#: build/serializers.py:713 +#: build/serializers.py:712 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:723 templates/js/translated/build.js:319 +#: build/serializers.py:722 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:732 templates/js/translated/build.js:303 +#: build/serializers.py:731 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:770 +#: build/serializers.py:769 msgid "Build Line" msgstr "" -#: build/serializers.py:780 +#: build/serializers.py:779 msgid "Build output" msgstr "" -#: build/serializers.py:788 +#: build/serializers.py:787 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:824 +#: build/serializers.py:823 msgid "Build Line Item" msgstr "" -#: build/serializers.py:838 +#: build/serializers.py:837 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:853 stock/serializers.py:1194 +#: build/serializers.py:852 stock/serializers.py:1190 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:901 order/serializers.py:1237 +#: build/serializers.py:900 order/serializers.py:1225 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:907 +#: build/serializers.py:906 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:914 +#: build/serializers.py:913 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:938 order/serializers.py:1489 +#: build/serializers.py:937 order/serializers.py:1477 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:1001 +#: build/serializers.py:1000 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:1009 +#: build/serializers.py:1008 msgid "Exclude Location" msgstr "" -#: build/serializers.py:1010 +#: build/serializers.py:1009 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:1015 +#: build/serializers.py:1014 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:1016 +#: build/serializers.py:1015 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:1021 +#: build/serializers.py:1020 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:1022 +#: build/serializers.py:1021 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:1027 +#: build/serializers.py:1026 msgid "Optional Items" msgstr "" -#: build/serializers.py:1028 +#: build/serializers.py:1027 msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1050 +#: build/serializers.py:1049 msgid "Failed to start auto-allocation task" msgstr "" -#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 -#: stock/api.py:794 +#: build/serializers.py:1139 part/models.py:3953 part/models.py:4387 +#: stock/api.py:804 msgid "BOM Item" msgstr "" -#: build/serializers.py:1149 templates/js/translated/index.js:130 +#: build/serializers.py:1148 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:832 part/serializers.py:1506 +#: build/serializers.py:1153 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:828 part/serializers.py:1502 #: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 -#: templates/js/translated/build.js:2613 templates/js/translated/part.js:709 -#: templates/js/translated/part.js:2148 +#: templates/js/translated/build.js:2613 templates/js/translated/part.js:710 +#: templates/js/translated/part.js:2149 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1159 part/serializers.py:1508 +#: build/serializers.py:1158 part/serializers.py:1504 #: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 +#: build/serializers.py:1163 part/bom.py:172 part/serializers.py:1527 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1929 msgid "Available Stock" @@ -1544,7 +1457,7 @@ msgstr "Avbruten" #: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 #: order/status_codes.py:44 order/status_codes.py:69 #: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:165 report/models.py:443 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 msgid "Complete" msgstr "Slutför" @@ -1674,11 +1587,11 @@ msgstr "" #: build/templates/build/build_base.html:160 #: build/templates/build/detail.html:138 order/models.py:309 -#: order/models.py:1343 order/templates/order/order_base.html:186 +#: order/models.py:1307 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:196 #: report/templates/report/inventree_build_order_report.html:125 -#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1831 #: templates/js/translated/purchase_order.js:1739 #: templates/js/translated/purchase_order.js:2147 #: templates/js/translated/return_order.js:346 @@ -1711,8 +1624,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 -#: order/models.py:1587 order/models.py:1701 order/models.py:1855 +#: build/templates/build/detail.html:101 order/api.py:1463 order/models.py:845 +#: order/models.py:1551 order/models.py:1665 order/models.py:1819 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_report.html:135 @@ -1762,7 +1675,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1479 +#: build/templates/build/detail.html:49 order/models.py:1443 #: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "Mål" @@ -1775,7 +1688,7 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:163 +#: build/templates/build/detail.html:80 stock/admin.py:162 #: stock/templates/stock/item_base.html:162 #: templates/js/translated/build.js:1380 #: templates/js/translated/model_renderers.js:241 @@ -1894,11 +1807,11 @@ msgstr "Bilagor" msgid "Build Notes" msgstr "Bygganteckningar" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:436 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -1914,6 +1827,34 @@ msgstr "" msgid "Incomplete Outputs" msgstr "" +#: common/api.py:689 +msgid "Is Link" +msgstr "" + +#: common/api.py:697 +msgid "Is File" +msgstr "" + +#: common/api.py:739 +msgid "User does not have permission to delete this attachment" +msgstr "" + +#: common/currency.py:130 +msgid "Invalid currency code" +msgstr "" + +#: common/currency.py:132 +msgid "Duplicate currency code" +msgstr "" + +#: common/currency.py:137 +msgid "No valid currency codes provided" +msgstr "" + +#: common/currency.py:154 +msgid "No plugin" +msgstr "" + #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1952,1509 +1893,1512 @@ msgstr "{name.title()} Fil" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:71 +#: common/models.py:73 msgid "Updated" msgstr "" -#: common/models.py:72 +#: common/models.py:74 msgid "Timestamp of last update" msgstr "" -#: common/models.py:105 +#: common/models.py:107 msgid "Site URL is locked by configuration" msgstr "" -#: common/models.py:130 +#: common/models.py:132 msgid "Unique project code" msgstr "Unik projektkod" -#: common/models.py:137 +#: common/models.py:139 msgid "Project description" msgstr "Projektbeskrivning" -#: common/models.py:146 +#: common/models.py:148 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:766 +#: common/models.py:765 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:770 +#: common/models.py:769 msgid "Settings value" msgstr "" -#: common/models.py:822 +#: common/models.py:821 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:838 +#: common/models.py:837 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:846 +#: common/models.py:845 msgid "Value must be an integer value" msgstr "" -#: common/models.py:883 +#: common/models.py:882 msgid "Key string must be unique" msgstr "" -#: common/models.py:1115 +#: common/models.py:1114 msgid "No group" msgstr "Ingen grupp" -#: common/models.py:1158 -msgid "An empty domain is not allowed." -msgstr "" - -#: common/models.py:1160 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "Ogiltigt domännamn: {domain}" - -#: common/models.py:1172 -msgid "No plugin" -msgstr "" - -#: common/models.py:1260 +#: common/models.py:1213 msgid "Restart required" msgstr "Omstart krävs" -#: common/models.py:1262 +#: common/models.py:1215 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1269 +#: common/models.py:1222 msgid "Pending migrations" msgstr "" -#: common/models.py:1270 +#: common/models.py:1223 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1275 +#: common/models.py:1228 msgid "Server Instance Name" msgstr "Serverinstans (Namn)" -#: common/models.py:1277 +#: common/models.py:1230 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1281 +#: common/models.py:1234 msgid "Use instance name" msgstr "" -#: common/models.py:1282 +#: common/models.py:1235 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1287 +#: common/models.py:1240 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1288 +#: common/models.py:1241 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1293 company/models.py:108 company/models.py:109 +#: common/models.py:1246 company/models.py:111 company/models.py:112 msgid "Company name" msgstr "Företagsnamn" -#: common/models.py:1294 +#: common/models.py:1247 msgid "Internal company name" msgstr "Internt företagsnamn" -#: common/models.py:1298 +#: common/models.py:1251 msgid "Base URL" msgstr "Bas-URL" -#: common/models.py:1299 +#: common/models.py:1252 msgid "Base URL for server instance" msgstr "Bas-URL för serverinstans" -#: common/models.py:1305 +#: common/models.py:1258 msgid "Default Currency" msgstr "Standardvaluta" -#: common/models.py:1306 +#: common/models.py:1259 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1312 +#: common/models.py:1265 +msgid "Supported Currencies" +msgstr "" + +#: common/models.py:1266 +msgid "List of supported currency codes" +msgstr "" + +#: common/models.py:1272 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1314 +#: common/models.py:1274 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1317 common/models.py:1373 common/models.py:1386 -#: common/models.py:1394 common/models.py:1403 common/models.py:1412 -#: common/models.py:1620 common/models.py:1642 common/models.py:1757 -#: common/models.py:2076 +#: common/models.py:1277 common/models.py:1333 common/models.py:1346 +#: common/models.py:1354 common/models.py:1363 common/models.py:1372 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:2046 msgid "days" msgstr "dagar" -#: common/models.py:1321 +#: common/models.py:1281 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1322 +#: common/models.py:1282 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1327 +#: common/models.py:1287 msgid "Download from URL" msgstr "Ladda ner från URL" -#: common/models.py:1329 +#: common/models.py:1289 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:1335 +#: common/models.py:1295 msgid "Download Size Limit" msgstr "" -#: common/models.py:1336 +#: common/models.py:1296 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1342 +#: common/models.py:1302 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1344 +#: common/models.py:1304 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:1349 +#: common/models.py:1309 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1350 +#: common/models.py:1310 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1355 +#: common/models.py:1315 msgid "Require confirm" msgstr "Kräv bekräftelse" -#: common/models.py:1356 +#: common/models.py:1316 msgid "Require explicit user confirmation for certain action." msgstr "Kräv uttrycklig användarbekräftelse för vissa åtgärder." -#: common/models.py:1361 +#: common/models.py:1321 msgid "Tree Depth" msgstr "" -#: common/models.py:1363 +#: common/models.py:1323 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1369 +#: common/models.py:1329 msgid "Update Check Interval" msgstr "" -#: common/models.py:1370 +#: common/models.py:1330 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1376 +#: common/models.py:1336 msgid "Automatic Backup" msgstr "" -#: common/models.py:1377 +#: common/models.py:1337 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1382 +#: common/models.py:1342 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1383 +#: common/models.py:1343 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1389 +#: common/models.py:1349 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1391 +#: common/models.py:1351 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1398 +#: common/models.py:1358 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1400 +#: common/models.py:1360 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1407 +#: common/models.py:1367 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1409 +#: common/models.py:1369 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1416 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1376 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Stöd för streckkoder" -#: common/models.py:1417 +#: common/models.py:1377 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1422 +#: common/models.py:1382 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1423 +#: common/models.py:1383 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1429 +#: common/models.py:1389 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1430 +#: common/models.py:1390 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1435 +#: common/models.py:1395 msgid "Part Revisions" msgstr "" -#: common/models.py:1436 +#: common/models.py:1396 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1441 +#: common/models.py:1401 msgid "Allow Deletion from Assembly" msgstr "" -#: common/models.py:1442 +#: common/models.py:1402 msgid "Allow deletion of parts which are used in an assembly" msgstr "" -#: common/models.py:1447 +#: common/models.py:1407 msgid "IPN Regex" msgstr "" -#: common/models.py:1448 +#: common/models.py:1408 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1451 +#: common/models.py:1411 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1452 +#: common/models.py:1412 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1457 +#: common/models.py:1417 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1458 +#: common/models.py:1418 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1463 +#: common/models.py:1423 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1464 +#: common/models.py:1424 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1469 +#: common/models.py:1429 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1470 +#: common/models.py:1430 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1475 +#: common/models.py:1435 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1476 +#: common/models.py:1436 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1481 +#: common/models.py:1441 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1482 +#: common/models.py:1442 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1487 part/admin.py:108 part/models.py:3815 -#: report/models.py:293 report/models.py:360 report/serializers.py:90 -#: report/serializers.py:131 stock/serializers.py:228 +#: common/models.py:1447 part/admin.py:108 part/models.py:3795 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:227 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "Mall" -#: common/models.py:1488 +#: common/models.py:1448 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 +#: common/models.py:1453 part/admin.py:91 part/admin.py:425 part/models.py:1052 #: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" msgstr "" -#: common/models.py:1494 +#: common/models.py:1454 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1499 part/admin.py:95 part/models.py:1065 +#: common/models.py:1459 part/admin.py:95 part/models.py:1058 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1500 +#: common/models.py:1460 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1505 part/admin.py:100 part/models.py:1077 +#: common/models.py:1465 part/admin.py:100 part/models.py:1070 msgid "Purchaseable" msgstr "" -#: common/models.py:1506 +#: common/models.py:1466 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1511 part/admin.py:104 part/models.py:1083 +#: common/models.py:1471 part/admin.py:104 part/models.py:1076 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1512 +#: common/models.py:1472 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1517 part/admin.py:113 part/models.py:1071 +#: common/models.py:1477 part/admin.py:113 part/models.py:1064 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" msgstr "" -#: common/models.py:1518 +#: common/models.py:1478 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1523 part/admin.py:117 part/models.py:1093 +#: common/models.py:1483 part/admin.py:117 part/models.py:1086 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" msgstr "Virtuell" -#: common/models.py:1524 +#: common/models.py:1484 msgid "Parts are virtual by default" msgstr "Delar är virtuella som standard" -#: common/models.py:1529 +#: common/models.py:1489 msgid "Show Import in Views" msgstr "Visa import i vyer" -#: common/models.py:1530 +#: common/models.py:1490 msgid "Display the import wizard in some part views" msgstr "Visa importguiden i vissa delvyer" -#: common/models.py:1535 +#: common/models.py:1495 msgid "Show related parts" msgstr "Visa relaterade delar" -#: common/models.py:1536 +#: common/models.py:1496 msgid "Display related parts for a part" msgstr "Visa relaterade delar för en del" -#: common/models.py:1541 +#: common/models.py:1501 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1542 +#: common/models.py:1502 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1547 templates/js/translated/part.js:107 +#: common/models.py:1507 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1549 +#: common/models.py:1509 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1555 +#: common/models.py:1515 msgid "Part Name Display Format" msgstr "Visningsformat för delnamn" -#: common/models.py:1556 +#: common/models.py:1516 msgid "Format to display the part name" msgstr "Formatera för att visa artikelnamnet" -#: common/models.py:1562 +#: common/models.py:1522 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1563 +#: common/models.py:1523 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1567 +#: common/models.py:1527 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1569 +#: common/models.py:1529 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1575 +#: common/models.py:1535 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1577 +#: common/models.py:1537 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1583 +#: common/models.py:1548 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1585 +#: common/models.py:1550 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1591 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1593 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1599 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1601 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1607 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1609 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1615 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1617 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1630 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1632 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1638 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1640 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1647 +#: common/models.py:1617 msgid "Internal Prices" msgstr "Interna priser" -#: common/models.py:1648 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1653 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1655 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1661 +#: common/models.py:1631 msgid "Enable label printing" msgstr "Aktivera etikettutskrift" -#: common/models.py:1662 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "Aktivera etikettutskrift från webbgränssnittet" -#: common/models.py:1667 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "Etikettbild DPI" -#: common/models.py:1669 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1675 +#: common/models.py:1645 msgid "Enable Reports" msgstr "Aktivera rapporter" -#: common/models.py:1676 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "Aktivera generering av rapporter" -#: common/models.py:1681 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "Debugläge" -#: common/models.py:1682 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1687 +#: common/models.py:1657 msgid "Log Report Errors" msgstr "" -#: common/models.py:1688 +#: common/models.py:1658 msgid "Log errors which occur when generating reports" msgstr "" -#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:301 +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:302 msgid "Page Size" msgstr "Sidstorlek" -#: common/models.py:1694 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "Standard sidstorlek för PDF-rapporter" -#: common/models.py:1699 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "Aktivera testrapporter" -#: common/models.py:1700 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1705 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1707 +#: common/models.py:1677 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1713 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1714 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1719 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1720 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1725 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1727 +#: common/models.py:1697 msgid "Determines default behavior when a stock item is depleted" msgstr "" -#: common/models.py:1733 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1735 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1740 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1741 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1746 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1747 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1752 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1754 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1761 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1762 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1767 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1768 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1773 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1774 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1778 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1779 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1784 +#: common/models.py:1754 msgid "Check BOM when installing items" msgstr "" -#: common/models.py:1786 +#: common/models.py:1756 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "" -#: common/models.py:1792 +#: common/models.py:1762 msgid "Allow Out of Stock Transfer" msgstr "" -#: common/models.py:1794 +#: common/models.py:1764 msgid "Allow stock items which are not in stock to be transferred between stock locations" msgstr "" -#: common/models.py:1800 +#: common/models.py:1770 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1802 +#: common/models.py:1772 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1808 common/models.py:1836 common/models.py:1858 -#: common/models.py:1894 +#: common/models.py:1778 common/models.py:1806 common/models.py:1828 +#: common/models.py:1864 msgid "Require Responsible Owner" msgstr "" -#: common/models.py:1809 common/models.py:1837 common/models.py:1859 -#: common/models.py:1895 +#: common/models.py:1779 common/models.py:1807 common/models.py:1829 +#: common/models.py:1865 msgid "A responsible owner must be assigned to each order" msgstr "" -#: common/models.py:1814 +#: common/models.py:1784 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1816 +#: common/models.py:1786 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:1822 +#: common/models.py:1792 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1823 +#: common/models.py:1793 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1828 +#: common/models.py:1798 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1830 +#: common/models.py:1800 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1842 +#: common/models.py:1812 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1844 +#: common/models.py:1814 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1850 +#: common/models.py:1820 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1852 +#: common/models.py:1822 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1864 +#: common/models.py:1834 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1865 +#: common/models.py:1835 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1870 +#: common/models.py:1840 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1872 +#: common/models.py:1842 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1878 -#, fuzzy -#| msgid "A build order has been completed" +#: common/models.py:1848 msgid "Mark Shipped Orders as Complete" -msgstr "En byggorder har slutförts" +msgstr "" -#: common/models.py:1880 +#: common/models.py:1850 msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" msgstr "" -#: common/models.py:1886 +#: common/models.py:1856 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1888 +#: common/models.py:1858 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1900 +#: common/models.py:1870 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1902 +#: common/models.py:1872 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1908 +#: common/models.py:1878 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1910 +#: common/models.py:1880 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1917 +#: common/models.py:1887 msgid "Enable password forgot" msgstr "" -#: common/models.py:1918 +#: common/models.py:1888 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1923 +#: common/models.py:1893 msgid "Enable registration" msgstr "Aktivera registrering" -#: common/models.py:1924 +#: common/models.py:1894 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1929 +#: common/models.py:1899 msgid "Enable SSO" msgstr "" -#: common/models.py:1930 +#: common/models.py:1900 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1935 +#: common/models.py:1905 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1937 +#: common/models.py:1907 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1943 +#: common/models.py:1913 msgid "Email required" msgstr "" -#: common/models.py:1944 +#: common/models.py:1914 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1949 +#: common/models.py:1919 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1951 +#: common/models.py:1921 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1957 +#: common/models.py:1927 msgid "Mail twice" msgstr "" -#: common/models.py:1958 +#: common/models.py:1928 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1963 +#: common/models.py:1933 msgid "Password twice" msgstr "" -#: common/models.py:1964 +#: common/models.py:1934 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1969 +#: common/models.py:1939 msgid "Allowed domains" msgstr "Tillåtna domäner" -#: common/models.py:1971 +#: common/models.py:1941 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1977 +#: common/models.py:1947 msgid "Group on signup" msgstr "" -#: common/models.py:1978 +#: common/models.py:1948 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1983 +#: common/models.py:1953 msgid "Enforce MFA" msgstr "" -#: common/models.py:1984 +#: common/models.py:1954 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1989 +#: common/models.py:1959 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1991 +#: common/models.py:1961 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1999 +#: common/models.py:1969 msgid "Check for plugin updates" msgstr "" -#: common/models.py:2000 +#: common/models.py:1970 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:2006 +#: common/models.py:1976 msgid "Enable URL integration" msgstr "" -#: common/models.py:2007 +#: common/models.py:1977 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:2013 +#: common/models.py:1983 msgid "Enable navigation integration" msgstr "" -#: common/models.py:2014 +#: common/models.py:1984 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:2020 +#: common/models.py:1990 msgid "Enable app integration" msgstr "" -#: common/models.py:2021 +#: common/models.py:1991 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:2027 +#: common/models.py:1997 msgid "Enable schedule integration" msgstr "" -#: common/models.py:2028 +#: common/models.py:1998 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:2034 +#: common/models.py:2004 msgid "Enable event integration" msgstr "" -#: common/models.py:2035 +#: common/models.py:2005 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:2041 +#: common/models.py:2011 msgid "Enable project codes" msgstr "Aktivera projektkoder" -#: common/models.py:2042 +#: common/models.py:2012 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:2047 +#: common/models.py:2017 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:2049 +#: common/models.py:2019 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:2055 +#: common/models.py:2025 msgid "Exclude External Locations" msgstr "" -#: common/models.py:2057 +#: common/models.py:2027 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:2063 +#: common/models.py:2033 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:2065 +#: common/models.py:2035 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:2071 +#: common/models.py:2041 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:2073 +#: common/models.py:2043 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:2080 +#: common/models.py:2050 msgid "Display Users full names" msgstr "" -#: common/models.py:2081 +#: common/models.py:2051 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:2086 +#: common/models.py:2056 msgid "Enable Test Station Data" msgstr "" -#: common/models.py:2087 +#: common/models.py:2057 msgid "Enable test station data collection for test results" msgstr "" -#: common/models.py:2099 common/models.py:2509 +#: common/models.py:2069 common/models.py:2479 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2142 +#: common/models.py:2112 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2144 +#: common/models.py:2114 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2150 +#: common/models.py:2120 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2151 +#: common/models.py:2121 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2156 +#: common/models.py:2126 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2157 +#: common/models.py:2127 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2162 +#: common/models.py:2132 msgid "Show latest parts" msgstr "" -#: common/models.py:2163 +#: common/models.py:2133 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2168 +#: common/models.py:2138 msgid "Show invalid BOMs" msgstr "" -#: common/models.py:2169 +#: common/models.py:2139 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2174 +#: common/models.py:2144 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2175 +#: common/models.py:2145 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2180 +#: common/models.py:2150 msgid "Show low stock" msgstr "" -#: common/models.py:2181 +#: common/models.py:2151 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2186 +#: common/models.py:2156 msgid "Show depleted stock" msgstr "" -#: common/models.py:2187 +#: common/models.py:2157 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2192 +#: common/models.py:2162 msgid "Show needed stock" msgstr "" -#: common/models.py:2193 +#: common/models.py:2163 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2198 +#: common/models.py:2168 msgid "Show expired stock" msgstr "" -#: common/models.py:2199 +#: common/models.py:2169 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2204 +#: common/models.py:2174 msgid "Show stale stock" msgstr "" -#: common/models.py:2205 +#: common/models.py:2175 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2210 +#: common/models.py:2180 msgid "Show pending builds" msgstr "" -#: common/models.py:2211 +#: common/models.py:2181 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2216 +#: common/models.py:2186 msgid "Show overdue builds" msgstr "" -#: common/models.py:2217 +#: common/models.py:2187 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2222 +#: common/models.py:2192 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2223 +#: common/models.py:2193 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2228 +#: common/models.py:2198 msgid "Show overdue POs" msgstr "" -#: common/models.py:2229 +#: common/models.py:2199 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2234 +#: common/models.py:2204 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2235 +#: common/models.py:2205 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2240 +#: common/models.py:2210 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2241 +#: common/models.py:2211 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2246 +#: common/models.py:2216 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2247 +#: common/models.py:2217 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2252 +#: common/models.py:2222 msgid "Show News" msgstr "Visa nyheter" -#: common/models.py:2253 +#: common/models.py:2223 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2258 +#: common/models.py:2228 msgid "Inline label display" msgstr "" -#: common/models.py:2260 +#: common/models.py:2230 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2266 +#: common/models.py:2236 msgid "Default label printer" msgstr "" -#: common/models.py:2268 +#: common/models.py:2238 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2274 +#: common/models.py:2244 msgid "Inline report display" msgstr "" -#: common/models.py:2276 +#: common/models.py:2246 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2282 +#: common/models.py:2252 msgid "Search Parts" msgstr "Sök efter artiklar" -#: common/models.py:2283 +#: common/models.py:2253 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2288 +#: common/models.py:2258 msgid "Search Supplier Parts" msgstr "Sök efter leverantörsartikel" -#: common/models.py:2289 +#: common/models.py:2259 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2294 +#: common/models.py:2264 msgid "Search Manufacturer Parts" msgstr "Sök efter tillverkarartikel" -#: common/models.py:2295 +#: common/models.py:2265 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2300 +#: common/models.py:2270 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2301 +#: common/models.py:2271 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2306 +#: common/models.py:2276 msgid "Search Categories" msgstr "" -#: common/models.py:2307 +#: common/models.py:2277 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2312 +#: common/models.py:2282 msgid "Search Stock" msgstr "" -#: common/models.py:2313 +#: common/models.py:2283 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2318 +#: common/models.py:2288 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2320 +#: common/models.py:2290 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2326 +#: common/models.py:2296 msgid "Search Locations" msgstr "" -#: common/models.py:2327 +#: common/models.py:2297 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2332 +#: common/models.py:2302 msgid "Search Companies" msgstr "" -#: common/models.py:2333 +#: common/models.py:2303 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2338 +#: common/models.py:2308 msgid "Search Build Orders" msgstr "" -#: common/models.py:2339 +#: common/models.py:2309 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2344 +#: common/models.py:2314 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2345 +#: common/models.py:2315 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2350 +#: common/models.py:2320 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2352 +#: common/models.py:2322 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2358 +#: common/models.py:2328 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2359 +#: common/models.py:2329 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2364 +#: common/models.py:2334 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2366 +#: common/models.py:2336 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2372 +#: common/models.py:2342 msgid "Search Return Orders" msgstr "" -#: common/models.py:2373 +#: common/models.py:2343 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2378 +#: common/models.py:2348 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2380 +#: common/models.py:2350 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2386 +#: common/models.py:2356 msgid "Search Preview Results" msgstr "" -#: common/models.py:2388 +#: common/models.py:2358 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2394 +#: common/models.py:2364 msgid "Regex Search" msgstr "" -#: common/models.py:2395 +#: common/models.py:2365 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2400 +#: common/models.py:2370 msgid "Whole Word Search" msgstr "" -#: common/models.py:2401 +#: common/models.py:2371 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2406 +#: common/models.py:2376 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2407 +#: common/models.py:2377 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2412 +#: common/models.py:2382 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2413 +#: common/models.py:2383 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2418 +#: common/models.py:2388 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2419 +#: common/models.py:2389 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2424 +#: common/models.py:2394 msgid "Date Format" msgstr "Datumformat" -#: common/models.py:2425 +#: common/models.py:2395 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2438 part/templates/part/detail.html:41 +#: common/models.py:2408 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2439 +#: common/models.py:2409 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2444 part/templates/part/detail.html:62 +#: common/models.py:2414 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2446 +#: common/models.py:2416 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2452 +#: common/models.py:2422 msgid "Table String Length" msgstr "" -#: common/models.py:2454 +#: common/models.py:2424 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2460 +#: common/models.py:2430 msgid "Default part label template" msgstr "" -#: common/models.py:2461 +#: common/models.py:2431 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2466 +#: common/models.py:2436 msgid "Default stock item template" msgstr "" -#: common/models.py:2468 +#: common/models.py:2438 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2474 +#: common/models.py:2444 msgid "Default stock location label template" msgstr "" -#: common/models.py:2476 +#: common/models.py:2446 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2482 +#: common/models.py:2452 msgid "Default build line label template" msgstr "" -#: common/models.py:2484 +#: common/models.py:2454 msgid "The build line label template to be automatically selected" msgstr "" -#: common/models.py:2490 +#: common/models.py:2460 msgid "Receive error reports" msgstr "" -#: common/models.py:2491 +#: common/models.py:2461 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2496 +#: common/models.py:2466 msgid "Last used printing machines" msgstr "" -#: common/models.py:2497 +#: common/models.py:2467 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2540 +#: common/models.py:2487 common/models.py:2488 common/models.py:2636 +#: common/models.py:2637 common/models.py:2882 common/models.py:2883 +#: common/models.py:3193 common/models.py:3194 part/models.py:3193 +#: part/models.py:3280 part/models.py:3353 part/models.py:3381 +#: plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "Användare" + +#: common/models.py:2510 msgid "Price break quantity" msgstr "" -#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1382 order/models.py:2301 -#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 +#: common/models.py:2517 company/serializers.py:472 order/admin.py:42 +#: order/models.py:1346 order/models.py:2265 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1886 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:740 msgid "Price" msgstr "" -#: common/models.py:2548 +#: common/models.py:2518 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2719 common/models.py:2904 +#: common/models.py:2613 common/models.py:2798 msgid "Endpoint" msgstr "" -#: common/models.py:2720 +#: common/models.py:2614 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2730 +#: common/models.py:2624 msgid "Name for this webhook" msgstr "" -#: common/models.py:2734 company/models.py:160 company/models.py:814 -#: machine/models.py:39 part/admin.py:88 part/models.py:1088 -#: plugin/models.py:65 templates/js/translated/company.js:523 +#: common/models.py:2628 company/models.py:163 company/models.py:782 +#: machine/models.py:39 part/admin.py:88 part/models.py:1081 +#: plugin/models.py:66 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3464,101 +3408,118 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2734 +#: common/models.py:2628 msgid "Is this webhook active" msgstr "" -#: common/models.py:2750 users/models.py:159 +#: common/models.py:2644 users/models.py:159 msgid "Token" msgstr "" -#: common/models.py:2751 +#: common/models.py:2645 msgid "Token for access" msgstr "" -#: common/models.py:2759 +#: common/models.py:2653 msgid "Secret" msgstr "" -#: common/models.py:2760 +#: common/models.py:2654 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2868 +#: common/models.py:2762 msgid "Message ID" msgstr "" -#: common/models.py:2869 +#: common/models.py:2763 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2877 +#: common/models.py:2771 msgid "Host" msgstr "" -#: common/models.py:2878 +#: common/models.py:2772 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2886 +#: common/models.py:2780 msgid "Header" msgstr "" -#: common/models.py:2887 +#: common/models.py:2781 msgid "Header of this message" msgstr "" -#: common/models.py:2894 +#: common/models.py:2788 msgid "Body" msgstr "" -#: common/models.py:2895 +#: common/models.py:2789 msgid "Body of this message" msgstr "" -#: common/models.py:2905 +#: common/models.py:2799 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2910 +#: common/models.py:2804 msgid "Worked on" msgstr "" -#: common/models.py:2911 +#: common/models.py:2805 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:3037 +#: common/models.py:2931 msgid "Id" msgstr "" -#: common/models.py:3039 templates/js/translated/company.js:965 +#: common/models.py:2933 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:3043 templates/js/translated/news.js:60 +#: common/models.py:2935 common/models.py:3177 company/models.py:149 +#: company/models.py:440 company/models.py:500 company/models.py:799 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +#: part/admin.py:55 part/models.py:955 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "Länk" + +#: common/models.py:2937 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:3045 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2939 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:3047 templates/js/translated/news.js:52 +#: common/models.py:2941 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Read" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Was this news item read?" msgstr "" -#: common/models.py:3067 company/models.py:156 part/models.py:972 +#: common/models.py:2961 company/models.py:159 part/models.py:965 #: 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.html:35 @@ -3568,34 +3529,89 @@ msgstr "" msgid "Image" msgstr "Bild" -#: common/models.py:3067 +#: common/models.py:2961 msgid "Image file" msgstr "" -#: common/models.py:3109 +#: common/models.py:2973 common/models.py:3161 +msgid "Target model type for this image" +msgstr "" + +#: common/models.py:2977 +msgid "Target model ID for this image" +msgstr "" + +#: common/models.py:3018 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3128 +#: common/models.py:3037 msgid "Unit name" msgstr "" -#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3044 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3136 +#: common/models.py:3045 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3052 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3144 +#: common/models.py:3053 msgid "Unit definition" msgstr "" +#: common/models.py:3111 common/models.py:3168 stock/models.py:2426 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "Bilaga" + +#: common/models.py:3123 +msgid "Missing file" +msgstr "Saknad fil" + +#: common/models.py:3124 +msgid "Missing external link" +msgstr "Extern länk saknas" + +#: common/models.py:3169 +msgid "Select file to attach" +msgstr "Välj fil att bifoga" + +#: common/models.py:3184 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "Kommentar" + +#: common/models.py:3185 +msgid "Attachment comment" +msgstr "" + +#: common/models.py:3201 +msgid "Upload date" +msgstr "" + +#: common/models.py:3202 +msgid "Date the file was uploaded" +msgstr "" + +#: common/models.py:3206 +msgid "File size" +msgstr "" + +#: common/models.py:3206 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3244 common/serializers.py:553 +msgid "Invalid model type specified for attachment" +msgstr "" + #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" @@ -3630,66 +3646,103 @@ msgstr "" msgid "Error raised by plugin" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:371 msgid "Is Running" msgstr "" -#: common/serializers.py:372 +#: common/serializers.py:377 msgid "Pending Tasks" msgstr "" -#: common/serializers.py:378 +#: common/serializers.py:383 msgid "Scheduled Tasks" msgstr "Schemalagda uppgifter" -#: common/serializers.py:384 +#: common/serializers.py:389 msgid "Failed Tasks" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Task ID" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Unique task ID" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock time" msgstr "" -#: common/serializers.py:403 +#: common/serializers.py:408 msgid "Task name" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function name" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Arguments" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Task arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Keyword Arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Task keyword arguments" msgstr "" +#: common/serializers.py:525 +msgid "Filename" +msgstr "Filnamn" + +#: common/serializers.py:532 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: common/serializers.py:559 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "" + +#: common/validators.py:33 +msgid "No attachment model type provided" +msgstr "" + +#: common/validators.py:39 +msgid "Invalid attachment model type" +msgstr "" + +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "" + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +msgstr "Ogiltigt domännamn: {domain}" + #: 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 @@ -3728,210 +3781,222 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/api.py:164 +#: company/api.py:144 msgid "Part is Active" msgstr "" -#: company/api.py:168 +#: company/api.py:148 msgid "Manufacturer is Active" msgstr "" -#: company/api.py:317 +#: company/api.py:281 msgid "Supplier Part is Active" msgstr "" -#: company/api.py:321 +#: company/api.py:285 msgid "Internal Part is Active" msgstr "" -#: company/api.py:325 +#: company/api.py:289 msgid "Supplier is Active" msgstr "" -#: company/models.py:114 +#: company/models.py:100 company/models.py:365 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:822 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "Företag" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "Företag" + +#: company/models.py:117 msgid "Company description" msgstr "Företagsbeskrivning" -#: company/models.py:115 +#: company/models.py:118 msgid "Description of the company" msgstr "" -#: company/models.py:120 company/templates/company/company_base.html:106 +#: company/models.py:123 company/templates/company/company_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:532 msgid "Website" msgstr "Webbplats" -#: company/models.py:120 +#: company/models.py:123 msgid "Company website URL" msgstr "" -#: company/models.py:125 +#: company/models.py:128 msgid "Phone number" msgstr "Telefonnummer" -#: company/models.py:127 +#: company/models.py:130 msgid "Contact phone number" msgstr "" -#: company/models.py:134 +#: company/models.py:137 msgid "Contact email address" msgstr "" -#: company/models.py:139 company/templates/company/company_base.html:145 +#: company/models.py:142 company/templates/company/company_base.html:145 #: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "Kontakt" -#: company/models.py:141 +#: company/models.py:144 msgid "Point of contact" msgstr "" -#: company/models.py:147 +#: company/models.py:150 msgid "Link to external company information" msgstr "" -#: company/models.py:160 +#: company/models.py:163 msgid "Is this company active?" msgstr "" -#: company/models.py:165 +#: company/models.py:168 msgid "is customer" msgstr "är kund" -#: company/models.py:166 +#: company/models.py:169 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:171 +#: company/models.py:174 msgid "is supplier" msgstr "" -#: company/models.py:172 +#: company/models.py:175 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:177 +#: company/models.py:180 msgid "is manufacturer" msgstr "" -#: company/models.py:178 +#: company/models.py:181 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:186 +#: company/models.py:189 msgid "Default currency used for this company" msgstr "" -#: company/models.py:273 company/models.py:382 -#: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:812 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 -msgid "Company" -msgstr "Företag" - -#: company/models.py:383 +#: company/models.py:366 msgid "Select company" msgstr "Välj företag" -#: company/models.py:388 +#: company/models.py:371 msgid "Address title" msgstr "" -#: company/models.py:389 +#: company/models.py:372 msgid "Title describing the address entry" msgstr "" -#: company/models.py:395 +#: company/models.py:378 msgid "Primary address" msgstr "Primär adress" -#: company/models.py:396 +#: company/models.py:379 msgid "Set as primary address" msgstr "" -#: company/models.py:401 templates/js/translated/company.js:914 +#: company/models.py:384 templates/js/translated/company.js:914 #: templates/js/translated/company.js:971 msgid "Line 1" msgstr "" -#: company/models.py:402 +#: company/models.py:385 msgid "Address line 1" msgstr "Adressrad 1" -#: company/models.py:408 templates/js/translated/company.js:915 +#: company/models.py:391 templates/js/translated/company.js:915 #: templates/js/translated/company.js:977 msgid "Line 2" msgstr "" -#: company/models.py:409 +#: company/models.py:392 msgid "Address line 2" msgstr "Adressrad 2" -#: company/models.py:415 company/models.py:416 +#: company/models.py:398 company/models.py:399 #: templates/js/translated/company.js:983 msgid "Postal code" msgstr "Postnummer" -#: company/models.py:422 +#: company/models.py:405 msgid "City/Region" msgstr "" -#: company/models.py:423 +#: company/models.py:406 msgid "Postal code city/region" msgstr "" -#: company/models.py:429 +#: company/models.py:412 msgid "State/Province" msgstr "" -#: company/models.py:430 +#: company/models.py:413 msgid "State or province" msgstr "" -#: company/models.py:436 templates/js/translated/company.js:1001 +#: company/models.py:419 templates/js/translated/company.js:1001 msgid "Country" msgstr "Land" -#: company/models.py:437 +#: company/models.py:420 msgid "Address country" msgstr "" -#: company/models.py:443 +#: company/models.py:426 msgid "Courier shipping notes" msgstr "" -#: company/models.py:444 +#: company/models.py:427 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:450 +#: company/models.py:433 msgid "Internal shipping notes" msgstr "" -#: company/models.py:451 +#: company/models.py:434 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:458 +#: company/models.py:441 msgid "Link to address information (external)" msgstr "" -#: company/models.py:489 company/models.py:792 stock/models.py:768 -#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 +#: company/models.py:463 company/models.py:574 company/models.py:792 +#: 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:475 company/models.py:760 stock/models.py:766 +#: stock/serializers.py:422 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:491 company/models.py:794 +#: company/models.py:477 company/models.py:762 msgid "Select part" msgstr "" -#: company/models.py:500 company/templates/company/company_base.html:82 +#: company/models.py:486 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:530 +#: company/templates/company/supplier_part.html:145 part/serializers.py:525 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -3941,152 +4006,154 @@ msgstr "" msgid "Manufacturer" msgstr "Tillverkare" -#: company/models.py:501 +#: company/models.py:487 msgid "Select manufacturer" msgstr "" -#: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:540 +#: company/models.py:493 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:535 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 -#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1801 #: templates/js/translated/purchase_order.js:1851 #: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "" -#: company/models.py:508 +#: company/models.py:494 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:515 +#: company/models.py:501 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:524 +#: company/models.py:510 msgid "Manufacturer part description" msgstr "" -#: company/models.py:581 company/models.py:608 company/models.py:824 -#: 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:615 +#: company/models.py:581 msgid "Parameter name" msgstr "" -#: company/models.py:621 report/templates/report/inventree_test_report.html:104 -#: stock/models.py:2429 templates/js/translated/company.js:1166 -#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 +#: company/models.py:587 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2418 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1493 #: templates/js/translated/stock.js:1522 msgid "Value" msgstr "" -#: company/models.py:622 +#: company/models.py:588 msgid "Parameter value" msgstr "" -#: company/models.py:629 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1052 part/models.py:3666 +#: company/models.py:595 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1045 part/models.py:3646 #: part/templates/part/part_base.html:284 -#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1512 +#: templates/js/translated/part.js:1616 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:630 +#: company/models.py:596 msgid "Parameter units" msgstr "" -#: company/models.py:732 +#: company/models.py:648 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:777 stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "" + +#: company/models.py:700 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:739 +#: company/models.py:707 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:753 +#: company/models.py:721 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/models.py:770 company/templates/company/company_base.html:87 #: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:514 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:509 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:511 -#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1769 #: templates/js/translated/pricing.js:498 #: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "Leverantör" -#: company/models.py:803 +#: company/models.py:771 msgid "Select supplier" msgstr "Välj leverantör" -#: company/models.py:809 part/serializers.py:525 +#: company/models.py:777 part/serializers.py:520 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:815 +#: company/models.py:783 msgid "Is this supplier part active?" msgstr "" -#: company/models.py:825 +#: company/models.py:793 msgid "Select manufacturer part" msgstr "" -#: company/models.py:832 +#: company/models.py:800 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:841 +#: company/models.py:809 msgid "Supplier part description" msgstr "" -#: company/models.py:848 company/templates/company/supplier_part.html:187 -#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 +#: company/models.py:816 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4093 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_purchase_order_report.html:32 #: report/templates/report/inventree_return_order_report.html:27 #: report/templates/report/inventree_sales_order_report.html:32 #: report/templates/report/inventree_stock_location_report.html:105 -#: stock/serializers.py:708 +#: stock/serializers.py:710 msgid "Note" msgstr "" -#: company/models.py:857 part/models.py:2010 +#: company/models.py:825 part/models.py:2003 msgid "base cost" msgstr "" -#: company/models.py:858 part/models.py:2011 +#: company/models.py:826 part/models.py:2004 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:865 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 +#: company/models.py:833 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:797 stock/serializers.py:1475 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 #: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "" -#: company/models.py:866 +#: company/models.py:834 msgid "Part packaging" msgstr "" -#: company/models.py:871 templates/js/translated/company.js:1651 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: company/models.py:839 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:311 #: templates/js/translated/purchase_order.js:841 #: templates/js/translated/purchase_order.js:1103 @@ -4095,35 +4162,35 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:873 +#: company/models.py:841 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:892 part/models.py:2017 +#: company/models.py:860 part/models.py:2010 msgid "multiple" msgstr "" -#: company/models.py:893 +#: company/models.py:861 msgid "Order multiple" msgstr "" -#: company/models.py:905 +#: company/models.py:873 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:911 +#: company/models.py:879 msgid "Availability Updated" msgstr "" -#: company/models.py:912 +#: company/models.py:880 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:163 +#: company/serializers.py:161 msgid "Default currency used for this supplier" msgstr "" -#: company/serializers.py:381 part/admin.py:126 +#: company/serializers.py:357 part/admin.py:126 #: part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1689 #: templates/js/translated/table_filters.js:355 @@ -4135,7 +4202,7 @@ msgstr "I lager" #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 #: templates/js/translated/model_renderers.js:312 -#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +#: templates/js/translated/part.js:815 templates/js/translated/part.js:1219 msgid "Inactive" msgstr "" @@ -4174,7 +4241,7 @@ msgstr "Radera företag" #: report/templates/report/inventree_purchase_order_report.html:40 #: report/templates/report/inventree_sales_order_report.html:40 #: report/templates/report/inventree_test_report.html:84 -#: report/templates/report/inventree_test_report.html:163 +#: report/templates/report/inventree_test_report.html:162 msgid "Part image" msgstr "" @@ -4193,10 +4260,10 @@ msgstr "" msgid "Delete image" msgstr "Radera bild" -#: company/templates/company/company_base.html:92 order/models.py:940 -#: order/models.py:2068 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:148 stock/models.py:821 -#: stock/models.py:822 stock/serializers.py:1229 +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2032 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:819 +#: stock/models.py:820 stock/serializers.py:1225 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 @@ -4407,7 +4474,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:836 +#: part/admin.py:122 part/serializers.py:832 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4427,8 +4494,8 @@ msgstr "Parametrar" msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:206 -#: templates/js/translated/part.js:1422 +#: company/templates/company/manufacturer_part.html:196 +#: templates/js/translated/part.js:1423 msgid "Add Parameter" msgstr "" @@ -4456,15 +4523,6 @@ msgstr "Kontakter" msgid "Addresses" msgstr "Adresser" -#: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:452 -#: stock/models.py:779 stock/templates/stock/item_base.html:233 -#: templates/js/translated/company.js:1600 -#: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2280 -msgid "Supplier Part" -msgstr "" - #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1526 msgid "Supplier part actions" @@ -4507,8 +4565,8 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:524 -#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: part/bom.py:311 part/serializers.py:519 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1787 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1850 #: templates/js/translated/purchase_order.js:2028 @@ -4520,12 +4578,12 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:207 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" @@ -4557,15 +4615,15 @@ msgid "Update Part Availability" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:835 part/stocktake.py:223 +#: part/serializers.py:831 part/stocktake.py:224 #: part/templates/part/category.html:183 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:916 stock/serializers.py:1080 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:918 stock/serializers.py:1091 #: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:191 #: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1061 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:206 msgid "Stock Items" @@ -4592,10 +4650,6 @@ msgstr "Kunder" msgid "New Customer" msgstr "Ny kund" -#: company/views.py:51 templates/js/translated/search.js:192 -msgid "Companies" -msgstr "Företag" - #: company/views.py:52 msgid "New Company" msgstr "Nytt företag" @@ -4616,7 +4670,7 @@ msgstr "" msgid "Connected" msgstr "" -#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: machine/machine_types/label_printer.py:235 order/api.py:1467 #: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "" @@ -4705,7 +4759,7 @@ msgstr "" msgid "Config type" msgstr "" -#: order/admin.py:30 order/models.py:89 +#: order/admin.py:30 order/models.py:90 #: report/templates/report/inventree_purchase_order_report.html:31 #: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 @@ -4714,30 +4768,30 @@ msgstr "" msgid "Total Price" msgstr "" -#: order/api.py:161 order/serializers.py:91 +#: order/api.py:157 order/serializers.py:90 #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "Orderstatus" -#: order/api.py:165 templates/js/translated/table_filters.js:194 +#: order/api.py:161 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "" -#: order/api.py:240 +#: order/api.py:236 msgid "No matching purchase order found" msgstr "" -#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 -#: order/models.py:1586 order/models.py:1700 order/models.py:1854 -#: order/models.py:2267 order/models.py:2318 +#: order/api.py:435 order/api.py:801 order/models.py:1395 order/models.py:1504 +#: order/models.py:1550 order/models.py:1664 order/models.py:1818 +#: order/models.py:2231 order/models.py:2282 #: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "" -#: order/api.py:441 order/api.py:838 +#: order/api.py:439 order/api.py:822 msgid "Order Complete" msgstr "" @@ -4745,13 +4799,13 @@ msgstr "" msgid "Order Pending" msgstr "" -#: order/api.py:1509 order/models.py:380 order/models.py:1432 -#: order/models.py:1541 order/templates/order/order_base.html:9 +#: order/api.py:1461 order/models.py:380 order/models.py:1396 +#: order/models.py:1505 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_purchase_order_report.html:14 -#: stock/serializers.py:119 stock/templates/stock/item_base.html:176 +#: stock/serializers.py:118 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/part.js:1746 templates/js/translated/pricing.js:804 #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1673 @@ -4759,8 +4813,8 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1513 order/models.py:2017 order/models.py:2268 -#: order/models.py:2319 order/templates/order/return_order_base.html:9 +#: order/api.py:1465 order/models.py:1981 order/models.py:2232 +#: order/models.py:2283 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report.html:13 #: templates/js/translated/return_order.js:280 @@ -4768,15 +4822,15 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/models.py:90 +#: order/models.py:91 msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:71 +#: order/models.py:96 order/serializers.py:70 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:72 +#: order/models.py:99 order/serializers.py:71 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -4792,7 +4846,7 @@ msgstr "" msgid "Select project code for this order" msgstr "" -#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 msgid "Link to external page" msgstr "" @@ -4816,11 +4870,11 @@ msgstr "" msgid "Company address for this order" msgstr "" -#: order/models.py:464 order/models.py:929 +#: order/models.py:464 order/models.py:927 msgid "Order reference" msgstr "" -#: order/models.py:472 order/models.py:953 +#: order/models.py:472 order/models.py:951 msgid "Purchase order status" msgstr "" @@ -4841,15 +4895,15 @@ msgstr "" msgid "received by" msgstr "" -#: order/models.py:514 order/models.py:2094 +#: order/models.py:514 order/models.py:2058 msgid "Issue Date" msgstr "" -#: order/models.py:515 order/models.py:2095 +#: order/models.py:515 order/models.py:2059 msgid "Date order was issued" msgstr "" -#: order/models.py:522 order/models.py:2102 +#: order/models.py:522 order/models.py:2066 msgid "Date order was completed" msgstr "" @@ -4861,96 +4915,94 @@ msgstr "" msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:941 +#: order/models.py:939 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:964 order/models.py:2087 +#: order/models.py:962 order/models.py:2051 msgid "Customer Reference " msgstr "" -#: order/models.py:965 order/models.py:2088 +#: order/models.py:963 order/models.py:2052 msgid "Customer order reference code" msgstr "" -#: order/models.py:969 order/models.py:1707 +#: order/models.py:967 order/models.py:1671 #: templates/js/translated/sales_order.js:879 #: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "" -#: order/models.py:978 +#: order/models.py:976 msgid "shipped by" msgstr "" -#: order/models.py:1027 -#, fuzzy -#| msgid "Build output is already completed" +#: order/models.py:1025 msgid "Order is already complete" -msgstr "Byggutgång är redan slutförd" +msgstr "" -#: order/models.py:1030 +#: order/models.py:1028 msgid "Order is already cancelled" msgstr "" -#: order/models.py:1034 +#: order/models.py:1032 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:1038 +#: order/models.py:1036 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:1043 +#: order/models.py:1041 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1309 +#: order/models.py:1273 msgid "Item quantity" msgstr "" -#: order/models.py:1326 +#: order/models.py:1290 msgid "Line item reference" msgstr "" -#: order/models.py:1333 +#: order/models.py:1297 msgid "Line item notes" msgstr "" -#: order/models.py:1345 +#: order/models.py:1309 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1366 +#: order/models.py:1330 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1372 +#: order/models.py:1336 msgid "Context" msgstr "" -#: order/models.py:1373 +#: order/models.py:1337 msgid "Additional context for this line" msgstr "" -#: order/models.py:1383 +#: order/models.py:1347 msgid "Unit price" msgstr "" -#: order/models.py:1416 +#: order/models.py:1380 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1423 +#: order/models.py:1387 msgid "deleted" msgstr "" -#: order/models.py:1451 +#: order/models.py:1415 msgid "Supplier part" msgstr "" -#: order/models.py:1458 order/templates/order/order_base.html:196 -#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: order/models.py:1422 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1870 templates/js/translated/part.js:1902 #: templates/js/translated/purchase_order.js:1306 #: templates/js/translated/purchase_order.js:2169 #: templates/js/translated/return_order.js:763 @@ -4959,196 +5011,196 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1459 +#: order/models.py:1423 msgid "Number of items received" msgstr "" -#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 +#: order/models.py:1431 stock/models.py:938 stock/serializers.py:556 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "" -#: order/models.py:1468 +#: order/models.py:1432 msgid "Unit purchase price" msgstr "" -#: order/models.py:1483 +#: order/models.py:1447 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1574 +#: order/models.py:1538 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1579 +#: order/models.py:1543 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1605 part/templates/part/part_pricing.html:107 +#: order/models.py:1569 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:1606 +#: order/models.py:1570 msgid "Unit sale price" msgstr "" -#: order/models.py:1615 order/status_codes.py:43 +#: order/models.py:1579 order/status_codes.py:43 #: templates/js/translated/sales_order.js:1559 #: templates/js/translated/sales_order.js:1680 #: templates/js/translated/sales_order.js:1993 msgid "Shipped" msgstr "Skickad" -#: order/models.py:1616 +#: order/models.py:1580 msgid "Shipped quantity" msgstr "" -#: order/models.py:1708 +#: order/models.py:1672 msgid "Date of shipment" msgstr "" -#: order/models.py:1714 templates/js/translated/sales_order.js:1072 +#: order/models.py:1678 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "Leveransdatum" -#: order/models.py:1715 +#: order/models.py:1679 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1723 +#: order/models.py:1687 msgid "Checked By" msgstr "" -#: order/models.py:1724 +#: order/models.py:1688 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 -#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 +#: order/models.py:1695 order/models.py:1908 order/serializers.py:1342 +#: order/serializers.py:1452 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "" -#: order/models.py:1732 +#: order/models.py:1696 msgid "Shipment number" msgstr "" -#: order/models.py:1740 +#: order/models.py:1704 msgid "Tracking Number" msgstr "" -#: order/models.py:1741 +#: order/models.py:1705 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1748 +#: order/models.py:1712 msgid "Invoice Number" msgstr "Fakturanummer" -#: order/models.py:1749 +#: order/models.py:1713 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1769 +#: order/models.py:1733 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1772 +#: order/models.py:1736 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1890 order/models.py:1892 +#: order/models.py:1854 order/models.py:1856 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1899 +#: order/models.py:1863 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1902 +#: order/models.py:1866 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1905 +#: order/models.py:1869 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1924 order/serializers.py:1231 +#: order/models.py:1888 order/serializers.py:1219 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1927 +#: order/models.py:1891 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1928 plugin/base/barcodes/api.py:481 +#: order/models.py:1892 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1936 +#: order/models.py:1900 msgid "Line" msgstr "" -#: order/models.py:1945 +#: order/models.py:1909 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1958 order/models.py:2275 +#: order/models.py:1922 order/models.py:2239 #: templates/js/translated/return_order.js:721 msgid "Item" msgstr "" -#: order/models.py:1959 +#: order/models.py:1923 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1968 +#: order/models.py:1932 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:2057 +#: order/models.py:2021 msgid "Return Order reference" msgstr "" -#: order/models.py:2069 +#: order/models.py:2033 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:2081 +#: order/models.py:2045 msgid "Return order status" msgstr "" -#: order/models.py:2260 +#: order/models.py:2224 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2276 +#: order/models.py:2240 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2282 +#: order/models.py:2246 msgid "Received Date" msgstr "" -#: order/models.py:2283 +#: order/models.py:2247 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2294 templates/js/translated/return_order.js:732 +#: order/models.py:2258 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2295 +#: order/models.py:2259 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2302 +#: order/models.py:2266 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/serializers.py:79 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_purchase_order_report.html:22 @@ -5157,163 +5209,163 @@ msgstr "" msgid "Line Items" msgstr "" -#: order/serializers.py:84 +#: order/serializers.py:83 msgid "Completed Lines" msgstr "" -#: order/serializers.py:287 +#: order/serializers.py:286 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:302 order/serializers.py:1247 +#: order/serializers.py:301 order/serializers.py:1235 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:312 order/serializers.py:1257 +#: order/serializers.py:311 order/serializers.py:1245 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:440 +#: order/serializers.py:439 msgid "Order is not open" msgstr "" -#: order/serializers.py:461 +#: order/serializers.py:460 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:463 +#: order/serializers.py:462 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:473 +#: order/serializers.py:472 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:478 msgid "Merge Items" msgstr "" -#: order/serializers.py:481 +#: order/serializers.py:480 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:499 +#: order/serializers.py:498 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:502 +#: order/serializers.py:501 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:510 +#: order/serializers.py:509 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:511 +#: order/serializers.py:510 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:550 order/serializers.py:1325 +#: order/serializers.py:549 order/serializers.py:1313 msgid "Line Item" msgstr "" -#: order/serializers.py:556 +#: order/serializers.py:555 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1657 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:581 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:589 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:601 templates/js/translated/barcode.js:52 +#: order/serializers.py:600 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Streckkod" -#: order/serializers.py:602 +#: order/serializers.py:601 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:618 +#: order/serializers.py:617 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:642 +#: order/serializers.py:641 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:690 order/serializers.py:1696 +#: order/serializers.py:689 order/serializers.py:1673 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:706 +#: order/serializers.py:705 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:717 +#: order/serializers.py:716 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1074 +#: order/serializers.py:1062 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1134 +#: order/serializers.py:1122 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1195 order/serializers.py:1334 +#: order/serializers.py:1183 order/serializers.py:1322 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1214 +#: order/serializers.py:1202 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1344 +#: order/serializers.py:1332 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1366 order/serializers.py:1472 +#: order/serializers.py:1354 order/serializers.py:1460 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1369 order/serializers.py:1475 +#: order/serializers.py:1357 order/serializers.py:1463 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1416 +#: order/serializers.py:1404 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1423 +#: order/serializers.py:1411 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1650 +#: order/serializers.py:1627 msgid "Return order line item" msgstr "" -#: order/serializers.py:1656 +#: order/serializers.py:1633 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1659 +#: order/serializers.py:1636 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1688 +#: order/serializers.py:1665 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1766 +#: order/serializers.py:1743 msgid "Line price currency" msgstr "" @@ -5643,7 +5695,7 @@ msgstr "" #: 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/part.js:1073 #: templates/js/translated/purchase_order.js:1752 #: templates/js/translated/return_order.js:380 #: templates/js/translated/sales_order.js:891 @@ -5739,34 +5791,34 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:406 part/models.py:3964 part/stocktake.py:218 -#: stock/admin.py:153 +#: part/admin.py:39 part/admin.py:398 part/models.py:3944 part/stocktake.py:219 +#: stock/admin.py:152 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 -#: stock/admin.py:157 +#: part/admin.py:41 part/admin.py:405 part/models.py:3945 part/stocktake.py:220 +#: stock/admin.py:156 msgid "Part Name" msgstr "" -#: part/admin.py:45 part/stocktake.py:220 +#: part/admin.py:45 part/stocktake.py:221 msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:940 part/templates/part/part_base.html:269 #: report/templates/report/inventree_stock_location_report.html:103 -#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/part.js:1227 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 -#: report/models.py:161 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2346 +#: part/admin.py:50 part/models.py:949 part/templates/part/part_base.html:277 +#: report/models.py:162 templates/js/translated/part.js:1232 +#: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:319 part/models.py:929 +#: part/admin.py:53 part/admin.py:319 part/models.py:922 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "Nyckelord" @@ -5775,11 +5827,11 @@ msgstr "Nyckelord" msgid "Part Image" msgstr "" -#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:222 msgid "Category ID" msgstr "" -#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:223 msgid "Category Name" msgstr "Kategorinamn" @@ -5791,11 +5843,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:908 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1036 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5803,26 +5855,26 @@ msgstr "" 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 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:235 +#: templates/js/translated/part.js:715 templates/js/translated/part.js:2153 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3123 part/models.py:3137 -#: templates/js/translated/part.js:969 +#: part/admin.py:155 part/models.py:3088 part/models.py:3102 +#: templates/js/translated/part.js:970 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3130 part/models.py:3144 -#: templates/js/translated/part.js:979 +#: part/admin.py:158 part/models.py:3095 part/models.py:3109 +#: templates/js/translated/part.js:980 msgid "Maximum Cost" msgstr "" -#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 msgid "Parent ID" msgstr "" -#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 msgid "Parent Name" msgstr "" @@ -5831,141 +5883,149 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:325 part/models.py:393 part/serializers.py:117 -#: part/serializers.py:272 part/serializers.py:391 +#: part/admin.py:325 part/models.py:396 part/serializers.py:124 +#: part/serializers.py:267 part/serializers.py:386 #: 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:2803 templates/js/translated/search.js:130 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "Artiklar" -#: part/admin.py:386 +#: part/admin.py:378 msgid "BOM Level" msgstr "" -#: part/admin.py:389 +#: part/admin.py:381 msgid "BOM Item ID" msgstr "" -#: part/admin.py:399 +#: part/admin.py:391 msgid "Parent IPN" msgstr "" -#: part/admin.py:410 part/models.py:3966 +#: part/admin.py:402 part/models.py:3946 msgid "Part IPN" msgstr "" -#: part/admin.py:423 part/serializers.py:1278 +#: part/admin.py:415 part/serializers.py:1274 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:428 part/serializers.py:1293 +#: part/admin.py:420 part/serializers.py:1289 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:110 +#: part/api.py:104 msgid "Starred" msgstr "" -#: part/api.py:112 +#: part/api.py:106 msgid "Filter by starred categories" msgstr "" -#: part/api.py:129 stock/api.py:318 +#: part/api.py:123 stock/api.py:312 msgid "Depth" msgstr "" -#: part/api.py:129 +#: part/api.py:123 msgid "Filter by category depth" msgstr "" -#: part/api.py:147 stock/api.py:336 +#: part/api.py:141 stock/api.py:330 +msgid "Top Level" +msgstr "" + +#: part/api.py:143 +msgid "Filter by top-level categories" +msgstr "" + +#: part/api.py:156 stock/api.py:345 msgid "Cascade" msgstr "" -#: part/api.py:149 +#: part/api.py:158 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:169 +#: part/api.py:179 templates/js/translated/part.js:308 msgid "Parent" msgstr "" -#: part/api.py:171 +#: part/api.py:181 msgid "Filter by parent category" msgstr "" -#: part/api.py:204 +#: part/api.py:214 msgid "Exclude Tree" msgstr "" -#: part/api.py:206 +#: part/api.py:216 msgid "Exclude sub-categories under the specified category" msgstr "" -#: part/api.py:455 +#: part/api.py:449 msgid "Has Results" msgstr "" -#: part/api.py:622 +#: part/api.py:616 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:640 +#: part/api.py:634 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:656 +#: part/api.py:650 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:740 +#: part/api.py:734 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:887 +#: part/api.py:881 msgid "Valid" msgstr "" -#: part/api.py:888 +#: part/api.py:882 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:894 +#: part/api.py:888 msgid "This option must be selected" msgstr "" -#: part/api.py:1111 +#: part/api.py:1105 msgid "BOM Valid" msgstr "" -#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 -#: part/serializers.py:406 part/serializers.py:1134 -#: part/templates/part/part_base.html:260 stock/api.py:781 +#: part/api.py:1508 part/models.py:932 part/models.py:3374 part/models.py:3889 +#: part/serializers.py:401 part/serializers.py:1130 +#: part/templates/part/part_base.html:260 stock/api.py:791 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2376 +#: templates/js/translated/part.js:2377 msgid "Category" msgstr "Kategori" -#: part/api.py:1803 +#: part/api.py:1796 msgid "Uses" msgstr "" -#: part/bom.py:170 part/models.py:102 part/models.py:982 +#: part/bom.py:170 part/models.py:104 part/models.py:975 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 part/serializers.py:837 +#: part/bom.py:171 part/serializers.py:833 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5974,1054 +6034,1066 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 +#: part/models.py:85 part/models.py:3890 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:84 part/templates/part/category.html:136 +#: part/models.py:86 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "" -#: part/models.py:103 +#: part/models.py:105 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 +#: part/models.py:110 stock/models.py:174 templates/js/translated/part.js:2810 #: templates/js/translated/stock.js:2772 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:110 +#: part/models.py:112 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:119 +#: part/models.py:121 msgid "Default keywords" msgstr "" -#: part/models.py:120 +#: part/models.py:122 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 stock/models.py:85 stock/models.py:156 +#: part/models.py:128 stock/models.py:86 stock/models.py:157 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "Ikon" -#: part/models.py:127 stock/models.py:157 +#: part/models.py:129 stock/models.py:158 msgid "Icon (optional)" msgstr "Ikon (valfritt)" -#: part/models.py:149 +#: part/models.py:151 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:482 +#: part/models.py:485 msgid "Cannot delete this part as it is still active" msgstr "" -#: part/models.py:489 +#: part/models.py:490 msgid "Cannot delete this part as it is used in an assembly" msgstr "" -#: part/models.py:527 +#: part/models.py:528 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:575 part/models.py:582 +#: part/models.py:576 part/models.py:583 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:594 +#: part/models.py:595 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:659 +#: part/models.py:658 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:739 +#: part/models.py:736 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:844 +#: part/models.py:837 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:854 +#: part/models.py:847 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:869 +#: part/models.py:862 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:898 part/models.py:3965 +#: part/models.py:891 part/models.py:3945 msgid "Part name" msgstr "" -#: part/models.py:903 +#: part/models.py:896 msgid "Is Template" msgstr "" -#: part/models.py:904 +#: part/models.py:897 msgid "Is this part a template part?" msgstr "" -#: part/models.py:914 +#: part/models.py:907 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:922 +#: part/models.py:915 msgid "Part description (optional)" msgstr "" -#: part/models.py:930 +#: part/models.py:923 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:940 +#: part/models.py:933 msgid "Part category" msgstr "" -#: part/models.py:948 +#: part/models.py:941 msgid "Internal Part Number" msgstr "" -#: part/models.py:955 +#: part/models.py:948 msgid "Part revision or version number" msgstr "" -#: part/models.py:980 +#: part/models.py:973 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:1026 part/templates/part/part_base.html:376 +#: part/models.py:1019 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "Standardleverantör" -#: part/models.py:1027 +#: part/models.py:1020 msgid "Default supplier part" msgstr "" -#: part/models.py:1034 +#: part/models.py:1027 msgid "Default Expiry" msgstr "" -#: part/models.py:1035 +#: part/models.py:1028 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:1044 +#: part/models.py:1037 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:1053 +#: part/models.py:1046 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1060 +#: part/models.py:1053 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1066 +#: part/models.py:1059 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1072 +#: part/models.py:1065 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1078 +#: part/models.py:1071 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1084 +#: part/models.py:1077 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1088 +#: part/models.py:1081 msgid "Is this part active?" msgstr "" -#: part/models.py:1094 +#: part/models.py:1087 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1100 +#: part/models.py:1093 msgid "BOM checksum" msgstr "" -#: part/models.py:1101 +#: part/models.py:1094 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1109 +#: part/models.py:1102 msgid "BOM checked by" msgstr "" -#: part/models.py:1114 +#: part/models.py:1107 msgid "BOM checked date" msgstr "" -#: part/models.py:1130 +#: part/models.py:1123 msgid "Creation User" msgstr "" -#: part/models.py:1140 +#: part/models.py:1133 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1145 part/templates/part/part_base.html:339 +#: part/models.py:1138 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2470 +#: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:2018 +#: part/models.py:2011 msgid "Sell multiple" msgstr "" -#: part/models.py:3037 +#: part/models.py:3002 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:3053 +#: part/models.py:3018 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:3054 +#: part/models.py:3019 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:3060 +#: part/models.py:3025 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3026 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:3067 +#: part/models.py:3032 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3033 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3074 +#: part/models.py:3039 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3040 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3046 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3047 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3053 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3054 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3060 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3096 +#: part/models.py:3061 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3102 +#: part/models.py:3067 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3103 +#: part/models.py:3068 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3109 +#: part/models.py:3074 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3110 +#: part/models.py:3075 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3116 +#: part/models.py:3081 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3117 +#: part/models.py:3082 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3124 +#: part/models.py:3089 msgid "Override minimum cost" msgstr "" -#: part/models.py:3131 +#: part/models.py:3096 msgid "Override maximum cost" msgstr "" -#: part/models.py:3138 +#: part/models.py:3103 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3145 +#: part/models.py:3110 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3151 +#: part/models.py:3116 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3152 +#: part/models.py:3117 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3158 +#: part/models.py:3123 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3159 +#: part/models.py:3124 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3165 +#: part/models.py:3130 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3131 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3172 +#: part/models.py:3137 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3138 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3192 +#: part/models.py:3157 msgid "Part for stocktake" msgstr "" -#: part/models.py:3197 +#: part/models.py:3162 msgid "Item Count" msgstr "" -#: part/models.py:3198 +#: part/models.py:3163 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3206 +#: part/models.py:3171 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3210 part/models.py:3293 +#: part/models.py:3175 part/models.py:3258 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report.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/part.js:1086 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "Datum" -#: part/models.py:3211 +#: part/models.py:3176 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3219 +#: part/models.py:3184 msgid "Additional notes" msgstr "" -#: part/models.py:3229 +#: part/models.py:3194 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3235 +#: part/models.py:3200 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3236 +#: part/models.py:3201 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3242 +#: part/models.py:3207 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3243 +#: part/models.py:3208 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3264 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3300 +#: part/models.py:3265 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3270 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3306 +#: part/models.py:3271 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3316 +#: part/models.py:3281 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3478 +#: part/models.py:3423 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3489 +#: part/models.py:3444 part/models.py:3608 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3455 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3500 +#: part/models.py:3466 msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3517 templates/js/translated/part.js:2878 +#: part/models.py:3483 templates/js/translated/part.js:2880 msgid "Test Name" msgstr "" -#: part/models.py:3518 +#: part/models.py:3484 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3524 +#: part/models.py:3490 msgid "Test Key" msgstr "" -#: part/models.py:3525 +#: part/models.py:3491 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3532 +#: part/models.py:3498 msgid "Test Description" msgstr "" -#: part/models.py:3533 +#: part/models.py:3499 msgid "Enter description for this test" msgstr "" -#: part/models.py:3537 report/models.py:208 -#: templates/js/translated/part.js:2899 +#: part/models.py:3503 report/models.py:209 +#: templates/js/translated/part.js:2901 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" -#: part/models.py:3537 +#: part/models.py:3503 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3542 templates/js/translated/part.js:2907 +#: part/models.py:3508 templates/js/translated/part.js:2909 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3543 +#: part/models.py:3509 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3548 templates/js/translated/part.js:2915 +#: part/models.py:3514 templates/js/translated/part.js:2917 msgid "Requires Value" msgstr "" -#: part/models.py:3549 +#: part/models.py:3515 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3554 templates/js/translated/part.js:2922 +#: part/models.py:3520 templates/js/translated/part.js:2924 msgid "Requires Attachment" msgstr "" -#: part/models.py:3556 +#: part/models.py:3522 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3603 +#: part/models.py:3528 part/models.py:3667 templates/js/translated/part.js:1637 +msgid "Choices" +msgstr "" + +#: part/models.py:3529 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3583 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3608 +#: part/models.py:3588 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3628 -msgid "Choices must be unique" -msgstr "" - -#: part/models.py:3645 +#: part/models.py:3625 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3660 +#: part/models.py:3640 msgid "Parameter Name" msgstr "" -#: part/models.py:3667 +#: part/models.py:3647 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3675 +#: part/models.py:3655 msgid "Parameter description" msgstr "" -#: part/models.py:3681 templates/js/translated/part.js:1627 +#: part/models.py:3661 templates/js/translated/part.js:1628 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "" -#: part/models.py:3682 +#: part/models.py:3662 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3687 templates/js/translated/part.js:1636 -msgid "Choices" -msgstr "" - -#: part/models.py:3688 +#: part/models.py:3668 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3765 +#: part/models.py:3745 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3808 +#: part/models.py:3788 msgid "Parent Part" msgstr "" -#: part/models.py:3816 part/models.py:3917 part/models.py:3918 +#: part/models.py:3796 part/models.py:3897 part/models.py:3898 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3821 +#: part/models.py:3801 msgid "Data" msgstr "" -#: part/models.py:3822 +#: part/models.py:3802 msgid "Parameter Value" msgstr "" -#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3904 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3925 +#: part/models.py:3905 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3963 +#: part/models.py:3943 msgid "Part ID or part name" msgstr "" -#: part/models.py:3964 +#: part/models.py:3944 msgid "Unique part ID value" msgstr "" -#: part/models.py:3966 +#: part/models.py:3946 msgid "Part IPN value" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "Level" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "BOM level" msgstr "" -#: part/models.py:4057 +#: part/models.py:4037 msgid "Select parent part" msgstr "" -#: part/models.py:4067 +#: part/models.py:4047 msgid "Sub part" msgstr "" -#: part/models.py:4068 +#: part/models.py:4048 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4079 +#: part/models.py:4059 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4085 +#: part/models.py:4065 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4091 +#: part/models.py:4071 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4098 part/templates/part/upload_bom.html:55 +#: part/models.py:4078 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4099 +#: part/models.py:4079 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4106 +#: part/models.py:4086 msgid "BOM item reference" msgstr "" -#: part/models.py:4114 +#: part/models.py:4094 msgid "BOM item notes" msgstr "" -#: part/models.py:4120 +#: part/models.py:4100 msgid "Checksum" msgstr "" -#: part/models.py:4121 +#: part/models.py:4101 msgid "BOM line checksum" msgstr "" -#: part/models.py:4126 templates/js/translated/table_filters.js:174 +#: part/models.py:4106 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4127 +#: part/models.py:4107 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4132 part/templates/part/upload_bom.html:57 +#: part/models.py:4112 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:4133 +#: part/models.py:4113 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4138 part/templates/part/upload_bom.html:56 +#: part/models.py:4118 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4139 +#: part/models.py:4119 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4224 stock/models.py:664 +#: part/models.py:4204 stock/models.py:662 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4234 part/models.py:4236 +#: part/models.py:4214 part/models.py:4216 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4376 +#: part/models.py:4354 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4397 +#: part/models.py:4375 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4410 +#: part/models.py:4388 msgid "Parent BOM item" msgstr "" -#: part/models.py:4418 +#: part/models.py:4396 msgid "Substitute part" msgstr "" -#: part/models.py:4434 +#: part/models.py:4412 msgid "Part 1" msgstr "" -#: part/models.py:4442 +#: part/models.py:4420 msgid "Part 2" msgstr "" -#: part/models.py:4443 +#: part/models.py:4421 msgid "Select Related Part" msgstr "" -#: part/models.py:4462 +#: part/models.py:4440 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4467 +#: part/models.py:4445 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:119 part/serializers.py:141 +#: part/serializers.py:118 +msgid "Parent Category" +msgstr "" + +#: part/serializers.py:119 templates/js/translated/part.js:309 +msgid "Parent part category" +msgstr "" + +#: part/serializers.py:126 part/serializers.py:148 #: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "Underkategorier" -#: part/serializers.py:185 +#: part/serializers.py:180 msgid "Results" msgstr "" -#: part/serializers.py:186 +#: part/serializers.py:181 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 +#: part/serializers.py:205 part/serializers.py:223 stock/serializers.py:562 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:273 +#: part/serializers.py:268 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:397 +#: part/serializers.py:392 msgid "No parts selected" msgstr "" -#: part/serializers.py:407 +#: part/serializers.py:402 msgid "Select category" msgstr "Välj kategori" -#: part/serializers.py:442 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:443 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:448 +#: part/serializers.py:443 msgid "Copy Image" msgstr "Kopiera bild" -#: part/serializers.py:449 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:455 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:456 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:463 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:488 +#: part/serializers.py:483 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:490 +#: part/serializers.py:485 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:497 +#: part/serializers.py:492 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:493 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:510 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:531 +#: part/serializers.py:526 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:541 +#: part/serializers.py:536 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:548 +#: part/serializers.py:543 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:557 +#: part/serializers.py:552 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:568 +#: part/serializers.py:563 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:575 +#: part/serializers.py:570 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:834 msgid "External Stock" msgstr "" -#: part/serializers.py:840 +#: part/serializers.py:836 msgid "Unallocated Stock" msgstr "" -#: part/serializers.py:843 +#: part/serializers.py:839 msgid "Variant Stock" msgstr "" -#: part/serializers.py:873 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:471 +#: part/serializers.py:869 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:472 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:870 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:880 templates/js/translated/part.js:102 +#: part/serializers.py:876 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:881 +#: part/serializers.py:877 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:887 +#: part/serializers.py:883 msgid "Supplier Information" msgstr "" -#: part/serializers.py:888 +#: part/serializers.py:884 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:896 +#: part/serializers.py:892 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:897 +#: part/serializers.py:893 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:902 +#: part/serializers.py:898 msgid "Existing Image" msgstr "" -#: part/serializers.py:903 +#: part/serializers.py:899 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:920 +#: part/serializers.py:916 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1126 +#: part/serializers.py:1122 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1136 +#: part/serializers.py:1132 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1146 +#: part/serializers.py:1142 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1152 +#: part/serializers.py:1148 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1153 +#: part/serializers.py:1149 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1158 +#: part/serializers.py:1154 msgid "Generate Report" msgstr "Generera rapport" -#: part/serializers.py:1159 +#: part/serializers.py:1155 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1164 +#: part/serializers.py:1160 msgid "Update Parts" msgstr "" -#: part/serializers.py:1165 +#: part/serializers.py:1161 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1173 +#: part/serializers.py:1169 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1279 +#: part/serializers.py:1275 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1286 +#: part/serializers.py:1282 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1294 +#: part/serializers.py:1290 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1301 +#: part/serializers.py:1297 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1330 +#: part/serializers.py:1326 msgid "Update" msgstr "Uppdatera" -#: part/serializers.py:1331 +#: part/serializers.py:1327 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1354 +#: part/serializers.py:1350 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1361 +#: part/serializers.py:1357 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1364 +#: part/serializers.py:1360 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1727 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1739 +#: part/serializers.py:1735 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1740 +#: part/serializers.py:1736 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1745 +#: part/serializers.py:1741 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1746 +#: part/serializers.py:1742 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1747 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1752 +#: part/serializers.py:1748 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1757 +#: part/serializers.py:1753 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1758 +#: part/serializers.py:1754 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1792 +#: part/serializers.py:1788 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1793 +#: part/serializers.py:1789 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1823 +#: part/serializers.py:1819 msgid "No part column specified" msgstr "" -#: part/serializers.py:1867 +#: part/serializers.py:1863 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1870 +#: part/serializers.py:1866 msgid "No matching part found" msgstr "" -#: part/serializers.py:1873 +#: part/serializers.py:1869 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1882 +#: part/serializers.py:1878 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1890 +#: part/serializers.py:1886 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1911 +#: part/serializers.py:1907 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 +#: part/stocktake.py:225 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "" -#: part/stocktake.py:225 +#: part/stocktake.py:226 msgid "Total Cost Min" msgstr "" -#: part/stocktake.py:226 +#: part/stocktake.py:227 msgid "Total Cost Max" msgstr "" -#: part/stocktake.py:284 +#: part/stocktake.py:285 msgid "Stocktake Report Available" msgstr "" -#: part/stocktake.py:285 +#: part/stocktake.py:286 msgid "A new stocktake report is available for download" msgstr "" @@ -7155,7 +7227,7 @@ 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 +#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" @@ -7255,15 +7327,15 @@ msgstr "" msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:655 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:663 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:748 +#: part/templates/part/detail.html:750 msgid "Add Test Result Template" msgstr "" @@ -7344,7 +7416,7 @@ msgstr "" msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" msgstr "" @@ -7416,7 +7488,7 @@ 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:2443 +#: templates/js/translated/part.js:1265 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7509,8 +7581,8 @@ msgstr "" #: 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:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/part.js:1243 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 #: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7553,7 +7625,7 @@ msgstr "" msgid "Edit" msgstr "Redigera" -#: part/templates/part/prices.html:28 stock/admin.py:247 +#: part/templates/part/prices.html:28 stock/admin.py:251 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 @@ -7630,8 +7702,8 @@ msgstr "" #: part/templates/part/stock_count.html:7 #: templates/js/translated/model_renderers.js:227 -#: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 -#: templates/js/translated/part.js:2142 +#: templates/js/translated/part.js:705 templates/js/translated/part.js:2141 +#: templates/js/translated/part.js:2143 msgid "No Stock" msgstr "" @@ -8003,7 +8075,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:308 msgid "Landscape" msgstr "" @@ -8116,62 +8188,62 @@ msgstr "" msgid "Uninstalled plugin successfully" msgstr "" -#: plugin/models.py:35 +#: plugin/models.py:36 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:36 +#: plugin/models.py:37 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:42 users/models.py:100 +#: plugin/models.py:43 users/models.py:100 msgid "Key" msgstr "" -#: plugin/models.py:43 +#: plugin/models.py:44 msgid "Key of plugin" msgstr "" -#: plugin/models.py:51 +#: plugin/models.py:52 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:58 plugin/serializers.py:90 +#: plugin/models.py:59 plugin/serializers.py:90 msgid "Package Name" msgstr "" -#: plugin/models.py:60 +#: plugin/models.py:61 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:65 +#: plugin/models.py:66 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:156 templates/js/translated/table_filters.js:370 +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "" -#: plugin/models.py:165 +#: plugin/models.py:166 msgid "Sample plugin" msgstr "" -#: plugin/models.py:173 +#: plugin/models.py:174 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:181 +#: plugin/models.py:182 msgid "Package Plugin" msgstr "" -#: plugin/models.py:205 report/models.py:474 +#: plugin/models.py:220 report/models.py:475 #: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:252 +#: plugin/models.py:267 msgid "Method" msgstr "" @@ -8179,17 +8251,17 @@ msgstr "" msgid "No author found" msgstr "" -#: plugin/registry.py:597 +#: plugin/registry.py:534 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:600 +#: plugin/registry.py:537 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:602 +#: plugin/registry.py:539 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -8304,23 +8376,19 @@ msgstr "" msgid "Activate this plugin" msgstr "" -#: plugin/serializers.py:234 +#: plugin/serializers.py:226 msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:235 +#: plugin/serializers.py:227 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:77 +#: report/api.py:88 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:89 report/serializers.py:53 -msgid "Model Type" -msgstr "" - -#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/api.py:103 report/models.py:439 report/serializers.py:98 #: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 #: templates/js/translated/return_order.js:353 #: templates/js/translated/sales_order.js:887 @@ -8328,176 +8396,176 @@ msgstr "" msgid "Items" msgstr "" -#: report/api.py:168 +#: report/api.py:180 msgid "Plugin not found" msgstr "" -#: report/api.py:170 +#: report/api.py:182 msgid "Plugin is not active" msgstr "" -#: report/api.py:172 +#: report/api.py:184 msgid "Plugin does not support label printing" msgstr "" -#: report/api.py:221 +#: report/api.py:233 msgid "Invalid label dimensions" msgstr "" -#: report/api.py:236 report/api.py:316 +#: report/api.py:248 report/api.py:329 msgid "No valid items provided to template" msgstr "" -#: report/api.py:271 +#: report/api.py:283 msgid "Error printing label" msgstr "" -#: report/api.py:362 report/api.py:398 +#: report/api.py:375 report/api.py:411 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/helpers.py:41 +#: report/helpers.py:43 msgid "A4" msgstr "A4" -#: report/helpers.py:42 +#: report/helpers.py:44 msgid "A3" msgstr "A3" -#: report/helpers.py:43 +#: report/helpers.py:45 msgid "Legal" msgstr "" -#: report/helpers.py:44 +#: report/helpers.py:46 msgid "Letter" msgstr "" -#: report/models.py:118 +#: report/models.py:119 msgid "Template file with this name already exists" msgstr "" -#: report/models.py:150 +#: report/models.py:151 msgid "Template name" msgstr "" -#: report/models.py:156 +#: report/models.py:157 msgid "Template description" msgstr "" -#: report/models.py:162 +#: report/models.py:163 msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Filename Pattern" msgstr "" -#: report/models.py:203 +#: report/models.py:204 msgid "Pattern for generating filenames" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Template is enabled" msgstr "" -#: report/models.py:214 +#: report/models.py:215 msgid "Target model type for template" msgstr "" -#: report/models.py:234 +#: report/models.py:235 msgid "Filters" msgstr "" -#: report/models.py:235 +#: report/models.py:236 msgid "Template query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:294 report/models.py:361 +#: report/models.py:295 report/models.py:362 msgid "Template file" msgstr "" -#: report/models.py:302 +#: report/models.py:303 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:308 +#: report/models.py:309 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:367 +#: report/models.py:368 msgid "Width [mm]" msgstr "" -#: report/models.py:368 +#: report/models.py:369 msgid "Label width, specified in mm" msgstr "" -#: report/models.py:374 +#: report/models.py:375 msgid "Height [mm]" msgstr "" -#: report/models.py:375 +#: report/models.py:376 msgid "Label height, specified in mm" msgstr "" -#: report/models.py:438 +#: report/models.py:439 msgid "Number of items to process" msgstr "" -#: report/models.py:444 +#: report/models.py:445 msgid "Report generation is complete" msgstr "" -#: report/models.py:448 templates/js/translated/build.js:2177 +#: report/models.py:449 templates/js/translated/build.js:2177 msgid "Progress" msgstr "" -#: report/models.py:448 +#: report/models.py:449 msgid "Report generation progress" msgstr "" -#: report/models.py:456 +#: report/models.py:457 msgid "Report Template" msgstr "" -#: report/models.py:463 report/models.py:486 +#: report/models.py:464 report/models.py:487 msgid "Output File" msgstr "" -#: report/models.py:464 report/models.py:487 +#: report/models.py:465 report/models.py:488 msgid "Generated output file" msgstr "" -#: report/models.py:475 +#: report/models.py:476 msgid "Label output plugin" msgstr "" -#: report/models.py:479 +#: report/models.py:480 msgid "Label Template" msgstr "" -#: report/models.py:502 +#: report/models.py:503 msgid "Snippet" msgstr "" -#: report/models.py:503 +#: report/models.py:504 msgid "Report snippet file" msgstr "" -#: report/models.py:510 +#: report/models.py:511 msgid "Snippet file description" msgstr "" -#: report/models.py:528 +#: report/models.py:529 msgid "Asset" msgstr "" -#: report/models.py:529 +#: report/models.py:530 msgid "Report asset file" msgstr "" -#: report/models.py:536 +#: report/models.py:537 msgid "Asset file description" msgstr "" @@ -8570,8 +8638,8 @@ msgid "Total" msgstr "" #: report/templates/report/inventree_return_order_report.html:25 -#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 -#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:824 +#: stock/serializers.py:149 stock/templates/stock/item_base.html:311 #: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 #: templates/js/translated/build.js:2355 #: templates/js/translated/model_renderers.js:230 @@ -8601,32 +8669,32 @@ msgstr "" msgid "Test" msgstr "" -#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2412 msgid "Result" msgstr "" -#: report/templates/report/inventree_test_report.html:130 +#: report/templates/report/inventree_test_report.html:129 msgid "Pass" msgstr "" -#: report/templates/report/inventree_test_report.html:132 +#: report/templates/report/inventree_test_report.html:131 msgid "Fail" msgstr "" -#: report/templates/report/inventree_test_report.html:139 +#: report/templates/report/inventree_test_report.html:138 msgid "No result (required)" msgstr "" -#: report/templates/report/inventree_test_report.html:141 +#: report/templates/report/inventree_test_report.html:140 msgid "No result" msgstr "" -#: report/templates/report/inventree_test_report.html:154 +#: report/templates/report/inventree_test_report.html:153 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "" -#: report/templates/report/inventree_test_report.html:168 stock/admin.py:162 +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 #: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 #: templates/js/translated/stock.js:3110 msgid "Serial" @@ -8648,654 +8716,670 @@ msgstr "" msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:172 +#: stock/admin.py:51 stock/admin.py:171 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:176 +#: stock/admin.py:53 stock/admin.py:175 msgid "Location Name" msgstr "" -#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/admin.py:63 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:149 +#: stock/admin.py:148 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:168 +#: stock/admin.py:167 msgid "Status Code" msgstr "Statuskod" -#: stock/admin.py:180 +#: stock/admin.py:179 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:185 +#: stock/admin.py:184 +msgid "Supplier Part SKU" +msgstr "" + +#: stock/admin.py:189 msgid "Supplier ID" msgstr "" -#: stock/admin.py:191 +#: stock/admin.py:195 msgid "Supplier Name" msgstr "Leverantörsnamn" -#: stock/admin.py:196 +#: stock/admin.py:200 msgid "Customer ID" msgstr "" -#: stock/admin.py:201 stock/models.py:806 +#: stock/admin.py:205 stock/models.py:804 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:206 +#: stock/admin.py:210 msgid "Build ID" msgstr "" -#: stock/admin.py:216 +#: stock/admin.py:220 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:221 +#: stock/admin.py:225 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:236 +#: stock/admin.py:240 msgid "Review Needed" msgstr "" -#: stock/admin.py:241 +#: stock/admin.py:245 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:256 stock/models.py:900 +#: stock/admin.py:260 stock/models.py:898 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "" -#: stock/api.py:318 +#: stock/api.py:312 msgid "Filter by location depth" msgstr "" -#: stock/api.py:338 +#: stock/api.py:332 +msgid "Filter by top-level locations" +msgstr "" + +#: stock/api.py:347 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:359 +#: stock/api.py:369 stock/serializers.py:1085 msgid "Parent Location" msgstr "" -#: stock/api.py:360 +#: stock/api.py:370 msgid "Filter by parent location" msgstr "" -#: stock/api.py:615 templates/js/translated/table_filters.js:427 +#: stock/api.py:625 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:803 +#: stock/api.py:813 msgid "Part Tree" msgstr "" -#: stock/api.py:833 +#: stock/api.py:843 msgid "Expiry date before" msgstr "" -#: stock/api.py:837 +#: stock/api.py:847 msgid "Expiry date after" msgstr "" -#: stock/api.py:840 stock/templates/stock/item_base.html:439 +#: stock/api.py:850 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:927 +#: stock/api.py:937 msgid "Quantity is required" msgstr "" -#: stock/api.py:933 +#: stock/api.py:943 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:964 +#: stock/api.py:974 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:974 +#: stock/api.py:984 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:1005 +#: stock/api.py:1015 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:59 +#: stock/models.py:60 msgid "Stock Location type" msgstr "" -#: stock/models.py:60 +#: stock/models.py:61 msgid "Stock Location types" msgstr "" -#: stock/models.py:86 +#: stock/models.py:87 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:123 stock/models.py:788 +#: stock/models.py:124 stock/models.py:786 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:124 stock/templates/stock/location.html:186 +#: stock/models.py:125 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "" -#: stock/models.py:166 stock/models.py:949 +#: stock/models.py:167 stock/models.py:947 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:167 stock/models.py:950 +#: stock/models.py:168 stock/models.py:948 msgid "Select Owner" msgstr "" -#: stock/models.py:175 +#: stock/models.py:176 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:182 templates/js/translated/stock.js:2781 +#: stock/models.py:183 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:183 +#: stock/models.py:184 msgid "This is an external stock location" msgstr "" -#: stock/models.py:189 templates/js/translated/stock.js:2790 +#: stock/models.py:190 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" -#: stock/models.py:193 +#: stock/models.py:194 msgid "Stock location type of this location" msgstr "" -#: stock/models.py:262 +#: stock/models.py:261 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:643 +#: stock/models.py:641 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:670 stock/serializers.py:419 +#: stock/models.py:668 stock/serializers.py:446 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:687 +#: stock/models.py:685 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:697 stock/models.py:710 +#: stock/models.py:695 stock/models.py:708 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:700 +#: stock/models.py:698 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:724 +#: stock/models.py:722 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:729 +#: stock/models.py:727 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:742 +#: stock/models.py:740 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:758 +#: stock/models.py:756 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:770 +#: stock/models.py:768 msgid "Base part" msgstr "" -#: stock/models.py:780 +#: stock/models.py:778 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:792 +#: stock/models.py:790 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:800 stock/serializers.py:1480 +#: stock/models.py:798 stock/serializers.py:1476 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:811 +#: stock/models.py:809 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:830 +#: stock/models.py:828 msgid "Serial number for this item" msgstr "" -#: stock/models.py:844 stock/serializers.py:1463 +#: stock/models.py:842 stock/serializers.py:1459 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:849 +#: stock/models.py:847 msgid "Stock Quantity" msgstr "" -#: stock/models.py:859 +#: stock/models.py:857 msgid "Source Build" msgstr "" -#: stock/models.py:862 +#: stock/models.py:860 msgid "Build for this stock item" msgstr "" -#: stock/models.py:869 stock/templates/stock/item_base.html:363 +#: stock/models.py:867 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:872 +#: stock/models.py:870 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:881 +#: stock/models.py:879 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:885 +#: stock/models.py:883 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:891 +#: stock/models.py:889 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:902 +#: stock/models.py:900 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:920 +#: stock/models.py:918 msgid "Delete on deplete" msgstr "" -#: stock/models.py:921 +#: stock/models.py:919 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:941 +#: stock/models.py:939 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:972 +#: stock/models.py:970 msgid "Converted to part" msgstr "" -#: stock/models.py:1490 +#: stock/models.py:1486 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1496 +#: stock/models.py:1492 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1500 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1510 +#: stock/models.py:1506 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1515 +#: stock/models.py:1511 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1523 stock/serializers.py:658 +#: stock/models.py:1519 stock/serializers.py:660 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1620 +#: stock/models.py:1616 msgid "Test template does not exist" msgstr "" -#: stock/models.py:1638 +#: stock/models.py:1634 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1642 +#: stock/models.py:1638 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1645 +#: stock/models.py:1641 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1648 +#: stock/models.py:1644 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1651 +#: stock/models.py:1647 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1654 +#: stock/models.py:1650 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1661 stock/serializers.py:1369 +#: stock/models.py:1657 stock/serializers.py:1365 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1665 +#: stock/models.py:1661 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1673 +#: stock/models.py:1669 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1678 +#: stock/models.py:1674 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1905 +#: stock/models.py:1901 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2310 msgid "Entry notes" msgstr "" -#: stock/models.py:2391 +#: stock/models.py:2378 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2396 +#: stock/models.py:2383 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2423 +#: stock/models.py:2388 +msgid "Invalid value for this test" +msgstr "" + +#: stock/models.py:2412 msgid "Test result" msgstr "" -#: stock/models.py:2430 +#: stock/models.py:2419 msgid "Test output value" msgstr "" -#: stock/models.py:2438 +#: stock/models.py:2427 msgid "Test result attachment" msgstr "" -#: stock/models.py:2442 +#: stock/models.py:2431 msgid "Test notes" msgstr "" -#: stock/models.py:2450 templates/js/translated/stock.js:1548 +#: stock/models.py:2439 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2440 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2457 +#: stock/models.py:2446 msgid "Started" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2447 msgid "The timestamp of the test start" msgstr "" -#: stock/models.py:2464 +#: stock/models.py:2453 msgid "Finished" msgstr "" -#: stock/models.py:2465 +#: stock/models.py:2454 msgid "The timestamp of the test finish" msgstr "" -#: stock/serializers.py:75 +#: stock/serializers.py:74 msgid "Generated batch code" msgstr "" -#: stock/serializers.py:84 +#: stock/serializers.py:83 msgid "Select build order" msgstr "" -#: stock/serializers.py:93 +#: stock/serializers.py:92 msgid "Select stock item to generate batch code for" msgstr "" -#: stock/serializers.py:102 +#: stock/serializers.py:101 msgid "Select location to generate batch code for" msgstr "" -#: stock/serializers.py:111 +#: stock/serializers.py:110 msgid "Select part to generate batch code for" msgstr "" -#: stock/serializers.py:120 +#: stock/serializers.py:119 msgid "Select purchase order" msgstr "" -#: stock/serializers.py:127 +#: stock/serializers.py:126 msgid "Enter quantity for batch code" msgstr "" -#: stock/serializers.py:150 +#: stock/serializers.py:149 msgid "Generated serial number" msgstr "" -#: stock/serializers.py:159 +#: stock/serializers.py:158 msgid "Select part to generate serial number for" msgstr "" -#: stock/serializers.py:167 +#: stock/serializers.py:166 msgid "Quantity of serial numbers to generate" msgstr "" -#: stock/serializers.py:229 +#: stock/serializers.py:228 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:248 +#: stock/serializers.py:247 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:280 +#: stock/serializers.py:279 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:313 +#: stock/serializers.py:315 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:411 +#: stock/serializers.py:438 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:531 +#: stock/serializers.py:558 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:595 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:606 +#: stock/serializers.py:608 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:613 +#: stock/serializers.py:615 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 +#: stock/serializers.py:626 stock/serializers.py:1322 stock/serializers.py:1578 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:631 +#: stock/serializers.py:633 msgid "Optional note field" msgstr "" -#: stock/serializers.py:641 +#: stock/serializers.py:643 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:696 +#: stock/serializers.py:698 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:703 +#: stock/serializers.py:705 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:704 +#: stock/serializers.py:706 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 -#: stock/serializers.py:935 +#: stock/serializers.py:711 stock/serializers.py:791 stock/serializers.py:887 +#: stock/serializers.py:937 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:719 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:725 +#: stock/serializers.py:727 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:736 +#: stock/serializers.py:738 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:749 +#: stock/serializers.py:751 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:784 +#: stock/serializers.py:786 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:819 +#: stock/serializers.py:821 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:834 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:849 +#: stock/serializers.py:851 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:880 +#: stock/serializers.py:882 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:917 +#: stock/serializers.py:919 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:923 +#: stock/serializers.py:925 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:1019 stock/serializers.py:1082 +#: stock/serializers.py:1021 stock/serializers.py:1093 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:220 +#: stock/templates/stock/location.html:222 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1198 +#: stock/serializers.py:1086 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: stock/serializers.py:1194 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1202 +#: stock/serializers.py:1198 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1206 +#: stock/serializers.py:1202 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1230 +#: stock/serializers.py:1226 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1236 +#: stock/serializers.py:1232 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1244 +#: stock/serializers.py:1240 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1254 stock/serializers.py:1508 +#: stock/serializers.py:1250 stock/serializers.py:1504 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1333 +#: stock/serializers.py:1329 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1338 +#: stock/serializers.py:1334 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1339 +#: stock/serializers.py:1335 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1344 +#: stock/serializers.py:1340 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1345 +#: stock/serializers.py:1341 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1355 +#: stock/serializers.py:1351 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1422 +#: stock/serializers.py:1418 msgid "No Change" msgstr "" -#: stock/serializers.py:1451 +#: stock/serializers.py:1447 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1470 +#: stock/serializers.py:1466 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1498 +#: stock/serializers.py:1494 msgid "Stock transaction notes" msgstr "" @@ -9448,7 +9532,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276 msgid "Delete Test Data" msgstr "" @@ -9468,11 +9552,11 @@ msgstr "" msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:272 +#: stock/templates/stock/item.html:264 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "" @@ -9758,28 +9842,28 @@ msgstr "" msgid "Location Type" msgstr "" -#: stock/templates/stock/location.html:224 +#: stock/templates/stock/location.html:226 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:225 +#: stock/templates/stock/location.html:227 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:295 +#: stock/templates/stock/location.html:299 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:317 +#: stock/templates/stock/location.html:321 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:390 +#: stock/templates/stock/location.html:394 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:401 +#: stock/templates/stock/location.html:405 msgid "Link Barcode to Stock Location" msgstr "" @@ -10203,20 +10287,20 @@ msgstr "" msgid "Pricing Settings" msgstr "" -#: templates/InvenTree/settings/pricing.html:34 +#: templates/InvenTree/settings/pricing.html:35 msgid "Exchange Rates" msgstr "" -#: templates/InvenTree/settings/pricing.html:38 +#: templates/InvenTree/settings/pricing.html:39 msgid "Update Now" msgstr "" -#: templates/InvenTree/settings/pricing.html:46 -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 msgid "Last Update" msgstr "" -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:51 msgid "Never" msgstr "Aldrig" @@ -10273,8 +10357,8 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:547 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 +#: templates/js/translated/part.js:393 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:402 msgid "Delete" msgstr "Radera" @@ -10314,12 +10398,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 -#: templates/js/translated/part.js:1645 +#: templates/js/translated/part.js:1646 msgid "Edit Template" msgstr "Redigera mall" #: templates/InvenTree/settings/settings_staff_js.html:309 -#: templates/js/translated/part.js:1646 +#: templates/js/translated/part.js:1647 msgid "Delete Template" msgstr "Radera mall" @@ -10709,7 +10793,7 @@ msgid "Submit Bug Report" msgstr "" #: templates/about.html:91 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 +#: templates/js/translated/helpers.js:589 msgid "copy to clipboard" msgstr "" @@ -10773,7 +10857,7 @@ msgid "Are you sure you want to sign out?" msgstr "Är du säker på att du vill logga ut?" #: templates/account/logout.html:27 templates/allauth_2fa/backup_tokens.html:35 -#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:44 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45 msgid "Return to Site" msgstr "" @@ -10887,15 +10971,19 @@ msgstr "Steg 1" msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "" -#: templates/allauth_2fa/setup.html:23 +#: templates/allauth_2fa/setup.html:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 msgid "Step 2" msgstr "Steg 2" -#: templates/allauth_2fa/setup.html:27 +#: templates/allauth_2fa/setup.html:28 msgid "Input a token generated by the app:" msgstr "" -#: templates/allauth_2fa/setup.html:37 +#: templates/allauth_2fa/setup.html:38 msgid "Verify" msgstr "" @@ -10974,7 +11062,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3217 +#: templates/js/translated/part.js:3219 msgid "Minimum Quantity" msgstr "" @@ -11062,27 +11150,27 @@ msgstr "Radera bilagor" msgid "Delete attachments" msgstr "Radera bilagor" -#: templates/js/translated/attachment.js:253 +#: templates/js/translated/attachment.js:260 msgid "Attachment actions" msgstr "" -#: templates/js/translated/attachment.js:275 +#: templates/js/translated/attachment.js:294 msgid "No attachments found" msgstr "Inga bilagor hittades" -#: templates/js/translated/attachment.js:315 +#: templates/js/translated/attachment.js:334 msgid "Edit Attachment" msgstr "Redigera bilaga" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:365 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:366 +#: templates/js/translated/attachment.js:385 msgid "Edit attachment" msgstr "Redigera bilaga" -#: templates/js/translated/attachment.js:374 +#: templates/js/translated/attachment.js:393 msgid "Delete attachment" msgstr "Radera bilaga" @@ -11363,7 +11451,7 @@ msgid "Includes variant and substitute stock" msgstr "" #: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 -#: templates/js/translated/part.js:1256 +#: templates/js/translated/part.js:1257 #: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" @@ -11690,7 +11778,7 @@ msgstr "" #: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 #: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 -#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11733,8 +11821,8 @@ msgstr "" msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 -#: templates/js/translated/part.js:1202 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:791 +#: templates/js/translated/part.js:1203 msgid "Trackable part" msgstr "" @@ -11920,7 +12008,7 @@ msgid "Delete Parameters" msgstr "" #: templates/js/translated/company.js:1191 -#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2244 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2245 msgid "Order parts" msgstr "" @@ -11937,34 +12025,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:1279 -#: templates/js/translated/company.js:1567 templates/js/translated/part.js:798 -#: templates/js/translated/part.js:1210 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Template part" msgstr "" #: templates/js/translated/company.js:1283 -#: templates/js/translated/company.js:1571 templates/js/translated/part.js:802 -#: templates/js/translated/part.js:1214 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:803 +#: templates/js/translated/part.js:1215 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1464 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1465 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1527 +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1528 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1528 +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1529 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1433 +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1434 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1549 +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1550 msgid "Delete Parameter" msgstr "" @@ -12098,23 +12186,23 @@ msgstr "" msgid "No results found" msgstr "Inga resultat hittades" -#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 msgid "Searching" msgstr "Söker" -#: templates/js/translated/forms.js:2499 +#: templates/js/translated/forms.js:2500 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3113 +#: templates/js/translated/forms.js:3114 msgid "Select Columns" msgstr "" @@ -12215,7 +12303,7 @@ msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 -#: templates/js/translated/part.js:1604 +#: templates/js/translated/part.js:1605 msgid "ID" msgstr "" @@ -12296,347 +12384,343 @@ msgstr "" 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 +#: templates/js/translated/part.js:333 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:355 +#: templates/js/translated/part.js:356 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:356 +#: templates/js/translated/part.js:357 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:370 +#: templates/js/translated/part.js:371 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:383 +#: templates/js/translated/part.js:384 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:388 +#: templates/js/translated/part.js:389 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:397 +#: templates/js/translated/part.js:398 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:401 +#: templates/js/translated/part.js:402 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:406 +#: templates/js/translated/part.js:407 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:430 +#: templates/js/translated/part.js:431 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:432 +#: templates/js/translated/part.js:433 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:433 +#: templates/js/translated/part.js:434 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:462 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:463 +#: templates/js/translated/part.js:464 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:474 +#: templates/js/translated/part.js:475 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:531 +#: templates/js/translated/part.js:532 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:532 +#: templates/js/translated/part.js:533 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:546 +#: templates/js/translated/part.js:547 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:548 +#: templates/js/translated/part.js:549 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:549 +#: templates/js/translated/part.js:550 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:550 +#: templates/js/translated/part.js:551 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:557 +#: templates/js/translated/part.js:558 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:593 +#: templates/js/translated/part.js:594 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:595 +#: templates/js/translated/part.js:596 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:600 +#: templates/js/translated/part.js:601 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:602 +#: templates/js/translated/part.js:603 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:619 +#: templates/js/translated/part.js:620 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:629 +#: templates/js/translated/part.js:630 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:632 +#: templates/js/translated/part.js:633 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:657 +#: templates/js/translated/part.js:658 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:685 +#: templates/js/translated/part.js:686 #: templates/js/translated/table_filters.js:747 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:688 +#: templates/js/translated/part.js:689 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:748 +#: templates/js/translated/part.js:749 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:771 +#: templates/js/translated/part.js:772 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +#: templates/js/translated/part.js:795 templates/js/translated/part.js:1207 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:806 +#: templates/js/translated/part.js:807 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:810 +#: templates/js/translated/part.js:811 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:897 +#: templates/js/translated/part.js:898 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:901 +#: templates/js/translated/part.js:902 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1050 +#: templates/js/translated/part.js:1051 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1145 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +#: templates/js/translated/part.js:1113 templates/js/translated/part.js:1155 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1281 +#: templates/js/translated/part.js:1282 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1599 +#: templates/js/translated/part.js:1600 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1662 +#: templates/js/translated/part.js:1663 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1674 +#: templates/js/translated/part.js:1675 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1682 +#: templates/js/translated/part.js:1683 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1716 +#: templates/js/translated/part.js:1717 #: templates/js/translated/purchase_order.js:1654 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1860 +#: templates/js/translated/part.js:1861 #: templates/js/translated/purchase_order.js:2153 #: templates/js/translated/return_order.js:755 #: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1906 +#: templates/js/translated/part.js:1907 #: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1970 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1991 +#: templates/js/translated/part.js:1992 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 +#: templates/js/translated/part.js:2080 templates/js/translated/part.js:2506 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2200 +#: templates/js/translated/part.js:2201 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2205 +#: templates/js/translated/part.js:2206 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2235 +#: templates/js/translated/part.js:2236 msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2286 +#: templates/js/translated/part.js:2287 msgid "part" msgstr "" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2288 msgid "parts" msgstr "" -#: templates/js/translated/part.js:2383 +#: templates/js/translated/part.js:2384 msgid "No category" msgstr "Ingen kategori" -#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "Visa som lista" -#: templates/js/translated/part.js:2546 +#: templates/js/translated/part.js:2547 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2644 +#: templates/js/translated/part.js:2645 msgid "No subcategories found" msgstr "Inga underkategorier hittades" -#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2760 +#: templates/js/translated/part.js:2761 msgid "Load Subcategories" msgstr "Ladda underkategorier" -#: templates/js/translated/part.js:2776 +#: templates/js/translated/part.js:2777 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2865 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2887 templates/js/translated/search.js:342 msgid "results" msgstr "resultat" -#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/part.js:2938 templates/js/translated/stock.js:1457 #: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2940 +#: templates/js/translated/part.js:2942 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2956 +#: templates/js/translated/part.js:2958 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2970 +#: templates/js/translated/part.js:2972 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3051 templates/js/translated/part.js:3052 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3052 +#: templates/js/translated/part.js:3054 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3058 +#: templates/js/translated/part.js:3060 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3108 +#: templates/js/translated/part.js:3110 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3114 +#: templates/js/translated/part.js:3116 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3210 +#: templates/js/translated/part.js:3212 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3226 +#: templates/js/translated/part.js:3228 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3271 +#: templates/js/translated/part.js:3273 msgid "Minimum Stock Level" msgstr "" @@ -13244,10 +13328,6 @@ msgstr "" 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 "" @@ -13416,7 +13496,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:401 +#: templates/js/translated/stock.js:1042 users/models.py:392 msgid "Add" msgstr "Lägg till" @@ -14307,34 +14387,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:384 +#: users/models.py:375 msgid "Permission set" msgstr "" -#: users/models.py:393 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "View" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "Permission to view items" msgstr "" -#: users/models.py:401 +#: users/models.py:392 msgid "Permission to add items" msgstr "" -#: users/models.py:405 +#: users/models.py:396 msgid "Change" msgstr "" -#: users/models.py:407 +#: users/models.py:398 msgid "Permissions to edit items" msgstr "" -#: users/models.py:413 +#: users/models.py:404 msgid "Permission to delete items" msgstr "" + diff --git a/src/backend/InvenTree/locale/th/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/th/LC_MESSAGES/django.po index 7683e9c703..7892a43be6 100644 --- a/src/backend/InvenTree/locale/th/LC_MESSAGES/django.po +++ b/src/backend/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-05-31 07:08+0000\n" -"PO-Revision-Date: 2024-05-27 11:55\n" +"POT-Creation-Date: 2024-06-26 03:18+0000\n" +"PO-Revision-Date: 2024-06-26 06:05\n" "Last-Translator: \n" "Language-Team: Thai\n" "Language: th_TH\n" @@ -21,7 +21,7 @@ msgstr "" msgid "API endpoint not found" msgstr "ไม่พบ API endpoint" -#: InvenTree/api.py:536 +#: InvenTree/api.py:520 msgid "User does not have permission to view this model" msgstr "" @@ -52,25 +52,25 @@ msgstr "" msgid "Error details can be found in the admin panel" msgstr "" -#: InvenTree/fields.py:139 +#: InvenTree/fields.py:136 msgid "Enter date" msgstr "ป้อนวันที่" -#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 -#: build/serializers.py:531 build/templates/build/sidebar.html:21 -#: company/models.py:849 company/templates/company/sidebar.html:37 -#: order/models.py:1332 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:205 InvenTree/models.py:918 build/serializers.py:452 +#: build/serializers.py:530 build/templates/build/sidebar.html:21 +#: company/models.py:817 company/templates/company/sidebar.html:37 +#: order/models.py:1296 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:3218 part/templates/part/part_sidebar.html:63 +#: part/models.py:3183 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_report.html:172 -#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 -#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 -#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 -#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:230 stock/models.py:2309 stock/models.py:2431 +#: stock/serializers.py:632 stock/serializers.py:790 stock/serializers.py:886 +#: stock/serializers.py:936 stock/serializers.py:1239 stock/serializers.py:1328 +#: stock/serializers.py:1493 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1080 +#: templates/js/translated/part.js:1081 #: templates/js/translated/purchase_order.js:2200 #: templates/js/translated/return_order.js:775 #: templates/js/translated/sales_order.js:1103 @@ -120,15 +120,15 @@ msgstr "การยืนยันอีเมล" msgid "You must type the same email each time." msgstr "" -#: InvenTree/forms.py:253 InvenTree/forms.py:261 +#: InvenTree/forms.py:248 InvenTree/forms.py:256 msgid "The provided primary email address is not valid." msgstr "" -#: InvenTree/forms.py:268 +#: InvenTree/forms.py:263 msgid "The provided email domain is not approved." msgstr "" -#: InvenTree/forms.py:395 +#: InvenTree/forms.py:390 msgid "Registration is disabled." msgstr "" @@ -171,35 +171,35 @@ msgstr "" msgid "Remove HTML tags from this value" msgstr "" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Connection error" msgstr "การเชื่อมต่อขัดข้อง" -#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 msgid "Server responded with invalid status code" msgstr "" -#: InvenTree/helpers_model.py:158 +#: InvenTree/helpers_model.py:148 msgid "Exception occurred" msgstr "" -#: InvenTree/helpers_model.py:168 +#: InvenTree/helpers_model.py:158 msgid "Server responded with invalid Content-Length value" msgstr "" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:161 msgid "Image size is too large" msgstr "ไฟล์รูปภาพมีขนาดใหญ่เกินไป" -#: InvenTree/helpers_model.py:183 +#: InvenTree/helpers_model.py:173 msgid "Image download exceeded maximum size" msgstr "" -#: InvenTree/helpers_model.py:188 +#: InvenTree/helpers_model.py:178 msgid "Remote server returned empty response" msgstr "" -#: InvenTree/helpers_model.py:196 +#: InvenTree/helpers_model.py:186 msgid "Supplied URL is not a valid image file" msgstr "" @@ -296,46 +296,50 @@ msgid "Portuguese (Brazilian)" msgstr "" #: InvenTree/locales.py:41 +msgid "Romanian" +msgstr "" + +#: InvenTree/locales.py:42 msgid "Russian" msgstr "ภาษารัสเซีย" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:43 msgid "Slovak" msgstr "" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:44 msgid "Slovenian" msgstr "" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:45 msgid "Serbian" msgstr "" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:46 msgid "Swedish" msgstr "ภาษาสวีเดน" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:47 msgid "Thai" msgstr "ภาษาไทย" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:48 msgid "Turkish" msgstr "" -#: InvenTree/locales.py:48 +#: InvenTree/locales.py:49 msgid "Ukrainian" msgstr "" -#: InvenTree/locales.py:49 +#: InvenTree/locales.py:50 msgid "Vietnamese" msgstr "ภาษาเวียดนาม" -#: InvenTree/locales.py:50 +#: InvenTree/locales.py:51 msgid "Chinese (Simplified)" msgstr "" -#: InvenTree/locales.py:51 +#: InvenTree/locales.py:52 msgid "Chinese (Traditional)" msgstr "" @@ -344,153 +348,65 @@ msgstr "" msgid "[{site_name}] Log in to the app" msgstr "" -#: InvenTree/magic_login.py:38 company/models.py:133 +#: InvenTree/magic_login.py:38 company/models.py:136 #: company/templates/company/company_base.html:138 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:677 msgid "Email" msgstr "อีเมล" -#: InvenTree/models.py:107 +#: InvenTree/models.py:105 msgid "Error running plugin validation" msgstr "" -#: InvenTree/models.py:176 +#: InvenTree/models.py:174 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:182 +#: InvenTree/models.py:180 msgid "Plugin Metadata" msgstr "ข้อมูลเมตาของปลั๊กอิน" -#: InvenTree/models.py:183 +#: InvenTree/models.py:181 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:413 +#: InvenTree/models.py:408 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:420 +#: InvenTree/models.py:415 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:426 +#: InvenTree/models.py:421 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:437 +#: InvenTree/models.py:432 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:445 +#: InvenTree/models.py:440 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:476 +#: InvenTree/models.py:471 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:550 -msgid "Missing file" -msgstr "ไม่พบไฟล์" - -#: InvenTree/models.py:551 -msgid "Missing external link" -msgstr "" - -#: InvenTree/models.py:572 stock/models.py:2437 -#: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:326 -msgid "Attachment" -msgstr "ไฟล์แนบ" - -#: InvenTree/models.py:573 -msgid "Select file to attach" -msgstr "เลือกไฟล์ที่ต้องการแนบ" - -#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:831 -#: order/models.py:303 order/models.py:1337 order/models.py:1753 -#: part/admin.py:55 part/models.py:962 -#: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_report.html:164 -#: stock/admin.py:225 templates/js/translated/company.js:1319 -#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2455 -#: templates/js/translated/purchase_order.js:2040 -#: templates/js/translated/purchase_order.js:2204 -#: templates/js/translated/return_order.js:779 -#: templates/js/translated/sales_order.js:1092 -#: templates/js/translated/sales_order.js:2023 -msgid "Link" -msgstr "ลิงก์" - -#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 -#: stock/models.py:836 -msgid "Link to external URL" -msgstr "" - -#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:341 -msgid "Comment" -msgstr "ความคิดเห็น" - -#: InvenTree/models.py:589 -msgid "File comment" -msgstr "ความเห็นของไฟล์" - -#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 -#: common/models.py:2518 common/models.py:2742 common/models.py:2743 -#: common/models.py:2988 common/models.py:2989 part/models.py:3228 -#: part/models.py:3315 part/models.py:3408 part/models.py:3436 -#: plugin/models.py:259 plugin/models.py:260 -#: report/templates/report/inventree_test_report.html:105 -#: templates/js/translated/stock.js:3036 users/models.py:111 -msgid "User" -msgstr "ผู้ใช้งาน" - -#: InvenTree/models.py:602 -msgid "upload date" -msgstr "วันที่อัปโหลด" - -#: InvenTree/models.py:624 -msgid "Filename must not be empty" -msgstr "จำเป็นต้องใส่ชื่อไฟล์" - -#: InvenTree/models.py:635 -msgid "Invalid attachment directory" -msgstr "" - -#: InvenTree/models.py:665 -#, python-brace-format -msgid "Filename contains illegal character '{c}'" -msgstr "ชื่อไฟล์ห้ามมีตัวอักษรต้องห้าม '{c}'" - -#: InvenTree/models.py:668 -msgid "Filename missing extension" -msgstr "ไม่พบนามสกุลของไฟล์" - -#: InvenTree/models.py:677 -msgid "Attachment with this filename already exists" -msgstr "" - -#: InvenTree/models.py:684 -msgid "Error renaming file" -msgstr "" - -#: InvenTree/models.py:860 +#: InvenTree/models.py:719 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:877 +#: InvenTree/models.py:736 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 -#: common/serializers.py:403 company/models.py:614 machine/models.py:24 -#: part/models.py:898 part/models.py:3659 plugin/models.py:50 -#: report/models.py:149 stock/models.py:72 +#: InvenTree/models.py:766 common/models.py:2623 common/models.py:3036 +#: common/serializers.py:408 company/models.py:580 machine/models.py:24 +#: part/models.py:891 part/models.py:3639 plugin/models.py:51 +#: report/models.py:150 stock/models.py:73 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:83 @@ -501,25 +417,25 @@ msgstr "" #: templates/js/translated/company.js:724 #: templates/js/translated/company.js:913 #: templates/js/translated/company.js:1165 -#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 -#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1187 +#: templates/js/translated/part.js:1475 templates/js/translated/part.js:1611 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "ชื่อ" -#: InvenTree/models.py:913 build/models.py:218 -#: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:523 company/models.py:840 +#: InvenTree/models.py:772 build/models.py:220 +#: build/templates/build/detail.html:24 common/models.py:138 +#: company/models.py:509 company/models.py:808 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 order/models.py:289 -#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 -#: part/models.py:3674 part/templates/part/category.html:82 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:914 +#: part/models.py:3654 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:155 -#: report/models.py:509 report/models.py:535 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 #: report/templates/report/inventree_build_order_report.html:117 -#: stock/admin.py:55 stock/models.py:78 stock/templates/stock/location.html:125 +#: stock/admin.py:54 stock/models.py:79 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 @@ -528,10 +444,10 @@ msgstr "ชื่อ" #: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 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:2354 -#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1239 +#: templates/js/translated/part.js:1484 templates/js/translated/part.js:1622 +#: templates/js/translated/part.js:1959 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2897 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1706 #: templates/js/translated/purchase_order.js:1849 @@ -544,149 +460,141 @@ msgstr "ชื่อ" msgid "Description" msgstr "คำอธิบาย" -#: InvenTree/models.py:914 stock/models.py:79 +#: InvenTree/models.py:773 stock/models.py:80 msgid "Description (optional)" msgstr "" -#: InvenTree/models.py:923 -msgid "parent" -msgstr "" - -#: InvenTree/models.py:929 templates/js/translated/part.js:2793 +#: InvenTree/models.py:788 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "" -#: InvenTree/models.py:1035 +#: InvenTree/models.py:918 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:1064 +#: InvenTree/models.py:947 msgid "Barcode Data" msgstr "ข้อมูลบาร์โค้ด" -#: InvenTree/models.py:1065 +#: InvenTree/models.py:948 msgid "Third party barcode data" msgstr "" -#: InvenTree/models.py:1071 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:1072 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:1125 +#: InvenTree/models.py:1008 msgid "Existing barcode found" msgstr "บาร์โค้ดนี้มีในระบบแล้ว" -#: InvenTree/models.py:1168 +#: InvenTree/models.py:1051 msgid "Server Error" msgstr "เกิดข้อผิดพลาดที่เซิร์ฟเวอร์" -#: InvenTree/models.py:1169 +#: InvenTree/models.py:1052 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:62 part/models.py:4212 +#: InvenTree/serializers.py:63 part/models.py:4192 msgid "Must be a valid number" msgstr "ต้องเป็นตัวเลข" -#: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:3036 +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3001 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "สกุลเงิน" -#: InvenTree/serializers.py:102 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:441 +#: InvenTree/serializers.py:442 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:453 +#: InvenTree/serializers.py:454 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:472 +#: InvenTree/serializers.py:473 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:474 +#: InvenTree/serializers.py:475 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:481 +#: InvenTree/serializers.py:482 msgid "Welcome to InvenTree" msgstr "ยินดีต้อนรับเข้าสู่ Inventree" -#: InvenTree/serializers.py:542 -msgid "Filename" -msgstr "ชื่อไฟล์" - -#: InvenTree/serializers.py:576 +#: InvenTree/serializers.py:540 msgid "Invalid value" msgstr "" -#: InvenTree/serializers.py:596 +#: InvenTree/serializers.py:560 msgid "Data File" msgstr "ไฟล์ข้อมูล" -#: InvenTree/serializers.py:597 +#: InvenTree/serializers.py:561 msgid "Select data file for upload" msgstr "เลือกไฟล์ข้อมูลที่จะอัปโหลด" -#: InvenTree/serializers.py:614 +#: InvenTree/serializers.py:578 msgid "Unsupported file type" msgstr "" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:584 msgid "File is too large" msgstr "ไฟล์มีขนาดใหญ่เกินไป" -#: InvenTree/serializers.py:641 +#: InvenTree/serializers.py:605 msgid "No columns found in file" msgstr "" -#: InvenTree/serializers.py:644 +#: InvenTree/serializers.py:608 msgid "No data rows found in file" msgstr "" -#: InvenTree/serializers.py:757 +#: InvenTree/serializers.py:721 msgid "No data rows provided" msgstr "" -#: InvenTree/serializers.py:760 +#: InvenTree/serializers.py:724 msgid "No data columns supplied" msgstr "" -#: InvenTree/serializers.py:827 +#: InvenTree/serializers.py:791 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "" -#: InvenTree/serializers.py:836 +#: InvenTree/serializers.py:800 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/serializers.py:859 +#: InvenTree/serializers.py:840 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:860 +#: InvenTree/serializers.py:841 msgid "URL of remote image file" msgstr "" -#: InvenTree/serializers.py:878 +#: InvenTree/serializers.py:859 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/status.py:66 part/serializers.py:1178 +#: InvenTree/status.py:66 part/serializers.py:1174 msgid "Background worker check failed" msgstr "" @@ -698,27 +606,27 @@ msgstr "" msgid "InvenTree system health checks failed" msgstr "" -#: InvenTree/templatetags/inventree_extras.py:183 +#: InvenTree/templatetags/inventree_extras.py:184 msgid "Unknown database" msgstr "" -#: InvenTree/validators.py:31 InvenTree/validators.py:33 +#: InvenTree/validators.py:32 InvenTree/validators.py:34 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:39 +#: InvenTree/validators.py:40 msgid "Not a valid currency code" msgstr "" -#: InvenTree/validators.py:121 InvenTree/validators.py:137 +#: InvenTree/validators.py:118 InvenTree/validators.py:134 msgid "Overage value must not be negative" msgstr "" -#: InvenTree/validators.py:139 +#: InvenTree/validators.py:136 msgid "Overage must not exceed 100%" msgstr "" -#: InvenTree/validators.py:145 +#: InvenTree/validators.py:142 msgid "Invalid value for overage" msgstr "" @@ -750,14 +658,14 @@ msgstr "เกี่ยวกับ Inventree" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: build/api.py:299 part/models.py:4070 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:300 part/models.py:4084 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4064 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2529 #: templates/js/translated/table_filters.js:186 @@ -778,30 +686,30 @@ msgstr "" msgid "Allocated" msgstr "" -#: build/api.py:311 company/models.py:904 company/serializers.py:383 +#: build/api.py:311 company/models.py:872 company/serializers.py:359 #: 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:2561 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:234 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 -#: templates/js/translated/part.js:699 +#: templates/js/translated/part.js:693 templates/js/translated/part.js:695 +#: templates/js/translated/part.js:700 #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:575 msgid "Available" msgstr "" -#: build/models.py:83 build/templates/build/build_base.html:9 +#: build/models.py:85 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_report.html:105 -#: stock/serializers.py:83 templates/email/build_order_completed.html:16 +#: stock/serializers.py:82 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:2892 msgid "Build Order" msgstr "" -#: build/models.py:84 build/templates/build/build_base.html:13 +#: build/models.py:86 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 @@ -812,25 +720,25 @@ msgstr "" msgid "Build Orders" msgstr "" -#: build/models.py:131 +#: build/models.py:133 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:142 order/models.py:240 +#: build/models.py:144 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "" -#: build/models.py:148 +#: build/models.py:150 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:209 +#: build/models.py:211 msgid "Build Order Reference" msgstr "" -#: build/models.py:210 order/models.py:463 order/models.py:928 -#: order/models.py:1325 order/models.py:2056 part/admin.py:419 -#: part/models.py:4105 part/templates/part/upload_bom.html:54 +#: build/models.py:212 order/models.py:463 order/models.py:926 +#: order/models.py:1289 order/models.py:2020 part/admin.py:411 +#: part/models.py:4085 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_purchase_order_report.html:28 #: report/templates/report/inventree_return_order_report.html:26 @@ -844,27 +752,27 @@ msgstr "" msgid "Reference" msgstr "" -#: build/models.py:221 +#: build/models.py:223 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:229 build/templates/build/build_base.html:183 +#: build/models.py:231 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:230 +#: build/models.py:232 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:235 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 -#: order/models.py:1450 order/models.py:1595 order/models.py:1596 -#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 -#: part/models.py:3191 part/models.py:3335 part/models.py:3358 -#: part/models.py:3379 part/models.py:3401 part/models.py:3511 -#: part/models.py:3807 part/models.py:3963 part/models.py:4056 -#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 +#: build/models.py:237 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1026 order/api.py:805 +#: order/models.py:1414 order/models.py:1559 order/models.py:1560 +#: part/api.py:1494 part/api.py:1788 part/models.py:395 part/models.py:3012 +#: part/models.py:3156 part/models.py:3303 part/models.py:3324 +#: part/models.py:3346 part/models.py:3477 part/models.py:3787 +#: part/models.py:3943 part/models.py:4036 part/models.py:4395 +#: part/serializers.py:1120 part/serializers.py:1726 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -875,8 +783,8 @@ msgstr "" #: report/templates/report/inventree_return_order_report.html:24 #: report/templates/report/inventree_sales_order_report.html:27 #: report/templates/report/inventree_stock_location_report.html:102 -#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 -#: stock/serializers.py:818 templates/InvenTree/search.html:82 +#: stock/serializers.py:109 stock/serializers.py:157 stock/serializers.py:423 +#: stock/serializers.py:820 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 @@ -889,8 +797,8 @@ msgstr "" #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 -#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2323 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:1944 templates/js/translated/part.js:2016 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 #: templates/js/translated/purchase_order.js:751 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1848 @@ -908,107 +816,107 @@ msgstr "" msgid "Part" msgstr "" -#: build/models.py:243 +#: build/models.py:245 msgid "Select part to build" msgstr "" -#: build/models.py:248 +#: build/models.py:250 msgid "Sales Order Reference" msgstr "" -#: build/models.py:252 +#: build/models.py:254 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:257 build/serializers.py:1000 +#: build/models.py:259 build/serializers.py:999 #: templates/js/translated/build.js:1731 #: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "" -#: build/models.py:261 +#: build/models.py:263 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:266 +#: build/models.py:268 msgid "Destination Location" msgstr "" -#: build/models.py:270 +#: build/models.py:272 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:274 +#: build/models.py:276 msgid "Build Quantity" msgstr "" -#: build/models.py:277 +#: build/models.py:279 msgid "Number of stock items to build" msgstr "" -#: build/models.py:281 +#: build/models.py:283 msgid "Completed items" msgstr "" -#: build/models.py:283 +#: build/models.py:285 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:287 +#: build/models.py:289 msgid "Build Status" msgstr "" -#: build/models.py:291 +#: build/models.py:293 msgid "Build status code" msgstr "" -#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 -#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 +#: build/models.py:302 build/serializers.py:286 order/serializers.py:580 +#: stock/models.py:838 stock/serializers.py:74 stock/serializers.py:1458 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "" -#: build/models.py:304 build/serializers.py:288 +#: build/models.py:306 build/serializers.py:287 msgid "Batch code for this build output" msgstr "" -#: build/models.py:307 order/models.py:316 order/serializers.py:120 -#: part/models.py:1122 part/templates/part/part_base.html:310 +#: build/models.py:309 order/models.py:316 order/serializers.py:119 +#: part/models.py:1115 part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:338 #: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "" -#: build/models.py:311 +#: build/models.py:313 msgid "Target completion date" msgstr "" -#: build/models.py:312 +#: build/models.py:314 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:315 order/models.py:521 order/models.py:2101 +#: build/models.py:317 order/models.py:521 order/models.py:2065 #: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "" -#: build/models.py:321 +#: build/models.py:323 msgid "completed by" msgstr "" -#: build/models.py:329 templates/js/translated/build.js:2207 +#: build/models.py:331 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "ออกโดย" -#: build/models.py:330 +#: build/models.py:332 msgid "User who issued this build order" msgstr "" -#: build/models.py:338 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:145 +#: build/models.py:340 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:147 #: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:232 part/models.py:1139 +#: order/templates/order/sales_order_base.html:232 part/models.py:1132 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_report.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 @@ -1019,31 +927,36 @@ msgstr "" msgid "Responsible" msgstr "" -#: build/models.py:339 +#: build/models.py:341 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:344 build/templates/build/detail.html:108 +#: build/models.py:346 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:184 -#: part/templates/part/part_base.html:383 stock/models.py:836 +#: part/templates/part/part_base.html:383 stock/models.py:834 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "" -#: build/models.py:349 +#: build/models.py:347 common/models.py:3178 part/models.py:956 +#: stock/models.py:834 +msgid "Link to external URL" +msgstr "" + +#: build/models.py:351 msgid "Build Priority" msgstr "" -#: build/models.py:352 +#: build/models.py:354 msgid "Priority of this build order" msgstr "" -#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: build/models.py:361 common/models.py:131 order/admin.py:18 #: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 #: templates/js/translated/build.js:2144 #: templates/js/translated/purchase_order.js:1710 @@ -1054,65 +967,65 @@ msgstr "" msgid "Project Code" msgstr "" -#: build/models.py:360 +#: build/models.py:362 msgid "Project code for this build order" msgstr "" -#: build/models.py:593 build/models.py:658 +#: build/models.py:595 build/models.py:660 msgid "Failed to offload task to complete build allocations" msgstr "" -#: build/models.py:615 +#: build/models.py:617 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:621 +#: build/models.py:623 msgid "A build order has been completed" msgstr "" -#: build/models.py:847 build/models.py:932 +#: build/models.py:849 build/models.py:934 msgid "No build output specified" msgstr "" -#: build/models.py:850 +#: build/models.py:852 msgid "Build output is already completed" msgstr "" -#: build/models.py:853 +#: build/models.py:855 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 -#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 -#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 -#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 +#: build/models.py:938 build/serializers.py:219 build/serializers.py:268 +#: build/serializers.py:866 order/models.py:559 order/serializers.py:432 +#: order/serializers.py:575 part/serializers.py:1484 part/serializers.py:1884 +#: stock/models.py:677 stock/models.py:1495 stock/serializers.py:603 msgid "Quantity must be greater than zero" msgstr "จำนวนต้องมีค่ามากกว่า 0" -#: build/models.py:941 build/serializers.py:225 +#: build/models.py:943 build/serializers.py:224 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1001 build/serializers.py:548 +#: build/models.py:1003 build/serializers.py:547 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1352 +#: build/models.py:1344 msgid "Build Order Line Item" msgstr "" -#: build/models.py:1377 +#: build/models.py:1369 msgid "Build object" msgstr "" -#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 -#: build/serializers.py:254 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2539 -#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 -#: part/forms.py:48 part/models.py:3205 part/models.py:4078 +#: build/models.py:1383 build/models.py:1639 build/serializers.py:206 +#: build/serializers.py:253 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2509 +#: order/models.py:1272 order/models.py:1931 order/serializers.py:1327 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3170 part/models.py:4058 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1121,8 +1034,8 @@ msgstr "" #: report/templates/report/inventree_sales_order_report.html:29 #: report/templates/report/inventree_stock_location_report.html:104 #: report/templates/report/inventree_test_report.html:90 -#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 -#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:125 stock/serializers.py:165 stock/serializers.py:594 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1133,8 +1046,8 @@ msgstr "" #: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 #: templates/js/translated/model_renderers.js:236 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:962 +#: templates/js/translated/part.js:1812 templates/js/translated/part.js:3342 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1154,38 +1067,38 @@ msgstr "" msgid "Quantity" msgstr "" -#: build/models.py:1392 +#: build/models.py:1384 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1472 +#: build/models.py:1464 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1481 +#: build/models.py:1473 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1491 order/models.py:1918 +#: build/models.py:1483 order/models.py:1882 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1497 order/models.py:1921 +#: build/models.py:1489 order/models.py:1885 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1503 +#: build/models.py:1495 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1562 +#: build/models.py:1554 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 -#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 -#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: build/models.py:1626 build/serializers.py:846 order/serializers.py:1171 +#: order/serializers.py:1192 stock/models.py:358 stock/serializers.py:91 +#: stock/serializers.py:697 stock/serializers.py:1177 stock/serializers.py:1289 #: stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 @@ -1201,70 +1114,70 @@ msgstr "" msgid "Stock Item" msgstr "" -#: build/models.py:1635 +#: build/models.py:1627 msgid "Source stock item" msgstr "" -#: build/models.py:1648 +#: build/models.py:1640 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1656 +#: build/models.py:1648 msgid "Install into" msgstr "" -#: build/models.py:1657 +#: build/models.py:1649 msgid "Destination stock item" msgstr "" -#: build/serializers.py:157 build/serializers.py:876 +#: build/serializers.py:156 build/serializers.py:875 #: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "" -#: build/serializers.py:169 +#: build/serializers.py:168 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:173 +#: build/serializers.py:172 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:177 +#: build/serializers.py:176 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:188 +#: build/serializers.py:187 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:208 build/serializers.py:255 +#: build/serializers.py:207 build/serializers.py:254 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:276 +#: build/serializers.py:275 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:279 +#: build/serializers.py:278 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:294 order/serializers.py:589 order/serializers.py:1343 -#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:293 order/serializers.py:588 order/serializers.py:1331 +#: stock/serializers.py:614 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:295 +#: build/serializers.py:294 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 -#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 -#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 -#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 -#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 +#: build/serializers.py:299 build/serializers.py:440 build/serializers.py:512 +#: order/serializers.py:564 order/serializers.py:672 order/serializers.py:1656 +#: part/serializers.py:1140 stock/serializers.py:100 stock/serializers.py:625 +#: stock/serializers.py:785 stock/serializers.py:881 stock/serializers.py:1321 +#: stock/serializers.py:1577 stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:1001 #: templates/js/translated/build.js:2372 @@ -1280,54 +1193,54 @@ msgstr "" msgid "Location" msgstr "สถานที่" -#: build/serializers.py:301 +#: build/serializers.py:300 msgid "Stock location for build output" msgstr "" -#: build/serializers.py:315 +#: build/serializers.py:314 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:316 +#: build/serializers.py:315 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:331 +#: build/serializers.py:330 msgid "Serial numbers must be provided for trackable parts" msgstr "" -#: build/serializers.py:356 stock/api.py:1031 +#: build/serializers.py:355 stock/api.py:1041 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:403 build/serializers.py:465 build/serializers.py:554 +#: build/serializers.py:402 build/serializers.py:464 build/serializers.py:553 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:442 +#: build/serializers.py:441 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:448 +#: build/serializers.py:447 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:449 +#: build/serializers.py:448 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:454 +#: build/serializers.py:453 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:514 +#: build/serializers.py:513 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:520 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:952 -#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 -#: stock/serializers.py:930 stock/serializers.py:1469 +#: build/serializers.py:519 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2044 order/serializers.py:596 stock/admin.py:164 +#: stock/serializers.py:932 stock/serializers.py:1465 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 @@ -1339,188 +1252,188 @@ msgstr "" msgid "Status" msgstr "สถานะ" -#: build/serializers.py:526 +#: build/serializers.py:525 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:527 +#: build/serializers.py:526 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:611 msgid "Consume Allocated Stock" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:612 msgid "Consume any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:619 +#: build/serializers.py:618 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:620 +#: build/serializers.py:619 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:646 msgid "Not permitted" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:647 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:648 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:679 +#: build/serializers.py:678 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:681 +#: build/serializers.py:680 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:691 +#: build/serializers.py:690 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:696 +#: build/serializers.py:695 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:697 +#: build/serializers.py:696 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:707 templates/js/translated/build.js:315 +#: build/serializers.py:706 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:712 order/serializers.py:301 order/serializers.py:1246 +#: build/serializers.py:711 order/serializers.py:300 order/serializers.py:1234 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:713 +#: build/serializers.py:712 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:723 templates/js/translated/build.js:319 +#: build/serializers.py:722 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:732 templates/js/translated/build.js:303 +#: build/serializers.py:731 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:770 +#: build/serializers.py:769 msgid "Build Line" msgstr "" -#: build/serializers.py:780 +#: build/serializers.py:779 msgid "Build output" msgstr "" -#: build/serializers.py:788 +#: build/serializers.py:787 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:824 +#: build/serializers.py:823 msgid "Build Line Item" msgstr "" -#: build/serializers.py:838 +#: build/serializers.py:837 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:853 stock/serializers.py:1194 +#: build/serializers.py:852 stock/serializers.py:1190 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:901 order/serializers.py:1237 +#: build/serializers.py:900 order/serializers.py:1225 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:907 +#: build/serializers.py:906 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:914 +#: build/serializers.py:913 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:938 order/serializers.py:1489 +#: build/serializers.py:937 order/serializers.py:1477 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:1001 +#: build/serializers.py:1000 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:1009 +#: build/serializers.py:1008 msgid "Exclude Location" msgstr "" -#: build/serializers.py:1010 +#: build/serializers.py:1009 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:1015 +#: build/serializers.py:1014 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:1016 +#: build/serializers.py:1015 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:1021 +#: build/serializers.py:1020 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:1022 +#: build/serializers.py:1021 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:1027 +#: build/serializers.py:1026 msgid "Optional Items" msgstr "" -#: build/serializers.py:1028 +#: build/serializers.py:1027 msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1050 +#: build/serializers.py:1049 msgid "Failed to start auto-allocation task" msgstr "" -#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 -#: stock/api.py:794 +#: build/serializers.py:1139 part/models.py:3953 part/models.py:4387 +#: stock/api.py:804 msgid "BOM Item" msgstr "" -#: build/serializers.py:1149 templates/js/translated/index.js:130 +#: build/serializers.py:1148 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:832 part/serializers.py:1506 +#: build/serializers.py:1153 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:828 part/serializers.py:1502 #: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 -#: templates/js/translated/build.js:2613 templates/js/translated/part.js:709 -#: templates/js/translated/part.js:2148 +#: templates/js/translated/build.js:2613 templates/js/translated/part.js:710 +#: templates/js/translated/part.js:2149 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1159 part/serializers.py:1508 +#: build/serializers.py:1158 part/serializers.py:1504 #: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 +#: build/serializers.py:1163 part/bom.py:172 part/serializers.py:1527 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1929 msgid "Available Stock" @@ -1544,7 +1457,7 @@ msgstr "ยกเลิกแล้ว" #: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 #: order/status_codes.py:44 order/status_codes.py:69 #: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:165 report/models.py:443 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 msgid "Complete" msgstr "สำเร็จแล้ว" @@ -1674,11 +1587,11 @@ msgstr "" #: build/templates/build/build_base.html:160 #: build/templates/build/detail.html:138 order/models.py:309 -#: order/models.py:1343 order/templates/order/order_base.html:186 +#: order/models.py:1307 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:196 #: report/templates/report/inventree_build_order_report.html:125 -#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1831 #: templates/js/translated/purchase_order.js:1739 #: templates/js/translated/purchase_order.js:2147 #: templates/js/translated/return_order.js:346 @@ -1711,8 +1624,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 -#: order/models.py:1587 order/models.py:1701 order/models.py:1855 +#: build/templates/build/detail.html:101 order/api.py:1463 order/models.py:845 +#: order/models.py:1551 order/models.py:1665 order/models.py:1819 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_report.html:135 @@ -1762,7 +1675,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1479 +#: build/templates/build/detail.html:49 order/models.py:1443 #: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "" @@ -1775,7 +1688,7 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:163 +#: build/templates/build/detail.html:80 stock/admin.py:162 #: stock/templates/stock/item_base.html:162 #: templates/js/translated/build.js:1380 #: templates/js/translated/model_renderers.js:241 @@ -1894,11 +1807,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:436 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -1914,6 +1827,34 @@ msgstr "" msgid "Incomplete Outputs" msgstr "" +#: common/api.py:689 +msgid "Is Link" +msgstr "" + +#: common/api.py:697 +msgid "Is File" +msgstr "" + +#: common/api.py:739 +msgid "User does not have permission to delete this attachment" +msgstr "" + +#: common/currency.py:130 +msgid "Invalid currency code" +msgstr "" + +#: common/currency.py:132 +msgid "Duplicate currency code" +msgstr "" + +#: common/currency.py:137 +msgid "No valid currency codes provided" +msgstr "" + +#: common/currency.py:154 +msgid "No plugin" +msgstr "" + #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1952,1507 +1893,1512 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:71 +#: common/models.py:73 msgid "Updated" msgstr "" -#: common/models.py:72 +#: common/models.py:74 msgid "Timestamp of last update" msgstr "" -#: common/models.py:105 +#: common/models.py:107 msgid "Site URL is locked by configuration" msgstr "" -#: common/models.py:130 +#: common/models.py:132 msgid "Unique project code" msgstr "" -#: common/models.py:137 +#: common/models.py:139 msgid "Project description" msgstr "" -#: common/models.py:146 +#: common/models.py:148 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:766 +#: common/models.py:765 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:770 +#: common/models.py:769 msgid "Settings value" msgstr "" -#: common/models.py:822 +#: common/models.py:821 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:838 +#: common/models.py:837 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:846 +#: common/models.py:845 msgid "Value must be an integer value" msgstr "" -#: common/models.py:883 +#: common/models.py:882 msgid "Key string must be unique" msgstr "" -#: common/models.py:1115 +#: common/models.py:1114 msgid "No group" msgstr "" -#: common/models.py:1158 -msgid "An empty domain is not allowed." -msgstr "" - -#: common/models.py:1160 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "" - -#: common/models.py:1172 -msgid "No plugin" -msgstr "" - -#: common/models.py:1260 +#: common/models.py:1213 msgid "Restart required" msgstr "" -#: common/models.py:1262 +#: common/models.py:1215 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1269 +#: common/models.py:1222 msgid "Pending migrations" msgstr "" -#: common/models.py:1270 +#: common/models.py:1223 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1275 +#: common/models.py:1228 msgid "Server Instance Name" msgstr "" -#: common/models.py:1277 +#: common/models.py:1230 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1281 +#: common/models.py:1234 msgid "Use instance name" msgstr "" -#: common/models.py:1282 +#: common/models.py:1235 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1287 +#: common/models.py:1240 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1288 +#: common/models.py:1241 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1293 company/models.py:108 company/models.py:109 +#: common/models.py:1246 company/models.py:111 company/models.py:112 msgid "Company name" msgstr "" -#: common/models.py:1294 +#: common/models.py:1247 msgid "Internal company name" msgstr "" -#: common/models.py:1298 +#: common/models.py:1251 msgid "Base URL" msgstr "" -#: common/models.py:1299 +#: common/models.py:1252 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1305 +#: common/models.py:1258 msgid "Default Currency" msgstr "" -#: common/models.py:1306 +#: common/models.py:1259 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1312 +#: common/models.py:1265 +msgid "Supported Currencies" +msgstr "" + +#: common/models.py:1266 +msgid "List of supported currency codes" +msgstr "" + +#: common/models.py:1272 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1314 +#: common/models.py:1274 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1317 common/models.py:1373 common/models.py:1386 -#: common/models.py:1394 common/models.py:1403 common/models.py:1412 -#: common/models.py:1620 common/models.py:1642 common/models.py:1757 -#: common/models.py:2076 +#: common/models.py:1277 common/models.py:1333 common/models.py:1346 +#: common/models.py:1354 common/models.py:1363 common/models.py:1372 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:2046 msgid "days" msgstr "" -#: common/models.py:1321 +#: common/models.py:1281 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1322 +#: common/models.py:1282 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1327 +#: common/models.py:1287 msgid "Download from URL" msgstr "" -#: common/models.py:1329 +#: common/models.py:1289 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1335 +#: common/models.py:1295 msgid "Download Size Limit" msgstr "" -#: common/models.py:1336 +#: common/models.py:1296 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1342 +#: common/models.py:1302 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1344 +#: common/models.py:1304 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:1349 +#: common/models.py:1309 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1350 +#: common/models.py:1310 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1355 +#: common/models.py:1315 msgid "Require confirm" msgstr "" -#: common/models.py:1356 +#: common/models.py:1316 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1361 +#: common/models.py:1321 msgid "Tree Depth" msgstr "" -#: common/models.py:1363 +#: common/models.py:1323 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1369 +#: common/models.py:1329 msgid "Update Check Interval" msgstr "" -#: common/models.py:1370 +#: common/models.py:1330 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1376 +#: common/models.py:1336 msgid "Automatic Backup" msgstr "" -#: common/models.py:1377 +#: common/models.py:1337 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1382 +#: common/models.py:1342 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1383 +#: common/models.py:1343 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1389 +#: common/models.py:1349 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1391 +#: common/models.py:1351 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1398 +#: common/models.py:1358 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1400 +#: common/models.py:1360 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1407 +#: common/models.py:1367 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1409 +#: common/models.py:1369 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1416 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1376 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1417 +#: common/models.py:1377 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1422 +#: common/models.py:1382 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1423 +#: common/models.py:1383 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1429 +#: common/models.py:1389 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1430 +#: common/models.py:1390 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1435 +#: common/models.py:1395 msgid "Part Revisions" msgstr "" -#: common/models.py:1436 +#: common/models.py:1396 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1441 +#: common/models.py:1401 msgid "Allow Deletion from Assembly" msgstr "" -#: common/models.py:1442 +#: common/models.py:1402 msgid "Allow deletion of parts which are used in an assembly" msgstr "" -#: common/models.py:1447 +#: common/models.py:1407 msgid "IPN Regex" msgstr "" -#: common/models.py:1448 +#: common/models.py:1408 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1451 +#: common/models.py:1411 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1452 +#: common/models.py:1412 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1457 +#: common/models.py:1417 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1458 +#: common/models.py:1418 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1463 +#: common/models.py:1423 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1464 +#: common/models.py:1424 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1469 +#: common/models.py:1429 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1470 +#: common/models.py:1430 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1475 +#: common/models.py:1435 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1476 +#: common/models.py:1436 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1481 +#: common/models.py:1441 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1482 +#: common/models.py:1442 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1487 part/admin.py:108 part/models.py:3815 -#: report/models.py:293 report/models.py:360 report/serializers.py:90 -#: report/serializers.py:131 stock/serializers.py:228 +#: common/models.py:1447 part/admin.py:108 part/models.py:3795 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:227 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1488 +#: common/models.py:1448 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 +#: common/models.py:1453 part/admin.py:91 part/admin.py:425 part/models.py:1052 #: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" msgstr "" -#: common/models.py:1494 +#: common/models.py:1454 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1499 part/admin.py:95 part/models.py:1065 +#: common/models.py:1459 part/admin.py:95 part/models.py:1058 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1500 +#: common/models.py:1460 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1505 part/admin.py:100 part/models.py:1077 +#: common/models.py:1465 part/admin.py:100 part/models.py:1070 msgid "Purchaseable" msgstr "" -#: common/models.py:1506 +#: common/models.py:1466 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1511 part/admin.py:104 part/models.py:1083 +#: common/models.py:1471 part/admin.py:104 part/models.py:1076 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1512 +#: common/models.py:1472 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1517 part/admin.py:113 part/models.py:1071 +#: common/models.py:1477 part/admin.py:113 part/models.py:1064 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" msgstr "" -#: common/models.py:1518 +#: common/models.py:1478 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1523 part/admin.py:117 part/models.py:1093 +#: common/models.py:1483 part/admin.py:117 part/models.py:1086 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" msgstr "" -#: common/models.py:1524 +#: common/models.py:1484 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1529 +#: common/models.py:1489 msgid "Show Import in Views" msgstr "" -#: common/models.py:1530 +#: common/models.py:1490 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1535 +#: common/models.py:1495 msgid "Show related parts" msgstr "" -#: common/models.py:1536 +#: common/models.py:1496 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1541 +#: common/models.py:1501 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1542 +#: common/models.py:1502 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1547 templates/js/translated/part.js:107 +#: common/models.py:1507 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1549 +#: common/models.py:1509 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1555 +#: common/models.py:1515 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1556 +#: common/models.py:1516 msgid "Format to display the part name" msgstr "" -#: common/models.py:1562 +#: common/models.py:1522 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1563 +#: common/models.py:1523 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1567 +#: common/models.py:1527 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1569 +#: common/models.py:1529 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1575 +#: common/models.py:1535 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1577 +#: common/models.py:1537 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1583 +#: common/models.py:1548 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1585 +#: common/models.py:1550 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1591 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1593 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1599 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1601 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1607 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1609 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1615 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1617 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1630 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1632 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1638 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1640 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1647 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1648 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1653 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1655 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1661 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1662 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1667 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1669 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1675 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1676 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1681 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1682 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1687 +#: common/models.py:1657 msgid "Log Report Errors" msgstr "" -#: common/models.py:1688 +#: common/models.py:1658 msgid "Log errors which occur when generating reports" msgstr "" -#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:301 +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:302 msgid "Page Size" msgstr "" -#: common/models.py:1694 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1699 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1700 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1705 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1707 +#: common/models.py:1677 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1713 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1714 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1719 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1720 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1725 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1727 +#: common/models.py:1697 msgid "Determines default behavior when a stock item is depleted" msgstr "" -#: common/models.py:1733 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1735 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1740 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1741 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1746 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1747 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1752 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1754 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1761 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1762 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1767 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1768 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1773 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1774 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1778 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1779 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1784 +#: common/models.py:1754 msgid "Check BOM when installing items" msgstr "" -#: common/models.py:1786 +#: common/models.py:1756 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "" -#: common/models.py:1792 +#: common/models.py:1762 msgid "Allow Out of Stock Transfer" msgstr "" -#: common/models.py:1794 +#: common/models.py:1764 msgid "Allow stock items which are not in stock to be transferred between stock locations" msgstr "" -#: common/models.py:1800 +#: common/models.py:1770 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1802 +#: common/models.py:1772 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1808 common/models.py:1836 common/models.py:1858 -#: common/models.py:1894 +#: common/models.py:1778 common/models.py:1806 common/models.py:1828 +#: common/models.py:1864 msgid "Require Responsible Owner" msgstr "" -#: common/models.py:1809 common/models.py:1837 common/models.py:1859 -#: common/models.py:1895 +#: common/models.py:1779 common/models.py:1807 common/models.py:1829 +#: common/models.py:1865 msgid "A responsible owner must be assigned to each order" msgstr "" -#: common/models.py:1814 +#: common/models.py:1784 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1816 +#: common/models.py:1786 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:1822 +#: common/models.py:1792 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1823 +#: common/models.py:1793 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1828 +#: common/models.py:1798 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1830 +#: common/models.py:1800 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1842 +#: common/models.py:1812 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1844 +#: common/models.py:1814 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1850 +#: common/models.py:1820 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1852 +#: common/models.py:1822 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1864 +#: common/models.py:1834 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1865 +#: common/models.py:1835 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1870 +#: common/models.py:1840 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1872 +#: common/models.py:1842 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1878 +#: common/models.py:1848 msgid "Mark Shipped Orders as Complete" msgstr "" -#: common/models.py:1880 +#: common/models.py:1850 msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" msgstr "" -#: common/models.py:1886 +#: common/models.py:1856 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1888 +#: common/models.py:1858 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1900 +#: common/models.py:1870 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1902 +#: common/models.py:1872 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1908 +#: common/models.py:1878 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1910 +#: common/models.py:1880 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1917 +#: common/models.py:1887 msgid "Enable password forgot" msgstr "" -#: common/models.py:1918 +#: common/models.py:1888 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1923 +#: common/models.py:1893 msgid "Enable registration" msgstr "" -#: common/models.py:1924 +#: common/models.py:1894 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1929 +#: common/models.py:1899 msgid "Enable SSO" msgstr "" -#: common/models.py:1930 +#: common/models.py:1900 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1935 +#: common/models.py:1905 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1937 +#: common/models.py:1907 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1943 +#: common/models.py:1913 msgid "Email required" msgstr "" -#: common/models.py:1944 +#: common/models.py:1914 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1949 +#: common/models.py:1919 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1951 +#: common/models.py:1921 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1957 +#: common/models.py:1927 msgid "Mail twice" msgstr "" -#: common/models.py:1958 +#: common/models.py:1928 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1963 +#: common/models.py:1933 msgid "Password twice" msgstr "" -#: common/models.py:1964 +#: common/models.py:1934 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1969 +#: common/models.py:1939 msgid "Allowed domains" msgstr "" -#: common/models.py:1971 +#: common/models.py:1941 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1977 +#: common/models.py:1947 msgid "Group on signup" msgstr "" -#: common/models.py:1978 +#: common/models.py:1948 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1983 +#: common/models.py:1953 msgid "Enforce MFA" msgstr "" -#: common/models.py:1984 +#: common/models.py:1954 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1989 +#: common/models.py:1959 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1991 +#: common/models.py:1961 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1999 +#: common/models.py:1969 msgid "Check for plugin updates" msgstr "" -#: common/models.py:2000 +#: common/models.py:1970 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:2006 +#: common/models.py:1976 msgid "Enable URL integration" msgstr "" -#: common/models.py:2007 +#: common/models.py:1977 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:2013 +#: common/models.py:1983 msgid "Enable navigation integration" msgstr "" -#: common/models.py:2014 +#: common/models.py:1984 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:2020 +#: common/models.py:1990 msgid "Enable app integration" msgstr "" -#: common/models.py:2021 +#: common/models.py:1991 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:2027 +#: common/models.py:1997 msgid "Enable schedule integration" msgstr "" -#: common/models.py:2028 +#: common/models.py:1998 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:2034 +#: common/models.py:2004 msgid "Enable event integration" msgstr "" -#: common/models.py:2035 +#: common/models.py:2005 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:2041 +#: common/models.py:2011 msgid "Enable project codes" msgstr "" -#: common/models.py:2042 +#: common/models.py:2012 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:2047 +#: common/models.py:2017 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:2049 +#: common/models.py:2019 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:2055 +#: common/models.py:2025 msgid "Exclude External Locations" msgstr "" -#: common/models.py:2057 +#: common/models.py:2027 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:2063 +#: common/models.py:2033 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:2065 +#: common/models.py:2035 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:2071 +#: common/models.py:2041 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:2073 +#: common/models.py:2043 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:2080 +#: common/models.py:2050 msgid "Display Users full names" msgstr "" -#: common/models.py:2081 +#: common/models.py:2051 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:2086 +#: common/models.py:2056 msgid "Enable Test Station Data" msgstr "" -#: common/models.py:2087 +#: common/models.py:2057 msgid "Enable test station data collection for test results" msgstr "" -#: common/models.py:2099 common/models.py:2509 +#: common/models.py:2069 common/models.py:2479 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2142 +#: common/models.py:2112 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2144 +#: common/models.py:2114 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2150 +#: common/models.py:2120 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2151 +#: common/models.py:2121 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2156 +#: common/models.py:2126 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2157 +#: common/models.py:2127 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2162 +#: common/models.py:2132 msgid "Show latest parts" msgstr "" -#: common/models.py:2163 +#: common/models.py:2133 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2168 +#: common/models.py:2138 msgid "Show invalid BOMs" msgstr "" -#: common/models.py:2169 +#: common/models.py:2139 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2174 +#: common/models.py:2144 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2175 +#: common/models.py:2145 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2180 +#: common/models.py:2150 msgid "Show low stock" msgstr "" -#: common/models.py:2181 +#: common/models.py:2151 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2186 +#: common/models.py:2156 msgid "Show depleted stock" msgstr "" -#: common/models.py:2187 +#: common/models.py:2157 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2192 +#: common/models.py:2162 msgid "Show needed stock" msgstr "" -#: common/models.py:2193 +#: common/models.py:2163 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2198 +#: common/models.py:2168 msgid "Show expired stock" msgstr "" -#: common/models.py:2199 +#: common/models.py:2169 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2204 +#: common/models.py:2174 msgid "Show stale stock" msgstr "" -#: common/models.py:2205 +#: common/models.py:2175 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2210 +#: common/models.py:2180 msgid "Show pending builds" msgstr "" -#: common/models.py:2211 +#: common/models.py:2181 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2216 +#: common/models.py:2186 msgid "Show overdue builds" msgstr "" -#: common/models.py:2217 +#: common/models.py:2187 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2222 +#: common/models.py:2192 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2223 +#: common/models.py:2193 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2228 +#: common/models.py:2198 msgid "Show overdue POs" msgstr "" -#: common/models.py:2229 +#: common/models.py:2199 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2234 +#: common/models.py:2204 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2235 +#: common/models.py:2205 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2240 +#: common/models.py:2210 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2241 +#: common/models.py:2211 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2246 +#: common/models.py:2216 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2247 +#: common/models.py:2217 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2252 +#: common/models.py:2222 msgid "Show News" msgstr "" -#: common/models.py:2253 +#: common/models.py:2223 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2258 +#: common/models.py:2228 msgid "Inline label display" msgstr "" -#: common/models.py:2260 +#: common/models.py:2230 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2266 +#: common/models.py:2236 msgid "Default label printer" msgstr "" -#: common/models.py:2268 +#: common/models.py:2238 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2274 +#: common/models.py:2244 msgid "Inline report display" msgstr "" -#: common/models.py:2276 +#: common/models.py:2246 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2282 +#: common/models.py:2252 msgid "Search Parts" msgstr "" -#: common/models.py:2283 +#: common/models.py:2253 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2288 +#: common/models.py:2258 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2289 +#: common/models.py:2259 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2294 +#: common/models.py:2264 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2295 +#: common/models.py:2265 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2300 +#: common/models.py:2270 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2301 +#: common/models.py:2271 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2306 +#: common/models.py:2276 msgid "Search Categories" msgstr "" -#: common/models.py:2307 +#: common/models.py:2277 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2312 +#: common/models.py:2282 msgid "Search Stock" msgstr "" -#: common/models.py:2313 +#: common/models.py:2283 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2318 +#: common/models.py:2288 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2320 +#: common/models.py:2290 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2326 +#: common/models.py:2296 msgid "Search Locations" msgstr "" -#: common/models.py:2327 +#: common/models.py:2297 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2332 +#: common/models.py:2302 msgid "Search Companies" msgstr "" -#: common/models.py:2333 +#: common/models.py:2303 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2338 +#: common/models.py:2308 msgid "Search Build Orders" msgstr "" -#: common/models.py:2339 +#: common/models.py:2309 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2344 +#: common/models.py:2314 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2345 +#: common/models.py:2315 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2350 +#: common/models.py:2320 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2352 +#: common/models.py:2322 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2358 +#: common/models.py:2328 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2359 +#: common/models.py:2329 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2364 +#: common/models.py:2334 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2366 +#: common/models.py:2336 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2372 +#: common/models.py:2342 msgid "Search Return Orders" msgstr "" -#: common/models.py:2373 +#: common/models.py:2343 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2378 +#: common/models.py:2348 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2380 +#: common/models.py:2350 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2386 +#: common/models.py:2356 msgid "Search Preview Results" msgstr "" -#: common/models.py:2388 +#: common/models.py:2358 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2394 +#: common/models.py:2364 msgid "Regex Search" msgstr "" -#: common/models.py:2395 +#: common/models.py:2365 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2400 +#: common/models.py:2370 msgid "Whole Word Search" msgstr "" -#: common/models.py:2401 +#: common/models.py:2371 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2406 +#: common/models.py:2376 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2407 +#: common/models.py:2377 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2412 +#: common/models.py:2382 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2413 +#: common/models.py:2383 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2418 +#: common/models.py:2388 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2419 +#: common/models.py:2389 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2424 +#: common/models.py:2394 msgid "Date Format" msgstr "" -#: common/models.py:2425 +#: common/models.py:2395 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2438 part/templates/part/detail.html:41 +#: common/models.py:2408 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2439 +#: common/models.py:2409 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2444 part/templates/part/detail.html:62 +#: common/models.py:2414 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2446 +#: common/models.py:2416 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2452 +#: common/models.py:2422 msgid "Table String Length" msgstr "" -#: common/models.py:2454 +#: common/models.py:2424 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2460 +#: common/models.py:2430 msgid "Default part label template" msgstr "" -#: common/models.py:2461 +#: common/models.py:2431 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2466 +#: common/models.py:2436 msgid "Default stock item template" msgstr "" -#: common/models.py:2468 +#: common/models.py:2438 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2474 +#: common/models.py:2444 msgid "Default stock location label template" msgstr "" -#: common/models.py:2476 +#: common/models.py:2446 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2482 +#: common/models.py:2452 msgid "Default build line label template" msgstr "" -#: common/models.py:2484 +#: common/models.py:2454 msgid "The build line label template to be automatically selected" msgstr "" -#: common/models.py:2490 +#: common/models.py:2460 msgid "Receive error reports" msgstr "" -#: common/models.py:2491 +#: common/models.py:2461 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2496 +#: common/models.py:2466 msgid "Last used printing machines" msgstr "" -#: common/models.py:2497 +#: common/models.py:2467 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2540 +#: common/models.py:2487 common/models.py:2488 common/models.py:2636 +#: common/models.py:2637 common/models.py:2882 common/models.py:2883 +#: common/models.py:3193 common/models.py:3194 part/models.py:3193 +#: part/models.py:3280 part/models.py:3353 part/models.py:3381 +#: plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "ผู้ใช้งาน" + +#: common/models.py:2510 msgid "Price break quantity" msgstr "" -#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1382 order/models.py:2301 -#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 +#: common/models.py:2517 company/serializers.py:472 order/admin.py:42 +#: order/models.py:1346 order/models.py:2265 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1886 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:740 msgid "Price" msgstr "" -#: common/models.py:2548 +#: common/models.py:2518 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2719 common/models.py:2904 +#: common/models.py:2613 common/models.py:2798 msgid "Endpoint" msgstr "" -#: common/models.py:2720 +#: common/models.py:2614 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2730 +#: common/models.py:2624 msgid "Name for this webhook" msgstr "" -#: common/models.py:2734 company/models.py:160 company/models.py:814 -#: machine/models.py:39 part/admin.py:88 part/models.py:1088 -#: plugin/models.py:65 templates/js/translated/company.js:523 +#: common/models.py:2628 company/models.py:163 company/models.py:782 +#: machine/models.py:39 part/admin.py:88 part/models.py:1081 +#: plugin/models.py:66 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3462,101 +3408,118 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2734 +#: common/models.py:2628 msgid "Is this webhook active" msgstr "" -#: common/models.py:2750 users/models.py:159 +#: common/models.py:2644 users/models.py:159 msgid "Token" msgstr "" -#: common/models.py:2751 +#: common/models.py:2645 msgid "Token for access" msgstr "" -#: common/models.py:2759 +#: common/models.py:2653 msgid "Secret" msgstr "" -#: common/models.py:2760 +#: common/models.py:2654 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2868 +#: common/models.py:2762 msgid "Message ID" msgstr "" -#: common/models.py:2869 +#: common/models.py:2763 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2877 +#: common/models.py:2771 msgid "Host" msgstr "" -#: common/models.py:2878 +#: common/models.py:2772 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2886 +#: common/models.py:2780 msgid "Header" msgstr "" -#: common/models.py:2887 +#: common/models.py:2781 msgid "Header of this message" msgstr "" -#: common/models.py:2894 +#: common/models.py:2788 msgid "Body" msgstr "" -#: common/models.py:2895 +#: common/models.py:2789 msgid "Body of this message" msgstr "" -#: common/models.py:2905 +#: common/models.py:2799 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2910 +#: common/models.py:2804 msgid "Worked on" msgstr "" -#: common/models.py:2911 +#: common/models.py:2805 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:3037 +#: common/models.py:2931 msgid "Id" msgstr "" -#: common/models.py:3039 templates/js/translated/company.js:965 +#: common/models.py:2933 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:3043 templates/js/translated/news.js:60 +#: common/models.py:2935 common/models.py:3177 company/models.py:149 +#: company/models.py:440 company/models.py:500 company/models.py:799 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +#: part/admin.py:55 part/models.py:955 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "ลิงก์" + +#: common/models.py:2937 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:3045 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2939 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:3047 templates/js/translated/news.js:52 +#: common/models.py:2941 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Read" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Was this news item read?" msgstr "" -#: common/models.py:3067 company/models.py:156 part/models.py:972 +#: common/models.py:2961 company/models.py:159 part/models.py:965 #: 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.html:35 @@ -3566,34 +3529,89 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:3067 +#: common/models.py:2961 msgid "Image file" msgstr "" -#: common/models.py:3109 +#: common/models.py:2973 common/models.py:3161 +msgid "Target model type for this image" +msgstr "" + +#: common/models.py:2977 +msgid "Target model ID for this image" +msgstr "" + +#: common/models.py:3018 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3128 +#: common/models.py:3037 msgid "Unit name" msgstr "" -#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3044 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3136 +#: common/models.py:3045 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3052 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3144 +#: common/models.py:3053 msgid "Unit definition" msgstr "" +#: common/models.py:3111 common/models.py:3168 stock/models.py:2426 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "ไฟล์แนบ" + +#: common/models.py:3123 +msgid "Missing file" +msgstr "ไม่พบไฟล์" + +#: common/models.py:3124 +msgid "Missing external link" +msgstr "" + +#: common/models.py:3169 +msgid "Select file to attach" +msgstr "เลือกไฟล์ที่ต้องการแนบ" + +#: common/models.py:3184 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "ความคิดเห็น" + +#: common/models.py:3185 +msgid "Attachment comment" +msgstr "" + +#: common/models.py:3201 +msgid "Upload date" +msgstr "" + +#: common/models.py:3202 +msgid "Date the file was uploaded" +msgstr "" + +#: common/models.py:3206 +msgid "File size" +msgstr "" + +#: common/models.py:3206 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3244 common/serializers.py:553 +msgid "Invalid model type specified for attachment" +msgstr "" + #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" @@ -3628,66 +3646,103 @@ msgstr "" msgid "Error raised by plugin" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:371 msgid "Is Running" msgstr "" -#: common/serializers.py:372 +#: common/serializers.py:377 msgid "Pending Tasks" msgstr "" -#: common/serializers.py:378 +#: common/serializers.py:383 msgid "Scheduled Tasks" msgstr "" -#: common/serializers.py:384 +#: common/serializers.py:389 msgid "Failed Tasks" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Task ID" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Unique task ID" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock time" msgstr "" -#: common/serializers.py:403 +#: common/serializers.py:408 msgid "Task name" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function name" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Arguments" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Task arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Keyword Arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Task keyword arguments" msgstr "" +#: common/serializers.py:525 +msgid "Filename" +msgstr "ชื่อไฟล์" + +#: common/serializers.py:532 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: common/serializers.py:559 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "" + +#: common/validators.py:33 +msgid "No attachment model type provided" +msgstr "" + +#: common/validators.py:39 +msgid "Invalid attachment model type" +msgstr "" + +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "" + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +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 @@ -3726,210 +3781,222 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/api.py:164 +#: company/api.py:144 msgid "Part is Active" msgstr "" -#: company/api.py:168 +#: company/api.py:148 msgid "Manufacturer is Active" msgstr "" -#: company/api.py:317 +#: company/api.py:281 msgid "Supplier Part is Active" msgstr "" -#: company/api.py:321 +#: company/api.py:285 msgid "Internal Part is Active" msgstr "" -#: company/api.py:325 +#: company/api.py:289 msgid "Supplier is Active" msgstr "" -#: company/models.py:114 +#: company/models.py:100 company/models.py:365 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:822 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "" + +#: company/models.py:117 msgid "Company description" msgstr "" -#: company/models.py:115 +#: company/models.py:118 msgid "Description of the company" msgstr "" -#: company/models.py:120 company/templates/company/company_base.html:106 +#: company/models.py:123 company/templates/company/company_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:532 msgid "Website" msgstr "" -#: company/models.py:120 +#: company/models.py:123 msgid "Company website URL" msgstr "" -#: company/models.py:125 +#: company/models.py:128 msgid "Phone number" msgstr "" -#: company/models.py:127 +#: company/models.py:130 msgid "Contact phone number" msgstr "" -#: company/models.py:134 +#: company/models.py:137 msgid "Contact email address" msgstr "" -#: company/models.py:139 company/templates/company/company_base.html:145 +#: company/models.py:142 company/templates/company/company_base.html:145 #: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "" -#: company/models.py:141 +#: company/models.py:144 msgid "Point of contact" msgstr "" -#: company/models.py:147 +#: company/models.py:150 msgid "Link to external company information" msgstr "" -#: company/models.py:160 +#: company/models.py:163 msgid "Is this company active?" msgstr "" -#: company/models.py:165 +#: company/models.py:168 msgid "is customer" msgstr "" -#: company/models.py:166 +#: company/models.py:169 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:171 +#: company/models.py:174 msgid "is supplier" msgstr "" -#: company/models.py:172 +#: company/models.py:175 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:177 +#: company/models.py:180 msgid "is manufacturer" msgstr "" -#: company/models.py:178 +#: company/models.py:181 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:186 +#: company/models.py:189 msgid "Default currency used for this company" msgstr "" -#: company/models.py:273 company/models.py:382 -#: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:812 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 -msgid "Company" -msgstr "" - -#: company/models.py:383 +#: company/models.py:366 msgid "Select company" msgstr "" -#: company/models.py:388 +#: company/models.py:371 msgid "Address title" msgstr "" -#: company/models.py:389 +#: company/models.py:372 msgid "Title describing the address entry" msgstr "" -#: company/models.py:395 +#: company/models.py:378 msgid "Primary address" msgstr "" -#: company/models.py:396 +#: company/models.py:379 msgid "Set as primary address" msgstr "" -#: company/models.py:401 templates/js/translated/company.js:914 +#: company/models.py:384 templates/js/translated/company.js:914 #: templates/js/translated/company.js:971 msgid "Line 1" msgstr "" -#: company/models.py:402 +#: company/models.py:385 msgid "Address line 1" msgstr "" -#: company/models.py:408 templates/js/translated/company.js:915 +#: company/models.py:391 templates/js/translated/company.js:915 #: templates/js/translated/company.js:977 msgid "Line 2" msgstr "" -#: company/models.py:409 +#: company/models.py:392 msgid "Address line 2" msgstr "" -#: company/models.py:415 company/models.py:416 +#: company/models.py:398 company/models.py:399 #: templates/js/translated/company.js:983 msgid "Postal code" msgstr "" -#: company/models.py:422 +#: company/models.py:405 msgid "City/Region" msgstr "" -#: company/models.py:423 +#: company/models.py:406 msgid "Postal code city/region" msgstr "" -#: company/models.py:429 +#: company/models.py:412 msgid "State/Province" msgstr "" -#: company/models.py:430 +#: company/models.py:413 msgid "State or province" msgstr "" -#: company/models.py:436 templates/js/translated/company.js:1001 +#: company/models.py:419 templates/js/translated/company.js:1001 msgid "Country" msgstr "" -#: company/models.py:437 +#: company/models.py:420 msgid "Address country" msgstr "" -#: company/models.py:443 +#: company/models.py:426 msgid "Courier shipping notes" msgstr "" -#: company/models.py:444 +#: company/models.py:427 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:450 +#: company/models.py:433 msgid "Internal shipping notes" msgstr "" -#: company/models.py:451 +#: company/models.py:434 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:458 +#: company/models.py:441 msgid "Link to address information (external)" msgstr "" -#: company/models.py:489 company/models.py:792 stock/models.py:768 -#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 +#: company/models.py:463 company/models.py:574 company/models.py:792 +#: 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:475 company/models.py:760 stock/models.py:766 +#: stock/serializers.py:422 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:491 company/models.py:794 +#: company/models.py:477 company/models.py:762 msgid "Select part" msgstr "" -#: company/models.py:500 company/templates/company/company_base.html:82 +#: company/models.py:486 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:530 +#: company/templates/company/supplier_part.html:145 part/serializers.py:525 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -3939,152 +4006,154 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:501 +#: company/models.py:487 msgid "Select manufacturer" msgstr "" -#: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:540 +#: company/models.py:493 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:535 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 -#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1801 #: templates/js/translated/purchase_order.js:1851 #: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "" -#: company/models.py:508 +#: company/models.py:494 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:515 +#: company/models.py:501 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:524 +#: company/models.py:510 msgid "Manufacturer part description" msgstr "" -#: company/models.py:581 company/models.py:608 company/models.py:824 -#: 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:615 +#: company/models.py:581 msgid "Parameter name" msgstr "" -#: company/models.py:621 report/templates/report/inventree_test_report.html:104 -#: stock/models.py:2429 templates/js/translated/company.js:1166 -#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 +#: company/models.py:587 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2418 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1493 #: templates/js/translated/stock.js:1522 msgid "Value" msgstr "" -#: company/models.py:622 +#: company/models.py:588 msgid "Parameter value" msgstr "" -#: company/models.py:629 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1052 part/models.py:3666 +#: company/models.py:595 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1045 part/models.py:3646 #: part/templates/part/part_base.html:284 -#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1512 +#: templates/js/translated/part.js:1616 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:630 +#: company/models.py:596 msgid "Parameter units" msgstr "" -#: company/models.py:732 +#: company/models.py:648 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:777 stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "" + +#: company/models.py:700 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:739 +#: company/models.py:707 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:753 +#: company/models.py:721 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/models.py:770 company/templates/company/company_base.html:87 #: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:514 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:509 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:511 -#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1769 #: templates/js/translated/pricing.js:498 #: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "" -#: company/models.py:803 +#: company/models.py:771 msgid "Select supplier" msgstr "" -#: company/models.py:809 part/serializers.py:525 +#: company/models.py:777 part/serializers.py:520 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:815 +#: company/models.py:783 msgid "Is this supplier part active?" msgstr "" -#: company/models.py:825 +#: company/models.py:793 msgid "Select manufacturer part" msgstr "" -#: company/models.py:832 +#: company/models.py:800 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:841 +#: company/models.py:809 msgid "Supplier part description" msgstr "" -#: company/models.py:848 company/templates/company/supplier_part.html:187 -#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 +#: company/models.py:816 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4093 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_purchase_order_report.html:32 #: report/templates/report/inventree_return_order_report.html:27 #: report/templates/report/inventree_sales_order_report.html:32 #: report/templates/report/inventree_stock_location_report.html:105 -#: stock/serializers.py:708 +#: stock/serializers.py:710 msgid "Note" msgstr "" -#: company/models.py:857 part/models.py:2010 +#: company/models.py:825 part/models.py:2003 msgid "base cost" msgstr "" -#: company/models.py:858 part/models.py:2011 +#: company/models.py:826 part/models.py:2004 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:865 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 +#: company/models.py:833 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:797 stock/serializers.py:1475 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 #: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "" -#: company/models.py:866 +#: company/models.py:834 msgid "Part packaging" msgstr "" -#: company/models.py:871 templates/js/translated/company.js:1651 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: company/models.py:839 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:311 #: templates/js/translated/purchase_order.js:841 #: templates/js/translated/purchase_order.js:1103 @@ -4093,35 +4162,35 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:873 +#: company/models.py:841 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:892 part/models.py:2017 +#: company/models.py:860 part/models.py:2010 msgid "multiple" msgstr "" -#: company/models.py:893 +#: company/models.py:861 msgid "Order multiple" msgstr "" -#: company/models.py:905 +#: company/models.py:873 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:911 +#: company/models.py:879 msgid "Availability Updated" msgstr "" -#: company/models.py:912 +#: company/models.py:880 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:163 +#: company/serializers.py:161 msgid "Default currency used for this supplier" msgstr "" -#: company/serializers.py:381 part/admin.py:126 +#: company/serializers.py:357 part/admin.py:126 #: part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1689 #: templates/js/translated/table_filters.js:355 @@ -4133,7 +4202,7 @@ msgstr "" #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 #: templates/js/translated/model_renderers.js:312 -#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +#: templates/js/translated/part.js:815 templates/js/translated/part.js:1219 msgid "Inactive" msgstr "" @@ -4172,7 +4241,7 @@ msgstr "" #: report/templates/report/inventree_purchase_order_report.html:40 #: report/templates/report/inventree_sales_order_report.html:40 #: report/templates/report/inventree_test_report.html:84 -#: report/templates/report/inventree_test_report.html:163 +#: report/templates/report/inventree_test_report.html:162 msgid "Part image" msgstr "" @@ -4191,10 +4260,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:92 order/models.py:940 -#: order/models.py:2068 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:148 stock/models.py:821 -#: stock/models.py:822 stock/serializers.py:1229 +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2032 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:819 +#: stock/models.py:820 stock/serializers.py:1225 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 @@ -4405,7 +4474,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:836 +#: part/admin.py:122 part/serializers.py:832 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4425,8 +4494,8 @@ msgstr "" msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:206 -#: templates/js/translated/part.js:1422 +#: company/templates/company/manufacturer_part.html:196 +#: templates/js/translated/part.js:1423 msgid "Add Parameter" msgstr "" @@ -4454,15 +4523,6 @@ msgstr "" msgid "Addresses" msgstr "" -#: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:452 -#: stock/models.py:779 stock/templates/stock/item_base.html:233 -#: templates/js/translated/company.js:1600 -#: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2280 -msgid "Supplier Part" -msgstr "" - #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1526 msgid "Supplier part actions" @@ -4505,8 +4565,8 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:524 -#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: part/bom.py:311 part/serializers.py:519 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1787 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1850 #: templates/js/translated/purchase_order.js:2028 @@ -4518,12 +4578,12 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:207 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" @@ -4555,15 +4615,15 @@ msgid "Update Part Availability" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:835 part/stocktake.py:223 +#: part/serializers.py:831 part/stocktake.py:224 #: part/templates/part/category.html:183 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:916 stock/serializers.py:1080 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:918 stock/serializers.py:1091 #: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:191 #: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1061 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:206 msgid "Stock Items" @@ -4590,10 +4650,6 @@ msgstr "" 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 "" @@ -4614,7 +4670,7 @@ msgstr "" msgid "Connected" msgstr "" -#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: machine/machine_types/label_printer.py:235 order/api.py:1467 #: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "" @@ -4703,7 +4759,7 @@ msgstr "" msgid "Config type" msgstr "" -#: order/admin.py:30 order/models.py:89 +#: order/admin.py:30 order/models.py:90 #: report/templates/report/inventree_purchase_order_report.html:31 #: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 @@ -4712,30 +4768,30 @@ msgstr "" msgid "Total Price" msgstr "" -#: order/api.py:161 order/serializers.py:91 +#: order/api.py:157 order/serializers.py:90 #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "" -#: order/api.py:165 templates/js/translated/table_filters.js:194 +#: order/api.py:161 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "" -#: order/api.py:240 +#: order/api.py:236 msgid "No matching purchase order found" msgstr "" -#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 -#: order/models.py:1586 order/models.py:1700 order/models.py:1854 -#: order/models.py:2267 order/models.py:2318 +#: order/api.py:435 order/api.py:801 order/models.py:1395 order/models.py:1504 +#: order/models.py:1550 order/models.py:1664 order/models.py:1818 +#: order/models.py:2231 order/models.py:2282 #: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "" -#: order/api.py:441 order/api.py:838 +#: order/api.py:439 order/api.py:822 msgid "Order Complete" msgstr "" @@ -4743,13 +4799,13 @@ msgstr "" msgid "Order Pending" msgstr "" -#: order/api.py:1509 order/models.py:380 order/models.py:1432 -#: order/models.py:1541 order/templates/order/order_base.html:9 +#: order/api.py:1461 order/models.py:380 order/models.py:1396 +#: order/models.py:1505 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_purchase_order_report.html:14 -#: stock/serializers.py:119 stock/templates/stock/item_base.html:176 +#: stock/serializers.py:118 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/part.js:1746 templates/js/translated/pricing.js:804 #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1673 @@ -4757,8 +4813,8 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1513 order/models.py:2017 order/models.py:2268 -#: order/models.py:2319 order/templates/order/return_order_base.html:9 +#: order/api.py:1465 order/models.py:1981 order/models.py:2232 +#: order/models.py:2283 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report.html:13 #: templates/js/translated/return_order.js:280 @@ -4766,15 +4822,15 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/models.py:90 +#: order/models.py:91 msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:71 +#: order/models.py:96 order/serializers.py:70 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:72 +#: order/models.py:99 order/serializers.py:71 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -4790,7 +4846,7 @@ msgstr "" msgid "Select project code for this order" msgstr "" -#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 msgid "Link to external page" msgstr "" @@ -4814,11 +4870,11 @@ msgstr "" msgid "Company address for this order" msgstr "" -#: order/models.py:464 order/models.py:929 +#: order/models.py:464 order/models.py:927 msgid "Order reference" msgstr "" -#: order/models.py:472 order/models.py:953 +#: order/models.py:472 order/models.py:951 msgid "Purchase order status" msgstr "" @@ -4839,15 +4895,15 @@ msgstr "" msgid "received by" msgstr "" -#: order/models.py:514 order/models.py:2094 +#: order/models.py:514 order/models.py:2058 msgid "Issue Date" msgstr "" -#: order/models.py:515 order/models.py:2095 +#: order/models.py:515 order/models.py:2059 msgid "Date order was issued" msgstr "" -#: order/models.py:522 order/models.py:2102 +#: order/models.py:522 order/models.py:2066 msgid "Date order was completed" msgstr "" @@ -4859,94 +4915,94 @@ msgstr "" msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:941 +#: order/models.py:939 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:964 order/models.py:2087 +#: order/models.py:962 order/models.py:2051 msgid "Customer Reference " msgstr "" -#: order/models.py:965 order/models.py:2088 +#: order/models.py:963 order/models.py:2052 msgid "Customer order reference code" msgstr "" -#: order/models.py:969 order/models.py:1707 +#: order/models.py:967 order/models.py:1671 #: templates/js/translated/sales_order.js:879 #: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "" -#: order/models.py:978 +#: order/models.py:976 msgid "shipped by" msgstr "" -#: order/models.py:1027 +#: order/models.py:1025 msgid "Order is already complete" msgstr "" -#: order/models.py:1030 +#: order/models.py:1028 msgid "Order is already cancelled" msgstr "" -#: order/models.py:1034 +#: order/models.py:1032 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:1038 +#: order/models.py:1036 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:1043 +#: order/models.py:1041 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1309 +#: order/models.py:1273 msgid "Item quantity" msgstr "" -#: order/models.py:1326 +#: order/models.py:1290 msgid "Line item reference" msgstr "" -#: order/models.py:1333 +#: order/models.py:1297 msgid "Line item notes" msgstr "" -#: order/models.py:1345 +#: order/models.py:1309 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1366 +#: order/models.py:1330 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1372 +#: order/models.py:1336 msgid "Context" msgstr "" -#: order/models.py:1373 +#: order/models.py:1337 msgid "Additional context for this line" msgstr "" -#: order/models.py:1383 +#: order/models.py:1347 msgid "Unit price" msgstr "" -#: order/models.py:1416 +#: order/models.py:1380 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1423 +#: order/models.py:1387 msgid "deleted" msgstr "" -#: order/models.py:1451 +#: order/models.py:1415 msgid "Supplier part" msgstr "" -#: order/models.py:1458 order/templates/order/order_base.html:196 -#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: order/models.py:1422 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1870 templates/js/translated/part.js:1902 #: templates/js/translated/purchase_order.js:1306 #: templates/js/translated/purchase_order.js:2169 #: templates/js/translated/return_order.js:763 @@ -4955,196 +5011,196 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1459 +#: order/models.py:1423 msgid "Number of items received" msgstr "" -#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 +#: order/models.py:1431 stock/models.py:938 stock/serializers.py:556 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "" -#: order/models.py:1468 +#: order/models.py:1432 msgid "Unit purchase price" msgstr "" -#: order/models.py:1483 +#: order/models.py:1447 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1574 +#: order/models.py:1538 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1579 +#: order/models.py:1543 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1605 part/templates/part/part_pricing.html:107 +#: order/models.py:1569 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:1606 +#: order/models.py:1570 msgid "Unit sale price" msgstr "" -#: order/models.py:1615 order/status_codes.py:43 +#: order/models.py:1579 order/status_codes.py:43 #: templates/js/translated/sales_order.js:1559 #: templates/js/translated/sales_order.js:1680 #: templates/js/translated/sales_order.js:1993 msgid "Shipped" msgstr "จัดส่งแล้ว" -#: order/models.py:1616 +#: order/models.py:1580 msgid "Shipped quantity" msgstr "" -#: order/models.py:1708 +#: order/models.py:1672 msgid "Date of shipment" msgstr "" -#: order/models.py:1714 templates/js/translated/sales_order.js:1072 +#: order/models.py:1678 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "" -#: order/models.py:1715 +#: order/models.py:1679 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1723 +#: order/models.py:1687 msgid "Checked By" msgstr "" -#: order/models.py:1724 +#: order/models.py:1688 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 -#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 +#: order/models.py:1695 order/models.py:1908 order/serializers.py:1342 +#: order/serializers.py:1452 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "" -#: order/models.py:1732 +#: order/models.py:1696 msgid "Shipment number" msgstr "" -#: order/models.py:1740 +#: order/models.py:1704 msgid "Tracking Number" msgstr "" -#: order/models.py:1741 +#: order/models.py:1705 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1748 +#: order/models.py:1712 msgid "Invoice Number" msgstr "" -#: order/models.py:1749 +#: order/models.py:1713 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1769 +#: order/models.py:1733 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1772 +#: order/models.py:1736 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1890 order/models.py:1892 +#: order/models.py:1854 order/models.py:1856 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1899 +#: order/models.py:1863 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1902 +#: order/models.py:1866 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1905 +#: order/models.py:1869 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1924 order/serializers.py:1231 +#: order/models.py:1888 order/serializers.py:1219 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1927 +#: order/models.py:1891 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1928 plugin/base/barcodes/api.py:481 +#: order/models.py:1892 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1936 +#: order/models.py:1900 msgid "Line" msgstr "" -#: order/models.py:1945 +#: order/models.py:1909 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1958 order/models.py:2275 +#: order/models.py:1922 order/models.py:2239 #: templates/js/translated/return_order.js:721 msgid "Item" msgstr "" -#: order/models.py:1959 +#: order/models.py:1923 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1968 +#: order/models.py:1932 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:2057 +#: order/models.py:2021 msgid "Return Order reference" msgstr "" -#: order/models.py:2069 +#: order/models.py:2033 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:2081 +#: order/models.py:2045 msgid "Return order status" msgstr "" -#: order/models.py:2260 +#: order/models.py:2224 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2276 +#: order/models.py:2240 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2282 +#: order/models.py:2246 msgid "Received Date" msgstr "" -#: order/models.py:2283 +#: order/models.py:2247 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2294 templates/js/translated/return_order.js:732 +#: order/models.py:2258 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2295 +#: order/models.py:2259 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2302 +#: order/models.py:2266 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/serializers.py:79 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_purchase_order_report.html:22 @@ -5153,163 +5209,163 @@ msgstr "" msgid "Line Items" msgstr "" -#: order/serializers.py:84 +#: order/serializers.py:83 msgid "Completed Lines" msgstr "" -#: order/serializers.py:287 +#: order/serializers.py:286 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:302 order/serializers.py:1247 +#: order/serializers.py:301 order/serializers.py:1235 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:312 order/serializers.py:1257 +#: order/serializers.py:311 order/serializers.py:1245 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:440 +#: order/serializers.py:439 msgid "Order is not open" msgstr "" -#: order/serializers.py:461 +#: order/serializers.py:460 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:463 +#: order/serializers.py:462 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:473 +#: order/serializers.py:472 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:478 msgid "Merge Items" msgstr "" -#: order/serializers.py:481 +#: order/serializers.py:480 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:499 +#: order/serializers.py:498 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:502 +#: order/serializers.py:501 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:510 +#: order/serializers.py:509 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:511 +#: order/serializers.py:510 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:550 order/serializers.py:1325 +#: order/serializers.py:549 order/serializers.py:1313 msgid "Line Item" msgstr "" -#: order/serializers.py:556 +#: order/serializers.py:555 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1657 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:581 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:589 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:601 templates/js/translated/barcode.js:52 +#: order/serializers.py:600 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:602 +#: order/serializers.py:601 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:618 +#: order/serializers.py:617 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:642 +#: order/serializers.py:641 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:690 order/serializers.py:1696 +#: order/serializers.py:689 order/serializers.py:1673 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:706 +#: order/serializers.py:705 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:717 +#: order/serializers.py:716 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1074 +#: order/serializers.py:1062 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1134 +#: order/serializers.py:1122 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1195 order/serializers.py:1334 +#: order/serializers.py:1183 order/serializers.py:1322 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1214 +#: order/serializers.py:1202 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1344 +#: order/serializers.py:1332 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1366 order/serializers.py:1472 +#: order/serializers.py:1354 order/serializers.py:1460 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1369 order/serializers.py:1475 +#: order/serializers.py:1357 order/serializers.py:1463 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1416 +#: order/serializers.py:1404 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1423 +#: order/serializers.py:1411 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1650 +#: order/serializers.py:1627 msgid "Return order line item" msgstr "" -#: order/serializers.py:1656 +#: order/serializers.py:1633 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1659 +#: order/serializers.py:1636 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1688 +#: order/serializers.py:1665 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1766 +#: order/serializers.py:1743 msgid "Line price currency" msgstr "" @@ -5639,7 +5695,7 @@ msgstr "" #: 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/part.js:1073 #: templates/js/translated/purchase_order.js:1752 #: templates/js/translated/return_order.js:380 #: templates/js/translated/sales_order.js:891 @@ -5735,34 +5791,34 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:406 part/models.py:3964 part/stocktake.py:218 -#: stock/admin.py:153 +#: part/admin.py:39 part/admin.py:398 part/models.py:3944 part/stocktake.py:219 +#: stock/admin.py:152 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 -#: stock/admin.py:157 +#: part/admin.py:41 part/admin.py:405 part/models.py:3945 part/stocktake.py:220 +#: stock/admin.py:156 msgid "Part Name" msgstr "" -#: part/admin.py:45 part/stocktake.py:220 +#: part/admin.py:45 part/stocktake.py:221 msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:940 part/templates/part/part_base.html:269 #: report/templates/report/inventree_stock_location_report.html:103 -#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/part.js:1227 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 -#: report/models.py:161 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2346 +#: part/admin.py:50 part/models.py:949 part/templates/part/part_base.html:277 +#: report/models.py:162 templates/js/translated/part.js:1232 +#: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:319 part/models.py:929 +#: part/admin.py:53 part/admin.py:319 part/models.py:922 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5771,11 +5827,11 @@ msgstr "" msgid "Part Image" msgstr "" -#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:222 msgid "Category ID" msgstr "" -#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:223 msgid "Category Name" msgstr "" @@ -5787,11 +5843,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:908 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1036 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5799,26 +5855,26 @@ msgstr "" 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 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:235 +#: templates/js/translated/part.js:715 templates/js/translated/part.js:2153 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3123 part/models.py:3137 -#: templates/js/translated/part.js:969 +#: part/admin.py:155 part/models.py:3088 part/models.py:3102 +#: templates/js/translated/part.js:970 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3130 part/models.py:3144 -#: templates/js/translated/part.js:979 +#: part/admin.py:158 part/models.py:3095 part/models.py:3109 +#: templates/js/translated/part.js:980 msgid "Maximum Cost" msgstr "" -#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 msgid "Parent ID" msgstr "" -#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 msgid "Parent Name" msgstr "" @@ -5827,141 +5883,149 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:325 part/models.py:393 part/serializers.py:117 -#: part/serializers.py:272 part/serializers.py:391 +#: part/admin.py:325 part/models.py:396 part/serializers.py:124 +#: part/serializers.py:267 part/serializers.py:386 #: 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:2803 templates/js/translated/search.js:130 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "ชิ้นส่วน" -#: part/admin.py:386 +#: part/admin.py:378 msgid "BOM Level" msgstr "" -#: part/admin.py:389 +#: part/admin.py:381 msgid "BOM Item ID" msgstr "" -#: part/admin.py:399 +#: part/admin.py:391 msgid "Parent IPN" msgstr "" -#: part/admin.py:410 part/models.py:3966 +#: part/admin.py:402 part/models.py:3946 msgid "Part IPN" msgstr "" -#: part/admin.py:423 part/serializers.py:1278 +#: part/admin.py:415 part/serializers.py:1274 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:428 part/serializers.py:1293 +#: part/admin.py:420 part/serializers.py:1289 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:110 +#: part/api.py:104 msgid "Starred" msgstr "" -#: part/api.py:112 +#: part/api.py:106 msgid "Filter by starred categories" msgstr "" -#: part/api.py:129 stock/api.py:318 +#: part/api.py:123 stock/api.py:312 msgid "Depth" msgstr "" -#: part/api.py:129 +#: part/api.py:123 msgid "Filter by category depth" msgstr "" -#: part/api.py:147 stock/api.py:336 +#: part/api.py:141 stock/api.py:330 +msgid "Top Level" +msgstr "" + +#: part/api.py:143 +msgid "Filter by top-level categories" +msgstr "" + +#: part/api.py:156 stock/api.py:345 msgid "Cascade" msgstr "" -#: part/api.py:149 +#: part/api.py:158 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:169 +#: part/api.py:179 templates/js/translated/part.js:308 msgid "Parent" msgstr "" -#: part/api.py:171 +#: part/api.py:181 msgid "Filter by parent category" msgstr "" -#: part/api.py:204 +#: part/api.py:214 msgid "Exclude Tree" msgstr "" -#: part/api.py:206 +#: part/api.py:216 msgid "Exclude sub-categories under the specified category" msgstr "" -#: part/api.py:455 +#: part/api.py:449 msgid "Has Results" msgstr "" -#: part/api.py:622 +#: part/api.py:616 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:640 +#: part/api.py:634 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:656 +#: part/api.py:650 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:740 +#: part/api.py:734 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:887 +#: part/api.py:881 msgid "Valid" msgstr "" -#: part/api.py:888 +#: part/api.py:882 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:894 +#: part/api.py:888 msgid "This option must be selected" msgstr "" -#: part/api.py:1111 +#: part/api.py:1105 msgid "BOM Valid" msgstr "" -#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 -#: part/serializers.py:406 part/serializers.py:1134 -#: part/templates/part/part_base.html:260 stock/api.py:781 +#: part/api.py:1508 part/models.py:932 part/models.py:3374 part/models.py:3889 +#: part/serializers.py:401 part/serializers.py:1130 +#: part/templates/part/part_base.html:260 stock/api.py:791 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2376 +#: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/api.py:1803 +#: part/api.py:1796 msgid "Uses" msgstr "" -#: part/bom.py:170 part/models.py:102 part/models.py:982 +#: part/bom.py:170 part/models.py:104 part/models.py:975 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 part/serializers.py:837 +#: part/bom.py:171 part/serializers.py:833 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5970,1054 +6034,1066 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 +#: part/models.py:85 part/models.py:3890 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:84 part/templates/part/category.html:136 +#: part/models.py:86 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "" -#: part/models.py:103 +#: part/models.py:105 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 +#: part/models.py:110 stock/models.py:174 templates/js/translated/part.js:2810 #: templates/js/translated/stock.js:2772 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:110 +#: part/models.py:112 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:119 +#: part/models.py:121 msgid "Default keywords" msgstr "" -#: part/models.py:120 +#: part/models.py:122 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 stock/models.py:85 stock/models.py:156 +#: part/models.py:128 stock/models.py:86 stock/models.py:157 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:127 stock/models.py:157 +#: part/models.py:129 stock/models.py:158 msgid "Icon (optional)" msgstr "" -#: part/models.py:149 +#: part/models.py:151 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:482 +#: part/models.py:485 msgid "Cannot delete this part as it is still active" msgstr "" -#: part/models.py:489 +#: part/models.py:490 msgid "Cannot delete this part as it is used in an assembly" msgstr "" -#: part/models.py:527 +#: part/models.py:528 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:575 part/models.py:582 +#: part/models.py:576 part/models.py:583 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:594 +#: part/models.py:595 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:659 +#: part/models.py:658 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:739 +#: part/models.py:736 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:844 +#: part/models.py:837 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:854 +#: part/models.py:847 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:869 +#: part/models.py:862 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:898 part/models.py:3965 +#: part/models.py:891 part/models.py:3945 msgid "Part name" msgstr "" -#: part/models.py:903 +#: part/models.py:896 msgid "Is Template" msgstr "" -#: part/models.py:904 +#: part/models.py:897 msgid "Is this part a template part?" msgstr "" -#: part/models.py:914 +#: part/models.py:907 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:922 +#: part/models.py:915 msgid "Part description (optional)" msgstr "" -#: part/models.py:930 +#: part/models.py:923 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:940 +#: part/models.py:933 msgid "Part category" msgstr "" -#: part/models.py:948 +#: part/models.py:941 msgid "Internal Part Number" msgstr "" -#: part/models.py:955 +#: part/models.py:948 msgid "Part revision or version number" msgstr "" -#: part/models.py:980 +#: part/models.py:973 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:1026 part/templates/part/part_base.html:376 +#: part/models.py:1019 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:1027 +#: part/models.py:1020 msgid "Default supplier part" msgstr "" -#: part/models.py:1034 +#: part/models.py:1027 msgid "Default Expiry" msgstr "" -#: part/models.py:1035 +#: part/models.py:1028 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:1044 +#: part/models.py:1037 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:1053 +#: part/models.py:1046 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1060 +#: part/models.py:1053 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1066 +#: part/models.py:1059 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1072 +#: part/models.py:1065 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1078 +#: part/models.py:1071 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1084 +#: part/models.py:1077 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1088 +#: part/models.py:1081 msgid "Is this part active?" msgstr "" -#: part/models.py:1094 +#: part/models.py:1087 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1100 +#: part/models.py:1093 msgid "BOM checksum" msgstr "" -#: part/models.py:1101 +#: part/models.py:1094 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1109 +#: part/models.py:1102 msgid "BOM checked by" msgstr "" -#: part/models.py:1114 +#: part/models.py:1107 msgid "BOM checked date" msgstr "" -#: part/models.py:1130 +#: part/models.py:1123 msgid "Creation User" msgstr "" -#: part/models.py:1140 +#: part/models.py:1133 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1145 part/templates/part/part_base.html:339 +#: part/models.py:1138 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2470 +#: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:2018 +#: part/models.py:2011 msgid "Sell multiple" msgstr "" -#: part/models.py:3037 +#: part/models.py:3002 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:3053 +#: part/models.py:3018 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:3054 +#: part/models.py:3019 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:3060 +#: part/models.py:3025 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3026 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:3067 +#: part/models.py:3032 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3033 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3074 +#: part/models.py:3039 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3040 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3046 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3047 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3053 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3054 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3060 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3096 +#: part/models.py:3061 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3102 +#: part/models.py:3067 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3103 +#: part/models.py:3068 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3109 +#: part/models.py:3074 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3110 +#: part/models.py:3075 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3116 +#: part/models.py:3081 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3117 +#: part/models.py:3082 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3124 +#: part/models.py:3089 msgid "Override minimum cost" msgstr "" -#: part/models.py:3131 +#: part/models.py:3096 msgid "Override maximum cost" msgstr "" -#: part/models.py:3138 +#: part/models.py:3103 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3145 +#: part/models.py:3110 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3151 +#: part/models.py:3116 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3152 +#: part/models.py:3117 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3158 +#: part/models.py:3123 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3159 +#: part/models.py:3124 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3165 +#: part/models.py:3130 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3131 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3172 +#: part/models.py:3137 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3138 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3192 +#: part/models.py:3157 msgid "Part for stocktake" msgstr "" -#: part/models.py:3197 +#: part/models.py:3162 msgid "Item Count" msgstr "" -#: part/models.py:3198 +#: part/models.py:3163 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3206 +#: part/models.py:3171 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3210 part/models.py:3293 +#: part/models.py:3175 part/models.py:3258 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report.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/part.js:1086 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" -#: part/models.py:3211 +#: part/models.py:3176 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3219 +#: part/models.py:3184 msgid "Additional notes" msgstr "" -#: part/models.py:3229 +#: part/models.py:3194 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3235 +#: part/models.py:3200 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3236 +#: part/models.py:3201 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3242 +#: part/models.py:3207 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3243 +#: part/models.py:3208 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3264 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3300 +#: part/models.py:3265 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3270 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3306 +#: part/models.py:3271 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3316 +#: part/models.py:3281 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3478 +#: part/models.py:3423 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3489 +#: part/models.py:3444 part/models.py:3608 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3455 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3500 +#: part/models.py:3466 msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3517 templates/js/translated/part.js:2878 +#: part/models.py:3483 templates/js/translated/part.js:2880 msgid "Test Name" msgstr "" -#: part/models.py:3518 +#: part/models.py:3484 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3524 +#: part/models.py:3490 msgid "Test Key" msgstr "" -#: part/models.py:3525 +#: part/models.py:3491 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3532 +#: part/models.py:3498 msgid "Test Description" msgstr "" -#: part/models.py:3533 +#: part/models.py:3499 msgid "Enter description for this test" msgstr "" -#: part/models.py:3537 report/models.py:208 -#: templates/js/translated/part.js:2899 +#: part/models.py:3503 report/models.py:209 +#: templates/js/translated/part.js:2901 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" -#: part/models.py:3537 +#: part/models.py:3503 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3542 templates/js/translated/part.js:2907 +#: part/models.py:3508 templates/js/translated/part.js:2909 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3543 +#: part/models.py:3509 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3548 templates/js/translated/part.js:2915 +#: part/models.py:3514 templates/js/translated/part.js:2917 msgid "Requires Value" msgstr "" -#: part/models.py:3549 +#: part/models.py:3515 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3554 templates/js/translated/part.js:2922 +#: part/models.py:3520 templates/js/translated/part.js:2924 msgid "Requires Attachment" msgstr "" -#: part/models.py:3556 +#: part/models.py:3522 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3603 +#: part/models.py:3528 part/models.py:3667 templates/js/translated/part.js:1637 +msgid "Choices" +msgstr "" + +#: part/models.py:3529 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3583 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3608 +#: part/models.py:3588 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3628 -msgid "Choices must be unique" -msgstr "" - -#: part/models.py:3645 +#: part/models.py:3625 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3660 +#: part/models.py:3640 msgid "Parameter Name" msgstr "" -#: part/models.py:3667 +#: part/models.py:3647 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3675 +#: part/models.py:3655 msgid "Parameter description" msgstr "" -#: part/models.py:3681 templates/js/translated/part.js:1627 +#: part/models.py:3661 templates/js/translated/part.js:1628 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "" -#: part/models.py:3682 +#: part/models.py:3662 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3687 templates/js/translated/part.js:1636 -msgid "Choices" -msgstr "" - -#: part/models.py:3688 +#: part/models.py:3668 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3765 +#: part/models.py:3745 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3808 +#: part/models.py:3788 msgid "Parent Part" msgstr "" -#: part/models.py:3816 part/models.py:3917 part/models.py:3918 +#: part/models.py:3796 part/models.py:3897 part/models.py:3898 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3821 +#: part/models.py:3801 msgid "Data" msgstr "" -#: part/models.py:3822 +#: part/models.py:3802 msgid "Parameter Value" msgstr "" -#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3904 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3925 +#: part/models.py:3905 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3963 +#: part/models.py:3943 msgid "Part ID or part name" msgstr "" -#: part/models.py:3964 +#: part/models.py:3944 msgid "Unique part ID value" msgstr "" -#: part/models.py:3966 +#: part/models.py:3946 msgid "Part IPN value" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "Level" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "BOM level" msgstr "" -#: part/models.py:4057 +#: part/models.py:4037 msgid "Select parent part" msgstr "" -#: part/models.py:4067 +#: part/models.py:4047 msgid "Sub part" msgstr "" -#: part/models.py:4068 +#: part/models.py:4048 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4079 +#: part/models.py:4059 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4085 +#: part/models.py:4065 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4091 +#: part/models.py:4071 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4098 part/templates/part/upload_bom.html:55 +#: part/models.py:4078 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4099 +#: part/models.py:4079 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4106 +#: part/models.py:4086 msgid "BOM item reference" msgstr "" -#: part/models.py:4114 +#: part/models.py:4094 msgid "BOM item notes" msgstr "" -#: part/models.py:4120 +#: part/models.py:4100 msgid "Checksum" msgstr "" -#: part/models.py:4121 +#: part/models.py:4101 msgid "BOM line checksum" msgstr "" -#: part/models.py:4126 templates/js/translated/table_filters.js:174 +#: part/models.py:4106 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4127 +#: part/models.py:4107 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4132 part/templates/part/upload_bom.html:57 +#: part/models.py:4112 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:4133 +#: part/models.py:4113 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4138 part/templates/part/upload_bom.html:56 +#: part/models.py:4118 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4139 +#: part/models.py:4119 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4224 stock/models.py:664 +#: part/models.py:4204 stock/models.py:662 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4234 part/models.py:4236 +#: part/models.py:4214 part/models.py:4216 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4376 +#: part/models.py:4354 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4397 +#: part/models.py:4375 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4410 +#: part/models.py:4388 msgid "Parent BOM item" msgstr "" -#: part/models.py:4418 +#: part/models.py:4396 msgid "Substitute part" msgstr "" -#: part/models.py:4434 +#: part/models.py:4412 msgid "Part 1" msgstr "" -#: part/models.py:4442 +#: part/models.py:4420 msgid "Part 2" msgstr "" -#: part/models.py:4443 +#: part/models.py:4421 msgid "Select Related Part" msgstr "" -#: part/models.py:4462 +#: part/models.py:4440 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4467 +#: part/models.py:4445 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:119 part/serializers.py:141 +#: part/serializers.py:118 +msgid "Parent Category" +msgstr "" + +#: part/serializers.py:119 templates/js/translated/part.js:309 +msgid "Parent part category" +msgstr "" + +#: part/serializers.py:126 part/serializers.py:148 #: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/serializers.py:185 +#: part/serializers.py:180 msgid "Results" msgstr "" -#: part/serializers.py:186 +#: part/serializers.py:181 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 +#: part/serializers.py:205 part/serializers.py:223 stock/serializers.py:562 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:273 +#: part/serializers.py:268 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:397 +#: part/serializers.py:392 msgid "No parts selected" msgstr "" -#: part/serializers.py:407 +#: part/serializers.py:402 msgid "Select category" msgstr "" -#: part/serializers.py:442 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:443 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:448 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:449 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:455 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:456 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:463 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:488 +#: part/serializers.py:483 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:490 +#: part/serializers.py:485 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:497 +#: part/serializers.py:492 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:493 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:510 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:531 +#: part/serializers.py:526 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:541 +#: part/serializers.py:536 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:548 +#: part/serializers.py:543 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:557 +#: part/serializers.py:552 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:568 +#: part/serializers.py:563 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:575 +#: part/serializers.py:570 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:834 msgid "External Stock" msgstr "" -#: part/serializers.py:840 +#: part/serializers.py:836 msgid "Unallocated Stock" msgstr "" -#: part/serializers.py:843 +#: part/serializers.py:839 msgid "Variant Stock" msgstr "" -#: part/serializers.py:873 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:471 +#: part/serializers.py:869 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:472 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:870 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:880 templates/js/translated/part.js:102 +#: part/serializers.py:876 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:881 +#: part/serializers.py:877 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:887 +#: part/serializers.py:883 msgid "Supplier Information" msgstr "" -#: part/serializers.py:888 +#: part/serializers.py:884 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:896 +#: part/serializers.py:892 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:897 +#: part/serializers.py:893 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:902 +#: part/serializers.py:898 msgid "Existing Image" msgstr "" -#: part/serializers.py:903 +#: part/serializers.py:899 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:920 +#: part/serializers.py:916 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1126 +#: part/serializers.py:1122 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1136 +#: part/serializers.py:1132 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1146 +#: part/serializers.py:1142 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1152 +#: part/serializers.py:1148 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1153 +#: part/serializers.py:1149 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1158 +#: part/serializers.py:1154 msgid "Generate Report" msgstr "" -#: part/serializers.py:1159 +#: part/serializers.py:1155 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1164 +#: part/serializers.py:1160 msgid "Update Parts" msgstr "" -#: part/serializers.py:1165 +#: part/serializers.py:1161 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1173 +#: part/serializers.py:1169 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1279 +#: part/serializers.py:1275 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1286 +#: part/serializers.py:1282 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1294 +#: part/serializers.py:1290 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1301 +#: part/serializers.py:1297 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1330 +#: part/serializers.py:1326 msgid "Update" msgstr "" -#: part/serializers.py:1331 +#: part/serializers.py:1327 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1354 +#: part/serializers.py:1350 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1361 +#: part/serializers.py:1357 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1364 +#: part/serializers.py:1360 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1727 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1739 +#: part/serializers.py:1735 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1740 +#: part/serializers.py:1736 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1745 +#: part/serializers.py:1741 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1746 +#: part/serializers.py:1742 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1747 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1752 +#: part/serializers.py:1748 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1757 +#: part/serializers.py:1753 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1758 +#: part/serializers.py:1754 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1792 +#: part/serializers.py:1788 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1793 +#: part/serializers.py:1789 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1823 +#: part/serializers.py:1819 msgid "No part column specified" msgstr "" -#: part/serializers.py:1867 +#: part/serializers.py:1863 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1870 +#: part/serializers.py:1866 msgid "No matching part found" msgstr "" -#: part/serializers.py:1873 +#: part/serializers.py:1869 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1882 +#: part/serializers.py:1878 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1890 +#: part/serializers.py:1886 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1911 +#: part/serializers.py:1907 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 +#: part/stocktake.py:225 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "" -#: part/stocktake.py:225 +#: part/stocktake.py:226 msgid "Total Cost Min" msgstr "" -#: part/stocktake.py:226 +#: part/stocktake.py:227 msgid "Total Cost Max" msgstr "" -#: part/stocktake.py:284 +#: part/stocktake.py:285 msgid "Stocktake Report Available" msgstr "" -#: part/stocktake.py:285 +#: part/stocktake.py:286 msgid "A new stocktake report is available for download" msgstr "" @@ -7151,7 +7227,7 @@ 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 +#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" @@ -7251,15 +7327,15 @@ msgstr "" msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:655 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:663 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:748 +#: part/templates/part/detail.html:750 msgid "Add Test Result Template" msgstr "" @@ -7340,7 +7416,7 @@ msgstr "" msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" msgstr "" @@ -7412,7 +7488,7 @@ 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:2443 +#: templates/js/translated/part.js:1265 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7505,8 +7581,8 @@ msgstr "" #: 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:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/part.js:1243 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 #: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7549,7 +7625,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:247 +#: part/templates/part/prices.html:28 stock/admin.py:251 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 @@ -7626,8 +7702,8 @@ msgstr "" #: part/templates/part/stock_count.html:7 #: templates/js/translated/model_renderers.js:227 -#: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 -#: templates/js/translated/part.js:2142 +#: templates/js/translated/part.js:705 templates/js/translated/part.js:2141 +#: templates/js/translated/part.js:2143 msgid "No Stock" msgstr "" @@ -7999,7 +8075,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:308 msgid "Landscape" msgstr "" @@ -8112,62 +8188,62 @@ msgstr "" msgid "Uninstalled plugin successfully" msgstr "" -#: plugin/models.py:35 +#: plugin/models.py:36 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:36 +#: plugin/models.py:37 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:42 users/models.py:100 +#: plugin/models.py:43 users/models.py:100 msgid "Key" msgstr "" -#: plugin/models.py:43 +#: plugin/models.py:44 msgid "Key of plugin" msgstr "" -#: plugin/models.py:51 +#: plugin/models.py:52 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:58 plugin/serializers.py:90 +#: plugin/models.py:59 plugin/serializers.py:90 msgid "Package Name" msgstr "" -#: plugin/models.py:60 +#: plugin/models.py:61 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:65 +#: plugin/models.py:66 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:156 templates/js/translated/table_filters.js:370 +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "" -#: plugin/models.py:165 +#: plugin/models.py:166 msgid "Sample plugin" msgstr "" -#: plugin/models.py:173 +#: plugin/models.py:174 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:181 +#: plugin/models.py:182 msgid "Package Plugin" msgstr "" -#: plugin/models.py:205 report/models.py:474 +#: plugin/models.py:220 report/models.py:475 #: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:252 +#: plugin/models.py:267 msgid "Method" msgstr "" @@ -8175,17 +8251,17 @@ msgstr "" msgid "No author found" msgstr "" -#: plugin/registry.py:597 +#: plugin/registry.py:534 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:600 +#: plugin/registry.py:537 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:602 +#: plugin/registry.py:539 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -8300,23 +8376,19 @@ msgstr "" msgid "Activate this plugin" msgstr "" -#: plugin/serializers.py:234 +#: plugin/serializers.py:226 msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:235 +#: plugin/serializers.py:227 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:77 +#: report/api.py:88 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:89 report/serializers.py:53 -msgid "Model Type" -msgstr "" - -#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/api.py:103 report/models.py:439 report/serializers.py:98 #: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 #: templates/js/translated/return_order.js:353 #: templates/js/translated/sales_order.js:887 @@ -8324,176 +8396,176 @@ msgstr "" msgid "Items" msgstr "" -#: report/api.py:168 +#: report/api.py:180 msgid "Plugin not found" msgstr "" -#: report/api.py:170 +#: report/api.py:182 msgid "Plugin is not active" msgstr "" -#: report/api.py:172 +#: report/api.py:184 msgid "Plugin does not support label printing" msgstr "" -#: report/api.py:221 +#: report/api.py:233 msgid "Invalid label dimensions" msgstr "" -#: report/api.py:236 report/api.py:316 +#: report/api.py:248 report/api.py:329 msgid "No valid items provided to template" msgstr "" -#: report/api.py:271 +#: report/api.py:283 msgid "Error printing label" msgstr "" -#: report/api.py:362 report/api.py:398 +#: report/api.py:375 report/api.py:411 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/helpers.py:41 +#: report/helpers.py:43 msgid "A4" msgstr "" -#: report/helpers.py:42 +#: report/helpers.py:44 msgid "A3" msgstr "" -#: report/helpers.py:43 +#: report/helpers.py:45 msgid "Legal" msgstr "" -#: report/helpers.py:44 +#: report/helpers.py:46 msgid "Letter" msgstr "" -#: report/models.py:118 +#: report/models.py:119 msgid "Template file with this name already exists" msgstr "" -#: report/models.py:150 +#: report/models.py:151 msgid "Template name" msgstr "" -#: report/models.py:156 +#: report/models.py:157 msgid "Template description" msgstr "" -#: report/models.py:162 +#: report/models.py:163 msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Filename Pattern" msgstr "" -#: report/models.py:203 +#: report/models.py:204 msgid "Pattern for generating filenames" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Template is enabled" msgstr "" -#: report/models.py:214 +#: report/models.py:215 msgid "Target model type for template" msgstr "" -#: report/models.py:234 +#: report/models.py:235 msgid "Filters" msgstr "" -#: report/models.py:235 +#: report/models.py:236 msgid "Template query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:294 report/models.py:361 +#: report/models.py:295 report/models.py:362 msgid "Template file" msgstr "" -#: report/models.py:302 +#: report/models.py:303 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:308 +#: report/models.py:309 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:367 +#: report/models.py:368 msgid "Width [mm]" msgstr "" -#: report/models.py:368 +#: report/models.py:369 msgid "Label width, specified in mm" msgstr "" -#: report/models.py:374 +#: report/models.py:375 msgid "Height [mm]" msgstr "" -#: report/models.py:375 +#: report/models.py:376 msgid "Label height, specified in mm" msgstr "" -#: report/models.py:438 +#: report/models.py:439 msgid "Number of items to process" msgstr "" -#: report/models.py:444 +#: report/models.py:445 msgid "Report generation is complete" msgstr "" -#: report/models.py:448 templates/js/translated/build.js:2177 +#: report/models.py:449 templates/js/translated/build.js:2177 msgid "Progress" msgstr "" -#: report/models.py:448 +#: report/models.py:449 msgid "Report generation progress" msgstr "" -#: report/models.py:456 +#: report/models.py:457 msgid "Report Template" msgstr "" -#: report/models.py:463 report/models.py:486 +#: report/models.py:464 report/models.py:487 msgid "Output File" msgstr "" -#: report/models.py:464 report/models.py:487 +#: report/models.py:465 report/models.py:488 msgid "Generated output file" msgstr "" -#: report/models.py:475 +#: report/models.py:476 msgid "Label output plugin" msgstr "" -#: report/models.py:479 +#: report/models.py:480 msgid "Label Template" msgstr "" -#: report/models.py:502 +#: report/models.py:503 msgid "Snippet" msgstr "" -#: report/models.py:503 +#: report/models.py:504 msgid "Report snippet file" msgstr "" -#: report/models.py:510 +#: report/models.py:511 msgid "Snippet file description" msgstr "" -#: report/models.py:528 +#: report/models.py:529 msgid "Asset" msgstr "" -#: report/models.py:529 +#: report/models.py:530 msgid "Report asset file" msgstr "" -#: report/models.py:536 +#: report/models.py:537 msgid "Asset file description" msgstr "" @@ -8566,8 +8638,8 @@ msgid "Total" msgstr "" #: report/templates/report/inventree_return_order_report.html:25 -#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 -#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:824 +#: stock/serializers.py:149 stock/templates/stock/item_base.html:311 #: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 #: templates/js/translated/build.js:2355 #: templates/js/translated/model_renderers.js:230 @@ -8597,32 +8669,32 @@ msgstr "" msgid "Test" msgstr "" -#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2412 msgid "Result" msgstr "" -#: report/templates/report/inventree_test_report.html:130 +#: report/templates/report/inventree_test_report.html:129 msgid "Pass" msgstr "" -#: report/templates/report/inventree_test_report.html:132 +#: report/templates/report/inventree_test_report.html:131 msgid "Fail" msgstr "" -#: report/templates/report/inventree_test_report.html:139 +#: report/templates/report/inventree_test_report.html:138 msgid "No result (required)" msgstr "" -#: report/templates/report/inventree_test_report.html:141 +#: report/templates/report/inventree_test_report.html:140 msgid "No result" msgstr "" -#: report/templates/report/inventree_test_report.html:154 +#: report/templates/report/inventree_test_report.html:153 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "" -#: report/templates/report/inventree_test_report.html:168 stock/admin.py:162 +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 #: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 #: templates/js/translated/stock.js:3110 msgid "Serial" @@ -8644,654 +8716,670 @@ msgstr "" msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:172 +#: stock/admin.py:51 stock/admin.py:171 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:176 +#: stock/admin.py:53 stock/admin.py:175 msgid "Location Name" msgstr "" -#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/admin.py:63 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:149 +#: stock/admin.py:148 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:168 +#: stock/admin.py:167 msgid "Status Code" msgstr "" -#: stock/admin.py:180 +#: stock/admin.py:179 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:185 +#: stock/admin.py:184 +msgid "Supplier Part SKU" +msgstr "" + +#: stock/admin.py:189 msgid "Supplier ID" msgstr "" -#: stock/admin.py:191 +#: stock/admin.py:195 msgid "Supplier Name" msgstr "" -#: stock/admin.py:196 +#: stock/admin.py:200 msgid "Customer ID" msgstr "" -#: stock/admin.py:201 stock/models.py:806 +#: stock/admin.py:205 stock/models.py:804 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:206 +#: stock/admin.py:210 msgid "Build ID" msgstr "" -#: stock/admin.py:216 +#: stock/admin.py:220 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:221 +#: stock/admin.py:225 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:236 +#: stock/admin.py:240 msgid "Review Needed" msgstr "" -#: stock/admin.py:241 +#: stock/admin.py:245 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:256 stock/models.py:900 +#: stock/admin.py:260 stock/models.py:898 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "" -#: stock/api.py:318 +#: stock/api.py:312 msgid "Filter by location depth" msgstr "" -#: stock/api.py:338 +#: stock/api.py:332 +msgid "Filter by top-level locations" +msgstr "" + +#: stock/api.py:347 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:359 +#: stock/api.py:369 stock/serializers.py:1085 msgid "Parent Location" msgstr "" -#: stock/api.py:360 +#: stock/api.py:370 msgid "Filter by parent location" msgstr "" -#: stock/api.py:615 templates/js/translated/table_filters.js:427 +#: stock/api.py:625 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:803 +#: stock/api.py:813 msgid "Part Tree" msgstr "" -#: stock/api.py:833 +#: stock/api.py:843 msgid "Expiry date before" msgstr "" -#: stock/api.py:837 +#: stock/api.py:847 msgid "Expiry date after" msgstr "" -#: stock/api.py:840 stock/templates/stock/item_base.html:439 +#: stock/api.py:850 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:927 +#: stock/api.py:937 msgid "Quantity is required" msgstr "" -#: stock/api.py:933 +#: stock/api.py:943 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:964 +#: stock/api.py:974 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:974 +#: stock/api.py:984 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:1005 +#: stock/api.py:1015 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:59 +#: stock/models.py:60 msgid "Stock Location type" msgstr "" -#: stock/models.py:60 +#: stock/models.py:61 msgid "Stock Location types" msgstr "" -#: stock/models.py:86 +#: stock/models.py:87 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:123 stock/models.py:788 +#: stock/models.py:124 stock/models.py:786 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:124 stock/templates/stock/location.html:186 +#: stock/models.py:125 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "" -#: stock/models.py:166 stock/models.py:949 +#: stock/models.py:167 stock/models.py:947 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:167 stock/models.py:950 +#: stock/models.py:168 stock/models.py:948 msgid "Select Owner" msgstr "" -#: stock/models.py:175 +#: stock/models.py:176 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:182 templates/js/translated/stock.js:2781 +#: stock/models.py:183 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:183 +#: stock/models.py:184 msgid "This is an external stock location" msgstr "" -#: stock/models.py:189 templates/js/translated/stock.js:2790 +#: stock/models.py:190 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" -#: stock/models.py:193 +#: stock/models.py:194 msgid "Stock location type of this location" msgstr "" -#: stock/models.py:262 +#: stock/models.py:261 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:643 +#: stock/models.py:641 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:670 stock/serializers.py:419 +#: stock/models.py:668 stock/serializers.py:446 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:687 +#: stock/models.py:685 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:697 stock/models.py:710 +#: stock/models.py:695 stock/models.py:708 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:700 +#: stock/models.py:698 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:724 +#: stock/models.py:722 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:729 +#: stock/models.py:727 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:742 +#: stock/models.py:740 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:758 +#: stock/models.py:756 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:770 +#: stock/models.py:768 msgid "Base part" msgstr "" -#: stock/models.py:780 +#: stock/models.py:778 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:792 +#: stock/models.py:790 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:800 stock/serializers.py:1480 +#: stock/models.py:798 stock/serializers.py:1476 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:811 +#: stock/models.py:809 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:830 +#: stock/models.py:828 msgid "Serial number for this item" msgstr "" -#: stock/models.py:844 stock/serializers.py:1463 +#: stock/models.py:842 stock/serializers.py:1459 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:849 +#: stock/models.py:847 msgid "Stock Quantity" msgstr "" -#: stock/models.py:859 +#: stock/models.py:857 msgid "Source Build" msgstr "" -#: stock/models.py:862 +#: stock/models.py:860 msgid "Build for this stock item" msgstr "" -#: stock/models.py:869 stock/templates/stock/item_base.html:363 +#: stock/models.py:867 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:872 +#: stock/models.py:870 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:881 +#: stock/models.py:879 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:885 +#: stock/models.py:883 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:891 +#: stock/models.py:889 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:902 +#: stock/models.py:900 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:920 +#: stock/models.py:918 msgid "Delete on deplete" msgstr "" -#: stock/models.py:921 +#: stock/models.py:919 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:941 +#: stock/models.py:939 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:972 +#: stock/models.py:970 msgid "Converted to part" msgstr "" -#: stock/models.py:1490 +#: stock/models.py:1486 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1496 +#: stock/models.py:1492 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1500 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1510 +#: stock/models.py:1506 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1515 +#: stock/models.py:1511 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1523 stock/serializers.py:658 +#: stock/models.py:1519 stock/serializers.py:660 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1620 +#: stock/models.py:1616 msgid "Test template does not exist" msgstr "" -#: stock/models.py:1638 +#: stock/models.py:1634 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1642 +#: stock/models.py:1638 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1645 +#: stock/models.py:1641 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1648 +#: stock/models.py:1644 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1651 +#: stock/models.py:1647 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1654 +#: stock/models.py:1650 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1661 stock/serializers.py:1369 +#: stock/models.py:1657 stock/serializers.py:1365 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1665 +#: stock/models.py:1661 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1673 +#: stock/models.py:1669 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1678 +#: stock/models.py:1674 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1905 +#: stock/models.py:1901 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2310 msgid "Entry notes" msgstr "" -#: stock/models.py:2391 +#: stock/models.py:2378 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2396 +#: stock/models.py:2383 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2423 +#: stock/models.py:2388 +msgid "Invalid value for this test" +msgstr "" + +#: stock/models.py:2412 msgid "Test result" msgstr "" -#: stock/models.py:2430 +#: stock/models.py:2419 msgid "Test output value" msgstr "" -#: stock/models.py:2438 +#: stock/models.py:2427 msgid "Test result attachment" msgstr "" -#: stock/models.py:2442 +#: stock/models.py:2431 msgid "Test notes" msgstr "" -#: stock/models.py:2450 templates/js/translated/stock.js:1548 +#: stock/models.py:2439 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2440 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2457 +#: stock/models.py:2446 msgid "Started" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2447 msgid "The timestamp of the test start" msgstr "" -#: stock/models.py:2464 +#: stock/models.py:2453 msgid "Finished" msgstr "" -#: stock/models.py:2465 +#: stock/models.py:2454 msgid "The timestamp of the test finish" msgstr "" -#: stock/serializers.py:75 +#: stock/serializers.py:74 msgid "Generated batch code" msgstr "" -#: stock/serializers.py:84 +#: stock/serializers.py:83 msgid "Select build order" msgstr "" -#: stock/serializers.py:93 +#: stock/serializers.py:92 msgid "Select stock item to generate batch code for" msgstr "" -#: stock/serializers.py:102 +#: stock/serializers.py:101 msgid "Select location to generate batch code for" msgstr "" -#: stock/serializers.py:111 +#: stock/serializers.py:110 msgid "Select part to generate batch code for" msgstr "" -#: stock/serializers.py:120 +#: stock/serializers.py:119 msgid "Select purchase order" msgstr "" -#: stock/serializers.py:127 +#: stock/serializers.py:126 msgid "Enter quantity for batch code" msgstr "" -#: stock/serializers.py:150 +#: stock/serializers.py:149 msgid "Generated serial number" msgstr "" -#: stock/serializers.py:159 +#: stock/serializers.py:158 msgid "Select part to generate serial number for" msgstr "" -#: stock/serializers.py:167 +#: stock/serializers.py:166 msgid "Quantity of serial numbers to generate" msgstr "" -#: stock/serializers.py:229 +#: stock/serializers.py:228 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:248 +#: stock/serializers.py:247 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:280 +#: stock/serializers.py:279 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:313 +#: stock/serializers.py:315 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:411 +#: stock/serializers.py:438 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:531 +#: stock/serializers.py:558 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:595 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:606 +#: stock/serializers.py:608 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:613 +#: stock/serializers.py:615 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 +#: stock/serializers.py:626 stock/serializers.py:1322 stock/serializers.py:1578 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:631 +#: stock/serializers.py:633 msgid "Optional note field" msgstr "" -#: stock/serializers.py:641 +#: stock/serializers.py:643 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:696 +#: stock/serializers.py:698 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:703 +#: stock/serializers.py:705 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:704 +#: stock/serializers.py:706 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 -#: stock/serializers.py:935 +#: stock/serializers.py:711 stock/serializers.py:791 stock/serializers.py:887 +#: stock/serializers.py:937 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:719 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:725 +#: stock/serializers.py:727 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:736 +#: stock/serializers.py:738 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:749 +#: stock/serializers.py:751 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:784 +#: stock/serializers.py:786 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:819 +#: stock/serializers.py:821 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:834 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:849 +#: stock/serializers.py:851 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:880 +#: stock/serializers.py:882 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:917 +#: stock/serializers.py:919 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:923 +#: stock/serializers.py:925 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:1019 stock/serializers.py:1082 +#: stock/serializers.py:1021 stock/serializers.py:1093 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:220 +#: stock/templates/stock/location.html:222 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1198 +#: stock/serializers.py:1086 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: stock/serializers.py:1194 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1202 +#: stock/serializers.py:1198 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1206 +#: stock/serializers.py:1202 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1230 +#: stock/serializers.py:1226 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1236 +#: stock/serializers.py:1232 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1244 +#: stock/serializers.py:1240 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1254 stock/serializers.py:1508 +#: stock/serializers.py:1250 stock/serializers.py:1504 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1333 +#: stock/serializers.py:1329 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1338 +#: stock/serializers.py:1334 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1339 +#: stock/serializers.py:1335 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1344 +#: stock/serializers.py:1340 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1345 +#: stock/serializers.py:1341 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1355 +#: stock/serializers.py:1351 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1422 +#: stock/serializers.py:1418 msgid "No Change" msgstr "" -#: stock/serializers.py:1451 +#: stock/serializers.py:1447 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1470 +#: stock/serializers.py:1466 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1498 +#: stock/serializers.py:1494 msgid "Stock transaction notes" msgstr "" @@ -9444,7 +9532,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276 msgid "Delete Test Data" msgstr "" @@ -9464,11 +9552,11 @@ msgstr "" msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:272 +#: stock/templates/stock/item.html:264 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "" @@ -9754,28 +9842,28 @@ msgstr "" msgid "Location Type" msgstr "" -#: stock/templates/stock/location.html:224 +#: stock/templates/stock/location.html:226 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:225 +#: stock/templates/stock/location.html:227 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:295 +#: stock/templates/stock/location.html:299 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:317 +#: stock/templates/stock/location.html:321 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:390 +#: stock/templates/stock/location.html:394 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:401 +#: stock/templates/stock/location.html:405 msgid "Link Barcode to Stock Location" msgstr "" @@ -10199,20 +10287,20 @@ msgstr "" msgid "Pricing Settings" msgstr "" -#: templates/InvenTree/settings/pricing.html:34 +#: templates/InvenTree/settings/pricing.html:35 msgid "Exchange Rates" msgstr "" -#: templates/InvenTree/settings/pricing.html:38 +#: templates/InvenTree/settings/pricing.html:39 msgid "Update Now" msgstr "" -#: templates/InvenTree/settings/pricing.html:46 -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 msgid "Last Update" msgstr "" -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:51 msgid "Never" msgstr "" @@ -10269,8 +10357,8 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:547 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 +#: templates/js/translated/part.js:393 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:402 msgid "Delete" msgstr "" @@ -10310,12 +10398,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 -#: templates/js/translated/part.js:1645 +#: templates/js/translated/part.js:1646 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 -#: templates/js/translated/part.js:1646 +#: templates/js/translated/part.js:1647 msgid "Delete Template" msgstr "" @@ -10705,7 +10793,7 @@ msgid "Submit Bug Report" msgstr "" #: templates/about.html:91 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 +#: templates/js/translated/helpers.js:589 msgid "copy to clipboard" msgstr "" @@ -10769,7 +10857,7 @@ 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 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45 msgid "Return to Site" msgstr "" @@ -10883,15 +10971,19 @@ msgstr "" msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "" -#: templates/allauth_2fa/setup.html:23 +#: templates/allauth_2fa/setup.html:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 msgid "Step 2" msgstr "" -#: templates/allauth_2fa/setup.html:27 +#: templates/allauth_2fa/setup.html:28 msgid "Input a token generated by the app:" msgstr "" -#: templates/allauth_2fa/setup.html:37 +#: templates/allauth_2fa/setup.html:38 msgid "Verify" msgstr "" @@ -10970,7 +11062,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3217 +#: templates/js/translated/part.js:3219 msgid "Minimum Quantity" msgstr "" @@ -11058,27 +11150,27 @@ msgstr "" msgid "Delete attachments" msgstr "" -#: templates/js/translated/attachment.js:253 +#: templates/js/translated/attachment.js:260 msgid "Attachment actions" msgstr "" -#: templates/js/translated/attachment.js:275 +#: templates/js/translated/attachment.js:294 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:315 +#: templates/js/translated/attachment.js:334 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:365 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:366 +#: templates/js/translated/attachment.js:385 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:374 +#: templates/js/translated/attachment.js:393 msgid "Delete attachment" msgstr "" @@ -11359,7 +11451,7 @@ msgid "Includes variant and substitute stock" msgstr "" #: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 -#: templates/js/translated/part.js:1256 +#: templates/js/translated/part.js:1257 #: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" @@ -11686,7 +11778,7 @@ msgstr "" #: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 #: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 -#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11729,8 +11821,8 @@ msgstr "" msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 -#: templates/js/translated/part.js:1202 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:791 +#: templates/js/translated/part.js:1203 msgid "Trackable part" msgstr "" @@ -11916,7 +12008,7 @@ msgid "Delete Parameters" msgstr "" #: templates/js/translated/company.js:1191 -#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2244 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2245 msgid "Order parts" msgstr "" @@ -11933,34 +12025,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:1279 -#: templates/js/translated/company.js:1567 templates/js/translated/part.js:798 -#: templates/js/translated/part.js:1210 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Template part" msgstr "" #: templates/js/translated/company.js:1283 -#: templates/js/translated/company.js:1571 templates/js/translated/part.js:802 -#: templates/js/translated/part.js:1214 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:803 +#: templates/js/translated/part.js:1215 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1464 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1465 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1527 +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1528 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1528 +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1529 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1433 +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1434 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1549 +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1550 msgid "Delete Parameter" msgstr "" @@ -12094,23 +12186,23 @@ msgstr "" msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2499 +#: templates/js/translated/forms.js:2500 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3113 +#: templates/js/translated/forms.js:3114 msgid "Select Columns" msgstr "" @@ -12211,7 +12303,7 @@ msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 -#: templates/js/translated/part.js:1604 +#: templates/js/translated/part.js:1605 msgid "ID" msgstr "" @@ -12292,347 +12384,343 @@ msgstr "" 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 +#: templates/js/translated/part.js:333 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:355 +#: templates/js/translated/part.js:356 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:356 +#: templates/js/translated/part.js:357 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:370 +#: templates/js/translated/part.js:371 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:383 +#: templates/js/translated/part.js:384 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:388 +#: templates/js/translated/part.js:389 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:397 +#: templates/js/translated/part.js:398 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:401 +#: templates/js/translated/part.js:402 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:406 +#: templates/js/translated/part.js:407 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:430 +#: templates/js/translated/part.js:431 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:432 +#: templates/js/translated/part.js:433 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:433 +#: templates/js/translated/part.js:434 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:462 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:463 +#: templates/js/translated/part.js:464 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:474 +#: templates/js/translated/part.js:475 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:531 +#: templates/js/translated/part.js:532 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:532 +#: templates/js/translated/part.js:533 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:546 +#: templates/js/translated/part.js:547 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:548 +#: templates/js/translated/part.js:549 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:549 +#: templates/js/translated/part.js:550 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:550 +#: templates/js/translated/part.js:551 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:557 +#: templates/js/translated/part.js:558 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:593 +#: templates/js/translated/part.js:594 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:595 +#: templates/js/translated/part.js:596 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:600 +#: templates/js/translated/part.js:601 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:602 +#: templates/js/translated/part.js:603 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:619 +#: templates/js/translated/part.js:620 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:629 +#: templates/js/translated/part.js:630 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:632 +#: templates/js/translated/part.js:633 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:657 +#: templates/js/translated/part.js:658 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:685 +#: templates/js/translated/part.js:686 #: templates/js/translated/table_filters.js:747 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:688 +#: templates/js/translated/part.js:689 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:748 +#: templates/js/translated/part.js:749 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:771 +#: templates/js/translated/part.js:772 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +#: templates/js/translated/part.js:795 templates/js/translated/part.js:1207 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:806 +#: templates/js/translated/part.js:807 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:810 +#: templates/js/translated/part.js:811 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:897 +#: templates/js/translated/part.js:898 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:901 +#: templates/js/translated/part.js:902 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1050 +#: templates/js/translated/part.js:1051 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1145 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +#: templates/js/translated/part.js:1113 templates/js/translated/part.js:1155 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1281 +#: templates/js/translated/part.js:1282 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1599 +#: templates/js/translated/part.js:1600 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1662 +#: templates/js/translated/part.js:1663 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1674 +#: templates/js/translated/part.js:1675 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1682 +#: templates/js/translated/part.js:1683 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1716 +#: templates/js/translated/part.js:1717 #: templates/js/translated/purchase_order.js:1654 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1860 +#: templates/js/translated/part.js:1861 #: templates/js/translated/purchase_order.js:2153 #: templates/js/translated/return_order.js:755 #: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1906 +#: templates/js/translated/part.js:1907 #: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1970 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1991 +#: templates/js/translated/part.js:1992 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 +#: templates/js/translated/part.js:2080 templates/js/translated/part.js:2506 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2200 +#: templates/js/translated/part.js:2201 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2205 +#: templates/js/translated/part.js:2206 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2235 +#: templates/js/translated/part.js:2236 msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2286 +#: templates/js/translated/part.js:2287 msgid "part" msgstr "" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2288 msgid "parts" msgstr "" -#: templates/js/translated/part.js:2383 +#: templates/js/translated/part.js:2384 msgid "No category" msgstr "" -#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2546 +#: templates/js/translated/part.js:2547 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2644 +#: templates/js/translated/part.js:2645 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2760 +#: templates/js/translated/part.js:2761 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2776 +#: templates/js/translated/part.js:2777 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2865 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2887 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/part.js:2938 templates/js/translated/stock.js:1457 #: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2940 +#: templates/js/translated/part.js:2942 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2956 +#: templates/js/translated/part.js:2958 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2970 +#: templates/js/translated/part.js:2972 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3051 templates/js/translated/part.js:3052 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3052 +#: templates/js/translated/part.js:3054 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3058 +#: templates/js/translated/part.js:3060 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3108 +#: templates/js/translated/part.js:3110 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3114 +#: templates/js/translated/part.js:3116 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3210 +#: templates/js/translated/part.js:3212 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3226 +#: templates/js/translated/part.js:3228 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3271 +#: templates/js/translated/part.js:3273 msgid "Minimum Stock Level" msgstr "" @@ -13240,10 +13328,6 @@ msgstr "" 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 "" @@ -13412,7 +13496,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:401 +#: templates/js/translated/stock.js:1042 users/models.py:392 msgid "Add" msgstr "" @@ -14303,34 +14387,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:384 +#: users/models.py:375 msgid "Permission set" msgstr "" -#: users/models.py:393 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "View" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "Permission to view items" msgstr "" -#: users/models.py:401 +#: users/models.py:392 msgid "Permission to add items" msgstr "" -#: users/models.py:405 +#: users/models.py:396 msgid "Change" msgstr "" -#: users/models.py:407 +#: users/models.py:398 msgid "Permissions to edit items" msgstr "" -#: users/models.py:413 +#: users/models.py:404 msgid "Permission to delete items" msgstr "" + diff --git a/src/backend/InvenTree/locale/tr/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/tr/LC_MESSAGES/django.po index 89045abeac..c49f650e8b 100644 --- a/src/backend/InvenTree/locale/tr/LC_MESSAGES/django.po +++ b/src/backend/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-05-31 07:08+0000\n" -"PO-Revision-Date: 2024-05-27 11:54\n" +"POT-Creation-Date: 2024-06-26 03:18+0000\n" +"PO-Revision-Date: 2024-06-26 06:04\n" "Last-Translator: \n" "Language-Team: Turkish\n" "Language: tr_TR\n" @@ -21,7 +21,7 @@ msgstr "" msgid "API endpoint not found" msgstr "API uç noktası bulunamadı" -#: InvenTree/api.py:536 +#: InvenTree/api.py:520 msgid "User does not have permission to view this model" msgstr "Kullanıcının bu modeli görüntüleme izni yok" @@ -52,25 +52,25 @@ msgstr "Geçersiz miktar sağlandı({exc})" msgid "Error details can be found in the admin panel" msgstr "Hata detaylarını admin panelinde bulabilirsiniz" -#: InvenTree/fields.py:139 +#: InvenTree/fields.py:136 msgid "Enter date" msgstr "Tarih giriniz" -#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 -#: build/serializers.py:531 build/templates/build/sidebar.html:21 -#: company/models.py:849 company/templates/company/sidebar.html:37 -#: order/models.py:1332 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:205 InvenTree/models.py:918 build/serializers.py:452 +#: build/serializers.py:530 build/templates/build/sidebar.html:21 +#: company/models.py:817 company/templates/company/sidebar.html:37 +#: order/models.py:1296 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:3218 part/templates/part/part_sidebar.html:63 +#: part/models.py:3183 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_report.html:172 -#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 -#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 -#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 -#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:230 stock/models.py:2309 stock/models.py:2431 +#: stock/serializers.py:632 stock/serializers.py:790 stock/serializers.py:886 +#: stock/serializers.py:936 stock/serializers.py:1239 stock/serializers.py:1328 +#: stock/serializers.py:1493 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1080 +#: templates/js/translated/part.js:1081 #: templates/js/translated/purchase_order.js:2200 #: templates/js/translated/return_order.js:775 #: templates/js/translated/sales_order.js:1103 @@ -120,15 +120,15 @@ msgstr "E-posta adresi onayı" msgid "You must type the same email each time." msgstr "Her seferind eaynı e-posta adresini yazmalısınız." -#: InvenTree/forms.py:253 InvenTree/forms.py:261 +#: InvenTree/forms.py:248 InvenTree/forms.py:256 msgid "The provided primary email address is not valid." msgstr "Sağlanan e-posta adresi geçerli değil." -#: InvenTree/forms.py:268 +#: InvenTree/forms.py:263 msgid "The provided email domain is not approved." msgstr "Sağlanan e-posta alanı onaylanmadı." -#: InvenTree/forms.py:395 +#: InvenTree/forms.py:390 msgid "Registration is disabled." msgstr "Kayıt devre dışı." @@ -171,35 +171,35 @@ msgstr "Benzersiz seri numaralarının sayısı ({len(serials)}) ile miktarın ( msgid "Remove HTML tags from this value" msgstr "Bu değerden HTML etiketlerini kaldır" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Connection error" msgstr "Bağlantı hatası" -#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 msgid "Server responded with invalid status code" msgstr "Sunucu geçersiz durum kodu ile cevap verdi" -#: InvenTree/helpers_model.py:158 +#: InvenTree/helpers_model.py:148 msgid "Exception occurred" msgstr "İstisna oluştu" -#: InvenTree/helpers_model.py:168 +#: InvenTree/helpers_model.py:158 msgid "Server responded with invalid Content-Length value" msgstr "Sunucu geçersiz Content-Length değeriyle yanıt verdi" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:161 msgid "Image size is too large" msgstr "Resim boyutu çok büyük" -#: InvenTree/helpers_model.py:183 +#: InvenTree/helpers_model.py:173 msgid "Image download exceeded maximum size" msgstr "Resim indirme boyutu izin verilenden büyük" -#: InvenTree/helpers_model.py:188 +#: InvenTree/helpers_model.py:178 msgid "Remote server returned empty response" msgstr "Uzak sunucu boş cevap döndü" -#: InvenTree/helpers_model.py:196 +#: InvenTree/helpers_model.py:186 msgid "Supplied URL is not a valid image file" msgstr "Sağlanan URL geçerli bir resim dosyası değil" @@ -296,46 +296,50 @@ msgid "Portuguese (Brazilian)" msgstr "Portekizce (Brezilya)" #: InvenTree/locales.py:41 +msgid "Romanian" +msgstr "" + +#: InvenTree/locales.py:42 msgid "Russian" msgstr "Rusça" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:43 msgid "Slovak" msgstr "Slovakça" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:44 msgid "Slovenian" msgstr "Slovakça" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:45 msgid "Serbian" msgstr "Sırpça" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:46 msgid "Swedish" msgstr "İsveççe" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:47 msgid "Thai" msgstr "Tay dili" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:48 msgid "Turkish" msgstr "Türkçe" -#: InvenTree/locales.py:48 +#: InvenTree/locales.py:49 msgid "Ukrainian" msgstr "" -#: InvenTree/locales.py:49 +#: InvenTree/locales.py:50 msgid "Vietnamese" msgstr "Vietnamca" -#: InvenTree/locales.py:50 +#: InvenTree/locales.py:51 msgid "Chinese (Simplified)" msgstr "Çince (Basitleştirilmiş)" -#: InvenTree/locales.py:51 +#: InvenTree/locales.py:52 msgid "Chinese (Traditional)" msgstr "Çince (Geleneksel)" @@ -344,153 +348,65 @@ msgstr "Çince (Geleneksel)" msgid "[{site_name}] Log in to the app" msgstr "[{site_name}] Uygulamaya giriş yap" -#: InvenTree/magic_login.py:38 company/models.py:133 +#: InvenTree/magic_login.py:38 company/models.py:136 #: company/templates/company/company_base.html:138 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:677 msgid "Email" msgstr "E-posta" -#: InvenTree/models.py:107 +#: InvenTree/models.py:105 msgid "Error running plugin validation" msgstr "Eklenti doğrulama sırasında hata oluştu" -#: InvenTree/models.py:176 +#: InvenTree/models.py:174 msgid "Metadata must be a python dict object" msgstr "Metadata, bir python dict nesnesi olmalıdır" -#: InvenTree/models.py:182 +#: InvenTree/models.py:180 msgid "Plugin Metadata" msgstr "Plugin Metaverileri" -#: InvenTree/models.py:183 +#: InvenTree/models.py:181 msgid "JSON metadata field, for use by external plugins" msgstr "Harici eklentiler tarafından kullanım için JSON metadata alanı" -#: InvenTree/models.py:413 +#: InvenTree/models.py:408 msgid "Improperly formatted pattern" msgstr "Yanlış biçimlendirilmiş desen" -#: InvenTree/models.py:420 +#: InvenTree/models.py:415 msgid "Unknown format key specified" msgstr "Belirtilen bilinmeyen format anahtarı" -#: InvenTree/models.py:426 +#: InvenTree/models.py:421 msgid "Missing required format key" msgstr "Gerekli format anahtarı eksik" -#: InvenTree/models.py:437 +#: InvenTree/models.py:432 msgid "Reference field cannot be empty" msgstr "Referans alanı boş olamaz" -#: InvenTree/models.py:445 +#: InvenTree/models.py:440 msgid "Reference must match required pattern" msgstr "Referans {pattern} deseniyle mutlaka eşleşmeli" -#: InvenTree/models.py:476 +#: InvenTree/models.py:471 msgid "Reference number is too large" msgstr "Referans sayısı çok fazla" -#: InvenTree/models.py:550 -msgid "Missing file" -msgstr "Eksik dosya" - -#: InvenTree/models.py:551 -msgid "Missing external link" -msgstr "Bozuk dış bağlantı" - -#: InvenTree/models.py:572 stock/models.py:2437 -#: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:326 -msgid "Attachment" -msgstr "Ek" - -#: InvenTree/models.py:573 -msgid "Select file to attach" -msgstr "Eklenecek dosyayı seç" - -#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:831 -#: order/models.py:303 order/models.py:1337 order/models.py:1753 -#: part/admin.py:55 part/models.py:962 -#: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_report.html:164 -#: stock/admin.py:225 templates/js/translated/company.js:1319 -#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2455 -#: templates/js/translated/purchase_order.js:2040 -#: templates/js/translated/purchase_order.js:2204 -#: templates/js/translated/return_order.js:779 -#: templates/js/translated/sales_order.js:1092 -#: templates/js/translated/sales_order.js:2023 -msgid "Link" -msgstr "Bağlantı" - -#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 -#: stock/models.py:836 -msgid "Link to external URL" -msgstr "Harici URL'ye bağlantı" - -#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:341 -msgid "Comment" -msgstr "Yorum" - -#: InvenTree/models.py:589 -msgid "File comment" -msgstr "Dosya yorumu" - -#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 -#: common/models.py:2518 common/models.py:2742 common/models.py:2743 -#: common/models.py:2988 common/models.py:2989 part/models.py:3228 -#: part/models.py:3315 part/models.py:3408 part/models.py:3436 -#: plugin/models.py:259 plugin/models.py:260 -#: report/templates/report/inventree_test_report.html:105 -#: templates/js/translated/stock.js:3036 users/models.py:111 -msgid "User" -msgstr "Kullanıcı" - -#: InvenTree/models.py:602 -msgid "upload date" -msgstr "yükleme tarihi" - -#: InvenTree/models.py:624 -msgid "Filename must not be empty" -msgstr "Dosya adı boş olamaz" - -#: InvenTree/models.py:635 -msgid "Invalid attachment directory" -msgstr "Ek dosya yolu geçersiz" - -#: InvenTree/models.py:665 -#, python-brace-format -msgid "Filename contains illegal character '{c}'" -msgstr "Dosya adı geçersiz karakterler içeriyor'{c}'" - -#: InvenTree/models.py:668 -msgid "Filename missing extension" -msgstr "Dosya uzantısı yok" - -#: InvenTree/models.py:677 -msgid "Attachment with this filename already exists" -msgstr "Aynı isimli başka bir dosya zaten var" - -#: InvenTree/models.py:684 -msgid "Error renaming file" -msgstr "Dosya adı değiştirilirken hata" - -#: InvenTree/models.py:860 +#: InvenTree/models.py:719 msgid "Duplicate names cannot exist under the same parent" msgstr "Aynı kaynak altında birden fazla aynı isim kullanılamaz" -#: InvenTree/models.py:877 +#: InvenTree/models.py:736 msgid "Invalid choice" msgstr "Geçersiz seçim" -#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 -#: common/serializers.py:403 company/models.py:614 machine/models.py:24 -#: part/models.py:898 part/models.py:3659 plugin/models.py:50 -#: report/models.py:149 stock/models.py:72 +#: InvenTree/models.py:766 common/models.py:2623 common/models.py:3036 +#: common/serializers.py:408 company/models.py:580 machine/models.py:24 +#: part/models.py:891 part/models.py:3639 plugin/models.py:51 +#: report/models.py:150 stock/models.py:73 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:83 @@ -501,25 +417,25 @@ msgstr "Geçersiz seçim" #: templates/js/translated/company.js:724 #: templates/js/translated/company.js:913 #: templates/js/translated/company.js:1165 -#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 -#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1187 +#: templates/js/translated/part.js:1475 templates/js/translated/part.js:1611 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Adı" -#: InvenTree/models.py:913 build/models.py:218 -#: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:523 company/models.py:840 +#: InvenTree/models.py:772 build/models.py:220 +#: build/templates/build/detail.html:24 common/models.py:138 +#: company/models.py:509 company/models.py:808 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 order/models.py:289 -#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 -#: part/models.py:3674 part/templates/part/category.html:82 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:914 +#: part/models.py:3654 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:155 -#: report/models.py:509 report/models.py:535 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 #: report/templates/report/inventree_build_order_report.html:117 -#: stock/admin.py:55 stock/models.py:78 stock/templates/stock/location.html:125 +#: stock/admin.py:54 stock/models.py:79 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 @@ -528,10 +444,10 @@ msgstr "Adı" #: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 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:2354 -#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1239 +#: templates/js/translated/part.js:1484 templates/js/translated/part.js:1622 +#: templates/js/translated/part.js:1959 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2897 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1706 #: templates/js/translated/purchase_order.js:1849 @@ -544,149 +460,141 @@ msgstr "Adı" msgid "Description" msgstr "Açıklama" -#: InvenTree/models.py:914 stock/models.py:79 +#: InvenTree/models.py:773 stock/models.py:80 msgid "Description (optional)" msgstr "Açıklama (isteğe bağlı)" -#: InvenTree/models.py:923 -msgid "parent" -msgstr "üst" - -#: InvenTree/models.py:929 templates/js/translated/part.js:2793 +#: InvenTree/models.py:788 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Yol" -#: InvenTree/models.py:1035 +#: InvenTree/models.py:918 msgid "Markdown notes (optional)" msgstr "Markdown notları (isteğe bağlı)" -#: InvenTree/models.py:1064 +#: InvenTree/models.py:947 msgid "Barcode Data" msgstr "Barkod Verisi" -#: InvenTree/models.py:1065 +#: InvenTree/models.py:948 msgid "Third party barcode data" msgstr "Üçüncü parti barkod verisi" -#: InvenTree/models.py:1071 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "Barkod Hash" -#: InvenTree/models.py:1072 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "Barkod verisinin benzersiz hash'i" -#: InvenTree/models.py:1125 +#: InvenTree/models.py:1008 msgid "Existing barcode found" msgstr "Var olan barkod bulundu" -#: InvenTree/models.py:1168 +#: InvenTree/models.py:1051 msgid "Server Error" msgstr "Sunucu Hatası" -#: InvenTree/models.py:1169 +#: InvenTree/models.py:1052 msgid "An error has been logged by the server." msgstr "Bir hafta sunucu tarafından kayıt edildi." -#: InvenTree/serializers.py:62 part/models.py:4212 +#: InvenTree/serializers.py:63 part/models.py:4192 msgid "Must be a valid number" msgstr "Geçerli bir numara olmalı" -#: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:3036 +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3001 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Para birimi" -#: InvenTree/serializers.py:102 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "Var olan seçeneklerden bir döviz birimi seçin" -#: InvenTree/serializers.py:441 +#: InvenTree/serializers.py:442 msgid "You do not have permission to change this user role." msgstr "Bu kullanıcı rolünü değiştirmek için izniniz yok." -#: InvenTree/serializers.py:453 +#: InvenTree/serializers.py:454 msgid "Only superusers can create new users" msgstr "Sadece süper kullanıcılar yeni kullanıcı oluşturabilir" -#: InvenTree/serializers.py:472 +#: InvenTree/serializers.py:473 msgid "Your account has been created." msgstr "Kullanıcı hesabınız oluşturulmuştur." -#: InvenTree/serializers.py:474 +#: InvenTree/serializers.py:475 msgid "Please use the password reset function to login" msgstr "Giriş yapmak için lütfen şifre sıfırlama fonksiyonunu kullanınız" -#: InvenTree/serializers.py:481 +#: InvenTree/serializers.py:482 msgid "Welcome to InvenTree" msgstr "InvenTree'ye Hoşgeldiniz" -#: InvenTree/serializers.py:542 -msgid "Filename" -msgstr "Dosya adı" - -#: InvenTree/serializers.py:576 +#: InvenTree/serializers.py:540 msgid "Invalid value" msgstr "Geçersiz değer" -#: InvenTree/serializers.py:596 +#: InvenTree/serializers.py:560 msgid "Data File" msgstr "Veri Dosyası" -#: InvenTree/serializers.py:597 +#: InvenTree/serializers.py:561 msgid "Select data file for upload" msgstr "Yüklemek istediğiniz dosyayı seçin" -#: InvenTree/serializers.py:614 +#: InvenTree/serializers.py:578 msgid "Unsupported file type" msgstr "Desteklenmeyen dsoya tipi" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:584 msgid "File is too large" msgstr "Dosya boyutu çok büyük" -#: InvenTree/serializers.py:641 +#: InvenTree/serializers.py:605 msgid "No columns found in file" msgstr "Dosyada kolon bulunamadı" -#: InvenTree/serializers.py:644 +#: InvenTree/serializers.py:608 msgid "No data rows found in file" msgstr "Dosyada satır bulunamadı" -#: InvenTree/serializers.py:757 +#: InvenTree/serializers.py:721 msgid "No data rows provided" msgstr "Dosyada satır bulunamadı" -#: InvenTree/serializers.py:760 +#: InvenTree/serializers.py:724 msgid "No data columns supplied" msgstr "Dosyada uygun kolon bulunamadı" -#: InvenTree/serializers.py:827 +#: InvenTree/serializers.py:791 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Gerekli kolon ismi eksik:'{name}'" -#: InvenTree/serializers.py:836 +#: InvenTree/serializers.py:800 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Tekrarlanan kolon ismi:'{col}'" -#: InvenTree/serializers.py:859 +#: InvenTree/serializers.py:840 msgid "Remote Image" msgstr "Uzaktan Görüntüler" -#: InvenTree/serializers.py:860 +#: InvenTree/serializers.py:841 msgid "URL of remote image file" msgstr "Uzaktan görüntü dosya URL'si" -#: InvenTree/serializers.py:878 +#: InvenTree/serializers.py:859 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/status.py:66 part/serializers.py:1178 +#: InvenTree/status.py:66 part/serializers.py:1174 msgid "Background worker check failed" msgstr "Arka plan çalışanı kontrolü başarısız oldu" @@ -698,27 +606,27 @@ msgstr "E-posta arka ucu yapılandırılmadı" msgid "InvenTree system health checks failed" msgstr "InvenTree sistem sağlık kontrolü başarısız" -#: InvenTree/templatetags/inventree_extras.py:183 +#: InvenTree/templatetags/inventree_extras.py:184 msgid "Unknown database" msgstr "" -#: InvenTree/validators.py:31 InvenTree/validators.py:33 +#: InvenTree/validators.py:32 InvenTree/validators.py:34 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:39 +#: InvenTree/validators.py:40 msgid "Not a valid currency code" msgstr "Geçerli bir para birimi kodu değil" -#: InvenTree/validators.py:121 InvenTree/validators.py:137 +#: InvenTree/validators.py:118 InvenTree/validators.py:134 msgid "Overage value must not be negative" msgstr "Fazlalık değeri negatif olmamalıdır" -#: InvenTree/validators.py:139 +#: InvenTree/validators.py:136 msgid "Overage must not exceed 100%" msgstr "Fazlalık %100'ü geçmemelidir" -#: InvenTree/validators.py:145 +#: InvenTree/validators.py:142 msgid "Invalid value for overage" msgstr "" @@ -750,14 +658,14 @@ msgstr "InvenTree Hakkında" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: build/api.py:299 part/models.py:4070 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:300 part/models.py:4084 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4064 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2529 #: templates/js/translated/table_filters.js:186 @@ -778,30 +686,30 @@ msgstr "" msgid "Allocated" msgstr "" -#: build/api.py:311 company/models.py:904 company/serializers.py:383 +#: build/api.py:311 company/models.py:872 company/serializers.py:359 #: 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:2561 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:234 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 -#: templates/js/translated/part.js:699 +#: templates/js/translated/part.js:693 templates/js/translated/part.js:695 +#: templates/js/translated/part.js:700 #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:575 msgid "Available" msgstr "Mevcut" -#: build/models.py:83 build/templates/build/build_base.html:9 +#: build/models.py:85 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_report.html:105 -#: stock/serializers.py:83 templates/email/build_order_completed.html:16 +#: stock/serializers.py:82 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:2892 msgid "Build Order" msgstr "Yapım İşi Emri" -#: build/models.py:84 build/templates/build/build_base.html:13 +#: build/models.py:86 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 @@ -812,25 +720,25 @@ msgstr "Yapım İşi Emri" msgid "Build Orders" msgstr "Yapım İşi Emirleri" -#: build/models.py:131 +#: build/models.py:133 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:142 order/models.py:240 +#: build/models.py:144 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "" -#: build/models.py:148 +#: build/models.py:150 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:209 +#: build/models.py:211 msgid "Build Order Reference" msgstr "Yapım İşi Emri Referansı" -#: build/models.py:210 order/models.py:463 order/models.py:928 -#: order/models.py:1325 order/models.py:2056 part/admin.py:419 -#: part/models.py:4105 part/templates/part/upload_bom.html:54 +#: build/models.py:212 order/models.py:463 order/models.py:926 +#: order/models.py:1289 order/models.py:2020 part/admin.py:411 +#: part/models.py:4085 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_purchase_order_report.html:28 #: report/templates/report/inventree_return_order_report.html:26 @@ -844,27 +752,27 @@ msgstr "Yapım İşi Emri Referansı" msgid "Reference" msgstr "Referans" -#: build/models.py:221 +#: build/models.py:223 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:229 build/templates/build/build_base.html:183 +#: build/models.py:231 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Üst Yapım İşi" -#: build/models.py:230 +#: build/models.py:232 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:235 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 -#: order/models.py:1450 order/models.py:1595 order/models.py:1596 -#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 -#: part/models.py:3191 part/models.py:3335 part/models.py:3358 -#: part/models.py:3379 part/models.py:3401 part/models.py:3511 -#: part/models.py:3807 part/models.py:3963 part/models.py:4056 -#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 +#: build/models.py:237 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1026 order/api.py:805 +#: order/models.py:1414 order/models.py:1559 order/models.py:1560 +#: part/api.py:1494 part/api.py:1788 part/models.py:395 part/models.py:3012 +#: part/models.py:3156 part/models.py:3303 part/models.py:3324 +#: part/models.py:3346 part/models.py:3477 part/models.py:3787 +#: part/models.py:3943 part/models.py:4036 part/models.py:4395 +#: part/serializers.py:1120 part/serializers.py:1726 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -875,8 +783,8 @@ msgstr "Bu yapım işinin tahsis edildiği yapım işi emri" #: report/templates/report/inventree_return_order_report.html:24 #: report/templates/report/inventree_sales_order_report.html:27 #: report/templates/report/inventree_stock_location_report.html:102 -#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 -#: stock/serializers.py:818 templates/InvenTree/search.html:82 +#: stock/serializers.py:109 stock/serializers.py:157 stock/serializers.py:423 +#: stock/serializers.py:820 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 @@ -889,8 +797,8 @@ msgstr "Bu yapım işinin tahsis edildiği yapım işi emri" #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 -#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2323 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:1944 templates/js/translated/part.js:2016 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 #: templates/js/translated/purchase_order.js:751 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1848 @@ -908,107 +816,107 @@ msgstr "Bu yapım işinin tahsis edildiği yapım işi emri" msgid "Part" msgstr "Parça" -#: build/models.py:243 +#: build/models.py:245 msgid "Select part to build" msgstr "Yapım işi için parça seçin" -#: build/models.py:248 +#: build/models.py:250 msgid "Sales Order Reference" msgstr "Satış Emri Referansı" -#: build/models.py:252 +#: build/models.py:254 msgid "SalesOrder to which this build is allocated" msgstr "Bu yapım işinin tahsis edildiği satış emri" -#: build/models.py:257 build/serializers.py:1000 +#: build/models.py:259 build/serializers.py:999 #: templates/js/translated/build.js:1731 #: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "Kaynak Konum" -#: build/models.py:261 +#: build/models.py:263 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:266 +#: build/models.py:268 msgid "Destination Location" msgstr "Hedef Konum" -#: build/models.py:270 +#: build/models.py:272 msgid "Select location where the completed items will be stored" msgstr "Tamamlanmış ögelerin saklanacağı konumu seçiniz" -#: build/models.py:274 +#: build/models.py:276 msgid "Build Quantity" msgstr "Yapım İşi Miktarı" -#: build/models.py:277 +#: build/models.py:279 msgid "Number of stock items to build" msgstr "Yapım işi stok kalemlerinin sayısı" -#: build/models.py:281 +#: build/models.py:283 msgid "Completed items" msgstr "Tamamlanmış ögeler" -#: build/models.py:283 +#: build/models.py:285 msgid "Number of stock items which have been completed" msgstr "Tamamlanan stok kalemlerinin sayısı" -#: build/models.py:287 +#: build/models.py:289 msgid "Build Status" msgstr "Yapım İşi Durumu" -#: build/models.py:291 +#: build/models.py:293 msgid "Build status code" msgstr "Yapım işi durum kodu" -#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 -#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 +#: build/models.py:302 build/serializers.py:286 order/serializers.py:580 +#: stock/models.py:838 stock/serializers.py:74 stock/serializers.py:1458 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Sıra numarası" -#: build/models.py:304 build/serializers.py:288 +#: build/models.py:306 build/serializers.py:287 msgid "Batch code for this build output" msgstr "Yapım işi çıktısı için sıra numarası" -#: build/models.py:307 order/models.py:316 order/serializers.py:120 -#: part/models.py:1122 part/templates/part/part_base.html:310 +#: build/models.py:309 order/models.py:316 order/serializers.py:119 +#: part/models.py:1115 part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:338 #: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "Oluşturulma tarihi" -#: build/models.py:311 +#: build/models.py:313 msgid "Target completion date" msgstr "Hedef tamamlama tarihi" -#: build/models.py:312 +#: build/models.py:314 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:315 order/models.py:521 order/models.py:2101 +#: build/models.py:317 order/models.py:521 order/models.py:2065 #: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "Tamamlama tarihi" -#: build/models.py:321 +#: build/models.py:323 msgid "completed by" msgstr "tamamlayan" -#: build/models.py:329 templates/js/translated/build.js:2207 +#: build/models.py:331 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "Veren" -#: build/models.py:330 +#: build/models.py:332 msgid "User who issued this build order" msgstr "Bu yapım işi emrini veren kullanıcı" -#: build/models.py:338 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:145 +#: build/models.py:340 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:147 #: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:232 part/models.py:1139 +#: order/templates/order/sales_order_base.html:232 part/models.py:1132 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_report.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 @@ -1019,31 +927,36 @@ msgstr "Bu yapım işi emrini veren kullanıcı" msgid "Responsible" msgstr "Sorumlu" -#: build/models.py:339 +#: build/models.py:341 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:344 build/templates/build/detail.html:108 +#: build/models.py:346 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:184 -#: part/templates/part/part_base.html:383 stock/models.py:836 +#: part/templates/part/part_base.html:383 stock/models.py:834 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "Harici Bağlantı" -#: build/models.py:349 +#: build/models.py:347 common/models.py:3178 part/models.py:956 +#: stock/models.py:834 +msgid "Link to external URL" +msgstr "Harici URL'ye bağlantı" + +#: build/models.py:351 msgid "Build Priority" msgstr "" -#: build/models.py:352 +#: build/models.py:354 msgid "Priority of this build order" msgstr "" -#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: build/models.py:361 common/models.py:131 order/admin.py:18 #: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 #: templates/js/translated/build.js:2144 #: templates/js/translated/purchase_order.js:1710 @@ -1054,65 +967,65 @@ msgstr "" msgid "Project Code" msgstr "" -#: build/models.py:360 +#: build/models.py:362 msgid "Project code for this build order" msgstr "" -#: build/models.py:593 build/models.py:658 +#: build/models.py:595 build/models.py:660 msgid "Failed to offload task to complete build allocations" msgstr "" -#: build/models.py:615 +#: build/models.py:617 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:621 +#: build/models.py:623 msgid "A build order has been completed" msgstr "" -#: build/models.py:847 build/models.py:932 +#: build/models.py:849 build/models.py:934 msgid "No build output specified" msgstr "Yapım işi çıktısı belirtilmedi" -#: build/models.py:850 +#: build/models.py:852 msgid "Build output is already completed" msgstr "Yapım işi çıktısı zaten tamamlanmış" -#: build/models.py:853 +#: build/models.py:855 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:936 build/serializers.py:220 build/serializers.py:269 -#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 -#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 -#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 +#: build/models.py:938 build/serializers.py:219 build/serializers.py:268 +#: build/serializers.py:866 order/models.py:559 order/serializers.py:432 +#: order/serializers.py:575 part/serializers.py:1484 part/serializers.py:1884 +#: stock/models.py:677 stock/models.py:1495 stock/serializers.py:603 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:941 build/serializers.py:225 +#: build/models.py:943 build/serializers.py:224 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1001 build/serializers.py:548 +#: build/models.py:1003 build/serializers.py:547 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1352 +#: build/models.py:1344 msgid "Build Order Line Item" msgstr "" -#: build/models.py:1377 +#: build/models.py:1369 msgid "Build object" msgstr "" -#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 -#: build/serializers.py:254 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2539 -#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 -#: part/forms.py:48 part/models.py:3205 part/models.py:4078 +#: build/models.py:1383 build/models.py:1639 build/serializers.py:206 +#: build/serializers.py:253 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2509 +#: order/models.py:1272 order/models.py:1931 order/serializers.py:1327 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3170 part/models.py:4058 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1121,8 +1034,8 @@ msgstr "" #: report/templates/report/inventree_sales_order_report.html:29 #: report/templates/report/inventree_stock_location_report.html:104 #: report/templates/report/inventree_test_report.html:90 -#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 -#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:125 stock/serializers.py:165 stock/serializers.py:594 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1133,8 +1046,8 @@ msgstr "" #: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 #: templates/js/translated/model_renderers.js:236 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:962 +#: templates/js/translated/part.js:1812 templates/js/translated/part.js:3342 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1154,38 +1067,38 @@ msgstr "" msgid "Quantity" msgstr "Miktar" -#: build/models.py:1392 +#: build/models.py:1384 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1472 +#: build/models.py:1464 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:1481 +#: build/models.py:1473 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1491 order/models.py:1918 +#: build/models.py:1483 order/models.py:1882 msgid "Stock item is over-allocated" msgstr "Stok kalemi fazladan tahsis edilmiş" -#: build/models.py:1497 order/models.py:1921 +#: build/models.py:1489 order/models.py:1885 msgid "Allocation quantity must be greater than zero" msgstr "Tahsis edilen miktar sıfırdan büyük olmalıdır" -#: build/models.py:1503 +#: build/models.py:1495 msgid "Quantity must be 1 for serialized stock" msgstr "Seri numaralı stok için miktar bir olmalı" -#: build/models.py:1562 +#: build/models.py:1554 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 -#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 -#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: build/models.py:1626 build/serializers.py:846 order/serializers.py:1171 +#: order/serializers.py:1192 stock/models.py:358 stock/serializers.py:91 +#: stock/serializers.py:697 stock/serializers.py:1177 stock/serializers.py:1289 #: stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 @@ -1201,70 +1114,70 @@ msgstr "" msgid "Stock Item" msgstr "Stok Kalemi" -#: build/models.py:1635 +#: build/models.py:1627 msgid "Source stock item" msgstr "Kaynak stok kalemi" -#: build/models.py:1648 +#: build/models.py:1640 msgid "Stock quantity to allocate to build" msgstr "Yapım işi için tahsis edilen stok miktarı" -#: build/models.py:1656 +#: build/models.py:1648 msgid "Install into" msgstr "Kurulduğu yer" -#: build/models.py:1657 +#: build/models.py:1649 msgid "Destination stock item" msgstr "Hedef stok kalemi" -#: build/serializers.py:157 build/serializers.py:876 +#: build/serializers.py:156 build/serializers.py:875 #: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "" -#: build/serializers.py:169 +#: build/serializers.py:168 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:173 +#: build/serializers.py:172 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:177 +#: build/serializers.py:176 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:188 +#: build/serializers.py:187 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:208 build/serializers.py:255 +#: build/serializers.py:207 build/serializers.py:254 msgid "Enter quantity for build output" msgstr "Yapım işi çıktısı için miktarını girin" -#: build/serializers.py:276 +#: build/serializers.py:275 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:279 +#: build/serializers.py:278 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:294 order/serializers.py:589 order/serializers.py:1343 -#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:293 order/serializers.py:588 order/serializers.py:1331 +#: stock/serializers.py:614 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Seri Numaraları" -#: build/serializers.py:295 +#: build/serializers.py:294 msgid "Enter serial numbers for build outputs" msgstr "Yapım işi çıktısı için seri numaraları girin" -#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 -#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 -#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 -#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 -#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 +#: build/serializers.py:299 build/serializers.py:440 build/serializers.py:512 +#: order/serializers.py:564 order/serializers.py:672 order/serializers.py:1656 +#: part/serializers.py:1140 stock/serializers.py:100 stock/serializers.py:625 +#: stock/serializers.py:785 stock/serializers.py:881 stock/serializers.py:1321 +#: stock/serializers.py:1577 stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:1001 #: templates/js/translated/build.js:2372 @@ -1280,54 +1193,54 @@ msgstr "Yapım işi çıktısı için seri numaraları girin" msgid "Location" msgstr "Konum" -#: build/serializers.py:301 +#: build/serializers.py:300 msgid "Stock location for build output" msgstr "" -#: build/serializers.py:315 +#: build/serializers.py:314 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:316 +#: build/serializers.py:315 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:331 +#: build/serializers.py:330 msgid "Serial numbers must be provided for trackable parts" msgstr "" -#: build/serializers.py:356 stock/api.py:1031 +#: build/serializers.py:355 stock/api.py:1041 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:403 build/serializers.py:465 build/serializers.py:554 +#: build/serializers.py:402 build/serializers.py:464 build/serializers.py:553 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:442 +#: build/serializers.py:441 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:448 +#: build/serializers.py:447 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:449 +#: build/serializers.py:448 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:454 +#: build/serializers.py:453 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:514 +#: build/serializers.py:513 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:520 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:952 -#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 -#: stock/serializers.py:930 stock/serializers.py:1469 +#: build/serializers.py:519 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2044 order/serializers.py:596 stock/admin.py:164 +#: stock/serializers.py:932 stock/serializers.py:1465 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 @@ -1339,188 +1252,188 @@ msgstr "" msgid "Status" msgstr "Durum" -#: build/serializers.py:526 +#: build/serializers.py:525 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:527 +#: build/serializers.py:526 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:611 msgid "Consume Allocated Stock" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:612 msgid "Consume any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:619 +#: build/serializers.py:618 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:620 +#: build/serializers.py:619 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:646 msgid "Not permitted" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:647 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:648 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:679 +#: build/serializers.py:678 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:681 +#: build/serializers.py:680 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:691 +#: build/serializers.py:690 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:696 +#: build/serializers.py:695 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:697 +#: build/serializers.py:696 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:707 templates/js/translated/build.js:315 +#: build/serializers.py:706 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "Gerekli stok tamamen tahsis edilemedi" -#: build/serializers.py:712 order/serializers.py:301 order/serializers.py:1246 +#: build/serializers.py:711 order/serializers.py:300 order/serializers.py:1234 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:713 +#: build/serializers.py:712 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:723 templates/js/translated/build.js:319 +#: build/serializers.py:722 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:732 templates/js/translated/build.js:303 +#: build/serializers.py:731 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:770 +#: build/serializers.py:769 msgid "Build Line" msgstr "" -#: build/serializers.py:780 +#: build/serializers.py:779 msgid "Build output" msgstr "" -#: build/serializers.py:788 +#: build/serializers.py:787 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:824 +#: build/serializers.py:823 msgid "Build Line Item" msgstr "" -#: build/serializers.py:838 +#: build/serializers.py:837 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:853 stock/serializers.py:1194 +#: build/serializers.py:852 stock/serializers.py:1190 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:901 order/serializers.py:1237 +#: build/serializers.py:900 order/serializers.py:1225 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:907 +#: build/serializers.py:906 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:914 +#: build/serializers.py:913 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:938 order/serializers.py:1489 +#: build/serializers.py:937 order/serializers.py:1477 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:1001 +#: build/serializers.py:1000 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:1009 +#: build/serializers.py:1008 msgid "Exclude Location" msgstr "" -#: build/serializers.py:1010 +#: build/serializers.py:1009 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:1015 +#: build/serializers.py:1014 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:1016 +#: build/serializers.py:1015 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:1021 +#: build/serializers.py:1020 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:1022 +#: build/serializers.py:1021 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:1027 +#: build/serializers.py:1026 msgid "Optional Items" msgstr "" -#: build/serializers.py:1028 +#: build/serializers.py:1027 msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1050 +#: build/serializers.py:1049 msgid "Failed to start auto-allocation task" msgstr "" -#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 -#: stock/api.py:794 +#: build/serializers.py:1139 part/models.py:3953 part/models.py:4387 +#: stock/api.py:804 msgid "BOM Item" msgstr "" -#: build/serializers.py:1149 templates/js/translated/index.js:130 +#: build/serializers.py:1148 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:832 part/serializers.py:1506 +#: build/serializers.py:1153 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:828 part/serializers.py:1502 #: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 -#: templates/js/translated/build.js:2613 templates/js/translated/part.js:709 -#: templates/js/translated/part.js:2148 +#: templates/js/translated/build.js:2613 templates/js/translated/part.js:710 +#: templates/js/translated/part.js:2149 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1159 part/serializers.py:1508 +#: build/serializers.py:1158 part/serializers.py:1504 #: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 +#: build/serializers.py:1163 part/bom.py:172 part/serializers.py:1527 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1929 msgid "Available Stock" @@ -1544,7 +1457,7 @@ msgstr "İptal edildi" #: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 #: order/status_codes.py:44 order/status_codes.py:69 #: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:165 report/models.py:443 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 msgid "Complete" msgstr "Tamamlandı" @@ -1674,11 +1587,11 @@ 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:309 -#: order/models.py:1343 order/templates/order/order_base.html:186 +#: order/models.py:1307 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:196 #: report/templates/report/inventree_build_order_report.html:125 -#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1831 #: templates/js/translated/purchase_order.js:1739 #: templates/js/translated/purchase_order.js:2147 #: templates/js/translated/return_order.js:346 @@ -1711,8 +1624,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 -#: order/models.py:1587 order/models.py:1701 order/models.py:1855 +#: build/templates/build/detail.html:101 order/api.py:1463 order/models.py:845 +#: order/models.py:1551 order/models.py:1665 order/models.py:1819 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_report.html:135 @@ -1762,7 +1675,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:1479 +#: build/templates/build/detail.html:49 order/models.py:1443 #: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "Hedef" @@ -1775,7 +1688,7 @@ msgstr "Hedef konumu belirtilmedi" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:163 +#: build/templates/build/detail.html:80 stock/admin.py:162 #: stock/templates/stock/item_base.html:162 #: templates/js/translated/build.js:1380 #: templates/js/translated/model_renderers.js:241 @@ -1894,11 +1807,11 @@ msgstr "Ekler" msgid "Build Notes" msgstr "Yapım İşi Notları" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:436 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -1914,6 +1827,34 @@ msgstr "" msgid "Incomplete Outputs" msgstr "Tamamlanmamış Çıktılar" +#: common/api.py:689 +msgid "Is Link" +msgstr "" + +#: common/api.py:697 +msgid "Is File" +msgstr "" + +#: common/api.py:739 +msgid "User does not have permission to delete this attachment" +msgstr "" + +#: common/currency.py:130 +msgid "Invalid currency code" +msgstr "" + +#: common/currency.py:132 +msgid "Duplicate currency code" +msgstr "" + +#: common/currency.py:137 +msgid "No valid currency codes provided" +msgstr "" + +#: common/currency.py:154 +msgid "No plugin" +msgstr "" + #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1952,1509 +1893,1512 @@ msgstr "{name.title()} Dosya" msgid "Select {name} file to upload" msgstr "{name} dosyasını yüklemek için seçin" -#: common/models.py:71 +#: common/models.py:73 msgid "Updated" msgstr "" -#: common/models.py:72 +#: common/models.py:74 msgid "Timestamp of last update" msgstr "" -#: common/models.py:105 +#: common/models.py:107 msgid "Site URL is locked by configuration" msgstr "" -#: common/models.py:130 +#: common/models.py:132 msgid "Unique project code" msgstr "" -#: common/models.py:137 +#: common/models.py:139 msgid "Project description" msgstr "" -#: common/models.py:146 +#: common/models.py:148 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:766 +#: common/models.py:765 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:770 +#: common/models.py:769 msgid "Settings value" msgstr "" -#: common/models.py:822 +#: common/models.py:821 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:838 +#: common/models.py:837 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:846 +#: common/models.py:845 msgid "Value must be an integer value" msgstr "" -#: common/models.py:883 +#: common/models.py:882 msgid "Key string must be unique" msgstr "Anahtar dizesi benzersiz olmalı" -#: common/models.py:1115 +#: common/models.py:1114 msgid "No group" msgstr "" -#: common/models.py:1158 -msgid "An empty domain is not allowed." -msgstr "" - -#: common/models.py:1160 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "" - -#: common/models.py:1172 -msgid "No plugin" -msgstr "" - -#: common/models.py:1260 +#: common/models.py:1213 msgid "Restart required" msgstr "" -#: common/models.py:1262 +#: common/models.py:1215 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1269 +#: common/models.py:1222 msgid "Pending migrations" msgstr "" -#: common/models.py:1270 +#: common/models.py:1223 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1275 +#: common/models.py:1228 msgid "Server Instance Name" msgstr "" -#: common/models.py:1277 +#: common/models.py:1230 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1281 +#: common/models.py:1234 msgid "Use instance name" msgstr "" -#: common/models.py:1282 +#: common/models.py:1235 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1287 +#: common/models.py:1240 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1288 +#: common/models.py:1241 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1293 company/models.py:108 company/models.py:109 +#: common/models.py:1246 company/models.py:111 company/models.py:112 msgid "Company name" msgstr "Şirket adı" -#: common/models.py:1294 +#: common/models.py:1247 msgid "Internal company name" msgstr "" -#: common/models.py:1298 +#: common/models.py:1251 msgid "Base URL" msgstr "Ana URL" -#: common/models.py:1299 +#: common/models.py:1252 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1305 +#: common/models.py:1258 msgid "Default Currency" msgstr "Varsayılan Para Birimi" -#: common/models.py:1306 +#: common/models.py:1259 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1312 +#: common/models.py:1265 +msgid "Supported Currencies" +msgstr "" + +#: common/models.py:1266 +msgid "List of supported currency codes" +msgstr "" + +#: common/models.py:1272 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1314 +#: common/models.py:1274 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1317 common/models.py:1373 common/models.py:1386 -#: common/models.py:1394 common/models.py:1403 common/models.py:1412 -#: common/models.py:1620 common/models.py:1642 common/models.py:1757 -#: common/models.py:2076 +#: common/models.py:1277 common/models.py:1333 common/models.py:1346 +#: common/models.py:1354 common/models.py:1363 common/models.py:1372 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:2046 msgid "days" msgstr "günler" -#: common/models.py:1321 +#: common/models.py:1281 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1322 +#: common/models.py:1282 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1327 +#: common/models.py:1287 msgid "Download from URL" msgstr "URL'den indir" -#: common/models.py:1329 +#: common/models.py:1289 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:1335 +#: common/models.py:1295 msgid "Download Size Limit" msgstr "" -#: common/models.py:1336 +#: common/models.py:1296 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1342 +#: common/models.py:1302 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1344 +#: common/models.py:1304 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:1349 +#: common/models.py:1309 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1350 +#: common/models.py:1310 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1355 +#: common/models.py:1315 msgid "Require confirm" msgstr "" -#: common/models.py:1356 +#: common/models.py:1316 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1361 +#: common/models.py:1321 msgid "Tree Depth" msgstr "" -#: common/models.py:1363 +#: common/models.py:1323 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1369 +#: common/models.py:1329 msgid "Update Check Interval" msgstr "" -#: common/models.py:1370 +#: common/models.py:1330 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1376 +#: common/models.py:1336 msgid "Automatic Backup" msgstr "" -#: common/models.py:1377 +#: common/models.py:1337 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1382 +#: common/models.py:1342 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1383 +#: common/models.py:1343 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1389 +#: common/models.py:1349 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1391 +#: common/models.py:1351 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1398 +#: common/models.py:1358 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1400 +#: common/models.py:1360 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1407 +#: common/models.py:1367 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1409 +#: common/models.py:1369 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1416 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1376 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Barkod Desteği" -#: common/models.py:1417 +#: common/models.py:1377 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1422 +#: common/models.py:1382 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1423 +#: common/models.py:1383 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1429 +#: common/models.py:1389 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1430 +#: common/models.py:1390 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1435 +#: common/models.py:1395 msgid "Part Revisions" msgstr "" -#: common/models.py:1436 +#: common/models.py:1396 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1441 +#: common/models.py:1401 msgid "Allow Deletion from Assembly" msgstr "" -#: common/models.py:1442 +#: common/models.py:1402 msgid "Allow deletion of parts which are used in an assembly" msgstr "" -#: common/models.py:1447 +#: common/models.py:1407 msgid "IPN Regex" msgstr "DPN Regex" -#: common/models.py:1448 +#: common/models.py:1408 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:1451 +#: common/models.py:1411 msgid "Allow Duplicate IPN" msgstr "Yinelenen DPN'ye İzin Ver" -#: common/models.py:1452 +#: common/models.py:1412 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:1457 +#: common/models.py:1417 msgid "Allow Editing IPN" msgstr "DPN Düzenlemeye İzin Ver" -#: common/models.py:1458 +#: common/models.py:1418 msgid "Allow changing the IPN value while editing a part" msgstr "Parçayı düzenlerken DPN değiştirmeye izin ver" -#: common/models.py:1463 +#: common/models.py:1423 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1464 +#: common/models.py:1424 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1469 +#: common/models.py:1429 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1470 +#: common/models.py:1430 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1475 +#: common/models.py:1435 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1476 +#: common/models.py:1436 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1481 +#: common/models.py:1441 msgid "Copy Category Parameter Templates" msgstr "Kategori Paremetre Sablonu Kopyala" -#: common/models.py:1482 +#: common/models.py:1442 msgid "Copy category parameter templates when creating a part" msgstr "Parça oluştururken kategori parametre şablonlarını kopyala" -#: common/models.py:1487 part/admin.py:108 part/models.py:3815 -#: report/models.py:293 report/models.py:360 report/serializers.py:90 -#: report/serializers.py:131 stock/serializers.py:228 +#: common/models.py:1447 part/admin.py:108 part/models.py:3795 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:227 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "Şablon" -#: common/models.py:1488 +#: common/models.py:1448 msgid "Parts are templates by default" msgstr "Parçaları varsayılan olan şablondur" -#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 +#: common/models.py:1453 part/admin.py:91 part/admin.py:425 part/models.py:1052 #: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" msgstr "Montaj" -#: common/models.py:1494 +#: common/models.py:1454 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:1499 part/admin.py:95 part/models.py:1065 +#: common/models.py:1459 part/admin.py:95 part/models.py:1058 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "Bileşen" -#: common/models.py:1500 +#: common/models.py:1460 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:1505 part/admin.py:100 part/models.py:1077 +#: common/models.py:1465 part/admin.py:100 part/models.py:1070 msgid "Purchaseable" msgstr "Satın Alınabilir" -#: common/models.py:1506 +#: common/models.py:1466 msgid "Parts are purchaseable by default" msgstr "Parçalar varsayılan olarak satın alınabilir" -#: common/models.py:1511 part/admin.py:104 part/models.py:1083 +#: common/models.py:1471 part/admin.py:104 part/models.py:1076 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "Satılabilir" -#: common/models.py:1512 +#: common/models.py:1472 msgid "Parts are salable by default" msgstr "Parçalar varsayılan olarak satılabilir" -#: common/models.py:1517 part/admin.py:113 part/models.py:1071 +#: common/models.py:1477 part/admin.py:113 part/models.py:1064 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" msgstr "Takip Edilebilir" -#: common/models.py:1518 +#: common/models.py:1478 msgid "Parts are trackable by default" msgstr "Parçalar varsayılan olarak takip edilebilir" -#: common/models.py:1523 part/admin.py:117 part/models.py:1093 +#: common/models.py:1483 part/admin.py:117 part/models.py:1086 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" msgstr "Sanal" -#: common/models.py:1524 +#: common/models.py:1484 msgid "Parts are virtual by default" msgstr "Parçalar varsayılan olarak sanaldır" -#: common/models.py:1529 +#: common/models.py:1489 msgid "Show Import in Views" msgstr "" -#: common/models.py:1530 +#: common/models.py:1490 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1535 +#: common/models.py:1495 msgid "Show related parts" msgstr "İlgili parçaları göster" -#: common/models.py:1536 +#: common/models.py:1496 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1541 +#: common/models.py:1501 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1542 +#: common/models.py:1502 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1547 templates/js/translated/part.js:107 +#: common/models.py:1507 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1549 +#: common/models.py:1509 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1555 +#: common/models.py:1515 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1556 +#: common/models.py:1516 msgid "Format to display the part name" msgstr "" -#: common/models.py:1562 +#: common/models.py:1522 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1563 +#: common/models.py:1523 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1567 +#: common/models.py:1527 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1569 +#: common/models.py:1529 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1575 +#: common/models.py:1535 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1577 +#: common/models.py:1537 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1583 +#: common/models.py:1548 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1585 +#: common/models.py:1550 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1591 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1593 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1599 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1601 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1607 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1609 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1615 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1617 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1630 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1632 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1638 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1640 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1647 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1648 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1653 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1655 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1661 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1662 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1667 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1669 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1675 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1676 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1681 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "Hata Ayıklama Modu" -#: common/models.py:1682 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "Raporları hata ayıklama modunda üret (HTML çıktısı)" -#: common/models.py:1687 +#: common/models.py:1657 msgid "Log Report Errors" msgstr "" -#: common/models.py:1688 +#: common/models.py:1658 msgid "Log errors which occur when generating reports" msgstr "" -#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:301 +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:302 msgid "Page Size" msgstr "Sayfa Boyutu" -#: common/models.py:1694 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "PDF raporlar için varsayılan sayfa boyutu" -#: common/models.py:1699 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1700 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1705 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1707 +#: common/models.py:1677 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1713 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1714 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1719 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1720 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1725 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1727 +#: common/models.py:1697 msgid "Determines default behavior when a stock item is depleted" msgstr "" -#: common/models.py:1733 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1735 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1740 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1741 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1746 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1747 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1752 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1754 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1761 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1762 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1767 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1768 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "Stok konumu ve ögeler üzerinde sahiplik kontrolünü etkinleştirin" -#: common/models.py:1773 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1774 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1778 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1779 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1784 +#: common/models.py:1754 msgid "Check BOM when installing items" msgstr "" -#: common/models.py:1786 +#: common/models.py:1756 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "" -#: common/models.py:1792 +#: common/models.py:1762 msgid "Allow Out of Stock Transfer" msgstr "" -#: common/models.py:1794 +#: common/models.py:1764 msgid "Allow stock items which are not in stock to be transferred between stock locations" msgstr "" -#: common/models.py:1800 +#: common/models.py:1770 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1802 +#: common/models.py:1772 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1808 common/models.py:1836 common/models.py:1858 -#: common/models.py:1894 +#: common/models.py:1778 common/models.py:1806 common/models.py:1828 +#: common/models.py:1864 msgid "Require Responsible Owner" msgstr "" -#: common/models.py:1809 common/models.py:1837 common/models.py:1859 -#: common/models.py:1895 +#: common/models.py:1779 common/models.py:1807 common/models.py:1829 +#: common/models.py:1865 msgid "A responsible owner must be assigned to each order" msgstr "" -#: common/models.py:1814 +#: common/models.py:1784 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1816 +#: common/models.py:1786 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:1822 +#: common/models.py:1792 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1823 +#: common/models.py:1793 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1828 +#: common/models.py:1798 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1830 +#: common/models.py:1800 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1842 +#: common/models.py:1812 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1844 +#: common/models.py:1814 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1850 +#: common/models.py:1820 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1852 +#: common/models.py:1822 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1864 +#: common/models.py:1834 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1865 +#: common/models.py:1835 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1870 +#: common/models.py:1840 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1872 +#: common/models.py:1842 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1878 -#, fuzzy -#| msgid "Mark order as complete" +#: common/models.py:1848 msgid "Mark Shipped Orders as Complete" -msgstr "Siparişi tamamlandı olarak işaretle" +msgstr "" -#: common/models.py:1880 +#: common/models.py:1850 msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" msgstr "" -#: common/models.py:1886 +#: common/models.py:1856 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1888 +#: common/models.py:1858 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1900 +#: common/models.py:1870 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1902 +#: common/models.py:1872 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1908 +#: common/models.py:1878 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1910 +#: common/models.py:1880 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1917 +#: common/models.py:1887 msgid "Enable password forgot" msgstr "" -#: common/models.py:1918 +#: common/models.py:1888 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1923 +#: common/models.py:1893 msgid "Enable registration" msgstr "" -#: common/models.py:1924 +#: common/models.py:1894 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1929 +#: common/models.py:1899 msgid "Enable SSO" msgstr "" -#: common/models.py:1930 +#: common/models.py:1900 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1935 +#: common/models.py:1905 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1937 +#: common/models.py:1907 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1943 +#: common/models.py:1913 msgid "Email required" msgstr "" -#: common/models.py:1944 +#: common/models.py:1914 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1949 +#: common/models.py:1919 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1951 +#: common/models.py:1921 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1957 +#: common/models.py:1927 msgid "Mail twice" msgstr "" -#: common/models.py:1958 +#: common/models.py:1928 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1963 +#: common/models.py:1933 msgid "Password twice" msgstr "" -#: common/models.py:1964 +#: common/models.py:1934 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1969 +#: common/models.py:1939 msgid "Allowed domains" msgstr "" -#: common/models.py:1971 +#: common/models.py:1941 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1977 +#: common/models.py:1947 msgid "Group on signup" msgstr "" -#: common/models.py:1978 +#: common/models.py:1948 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1983 +#: common/models.py:1953 msgid "Enforce MFA" msgstr "" -#: common/models.py:1984 +#: common/models.py:1954 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1989 +#: common/models.py:1959 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1991 +#: common/models.py:1961 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1999 +#: common/models.py:1969 msgid "Check for plugin updates" msgstr "" -#: common/models.py:2000 +#: common/models.py:1970 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:2006 +#: common/models.py:1976 msgid "Enable URL integration" msgstr "" -#: common/models.py:2007 +#: common/models.py:1977 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:2013 +#: common/models.py:1983 msgid "Enable navigation integration" msgstr "" -#: common/models.py:2014 +#: common/models.py:1984 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:2020 +#: common/models.py:1990 msgid "Enable app integration" msgstr "" -#: common/models.py:2021 +#: common/models.py:1991 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:2027 +#: common/models.py:1997 msgid "Enable schedule integration" msgstr "" -#: common/models.py:2028 +#: common/models.py:1998 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:2034 +#: common/models.py:2004 msgid "Enable event integration" msgstr "" -#: common/models.py:2035 +#: common/models.py:2005 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:2041 +#: common/models.py:2011 msgid "Enable project codes" msgstr "" -#: common/models.py:2042 +#: common/models.py:2012 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:2047 +#: common/models.py:2017 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:2049 +#: common/models.py:2019 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:2055 +#: common/models.py:2025 msgid "Exclude External Locations" msgstr "" -#: common/models.py:2057 +#: common/models.py:2027 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:2063 +#: common/models.py:2033 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:2065 +#: common/models.py:2035 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:2071 +#: common/models.py:2041 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:2073 +#: common/models.py:2043 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:2080 +#: common/models.py:2050 msgid "Display Users full names" msgstr "" -#: common/models.py:2081 +#: common/models.py:2051 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:2086 +#: common/models.py:2056 msgid "Enable Test Station Data" msgstr "" -#: common/models.py:2087 +#: common/models.py:2057 msgid "Enable test station data collection for test results" msgstr "" -#: common/models.py:2099 common/models.py:2509 +#: common/models.py:2069 common/models.py:2479 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2142 +#: common/models.py:2112 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2144 +#: common/models.py:2114 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2150 +#: common/models.py:2120 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2151 +#: common/models.py:2121 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2156 +#: common/models.py:2126 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2157 +#: common/models.py:2127 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2162 +#: common/models.py:2132 msgid "Show latest parts" msgstr "" -#: common/models.py:2163 +#: common/models.py:2133 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2168 +#: common/models.py:2138 msgid "Show invalid BOMs" msgstr "" -#: common/models.py:2169 +#: common/models.py:2139 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2174 +#: common/models.py:2144 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2175 +#: common/models.py:2145 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2180 +#: common/models.py:2150 msgid "Show low stock" msgstr "" -#: common/models.py:2181 +#: common/models.py:2151 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2186 +#: common/models.py:2156 msgid "Show depleted stock" msgstr "" -#: common/models.py:2187 +#: common/models.py:2157 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2192 +#: common/models.py:2162 msgid "Show needed stock" msgstr "" -#: common/models.py:2193 +#: common/models.py:2163 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2198 +#: common/models.py:2168 msgid "Show expired stock" msgstr "" -#: common/models.py:2199 +#: common/models.py:2169 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2204 +#: common/models.py:2174 msgid "Show stale stock" msgstr "" -#: common/models.py:2205 +#: common/models.py:2175 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2210 +#: common/models.py:2180 msgid "Show pending builds" msgstr "" -#: common/models.py:2211 +#: common/models.py:2181 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2216 +#: common/models.py:2186 msgid "Show overdue builds" msgstr "" -#: common/models.py:2217 +#: common/models.py:2187 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2222 +#: common/models.py:2192 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2223 +#: common/models.py:2193 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2228 +#: common/models.py:2198 msgid "Show overdue POs" msgstr "" -#: common/models.py:2229 +#: common/models.py:2199 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2234 +#: common/models.py:2204 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2235 +#: common/models.py:2205 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2240 +#: common/models.py:2210 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2241 +#: common/models.py:2211 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2246 +#: common/models.py:2216 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2247 +#: common/models.py:2217 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2252 +#: common/models.py:2222 msgid "Show News" msgstr "" -#: common/models.py:2253 +#: common/models.py:2223 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2258 +#: common/models.py:2228 msgid "Inline label display" msgstr "" -#: common/models.py:2260 +#: common/models.py:2230 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2266 +#: common/models.py:2236 msgid "Default label printer" msgstr "" -#: common/models.py:2268 +#: common/models.py:2238 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2274 +#: common/models.py:2244 msgid "Inline report display" msgstr "" -#: common/models.py:2276 +#: common/models.py:2246 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2282 +#: common/models.py:2252 msgid "Search Parts" msgstr "" -#: common/models.py:2283 +#: common/models.py:2253 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2288 +#: common/models.py:2258 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2289 +#: common/models.py:2259 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2294 +#: common/models.py:2264 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2295 +#: common/models.py:2265 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2300 +#: common/models.py:2270 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2301 +#: common/models.py:2271 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2306 +#: common/models.py:2276 msgid "Search Categories" msgstr "" -#: common/models.py:2307 +#: common/models.py:2277 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2312 +#: common/models.py:2282 msgid "Search Stock" msgstr "" -#: common/models.py:2313 +#: common/models.py:2283 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2318 +#: common/models.py:2288 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2320 +#: common/models.py:2290 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2326 +#: common/models.py:2296 msgid "Search Locations" msgstr "" -#: common/models.py:2327 +#: common/models.py:2297 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2332 +#: common/models.py:2302 msgid "Search Companies" msgstr "" -#: common/models.py:2333 +#: common/models.py:2303 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2338 +#: common/models.py:2308 msgid "Search Build Orders" msgstr "" -#: common/models.py:2339 +#: common/models.py:2309 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2344 +#: common/models.py:2314 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2345 +#: common/models.py:2315 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2350 +#: common/models.py:2320 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2352 +#: common/models.py:2322 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2358 +#: common/models.py:2328 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2359 +#: common/models.py:2329 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2364 +#: common/models.py:2334 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2366 +#: common/models.py:2336 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2372 +#: common/models.py:2342 msgid "Search Return Orders" msgstr "" -#: common/models.py:2373 +#: common/models.py:2343 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2378 +#: common/models.py:2348 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2380 +#: common/models.py:2350 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2386 +#: common/models.py:2356 msgid "Search Preview Results" msgstr "" -#: common/models.py:2388 +#: common/models.py:2358 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2394 +#: common/models.py:2364 msgid "Regex Search" msgstr "" -#: common/models.py:2395 +#: common/models.py:2365 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2400 +#: common/models.py:2370 msgid "Whole Word Search" msgstr "" -#: common/models.py:2401 +#: common/models.py:2371 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2406 +#: common/models.py:2376 msgid "Show Quantity in Forms" msgstr "Formlarda Miktarı Göster" -#: common/models.py:2407 +#: common/models.py:2377 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2412 +#: common/models.py:2382 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2413 +#: common/models.py:2383 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2418 +#: common/models.py:2388 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2419 +#: common/models.py:2389 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2424 +#: common/models.py:2394 msgid "Date Format" msgstr "" -#: common/models.py:2425 +#: common/models.py:2395 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2438 part/templates/part/detail.html:41 +#: common/models.py:2408 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2439 +#: common/models.py:2409 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2444 part/templates/part/detail.html:62 +#: common/models.py:2414 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2446 +#: common/models.py:2416 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2452 +#: common/models.py:2422 msgid "Table String Length" msgstr "" -#: common/models.py:2454 +#: common/models.py:2424 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2460 +#: common/models.py:2430 msgid "Default part label template" msgstr "" -#: common/models.py:2461 +#: common/models.py:2431 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2466 +#: common/models.py:2436 msgid "Default stock item template" msgstr "" -#: common/models.py:2468 +#: common/models.py:2438 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2474 +#: common/models.py:2444 msgid "Default stock location label template" msgstr "" -#: common/models.py:2476 +#: common/models.py:2446 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2482 +#: common/models.py:2452 msgid "Default build line label template" msgstr "" -#: common/models.py:2484 +#: common/models.py:2454 msgid "The build line label template to be automatically selected" msgstr "" -#: common/models.py:2490 +#: common/models.py:2460 msgid "Receive error reports" msgstr "" -#: common/models.py:2491 +#: common/models.py:2461 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2496 +#: common/models.py:2466 msgid "Last used printing machines" msgstr "" -#: common/models.py:2497 +#: common/models.py:2467 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2540 +#: common/models.py:2487 common/models.py:2488 common/models.py:2636 +#: common/models.py:2637 common/models.py:2882 common/models.py:2883 +#: common/models.py:3193 common/models.py:3194 part/models.py:3193 +#: part/models.py:3280 part/models.py:3353 part/models.py:3381 +#: plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "Kullanıcı" + +#: common/models.py:2510 msgid "Price break quantity" msgstr "" -#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1382 order/models.py:2301 -#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 +#: common/models.py:2517 company/serializers.py:472 order/admin.py:42 +#: order/models.py:1346 order/models.py:2265 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1886 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:740 msgid "Price" msgstr "Fiyat" -#: common/models.py:2548 +#: common/models.py:2518 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2719 common/models.py:2904 +#: common/models.py:2613 common/models.py:2798 msgid "Endpoint" msgstr "" -#: common/models.py:2720 +#: common/models.py:2614 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2730 +#: common/models.py:2624 msgid "Name for this webhook" msgstr "" -#: common/models.py:2734 company/models.py:160 company/models.py:814 -#: machine/models.py:39 part/admin.py:88 part/models.py:1088 -#: plugin/models.py:65 templates/js/translated/company.js:523 +#: common/models.py:2628 company/models.py:163 company/models.py:782 +#: machine/models.py:39 part/admin.py:88 part/models.py:1081 +#: plugin/models.py:66 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3464,101 +3408,118 @@ msgstr "" msgid "Active" msgstr "Aktif" -#: common/models.py:2734 +#: common/models.py:2628 msgid "Is this webhook active" msgstr "" -#: common/models.py:2750 users/models.py:159 +#: common/models.py:2644 users/models.py:159 msgid "Token" msgstr "" -#: common/models.py:2751 +#: common/models.py:2645 msgid "Token for access" msgstr "" -#: common/models.py:2759 +#: common/models.py:2653 msgid "Secret" msgstr "" -#: common/models.py:2760 +#: common/models.py:2654 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2868 +#: common/models.py:2762 msgid "Message ID" msgstr "" -#: common/models.py:2869 +#: common/models.py:2763 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2877 +#: common/models.py:2771 msgid "Host" msgstr "" -#: common/models.py:2878 +#: common/models.py:2772 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2886 +#: common/models.py:2780 msgid "Header" msgstr "" -#: common/models.py:2887 +#: common/models.py:2781 msgid "Header of this message" msgstr "" -#: common/models.py:2894 +#: common/models.py:2788 msgid "Body" msgstr "" -#: common/models.py:2895 +#: common/models.py:2789 msgid "Body of this message" msgstr "" -#: common/models.py:2905 +#: common/models.py:2799 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2910 +#: common/models.py:2804 msgid "Worked on" msgstr "" -#: common/models.py:2911 +#: common/models.py:2805 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:3037 +#: common/models.py:2931 msgid "Id" msgstr "" -#: common/models.py:3039 templates/js/translated/company.js:965 +#: common/models.py:2933 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:3043 templates/js/translated/news.js:60 +#: common/models.py:2935 common/models.py:3177 company/models.py:149 +#: company/models.py:440 company/models.py:500 company/models.py:799 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +#: part/admin.py:55 part/models.py:955 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "Bağlantı" + +#: common/models.py:2937 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:3045 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2939 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:3047 templates/js/translated/news.js:52 +#: common/models.py:2941 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Read" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Was this news item read?" msgstr "" -#: common/models.py:3067 company/models.py:156 part/models.py:972 +#: common/models.py:2961 company/models.py:159 part/models.py:965 #: 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.html:35 @@ -3568,34 +3529,89 @@ msgstr "" msgid "Image" msgstr "Resim" -#: common/models.py:3067 +#: common/models.py:2961 msgid "Image file" msgstr "" -#: common/models.py:3109 +#: common/models.py:2973 common/models.py:3161 +msgid "Target model type for this image" +msgstr "" + +#: common/models.py:2977 +msgid "Target model ID for this image" +msgstr "" + +#: common/models.py:3018 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3128 +#: common/models.py:3037 msgid "Unit name" msgstr "" -#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3044 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3136 +#: common/models.py:3045 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3052 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3144 +#: common/models.py:3053 msgid "Unit definition" msgstr "" +#: common/models.py:3111 common/models.py:3168 stock/models.py:2426 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "Ek" + +#: common/models.py:3123 +msgid "Missing file" +msgstr "Eksik dosya" + +#: common/models.py:3124 +msgid "Missing external link" +msgstr "Bozuk dış bağlantı" + +#: common/models.py:3169 +msgid "Select file to attach" +msgstr "Eklenecek dosyayı seç" + +#: common/models.py:3184 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "Yorum" + +#: common/models.py:3185 +msgid "Attachment comment" +msgstr "" + +#: common/models.py:3201 +msgid "Upload date" +msgstr "" + +#: common/models.py:3202 +msgid "Date the file was uploaded" +msgstr "" + +#: common/models.py:3206 +msgid "File size" +msgstr "" + +#: common/models.py:3206 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3244 common/serializers.py:553 +msgid "Invalid model type specified for attachment" +msgstr "" + #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" @@ -3630,66 +3646,103 @@ msgstr "" msgid "Error raised by plugin" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:371 msgid "Is Running" msgstr "" -#: common/serializers.py:372 +#: common/serializers.py:377 msgid "Pending Tasks" msgstr "" -#: common/serializers.py:378 +#: common/serializers.py:383 msgid "Scheduled Tasks" msgstr "" -#: common/serializers.py:384 +#: common/serializers.py:389 msgid "Failed Tasks" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Task ID" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Unique task ID" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock time" msgstr "" -#: common/serializers.py:403 +#: common/serializers.py:408 msgid "Task name" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function name" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Arguments" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Task arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Keyword Arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Task keyword arguments" msgstr "" +#: common/serializers.py:525 +msgid "Filename" +msgstr "Dosya adı" + +#: common/serializers.py:532 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: common/serializers.py:559 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "" + +#: common/validators.py:33 +msgid "No attachment model type provided" +msgstr "" + +#: common/validators.py:39 +msgid "Invalid attachment model type" +msgstr "" + +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "" + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +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 @@ -3728,210 +3781,222 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/api.py:164 +#: company/api.py:144 msgid "Part is Active" msgstr "" -#: company/api.py:168 +#: company/api.py:148 msgid "Manufacturer is Active" msgstr "" -#: company/api.py:317 +#: company/api.py:281 msgid "Supplier Part is Active" msgstr "" -#: company/api.py:321 +#: company/api.py:285 msgid "Internal Part is Active" msgstr "" -#: company/api.py:325 +#: company/api.py:289 msgid "Supplier is Active" msgstr "" -#: company/models.py:114 +#: company/models.py:100 company/models.py:365 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:822 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "Şirketler" + +#: company/models.py:117 msgid "Company description" msgstr "" -#: company/models.py:115 +#: company/models.py:118 msgid "Description of the company" msgstr "" -#: company/models.py:120 company/templates/company/company_base.html:106 +#: company/models.py:123 company/templates/company/company_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:532 msgid "Website" msgstr "" -#: company/models.py:120 +#: company/models.py:123 msgid "Company website URL" msgstr "Şirket web sitesi" -#: company/models.py:125 +#: company/models.py:128 msgid "Phone number" msgstr "Telefon numarası" -#: company/models.py:127 +#: company/models.py:130 msgid "Contact phone number" msgstr "İletişim telefon numarası" -#: company/models.py:134 +#: company/models.py:137 msgid "Contact email address" msgstr "İletişim e-posta adresi" -#: company/models.py:139 company/templates/company/company_base.html:145 +#: company/models.py:142 company/templates/company/company_base.html:145 #: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "İletişim" -#: company/models.py:141 +#: company/models.py:144 msgid "Point of contact" msgstr "" -#: company/models.py:147 +#: company/models.py:150 msgid "Link to external company information" msgstr "" -#: company/models.py:160 +#: company/models.py:163 msgid "Is this company active?" msgstr "" -#: company/models.py:165 +#: company/models.py:168 msgid "is customer" msgstr "müşteri mi" -#: company/models.py:166 +#: company/models.py:169 msgid "Do you sell items to this company?" msgstr "Bu şirkete ürün satıyor musunuz?" -#: company/models.py:171 +#: company/models.py:174 msgid "is supplier" msgstr "tedarikçi mi" -#: company/models.py:172 +#: company/models.py:175 msgid "Do you purchase items from this company?" msgstr "Bu şirketten ürün satın alıyor musunuz?" -#: company/models.py:177 +#: company/models.py:180 msgid "is manufacturer" msgstr "üretici mi" -#: company/models.py:178 +#: company/models.py:181 msgid "Does this company manufacture parts?" msgstr "Bu şirket üretim yapıyor mu?" -#: company/models.py:186 +#: company/models.py:189 msgid "Default currency used for this company" msgstr "Bu şirket için varsayılan para birimi" -#: company/models.py:273 company/models.py:382 -#: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:812 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 -msgid "Company" -msgstr "" - -#: company/models.py:383 +#: company/models.py:366 msgid "Select company" msgstr "" -#: company/models.py:388 +#: company/models.py:371 msgid "Address title" msgstr "" -#: company/models.py:389 +#: company/models.py:372 msgid "Title describing the address entry" msgstr "" -#: company/models.py:395 +#: company/models.py:378 msgid "Primary address" msgstr "" -#: company/models.py:396 +#: company/models.py:379 msgid "Set as primary address" msgstr "" -#: company/models.py:401 templates/js/translated/company.js:914 +#: company/models.py:384 templates/js/translated/company.js:914 #: templates/js/translated/company.js:971 msgid "Line 1" msgstr "" -#: company/models.py:402 +#: company/models.py:385 msgid "Address line 1" msgstr "" -#: company/models.py:408 templates/js/translated/company.js:915 +#: company/models.py:391 templates/js/translated/company.js:915 #: templates/js/translated/company.js:977 msgid "Line 2" msgstr "" -#: company/models.py:409 +#: company/models.py:392 msgid "Address line 2" msgstr "" -#: company/models.py:415 company/models.py:416 +#: company/models.py:398 company/models.py:399 #: templates/js/translated/company.js:983 msgid "Postal code" msgstr "" -#: company/models.py:422 +#: company/models.py:405 msgid "City/Region" msgstr "" -#: company/models.py:423 +#: company/models.py:406 msgid "Postal code city/region" msgstr "" -#: company/models.py:429 +#: company/models.py:412 msgid "State/Province" msgstr "" -#: company/models.py:430 +#: company/models.py:413 msgid "State or province" msgstr "" -#: company/models.py:436 templates/js/translated/company.js:1001 +#: company/models.py:419 templates/js/translated/company.js:1001 msgid "Country" msgstr "" -#: company/models.py:437 +#: company/models.py:420 msgid "Address country" msgstr "" -#: company/models.py:443 +#: company/models.py:426 msgid "Courier shipping notes" msgstr "" -#: company/models.py:444 +#: company/models.py:427 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:450 +#: company/models.py:433 msgid "Internal shipping notes" msgstr "" -#: company/models.py:451 +#: company/models.py:434 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:458 +#: company/models.py:441 msgid "Link to address information (external)" msgstr "" -#: company/models.py:489 company/models.py:792 stock/models.py:768 -#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 +#: company/models.py:463 company/models.py:574 company/models.py:792 +#: 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:475 company/models.py:760 stock/models.py:766 +#: stock/serializers.py:422 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Temel Parça" -#: company/models.py:491 company/models.py:794 +#: company/models.py:477 company/models.py:762 msgid "Select part" msgstr "Parça seçin" -#: company/models.py:500 company/templates/company/company_base.html:82 +#: company/models.py:486 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:530 +#: company/templates/company/supplier_part.html:145 part/serializers.py:525 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -3941,152 +4006,154 @@ msgstr "Parça seçin" msgid "Manufacturer" msgstr "Üretici" -#: company/models.py:501 +#: company/models.py:487 msgid "Select manufacturer" msgstr "Üretici seçin" -#: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:540 +#: company/models.py:493 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:535 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 -#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1801 #: templates/js/translated/purchase_order.js:1851 #: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "ÜPN" -#: company/models.py:508 +#: company/models.py:494 msgid "Manufacturer Part Number" msgstr "Üretici Parça Numarası" -#: company/models.py:515 +#: company/models.py:501 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:524 +#: company/models.py:510 msgid "Manufacturer part description" msgstr "" -#: company/models.py:581 company/models.py:608 company/models.py:824 -#: 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:615 +#: company/models.py:581 msgid "Parameter name" msgstr "Parametre adı" -#: company/models.py:621 report/templates/report/inventree_test_report.html:104 -#: stock/models.py:2429 templates/js/translated/company.js:1166 -#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 +#: company/models.py:587 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2418 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1493 #: templates/js/translated/stock.js:1522 msgid "Value" msgstr "Değer" -#: company/models.py:622 +#: company/models.py:588 msgid "Parameter value" msgstr "Parametre değeri" -#: company/models.py:629 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1052 part/models.py:3666 +#: company/models.py:595 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1045 part/models.py:3646 #: part/templates/part/part_base.html:284 -#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1512 +#: templates/js/translated/part.js:1616 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:630 +#: company/models.py:596 msgid "Parameter units" msgstr "" -#: company/models.py:732 +#: company/models.py:648 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:777 stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "Tedarikçi Parçası" + +#: company/models.py:700 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:739 +#: company/models.py:707 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:753 +#: company/models.py:721 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/models.py:770 company/templates/company/company_base.html:87 #: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:514 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:509 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:511 -#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1769 #: templates/js/translated/pricing.js:498 #: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "Tedarikçi" -#: company/models.py:803 +#: company/models.py:771 msgid "Select supplier" msgstr "Tedarikçi seçin" -#: company/models.py:809 part/serializers.py:525 +#: company/models.py:777 part/serializers.py:520 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:815 +#: company/models.py:783 msgid "Is this supplier part active?" msgstr "" -#: company/models.py:825 +#: company/models.py:793 msgid "Select manufacturer part" msgstr "" -#: company/models.py:832 +#: company/models.py:800 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:841 +#: company/models.py:809 msgid "Supplier part description" msgstr "" -#: company/models.py:848 company/templates/company/supplier_part.html:187 -#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 +#: company/models.py:816 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4093 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_purchase_order_report.html:32 #: report/templates/report/inventree_return_order_report.html:27 #: report/templates/report/inventree_sales_order_report.html:32 #: report/templates/report/inventree_stock_location_report.html:105 -#: stock/serializers.py:708 +#: stock/serializers.py:710 msgid "Note" msgstr "Not" -#: company/models.py:857 part/models.py:2010 +#: company/models.py:825 part/models.py:2003 msgid "base cost" msgstr "temel maliyet" -#: company/models.py:858 part/models.py:2011 +#: company/models.py:826 part/models.py:2004 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:865 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 +#: company/models.py:833 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:797 stock/serializers.py:1475 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 #: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "Paketleme" -#: company/models.py:866 +#: company/models.py:834 msgid "Part packaging" msgstr "" -#: company/models.py:871 templates/js/translated/company.js:1651 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: company/models.py:839 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:311 #: templates/js/translated/purchase_order.js:841 #: templates/js/translated/purchase_order.js:1103 @@ -4095,35 +4162,35 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:873 +#: company/models.py:841 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:892 part/models.py:2017 +#: company/models.py:860 part/models.py:2010 msgid "multiple" msgstr "çoklu" -#: company/models.py:893 +#: company/models.py:861 msgid "Order multiple" msgstr "" -#: company/models.py:905 +#: company/models.py:873 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:911 +#: company/models.py:879 msgid "Availability Updated" msgstr "" -#: company/models.py:912 +#: company/models.py:880 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:163 +#: company/serializers.py:161 msgid "Default currency used for this supplier" msgstr "" -#: company/serializers.py:381 part/admin.py:126 +#: company/serializers.py:357 part/admin.py:126 #: part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1689 #: templates/js/translated/table_filters.js:355 @@ -4135,7 +4202,7 @@ msgstr "" #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 #: templates/js/translated/model_renderers.js:312 -#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +#: templates/js/translated/part.js:815 templates/js/translated/part.js:1219 msgid "Inactive" msgstr "Pasif" @@ -4174,7 +4241,7 @@ msgstr "" #: report/templates/report/inventree_purchase_order_report.html:40 #: report/templates/report/inventree_sales_order_report.html:40 #: report/templates/report/inventree_test_report.html:84 -#: report/templates/report/inventree_test_report.html:163 +#: report/templates/report/inventree_test_report.html:162 msgid "Part image" msgstr "" @@ -4193,10 +4260,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:92 order/models.py:940 -#: order/models.py:2068 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:148 stock/models.py:821 -#: stock/models.py:822 stock/serializers.py:1229 +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2032 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:819 +#: stock/models.py:820 stock/serializers.py:1225 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 @@ -4407,7 +4474,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:836 +#: part/admin.py:122 part/serializers.py:832 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4427,8 +4494,8 @@ msgstr "" msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:206 -#: templates/js/translated/part.js:1422 +#: company/templates/company/manufacturer_part.html:196 +#: templates/js/translated/part.js:1423 msgid "Add Parameter" msgstr "" @@ -4456,15 +4523,6 @@ msgstr "" msgid "Addresses" msgstr "" -#: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:452 -#: stock/models.py:779 stock/templates/stock/item_base.html:233 -#: templates/js/translated/company.js:1600 -#: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2280 -msgid "Supplier Part" -msgstr "Tedarikçi Parçası" - #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1526 msgid "Supplier part actions" @@ -4507,8 +4565,8 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:524 -#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: part/bom.py:311 part/serializers.py:519 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1787 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1850 #: templates/js/translated/purchase_order.js:2028 @@ -4520,12 +4578,12 @@ msgid "Supplier Part Stock" msgstr "Tedarikçi Parça Stoku" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:207 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" @@ -4557,15 +4615,15 @@ msgid "Update Part Availability" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:835 part/stocktake.py:223 +#: part/serializers.py:831 part/stocktake.py:224 #: part/templates/part/category.html:183 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:916 stock/serializers.py:1080 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:918 stock/serializers.py:1091 #: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:191 #: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1061 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:206 msgid "Stock Items" @@ -4592,10 +4650,6 @@ msgstr "Müşteriler" msgid "New Customer" msgstr "Yeni Müşteri" -#: company/views.py:51 templates/js/translated/search.js:192 -msgid "Companies" -msgstr "Şirketler" - #: company/views.py:52 msgid "New Company" msgstr "Yeni Şirket" @@ -4616,7 +4670,7 @@ msgstr "" msgid "Connected" msgstr "" -#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: machine/machine_types/label_printer.py:235 order/api.py:1467 #: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "" @@ -4705,7 +4759,7 @@ msgstr "" msgid "Config type" msgstr "" -#: order/admin.py:30 order/models.py:89 +#: order/admin.py:30 order/models.py:90 #: report/templates/report/inventree_purchase_order_report.html:31 #: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 @@ -4714,30 +4768,30 @@ msgstr "" msgid "Total Price" msgstr "" -#: order/api.py:161 order/serializers.py:91 +#: order/api.py:157 order/serializers.py:90 #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "" -#: order/api.py:165 templates/js/translated/table_filters.js:194 +#: order/api.py:161 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "" -#: order/api.py:240 +#: order/api.py:236 msgid "No matching purchase order found" msgstr "" -#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 -#: order/models.py:1586 order/models.py:1700 order/models.py:1854 -#: order/models.py:2267 order/models.py:2318 +#: order/api.py:435 order/api.py:801 order/models.py:1395 order/models.py:1504 +#: order/models.py:1550 order/models.py:1664 order/models.py:1818 +#: order/models.py:2231 order/models.py:2282 #: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "" -#: order/api.py:441 order/api.py:838 +#: order/api.py:439 order/api.py:822 msgid "Order Complete" msgstr "" @@ -4745,13 +4799,13 @@ msgstr "" msgid "Order Pending" msgstr "" -#: order/api.py:1509 order/models.py:380 order/models.py:1432 -#: order/models.py:1541 order/templates/order/order_base.html:9 +#: order/api.py:1461 order/models.py:380 order/models.py:1396 +#: order/models.py:1505 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_purchase_order_report.html:14 -#: stock/serializers.py:119 stock/templates/stock/item_base.html:176 +#: stock/serializers.py:118 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/part.js:1746 templates/js/translated/pricing.js:804 #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1673 @@ -4759,8 +4813,8 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1513 order/models.py:2017 order/models.py:2268 -#: order/models.py:2319 order/templates/order/return_order_base.html:9 +#: order/api.py:1465 order/models.py:1981 order/models.py:2232 +#: order/models.py:2283 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report.html:13 #: templates/js/translated/return_order.js:280 @@ -4768,15 +4822,15 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/models.py:90 +#: order/models.py:91 msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:71 +#: order/models.py:96 order/serializers.py:70 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:72 +#: order/models.py:99 order/serializers.py:71 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -4792,7 +4846,7 @@ msgstr "" msgid "Select project code for this order" msgstr "" -#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 msgid "Link to external page" msgstr "Harici sayfaya bağlantı" @@ -4816,11 +4870,11 @@ msgstr "" msgid "Company address for this order" msgstr "" -#: order/models.py:464 order/models.py:929 +#: order/models.py:464 order/models.py:927 msgid "Order reference" msgstr "Sipariş referansı" -#: order/models.py:472 order/models.py:953 +#: order/models.py:472 order/models.py:951 msgid "Purchase order status" msgstr "" @@ -4841,15 +4895,15 @@ msgstr "" msgid "received by" msgstr "" -#: order/models.py:514 order/models.py:2094 +#: order/models.py:514 order/models.py:2058 msgid "Issue Date" msgstr "" -#: order/models.py:515 order/models.py:2095 +#: order/models.py:515 order/models.py:2059 msgid "Date order was issued" msgstr "" -#: order/models.py:522 order/models.py:2102 +#: order/models.py:522 order/models.py:2066 msgid "Date order was completed" msgstr "" @@ -4861,96 +4915,94 @@ msgstr "" msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:941 +#: order/models.py:939 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:964 order/models.py:2087 +#: order/models.py:962 order/models.py:2051 msgid "Customer Reference " msgstr "" -#: order/models.py:965 order/models.py:2088 +#: order/models.py:963 order/models.py:2052 msgid "Customer order reference code" msgstr "" -#: order/models.py:969 order/models.py:1707 +#: order/models.py:967 order/models.py:1671 #: templates/js/translated/sales_order.js:879 #: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "" -#: order/models.py:978 +#: order/models.py:976 msgid "shipped by" msgstr "" -#: order/models.py:1027 -#, fuzzy -#| msgid "Build output is already completed" +#: order/models.py:1025 msgid "Order is already complete" -msgstr "Yapım işi çıktısı zaten tamamlanmış" +msgstr "" -#: order/models.py:1030 +#: order/models.py:1028 msgid "Order is already cancelled" msgstr "" -#: order/models.py:1034 +#: order/models.py:1032 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:1038 +#: order/models.py:1036 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:1043 +#: order/models.py:1041 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1309 +#: order/models.py:1273 msgid "Item quantity" msgstr "" -#: order/models.py:1326 +#: order/models.py:1290 msgid "Line item reference" msgstr "" -#: order/models.py:1333 +#: order/models.py:1297 msgid "Line item notes" msgstr "" -#: order/models.py:1345 +#: order/models.py:1309 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1366 +#: order/models.py:1330 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1372 +#: order/models.py:1336 msgid "Context" msgstr "" -#: order/models.py:1373 +#: order/models.py:1337 msgid "Additional context for this line" msgstr "" -#: order/models.py:1383 +#: order/models.py:1347 msgid "Unit price" msgstr "" -#: order/models.py:1416 +#: order/models.py:1380 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1423 +#: order/models.py:1387 msgid "deleted" msgstr "" -#: order/models.py:1451 +#: order/models.py:1415 msgid "Supplier part" msgstr "" -#: order/models.py:1458 order/templates/order/order_base.html:196 -#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: order/models.py:1422 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1870 templates/js/translated/part.js:1902 #: templates/js/translated/purchase_order.js:1306 #: templates/js/translated/purchase_order.js:2169 #: templates/js/translated/return_order.js:763 @@ -4959,196 +5011,196 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1459 +#: order/models.py:1423 msgid "Number of items received" msgstr "" -#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 +#: order/models.py:1431 stock/models.py:938 stock/serializers.py:556 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "" -#: order/models.py:1468 +#: order/models.py:1432 msgid "Unit purchase price" msgstr "" -#: order/models.py:1483 +#: order/models.py:1447 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1574 +#: order/models.py:1538 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1579 +#: order/models.py:1543 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1605 part/templates/part/part_pricing.html:107 +#: order/models.py:1569 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:1606 +#: order/models.py:1570 msgid "Unit sale price" msgstr "" -#: order/models.py:1615 order/status_codes.py:43 +#: order/models.py:1579 order/status_codes.py:43 #: templates/js/translated/sales_order.js:1559 #: templates/js/translated/sales_order.js:1680 #: templates/js/translated/sales_order.js:1993 msgid "Shipped" msgstr "Sevk edildi" -#: order/models.py:1616 +#: order/models.py:1580 msgid "Shipped quantity" msgstr "" -#: order/models.py:1708 +#: order/models.py:1672 msgid "Date of shipment" msgstr "" -#: order/models.py:1714 templates/js/translated/sales_order.js:1072 +#: order/models.py:1678 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "" -#: order/models.py:1715 +#: order/models.py:1679 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1723 +#: order/models.py:1687 msgid "Checked By" msgstr "" -#: order/models.py:1724 +#: order/models.py:1688 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 -#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 +#: order/models.py:1695 order/models.py:1908 order/serializers.py:1342 +#: order/serializers.py:1452 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "" -#: order/models.py:1732 +#: order/models.py:1696 msgid "Shipment number" msgstr "" -#: order/models.py:1740 +#: order/models.py:1704 msgid "Tracking Number" msgstr "" -#: order/models.py:1741 +#: order/models.py:1705 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1748 +#: order/models.py:1712 msgid "Invoice Number" msgstr "" -#: order/models.py:1749 +#: order/models.py:1713 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1769 +#: order/models.py:1733 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1772 +#: order/models.py:1736 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1890 order/models.py:1892 +#: order/models.py:1854 order/models.py:1856 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1899 +#: order/models.py:1863 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1902 +#: order/models.py:1866 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1905 +#: order/models.py:1869 msgid "Allocation quantity cannot exceed stock quantity" msgstr "Tahsis miktarı stok miktarını aşamaz" -#: order/models.py:1924 order/serializers.py:1231 +#: order/models.py:1888 order/serializers.py:1219 msgid "Quantity must be 1 for serialized stock item" msgstr "Seri numaralı stok kalemi için miktar bir olmalı" -#: order/models.py:1927 +#: order/models.py:1891 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1928 plugin/base/barcodes/api.py:481 +#: order/models.py:1892 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1936 +#: order/models.py:1900 msgid "Line" msgstr "" -#: order/models.py:1945 +#: order/models.py:1909 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1958 order/models.py:2275 +#: order/models.py:1922 order/models.py:2239 #: templates/js/translated/return_order.js:721 msgid "Item" msgstr "" -#: order/models.py:1959 +#: order/models.py:1923 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1968 +#: order/models.py:1932 msgid "Enter stock allocation quantity" msgstr "Stok tahsis miktarını girin" -#: order/models.py:2057 +#: order/models.py:2021 msgid "Return Order reference" msgstr "" -#: order/models.py:2069 +#: order/models.py:2033 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:2081 +#: order/models.py:2045 msgid "Return order status" msgstr "" -#: order/models.py:2260 +#: order/models.py:2224 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2276 +#: order/models.py:2240 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2282 +#: order/models.py:2246 msgid "Received Date" msgstr "" -#: order/models.py:2283 +#: order/models.py:2247 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2294 templates/js/translated/return_order.js:732 +#: order/models.py:2258 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2295 +#: order/models.py:2259 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2302 +#: order/models.py:2266 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/serializers.py:79 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_purchase_order_report.html:22 @@ -5157,163 +5209,163 @@ msgstr "" msgid "Line Items" msgstr "" -#: order/serializers.py:84 +#: order/serializers.py:83 msgid "Completed Lines" msgstr "" -#: order/serializers.py:287 +#: order/serializers.py:286 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:302 order/serializers.py:1247 +#: order/serializers.py:301 order/serializers.py:1235 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:312 order/serializers.py:1257 +#: order/serializers.py:311 order/serializers.py:1245 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:440 +#: order/serializers.py:439 msgid "Order is not open" msgstr "" -#: order/serializers.py:461 +#: order/serializers.py:460 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:463 +#: order/serializers.py:462 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:473 +#: order/serializers.py:472 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:478 msgid "Merge Items" msgstr "" -#: order/serializers.py:481 +#: order/serializers.py:480 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:499 +#: order/serializers.py:498 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:502 +#: order/serializers.py:501 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:510 +#: order/serializers.py:509 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:511 +#: order/serializers.py:510 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:550 order/serializers.py:1325 +#: order/serializers.py:549 order/serializers.py:1313 msgid "Line Item" msgstr "" -#: order/serializers.py:556 +#: order/serializers.py:555 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1657 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:581 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:589 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:601 templates/js/translated/barcode.js:52 +#: order/serializers.py:600 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:602 +#: order/serializers.py:601 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:618 +#: order/serializers.py:617 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:642 +#: order/serializers.py:641 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:690 order/serializers.py:1696 +#: order/serializers.py:689 order/serializers.py:1673 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:706 +#: order/serializers.py:705 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:717 +#: order/serializers.py:716 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1074 +#: order/serializers.py:1062 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1134 +#: order/serializers.py:1122 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1195 order/serializers.py:1334 +#: order/serializers.py:1183 order/serializers.py:1322 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1214 +#: order/serializers.py:1202 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1344 +#: order/serializers.py:1332 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1366 order/serializers.py:1472 +#: order/serializers.py:1354 order/serializers.py:1460 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1369 order/serializers.py:1475 +#: order/serializers.py:1357 order/serializers.py:1463 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1416 +#: order/serializers.py:1404 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1423 +#: order/serializers.py:1411 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1650 +#: order/serializers.py:1627 msgid "Return order line item" msgstr "" -#: order/serializers.py:1656 +#: order/serializers.py:1633 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1659 +#: order/serializers.py:1636 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1688 +#: order/serializers.py:1665 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1766 +#: order/serializers.py:1743 msgid "Line price currency" msgstr "" @@ -5643,7 +5695,7 @@ msgstr "" #: 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/part.js:1073 #: templates/js/translated/purchase_order.js:1752 #: templates/js/translated/return_order.js:380 #: templates/js/translated/sales_order.js:891 @@ -5739,34 +5791,34 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:406 part/models.py:3964 part/stocktake.py:218 -#: stock/admin.py:153 +#: part/admin.py:39 part/admin.py:398 part/models.py:3944 part/stocktake.py:219 +#: stock/admin.py:152 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 -#: stock/admin.py:157 +#: part/admin.py:41 part/admin.py:405 part/models.py:3945 part/stocktake.py:220 +#: stock/admin.py:156 msgid "Part Name" msgstr "" -#: part/admin.py:45 part/stocktake.py:220 +#: part/admin.py:45 part/stocktake.py:221 msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:940 part/templates/part/part_base.html:269 #: report/templates/report/inventree_stock_location_report.html:103 -#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/part.js:1227 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "DPN" -#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 -#: report/models.py:161 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2346 +#: part/admin.py:50 part/models.py:949 part/templates/part/part_base.html:277 +#: report/models.py:162 templates/js/translated/part.js:1232 +#: templates/js/translated/part.js:2347 msgid "Revision" msgstr "Revizyon" -#: part/admin.py:53 part/admin.py:319 part/models.py:929 +#: part/admin.py:53 part/admin.py:319 part/models.py:922 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "Anahtar kelimeler" @@ -5775,11 +5827,11 @@ msgstr "Anahtar kelimeler" msgid "Part Image" msgstr "" -#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:222 msgid "Category ID" msgstr "" -#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:223 msgid "Category Name" msgstr "" @@ -5791,11 +5843,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:908 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "Çeşidi" -#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1036 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "Minimum Stok" @@ -5803,26 +5855,26 @@ msgstr "Minimum Stok" 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 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:235 +#: templates/js/translated/part.js:715 templates/js/translated/part.js:2153 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3123 part/models.py:3137 -#: templates/js/translated/part.js:969 +#: part/admin.py:155 part/models.py:3088 part/models.py:3102 +#: templates/js/translated/part.js:970 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3130 part/models.py:3144 -#: templates/js/translated/part.js:979 +#: part/admin.py:158 part/models.py:3095 part/models.py:3109 +#: templates/js/translated/part.js:980 msgid "Maximum Cost" msgstr "" -#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 msgid "Parent ID" msgstr "" -#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 msgid "Parent Name" msgstr "" @@ -5831,141 +5883,149 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:325 part/models.py:393 part/serializers.py:117 -#: part/serializers.py:272 part/serializers.py:391 +#: part/admin.py:325 part/models.py:396 part/serializers.py:124 +#: part/serializers.py:267 part/serializers.py:386 #: 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:2803 templates/js/translated/search.js:130 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "Parçalar" -#: part/admin.py:386 +#: part/admin.py:378 msgid "BOM Level" msgstr "" -#: part/admin.py:389 +#: part/admin.py:381 msgid "BOM Item ID" msgstr "" -#: part/admin.py:399 +#: part/admin.py:391 msgid "Parent IPN" msgstr "" -#: part/admin.py:410 part/models.py:3966 +#: part/admin.py:402 part/models.py:3946 msgid "Part IPN" msgstr "" -#: part/admin.py:423 part/serializers.py:1278 +#: part/admin.py:415 part/serializers.py:1274 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:428 part/serializers.py:1293 +#: part/admin.py:420 part/serializers.py:1289 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:110 +#: part/api.py:104 msgid "Starred" msgstr "" -#: part/api.py:112 +#: part/api.py:106 msgid "Filter by starred categories" msgstr "" -#: part/api.py:129 stock/api.py:318 +#: part/api.py:123 stock/api.py:312 msgid "Depth" msgstr "" -#: part/api.py:129 +#: part/api.py:123 msgid "Filter by category depth" msgstr "" -#: part/api.py:147 stock/api.py:336 +#: part/api.py:141 stock/api.py:330 +msgid "Top Level" +msgstr "" + +#: part/api.py:143 +msgid "Filter by top-level categories" +msgstr "" + +#: part/api.py:156 stock/api.py:345 msgid "Cascade" msgstr "" -#: part/api.py:149 +#: part/api.py:158 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:169 +#: part/api.py:179 templates/js/translated/part.js:308 msgid "Parent" msgstr "" -#: part/api.py:171 +#: part/api.py:181 msgid "Filter by parent category" msgstr "" -#: part/api.py:204 +#: part/api.py:214 msgid "Exclude Tree" msgstr "" -#: part/api.py:206 +#: part/api.py:216 msgid "Exclude sub-categories under the specified category" msgstr "" -#: part/api.py:455 +#: part/api.py:449 msgid "Has Results" msgstr "" -#: part/api.py:622 +#: part/api.py:616 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:640 +#: part/api.py:634 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:656 +#: part/api.py:650 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:740 +#: part/api.py:734 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:887 +#: part/api.py:881 msgid "Valid" msgstr "" -#: part/api.py:888 +#: part/api.py:882 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:894 +#: part/api.py:888 msgid "This option must be selected" msgstr "" -#: part/api.py:1111 +#: part/api.py:1105 msgid "BOM Valid" msgstr "" -#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 -#: part/serializers.py:406 part/serializers.py:1134 -#: part/templates/part/part_base.html:260 stock/api.py:781 +#: part/api.py:1508 part/models.py:932 part/models.py:3374 part/models.py:3889 +#: part/serializers.py:401 part/serializers.py:1130 +#: part/templates/part/part_base.html:260 stock/api.py:791 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2376 +#: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/api.py:1803 +#: part/api.py:1796 msgid "Uses" msgstr "" -#: part/bom.py:170 part/models.py:102 part/models.py:982 +#: part/bom.py:170 part/models.py:104 part/models.py:975 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Varsayılan Konum" -#: part/bom.py:171 part/serializers.py:837 +#: part/bom.py:171 part/serializers.py:833 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5974,1054 +6034,1066 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 +#: part/models.py:85 part/models.py:3890 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:84 part/templates/part/category.html:136 +#: part/models.py:86 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "Parça Kategorileri" -#: part/models.py:103 +#: part/models.py:105 msgid "Default location for parts in this category" msgstr "Bu kategori içindeki parçalar için varsayılan konum" -#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 +#: part/models.py:110 stock/models.py:174 templates/js/translated/part.js:2810 #: templates/js/translated/stock.js:2772 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:110 +#: part/models.py:112 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:119 +#: part/models.py:121 msgid "Default keywords" msgstr "" -#: part/models.py:120 +#: part/models.py:122 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 stock/models.py:85 stock/models.py:156 +#: part/models.py:128 stock/models.py:86 stock/models.py:157 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:127 stock/models.py:157 +#: part/models.py:129 stock/models.py:158 msgid "Icon (optional)" msgstr "" -#: part/models.py:149 +#: part/models.py:151 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:482 +#: part/models.py:485 msgid "Cannot delete this part as it is still active" msgstr "" -#: part/models.py:489 +#: part/models.py:490 msgid "Cannot delete this part as it is used in an assembly" msgstr "" -#: part/models.py:527 +#: part/models.py:528 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:575 part/models.py:582 +#: part/models.py:576 part/models.py:583 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:594 +#: part/models.py:595 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:659 +#: part/models.py:658 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:739 +#: part/models.py:736 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:844 +#: part/models.py:837 msgid "Duplicate IPN not allowed in part settings" msgstr "Yinelenen DPN'ye parça ayarlarında izin verilmiyor" -#: part/models.py:854 +#: part/models.py:847 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:869 +#: part/models.py:862 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:898 part/models.py:3965 +#: part/models.py:891 part/models.py:3945 msgid "Part name" msgstr "Parça adı" -#: part/models.py:903 +#: part/models.py:896 msgid "Is Template" msgstr "Şablon Mu" -#: part/models.py:904 +#: part/models.py:897 msgid "Is this part a template part?" msgstr "Bu parça bir şablon parçası mı?" -#: part/models.py:914 +#: part/models.py:907 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:922 +#: part/models.py:915 msgid "Part description (optional)" msgstr "" -#: part/models.py:930 +#: part/models.py:923 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:940 +#: part/models.py:933 msgid "Part category" msgstr "" -#: part/models.py:948 +#: part/models.py:941 msgid "Internal Part Number" msgstr "" -#: part/models.py:955 +#: part/models.py:948 msgid "Part revision or version number" msgstr "Parça revizyon veya versiyon numarası" -#: part/models.py:980 +#: part/models.py:973 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:1026 part/templates/part/part_base.html:376 +#: part/models.py:1019 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "Varsayılan Tedarikçi" -#: part/models.py:1027 +#: part/models.py:1020 msgid "Default supplier part" msgstr "Varsayılan tedarikçi parçası" -#: part/models.py:1034 +#: part/models.py:1027 msgid "Default Expiry" msgstr "" -#: part/models.py:1035 +#: part/models.py:1028 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:1044 +#: part/models.py:1037 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:1053 +#: part/models.py:1046 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1060 +#: part/models.py:1053 msgid "Can this part be built from other parts?" msgstr "Bu parça diğer parçalardan yapılabilir mi?" -#: part/models.py:1066 +#: part/models.py:1059 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:1072 +#: part/models.py:1065 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1078 +#: part/models.py:1071 msgid "Can this part be purchased from external suppliers?" msgstr "Bu parça dış tedarikçilerden satın alınabilir mi?" -#: part/models.py:1084 +#: part/models.py:1077 msgid "Can this part be sold to customers?" msgstr "Bu parça müşterilere satılabilir mi?" -#: part/models.py:1088 +#: part/models.py:1081 msgid "Is this part active?" msgstr "Bu parça aktif mi?" -#: part/models.py:1094 +#: part/models.py:1087 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1100 +#: part/models.py:1093 msgid "BOM checksum" msgstr "" -#: part/models.py:1101 +#: part/models.py:1094 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1109 +#: part/models.py:1102 msgid "BOM checked by" msgstr "" -#: part/models.py:1114 +#: part/models.py:1107 msgid "BOM checked date" msgstr "" -#: part/models.py:1130 +#: part/models.py:1123 msgid "Creation User" msgstr "Oluşturan Kullanıcı" -#: part/models.py:1140 +#: part/models.py:1133 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1145 part/templates/part/part_base.html:339 +#: part/models.py:1138 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2470 +#: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:2018 +#: part/models.py:2011 msgid "Sell multiple" msgstr "" -#: part/models.py:3037 +#: part/models.py:3002 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:3053 +#: part/models.py:3018 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:3054 +#: part/models.py:3019 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:3060 +#: part/models.py:3025 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3026 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:3067 +#: part/models.py:3032 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3033 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3074 +#: part/models.py:3039 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3040 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3046 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3047 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3053 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3054 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3060 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3096 +#: part/models.py:3061 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3102 +#: part/models.py:3067 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3103 +#: part/models.py:3068 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3109 +#: part/models.py:3074 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3110 +#: part/models.py:3075 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3116 +#: part/models.py:3081 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3117 +#: part/models.py:3082 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3124 +#: part/models.py:3089 msgid "Override minimum cost" msgstr "" -#: part/models.py:3131 +#: part/models.py:3096 msgid "Override maximum cost" msgstr "" -#: part/models.py:3138 +#: part/models.py:3103 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3145 +#: part/models.py:3110 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3151 +#: part/models.py:3116 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3152 +#: part/models.py:3117 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3158 +#: part/models.py:3123 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3159 +#: part/models.py:3124 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3165 +#: part/models.py:3130 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3131 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3172 +#: part/models.py:3137 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3138 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3192 +#: part/models.py:3157 msgid "Part for stocktake" msgstr "" -#: part/models.py:3197 +#: part/models.py:3162 msgid "Item Count" msgstr "" -#: part/models.py:3198 +#: part/models.py:3163 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3206 +#: part/models.py:3171 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3210 part/models.py:3293 +#: part/models.py:3175 part/models.py:3258 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report.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/part.js:1086 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" -#: part/models.py:3211 +#: part/models.py:3176 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3219 +#: part/models.py:3184 msgid "Additional notes" msgstr "" -#: part/models.py:3229 +#: part/models.py:3194 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3235 +#: part/models.py:3200 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3236 +#: part/models.py:3201 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3242 +#: part/models.py:3207 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3243 +#: part/models.py:3208 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3264 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3300 +#: part/models.py:3265 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3270 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3306 +#: part/models.py:3271 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3316 +#: part/models.py:3281 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3478 +#: part/models.py:3423 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3489 +#: part/models.py:3444 part/models.py:3608 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3455 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:3500 +#: part/models.py:3466 msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3517 templates/js/translated/part.js:2878 +#: part/models.py:3483 templates/js/translated/part.js:2880 msgid "Test Name" msgstr "Test Adı" -#: part/models.py:3518 +#: part/models.py:3484 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3524 +#: part/models.py:3490 msgid "Test Key" msgstr "" -#: part/models.py:3525 +#: part/models.py:3491 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3532 +#: part/models.py:3498 msgid "Test Description" msgstr "Test Açıklaması" -#: part/models.py:3533 +#: part/models.py:3499 msgid "Enter description for this test" msgstr "" -#: part/models.py:3537 report/models.py:208 -#: templates/js/translated/part.js:2899 +#: part/models.py:3503 report/models.py:209 +#: templates/js/translated/part.js:2901 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "Etkin" -#: part/models.py:3537 +#: part/models.py:3503 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3542 templates/js/translated/part.js:2907 +#: part/models.py:3508 templates/js/translated/part.js:2909 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Gerekli" -#: part/models.py:3543 +#: part/models.py:3509 msgid "Is this test required to pass?" msgstr "Testi geçmesi için bu gerekli mi?" -#: part/models.py:3548 templates/js/translated/part.js:2915 +#: part/models.py:3514 templates/js/translated/part.js:2917 msgid "Requires Value" msgstr "" -#: part/models.py:3549 +#: part/models.py:3515 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3554 templates/js/translated/part.js:2922 +#: part/models.py:3520 templates/js/translated/part.js:2924 msgid "Requires Attachment" msgstr "" -#: part/models.py:3556 +#: part/models.py:3522 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3603 +#: part/models.py:3528 part/models.py:3667 templates/js/translated/part.js:1637 +msgid "Choices" +msgstr "" + +#: part/models.py:3529 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3583 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3608 +#: part/models.py:3588 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3628 -msgid "Choices must be unique" -msgstr "" - -#: part/models.py:3645 +#: part/models.py:3625 msgid "Parameter template name must be unique" msgstr "Parametre şablon adı benzersiz olmalıdır" -#: part/models.py:3660 +#: part/models.py:3640 msgid "Parameter Name" msgstr "" -#: part/models.py:3667 +#: part/models.py:3647 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3675 +#: part/models.py:3655 msgid "Parameter description" msgstr "" -#: part/models.py:3681 templates/js/translated/part.js:1627 +#: part/models.py:3661 templates/js/translated/part.js:1628 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "" -#: part/models.py:3682 +#: part/models.py:3662 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3687 templates/js/translated/part.js:1636 -msgid "Choices" -msgstr "" - -#: part/models.py:3688 +#: part/models.py:3668 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3765 +#: part/models.py:3745 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3808 +#: part/models.py:3788 msgid "Parent Part" msgstr "" -#: part/models.py:3816 part/models.py:3917 part/models.py:3918 +#: part/models.py:3796 part/models.py:3897 part/models.py:3898 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "Parametre Şablonu" -#: part/models.py:3821 +#: part/models.py:3801 msgid "Data" msgstr "" -#: part/models.py:3822 +#: part/models.py:3802 msgid "Parameter Value" msgstr "" -#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3904 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3925 +#: part/models.py:3905 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3963 +#: part/models.py:3943 msgid "Part ID or part name" msgstr "" -#: part/models.py:3964 +#: part/models.py:3944 msgid "Unique part ID value" msgstr "" -#: part/models.py:3966 +#: part/models.py:3946 msgid "Part IPN value" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "Level" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "BOM level" msgstr "" -#: part/models.py:4057 +#: part/models.py:4037 msgid "Select parent part" msgstr "" -#: part/models.py:4067 +#: part/models.py:4047 msgid "Sub part" msgstr "" -#: part/models.py:4068 +#: part/models.py:4048 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4079 +#: part/models.py:4059 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4085 +#: part/models.py:4065 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4091 +#: part/models.py:4071 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4098 part/templates/part/upload_bom.html:55 +#: part/models.py:4078 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4099 +#: part/models.py:4079 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4106 +#: part/models.py:4086 msgid "BOM item reference" msgstr "" -#: part/models.py:4114 +#: part/models.py:4094 msgid "BOM item notes" msgstr "" -#: part/models.py:4120 +#: part/models.py:4100 msgid "Checksum" msgstr "" -#: part/models.py:4121 +#: part/models.py:4101 msgid "BOM line checksum" msgstr "" -#: part/models.py:4126 templates/js/translated/table_filters.js:174 +#: part/models.py:4106 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4127 +#: part/models.py:4107 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4132 part/templates/part/upload_bom.html:57 +#: part/models.py:4112 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:4133 +#: part/models.py:4113 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:4138 part/templates/part/upload_bom.html:56 +#: part/models.py:4118 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "Çeşide İzin Ver" -#: part/models.py:4139 +#: part/models.py:4119 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:4224 stock/models.py:664 +#: part/models.py:4204 stock/models.py:662 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4234 part/models.py:4236 +#: part/models.py:4214 part/models.py:4216 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4376 +#: part/models.py:4354 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4397 +#: part/models.py:4375 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4410 +#: part/models.py:4388 msgid "Parent BOM item" msgstr "" -#: part/models.py:4418 +#: part/models.py:4396 msgid "Substitute part" msgstr "" -#: part/models.py:4434 +#: part/models.py:4412 msgid "Part 1" msgstr "" -#: part/models.py:4442 +#: part/models.py:4420 msgid "Part 2" msgstr "" -#: part/models.py:4443 +#: part/models.py:4421 msgid "Select Related Part" msgstr "" -#: part/models.py:4462 +#: part/models.py:4440 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4467 +#: part/models.py:4445 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:119 part/serializers.py:141 +#: part/serializers.py:118 +msgid "Parent Category" +msgstr "" + +#: part/serializers.py:119 templates/js/translated/part.js:309 +msgid "Parent part category" +msgstr "" + +#: part/serializers.py:126 part/serializers.py:148 #: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "Alt kategoriler" -#: part/serializers.py:185 +#: part/serializers.py:180 msgid "Results" msgstr "" -#: part/serializers.py:186 +#: part/serializers.py:181 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 +#: part/serializers.py:205 part/serializers.py:223 stock/serializers.py:562 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:273 +#: part/serializers.py:268 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:397 +#: part/serializers.py:392 msgid "No parts selected" msgstr "" -#: part/serializers.py:407 +#: part/serializers.py:402 msgid "Select category" msgstr "" -#: part/serializers.py:442 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:443 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:448 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:449 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:455 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:456 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:463 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:488 +#: part/serializers.py:483 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:490 +#: part/serializers.py:485 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:497 +#: part/serializers.py:492 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:493 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:510 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:531 +#: part/serializers.py:526 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:541 +#: part/serializers.py:536 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:548 +#: part/serializers.py:543 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:557 +#: part/serializers.py:552 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:568 +#: part/serializers.py:563 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:575 +#: part/serializers.py:570 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:834 msgid "External Stock" msgstr "" -#: part/serializers.py:840 +#: part/serializers.py:836 msgid "Unallocated Stock" msgstr "" -#: part/serializers.py:843 +#: part/serializers.py:839 msgid "Variant Stock" msgstr "" -#: part/serializers.py:873 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:471 +#: part/serializers.py:869 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:472 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:870 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:880 templates/js/translated/part.js:102 +#: part/serializers.py:876 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:881 +#: part/serializers.py:877 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:887 +#: part/serializers.py:883 msgid "Supplier Information" msgstr "" -#: part/serializers.py:888 +#: part/serializers.py:884 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:896 +#: part/serializers.py:892 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:897 +#: part/serializers.py:893 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:902 +#: part/serializers.py:898 msgid "Existing Image" msgstr "" -#: part/serializers.py:903 +#: part/serializers.py:899 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:920 +#: part/serializers.py:916 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1126 +#: part/serializers.py:1122 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1136 +#: part/serializers.py:1132 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1146 +#: part/serializers.py:1142 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1152 +#: part/serializers.py:1148 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1153 +#: part/serializers.py:1149 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1158 +#: part/serializers.py:1154 msgid "Generate Report" msgstr "" -#: part/serializers.py:1159 +#: part/serializers.py:1155 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1164 +#: part/serializers.py:1160 msgid "Update Parts" msgstr "" -#: part/serializers.py:1165 +#: part/serializers.py:1161 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1173 +#: part/serializers.py:1169 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1279 +#: part/serializers.py:1275 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1286 +#: part/serializers.py:1282 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1294 +#: part/serializers.py:1290 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1301 +#: part/serializers.py:1297 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1330 +#: part/serializers.py:1326 msgid "Update" msgstr "" -#: part/serializers.py:1331 +#: part/serializers.py:1327 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1354 +#: part/serializers.py:1350 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1361 +#: part/serializers.py:1357 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1364 +#: part/serializers.py:1360 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1727 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1739 +#: part/serializers.py:1735 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1740 +#: part/serializers.py:1736 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1745 +#: part/serializers.py:1741 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1746 +#: part/serializers.py:1742 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1747 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1752 +#: part/serializers.py:1748 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1757 +#: part/serializers.py:1753 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1758 +#: part/serializers.py:1754 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1792 +#: part/serializers.py:1788 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1793 +#: part/serializers.py:1789 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1823 +#: part/serializers.py:1819 msgid "No part column specified" msgstr "" -#: part/serializers.py:1867 +#: part/serializers.py:1863 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1870 +#: part/serializers.py:1866 msgid "No matching part found" msgstr "" -#: part/serializers.py:1873 +#: part/serializers.py:1869 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1882 +#: part/serializers.py:1878 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1890 +#: part/serializers.py:1886 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1911 +#: part/serializers.py:1907 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 +#: part/stocktake.py:225 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "" -#: part/stocktake.py:225 +#: part/stocktake.py:226 msgid "Total Cost Min" msgstr "" -#: part/stocktake.py:226 +#: part/stocktake.py:227 msgid "Total Cost Max" msgstr "" -#: part/stocktake.py:284 +#: part/stocktake.py:285 msgid "Stocktake Report Available" msgstr "" -#: part/stocktake.py:285 +#: part/stocktake.py:286 msgid "A new stocktake report is available for download" msgstr "" @@ -7155,7 +7227,7 @@ 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 +#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" @@ -7255,15 +7327,15 @@ msgstr "Parça Tedarikçileri" msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:655 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:663 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:748 +#: part/templates/part/detail.html:750 msgid "Add Test Result Template" msgstr "" @@ -7344,7 +7416,7 @@ msgstr "" msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" msgstr "Parça işlemleri" @@ -7416,7 +7488,7 @@ 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:2443 +#: templates/js/translated/part.js:1265 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7509,8 +7581,8 @@ msgstr "" #: 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:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/part.js:1243 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 #: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "Stok" @@ -7553,7 +7625,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:247 +#: part/templates/part/prices.html:28 stock/admin.py:251 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 @@ -7630,8 +7702,8 @@ msgstr "" #: part/templates/part/stock_count.html:7 #: templates/js/translated/model_renderers.js:227 -#: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 -#: templates/js/translated/part.js:2142 +#: templates/js/translated/part.js:705 templates/js/translated/part.js:2141 +#: templates/js/translated/part.js:2143 msgid "No Stock" msgstr "Stok Yok" @@ -8003,7 +8075,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:308 msgid "Landscape" msgstr "" @@ -8116,62 +8188,62 @@ msgstr "" msgid "Uninstalled plugin successfully" msgstr "" -#: plugin/models.py:35 +#: plugin/models.py:36 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:36 +#: plugin/models.py:37 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:42 users/models.py:100 +#: plugin/models.py:43 users/models.py:100 msgid "Key" msgstr "" -#: plugin/models.py:43 +#: plugin/models.py:44 msgid "Key of plugin" msgstr "" -#: plugin/models.py:51 +#: plugin/models.py:52 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:58 plugin/serializers.py:90 +#: plugin/models.py:59 plugin/serializers.py:90 msgid "Package Name" msgstr "" -#: plugin/models.py:60 +#: plugin/models.py:61 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:65 +#: plugin/models.py:66 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:156 templates/js/translated/table_filters.js:370 +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "" -#: plugin/models.py:165 +#: plugin/models.py:166 msgid "Sample plugin" msgstr "" -#: plugin/models.py:173 +#: plugin/models.py:174 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:181 +#: plugin/models.py:182 msgid "Package Plugin" msgstr "" -#: plugin/models.py:205 report/models.py:474 +#: plugin/models.py:220 report/models.py:475 #: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:252 +#: plugin/models.py:267 msgid "Method" msgstr "" @@ -8179,17 +8251,17 @@ msgstr "" msgid "No author found" msgstr "" -#: plugin/registry.py:597 +#: plugin/registry.py:534 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:600 +#: plugin/registry.py:537 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:602 +#: plugin/registry.py:539 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -8304,23 +8376,19 @@ msgstr "" msgid "Activate this plugin" msgstr "" -#: plugin/serializers.py:234 +#: plugin/serializers.py:226 msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:235 +#: plugin/serializers.py:227 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:77 +#: report/api.py:88 msgid "No valid objects provided to template" msgstr "Şablon için geçerli bir nesne sağlanmadı" -#: report/api.py:89 report/serializers.py:53 -msgid "Model Type" -msgstr "" - -#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/api.py:103 report/models.py:439 report/serializers.py:98 #: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 #: templates/js/translated/return_order.js:353 #: templates/js/translated/sales_order.js:887 @@ -8328,176 +8396,176 @@ msgstr "" msgid "Items" msgstr "" -#: report/api.py:168 +#: report/api.py:180 msgid "Plugin not found" msgstr "" -#: report/api.py:170 +#: report/api.py:182 msgid "Plugin is not active" msgstr "" -#: report/api.py:172 +#: report/api.py:184 msgid "Plugin does not support label printing" msgstr "" -#: report/api.py:221 +#: report/api.py:233 msgid "Invalid label dimensions" msgstr "" -#: report/api.py:236 report/api.py:316 +#: report/api.py:248 report/api.py:329 msgid "No valid items provided to template" msgstr "" -#: report/api.py:271 +#: report/api.py:283 msgid "Error printing label" msgstr "" -#: report/api.py:362 report/api.py:398 +#: report/api.py:375 report/api.py:411 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/helpers.py:41 +#: report/helpers.py:43 msgid "A4" msgstr "" -#: report/helpers.py:42 +#: report/helpers.py:44 msgid "A3" msgstr "" -#: report/helpers.py:43 +#: report/helpers.py:45 msgid "Legal" msgstr "" -#: report/helpers.py:44 +#: report/helpers.py:46 msgid "Letter" msgstr "" -#: report/models.py:118 +#: report/models.py:119 msgid "Template file with this name already exists" msgstr "" -#: report/models.py:150 +#: report/models.py:151 msgid "Template name" msgstr "Şablon adı" -#: report/models.py:156 +#: report/models.py:157 msgid "Template description" msgstr "" -#: report/models.py:162 +#: report/models.py:163 msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Filename Pattern" msgstr "Dosya Adı Deseni" -#: report/models.py:203 +#: report/models.py:204 msgid "Pattern for generating filenames" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Template is enabled" msgstr "" -#: report/models.py:214 +#: report/models.py:215 msgid "Target model type for template" msgstr "" -#: report/models.py:234 +#: report/models.py:235 msgid "Filters" msgstr "Filtreler" -#: report/models.py:235 +#: report/models.py:236 msgid "Template query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:294 report/models.py:361 +#: report/models.py:295 report/models.py:362 msgid "Template file" msgstr "" -#: report/models.py:302 +#: report/models.py:303 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:308 +#: report/models.py:309 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:367 +#: report/models.py:368 msgid "Width [mm]" msgstr "Genişlik [mm]" -#: report/models.py:368 +#: report/models.py:369 msgid "Label width, specified in mm" msgstr "Etiket genişliği mm olarak belirtilmeli" -#: report/models.py:374 +#: report/models.py:375 msgid "Height [mm]" msgstr "Yükseklik [mm]" -#: report/models.py:375 +#: report/models.py:376 msgid "Label height, specified in mm" msgstr "Etiket yüksekliği mm olarak belirtilmeli" -#: report/models.py:438 +#: report/models.py:439 msgid "Number of items to process" msgstr "" -#: report/models.py:444 +#: report/models.py:445 msgid "Report generation is complete" msgstr "" -#: report/models.py:448 templates/js/translated/build.js:2177 +#: report/models.py:449 templates/js/translated/build.js:2177 msgid "Progress" msgstr "" -#: report/models.py:448 +#: report/models.py:449 msgid "Report generation progress" msgstr "" -#: report/models.py:456 +#: report/models.py:457 msgid "Report Template" msgstr "" -#: report/models.py:463 report/models.py:486 +#: report/models.py:464 report/models.py:487 msgid "Output File" msgstr "" -#: report/models.py:464 report/models.py:487 +#: report/models.py:465 report/models.py:488 msgid "Generated output file" msgstr "" -#: report/models.py:475 +#: report/models.py:476 msgid "Label output plugin" msgstr "" -#: report/models.py:479 +#: report/models.py:480 msgid "Label Template" msgstr "" -#: report/models.py:502 +#: report/models.py:503 msgid "Snippet" msgstr "" -#: report/models.py:503 +#: report/models.py:504 msgid "Report snippet file" msgstr "" -#: report/models.py:510 +#: report/models.py:511 msgid "Snippet file description" msgstr "" -#: report/models.py:528 +#: report/models.py:529 msgid "Asset" msgstr "" -#: report/models.py:529 +#: report/models.py:530 msgid "Report asset file" msgstr "" -#: report/models.py:536 +#: report/models.py:537 msgid "Asset file description" msgstr "" @@ -8570,8 +8638,8 @@ msgid "Total" msgstr "" #: report/templates/report/inventree_return_order_report.html:25 -#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 -#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:824 +#: stock/serializers.py:149 stock/templates/stock/item_base.html:311 #: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 #: templates/js/translated/build.js:2355 #: templates/js/translated/model_renderers.js:230 @@ -8601,32 +8669,32 @@ msgstr "" msgid "Test" msgstr "" -#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2412 msgid "Result" msgstr "" -#: report/templates/report/inventree_test_report.html:130 +#: report/templates/report/inventree_test_report.html:129 msgid "Pass" msgstr "" -#: report/templates/report/inventree_test_report.html:132 +#: report/templates/report/inventree_test_report.html:131 msgid "Fail" msgstr "" -#: report/templates/report/inventree_test_report.html:139 +#: report/templates/report/inventree_test_report.html:138 msgid "No result (required)" msgstr "" -#: report/templates/report/inventree_test_report.html:141 +#: report/templates/report/inventree_test_report.html:140 msgid "No result" msgstr "" -#: report/templates/report/inventree_test_report.html:154 +#: report/templates/report/inventree_test_report.html:153 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "" -#: report/templates/report/inventree_test_report.html:168 stock/admin.py:162 +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 #: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 #: templates/js/translated/stock.js:3110 msgid "Serial" @@ -8648,654 +8716,670 @@ msgstr "" msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:172 +#: stock/admin.py:51 stock/admin.py:171 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:176 +#: stock/admin.py:53 stock/admin.py:175 msgid "Location Name" msgstr "" -#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/admin.py:63 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:149 +#: stock/admin.py:148 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:168 +#: stock/admin.py:167 msgid "Status Code" msgstr "" -#: stock/admin.py:180 +#: stock/admin.py:179 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:185 +#: stock/admin.py:184 +msgid "Supplier Part SKU" +msgstr "" + +#: stock/admin.py:189 msgid "Supplier ID" msgstr "" -#: stock/admin.py:191 +#: stock/admin.py:195 msgid "Supplier Name" msgstr "" -#: stock/admin.py:196 +#: stock/admin.py:200 msgid "Customer ID" msgstr "" -#: stock/admin.py:201 stock/models.py:806 +#: stock/admin.py:205 stock/models.py:804 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:206 +#: stock/admin.py:210 msgid "Build ID" msgstr "" -#: stock/admin.py:216 +#: stock/admin.py:220 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:221 +#: stock/admin.py:225 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:236 +#: stock/admin.py:240 msgid "Review Needed" msgstr "" -#: stock/admin.py:241 +#: stock/admin.py:245 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:256 stock/models.py:900 +#: stock/admin.py:260 stock/models.py:898 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "" -#: stock/api.py:318 +#: stock/api.py:312 msgid "Filter by location depth" msgstr "" -#: stock/api.py:338 +#: stock/api.py:332 +msgid "Filter by top-level locations" +msgstr "" + +#: stock/api.py:347 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:359 +#: stock/api.py:369 stock/serializers.py:1085 msgid "Parent Location" msgstr "" -#: stock/api.py:360 +#: stock/api.py:370 msgid "Filter by parent location" msgstr "" -#: stock/api.py:615 templates/js/translated/table_filters.js:427 +#: stock/api.py:625 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:803 +#: stock/api.py:813 msgid "Part Tree" msgstr "" -#: stock/api.py:833 +#: stock/api.py:843 msgid "Expiry date before" msgstr "" -#: stock/api.py:837 +#: stock/api.py:847 msgid "Expiry date after" msgstr "" -#: stock/api.py:840 stock/templates/stock/item_base.html:439 +#: stock/api.py:850 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:927 +#: stock/api.py:937 msgid "Quantity is required" msgstr "" -#: stock/api.py:933 +#: stock/api.py:943 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:964 +#: stock/api.py:974 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:974 +#: stock/api.py:984 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:1005 +#: stock/api.py:1015 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:59 +#: stock/models.py:60 msgid "Stock Location type" msgstr "" -#: stock/models.py:60 +#: stock/models.py:61 msgid "Stock Location types" msgstr "" -#: stock/models.py:86 +#: stock/models.py:87 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:123 stock/models.py:788 +#: stock/models.py:124 stock/models.py:786 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Stok Konumu" -#: stock/models.py:124 stock/templates/stock/location.html:186 +#: stock/models.py:125 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "Stok Konumları" -#: stock/models.py:166 stock/models.py:949 +#: stock/models.py:167 stock/models.py:947 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:167 stock/models.py:950 +#: stock/models.py:168 stock/models.py:948 msgid "Select Owner" msgstr "" -#: stock/models.py:175 +#: stock/models.py:176 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:182 templates/js/translated/stock.js:2781 +#: stock/models.py:183 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:183 +#: stock/models.py:184 msgid "This is an external stock location" msgstr "" -#: stock/models.py:189 templates/js/translated/stock.js:2790 +#: stock/models.py:190 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" -#: stock/models.py:193 +#: stock/models.py:194 msgid "Stock location type of this location" msgstr "" -#: stock/models.py:262 +#: stock/models.py:261 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:643 +#: stock/models.py:641 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:670 stock/serializers.py:419 +#: stock/models.py:668 stock/serializers.py:446 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:687 +#: stock/models.py:685 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:697 stock/models.py:710 +#: stock/models.py:695 stock/models.py:708 msgid "Quantity must be 1 for item with a serial number" msgstr "Seri numarası olan ögenin miktarı bir olmalı" -#: stock/models.py:700 +#: stock/models.py:698 msgid "Serial number cannot be set if quantity greater than 1" msgstr "Miktar birden büyük ise seri numarası ayarlanamaz" -#: stock/models.py:724 +#: stock/models.py:722 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:729 +#: stock/models.py:727 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:742 +#: stock/models.py:740 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:758 +#: stock/models.py:756 msgid "Parent Stock Item" msgstr "Üst Stok Kalemi" -#: stock/models.py:770 +#: stock/models.py:768 msgid "Base part" msgstr "" -#: stock/models.py:780 +#: stock/models.py:778 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:792 +#: stock/models.py:790 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:800 stock/serializers.py:1480 +#: stock/models.py:798 stock/serializers.py:1476 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:811 +#: stock/models.py:809 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:830 +#: stock/models.py:828 msgid "Serial number for this item" msgstr "Bu öge için seri numarası" -#: stock/models.py:844 stock/serializers.py:1463 +#: stock/models.py:842 stock/serializers.py:1459 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:849 +#: stock/models.py:847 msgid "Stock Quantity" msgstr "" -#: stock/models.py:859 +#: stock/models.py:857 msgid "Source Build" msgstr "" -#: stock/models.py:862 +#: stock/models.py:860 msgid "Build for this stock item" msgstr "" -#: stock/models.py:869 stock/templates/stock/item_base.html:363 +#: stock/models.py:867 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:872 +#: stock/models.py:870 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:881 +#: stock/models.py:879 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:885 +#: stock/models.py:883 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:891 +#: stock/models.py:889 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:902 +#: stock/models.py:900 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:920 +#: stock/models.py:918 msgid "Delete on deplete" msgstr "" -#: stock/models.py:921 +#: stock/models.py:919 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:941 +#: stock/models.py:939 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:972 +#: stock/models.py:970 msgid "Converted to part" msgstr "" -#: stock/models.py:1490 +#: stock/models.py:1486 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1496 +#: stock/models.py:1492 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1500 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1510 +#: stock/models.py:1506 msgid "Serial numbers must be a list of integers" msgstr "Seri numaraları tam sayı listesi olmalı" -#: stock/models.py:1515 +#: stock/models.py:1511 msgid "Quantity does not match serial numbers" msgstr "Miktar seri numaları ile eşleşmiyor" -#: stock/models.py:1523 stock/serializers.py:658 +#: stock/models.py:1519 stock/serializers.py:660 msgid "Serial numbers already exist" msgstr "Seri numaraları zaten mevcut" -#: stock/models.py:1620 +#: stock/models.py:1616 msgid "Test template does not exist" msgstr "" -#: stock/models.py:1638 +#: stock/models.py:1634 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1642 +#: stock/models.py:1638 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1645 +#: stock/models.py:1641 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1648 +#: stock/models.py:1644 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1651 +#: stock/models.py:1647 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1654 +#: stock/models.py:1650 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1661 stock/serializers.py:1369 +#: stock/models.py:1657 stock/serializers.py:1365 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1665 +#: stock/models.py:1661 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1673 +#: stock/models.py:1669 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1678 +#: stock/models.py:1674 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1905 +#: stock/models.py:1901 msgid "StockItem cannot be moved as it is not in stock" msgstr "Stok kalemi stokta olmadığı için taşınamaz" -#: stock/models.py:2326 +#: stock/models.py:2310 msgid "Entry notes" msgstr "" -#: stock/models.py:2391 +#: stock/models.py:2378 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2396 +#: stock/models.py:2383 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2423 +#: stock/models.py:2388 +msgid "Invalid value for this test" +msgstr "" + +#: stock/models.py:2412 msgid "Test result" msgstr "" -#: stock/models.py:2430 +#: stock/models.py:2419 msgid "Test output value" msgstr "" -#: stock/models.py:2438 +#: stock/models.py:2427 msgid "Test result attachment" msgstr "" -#: stock/models.py:2442 +#: stock/models.py:2431 msgid "Test notes" msgstr "" -#: stock/models.py:2450 templates/js/translated/stock.js:1548 +#: stock/models.py:2439 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2440 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2457 +#: stock/models.py:2446 msgid "Started" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2447 msgid "The timestamp of the test start" msgstr "" -#: stock/models.py:2464 +#: stock/models.py:2453 msgid "Finished" msgstr "" -#: stock/models.py:2465 +#: stock/models.py:2454 msgid "The timestamp of the test finish" msgstr "" -#: stock/serializers.py:75 +#: stock/serializers.py:74 msgid "Generated batch code" msgstr "" -#: stock/serializers.py:84 +#: stock/serializers.py:83 msgid "Select build order" msgstr "" -#: stock/serializers.py:93 +#: stock/serializers.py:92 msgid "Select stock item to generate batch code for" msgstr "" -#: stock/serializers.py:102 +#: stock/serializers.py:101 msgid "Select location to generate batch code for" msgstr "" -#: stock/serializers.py:111 +#: stock/serializers.py:110 msgid "Select part to generate batch code for" msgstr "" -#: stock/serializers.py:120 +#: stock/serializers.py:119 msgid "Select purchase order" msgstr "" -#: stock/serializers.py:127 +#: stock/serializers.py:126 msgid "Enter quantity for batch code" msgstr "" -#: stock/serializers.py:150 +#: stock/serializers.py:149 msgid "Generated serial number" msgstr "" -#: stock/serializers.py:159 +#: stock/serializers.py:158 msgid "Select part to generate serial number for" msgstr "" -#: stock/serializers.py:167 +#: stock/serializers.py:166 msgid "Quantity of serial numbers to generate" msgstr "" -#: stock/serializers.py:229 +#: stock/serializers.py:228 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:248 +#: stock/serializers.py:247 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:280 +#: stock/serializers.py:279 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:313 +#: stock/serializers.py:315 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:411 +#: stock/serializers.py:438 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:531 +#: stock/serializers.py:558 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:595 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:606 +#: stock/serializers.py:608 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:613 +#: stock/serializers.py:615 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 +#: stock/serializers.py:626 stock/serializers.py:1322 stock/serializers.py:1578 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:631 +#: stock/serializers.py:633 msgid "Optional note field" msgstr "" -#: stock/serializers.py:641 +#: stock/serializers.py:643 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:696 +#: stock/serializers.py:698 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:703 +#: stock/serializers.py:705 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:704 +#: stock/serializers.py:706 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 -#: stock/serializers.py:935 +#: stock/serializers.py:711 stock/serializers.py:791 stock/serializers.py:887 +#: stock/serializers.py:937 msgid "Add transaction note (optional)" msgstr "İşlem notu ekle (isteğe bağlı)" -#: stock/serializers.py:717 +#: stock/serializers.py:719 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:725 +#: stock/serializers.py:727 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:736 +#: stock/serializers.py:738 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:749 +#: stock/serializers.py:751 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:784 +#: stock/serializers.py:786 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:819 +#: stock/serializers.py:821 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:834 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:849 +#: stock/serializers.py:851 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:880 +#: stock/serializers.py:882 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:917 +#: stock/serializers.py:919 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:923 +#: stock/serializers.py:925 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:1019 stock/serializers.py:1082 +#: stock/serializers.py:1021 stock/serializers.py:1093 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:220 +#: stock/templates/stock/location.html:222 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "Alt konumlar" -#: stock/serializers.py:1198 +#: stock/serializers.py:1086 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: stock/serializers.py:1194 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1202 +#: stock/serializers.py:1198 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1206 +#: stock/serializers.py:1202 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1230 +#: stock/serializers.py:1226 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1236 +#: stock/serializers.py:1232 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1244 +#: stock/serializers.py:1240 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1254 stock/serializers.py:1508 +#: stock/serializers.py:1250 stock/serializers.py:1504 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1333 +#: stock/serializers.py:1329 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1338 +#: stock/serializers.py:1334 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1339 +#: stock/serializers.py:1335 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1344 +#: stock/serializers.py:1340 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1345 +#: stock/serializers.py:1341 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1355 +#: stock/serializers.py:1351 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1422 +#: stock/serializers.py:1418 msgid "No Change" msgstr "" -#: stock/serializers.py:1451 +#: stock/serializers.py:1447 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1470 +#: stock/serializers.py:1466 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1498 +#: stock/serializers.py:1494 msgid "Stock transaction notes" msgstr "" @@ -9448,7 +9532,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276 msgid "Delete Test Data" msgstr "" @@ -9468,11 +9552,11 @@ msgstr "" msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:272 +#: stock/templates/stock/item.html:264 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "" @@ -9758,28 +9842,28 @@ msgstr "Bu konumun sahipleri listesinde değilsiniz. Bu stok konumu düzenleneme msgid "Location Type" msgstr "" -#: stock/templates/stock/location.html:224 +#: stock/templates/stock/location.html:226 msgid "Create new stock location" msgstr "Yeni stok konumu oluştur" -#: stock/templates/stock/location.html:225 +#: stock/templates/stock/location.html:227 msgid "New Location" msgstr "Yeni Konum" -#: stock/templates/stock/location.html:295 +#: stock/templates/stock/location.html:299 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:317 +#: stock/templates/stock/location.html:321 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:390 +#: stock/templates/stock/location.html:394 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:401 +#: stock/templates/stock/location.html:405 msgid "Link Barcode to Stock Location" msgstr "" @@ -10203,20 +10287,20 @@ msgstr "" msgid "Pricing Settings" msgstr "" -#: templates/InvenTree/settings/pricing.html:34 +#: templates/InvenTree/settings/pricing.html:35 msgid "Exchange Rates" msgstr "" -#: templates/InvenTree/settings/pricing.html:38 +#: templates/InvenTree/settings/pricing.html:39 msgid "Update Now" msgstr "" -#: templates/InvenTree/settings/pricing.html:46 -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 msgid "Last Update" msgstr "" -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:51 msgid "Never" msgstr "" @@ -10273,8 +10357,8 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:547 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 +#: templates/js/translated/part.js:393 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:402 msgid "Delete" msgstr "" @@ -10314,12 +10398,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 -#: templates/js/translated/part.js:1645 +#: templates/js/translated/part.js:1646 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 -#: templates/js/translated/part.js:1646 +#: templates/js/translated/part.js:1647 msgid "Delete Template" msgstr "" @@ -10709,7 +10793,7 @@ msgid "Submit Bug Report" msgstr "Hata Raporu Gönder" #: templates/about.html:91 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 +#: templates/js/translated/helpers.js:589 msgid "copy to clipboard" msgstr "panoya kopyala" @@ -10773,7 +10857,7 @@ 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 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45 msgid "Return to Site" msgstr "" @@ -10887,15 +10971,19 @@ msgstr "" msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "" -#: templates/allauth_2fa/setup.html:23 +#: templates/allauth_2fa/setup.html:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 msgid "Step 2" msgstr "" -#: templates/allauth_2fa/setup.html:27 +#: templates/allauth_2fa/setup.html:28 msgid "Input a token generated by the app:" msgstr "" -#: templates/allauth_2fa/setup.html:37 +#: templates/allauth_2fa/setup.html:38 msgid "Verify" msgstr "" @@ -10974,7 +11062,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3217 +#: templates/js/translated/part.js:3219 msgid "Minimum Quantity" msgstr "" @@ -11062,27 +11150,27 @@ msgstr "" msgid "Delete attachments" msgstr "" -#: templates/js/translated/attachment.js:253 +#: templates/js/translated/attachment.js:260 msgid "Attachment actions" msgstr "" -#: templates/js/translated/attachment.js:275 +#: templates/js/translated/attachment.js:294 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:315 +#: templates/js/translated/attachment.js:334 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:365 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:366 +#: templates/js/translated/attachment.js:385 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:374 +#: templates/js/translated/attachment.js:393 msgid "Delete attachment" msgstr "" @@ -11363,7 +11451,7 @@ msgid "Includes variant and substitute stock" msgstr "" #: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 -#: templates/js/translated/part.js:1256 +#: templates/js/translated/part.js:1257 #: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" @@ -11690,7 +11778,7 @@ msgstr "" #: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 #: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 -#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11733,8 +11821,8 @@ msgstr "" msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 -#: templates/js/translated/part.js:1202 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:791 +#: templates/js/translated/part.js:1203 msgid "Trackable part" msgstr "" @@ -11920,7 +12008,7 @@ msgid "Delete Parameters" msgstr "" #: templates/js/translated/company.js:1191 -#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2244 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2245 msgid "Order parts" msgstr "" @@ -11937,34 +12025,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:1279 -#: templates/js/translated/company.js:1567 templates/js/translated/part.js:798 -#: templates/js/translated/part.js:1210 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Template part" msgstr "" #: templates/js/translated/company.js:1283 -#: templates/js/translated/company.js:1571 templates/js/translated/part.js:802 -#: templates/js/translated/part.js:1214 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:803 +#: templates/js/translated/part.js:1215 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1464 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1465 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1527 +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1528 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1528 +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1529 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1433 +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1434 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1549 +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1550 msgid "Delete Parameter" msgstr "" @@ -12098,23 +12186,23 @@ msgstr "" msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2499 +#: templates/js/translated/forms.js:2500 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3113 +#: templates/js/translated/forms.js:3114 msgid "Select Columns" msgstr "" @@ -12215,7 +12303,7 @@ msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 -#: templates/js/translated/part.js:1604 +#: templates/js/translated/part.js:1605 msgid "ID" msgstr "" @@ -12296,347 +12384,343 @@ msgstr "" 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 +#: templates/js/translated/part.js:333 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:355 +#: templates/js/translated/part.js:356 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:356 +#: templates/js/translated/part.js:357 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:370 +#: templates/js/translated/part.js:371 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:383 +#: templates/js/translated/part.js:384 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:388 +#: templates/js/translated/part.js:389 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:397 +#: templates/js/translated/part.js:398 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:401 +#: templates/js/translated/part.js:402 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:406 +#: templates/js/translated/part.js:407 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:430 +#: templates/js/translated/part.js:431 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:432 +#: templates/js/translated/part.js:433 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:433 +#: templates/js/translated/part.js:434 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:462 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:463 +#: templates/js/translated/part.js:464 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:474 +#: templates/js/translated/part.js:475 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:531 +#: templates/js/translated/part.js:532 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:532 +#: templates/js/translated/part.js:533 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:546 +#: templates/js/translated/part.js:547 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:548 +#: templates/js/translated/part.js:549 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:549 +#: templates/js/translated/part.js:550 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:550 +#: templates/js/translated/part.js:551 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:557 +#: templates/js/translated/part.js:558 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:593 +#: templates/js/translated/part.js:594 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:595 +#: templates/js/translated/part.js:596 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:600 +#: templates/js/translated/part.js:601 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:602 +#: templates/js/translated/part.js:603 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:619 +#: templates/js/translated/part.js:620 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:629 +#: templates/js/translated/part.js:630 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:632 +#: templates/js/translated/part.js:633 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:657 +#: templates/js/translated/part.js:658 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:685 +#: templates/js/translated/part.js:686 #: templates/js/translated/table_filters.js:747 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:688 +#: templates/js/translated/part.js:689 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:748 +#: templates/js/translated/part.js:749 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:771 +#: templates/js/translated/part.js:772 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +#: templates/js/translated/part.js:795 templates/js/translated/part.js:1207 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:806 +#: templates/js/translated/part.js:807 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:810 +#: templates/js/translated/part.js:811 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:897 +#: templates/js/translated/part.js:898 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:901 +#: templates/js/translated/part.js:902 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1050 +#: templates/js/translated/part.js:1051 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1145 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +#: templates/js/translated/part.js:1113 templates/js/translated/part.js:1155 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1281 +#: templates/js/translated/part.js:1282 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1599 +#: templates/js/translated/part.js:1600 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1662 +#: templates/js/translated/part.js:1663 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1674 +#: templates/js/translated/part.js:1675 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1682 +#: templates/js/translated/part.js:1683 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1716 +#: templates/js/translated/part.js:1717 #: templates/js/translated/purchase_order.js:1654 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1860 +#: templates/js/translated/part.js:1861 #: templates/js/translated/purchase_order.js:2153 #: templates/js/translated/return_order.js:755 #: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1906 +#: templates/js/translated/part.js:1907 #: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1970 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1991 +#: templates/js/translated/part.js:1992 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 +#: templates/js/translated/part.js:2080 templates/js/translated/part.js:2506 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2200 +#: templates/js/translated/part.js:2201 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2205 +#: templates/js/translated/part.js:2206 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2235 +#: templates/js/translated/part.js:2236 msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2286 +#: templates/js/translated/part.js:2287 msgid "part" msgstr "" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2288 msgid "parts" msgstr "" -#: templates/js/translated/part.js:2383 +#: templates/js/translated/part.js:2384 msgid "No category" msgstr "" -#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2546 +#: templates/js/translated/part.js:2547 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2644 +#: templates/js/translated/part.js:2645 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2760 +#: templates/js/translated/part.js:2761 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2776 +#: templates/js/translated/part.js:2777 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2865 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2887 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/part.js:2938 templates/js/translated/stock.js:1457 #: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2940 +#: templates/js/translated/part.js:2942 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2956 +#: templates/js/translated/part.js:2958 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2970 +#: templates/js/translated/part.js:2972 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3051 templates/js/translated/part.js:3052 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3052 +#: templates/js/translated/part.js:3054 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3058 +#: templates/js/translated/part.js:3060 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3108 +#: templates/js/translated/part.js:3110 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3114 +#: templates/js/translated/part.js:3116 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3210 +#: templates/js/translated/part.js:3212 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3226 +#: templates/js/translated/part.js:3228 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3271 +#: templates/js/translated/part.js:3273 msgid "Minimum Stock Level" msgstr "" @@ -13244,10 +13328,6 @@ msgstr "" 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 "" @@ -13416,7 +13496,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:401 +#: templates/js/translated/stock.js:1042 users/models.py:392 msgid "Add" msgstr "" @@ -14307,34 +14387,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:384 +#: users/models.py:375 msgid "Permission set" msgstr "İzinleri ayarla" -#: users/models.py:393 +#: users/models.py:384 msgid "Group" msgstr "Grup" -#: users/models.py:397 +#: users/models.py:388 msgid "View" msgstr "Görünüm" -#: users/models.py:397 +#: users/models.py:388 msgid "Permission to view items" msgstr "Parçayı görüntüleme izni" -#: users/models.py:401 +#: users/models.py:392 msgid "Permission to add items" msgstr "Parça ekleme izni" -#: users/models.py:405 +#: users/models.py:396 msgid "Change" msgstr "Değiştir" -#: users/models.py:407 +#: users/models.py:398 msgid "Permissions to edit items" msgstr "Parçaları düzenleme izni" -#: users/models.py:413 +#: users/models.py:404 msgid "Permission to delete items" msgstr "Parçaları silme izni" + diff --git a/src/backend/InvenTree/locale/uk/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/uk/LC_MESSAGES/django.po index cc678872fa..20a2d48881 100644 --- a/src/backend/InvenTree/locale/uk/LC_MESSAGES/django.po +++ b/src/backend/InvenTree/locale/uk/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-05-31 07:08+0000\n" -"PO-Revision-Date: 2024-05-27 11:54\n" +"POT-Creation-Date: 2024-06-26 03:18+0000\n" +"PO-Revision-Date: 2024-06-26 06:04\n" "Last-Translator: \n" "Language-Team: Ukrainian\n" "Language: uk_UA\n" @@ -21,7 +21,7 @@ msgstr "" msgid "API endpoint not found" msgstr "" -#: InvenTree/api.py:536 +#: InvenTree/api.py:520 msgid "User does not have permission to view this model" msgstr "" @@ -52,25 +52,25 @@ msgstr "" msgid "Error details can be found in the admin panel" msgstr "" -#: InvenTree/fields.py:139 +#: InvenTree/fields.py:136 msgid "Enter date" msgstr "" -#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 -#: build/serializers.py:531 build/templates/build/sidebar.html:21 -#: company/models.py:849 company/templates/company/sidebar.html:37 -#: order/models.py:1332 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:205 InvenTree/models.py:918 build/serializers.py:452 +#: build/serializers.py:530 build/templates/build/sidebar.html:21 +#: company/models.py:817 company/templates/company/sidebar.html:37 +#: order/models.py:1296 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:3218 part/templates/part/part_sidebar.html:63 +#: part/models.py:3183 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_report.html:172 -#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 -#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 -#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 -#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:230 stock/models.py:2309 stock/models.py:2431 +#: stock/serializers.py:632 stock/serializers.py:790 stock/serializers.py:886 +#: stock/serializers.py:936 stock/serializers.py:1239 stock/serializers.py:1328 +#: stock/serializers.py:1493 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1080 +#: templates/js/translated/part.js:1081 #: templates/js/translated/purchase_order.js:2200 #: templates/js/translated/return_order.js:775 #: templates/js/translated/sales_order.js:1103 @@ -120,15 +120,15 @@ msgstr "" msgid "You must type the same email each time." msgstr "" -#: InvenTree/forms.py:253 InvenTree/forms.py:261 +#: InvenTree/forms.py:248 InvenTree/forms.py:256 msgid "The provided primary email address is not valid." msgstr "" -#: InvenTree/forms.py:268 +#: InvenTree/forms.py:263 msgid "The provided email domain is not approved." msgstr "" -#: InvenTree/forms.py:395 +#: InvenTree/forms.py:390 msgid "Registration is disabled." msgstr "" @@ -171,35 +171,35 @@ msgstr "" msgid "Remove HTML tags from this value" msgstr "" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Connection error" msgstr "" -#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 msgid "Server responded with invalid status code" msgstr "" -#: InvenTree/helpers_model.py:158 +#: InvenTree/helpers_model.py:148 msgid "Exception occurred" msgstr "" -#: InvenTree/helpers_model.py:168 +#: InvenTree/helpers_model.py:158 msgid "Server responded with invalid Content-Length value" msgstr "" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:161 msgid "Image size is too large" msgstr "" -#: InvenTree/helpers_model.py:183 +#: InvenTree/helpers_model.py:173 msgid "Image download exceeded maximum size" msgstr "" -#: InvenTree/helpers_model.py:188 +#: InvenTree/helpers_model.py:178 msgid "Remote server returned empty response" msgstr "" -#: InvenTree/helpers_model.py:196 +#: InvenTree/helpers_model.py:186 msgid "Supplied URL is not a valid image file" msgstr "" @@ -296,46 +296,50 @@ msgid "Portuguese (Brazilian)" msgstr "" #: InvenTree/locales.py:41 -msgid "Russian" +msgid "Romanian" msgstr "" #: InvenTree/locales.py:42 -msgid "Slovak" +msgid "Russian" msgstr "" #: InvenTree/locales.py:43 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: InvenTree/locales.py:44 -msgid "Serbian" +msgid "Slovenian" msgstr "" #: InvenTree/locales.py:45 -msgid "Swedish" +msgid "Serbian" msgstr "" #: InvenTree/locales.py:46 -msgid "Thai" +msgid "Swedish" msgstr "" #: InvenTree/locales.py:47 -msgid "Turkish" +msgid "Thai" msgstr "" #: InvenTree/locales.py:48 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: InvenTree/locales.py:49 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: InvenTree/locales.py:50 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: InvenTree/locales.py:51 +msgid "Chinese (Simplified)" +msgstr "" + +#: InvenTree/locales.py:52 msgid "Chinese (Traditional)" msgstr "" @@ -344,153 +348,65 @@ msgstr "" msgid "[{site_name}] Log in to the app" msgstr "" -#: InvenTree/magic_login.py:38 company/models.py:133 +#: InvenTree/magic_login.py:38 company/models.py:136 #: company/templates/company/company_base.html:138 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:677 msgid "Email" msgstr "" -#: InvenTree/models.py:107 +#: InvenTree/models.py:105 msgid "Error running plugin validation" msgstr "" -#: InvenTree/models.py:176 +#: InvenTree/models.py:174 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:182 +#: InvenTree/models.py:180 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:183 +#: InvenTree/models.py:181 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:413 +#: InvenTree/models.py:408 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:420 +#: InvenTree/models.py:415 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:426 +#: InvenTree/models.py:421 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:437 +#: InvenTree/models.py:432 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:445 +#: InvenTree/models.py:440 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:476 +#: InvenTree/models.py:471 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:550 -msgid "Missing file" -msgstr "" - -#: InvenTree/models.py:551 -msgid "Missing external link" -msgstr "" - -#: InvenTree/models.py:572 stock/models.py:2437 -#: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:326 -msgid "Attachment" -msgstr "" - -#: InvenTree/models.py:573 -msgid "Select file to attach" -msgstr "" - -#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:831 -#: order/models.py:303 order/models.py:1337 order/models.py:1753 -#: part/admin.py:55 part/models.py:962 -#: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_report.html:164 -#: stock/admin.py:225 templates/js/translated/company.js:1319 -#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2455 -#: templates/js/translated/purchase_order.js:2040 -#: templates/js/translated/purchase_order.js:2204 -#: templates/js/translated/return_order.js:779 -#: templates/js/translated/sales_order.js:1092 -#: templates/js/translated/sales_order.js:2023 -msgid "Link" -msgstr "" - -#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 -#: stock/models.py:836 -msgid "Link to external URL" -msgstr "" - -#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:341 -msgid "Comment" -msgstr "" - -#: InvenTree/models.py:589 -msgid "File comment" -msgstr "" - -#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 -#: common/models.py:2518 common/models.py:2742 common/models.py:2743 -#: common/models.py:2988 common/models.py:2989 part/models.py:3228 -#: part/models.py:3315 part/models.py:3408 part/models.py:3436 -#: plugin/models.py:259 plugin/models.py:260 -#: report/templates/report/inventree_test_report.html:105 -#: templates/js/translated/stock.js:3036 users/models.py:111 -msgid "User" -msgstr "" - -#: InvenTree/models.py:602 -msgid "upload date" -msgstr "" - -#: InvenTree/models.py:624 -msgid "Filename must not be empty" -msgstr "" - -#: InvenTree/models.py:635 -msgid "Invalid attachment directory" -msgstr "" - -#: InvenTree/models.py:665 -#, python-brace-format -msgid "Filename contains illegal character '{c}'" -msgstr "" - -#: InvenTree/models.py:668 -msgid "Filename missing extension" -msgstr "" - -#: InvenTree/models.py:677 -msgid "Attachment with this filename already exists" -msgstr "" - -#: InvenTree/models.py:684 -msgid "Error renaming file" -msgstr "" - -#: InvenTree/models.py:860 +#: InvenTree/models.py:719 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:877 +#: InvenTree/models.py:736 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 -#: common/serializers.py:403 company/models.py:614 machine/models.py:24 -#: part/models.py:898 part/models.py:3659 plugin/models.py:50 -#: report/models.py:149 stock/models.py:72 +#: InvenTree/models.py:766 common/models.py:2623 common/models.py:3036 +#: common/serializers.py:408 company/models.py:580 machine/models.py:24 +#: part/models.py:891 part/models.py:3639 plugin/models.py:51 +#: report/models.py:150 stock/models.py:73 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:83 @@ -501,25 +417,25 @@ msgstr "" #: templates/js/translated/company.js:724 #: templates/js/translated/company.js:913 #: templates/js/translated/company.js:1165 -#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 -#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1187 +#: templates/js/translated/part.js:1475 templates/js/translated/part.js:1611 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "" -#: InvenTree/models.py:913 build/models.py:218 -#: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:523 company/models.py:840 +#: InvenTree/models.py:772 build/models.py:220 +#: build/templates/build/detail.html:24 common/models.py:138 +#: company/models.py:509 company/models.py:808 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 order/models.py:289 -#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 -#: part/models.py:3674 part/templates/part/category.html:82 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:914 +#: part/models.py:3654 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:155 -#: report/models.py:509 report/models.py:535 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 #: report/templates/report/inventree_build_order_report.html:117 -#: stock/admin.py:55 stock/models.py:78 stock/templates/stock/location.html:125 +#: stock/admin.py:54 stock/models.py:79 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 @@ -528,10 +444,10 @@ msgstr "" #: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 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:2354 -#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1239 +#: templates/js/translated/part.js:1484 templates/js/translated/part.js:1622 +#: templates/js/translated/part.js:1959 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2897 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1706 #: templates/js/translated/purchase_order.js:1849 @@ -544,149 +460,141 @@ msgstr "" msgid "Description" msgstr "" -#: InvenTree/models.py:914 stock/models.py:79 +#: InvenTree/models.py:773 stock/models.py:80 msgid "Description (optional)" msgstr "" -#: InvenTree/models.py:923 -msgid "parent" -msgstr "" - -#: InvenTree/models.py:929 templates/js/translated/part.js:2793 +#: InvenTree/models.py:788 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "" -#: InvenTree/models.py:1035 +#: InvenTree/models.py:918 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:1064 +#: InvenTree/models.py:947 msgid "Barcode Data" msgstr "" -#: InvenTree/models.py:1065 +#: InvenTree/models.py:948 msgid "Third party barcode data" msgstr "" -#: InvenTree/models.py:1071 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:1072 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:1125 +#: InvenTree/models.py:1008 msgid "Existing barcode found" msgstr "" -#: InvenTree/models.py:1168 +#: InvenTree/models.py:1051 msgid "Server Error" msgstr "" -#: InvenTree/models.py:1169 +#: InvenTree/models.py:1052 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:62 part/models.py:4212 +#: InvenTree/serializers.py:63 part/models.py:4192 msgid "Must be a valid number" msgstr "" -#: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:3036 +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3001 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "" -#: InvenTree/serializers.py:102 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:441 +#: InvenTree/serializers.py:442 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:453 +#: InvenTree/serializers.py:454 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:472 +#: InvenTree/serializers.py:473 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:474 +#: InvenTree/serializers.py:475 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:481 +#: InvenTree/serializers.py:482 msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:542 -msgid "Filename" -msgstr "" - -#: InvenTree/serializers.py:576 +#: InvenTree/serializers.py:540 msgid "Invalid value" msgstr "" -#: InvenTree/serializers.py:596 +#: InvenTree/serializers.py:560 msgid "Data File" msgstr "" -#: InvenTree/serializers.py:597 +#: InvenTree/serializers.py:561 msgid "Select data file for upload" msgstr "" -#: InvenTree/serializers.py:614 +#: InvenTree/serializers.py:578 msgid "Unsupported file type" msgstr "" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:584 msgid "File is too large" msgstr "" -#: InvenTree/serializers.py:641 +#: InvenTree/serializers.py:605 msgid "No columns found in file" msgstr "" -#: InvenTree/serializers.py:644 +#: InvenTree/serializers.py:608 msgid "No data rows found in file" msgstr "" -#: InvenTree/serializers.py:757 +#: InvenTree/serializers.py:721 msgid "No data rows provided" msgstr "" -#: InvenTree/serializers.py:760 +#: InvenTree/serializers.py:724 msgid "No data columns supplied" msgstr "" -#: InvenTree/serializers.py:827 +#: InvenTree/serializers.py:791 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "" -#: InvenTree/serializers.py:836 +#: InvenTree/serializers.py:800 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/serializers.py:859 +#: InvenTree/serializers.py:840 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:860 +#: InvenTree/serializers.py:841 msgid "URL of remote image file" msgstr "" -#: InvenTree/serializers.py:878 +#: InvenTree/serializers.py:859 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/status.py:66 part/serializers.py:1178 +#: InvenTree/status.py:66 part/serializers.py:1174 msgid "Background worker check failed" msgstr "" @@ -698,27 +606,27 @@ msgstr "" msgid "InvenTree system health checks failed" msgstr "" -#: InvenTree/templatetags/inventree_extras.py:183 +#: InvenTree/templatetags/inventree_extras.py:184 msgid "Unknown database" msgstr "" -#: InvenTree/validators.py:31 InvenTree/validators.py:33 +#: InvenTree/validators.py:32 InvenTree/validators.py:34 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:39 +#: InvenTree/validators.py:40 msgid "Not a valid currency code" msgstr "" -#: InvenTree/validators.py:121 InvenTree/validators.py:137 +#: InvenTree/validators.py:118 InvenTree/validators.py:134 msgid "Overage value must not be negative" msgstr "" -#: InvenTree/validators.py:139 +#: InvenTree/validators.py:136 msgid "Overage must not exceed 100%" msgstr "" -#: InvenTree/validators.py:145 +#: InvenTree/validators.py:142 msgid "Invalid value for overage" msgstr "" @@ -750,14 +658,14 @@ msgstr "" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: build/api.py:299 part/models.py:4070 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:300 part/models.py:4084 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4064 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2529 #: templates/js/translated/table_filters.js:186 @@ -778,30 +686,30 @@ msgstr "" msgid "Allocated" msgstr "" -#: build/api.py:311 company/models.py:904 company/serializers.py:383 +#: build/api.py:311 company/models.py:872 company/serializers.py:359 #: 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:2561 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:234 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 -#: templates/js/translated/part.js:699 +#: templates/js/translated/part.js:693 templates/js/translated/part.js:695 +#: templates/js/translated/part.js:700 #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:575 msgid "Available" msgstr "" -#: build/models.py:83 build/templates/build/build_base.html:9 +#: build/models.py:85 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_report.html:105 -#: stock/serializers.py:83 templates/email/build_order_completed.html:16 +#: stock/serializers.py:82 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:2892 msgid "Build Order" msgstr "" -#: build/models.py:84 build/templates/build/build_base.html:13 +#: build/models.py:86 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 @@ -812,25 +720,25 @@ msgstr "" msgid "Build Orders" msgstr "" -#: build/models.py:131 +#: build/models.py:133 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:142 order/models.py:240 +#: build/models.py:144 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "" -#: build/models.py:148 +#: build/models.py:150 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:209 +#: build/models.py:211 msgid "Build Order Reference" msgstr "" -#: build/models.py:210 order/models.py:463 order/models.py:928 -#: order/models.py:1325 order/models.py:2056 part/admin.py:419 -#: part/models.py:4105 part/templates/part/upload_bom.html:54 +#: build/models.py:212 order/models.py:463 order/models.py:926 +#: order/models.py:1289 order/models.py:2020 part/admin.py:411 +#: part/models.py:4085 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_purchase_order_report.html:28 #: report/templates/report/inventree_return_order_report.html:26 @@ -844,27 +752,27 @@ msgstr "" msgid "Reference" msgstr "" -#: build/models.py:221 +#: build/models.py:223 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:229 build/templates/build/build_base.html:183 +#: build/models.py:231 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:230 +#: build/models.py:232 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:235 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 -#: order/models.py:1450 order/models.py:1595 order/models.py:1596 -#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 -#: part/models.py:3191 part/models.py:3335 part/models.py:3358 -#: part/models.py:3379 part/models.py:3401 part/models.py:3511 -#: part/models.py:3807 part/models.py:3963 part/models.py:4056 -#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 +#: build/models.py:237 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1026 order/api.py:805 +#: order/models.py:1414 order/models.py:1559 order/models.py:1560 +#: part/api.py:1494 part/api.py:1788 part/models.py:395 part/models.py:3012 +#: part/models.py:3156 part/models.py:3303 part/models.py:3324 +#: part/models.py:3346 part/models.py:3477 part/models.py:3787 +#: part/models.py:3943 part/models.py:4036 part/models.py:4395 +#: part/serializers.py:1120 part/serializers.py:1726 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -875,8 +783,8 @@ msgstr "" #: report/templates/report/inventree_return_order_report.html:24 #: report/templates/report/inventree_sales_order_report.html:27 #: report/templates/report/inventree_stock_location_report.html:102 -#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 -#: stock/serializers.py:818 templates/InvenTree/search.html:82 +#: stock/serializers.py:109 stock/serializers.py:157 stock/serializers.py:423 +#: stock/serializers.py:820 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 @@ -889,8 +797,8 @@ msgstr "" #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 -#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2323 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:1944 templates/js/translated/part.js:2016 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 #: templates/js/translated/purchase_order.js:751 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1848 @@ -908,107 +816,107 @@ msgstr "" msgid "Part" msgstr "" -#: build/models.py:243 +#: build/models.py:245 msgid "Select part to build" msgstr "" -#: build/models.py:248 +#: build/models.py:250 msgid "Sales Order Reference" msgstr "" -#: build/models.py:252 +#: build/models.py:254 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:257 build/serializers.py:1000 +#: build/models.py:259 build/serializers.py:999 #: templates/js/translated/build.js:1731 #: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "" -#: build/models.py:261 +#: build/models.py:263 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:266 +#: build/models.py:268 msgid "Destination Location" msgstr "" -#: build/models.py:270 +#: build/models.py:272 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:274 +#: build/models.py:276 msgid "Build Quantity" msgstr "" -#: build/models.py:277 +#: build/models.py:279 msgid "Number of stock items to build" msgstr "" -#: build/models.py:281 +#: build/models.py:283 msgid "Completed items" msgstr "" -#: build/models.py:283 +#: build/models.py:285 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:287 +#: build/models.py:289 msgid "Build Status" msgstr "" -#: build/models.py:291 +#: build/models.py:293 msgid "Build status code" msgstr "" -#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 -#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 +#: build/models.py:302 build/serializers.py:286 order/serializers.py:580 +#: stock/models.py:838 stock/serializers.py:74 stock/serializers.py:1458 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "" -#: build/models.py:304 build/serializers.py:288 +#: build/models.py:306 build/serializers.py:287 msgid "Batch code for this build output" msgstr "" -#: build/models.py:307 order/models.py:316 order/serializers.py:120 -#: part/models.py:1122 part/templates/part/part_base.html:310 +#: build/models.py:309 order/models.py:316 order/serializers.py:119 +#: part/models.py:1115 part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:338 #: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "" -#: build/models.py:311 +#: build/models.py:313 msgid "Target completion date" msgstr "" -#: build/models.py:312 +#: build/models.py:314 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:315 order/models.py:521 order/models.py:2101 +#: build/models.py:317 order/models.py:521 order/models.py:2065 #: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "" -#: build/models.py:321 +#: build/models.py:323 msgid "completed by" msgstr "" -#: build/models.py:329 templates/js/translated/build.js:2207 +#: build/models.py:331 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "" -#: build/models.py:330 +#: build/models.py:332 msgid "User who issued this build order" msgstr "" -#: build/models.py:338 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:145 +#: build/models.py:340 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:147 #: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:232 part/models.py:1139 +#: order/templates/order/sales_order_base.html:232 part/models.py:1132 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_report.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 @@ -1019,31 +927,36 @@ msgstr "" msgid "Responsible" msgstr "" -#: build/models.py:339 +#: build/models.py:341 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:344 build/templates/build/detail.html:108 +#: build/models.py:346 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:184 -#: part/templates/part/part_base.html:383 stock/models.py:836 +#: part/templates/part/part_base.html:383 stock/models.py:834 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "" -#: build/models.py:349 +#: build/models.py:347 common/models.py:3178 part/models.py:956 +#: stock/models.py:834 +msgid "Link to external URL" +msgstr "" + +#: build/models.py:351 msgid "Build Priority" msgstr "" -#: build/models.py:352 +#: build/models.py:354 msgid "Priority of this build order" msgstr "" -#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: build/models.py:361 common/models.py:131 order/admin.py:18 #: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 #: templates/js/translated/build.js:2144 #: templates/js/translated/purchase_order.js:1710 @@ -1054,65 +967,65 @@ msgstr "" msgid "Project Code" msgstr "" -#: build/models.py:360 +#: build/models.py:362 msgid "Project code for this build order" msgstr "" -#: build/models.py:593 build/models.py:658 +#: build/models.py:595 build/models.py:660 msgid "Failed to offload task to complete build allocations" msgstr "" -#: build/models.py:615 +#: build/models.py:617 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:621 +#: build/models.py:623 msgid "A build order has been completed" msgstr "" -#: build/models.py:847 build/models.py:932 +#: build/models.py:849 build/models.py:934 msgid "No build output specified" msgstr "" -#: build/models.py:850 +#: build/models.py:852 msgid "Build output is already completed" msgstr "" -#: build/models.py:853 +#: build/models.py:855 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 -#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 -#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 -#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 +#: build/models.py:938 build/serializers.py:219 build/serializers.py:268 +#: build/serializers.py:866 order/models.py:559 order/serializers.py:432 +#: order/serializers.py:575 part/serializers.py:1484 part/serializers.py:1884 +#: stock/models.py:677 stock/models.py:1495 stock/serializers.py:603 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:941 build/serializers.py:225 +#: build/models.py:943 build/serializers.py:224 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1001 build/serializers.py:548 +#: build/models.py:1003 build/serializers.py:547 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1352 +#: build/models.py:1344 msgid "Build Order Line Item" msgstr "" -#: build/models.py:1377 +#: build/models.py:1369 msgid "Build object" msgstr "" -#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 -#: build/serializers.py:254 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2539 -#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 -#: part/forms.py:48 part/models.py:3205 part/models.py:4078 +#: build/models.py:1383 build/models.py:1639 build/serializers.py:206 +#: build/serializers.py:253 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2509 +#: order/models.py:1272 order/models.py:1931 order/serializers.py:1327 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3170 part/models.py:4058 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1121,8 +1034,8 @@ msgstr "" #: report/templates/report/inventree_sales_order_report.html:29 #: report/templates/report/inventree_stock_location_report.html:104 #: report/templates/report/inventree_test_report.html:90 -#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 -#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:125 stock/serializers.py:165 stock/serializers.py:594 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1133,8 +1046,8 @@ msgstr "" #: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 #: templates/js/translated/model_renderers.js:236 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:962 +#: templates/js/translated/part.js:1812 templates/js/translated/part.js:3342 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1154,38 +1067,38 @@ msgstr "" msgid "Quantity" msgstr "" -#: build/models.py:1392 +#: build/models.py:1384 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1472 +#: build/models.py:1464 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1481 +#: build/models.py:1473 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1491 order/models.py:1918 +#: build/models.py:1483 order/models.py:1882 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1497 order/models.py:1921 +#: build/models.py:1489 order/models.py:1885 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1503 +#: build/models.py:1495 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1562 +#: build/models.py:1554 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 -#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 -#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: build/models.py:1626 build/serializers.py:846 order/serializers.py:1171 +#: order/serializers.py:1192 stock/models.py:358 stock/serializers.py:91 +#: stock/serializers.py:697 stock/serializers.py:1177 stock/serializers.py:1289 #: stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 @@ -1201,70 +1114,70 @@ msgstr "" msgid "Stock Item" msgstr "" -#: build/models.py:1635 +#: build/models.py:1627 msgid "Source stock item" msgstr "" -#: build/models.py:1648 +#: build/models.py:1640 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1656 +#: build/models.py:1648 msgid "Install into" msgstr "" -#: build/models.py:1657 +#: build/models.py:1649 msgid "Destination stock item" msgstr "" -#: build/serializers.py:157 build/serializers.py:876 +#: build/serializers.py:156 build/serializers.py:875 #: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "" -#: build/serializers.py:169 +#: build/serializers.py:168 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:173 +#: build/serializers.py:172 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:177 +#: build/serializers.py:176 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:188 +#: build/serializers.py:187 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:208 build/serializers.py:255 +#: build/serializers.py:207 build/serializers.py:254 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:276 +#: build/serializers.py:275 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:279 +#: build/serializers.py:278 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:294 order/serializers.py:589 order/serializers.py:1343 -#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:293 order/serializers.py:588 order/serializers.py:1331 +#: stock/serializers.py:614 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:295 +#: build/serializers.py:294 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 -#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 -#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 -#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 -#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 +#: build/serializers.py:299 build/serializers.py:440 build/serializers.py:512 +#: order/serializers.py:564 order/serializers.py:672 order/serializers.py:1656 +#: part/serializers.py:1140 stock/serializers.py:100 stock/serializers.py:625 +#: stock/serializers.py:785 stock/serializers.py:881 stock/serializers.py:1321 +#: stock/serializers.py:1577 stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:1001 #: templates/js/translated/build.js:2372 @@ -1280,54 +1193,54 @@ msgstr "" msgid "Location" msgstr "" -#: build/serializers.py:301 +#: build/serializers.py:300 msgid "Stock location for build output" msgstr "" -#: build/serializers.py:315 +#: build/serializers.py:314 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:316 +#: build/serializers.py:315 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:331 +#: build/serializers.py:330 msgid "Serial numbers must be provided for trackable parts" msgstr "" -#: build/serializers.py:356 stock/api.py:1031 +#: build/serializers.py:355 stock/api.py:1041 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:403 build/serializers.py:465 build/serializers.py:554 +#: build/serializers.py:402 build/serializers.py:464 build/serializers.py:553 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:442 +#: build/serializers.py:441 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:448 +#: build/serializers.py:447 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:449 +#: build/serializers.py:448 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:454 +#: build/serializers.py:453 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:514 +#: build/serializers.py:513 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:520 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:952 -#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 -#: stock/serializers.py:930 stock/serializers.py:1469 +#: build/serializers.py:519 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2044 order/serializers.py:596 stock/admin.py:164 +#: stock/serializers.py:932 stock/serializers.py:1465 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 @@ -1339,188 +1252,188 @@ msgstr "" msgid "Status" msgstr "" -#: build/serializers.py:526 +#: build/serializers.py:525 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:527 +#: build/serializers.py:526 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:611 msgid "Consume Allocated Stock" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:612 msgid "Consume any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:619 +#: build/serializers.py:618 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:620 +#: build/serializers.py:619 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:646 msgid "Not permitted" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:647 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:648 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:679 +#: build/serializers.py:678 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:681 +#: build/serializers.py:680 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:691 +#: build/serializers.py:690 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:696 +#: build/serializers.py:695 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:697 +#: build/serializers.py:696 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:707 templates/js/translated/build.js:315 +#: build/serializers.py:706 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:712 order/serializers.py:301 order/serializers.py:1246 +#: build/serializers.py:711 order/serializers.py:300 order/serializers.py:1234 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:713 +#: build/serializers.py:712 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:723 templates/js/translated/build.js:319 +#: build/serializers.py:722 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:732 templates/js/translated/build.js:303 +#: build/serializers.py:731 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:770 +#: build/serializers.py:769 msgid "Build Line" msgstr "" -#: build/serializers.py:780 +#: build/serializers.py:779 msgid "Build output" msgstr "" -#: build/serializers.py:788 +#: build/serializers.py:787 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:824 +#: build/serializers.py:823 msgid "Build Line Item" msgstr "" -#: build/serializers.py:838 +#: build/serializers.py:837 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:853 stock/serializers.py:1194 +#: build/serializers.py:852 stock/serializers.py:1190 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:901 order/serializers.py:1237 +#: build/serializers.py:900 order/serializers.py:1225 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:907 +#: build/serializers.py:906 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:914 +#: build/serializers.py:913 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:938 order/serializers.py:1489 +#: build/serializers.py:937 order/serializers.py:1477 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:1001 +#: build/serializers.py:1000 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:1009 +#: build/serializers.py:1008 msgid "Exclude Location" msgstr "" -#: build/serializers.py:1010 +#: build/serializers.py:1009 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:1015 +#: build/serializers.py:1014 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:1016 +#: build/serializers.py:1015 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:1021 +#: build/serializers.py:1020 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:1022 +#: build/serializers.py:1021 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:1027 +#: build/serializers.py:1026 msgid "Optional Items" msgstr "" -#: build/serializers.py:1028 +#: build/serializers.py:1027 msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1050 +#: build/serializers.py:1049 msgid "Failed to start auto-allocation task" msgstr "" -#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 -#: stock/api.py:794 +#: build/serializers.py:1139 part/models.py:3953 part/models.py:4387 +#: stock/api.py:804 msgid "BOM Item" msgstr "" -#: build/serializers.py:1149 templates/js/translated/index.js:130 +#: build/serializers.py:1148 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:832 part/serializers.py:1506 +#: build/serializers.py:1153 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:828 part/serializers.py:1502 #: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 -#: templates/js/translated/build.js:2613 templates/js/translated/part.js:709 -#: templates/js/translated/part.js:2148 +#: templates/js/translated/build.js:2613 templates/js/translated/part.js:710 +#: templates/js/translated/part.js:2149 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1159 part/serializers.py:1508 +#: build/serializers.py:1158 part/serializers.py:1504 #: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 +#: build/serializers.py:1163 part/bom.py:172 part/serializers.py:1527 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1929 msgid "Available Stock" @@ -1544,7 +1457,7 @@ msgstr "" #: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 #: order/status_codes.py:44 order/status_codes.py:69 #: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:165 report/models.py:443 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 msgid "Complete" msgstr "" @@ -1674,11 +1587,11 @@ msgstr "" #: build/templates/build/build_base.html:160 #: build/templates/build/detail.html:138 order/models.py:309 -#: order/models.py:1343 order/templates/order/order_base.html:186 +#: order/models.py:1307 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:196 #: report/templates/report/inventree_build_order_report.html:125 -#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1831 #: templates/js/translated/purchase_order.js:1739 #: templates/js/translated/purchase_order.js:2147 #: templates/js/translated/return_order.js:346 @@ -1711,8 +1624,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 -#: order/models.py:1587 order/models.py:1701 order/models.py:1855 +#: build/templates/build/detail.html:101 order/api.py:1463 order/models.py:845 +#: order/models.py:1551 order/models.py:1665 order/models.py:1819 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_report.html:135 @@ -1762,7 +1675,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1479 +#: build/templates/build/detail.html:49 order/models.py:1443 #: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "" @@ -1775,7 +1688,7 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:163 +#: build/templates/build/detail.html:80 stock/admin.py:162 #: stock/templates/stock/item_base.html:162 #: templates/js/translated/build.js:1380 #: templates/js/translated/model_renderers.js:241 @@ -1894,11 +1807,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:436 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -1914,6 +1827,34 @@ msgstr "" msgid "Incomplete Outputs" msgstr "" +#: common/api.py:689 +msgid "Is Link" +msgstr "" + +#: common/api.py:697 +msgid "Is File" +msgstr "" + +#: common/api.py:739 +msgid "User does not have permission to delete this attachment" +msgstr "" + +#: common/currency.py:130 +msgid "Invalid currency code" +msgstr "" + +#: common/currency.py:132 +msgid "Duplicate currency code" +msgstr "" + +#: common/currency.py:137 +msgid "No valid currency codes provided" +msgstr "" + +#: common/currency.py:154 +msgid "No plugin" +msgstr "" + #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1952,1507 +1893,1512 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:71 +#: common/models.py:73 msgid "Updated" msgstr "" -#: common/models.py:72 +#: common/models.py:74 msgid "Timestamp of last update" msgstr "" -#: common/models.py:105 +#: common/models.py:107 msgid "Site URL is locked by configuration" msgstr "" -#: common/models.py:130 +#: common/models.py:132 msgid "Unique project code" msgstr "" -#: common/models.py:137 +#: common/models.py:139 msgid "Project description" msgstr "" -#: common/models.py:146 +#: common/models.py:148 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:766 +#: common/models.py:765 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:770 +#: common/models.py:769 msgid "Settings value" msgstr "" -#: common/models.py:822 +#: common/models.py:821 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:838 +#: common/models.py:837 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:846 +#: common/models.py:845 msgid "Value must be an integer value" msgstr "" -#: common/models.py:883 +#: common/models.py:882 msgid "Key string must be unique" msgstr "" -#: common/models.py:1115 +#: common/models.py:1114 msgid "No group" msgstr "" -#: common/models.py:1158 -msgid "An empty domain is not allowed." -msgstr "" - -#: common/models.py:1160 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "" - -#: common/models.py:1172 -msgid "No plugin" -msgstr "" - -#: common/models.py:1260 +#: common/models.py:1213 msgid "Restart required" msgstr "" -#: common/models.py:1262 +#: common/models.py:1215 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1269 +#: common/models.py:1222 msgid "Pending migrations" msgstr "" -#: common/models.py:1270 +#: common/models.py:1223 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1275 +#: common/models.py:1228 msgid "Server Instance Name" msgstr "" -#: common/models.py:1277 +#: common/models.py:1230 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1281 +#: common/models.py:1234 msgid "Use instance name" msgstr "" -#: common/models.py:1282 +#: common/models.py:1235 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1287 +#: common/models.py:1240 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1288 +#: common/models.py:1241 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1293 company/models.py:108 company/models.py:109 +#: common/models.py:1246 company/models.py:111 company/models.py:112 msgid "Company name" msgstr "" -#: common/models.py:1294 +#: common/models.py:1247 msgid "Internal company name" msgstr "" -#: common/models.py:1298 +#: common/models.py:1251 msgid "Base URL" msgstr "" -#: common/models.py:1299 +#: common/models.py:1252 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1305 +#: common/models.py:1258 msgid "Default Currency" msgstr "" -#: common/models.py:1306 +#: common/models.py:1259 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1312 +#: common/models.py:1265 +msgid "Supported Currencies" +msgstr "" + +#: common/models.py:1266 +msgid "List of supported currency codes" +msgstr "" + +#: common/models.py:1272 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1314 +#: common/models.py:1274 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1317 common/models.py:1373 common/models.py:1386 -#: common/models.py:1394 common/models.py:1403 common/models.py:1412 -#: common/models.py:1620 common/models.py:1642 common/models.py:1757 -#: common/models.py:2076 +#: common/models.py:1277 common/models.py:1333 common/models.py:1346 +#: common/models.py:1354 common/models.py:1363 common/models.py:1372 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:2046 msgid "days" msgstr "" -#: common/models.py:1321 +#: common/models.py:1281 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1322 +#: common/models.py:1282 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1327 +#: common/models.py:1287 msgid "Download from URL" msgstr "" -#: common/models.py:1329 +#: common/models.py:1289 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1335 +#: common/models.py:1295 msgid "Download Size Limit" msgstr "" -#: common/models.py:1336 +#: common/models.py:1296 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1342 +#: common/models.py:1302 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1344 +#: common/models.py:1304 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:1349 +#: common/models.py:1309 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1350 +#: common/models.py:1310 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1355 +#: common/models.py:1315 msgid "Require confirm" msgstr "" -#: common/models.py:1356 +#: common/models.py:1316 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1361 +#: common/models.py:1321 msgid "Tree Depth" msgstr "" -#: common/models.py:1363 +#: common/models.py:1323 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1369 +#: common/models.py:1329 msgid "Update Check Interval" msgstr "" -#: common/models.py:1370 +#: common/models.py:1330 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1376 +#: common/models.py:1336 msgid "Automatic Backup" msgstr "" -#: common/models.py:1377 +#: common/models.py:1337 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1382 +#: common/models.py:1342 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1383 +#: common/models.py:1343 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1389 +#: common/models.py:1349 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1391 +#: common/models.py:1351 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1398 +#: common/models.py:1358 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1400 +#: common/models.py:1360 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1407 +#: common/models.py:1367 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1409 +#: common/models.py:1369 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1416 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1376 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1417 +#: common/models.py:1377 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1422 +#: common/models.py:1382 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1423 +#: common/models.py:1383 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1429 +#: common/models.py:1389 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1430 +#: common/models.py:1390 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1435 +#: common/models.py:1395 msgid "Part Revisions" msgstr "" -#: common/models.py:1436 +#: common/models.py:1396 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1441 +#: common/models.py:1401 msgid "Allow Deletion from Assembly" msgstr "" -#: common/models.py:1442 +#: common/models.py:1402 msgid "Allow deletion of parts which are used in an assembly" msgstr "" -#: common/models.py:1447 +#: common/models.py:1407 msgid "IPN Regex" msgstr "" -#: common/models.py:1448 +#: common/models.py:1408 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1451 +#: common/models.py:1411 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1452 +#: common/models.py:1412 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1457 +#: common/models.py:1417 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1458 +#: common/models.py:1418 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1463 +#: common/models.py:1423 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1464 +#: common/models.py:1424 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1469 +#: common/models.py:1429 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1470 +#: common/models.py:1430 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1475 +#: common/models.py:1435 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1476 +#: common/models.py:1436 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1481 +#: common/models.py:1441 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1482 +#: common/models.py:1442 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1487 part/admin.py:108 part/models.py:3815 -#: report/models.py:293 report/models.py:360 report/serializers.py:90 -#: report/serializers.py:131 stock/serializers.py:228 +#: common/models.py:1447 part/admin.py:108 part/models.py:3795 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:227 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1488 +#: common/models.py:1448 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 +#: common/models.py:1453 part/admin.py:91 part/admin.py:425 part/models.py:1052 #: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" msgstr "" -#: common/models.py:1494 +#: common/models.py:1454 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1499 part/admin.py:95 part/models.py:1065 +#: common/models.py:1459 part/admin.py:95 part/models.py:1058 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1500 +#: common/models.py:1460 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1505 part/admin.py:100 part/models.py:1077 +#: common/models.py:1465 part/admin.py:100 part/models.py:1070 msgid "Purchaseable" msgstr "" -#: common/models.py:1506 +#: common/models.py:1466 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1511 part/admin.py:104 part/models.py:1083 +#: common/models.py:1471 part/admin.py:104 part/models.py:1076 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1512 +#: common/models.py:1472 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1517 part/admin.py:113 part/models.py:1071 +#: common/models.py:1477 part/admin.py:113 part/models.py:1064 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" msgstr "" -#: common/models.py:1518 +#: common/models.py:1478 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1523 part/admin.py:117 part/models.py:1093 +#: common/models.py:1483 part/admin.py:117 part/models.py:1086 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" msgstr "" -#: common/models.py:1524 +#: common/models.py:1484 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1529 +#: common/models.py:1489 msgid "Show Import in Views" msgstr "" -#: common/models.py:1530 +#: common/models.py:1490 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1535 +#: common/models.py:1495 msgid "Show related parts" msgstr "" -#: common/models.py:1536 +#: common/models.py:1496 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1541 +#: common/models.py:1501 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1542 +#: common/models.py:1502 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1547 templates/js/translated/part.js:107 +#: common/models.py:1507 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1549 +#: common/models.py:1509 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1555 +#: common/models.py:1515 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1556 +#: common/models.py:1516 msgid "Format to display the part name" msgstr "" -#: common/models.py:1562 +#: common/models.py:1522 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1563 +#: common/models.py:1523 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1567 +#: common/models.py:1527 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1569 +#: common/models.py:1529 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1575 +#: common/models.py:1535 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1577 +#: common/models.py:1537 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1583 +#: common/models.py:1548 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1585 +#: common/models.py:1550 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1591 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1593 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1599 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1601 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1607 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1609 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1615 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1617 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1630 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1632 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1638 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1640 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1647 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1648 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1653 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1655 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1661 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1662 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1667 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1669 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1675 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1676 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1681 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1682 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1687 +#: common/models.py:1657 msgid "Log Report Errors" msgstr "" -#: common/models.py:1688 +#: common/models.py:1658 msgid "Log errors which occur when generating reports" msgstr "" -#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:301 +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:302 msgid "Page Size" msgstr "" -#: common/models.py:1694 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1699 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1700 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1705 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1707 +#: common/models.py:1677 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1713 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1714 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1719 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1720 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1725 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1727 +#: common/models.py:1697 msgid "Determines default behavior when a stock item is depleted" msgstr "" -#: common/models.py:1733 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1735 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1740 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1741 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1746 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1747 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1752 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1754 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1761 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1762 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1767 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1768 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1773 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1774 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1778 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1779 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1784 +#: common/models.py:1754 msgid "Check BOM when installing items" msgstr "" -#: common/models.py:1786 +#: common/models.py:1756 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "" -#: common/models.py:1792 +#: common/models.py:1762 msgid "Allow Out of Stock Transfer" msgstr "" -#: common/models.py:1794 +#: common/models.py:1764 msgid "Allow stock items which are not in stock to be transferred between stock locations" msgstr "" -#: common/models.py:1800 +#: common/models.py:1770 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1802 +#: common/models.py:1772 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1808 common/models.py:1836 common/models.py:1858 -#: common/models.py:1894 +#: common/models.py:1778 common/models.py:1806 common/models.py:1828 +#: common/models.py:1864 msgid "Require Responsible Owner" msgstr "" -#: common/models.py:1809 common/models.py:1837 common/models.py:1859 -#: common/models.py:1895 +#: common/models.py:1779 common/models.py:1807 common/models.py:1829 +#: common/models.py:1865 msgid "A responsible owner must be assigned to each order" msgstr "" -#: common/models.py:1814 +#: common/models.py:1784 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1816 +#: common/models.py:1786 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:1822 +#: common/models.py:1792 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1823 +#: common/models.py:1793 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1828 +#: common/models.py:1798 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1830 +#: common/models.py:1800 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1842 +#: common/models.py:1812 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1844 +#: common/models.py:1814 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1850 +#: common/models.py:1820 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1852 +#: common/models.py:1822 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1864 +#: common/models.py:1834 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1865 +#: common/models.py:1835 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1870 +#: common/models.py:1840 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1872 +#: common/models.py:1842 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1878 +#: common/models.py:1848 msgid "Mark Shipped Orders as Complete" msgstr "" -#: common/models.py:1880 +#: common/models.py:1850 msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" msgstr "" -#: common/models.py:1886 +#: common/models.py:1856 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1888 +#: common/models.py:1858 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1900 +#: common/models.py:1870 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1902 +#: common/models.py:1872 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1908 +#: common/models.py:1878 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1910 +#: common/models.py:1880 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1917 +#: common/models.py:1887 msgid "Enable password forgot" msgstr "" -#: common/models.py:1918 +#: common/models.py:1888 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1923 +#: common/models.py:1893 msgid "Enable registration" msgstr "" -#: common/models.py:1924 +#: common/models.py:1894 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1929 +#: common/models.py:1899 msgid "Enable SSO" msgstr "" -#: common/models.py:1930 +#: common/models.py:1900 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1935 +#: common/models.py:1905 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1937 +#: common/models.py:1907 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1943 +#: common/models.py:1913 msgid "Email required" msgstr "" -#: common/models.py:1944 +#: common/models.py:1914 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1949 +#: common/models.py:1919 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1951 +#: common/models.py:1921 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1957 +#: common/models.py:1927 msgid "Mail twice" msgstr "" -#: common/models.py:1958 +#: common/models.py:1928 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1963 +#: common/models.py:1933 msgid "Password twice" msgstr "" -#: common/models.py:1964 +#: common/models.py:1934 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1969 +#: common/models.py:1939 msgid "Allowed domains" msgstr "" -#: common/models.py:1971 +#: common/models.py:1941 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1977 +#: common/models.py:1947 msgid "Group on signup" msgstr "" -#: common/models.py:1978 +#: common/models.py:1948 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1983 +#: common/models.py:1953 msgid "Enforce MFA" msgstr "" -#: common/models.py:1984 +#: common/models.py:1954 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1989 +#: common/models.py:1959 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1991 +#: common/models.py:1961 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1999 +#: common/models.py:1969 msgid "Check for plugin updates" msgstr "" -#: common/models.py:2000 +#: common/models.py:1970 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:2006 +#: common/models.py:1976 msgid "Enable URL integration" msgstr "" -#: common/models.py:2007 +#: common/models.py:1977 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:2013 +#: common/models.py:1983 msgid "Enable navigation integration" msgstr "" -#: common/models.py:2014 +#: common/models.py:1984 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:2020 +#: common/models.py:1990 msgid "Enable app integration" msgstr "" -#: common/models.py:2021 +#: common/models.py:1991 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:2027 +#: common/models.py:1997 msgid "Enable schedule integration" msgstr "" -#: common/models.py:2028 +#: common/models.py:1998 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:2034 +#: common/models.py:2004 msgid "Enable event integration" msgstr "" -#: common/models.py:2035 +#: common/models.py:2005 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:2041 +#: common/models.py:2011 msgid "Enable project codes" msgstr "" -#: common/models.py:2042 +#: common/models.py:2012 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:2047 +#: common/models.py:2017 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:2049 +#: common/models.py:2019 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:2055 +#: common/models.py:2025 msgid "Exclude External Locations" msgstr "" -#: common/models.py:2057 +#: common/models.py:2027 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:2063 +#: common/models.py:2033 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:2065 +#: common/models.py:2035 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:2071 +#: common/models.py:2041 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:2073 +#: common/models.py:2043 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:2080 +#: common/models.py:2050 msgid "Display Users full names" msgstr "" -#: common/models.py:2081 +#: common/models.py:2051 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:2086 +#: common/models.py:2056 msgid "Enable Test Station Data" msgstr "" -#: common/models.py:2087 +#: common/models.py:2057 msgid "Enable test station data collection for test results" msgstr "" -#: common/models.py:2099 common/models.py:2509 +#: common/models.py:2069 common/models.py:2479 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2142 +#: common/models.py:2112 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2144 +#: common/models.py:2114 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2150 +#: common/models.py:2120 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2151 +#: common/models.py:2121 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2156 +#: common/models.py:2126 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2157 +#: common/models.py:2127 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2162 +#: common/models.py:2132 msgid "Show latest parts" msgstr "" -#: common/models.py:2163 +#: common/models.py:2133 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2168 +#: common/models.py:2138 msgid "Show invalid BOMs" msgstr "" -#: common/models.py:2169 +#: common/models.py:2139 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2174 +#: common/models.py:2144 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2175 +#: common/models.py:2145 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2180 +#: common/models.py:2150 msgid "Show low stock" msgstr "" -#: common/models.py:2181 +#: common/models.py:2151 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2186 +#: common/models.py:2156 msgid "Show depleted stock" msgstr "" -#: common/models.py:2187 +#: common/models.py:2157 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2192 +#: common/models.py:2162 msgid "Show needed stock" msgstr "" -#: common/models.py:2193 +#: common/models.py:2163 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2198 +#: common/models.py:2168 msgid "Show expired stock" msgstr "" -#: common/models.py:2199 +#: common/models.py:2169 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2204 +#: common/models.py:2174 msgid "Show stale stock" msgstr "" -#: common/models.py:2205 +#: common/models.py:2175 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2210 +#: common/models.py:2180 msgid "Show pending builds" msgstr "" -#: common/models.py:2211 +#: common/models.py:2181 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2216 +#: common/models.py:2186 msgid "Show overdue builds" msgstr "" -#: common/models.py:2217 +#: common/models.py:2187 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2222 +#: common/models.py:2192 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2223 +#: common/models.py:2193 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2228 +#: common/models.py:2198 msgid "Show overdue POs" msgstr "" -#: common/models.py:2229 +#: common/models.py:2199 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2234 +#: common/models.py:2204 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2235 +#: common/models.py:2205 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2240 +#: common/models.py:2210 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2241 +#: common/models.py:2211 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2246 +#: common/models.py:2216 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2247 +#: common/models.py:2217 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2252 +#: common/models.py:2222 msgid "Show News" msgstr "" -#: common/models.py:2253 +#: common/models.py:2223 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2258 +#: common/models.py:2228 msgid "Inline label display" msgstr "" -#: common/models.py:2260 +#: common/models.py:2230 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2266 +#: common/models.py:2236 msgid "Default label printer" msgstr "" -#: common/models.py:2268 +#: common/models.py:2238 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2274 +#: common/models.py:2244 msgid "Inline report display" msgstr "" -#: common/models.py:2276 +#: common/models.py:2246 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2282 +#: common/models.py:2252 msgid "Search Parts" msgstr "" -#: common/models.py:2283 +#: common/models.py:2253 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2288 +#: common/models.py:2258 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2289 +#: common/models.py:2259 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2294 +#: common/models.py:2264 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2295 +#: common/models.py:2265 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2300 +#: common/models.py:2270 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2301 +#: common/models.py:2271 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2306 +#: common/models.py:2276 msgid "Search Categories" msgstr "" -#: common/models.py:2307 +#: common/models.py:2277 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2312 +#: common/models.py:2282 msgid "Search Stock" msgstr "" -#: common/models.py:2313 +#: common/models.py:2283 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2318 +#: common/models.py:2288 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2320 +#: common/models.py:2290 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2326 +#: common/models.py:2296 msgid "Search Locations" msgstr "" -#: common/models.py:2327 +#: common/models.py:2297 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2332 +#: common/models.py:2302 msgid "Search Companies" msgstr "" -#: common/models.py:2333 +#: common/models.py:2303 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2338 +#: common/models.py:2308 msgid "Search Build Orders" msgstr "" -#: common/models.py:2339 +#: common/models.py:2309 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2344 +#: common/models.py:2314 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2345 +#: common/models.py:2315 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2350 +#: common/models.py:2320 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2352 +#: common/models.py:2322 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2358 +#: common/models.py:2328 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2359 +#: common/models.py:2329 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2364 +#: common/models.py:2334 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2366 +#: common/models.py:2336 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2372 +#: common/models.py:2342 msgid "Search Return Orders" msgstr "" -#: common/models.py:2373 +#: common/models.py:2343 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2378 +#: common/models.py:2348 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2380 +#: common/models.py:2350 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2386 +#: common/models.py:2356 msgid "Search Preview Results" msgstr "" -#: common/models.py:2388 +#: common/models.py:2358 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2394 +#: common/models.py:2364 msgid "Regex Search" msgstr "" -#: common/models.py:2395 +#: common/models.py:2365 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2400 +#: common/models.py:2370 msgid "Whole Word Search" msgstr "" -#: common/models.py:2401 +#: common/models.py:2371 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2406 +#: common/models.py:2376 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2407 +#: common/models.py:2377 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2412 +#: common/models.py:2382 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2413 +#: common/models.py:2383 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2418 +#: common/models.py:2388 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2419 +#: common/models.py:2389 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2424 +#: common/models.py:2394 msgid "Date Format" msgstr "" -#: common/models.py:2425 +#: common/models.py:2395 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2438 part/templates/part/detail.html:41 +#: common/models.py:2408 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2439 +#: common/models.py:2409 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2444 part/templates/part/detail.html:62 +#: common/models.py:2414 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2446 +#: common/models.py:2416 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2452 +#: common/models.py:2422 msgid "Table String Length" msgstr "" -#: common/models.py:2454 +#: common/models.py:2424 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2460 +#: common/models.py:2430 msgid "Default part label template" msgstr "" -#: common/models.py:2461 +#: common/models.py:2431 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2466 +#: common/models.py:2436 msgid "Default stock item template" msgstr "" -#: common/models.py:2468 +#: common/models.py:2438 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2474 +#: common/models.py:2444 msgid "Default stock location label template" msgstr "" -#: common/models.py:2476 +#: common/models.py:2446 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2482 +#: common/models.py:2452 msgid "Default build line label template" msgstr "" -#: common/models.py:2484 +#: common/models.py:2454 msgid "The build line label template to be automatically selected" msgstr "" -#: common/models.py:2490 +#: common/models.py:2460 msgid "Receive error reports" msgstr "" -#: common/models.py:2491 +#: common/models.py:2461 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2496 +#: common/models.py:2466 msgid "Last used printing machines" msgstr "" -#: common/models.py:2497 +#: common/models.py:2467 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2540 +#: common/models.py:2487 common/models.py:2488 common/models.py:2636 +#: common/models.py:2637 common/models.py:2882 common/models.py:2883 +#: common/models.py:3193 common/models.py:3194 part/models.py:3193 +#: part/models.py:3280 part/models.py:3353 part/models.py:3381 +#: plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "" + +#: common/models.py:2510 msgid "Price break quantity" msgstr "" -#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1382 order/models.py:2301 -#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 +#: common/models.py:2517 company/serializers.py:472 order/admin.py:42 +#: order/models.py:1346 order/models.py:2265 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1886 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:740 msgid "Price" msgstr "" -#: common/models.py:2548 +#: common/models.py:2518 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2719 common/models.py:2904 +#: common/models.py:2613 common/models.py:2798 msgid "Endpoint" msgstr "" -#: common/models.py:2720 +#: common/models.py:2614 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2730 +#: common/models.py:2624 msgid "Name for this webhook" msgstr "" -#: common/models.py:2734 company/models.py:160 company/models.py:814 -#: machine/models.py:39 part/admin.py:88 part/models.py:1088 -#: plugin/models.py:65 templates/js/translated/company.js:523 +#: common/models.py:2628 company/models.py:163 company/models.py:782 +#: machine/models.py:39 part/admin.py:88 part/models.py:1081 +#: plugin/models.py:66 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3462,101 +3408,118 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2734 +#: common/models.py:2628 msgid "Is this webhook active" msgstr "" -#: common/models.py:2750 users/models.py:159 +#: common/models.py:2644 users/models.py:159 msgid "Token" msgstr "" -#: common/models.py:2751 +#: common/models.py:2645 msgid "Token for access" msgstr "" -#: common/models.py:2759 +#: common/models.py:2653 msgid "Secret" msgstr "" -#: common/models.py:2760 +#: common/models.py:2654 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2868 +#: common/models.py:2762 msgid "Message ID" msgstr "" -#: common/models.py:2869 +#: common/models.py:2763 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2877 +#: common/models.py:2771 msgid "Host" msgstr "" -#: common/models.py:2878 +#: common/models.py:2772 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2886 +#: common/models.py:2780 msgid "Header" msgstr "" -#: common/models.py:2887 +#: common/models.py:2781 msgid "Header of this message" msgstr "" -#: common/models.py:2894 +#: common/models.py:2788 msgid "Body" msgstr "" -#: common/models.py:2895 +#: common/models.py:2789 msgid "Body of this message" msgstr "" -#: common/models.py:2905 +#: common/models.py:2799 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2910 +#: common/models.py:2804 msgid "Worked on" msgstr "" -#: common/models.py:2911 +#: common/models.py:2805 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:3037 +#: common/models.py:2931 msgid "Id" msgstr "" -#: common/models.py:3039 templates/js/translated/company.js:965 +#: common/models.py:2933 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:3043 templates/js/translated/news.js:60 +#: common/models.py:2935 common/models.py:3177 company/models.py:149 +#: company/models.py:440 company/models.py:500 company/models.py:799 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +#: part/admin.py:55 part/models.py:955 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "" + +#: common/models.py:2937 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:3045 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2939 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:3047 templates/js/translated/news.js:52 +#: common/models.py:2941 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Read" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Was this news item read?" msgstr "" -#: common/models.py:3067 company/models.py:156 part/models.py:972 +#: common/models.py:2961 company/models.py:159 part/models.py:965 #: 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.html:35 @@ -3566,34 +3529,89 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:3067 +#: common/models.py:2961 msgid "Image file" msgstr "" -#: common/models.py:3109 +#: common/models.py:2973 common/models.py:3161 +msgid "Target model type for this image" +msgstr "" + +#: common/models.py:2977 +msgid "Target model ID for this image" +msgstr "" + +#: common/models.py:3018 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3128 +#: common/models.py:3037 msgid "Unit name" msgstr "" -#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3044 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3136 +#: common/models.py:3045 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3052 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3144 +#: common/models.py:3053 msgid "Unit definition" msgstr "" +#: common/models.py:3111 common/models.py:3168 stock/models.py:2426 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "" + +#: common/models.py:3123 +msgid "Missing file" +msgstr "" + +#: common/models.py:3124 +msgid "Missing external link" +msgstr "" + +#: common/models.py:3169 +msgid "Select file to attach" +msgstr "" + +#: common/models.py:3184 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "" + +#: common/models.py:3185 +msgid "Attachment comment" +msgstr "" + +#: common/models.py:3201 +msgid "Upload date" +msgstr "" + +#: common/models.py:3202 +msgid "Date the file was uploaded" +msgstr "" + +#: common/models.py:3206 +msgid "File size" +msgstr "" + +#: common/models.py:3206 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3244 common/serializers.py:553 +msgid "Invalid model type specified for attachment" +msgstr "" + #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" @@ -3628,66 +3646,103 @@ msgstr "" msgid "Error raised by plugin" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:371 msgid "Is Running" msgstr "" -#: common/serializers.py:372 +#: common/serializers.py:377 msgid "Pending Tasks" msgstr "" -#: common/serializers.py:378 +#: common/serializers.py:383 msgid "Scheduled Tasks" msgstr "" -#: common/serializers.py:384 +#: common/serializers.py:389 msgid "Failed Tasks" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Task ID" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Unique task ID" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock time" msgstr "" -#: common/serializers.py:403 +#: common/serializers.py:408 msgid "Task name" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function name" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Arguments" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Task arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Keyword Arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Task keyword arguments" msgstr "" +#: common/serializers.py:525 +msgid "Filename" +msgstr "" + +#: common/serializers.py:532 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: common/serializers.py:559 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "" + +#: common/validators.py:33 +msgid "No attachment model type provided" +msgstr "" + +#: common/validators.py:39 +msgid "Invalid attachment model type" +msgstr "" + +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "" + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +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 @@ -3726,210 +3781,222 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/api.py:164 +#: company/api.py:144 msgid "Part is Active" msgstr "" -#: company/api.py:168 +#: company/api.py:148 msgid "Manufacturer is Active" msgstr "" -#: company/api.py:317 +#: company/api.py:281 msgid "Supplier Part is Active" msgstr "" -#: company/api.py:321 +#: company/api.py:285 msgid "Internal Part is Active" msgstr "" -#: company/api.py:325 +#: company/api.py:289 msgid "Supplier is Active" msgstr "" -#: company/models.py:114 +#: company/models.py:100 company/models.py:365 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:822 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "" + +#: company/models.py:117 msgid "Company description" msgstr "" -#: company/models.py:115 +#: company/models.py:118 msgid "Description of the company" msgstr "" -#: company/models.py:120 company/templates/company/company_base.html:106 +#: company/models.py:123 company/templates/company/company_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:532 msgid "Website" msgstr "" -#: company/models.py:120 +#: company/models.py:123 msgid "Company website URL" msgstr "" -#: company/models.py:125 +#: company/models.py:128 msgid "Phone number" msgstr "" -#: company/models.py:127 +#: company/models.py:130 msgid "Contact phone number" msgstr "" -#: company/models.py:134 +#: company/models.py:137 msgid "Contact email address" msgstr "" -#: company/models.py:139 company/templates/company/company_base.html:145 +#: company/models.py:142 company/templates/company/company_base.html:145 #: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "" -#: company/models.py:141 +#: company/models.py:144 msgid "Point of contact" msgstr "" -#: company/models.py:147 +#: company/models.py:150 msgid "Link to external company information" msgstr "" -#: company/models.py:160 +#: company/models.py:163 msgid "Is this company active?" msgstr "" -#: company/models.py:165 +#: company/models.py:168 msgid "is customer" msgstr "" -#: company/models.py:166 +#: company/models.py:169 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:171 +#: company/models.py:174 msgid "is supplier" msgstr "" -#: company/models.py:172 +#: company/models.py:175 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:177 +#: company/models.py:180 msgid "is manufacturer" msgstr "" -#: company/models.py:178 +#: company/models.py:181 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:186 +#: company/models.py:189 msgid "Default currency used for this company" msgstr "" -#: company/models.py:273 company/models.py:382 -#: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:812 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 -msgid "Company" -msgstr "" - -#: company/models.py:383 +#: company/models.py:366 msgid "Select company" msgstr "" -#: company/models.py:388 +#: company/models.py:371 msgid "Address title" msgstr "" -#: company/models.py:389 +#: company/models.py:372 msgid "Title describing the address entry" msgstr "" -#: company/models.py:395 +#: company/models.py:378 msgid "Primary address" msgstr "" -#: company/models.py:396 +#: company/models.py:379 msgid "Set as primary address" msgstr "" -#: company/models.py:401 templates/js/translated/company.js:914 +#: company/models.py:384 templates/js/translated/company.js:914 #: templates/js/translated/company.js:971 msgid "Line 1" msgstr "" -#: company/models.py:402 +#: company/models.py:385 msgid "Address line 1" msgstr "" -#: company/models.py:408 templates/js/translated/company.js:915 +#: company/models.py:391 templates/js/translated/company.js:915 #: templates/js/translated/company.js:977 msgid "Line 2" msgstr "" -#: company/models.py:409 +#: company/models.py:392 msgid "Address line 2" msgstr "" -#: company/models.py:415 company/models.py:416 +#: company/models.py:398 company/models.py:399 #: templates/js/translated/company.js:983 msgid "Postal code" msgstr "" -#: company/models.py:422 +#: company/models.py:405 msgid "City/Region" msgstr "" -#: company/models.py:423 +#: company/models.py:406 msgid "Postal code city/region" msgstr "" -#: company/models.py:429 +#: company/models.py:412 msgid "State/Province" msgstr "" -#: company/models.py:430 +#: company/models.py:413 msgid "State or province" msgstr "" -#: company/models.py:436 templates/js/translated/company.js:1001 +#: company/models.py:419 templates/js/translated/company.js:1001 msgid "Country" msgstr "" -#: company/models.py:437 +#: company/models.py:420 msgid "Address country" msgstr "" -#: company/models.py:443 +#: company/models.py:426 msgid "Courier shipping notes" msgstr "" -#: company/models.py:444 +#: company/models.py:427 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:450 +#: company/models.py:433 msgid "Internal shipping notes" msgstr "" -#: company/models.py:451 +#: company/models.py:434 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:458 +#: company/models.py:441 msgid "Link to address information (external)" msgstr "" -#: company/models.py:489 company/models.py:792 stock/models.py:768 -#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 +#: company/models.py:463 company/models.py:574 company/models.py:792 +#: 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:475 company/models.py:760 stock/models.py:766 +#: stock/serializers.py:422 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:491 company/models.py:794 +#: company/models.py:477 company/models.py:762 msgid "Select part" msgstr "" -#: company/models.py:500 company/templates/company/company_base.html:82 +#: company/models.py:486 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:530 +#: company/templates/company/supplier_part.html:145 part/serializers.py:525 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -3939,152 +4006,154 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:501 +#: company/models.py:487 msgid "Select manufacturer" msgstr "" -#: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:540 +#: company/models.py:493 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:535 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 -#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1801 #: templates/js/translated/purchase_order.js:1851 #: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "" -#: company/models.py:508 +#: company/models.py:494 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:515 +#: company/models.py:501 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:524 +#: company/models.py:510 msgid "Manufacturer part description" msgstr "" -#: company/models.py:581 company/models.py:608 company/models.py:824 -#: 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:615 +#: company/models.py:581 msgid "Parameter name" msgstr "" -#: company/models.py:621 report/templates/report/inventree_test_report.html:104 -#: stock/models.py:2429 templates/js/translated/company.js:1166 -#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 +#: company/models.py:587 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2418 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1493 #: templates/js/translated/stock.js:1522 msgid "Value" msgstr "" -#: company/models.py:622 +#: company/models.py:588 msgid "Parameter value" msgstr "" -#: company/models.py:629 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1052 part/models.py:3666 +#: company/models.py:595 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1045 part/models.py:3646 #: part/templates/part/part_base.html:284 -#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1512 +#: templates/js/translated/part.js:1616 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:630 +#: company/models.py:596 msgid "Parameter units" msgstr "" -#: company/models.py:732 +#: company/models.py:648 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:777 stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "" + +#: company/models.py:700 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:739 +#: company/models.py:707 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:753 +#: company/models.py:721 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/models.py:770 company/templates/company/company_base.html:87 #: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:514 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:509 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:511 -#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1769 #: templates/js/translated/pricing.js:498 #: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "" -#: company/models.py:803 +#: company/models.py:771 msgid "Select supplier" msgstr "" -#: company/models.py:809 part/serializers.py:525 +#: company/models.py:777 part/serializers.py:520 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:815 +#: company/models.py:783 msgid "Is this supplier part active?" msgstr "" -#: company/models.py:825 +#: company/models.py:793 msgid "Select manufacturer part" msgstr "" -#: company/models.py:832 +#: company/models.py:800 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:841 +#: company/models.py:809 msgid "Supplier part description" msgstr "" -#: company/models.py:848 company/templates/company/supplier_part.html:187 -#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 +#: company/models.py:816 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4093 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_purchase_order_report.html:32 #: report/templates/report/inventree_return_order_report.html:27 #: report/templates/report/inventree_sales_order_report.html:32 #: report/templates/report/inventree_stock_location_report.html:105 -#: stock/serializers.py:708 +#: stock/serializers.py:710 msgid "Note" msgstr "" -#: company/models.py:857 part/models.py:2010 +#: company/models.py:825 part/models.py:2003 msgid "base cost" msgstr "" -#: company/models.py:858 part/models.py:2011 +#: company/models.py:826 part/models.py:2004 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:865 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 +#: company/models.py:833 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:797 stock/serializers.py:1475 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 #: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "" -#: company/models.py:866 +#: company/models.py:834 msgid "Part packaging" msgstr "" -#: company/models.py:871 templates/js/translated/company.js:1651 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: company/models.py:839 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:311 #: templates/js/translated/purchase_order.js:841 #: templates/js/translated/purchase_order.js:1103 @@ -4093,35 +4162,35 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:873 +#: company/models.py:841 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:892 part/models.py:2017 +#: company/models.py:860 part/models.py:2010 msgid "multiple" msgstr "" -#: company/models.py:893 +#: company/models.py:861 msgid "Order multiple" msgstr "" -#: company/models.py:905 +#: company/models.py:873 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:911 +#: company/models.py:879 msgid "Availability Updated" msgstr "" -#: company/models.py:912 +#: company/models.py:880 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:163 +#: company/serializers.py:161 msgid "Default currency used for this supplier" msgstr "" -#: company/serializers.py:381 part/admin.py:126 +#: company/serializers.py:357 part/admin.py:126 #: part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1689 #: templates/js/translated/table_filters.js:355 @@ -4133,7 +4202,7 @@ msgstr "" #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 #: templates/js/translated/model_renderers.js:312 -#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +#: templates/js/translated/part.js:815 templates/js/translated/part.js:1219 msgid "Inactive" msgstr "" @@ -4172,7 +4241,7 @@ msgstr "" #: report/templates/report/inventree_purchase_order_report.html:40 #: report/templates/report/inventree_sales_order_report.html:40 #: report/templates/report/inventree_test_report.html:84 -#: report/templates/report/inventree_test_report.html:163 +#: report/templates/report/inventree_test_report.html:162 msgid "Part image" msgstr "" @@ -4191,10 +4260,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:92 order/models.py:940 -#: order/models.py:2068 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:148 stock/models.py:821 -#: stock/models.py:822 stock/serializers.py:1229 +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2032 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:819 +#: stock/models.py:820 stock/serializers.py:1225 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 @@ -4405,7 +4474,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:836 +#: part/admin.py:122 part/serializers.py:832 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4425,8 +4494,8 @@ msgstr "" msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:206 -#: templates/js/translated/part.js:1422 +#: company/templates/company/manufacturer_part.html:196 +#: templates/js/translated/part.js:1423 msgid "Add Parameter" msgstr "" @@ -4454,15 +4523,6 @@ msgstr "" msgid "Addresses" msgstr "" -#: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:452 -#: stock/models.py:779 stock/templates/stock/item_base.html:233 -#: templates/js/translated/company.js:1600 -#: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2280 -msgid "Supplier Part" -msgstr "" - #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1526 msgid "Supplier part actions" @@ -4505,8 +4565,8 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:524 -#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: part/bom.py:311 part/serializers.py:519 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1787 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1850 #: templates/js/translated/purchase_order.js:2028 @@ -4518,12 +4578,12 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:207 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" @@ -4555,15 +4615,15 @@ msgid "Update Part Availability" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:835 part/stocktake.py:223 +#: part/serializers.py:831 part/stocktake.py:224 #: part/templates/part/category.html:183 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:916 stock/serializers.py:1080 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:918 stock/serializers.py:1091 #: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:191 #: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1061 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:206 msgid "Stock Items" @@ -4590,10 +4650,6 @@ msgstr "" 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 "" @@ -4614,7 +4670,7 @@ msgstr "" msgid "Connected" msgstr "" -#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: machine/machine_types/label_printer.py:235 order/api.py:1467 #: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "" @@ -4703,7 +4759,7 @@ msgstr "" msgid "Config type" msgstr "" -#: order/admin.py:30 order/models.py:89 +#: order/admin.py:30 order/models.py:90 #: report/templates/report/inventree_purchase_order_report.html:31 #: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 @@ -4712,30 +4768,30 @@ msgstr "" msgid "Total Price" msgstr "" -#: order/api.py:161 order/serializers.py:91 +#: order/api.py:157 order/serializers.py:90 #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "" -#: order/api.py:165 templates/js/translated/table_filters.js:194 +#: order/api.py:161 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "" -#: order/api.py:240 +#: order/api.py:236 msgid "No matching purchase order found" msgstr "" -#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 -#: order/models.py:1586 order/models.py:1700 order/models.py:1854 -#: order/models.py:2267 order/models.py:2318 +#: order/api.py:435 order/api.py:801 order/models.py:1395 order/models.py:1504 +#: order/models.py:1550 order/models.py:1664 order/models.py:1818 +#: order/models.py:2231 order/models.py:2282 #: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "" -#: order/api.py:441 order/api.py:838 +#: order/api.py:439 order/api.py:822 msgid "Order Complete" msgstr "" @@ -4743,13 +4799,13 @@ msgstr "" msgid "Order Pending" msgstr "" -#: order/api.py:1509 order/models.py:380 order/models.py:1432 -#: order/models.py:1541 order/templates/order/order_base.html:9 +#: order/api.py:1461 order/models.py:380 order/models.py:1396 +#: order/models.py:1505 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_purchase_order_report.html:14 -#: stock/serializers.py:119 stock/templates/stock/item_base.html:176 +#: stock/serializers.py:118 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/part.js:1746 templates/js/translated/pricing.js:804 #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1673 @@ -4757,8 +4813,8 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1513 order/models.py:2017 order/models.py:2268 -#: order/models.py:2319 order/templates/order/return_order_base.html:9 +#: order/api.py:1465 order/models.py:1981 order/models.py:2232 +#: order/models.py:2283 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report.html:13 #: templates/js/translated/return_order.js:280 @@ -4766,15 +4822,15 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/models.py:90 +#: order/models.py:91 msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:71 +#: order/models.py:96 order/serializers.py:70 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:72 +#: order/models.py:99 order/serializers.py:71 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -4790,7 +4846,7 @@ msgstr "" msgid "Select project code for this order" msgstr "" -#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 msgid "Link to external page" msgstr "" @@ -4814,11 +4870,11 @@ msgstr "" msgid "Company address for this order" msgstr "" -#: order/models.py:464 order/models.py:929 +#: order/models.py:464 order/models.py:927 msgid "Order reference" msgstr "" -#: order/models.py:472 order/models.py:953 +#: order/models.py:472 order/models.py:951 msgid "Purchase order status" msgstr "" @@ -4839,15 +4895,15 @@ msgstr "" msgid "received by" msgstr "" -#: order/models.py:514 order/models.py:2094 +#: order/models.py:514 order/models.py:2058 msgid "Issue Date" msgstr "" -#: order/models.py:515 order/models.py:2095 +#: order/models.py:515 order/models.py:2059 msgid "Date order was issued" msgstr "" -#: order/models.py:522 order/models.py:2102 +#: order/models.py:522 order/models.py:2066 msgid "Date order was completed" msgstr "" @@ -4859,94 +4915,94 @@ msgstr "" msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:941 +#: order/models.py:939 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:964 order/models.py:2087 +#: order/models.py:962 order/models.py:2051 msgid "Customer Reference " msgstr "" -#: order/models.py:965 order/models.py:2088 +#: order/models.py:963 order/models.py:2052 msgid "Customer order reference code" msgstr "" -#: order/models.py:969 order/models.py:1707 +#: order/models.py:967 order/models.py:1671 #: templates/js/translated/sales_order.js:879 #: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "" -#: order/models.py:978 +#: order/models.py:976 msgid "shipped by" msgstr "" -#: order/models.py:1027 +#: order/models.py:1025 msgid "Order is already complete" msgstr "" -#: order/models.py:1030 +#: order/models.py:1028 msgid "Order is already cancelled" msgstr "" -#: order/models.py:1034 +#: order/models.py:1032 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:1038 +#: order/models.py:1036 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:1043 +#: order/models.py:1041 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1309 +#: order/models.py:1273 msgid "Item quantity" msgstr "" -#: order/models.py:1326 +#: order/models.py:1290 msgid "Line item reference" msgstr "" -#: order/models.py:1333 +#: order/models.py:1297 msgid "Line item notes" msgstr "" -#: order/models.py:1345 +#: order/models.py:1309 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1366 +#: order/models.py:1330 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1372 +#: order/models.py:1336 msgid "Context" msgstr "" -#: order/models.py:1373 +#: order/models.py:1337 msgid "Additional context for this line" msgstr "" -#: order/models.py:1383 +#: order/models.py:1347 msgid "Unit price" msgstr "" -#: order/models.py:1416 +#: order/models.py:1380 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1423 +#: order/models.py:1387 msgid "deleted" msgstr "" -#: order/models.py:1451 +#: order/models.py:1415 msgid "Supplier part" msgstr "" -#: order/models.py:1458 order/templates/order/order_base.html:196 -#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: order/models.py:1422 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1870 templates/js/translated/part.js:1902 #: templates/js/translated/purchase_order.js:1306 #: templates/js/translated/purchase_order.js:2169 #: templates/js/translated/return_order.js:763 @@ -4955,196 +5011,196 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1459 +#: order/models.py:1423 msgid "Number of items received" msgstr "" -#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 +#: order/models.py:1431 stock/models.py:938 stock/serializers.py:556 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "" -#: order/models.py:1468 +#: order/models.py:1432 msgid "Unit purchase price" msgstr "" -#: order/models.py:1483 +#: order/models.py:1447 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1574 +#: order/models.py:1538 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1579 +#: order/models.py:1543 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1605 part/templates/part/part_pricing.html:107 +#: order/models.py:1569 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:1606 +#: order/models.py:1570 msgid "Unit sale price" msgstr "" -#: order/models.py:1615 order/status_codes.py:43 +#: order/models.py:1579 order/status_codes.py:43 #: templates/js/translated/sales_order.js:1559 #: templates/js/translated/sales_order.js:1680 #: templates/js/translated/sales_order.js:1993 msgid "Shipped" msgstr "" -#: order/models.py:1616 +#: order/models.py:1580 msgid "Shipped quantity" msgstr "" -#: order/models.py:1708 +#: order/models.py:1672 msgid "Date of shipment" msgstr "" -#: order/models.py:1714 templates/js/translated/sales_order.js:1072 +#: order/models.py:1678 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "" -#: order/models.py:1715 +#: order/models.py:1679 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1723 +#: order/models.py:1687 msgid "Checked By" msgstr "" -#: order/models.py:1724 +#: order/models.py:1688 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 -#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 +#: order/models.py:1695 order/models.py:1908 order/serializers.py:1342 +#: order/serializers.py:1452 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "" -#: order/models.py:1732 +#: order/models.py:1696 msgid "Shipment number" msgstr "" -#: order/models.py:1740 +#: order/models.py:1704 msgid "Tracking Number" msgstr "" -#: order/models.py:1741 +#: order/models.py:1705 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1748 +#: order/models.py:1712 msgid "Invoice Number" msgstr "" -#: order/models.py:1749 +#: order/models.py:1713 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1769 +#: order/models.py:1733 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1772 +#: order/models.py:1736 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1890 order/models.py:1892 +#: order/models.py:1854 order/models.py:1856 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1899 +#: order/models.py:1863 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1902 +#: order/models.py:1866 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1905 +#: order/models.py:1869 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1924 order/serializers.py:1231 +#: order/models.py:1888 order/serializers.py:1219 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1927 +#: order/models.py:1891 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1928 plugin/base/barcodes/api.py:481 +#: order/models.py:1892 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1936 +#: order/models.py:1900 msgid "Line" msgstr "" -#: order/models.py:1945 +#: order/models.py:1909 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1958 order/models.py:2275 +#: order/models.py:1922 order/models.py:2239 #: templates/js/translated/return_order.js:721 msgid "Item" msgstr "" -#: order/models.py:1959 +#: order/models.py:1923 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1968 +#: order/models.py:1932 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:2057 +#: order/models.py:2021 msgid "Return Order reference" msgstr "" -#: order/models.py:2069 +#: order/models.py:2033 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:2081 +#: order/models.py:2045 msgid "Return order status" msgstr "" -#: order/models.py:2260 +#: order/models.py:2224 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2276 +#: order/models.py:2240 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2282 +#: order/models.py:2246 msgid "Received Date" msgstr "" -#: order/models.py:2283 +#: order/models.py:2247 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2294 templates/js/translated/return_order.js:732 +#: order/models.py:2258 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2295 +#: order/models.py:2259 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2302 +#: order/models.py:2266 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/serializers.py:79 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_purchase_order_report.html:22 @@ -5153,163 +5209,163 @@ msgstr "" msgid "Line Items" msgstr "" -#: order/serializers.py:84 +#: order/serializers.py:83 msgid "Completed Lines" msgstr "" -#: order/serializers.py:287 +#: order/serializers.py:286 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:302 order/serializers.py:1247 +#: order/serializers.py:301 order/serializers.py:1235 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:312 order/serializers.py:1257 +#: order/serializers.py:311 order/serializers.py:1245 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:440 +#: order/serializers.py:439 msgid "Order is not open" msgstr "" -#: order/serializers.py:461 +#: order/serializers.py:460 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:463 +#: order/serializers.py:462 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:473 +#: order/serializers.py:472 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:478 msgid "Merge Items" msgstr "" -#: order/serializers.py:481 +#: order/serializers.py:480 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:499 +#: order/serializers.py:498 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:502 +#: order/serializers.py:501 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:510 +#: order/serializers.py:509 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:511 +#: order/serializers.py:510 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:550 order/serializers.py:1325 +#: order/serializers.py:549 order/serializers.py:1313 msgid "Line Item" msgstr "" -#: order/serializers.py:556 +#: order/serializers.py:555 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1657 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:581 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:589 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:601 templates/js/translated/barcode.js:52 +#: order/serializers.py:600 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:602 +#: order/serializers.py:601 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:618 +#: order/serializers.py:617 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:642 +#: order/serializers.py:641 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:690 order/serializers.py:1696 +#: order/serializers.py:689 order/serializers.py:1673 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:706 +#: order/serializers.py:705 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:717 +#: order/serializers.py:716 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1074 +#: order/serializers.py:1062 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1134 +#: order/serializers.py:1122 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1195 order/serializers.py:1334 +#: order/serializers.py:1183 order/serializers.py:1322 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1214 +#: order/serializers.py:1202 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1344 +#: order/serializers.py:1332 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1366 order/serializers.py:1472 +#: order/serializers.py:1354 order/serializers.py:1460 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1369 order/serializers.py:1475 +#: order/serializers.py:1357 order/serializers.py:1463 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1416 +#: order/serializers.py:1404 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1423 +#: order/serializers.py:1411 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1650 +#: order/serializers.py:1627 msgid "Return order line item" msgstr "" -#: order/serializers.py:1656 +#: order/serializers.py:1633 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1659 +#: order/serializers.py:1636 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1688 +#: order/serializers.py:1665 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1766 +#: order/serializers.py:1743 msgid "Line price currency" msgstr "" @@ -5639,7 +5695,7 @@ msgstr "" #: 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/part.js:1073 #: templates/js/translated/purchase_order.js:1752 #: templates/js/translated/return_order.js:380 #: templates/js/translated/sales_order.js:891 @@ -5735,34 +5791,34 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:406 part/models.py:3964 part/stocktake.py:218 -#: stock/admin.py:153 +#: part/admin.py:39 part/admin.py:398 part/models.py:3944 part/stocktake.py:219 +#: stock/admin.py:152 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 -#: stock/admin.py:157 +#: part/admin.py:41 part/admin.py:405 part/models.py:3945 part/stocktake.py:220 +#: stock/admin.py:156 msgid "Part Name" msgstr "" -#: part/admin.py:45 part/stocktake.py:220 +#: part/admin.py:45 part/stocktake.py:221 msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:940 part/templates/part/part_base.html:269 #: report/templates/report/inventree_stock_location_report.html:103 -#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/part.js:1227 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 -#: report/models.py:161 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2346 +#: part/admin.py:50 part/models.py:949 part/templates/part/part_base.html:277 +#: report/models.py:162 templates/js/translated/part.js:1232 +#: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:319 part/models.py:929 +#: part/admin.py:53 part/admin.py:319 part/models.py:922 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5771,11 +5827,11 @@ msgstr "" msgid "Part Image" msgstr "" -#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:222 msgid "Category ID" msgstr "" -#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:223 msgid "Category Name" msgstr "" @@ -5787,11 +5843,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:908 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1036 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5799,26 +5855,26 @@ msgstr "" 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 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:235 +#: templates/js/translated/part.js:715 templates/js/translated/part.js:2153 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3123 part/models.py:3137 -#: templates/js/translated/part.js:969 +#: part/admin.py:155 part/models.py:3088 part/models.py:3102 +#: templates/js/translated/part.js:970 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3130 part/models.py:3144 -#: templates/js/translated/part.js:979 +#: part/admin.py:158 part/models.py:3095 part/models.py:3109 +#: templates/js/translated/part.js:980 msgid "Maximum Cost" msgstr "" -#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 msgid "Parent ID" msgstr "" -#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 msgid "Parent Name" msgstr "" @@ -5827,141 +5883,149 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:325 part/models.py:393 part/serializers.py:117 -#: part/serializers.py:272 part/serializers.py:391 +#: part/admin.py:325 part/models.py:396 part/serializers.py:124 +#: part/serializers.py:267 part/serializers.py:386 #: 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:2803 templates/js/translated/search.js:130 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "" -#: part/admin.py:386 +#: part/admin.py:378 msgid "BOM Level" msgstr "" -#: part/admin.py:389 +#: part/admin.py:381 msgid "BOM Item ID" msgstr "" -#: part/admin.py:399 +#: part/admin.py:391 msgid "Parent IPN" msgstr "" -#: part/admin.py:410 part/models.py:3966 +#: part/admin.py:402 part/models.py:3946 msgid "Part IPN" msgstr "" -#: part/admin.py:423 part/serializers.py:1278 +#: part/admin.py:415 part/serializers.py:1274 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:428 part/serializers.py:1293 +#: part/admin.py:420 part/serializers.py:1289 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:110 +#: part/api.py:104 msgid "Starred" msgstr "" -#: part/api.py:112 +#: part/api.py:106 msgid "Filter by starred categories" msgstr "" -#: part/api.py:129 stock/api.py:318 +#: part/api.py:123 stock/api.py:312 msgid "Depth" msgstr "" -#: part/api.py:129 +#: part/api.py:123 msgid "Filter by category depth" msgstr "" -#: part/api.py:147 stock/api.py:336 +#: part/api.py:141 stock/api.py:330 +msgid "Top Level" +msgstr "" + +#: part/api.py:143 +msgid "Filter by top-level categories" +msgstr "" + +#: part/api.py:156 stock/api.py:345 msgid "Cascade" msgstr "" -#: part/api.py:149 +#: part/api.py:158 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:169 +#: part/api.py:179 templates/js/translated/part.js:308 msgid "Parent" msgstr "" -#: part/api.py:171 +#: part/api.py:181 msgid "Filter by parent category" msgstr "" -#: part/api.py:204 +#: part/api.py:214 msgid "Exclude Tree" msgstr "" -#: part/api.py:206 +#: part/api.py:216 msgid "Exclude sub-categories under the specified category" msgstr "" -#: part/api.py:455 +#: part/api.py:449 msgid "Has Results" msgstr "" -#: part/api.py:622 +#: part/api.py:616 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:640 +#: part/api.py:634 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:656 +#: part/api.py:650 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:740 +#: part/api.py:734 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:887 +#: part/api.py:881 msgid "Valid" msgstr "" -#: part/api.py:888 +#: part/api.py:882 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:894 +#: part/api.py:888 msgid "This option must be selected" msgstr "" -#: part/api.py:1111 +#: part/api.py:1105 msgid "BOM Valid" msgstr "" -#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 -#: part/serializers.py:406 part/serializers.py:1134 -#: part/templates/part/part_base.html:260 stock/api.py:781 +#: part/api.py:1508 part/models.py:932 part/models.py:3374 part/models.py:3889 +#: part/serializers.py:401 part/serializers.py:1130 +#: part/templates/part/part_base.html:260 stock/api.py:791 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2376 +#: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/api.py:1803 +#: part/api.py:1796 msgid "Uses" msgstr "" -#: part/bom.py:170 part/models.py:102 part/models.py:982 +#: part/bom.py:170 part/models.py:104 part/models.py:975 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 part/serializers.py:837 +#: part/bom.py:171 part/serializers.py:833 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5970,1054 +6034,1066 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 +#: part/models.py:85 part/models.py:3890 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:84 part/templates/part/category.html:136 +#: part/models.py:86 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "" -#: part/models.py:103 +#: part/models.py:105 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 +#: part/models.py:110 stock/models.py:174 templates/js/translated/part.js:2810 #: templates/js/translated/stock.js:2772 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:110 +#: part/models.py:112 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:119 +#: part/models.py:121 msgid "Default keywords" msgstr "" -#: part/models.py:120 +#: part/models.py:122 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 stock/models.py:85 stock/models.py:156 +#: part/models.py:128 stock/models.py:86 stock/models.py:157 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:127 stock/models.py:157 +#: part/models.py:129 stock/models.py:158 msgid "Icon (optional)" msgstr "" -#: part/models.py:149 +#: part/models.py:151 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:482 +#: part/models.py:485 msgid "Cannot delete this part as it is still active" msgstr "" -#: part/models.py:489 +#: part/models.py:490 msgid "Cannot delete this part as it is used in an assembly" msgstr "" -#: part/models.py:527 +#: part/models.py:528 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:575 part/models.py:582 +#: part/models.py:576 part/models.py:583 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:594 +#: part/models.py:595 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:659 +#: part/models.py:658 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:739 +#: part/models.py:736 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:844 +#: part/models.py:837 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:854 +#: part/models.py:847 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:869 +#: part/models.py:862 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:898 part/models.py:3965 +#: part/models.py:891 part/models.py:3945 msgid "Part name" msgstr "" -#: part/models.py:903 +#: part/models.py:896 msgid "Is Template" msgstr "" -#: part/models.py:904 +#: part/models.py:897 msgid "Is this part a template part?" msgstr "" -#: part/models.py:914 +#: part/models.py:907 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:922 +#: part/models.py:915 msgid "Part description (optional)" msgstr "" -#: part/models.py:930 +#: part/models.py:923 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:940 +#: part/models.py:933 msgid "Part category" msgstr "" -#: part/models.py:948 +#: part/models.py:941 msgid "Internal Part Number" msgstr "" -#: part/models.py:955 +#: part/models.py:948 msgid "Part revision or version number" msgstr "" -#: part/models.py:980 +#: part/models.py:973 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:1026 part/templates/part/part_base.html:376 +#: part/models.py:1019 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:1027 +#: part/models.py:1020 msgid "Default supplier part" msgstr "" -#: part/models.py:1034 +#: part/models.py:1027 msgid "Default Expiry" msgstr "" -#: part/models.py:1035 +#: part/models.py:1028 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:1044 +#: part/models.py:1037 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:1053 +#: part/models.py:1046 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1060 +#: part/models.py:1053 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1066 +#: part/models.py:1059 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1072 +#: part/models.py:1065 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1078 +#: part/models.py:1071 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1084 +#: part/models.py:1077 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1088 +#: part/models.py:1081 msgid "Is this part active?" msgstr "" -#: part/models.py:1094 +#: part/models.py:1087 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1100 +#: part/models.py:1093 msgid "BOM checksum" msgstr "" -#: part/models.py:1101 +#: part/models.py:1094 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1109 +#: part/models.py:1102 msgid "BOM checked by" msgstr "" -#: part/models.py:1114 +#: part/models.py:1107 msgid "BOM checked date" msgstr "" -#: part/models.py:1130 +#: part/models.py:1123 msgid "Creation User" msgstr "" -#: part/models.py:1140 +#: part/models.py:1133 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1145 part/templates/part/part_base.html:339 +#: part/models.py:1138 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2470 +#: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:2018 +#: part/models.py:2011 msgid "Sell multiple" msgstr "" -#: part/models.py:3037 +#: part/models.py:3002 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:3053 +#: part/models.py:3018 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:3054 +#: part/models.py:3019 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:3060 +#: part/models.py:3025 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3026 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:3067 +#: part/models.py:3032 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3033 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3074 +#: part/models.py:3039 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3040 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3046 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3047 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3053 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3054 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3060 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3096 +#: part/models.py:3061 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3102 +#: part/models.py:3067 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3103 +#: part/models.py:3068 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3109 +#: part/models.py:3074 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3110 +#: part/models.py:3075 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3116 +#: part/models.py:3081 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3117 +#: part/models.py:3082 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3124 +#: part/models.py:3089 msgid "Override minimum cost" msgstr "" -#: part/models.py:3131 +#: part/models.py:3096 msgid "Override maximum cost" msgstr "" -#: part/models.py:3138 +#: part/models.py:3103 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3145 +#: part/models.py:3110 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3151 +#: part/models.py:3116 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3152 +#: part/models.py:3117 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3158 +#: part/models.py:3123 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3159 +#: part/models.py:3124 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3165 +#: part/models.py:3130 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3131 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3172 +#: part/models.py:3137 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3138 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3192 +#: part/models.py:3157 msgid "Part for stocktake" msgstr "" -#: part/models.py:3197 +#: part/models.py:3162 msgid "Item Count" msgstr "" -#: part/models.py:3198 +#: part/models.py:3163 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3206 +#: part/models.py:3171 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3210 part/models.py:3293 +#: part/models.py:3175 part/models.py:3258 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report.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/part.js:1086 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" -#: part/models.py:3211 +#: part/models.py:3176 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3219 +#: part/models.py:3184 msgid "Additional notes" msgstr "" -#: part/models.py:3229 +#: part/models.py:3194 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3235 +#: part/models.py:3200 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3236 +#: part/models.py:3201 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3242 +#: part/models.py:3207 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3243 +#: part/models.py:3208 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3264 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3300 +#: part/models.py:3265 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3270 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3306 +#: part/models.py:3271 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3316 +#: part/models.py:3281 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3478 +#: part/models.py:3423 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3489 +#: part/models.py:3444 part/models.py:3608 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3455 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3500 +#: part/models.py:3466 msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3517 templates/js/translated/part.js:2878 +#: part/models.py:3483 templates/js/translated/part.js:2880 msgid "Test Name" msgstr "" -#: part/models.py:3518 +#: part/models.py:3484 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3524 +#: part/models.py:3490 msgid "Test Key" msgstr "" -#: part/models.py:3525 +#: part/models.py:3491 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3532 +#: part/models.py:3498 msgid "Test Description" msgstr "" -#: part/models.py:3533 +#: part/models.py:3499 msgid "Enter description for this test" msgstr "" -#: part/models.py:3537 report/models.py:208 -#: templates/js/translated/part.js:2899 +#: part/models.py:3503 report/models.py:209 +#: templates/js/translated/part.js:2901 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" -#: part/models.py:3537 +#: part/models.py:3503 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3542 templates/js/translated/part.js:2907 +#: part/models.py:3508 templates/js/translated/part.js:2909 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3543 +#: part/models.py:3509 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3548 templates/js/translated/part.js:2915 +#: part/models.py:3514 templates/js/translated/part.js:2917 msgid "Requires Value" msgstr "" -#: part/models.py:3549 +#: part/models.py:3515 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3554 templates/js/translated/part.js:2922 +#: part/models.py:3520 templates/js/translated/part.js:2924 msgid "Requires Attachment" msgstr "" -#: part/models.py:3556 +#: part/models.py:3522 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3603 +#: part/models.py:3528 part/models.py:3667 templates/js/translated/part.js:1637 +msgid "Choices" +msgstr "" + +#: part/models.py:3529 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3583 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3608 +#: part/models.py:3588 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3628 -msgid "Choices must be unique" -msgstr "" - -#: part/models.py:3645 +#: part/models.py:3625 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3660 +#: part/models.py:3640 msgid "Parameter Name" msgstr "" -#: part/models.py:3667 +#: part/models.py:3647 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3675 +#: part/models.py:3655 msgid "Parameter description" msgstr "" -#: part/models.py:3681 templates/js/translated/part.js:1627 +#: part/models.py:3661 templates/js/translated/part.js:1628 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "" -#: part/models.py:3682 +#: part/models.py:3662 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3687 templates/js/translated/part.js:1636 -msgid "Choices" -msgstr "" - -#: part/models.py:3688 +#: part/models.py:3668 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3765 +#: part/models.py:3745 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3808 +#: part/models.py:3788 msgid "Parent Part" msgstr "" -#: part/models.py:3816 part/models.py:3917 part/models.py:3918 +#: part/models.py:3796 part/models.py:3897 part/models.py:3898 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3821 +#: part/models.py:3801 msgid "Data" msgstr "" -#: part/models.py:3822 +#: part/models.py:3802 msgid "Parameter Value" msgstr "" -#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3904 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3925 +#: part/models.py:3905 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3963 +#: part/models.py:3943 msgid "Part ID or part name" msgstr "" -#: part/models.py:3964 +#: part/models.py:3944 msgid "Unique part ID value" msgstr "" -#: part/models.py:3966 +#: part/models.py:3946 msgid "Part IPN value" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "Level" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "BOM level" msgstr "" -#: part/models.py:4057 +#: part/models.py:4037 msgid "Select parent part" msgstr "" -#: part/models.py:4067 +#: part/models.py:4047 msgid "Sub part" msgstr "" -#: part/models.py:4068 +#: part/models.py:4048 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4079 +#: part/models.py:4059 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4085 +#: part/models.py:4065 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4091 +#: part/models.py:4071 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4098 part/templates/part/upload_bom.html:55 +#: part/models.py:4078 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4099 +#: part/models.py:4079 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4106 +#: part/models.py:4086 msgid "BOM item reference" msgstr "" -#: part/models.py:4114 +#: part/models.py:4094 msgid "BOM item notes" msgstr "" -#: part/models.py:4120 +#: part/models.py:4100 msgid "Checksum" msgstr "" -#: part/models.py:4121 +#: part/models.py:4101 msgid "BOM line checksum" msgstr "" -#: part/models.py:4126 templates/js/translated/table_filters.js:174 +#: part/models.py:4106 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4127 +#: part/models.py:4107 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4132 part/templates/part/upload_bom.html:57 +#: part/models.py:4112 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:4133 +#: part/models.py:4113 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4138 part/templates/part/upload_bom.html:56 +#: part/models.py:4118 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4139 +#: part/models.py:4119 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4224 stock/models.py:664 +#: part/models.py:4204 stock/models.py:662 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4234 part/models.py:4236 +#: part/models.py:4214 part/models.py:4216 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4376 +#: part/models.py:4354 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4397 +#: part/models.py:4375 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4410 +#: part/models.py:4388 msgid "Parent BOM item" msgstr "" -#: part/models.py:4418 +#: part/models.py:4396 msgid "Substitute part" msgstr "" -#: part/models.py:4434 +#: part/models.py:4412 msgid "Part 1" msgstr "" -#: part/models.py:4442 +#: part/models.py:4420 msgid "Part 2" msgstr "" -#: part/models.py:4443 +#: part/models.py:4421 msgid "Select Related Part" msgstr "" -#: part/models.py:4462 +#: part/models.py:4440 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4467 +#: part/models.py:4445 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:119 part/serializers.py:141 +#: part/serializers.py:118 +msgid "Parent Category" +msgstr "" + +#: part/serializers.py:119 templates/js/translated/part.js:309 +msgid "Parent part category" +msgstr "" + +#: part/serializers.py:126 part/serializers.py:148 #: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/serializers.py:185 +#: part/serializers.py:180 msgid "Results" msgstr "" -#: part/serializers.py:186 +#: part/serializers.py:181 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 +#: part/serializers.py:205 part/serializers.py:223 stock/serializers.py:562 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:273 +#: part/serializers.py:268 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:397 +#: part/serializers.py:392 msgid "No parts selected" msgstr "" -#: part/serializers.py:407 +#: part/serializers.py:402 msgid "Select category" msgstr "" -#: part/serializers.py:442 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:443 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:448 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:449 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:455 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:456 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:463 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:488 +#: part/serializers.py:483 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:490 +#: part/serializers.py:485 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:497 +#: part/serializers.py:492 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:493 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:510 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:531 +#: part/serializers.py:526 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:541 +#: part/serializers.py:536 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:548 +#: part/serializers.py:543 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:557 +#: part/serializers.py:552 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:568 +#: part/serializers.py:563 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:575 +#: part/serializers.py:570 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:834 msgid "External Stock" msgstr "" -#: part/serializers.py:840 +#: part/serializers.py:836 msgid "Unallocated Stock" msgstr "" -#: part/serializers.py:843 +#: part/serializers.py:839 msgid "Variant Stock" msgstr "" -#: part/serializers.py:873 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:471 +#: part/serializers.py:869 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:472 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:870 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:880 templates/js/translated/part.js:102 +#: part/serializers.py:876 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:881 +#: part/serializers.py:877 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:887 +#: part/serializers.py:883 msgid "Supplier Information" msgstr "" -#: part/serializers.py:888 +#: part/serializers.py:884 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:896 +#: part/serializers.py:892 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:897 +#: part/serializers.py:893 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:902 +#: part/serializers.py:898 msgid "Existing Image" msgstr "" -#: part/serializers.py:903 +#: part/serializers.py:899 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:920 +#: part/serializers.py:916 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1126 +#: part/serializers.py:1122 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1136 +#: part/serializers.py:1132 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1146 +#: part/serializers.py:1142 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1152 +#: part/serializers.py:1148 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1153 +#: part/serializers.py:1149 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1158 +#: part/serializers.py:1154 msgid "Generate Report" msgstr "" -#: part/serializers.py:1159 +#: part/serializers.py:1155 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1164 +#: part/serializers.py:1160 msgid "Update Parts" msgstr "" -#: part/serializers.py:1165 +#: part/serializers.py:1161 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1173 +#: part/serializers.py:1169 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1279 +#: part/serializers.py:1275 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1286 +#: part/serializers.py:1282 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1294 +#: part/serializers.py:1290 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1301 +#: part/serializers.py:1297 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1330 +#: part/serializers.py:1326 msgid "Update" msgstr "" -#: part/serializers.py:1331 +#: part/serializers.py:1327 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1354 +#: part/serializers.py:1350 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1361 +#: part/serializers.py:1357 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1364 +#: part/serializers.py:1360 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1727 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1739 +#: part/serializers.py:1735 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1740 +#: part/serializers.py:1736 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1745 +#: part/serializers.py:1741 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1746 +#: part/serializers.py:1742 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1747 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1752 +#: part/serializers.py:1748 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1757 +#: part/serializers.py:1753 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1758 +#: part/serializers.py:1754 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1792 +#: part/serializers.py:1788 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1793 +#: part/serializers.py:1789 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1823 +#: part/serializers.py:1819 msgid "No part column specified" msgstr "" -#: part/serializers.py:1867 +#: part/serializers.py:1863 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1870 +#: part/serializers.py:1866 msgid "No matching part found" msgstr "" -#: part/serializers.py:1873 +#: part/serializers.py:1869 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1882 +#: part/serializers.py:1878 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1890 +#: part/serializers.py:1886 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1911 +#: part/serializers.py:1907 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 +#: part/stocktake.py:225 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "" -#: part/stocktake.py:225 +#: part/stocktake.py:226 msgid "Total Cost Min" msgstr "" -#: part/stocktake.py:226 +#: part/stocktake.py:227 msgid "Total Cost Max" msgstr "" -#: part/stocktake.py:284 +#: part/stocktake.py:285 msgid "Stocktake Report Available" msgstr "" -#: part/stocktake.py:285 +#: part/stocktake.py:286 msgid "A new stocktake report is available for download" msgstr "" @@ -7151,7 +7227,7 @@ 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 +#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" @@ -7251,15 +7327,15 @@ msgstr "" msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:655 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:663 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:748 +#: part/templates/part/detail.html:750 msgid "Add Test Result Template" msgstr "" @@ -7340,7 +7416,7 @@ msgstr "" msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" msgstr "" @@ -7412,7 +7488,7 @@ 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:2443 +#: templates/js/translated/part.js:1265 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7505,8 +7581,8 @@ msgstr "" #: 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:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/part.js:1243 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 #: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7549,7 +7625,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:247 +#: part/templates/part/prices.html:28 stock/admin.py:251 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 @@ -7626,8 +7702,8 @@ msgstr "" #: part/templates/part/stock_count.html:7 #: templates/js/translated/model_renderers.js:227 -#: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 -#: templates/js/translated/part.js:2142 +#: templates/js/translated/part.js:705 templates/js/translated/part.js:2141 +#: templates/js/translated/part.js:2143 msgid "No Stock" msgstr "" @@ -7999,7 +8075,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:308 msgid "Landscape" msgstr "" @@ -8112,62 +8188,62 @@ msgstr "" msgid "Uninstalled plugin successfully" msgstr "" -#: plugin/models.py:35 +#: plugin/models.py:36 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:36 +#: plugin/models.py:37 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:42 users/models.py:100 +#: plugin/models.py:43 users/models.py:100 msgid "Key" msgstr "" -#: plugin/models.py:43 +#: plugin/models.py:44 msgid "Key of plugin" msgstr "" -#: plugin/models.py:51 +#: plugin/models.py:52 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:58 plugin/serializers.py:90 +#: plugin/models.py:59 plugin/serializers.py:90 msgid "Package Name" msgstr "" -#: plugin/models.py:60 +#: plugin/models.py:61 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:65 +#: plugin/models.py:66 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:156 templates/js/translated/table_filters.js:370 +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "" -#: plugin/models.py:165 +#: plugin/models.py:166 msgid "Sample plugin" msgstr "" -#: plugin/models.py:173 +#: plugin/models.py:174 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:181 +#: plugin/models.py:182 msgid "Package Plugin" msgstr "" -#: plugin/models.py:205 report/models.py:474 +#: plugin/models.py:220 report/models.py:475 #: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:252 +#: plugin/models.py:267 msgid "Method" msgstr "" @@ -8175,17 +8251,17 @@ msgstr "" msgid "No author found" msgstr "" -#: plugin/registry.py:597 +#: plugin/registry.py:534 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:600 +#: plugin/registry.py:537 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:602 +#: plugin/registry.py:539 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -8300,23 +8376,19 @@ msgstr "" msgid "Activate this plugin" msgstr "" -#: plugin/serializers.py:234 +#: plugin/serializers.py:226 msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:235 +#: plugin/serializers.py:227 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:77 +#: report/api.py:88 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:89 report/serializers.py:53 -msgid "Model Type" -msgstr "" - -#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/api.py:103 report/models.py:439 report/serializers.py:98 #: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 #: templates/js/translated/return_order.js:353 #: templates/js/translated/sales_order.js:887 @@ -8324,176 +8396,176 @@ msgstr "" msgid "Items" msgstr "" -#: report/api.py:168 +#: report/api.py:180 msgid "Plugin not found" msgstr "" -#: report/api.py:170 +#: report/api.py:182 msgid "Plugin is not active" msgstr "" -#: report/api.py:172 +#: report/api.py:184 msgid "Plugin does not support label printing" msgstr "" -#: report/api.py:221 +#: report/api.py:233 msgid "Invalid label dimensions" msgstr "" -#: report/api.py:236 report/api.py:316 +#: report/api.py:248 report/api.py:329 msgid "No valid items provided to template" msgstr "" -#: report/api.py:271 +#: report/api.py:283 msgid "Error printing label" msgstr "" -#: report/api.py:362 report/api.py:398 +#: report/api.py:375 report/api.py:411 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/helpers.py:41 +#: report/helpers.py:43 msgid "A4" msgstr "" -#: report/helpers.py:42 +#: report/helpers.py:44 msgid "A3" msgstr "" -#: report/helpers.py:43 +#: report/helpers.py:45 msgid "Legal" msgstr "" -#: report/helpers.py:44 +#: report/helpers.py:46 msgid "Letter" msgstr "" -#: report/models.py:118 +#: report/models.py:119 msgid "Template file with this name already exists" msgstr "" -#: report/models.py:150 +#: report/models.py:151 msgid "Template name" msgstr "" -#: report/models.py:156 +#: report/models.py:157 msgid "Template description" msgstr "" -#: report/models.py:162 +#: report/models.py:163 msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Filename Pattern" msgstr "" -#: report/models.py:203 +#: report/models.py:204 msgid "Pattern for generating filenames" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Template is enabled" msgstr "" -#: report/models.py:214 +#: report/models.py:215 msgid "Target model type for template" msgstr "" -#: report/models.py:234 +#: report/models.py:235 msgid "Filters" msgstr "" -#: report/models.py:235 +#: report/models.py:236 msgid "Template query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:294 report/models.py:361 +#: report/models.py:295 report/models.py:362 msgid "Template file" msgstr "" -#: report/models.py:302 +#: report/models.py:303 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:308 +#: report/models.py:309 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:367 +#: report/models.py:368 msgid "Width [mm]" msgstr "" -#: report/models.py:368 +#: report/models.py:369 msgid "Label width, specified in mm" msgstr "" -#: report/models.py:374 +#: report/models.py:375 msgid "Height [mm]" msgstr "" -#: report/models.py:375 +#: report/models.py:376 msgid "Label height, specified in mm" msgstr "" -#: report/models.py:438 +#: report/models.py:439 msgid "Number of items to process" msgstr "" -#: report/models.py:444 +#: report/models.py:445 msgid "Report generation is complete" msgstr "" -#: report/models.py:448 templates/js/translated/build.js:2177 +#: report/models.py:449 templates/js/translated/build.js:2177 msgid "Progress" msgstr "" -#: report/models.py:448 +#: report/models.py:449 msgid "Report generation progress" msgstr "" -#: report/models.py:456 +#: report/models.py:457 msgid "Report Template" msgstr "" -#: report/models.py:463 report/models.py:486 +#: report/models.py:464 report/models.py:487 msgid "Output File" msgstr "" -#: report/models.py:464 report/models.py:487 +#: report/models.py:465 report/models.py:488 msgid "Generated output file" msgstr "" -#: report/models.py:475 +#: report/models.py:476 msgid "Label output plugin" msgstr "" -#: report/models.py:479 +#: report/models.py:480 msgid "Label Template" msgstr "" -#: report/models.py:502 +#: report/models.py:503 msgid "Snippet" msgstr "" -#: report/models.py:503 +#: report/models.py:504 msgid "Report snippet file" msgstr "" -#: report/models.py:510 +#: report/models.py:511 msgid "Snippet file description" msgstr "" -#: report/models.py:528 +#: report/models.py:529 msgid "Asset" msgstr "" -#: report/models.py:529 +#: report/models.py:530 msgid "Report asset file" msgstr "" -#: report/models.py:536 +#: report/models.py:537 msgid "Asset file description" msgstr "" @@ -8566,8 +8638,8 @@ msgid "Total" msgstr "" #: report/templates/report/inventree_return_order_report.html:25 -#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 -#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:824 +#: stock/serializers.py:149 stock/templates/stock/item_base.html:311 #: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 #: templates/js/translated/build.js:2355 #: templates/js/translated/model_renderers.js:230 @@ -8597,32 +8669,32 @@ msgstr "" msgid "Test" msgstr "" -#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2412 msgid "Result" msgstr "" -#: report/templates/report/inventree_test_report.html:130 +#: report/templates/report/inventree_test_report.html:129 msgid "Pass" msgstr "" -#: report/templates/report/inventree_test_report.html:132 +#: report/templates/report/inventree_test_report.html:131 msgid "Fail" msgstr "" -#: report/templates/report/inventree_test_report.html:139 +#: report/templates/report/inventree_test_report.html:138 msgid "No result (required)" msgstr "" -#: report/templates/report/inventree_test_report.html:141 +#: report/templates/report/inventree_test_report.html:140 msgid "No result" msgstr "" -#: report/templates/report/inventree_test_report.html:154 +#: report/templates/report/inventree_test_report.html:153 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "" -#: report/templates/report/inventree_test_report.html:168 stock/admin.py:162 +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 #: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 #: templates/js/translated/stock.js:3110 msgid "Serial" @@ -8644,654 +8716,670 @@ msgstr "" msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:172 +#: stock/admin.py:51 stock/admin.py:171 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:176 +#: stock/admin.py:53 stock/admin.py:175 msgid "Location Name" msgstr "" -#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/admin.py:63 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:149 +#: stock/admin.py:148 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:168 +#: stock/admin.py:167 msgid "Status Code" msgstr "" -#: stock/admin.py:180 +#: stock/admin.py:179 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:185 +#: stock/admin.py:184 +msgid "Supplier Part SKU" +msgstr "" + +#: stock/admin.py:189 msgid "Supplier ID" msgstr "" -#: stock/admin.py:191 +#: stock/admin.py:195 msgid "Supplier Name" msgstr "" -#: stock/admin.py:196 +#: stock/admin.py:200 msgid "Customer ID" msgstr "" -#: stock/admin.py:201 stock/models.py:806 +#: stock/admin.py:205 stock/models.py:804 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:206 +#: stock/admin.py:210 msgid "Build ID" msgstr "" -#: stock/admin.py:216 +#: stock/admin.py:220 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:221 +#: stock/admin.py:225 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:236 +#: stock/admin.py:240 msgid "Review Needed" msgstr "" -#: stock/admin.py:241 +#: stock/admin.py:245 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:256 stock/models.py:900 +#: stock/admin.py:260 stock/models.py:898 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "" -#: stock/api.py:318 +#: stock/api.py:312 msgid "Filter by location depth" msgstr "" -#: stock/api.py:338 +#: stock/api.py:332 +msgid "Filter by top-level locations" +msgstr "" + +#: stock/api.py:347 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:359 +#: stock/api.py:369 stock/serializers.py:1085 msgid "Parent Location" msgstr "" -#: stock/api.py:360 +#: stock/api.py:370 msgid "Filter by parent location" msgstr "" -#: stock/api.py:615 templates/js/translated/table_filters.js:427 +#: stock/api.py:625 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:803 +#: stock/api.py:813 msgid "Part Tree" msgstr "" -#: stock/api.py:833 +#: stock/api.py:843 msgid "Expiry date before" msgstr "" -#: stock/api.py:837 +#: stock/api.py:847 msgid "Expiry date after" msgstr "" -#: stock/api.py:840 stock/templates/stock/item_base.html:439 +#: stock/api.py:850 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:927 +#: stock/api.py:937 msgid "Quantity is required" msgstr "" -#: stock/api.py:933 +#: stock/api.py:943 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:964 +#: stock/api.py:974 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:974 +#: stock/api.py:984 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:1005 +#: stock/api.py:1015 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:59 +#: stock/models.py:60 msgid "Stock Location type" msgstr "" -#: stock/models.py:60 +#: stock/models.py:61 msgid "Stock Location types" msgstr "" -#: stock/models.py:86 +#: stock/models.py:87 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:123 stock/models.py:788 +#: stock/models.py:124 stock/models.py:786 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:124 stock/templates/stock/location.html:186 +#: stock/models.py:125 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "" -#: stock/models.py:166 stock/models.py:949 +#: stock/models.py:167 stock/models.py:947 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:167 stock/models.py:950 +#: stock/models.py:168 stock/models.py:948 msgid "Select Owner" msgstr "" -#: stock/models.py:175 +#: stock/models.py:176 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:182 templates/js/translated/stock.js:2781 +#: stock/models.py:183 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:183 +#: stock/models.py:184 msgid "This is an external stock location" msgstr "" -#: stock/models.py:189 templates/js/translated/stock.js:2790 +#: stock/models.py:190 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" -#: stock/models.py:193 +#: stock/models.py:194 msgid "Stock location type of this location" msgstr "" -#: stock/models.py:262 +#: stock/models.py:261 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:643 +#: stock/models.py:641 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:670 stock/serializers.py:419 +#: stock/models.py:668 stock/serializers.py:446 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:687 +#: stock/models.py:685 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:697 stock/models.py:710 +#: stock/models.py:695 stock/models.py:708 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:700 +#: stock/models.py:698 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:724 +#: stock/models.py:722 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:729 +#: stock/models.py:727 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:742 +#: stock/models.py:740 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:758 +#: stock/models.py:756 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:770 +#: stock/models.py:768 msgid "Base part" msgstr "" -#: stock/models.py:780 +#: stock/models.py:778 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:792 +#: stock/models.py:790 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:800 stock/serializers.py:1480 +#: stock/models.py:798 stock/serializers.py:1476 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:811 +#: stock/models.py:809 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:830 +#: stock/models.py:828 msgid "Serial number for this item" msgstr "" -#: stock/models.py:844 stock/serializers.py:1463 +#: stock/models.py:842 stock/serializers.py:1459 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:849 +#: stock/models.py:847 msgid "Stock Quantity" msgstr "" -#: stock/models.py:859 +#: stock/models.py:857 msgid "Source Build" msgstr "" -#: stock/models.py:862 +#: stock/models.py:860 msgid "Build for this stock item" msgstr "" -#: stock/models.py:869 stock/templates/stock/item_base.html:363 +#: stock/models.py:867 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:872 +#: stock/models.py:870 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:881 +#: stock/models.py:879 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:885 +#: stock/models.py:883 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:891 +#: stock/models.py:889 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:902 +#: stock/models.py:900 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:920 +#: stock/models.py:918 msgid "Delete on deplete" msgstr "" -#: stock/models.py:921 +#: stock/models.py:919 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:941 +#: stock/models.py:939 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:972 +#: stock/models.py:970 msgid "Converted to part" msgstr "" -#: stock/models.py:1490 +#: stock/models.py:1486 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1496 +#: stock/models.py:1492 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1500 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1510 +#: stock/models.py:1506 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1515 +#: stock/models.py:1511 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1523 stock/serializers.py:658 +#: stock/models.py:1519 stock/serializers.py:660 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1620 +#: stock/models.py:1616 msgid "Test template does not exist" msgstr "" -#: stock/models.py:1638 +#: stock/models.py:1634 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1642 +#: stock/models.py:1638 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1645 +#: stock/models.py:1641 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1648 +#: stock/models.py:1644 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1651 +#: stock/models.py:1647 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1654 +#: stock/models.py:1650 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1661 stock/serializers.py:1369 +#: stock/models.py:1657 stock/serializers.py:1365 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1665 +#: stock/models.py:1661 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1673 +#: stock/models.py:1669 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1678 +#: stock/models.py:1674 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1905 +#: stock/models.py:1901 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2310 msgid "Entry notes" msgstr "" -#: stock/models.py:2391 +#: stock/models.py:2378 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2396 +#: stock/models.py:2383 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2423 +#: stock/models.py:2388 +msgid "Invalid value for this test" +msgstr "" + +#: stock/models.py:2412 msgid "Test result" msgstr "" -#: stock/models.py:2430 +#: stock/models.py:2419 msgid "Test output value" msgstr "" -#: stock/models.py:2438 +#: stock/models.py:2427 msgid "Test result attachment" msgstr "" -#: stock/models.py:2442 +#: stock/models.py:2431 msgid "Test notes" msgstr "" -#: stock/models.py:2450 templates/js/translated/stock.js:1548 +#: stock/models.py:2439 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2440 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2457 +#: stock/models.py:2446 msgid "Started" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2447 msgid "The timestamp of the test start" msgstr "" -#: stock/models.py:2464 +#: stock/models.py:2453 msgid "Finished" msgstr "" -#: stock/models.py:2465 +#: stock/models.py:2454 msgid "The timestamp of the test finish" msgstr "" -#: stock/serializers.py:75 +#: stock/serializers.py:74 msgid "Generated batch code" msgstr "" -#: stock/serializers.py:84 +#: stock/serializers.py:83 msgid "Select build order" msgstr "" -#: stock/serializers.py:93 +#: stock/serializers.py:92 msgid "Select stock item to generate batch code for" msgstr "" -#: stock/serializers.py:102 +#: stock/serializers.py:101 msgid "Select location to generate batch code for" msgstr "" -#: stock/serializers.py:111 +#: stock/serializers.py:110 msgid "Select part to generate batch code for" msgstr "" -#: stock/serializers.py:120 +#: stock/serializers.py:119 msgid "Select purchase order" msgstr "" -#: stock/serializers.py:127 +#: stock/serializers.py:126 msgid "Enter quantity for batch code" msgstr "" -#: stock/serializers.py:150 +#: stock/serializers.py:149 msgid "Generated serial number" msgstr "" -#: stock/serializers.py:159 +#: stock/serializers.py:158 msgid "Select part to generate serial number for" msgstr "" -#: stock/serializers.py:167 +#: stock/serializers.py:166 msgid "Quantity of serial numbers to generate" msgstr "" -#: stock/serializers.py:229 +#: stock/serializers.py:228 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:248 +#: stock/serializers.py:247 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:280 +#: stock/serializers.py:279 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:313 +#: stock/serializers.py:315 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:411 +#: stock/serializers.py:438 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:531 +#: stock/serializers.py:558 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:595 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:606 +#: stock/serializers.py:608 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:613 +#: stock/serializers.py:615 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 +#: stock/serializers.py:626 stock/serializers.py:1322 stock/serializers.py:1578 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:631 +#: stock/serializers.py:633 msgid "Optional note field" msgstr "" -#: stock/serializers.py:641 +#: stock/serializers.py:643 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:696 +#: stock/serializers.py:698 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:703 +#: stock/serializers.py:705 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:704 +#: stock/serializers.py:706 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 -#: stock/serializers.py:935 +#: stock/serializers.py:711 stock/serializers.py:791 stock/serializers.py:887 +#: stock/serializers.py:937 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:719 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:725 +#: stock/serializers.py:727 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:736 +#: stock/serializers.py:738 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:749 +#: stock/serializers.py:751 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:784 +#: stock/serializers.py:786 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:819 +#: stock/serializers.py:821 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:834 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:849 +#: stock/serializers.py:851 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:880 +#: stock/serializers.py:882 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:917 +#: stock/serializers.py:919 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:923 +#: stock/serializers.py:925 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:1019 stock/serializers.py:1082 +#: stock/serializers.py:1021 stock/serializers.py:1093 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:220 +#: stock/templates/stock/location.html:222 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1198 +#: stock/serializers.py:1086 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: stock/serializers.py:1194 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1202 +#: stock/serializers.py:1198 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1206 +#: stock/serializers.py:1202 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1230 +#: stock/serializers.py:1226 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1236 +#: stock/serializers.py:1232 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1244 +#: stock/serializers.py:1240 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1254 stock/serializers.py:1508 +#: stock/serializers.py:1250 stock/serializers.py:1504 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1333 +#: stock/serializers.py:1329 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1338 +#: stock/serializers.py:1334 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1339 +#: stock/serializers.py:1335 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1344 +#: stock/serializers.py:1340 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1345 +#: stock/serializers.py:1341 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1355 +#: stock/serializers.py:1351 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1422 +#: stock/serializers.py:1418 msgid "No Change" msgstr "" -#: stock/serializers.py:1451 +#: stock/serializers.py:1447 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1470 +#: stock/serializers.py:1466 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1498 +#: stock/serializers.py:1494 msgid "Stock transaction notes" msgstr "" @@ -9444,7 +9532,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276 msgid "Delete Test Data" msgstr "" @@ -9464,11 +9552,11 @@ msgstr "" msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:272 +#: stock/templates/stock/item.html:264 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "" @@ -9754,28 +9842,28 @@ msgstr "" msgid "Location Type" msgstr "" -#: stock/templates/stock/location.html:224 +#: stock/templates/stock/location.html:226 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:225 +#: stock/templates/stock/location.html:227 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:295 +#: stock/templates/stock/location.html:299 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:317 +#: stock/templates/stock/location.html:321 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:390 +#: stock/templates/stock/location.html:394 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:401 +#: stock/templates/stock/location.html:405 msgid "Link Barcode to Stock Location" msgstr "" @@ -10199,20 +10287,20 @@ msgstr "" msgid "Pricing Settings" msgstr "" -#: templates/InvenTree/settings/pricing.html:34 +#: templates/InvenTree/settings/pricing.html:35 msgid "Exchange Rates" msgstr "" -#: templates/InvenTree/settings/pricing.html:38 +#: templates/InvenTree/settings/pricing.html:39 msgid "Update Now" msgstr "" -#: templates/InvenTree/settings/pricing.html:46 -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 msgid "Last Update" msgstr "" -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:51 msgid "Never" msgstr "" @@ -10269,8 +10357,8 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:547 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 +#: templates/js/translated/part.js:393 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:402 msgid "Delete" msgstr "" @@ -10310,12 +10398,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 -#: templates/js/translated/part.js:1645 +#: templates/js/translated/part.js:1646 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 -#: templates/js/translated/part.js:1646 +#: templates/js/translated/part.js:1647 msgid "Delete Template" msgstr "" @@ -10705,7 +10793,7 @@ msgid "Submit Bug Report" msgstr "" #: templates/about.html:91 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 +#: templates/js/translated/helpers.js:589 msgid "copy to clipboard" msgstr "" @@ -10769,7 +10857,7 @@ 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 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45 msgid "Return to Site" msgstr "" @@ -10883,15 +10971,19 @@ msgstr "" msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "" -#: templates/allauth_2fa/setup.html:23 +#: templates/allauth_2fa/setup.html:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 msgid "Step 2" msgstr "" -#: templates/allauth_2fa/setup.html:27 +#: templates/allauth_2fa/setup.html:28 msgid "Input a token generated by the app:" msgstr "" -#: templates/allauth_2fa/setup.html:37 +#: templates/allauth_2fa/setup.html:38 msgid "Verify" msgstr "" @@ -10970,7 +11062,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3217 +#: templates/js/translated/part.js:3219 msgid "Minimum Quantity" msgstr "" @@ -11058,27 +11150,27 @@ msgstr "" msgid "Delete attachments" msgstr "" -#: templates/js/translated/attachment.js:253 +#: templates/js/translated/attachment.js:260 msgid "Attachment actions" msgstr "" -#: templates/js/translated/attachment.js:275 +#: templates/js/translated/attachment.js:294 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:315 +#: templates/js/translated/attachment.js:334 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:365 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:366 +#: templates/js/translated/attachment.js:385 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:374 +#: templates/js/translated/attachment.js:393 msgid "Delete attachment" msgstr "" @@ -11359,7 +11451,7 @@ msgid "Includes variant and substitute stock" msgstr "" #: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 -#: templates/js/translated/part.js:1256 +#: templates/js/translated/part.js:1257 #: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" @@ -11686,7 +11778,7 @@ msgstr "" #: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 #: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 -#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11729,8 +11821,8 @@ msgstr "" msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 -#: templates/js/translated/part.js:1202 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:791 +#: templates/js/translated/part.js:1203 msgid "Trackable part" msgstr "" @@ -11916,7 +12008,7 @@ msgid "Delete Parameters" msgstr "" #: templates/js/translated/company.js:1191 -#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2244 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2245 msgid "Order parts" msgstr "" @@ -11933,34 +12025,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:1279 -#: templates/js/translated/company.js:1567 templates/js/translated/part.js:798 -#: templates/js/translated/part.js:1210 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Template part" msgstr "" #: templates/js/translated/company.js:1283 -#: templates/js/translated/company.js:1571 templates/js/translated/part.js:802 -#: templates/js/translated/part.js:1214 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:803 +#: templates/js/translated/part.js:1215 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1464 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1465 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1527 +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1528 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1528 +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1529 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1433 +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1434 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1549 +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1550 msgid "Delete Parameter" msgstr "" @@ -12094,23 +12186,23 @@ msgstr "" msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2499 +#: templates/js/translated/forms.js:2500 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3113 +#: templates/js/translated/forms.js:3114 msgid "Select Columns" msgstr "" @@ -12211,7 +12303,7 @@ msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 -#: templates/js/translated/part.js:1604 +#: templates/js/translated/part.js:1605 msgid "ID" msgstr "" @@ -12292,347 +12384,343 @@ msgstr "" 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 +#: templates/js/translated/part.js:333 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:355 +#: templates/js/translated/part.js:356 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:356 +#: templates/js/translated/part.js:357 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:370 +#: templates/js/translated/part.js:371 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:383 +#: templates/js/translated/part.js:384 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:388 +#: templates/js/translated/part.js:389 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:397 +#: templates/js/translated/part.js:398 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:401 +#: templates/js/translated/part.js:402 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:406 +#: templates/js/translated/part.js:407 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:430 +#: templates/js/translated/part.js:431 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:432 +#: templates/js/translated/part.js:433 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:433 +#: templates/js/translated/part.js:434 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:462 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:463 +#: templates/js/translated/part.js:464 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:474 +#: templates/js/translated/part.js:475 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:531 +#: templates/js/translated/part.js:532 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:532 +#: templates/js/translated/part.js:533 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:546 +#: templates/js/translated/part.js:547 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:548 +#: templates/js/translated/part.js:549 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:549 +#: templates/js/translated/part.js:550 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:550 +#: templates/js/translated/part.js:551 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:557 +#: templates/js/translated/part.js:558 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:593 +#: templates/js/translated/part.js:594 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:595 +#: templates/js/translated/part.js:596 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:600 +#: templates/js/translated/part.js:601 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:602 +#: templates/js/translated/part.js:603 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:619 +#: templates/js/translated/part.js:620 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:629 +#: templates/js/translated/part.js:630 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:632 +#: templates/js/translated/part.js:633 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:657 +#: templates/js/translated/part.js:658 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:685 +#: templates/js/translated/part.js:686 #: templates/js/translated/table_filters.js:747 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:688 +#: templates/js/translated/part.js:689 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:748 +#: templates/js/translated/part.js:749 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:771 +#: templates/js/translated/part.js:772 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +#: templates/js/translated/part.js:795 templates/js/translated/part.js:1207 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:806 +#: templates/js/translated/part.js:807 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:810 +#: templates/js/translated/part.js:811 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:897 +#: templates/js/translated/part.js:898 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:901 +#: templates/js/translated/part.js:902 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1050 +#: templates/js/translated/part.js:1051 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1145 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +#: templates/js/translated/part.js:1113 templates/js/translated/part.js:1155 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1281 +#: templates/js/translated/part.js:1282 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1599 +#: templates/js/translated/part.js:1600 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1662 +#: templates/js/translated/part.js:1663 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1674 +#: templates/js/translated/part.js:1675 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1682 +#: templates/js/translated/part.js:1683 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1716 +#: templates/js/translated/part.js:1717 #: templates/js/translated/purchase_order.js:1654 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1860 +#: templates/js/translated/part.js:1861 #: templates/js/translated/purchase_order.js:2153 #: templates/js/translated/return_order.js:755 #: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1906 +#: templates/js/translated/part.js:1907 #: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1970 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1991 +#: templates/js/translated/part.js:1992 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 +#: templates/js/translated/part.js:2080 templates/js/translated/part.js:2506 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2200 +#: templates/js/translated/part.js:2201 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2205 +#: templates/js/translated/part.js:2206 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2235 +#: templates/js/translated/part.js:2236 msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2286 +#: templates/js/translated/part.js:2287 msgid "part" msgstr "" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2288 msgid "parts" msgstr "" -#: templates/js/translated/part.js:2383 +#: templates/js/translated/part.js:2384 msgid "No category" msgstr "" -#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2546 +#: templates/js/translated/part.js:2547 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2644 +#: templates/js/translated/part.js:2645 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2760 +#: templates/js/translated/part.js:2761 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2776 +#: templates/js/translated/part.js:2777 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2865 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2887 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/part.js:2938 templates/js/translated/stock.js:1457 #: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2940 +#: templates/js/translated/part.js:2942 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2956 +#: templates/js/translated/part.js:2958 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2970 +#: templates/js/translated/part.js:2972 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3051 templates/js/translated/part.js:3052 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3052 +#: templates/js/translated/part.js:3054 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3058 +#: templates/js/translated/part.js:3060 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3108 +#: templates/js/translated/part.js:3110 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3114 +#: templates/js/translated/part.js:3116 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3210 +#: templates/js/translated/part.js:3212 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3226 +#: templates/js/translated/part.js:3228 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3271 +#: templates/js/translated/part.js:3273 msgid "Minimum Stock Level" msgstr "" @@ -13240,10 +13328,6 @@ msgstr "" 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 "" @@ -13412,7 +13496,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:401 +#: templates/js/translated/stock.js:1042 users/models.py:392 msgid "Add" msgstr "" @@ -14303,34 +14387,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:384 +#: users/models.py:375 msgid "Permission set" msgstr "" -#: users/models.py:393 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "View" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "Permission to view items" msgstr "" -#: users/models.py:401 +#: users/models.py:392 msgid "Permission to add items" msgstr "" -#: users/models.py:405 +#: users/models.py:396 msgid "Change" msgstr "" -#: users/models.py:407 +#: users/models.py:398 msgid "Permissions to edit items" msgstr "" -#: users/models.py:413 +#: users/models.py:404 msgid "Permission to delete items" msgstr "" + diff --git a/src/backend/InvenTree/locale/vi/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/vi/LC_MESSAGES/django.po index b6b2641167..f308c98d48 100644 --- a/src/backend/InvenTree/locale/vi/LC_MESSAGES/django.po +++ b/src/backend/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-05-31 07:08+0000\n" -"PO-Revision-Date: 2024-05-27 11:55\n" +"POT-Creation-Date: 2024-06-26 03:18+0000\n" +"PO-Revision-Date: 2024-06-26 06:04\n" "Last-Translator: \n" "Language-Team: Vietnamese\n" "Language: vi_VN\n" @@ -21,7 +21,7 @@ msgstr "" msgid "API endpoint not found" msgstr "API endpoint không tồn tại" -#: InvenTree/api.py:536 +#: InvenTree/api.py:520 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" @@ -52,25 +52,25 @@ msgstr "Số lượng cung cấp không hợp lệ ({exc})" 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ị" -#: InvenTree/fields.py:139 +#: InvenTree/fields.py:136 msgid "Enter date" msgstr "Nhập ngày" -#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 -#: build/serializers.py:531 build/templates/build/sidebar.html:21 -#: company/models.py:849 company/templates/company/sidebar.html:37 -#: order/models.py:1332 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:205 InvenTree/models.py:918 build/serializers.py:452 +#: build/serializers.py:530 build/templates/build/sidebar.html:21 +#: company/models.py:817 company/templates/company/sidebar.html:37 +#: order/models.py:1296 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:3218 part/templates/part/part_sidebar.html:63 +#: part/models.py:3183 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_report.html:172 -#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 -#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 -#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 -#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:230 stock/models.py:2309 stock/models.py:2431 +#: stock/serializers.py:632 stock/serializers.py:790 stock/serializers.py:886 +#: stock/serializers.py:936 stock/serializers.py:1239 stock/serializers.py:1328 +#: stock/serializers.py:1493 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1080 +#: templates/js/translated/part.js:1081 #: templates/js/translated/purchase_order.js:2200 #: templates/js/translated/return_order.js:775 #: templates/js/translated/sales_order.js:1103 @@ -120,15 +120,15 @@ msgstr "Xác nhận địa chỉ email" msgid "You must type the same email each time." msgstr "Bạn phải nhập cùng một email mỗi lần." -#: InvenTree/forms.py:253 InvenTree/forms.py:261 +#: InvenTree/forms.py:248 InvenTree/forms.py:256 msgid "The provided primary email address is not valid." msgstr "Địa chỉ email chính đã cung cấp không hợp lệ." -#: InvenTree/forms.py:268 +#: InvenTree/forms.py:263 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:395 +#: InvenTree/forms.py:390 msgid "Registration is disabled." msgstr "Đăng ký bị vô hiệu hóa." @@ -171,35 +171,35 @@ msgstr "Số sê ri duy nhất ({len(serials)}) phải phù hợp số lượng msgid "Remove HTML tags from this value" msgstr "Xóa thẻ HTML từ giá trị này" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Connection error" msgstr "Lỗi kết nối" -#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 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:158 +#: InvenTree/helpers_model.py:148 msgid "Exception occurred" msgstr "Xảy ra Exception" -#: InvenTree/helpers_model.py:168 +#: InvenTree/helpers_model.py:158 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:171 +#: InvenTree/helpers_model.py:161 msgid "Image size is too large" msgstr "Hình ảnh quá lớn" -#: InvenTree/helpers_model.py:183 +#: InvenTree/helpers_model.py:173 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:188 +#: InvenTree/helpers_model.py:178 msgid "Remote server returned empty response" msgstr "Máy chủ trả về phản hồi trống" -#: InvenTree/helpers_model.py:196 +#: InvenTree/helpers_model.py:186 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ệ" @@ -296,46 +296,50 @@ msgid "Portuguese (Brazilian)" msgstr "Tiếng Bồ Đào Nha (Brazil)" #: InvenTree/locales.py:41 +msgid "Romanian" +msgstr "" + +#: InvenTree/locales.py:42 msgid "Russian" msgstr "Tiếng Nga" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:43 msgid "Slovak" msgstr "Tiếng Slo-va-ki-a" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:44 msgid "Slovenian" msgstr "Tiếng Slô-ven-ni-a" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:45 msgid "Serbian" msgstr "Tiếng Serbia" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:46 msgid "Swedish" msgstr "Tiếng Thụy Điển" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:47 msgid "Thai" msgstr "Tiếng Thái" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:48 msgid "Turkish" msgstr "Tiếng Thổ Nhĩ Kỳ" -#: InvenTree/locales.py:48 +#: InvenTree/locales.py:49 msgid "Ukrainian" msgstr "" -#: InvenTree/locales.py:49 +#: InvenTree/locales.py:50 msgid "Vietnamese" msgstr "Tiếng Việt" -#: InvenTree/locales.py:50 +#: InvenTree/locales.py:51 msgid "Chinese (Simplified)" msgstr "Tiếng Trung (Giản thể)" -#: InvenTree/locales.py:51 +#: InvenTree/locales.py:52 msgid "Chinese (Traditional)" msgstr "Tiếng Trung (Phồn thể)" @@ -344,153 +348,65 @@ msgstr "Tiếng Trung (Phồn thể)" 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:133 +#: InvenTree/magic_login.py:38 company/models.py:136 #: company/templates/company/company_base.html:138 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:677 msgid "Email" msgstr "" -#: InvenTree/models.py:107 +#: InvenTree/models.py:105 msgid "Error running plugin validation" msgstr "" -#: InvenTree/models.py:176 +#: InvenTree/models.py:174 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:182 +#: InvenTree/models.py:180 msgid "Plugin Metadata" msgstr "Phụ trợ siêu dữ liệu" -#: InvenTree/models.py:183 +#: InvenTree/models.py:181 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:413 +#: InvenTree/models.py:408 msgid "Improperly formatted pattern" msgstr "Mẫu được định dạng không thích hợp" -#: InvenTree/models.py:420 +#: InvenTree/models.py:415 msgid "Unknown format key specified" msgstr "Khóa định dạng không rõ ràng đã được chỉ định" -#: InvenTree/models.py:426 +#: InvenTree/models.py:421 msgid "Missing required format key" msgstr "Thiếu khóa định dạng cần thiết" -#: InvenTree/models.py:437 +#: InvenTree/models.py:432 msgid "Reference field cannot be empty" msgstr "Trường tham chiếu không thể rỗng" -#: InvenTree/models.py:445 +#: InvenTree/models.py:440 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:476 +#: InvenTree/models.py:471 msgid "Reference number is too large" msgstr "Số tham chiếu quá lớn" -#: InvenTree/models.py:550 -msgid "Missing file" -msgstr "Tập tin bị thiếu" - -#: InvenTree/models.py:551 -msgid "Missing external link" -msgstr "Thiếu liên kết bên ngoài" - -#: InvenTree/models.py:572 stock/models.py:2437 -#: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:326 -msgid "Attachment" -msgstr "Đính kèm" - -#: InvenTree/models.py:573 -msgid "Select file to attach" -msgstr "Chọn file đính kèm" - -#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:831 -#: order/models.py:303 order/models.py:1337 order/models.py:1753 -#: part/admin.py:55 part/models.py:962 -#: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_report.html:164 -#: stock/admin.py:225 templates/js/translated/company.js:1319 -#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2455 -#: templates/js/translated/purchase_order.js:2040 -#: templates/js/translated/purchase_order.js:2204 -#: templates/js/translated/return_order.js:779 -#: templates/js/translated/sales_order.js:1092 -#: templates/js/translated/sales_order.js:2023 -msgid "Link" -msgstr "Liên kết" - -#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 -#: stock/models.py:836 -msgid "Link to external URL" -msgstr "Liên kết đến URL bên ngoài" - -#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:341 -msgid "Comment" -msgstr "Bình luận" - -#: InvenTree/models.py:589 -msgid "File comment" -msgstr "Bình luận tệp tin" - -#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 -#: common/models.py:2518 common/models.py:2742 common/models.py:2743 -#: common/models.py:2988 common/models.py:2989 part/models.py:3228 -#: part/models.py:3315 part/models.py:3408 part/models.py:3436 -#: plugin/models.py:259 plugin/models.py:260 -#: report/templates/report/inventree_test_report.html:105 -#: templates/js/translated/stock.js:3036 users/models.py:111 -msgid "User" -msgstr "Người dùng" - -#: InvenTree/models.py:602 -msgid "upload date" -msgstr "Ngày tải lên" - -#: InvenTree/models.py:624 -msgid "Filename must not be empty" -msgstr "Tên tập tin không được để trống" - -#: InvenTree/models.py:635 -msgid "Invalid attachment directory" -msgstr "Thư mục đính kèm không hợp lệ" - -#: InvenTree/models.py:665 -#, 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:668 -msgid "Filename missing extension" -msgstr "Tên tệp tin thiếu phần mở rộng" - -#: InvenTree/models.py:677 -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:684 -msgid "Error renaming file" -msgstr "Lỗi khi đổi tên tệp tin" - -#: InvenTree/models.py:860 +#: InvenTree/models.py:719 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:877 +#: InvenTree/models.py:736 msgid "Invalid choice" msgstr "Lựa chọn sai" -#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 -#: common/serializers.py:403 company/models.py:614 machine/models.py:24 -#: part/models.py:898 part/models.py:3659 plugin/models.py:50 -#: report/models.py:149 stock/models.py:72 +#: InvenTree/models.py:766 common/models.py:2623 common/models.py:3036 +#: common/serializers.py:408 company/models.py:580 machine/models.py:24 +#: part/models.py:891 part/models.py:3639 plugin/models.py:51 +#: report/models.py:150 stock/models.py:73 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:83 @@ -501,25 +417,25 @@ msgstr "Lựa chọn sai" #: templates/js/translated/company.js:724 #: templates/js/translated/company.js:913 #: templates/js/translated/company.js:1165 -#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 -#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1187 +#: templates/js/translated/part.js:1475 templates/js/translated/part.js:1611 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Tên" -#: InvenTree/models.py:913 build/models.py:218 -#: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:523 company/models.py:840 +#: InvenTree/models.py:772 build/models.py:220 +#: build/templates/build/detail.html:24 common/models.py:138 +#: company/models.py:509 company/models.py:808 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 order/models.py:289 -#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 -#: part/models.py:3674 part/templates/part/category.html:82 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:914 +#: part/models.py:3654 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:155 -#: report/models.py:509 report/models.py:535 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 #: report/templates/report/inventree_build_order_report.html:117 -#: stock/admin.py:55 stock/models.py:78 stock/templates/stock/location.html:125 +#: stock/admin.py:54 stock/models.py:79 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 @@ -528,10 +444,10 @@ msgstr "Tên" #: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 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:2354 -#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1239 +#: templates/js/translated/part.js:1484 templates/js/translated/part.js:1622 +#: templates/js/translated/part.js:1959 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2897 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1706 #: templates/js/translated/purchase_order.js:1849 @@ -544,149 +460,141 @@ msgstr "Tên" msgid "Description" msgstr "Mô tả" -#: InvenTree/models.py:914 stock/models.py:79 +#: InvenTree/models.py:773 stock/models.py:80 msgid "Description (optional)" msgstr "Mô tả (tùy chọn)" -#: InvenTree/models.py:923 -msgid "parent" -msgstr "thư mục cha" - -#: InvenTree/models.py:929 templates/js/translated/part.js:2793 +#: InvenTree/models.py:788 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Đường dẫn" -#: InvenTree/models.py:1035 +#: InvenTree/models.py:918 msgid "Markdown notes (optional)" msgstr "Ghi chú markdown (không bắt buộc)" -#: InvenTree/models.py:1064 +#: InvenTree/models.py:947 msgid "Barcode Data" msgstr "Dữ liệu mã vạch" -#: InvenTree/models.py:1065 +#: InvenTree/models.py:948 msgid "Third party barcode data" msgstr "Dữ liệu mã vạch của bên thứ ba" -#: InvenTree/models.py:1071 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "Dữ liệu băm mã vạch" -#: InvenTree/models.py:1072 +#: InvenTree/models.py:955 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:1125 +#: InvenTree/models.py:1008 msgid "Existing barcode found" msgstr "Mã vạch đã tồn tại" -#: InvenTree/models.py:1168 +#: InvenTree/models.py:1051 msgid "Server Error" msgstr "Lỗi máy chủ" -#: InvenTree/models.py:1169 +#: InvenTree/models.py:1052 msgid "An error has been logged by the server." msgstr "Lỗi đã được ghi lại bởi máy chủ." -#: InvenTree/serializers.py:62 part/models.py:4212 +#: InvenTree/serializers.py:63 part/models.py:4192 msgid "Must be a valid number" msgstr "Phải là một số hợp lệ" -#: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:3036 +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3001 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Tiền tệ" -#: InvenTree/serializers.py:102 +#: 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:441 +#: InvenTree/serializers.py:442 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:453 +#: InvenTree/serializers.py:454 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:472 +#: InvenTree/serializers.py:473 msgid "Your account has been created." msgstr "Tài khoản của bạn đã được tạo." -#: InvenTree/serializers.py:474 +#: InvenTree/serializers.py:475 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:481 +#: InvenTree/serializers.py:482 msgid "Welcome to InvenTree" msgstr "Chào mừng đến với InvenTree" -#: InvenTree/serializers.py:542 -msgid "Filename" -msgstr "Tên tập tin" - -#: InvenTree/serializers.py:576 +#: InvenTree/serializers.py:540 msgid "Invalid value" msgstr "Giá trị không hợp lệ" -#: InvenTree/serializers.py:596 +#: InvenTree/serializers.py:560 msgid "Data File" msgstr "Tập tin dữ liệu" -#: InvenTree/serializers.py:597 +#: InvenTree/serializers.py:561 msgid "Select data file for upload" msgstr "Chọn tệp tin để tải lên" -#: InvenTree/serializers.py:614 +#: InvenTree/serializers.py:578 msgid "Unsupported file type" msgstr "Loại tệp tin không được hỗ trợ" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:584 msgid "File is too large" msgstr "Tệp tin quá lớn" -#: InvenTree/serializers.py:641 +#: InvenTree/serializers.py:605 msgid "No columns found in file" msgstr "Không tìm thấy cột nào trong tệp tin" -#: InvenTree/serializers.py:644 +#: InvenTree/serializers.py:608 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:757 +#: InvenTree/serializers.py:721 msgid "No data rows provided" msgstr "Chưa có dữ liệu" -#: InvenTree/serializers.py:760 +#: InvenTree/serializers.py:724 msgid "No data columns supplied" msgstr "Chưa cung cấp cột dữ liệu" -#: InvenTree/serializers.py:827 +#: InvenTree/serializers.py:791 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Thiếu cột bắt buộc: '{name}'" -#: InvenTree/serializers.py:836 +#: InvenTree/serializers.py:800 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Nhân bản cột: '{col}'" -#: InvenTree/serializers.py:859 +#: InvenTree/serializers.py:840 msgid "Remote Image" msgstr "Hình ảnh từ xa" -#: InvenTree/serializers.py:860 +#: InvenTree/serializers.py:841 msgid "URL of remote image file" msgstr "URL của tệp hình ảnh bên ngoài" -#: InvenTree/serializers.py:878 +#: InvenTree/serializers.py:859 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/status.py:66 part/serializers.py:1178 +#: InvenTree/status.py:66 part/serializers.py:1174 msgid "Background worker check failed" msgstr "Nhân công chạy ngầm kiểm tra thất bại" @@ -698,27 +606,27 @@ msgstr "Chưa cấu hình dịch vụ gửi email" msgid "InvenTree system health checks failed" msgstr "Kiểm tra tình trạng hệ thống InvenTree thất bại" -#: InvenTree/templatetags/inventree_extras.py:183 +#: InvenTree/templatetags/inventree_extras.py:184 msgid "Unknown database" msgstr "Không rõ cơ sở dữ liệu" -#: InvenTree/validators.py:31 InvenTree/validators.py:33 +#: InvenTree/validators.py:32 InvenTree/validators.py:34 msgid "Invalid physical unit" msgstr "Đơn vị vật lý không hợp lệ" -#: InvenTree/validators.py:39 +#: InvenTree/validators.py:40 msgid "Not a valid currency code" msgstr "Mã tiền tệ không hợp lệ" -#: InvenTree/validators.py:121 InvenTree/validators.py:137 +#: InvenTree/validators.py:118 InvenTree/validators.py:134 msgid "Overage value must not be negative" msgstr "Giá trị hàng hóa dư không thể là số âm" -#: InvenTree/validators.py:139 +#: InvenTree/validators.py:136 msgid "Overage must not exceed 100%" msgstr "Hàng hóa dư thừa không thể vượt quá 100%" -#: InvenTree/validators.py:145 +#: InvenTree/validators.py:142 msgid "Invalid value for overage" msgstr "Giá trị không hợp lệ cho hàng hóa dư thừa" @@ -750,14 +658,14 @@ 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:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: build/api.py:299 part/models.py:4070 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "Vật tư tiêu hao" -#: build/api.py:300 part/models.py:4084 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4064 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2529 #: templates/js/translated/table_filters.js:186 @@ -778,30 +686,30 @@ msgstr "Đã theo dõi" msgid "Allocated" msgstr "Đã cấp phát" -#: build/api.py:311 company/models.py:904 company/serializers.py:383 +#: build/api.py:311 company/models.py:872 company/serializers.py:359 #: 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:2561 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:234 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 -#: templates/js/translated/part.js:699 +#: templates/js/translated/part.js:693 templates/js/translated/part.js:695 +#: templates/js/translated/part.js:700 #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:575 msgid "Available" msgstr "Có sẵn" -#: build/models.py:83 build/templates/build/build_base.html:9 +#: build/models.py:85 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_report.html:105 -#: stock/serializers.py:83 templates/email/build_order_completed.html:16 +#: stock/serializers.py:82 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:2892 msgid "Build Order" msgstr "Tạo đơn hàng" -#: build/models.py:84 build/templates/build/build_base.html:13 +#: build/models.py:86 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 @@ -812,25 +720,25 @@ msgstr "Tạo đơn hàng" msgid "Build Orders" msgstr "Tạo đơn hàng" -#: build/models.py:131 +#: build/models.py:133 msgid "Invalid choice for parent build" msgstr "Lựa chọn sai cho bản dựng cha" -#: build/models.py:142 order/models.py:240 +#: build/models.py:144 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "" -#: build/models.py:148 +#: build/models.py:150 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:209 +#: build/models.py:211 msgid "Build Order Reference" msgstr "Tham chiếu đơn đặt bản dựng" -#: build/models.py:210 order/models.py:463 order/models.py:928 -#: order/models.py:1325 order/models.py:2056 part/admin.py:419 -#: part/models.py:4105 part/templates/part/upload_bom.html:54 +#: build/models.py:212 order/models.py:463 order/models.py:926 +#: order/models.py:1289 order/models.py:2020 part/admin.py:411 +#: part/models.py:4085 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_purchase_order_report.html:28 #: report/templates/report/inventree_return_order_report.html:26 @@ -844,27 +752,27 @@ msgstr "Tham chiếu đơn đặt bản dựng" msgid "Reference" msgstr "Tham chiếu" -#: build/models.py:221 +#: build/models.py:223 msgid "Brief description of the build (optional)" msgstr "Mô tả ngắn về phiên bạn (Tùy chọn)" -#: build/models.py:229 build/templates/build/build_base.html:183 +#: build/models.py:231 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:230 +#: build/models.py:232 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:235 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 -#: order/models.py:1450 order/models.py:1595 order/models.py:1596 -#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 -#: part/models.py:3191 part/models.py:3335 part/models.py:3358 -#: part/models.py:3379 part/models.py:3401 part/models.py:3511 -#: part/models.py:3807 part/models.py:3963 part/models.py:4056 -#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 +#: build/models.py:237 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1026 order/api.py:805 +#: order/models.py:1414 order/models.py:1559 order/models.py:1560 +#: part/api.py:1494 part/api.py:1788 part/models.py:395 part/models.py:3012 +#: part/models.py:3156 part/models.py:3303 part/models.py:3324 +#: part/models.py:3346 part/models.py:3477 part/models.py:3787 +#: part/models.py:3943 part/models.py:4036 part/models.py:4395 +#: part/serializers.py:1120 part/serializers.py:1726 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -875,8 +783,8 @@ 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.html:24 #: report/templates/report/inventree_sales_order_report.html:27 #: report/templates/report/inventree_stock_location_report.html:102 -#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 -#: stock/serializers.py:818 templates/InvenTree/search.html:82 +#: stock/serializers.py:109 stock/serializers.py:157 stock/serializers.py:423 +#: stock/serializers.py:820 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 @@ -889,8 +797,8 @@ msgstr "Đơn đặt bản dựng với bản dựng này đã được phân b #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 -#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2323 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:1944 templates/js/translated/part.js:2016 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 #: templates/js/translated/purchase_order.js:751 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1848 @@ -908,107 +816,107 @@ 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:243 +#: build/models.py:245 msgid "Select part to build" msgstr "Chọn sản phẩm để xây dựng" -#: build/models.py:248 +#: build/models.py:250 msgid "Sales Order Reference" msgstr "Tham chiếu đơn đặt bản dựng" -#: build/models.py:252 +#: build/models.py:254 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:257 build/serializers.py:1000 +#: build/models.py:259 build/serializers.py:999 #: templates/js/translated/build.js:1731 #: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "Địa điểm nguồn" -#: build/models.py:261 +#: build/models.py:263 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:266 +#: build/models.py:268 msgid "Destination Location" msgstr "Địa điểm đích" -#: build/models.py:270 +#: build/models.py:272 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:274 +#: build/models.py:276 msgid "Build Quantity" msgstr "Xây dựng số lượng" -#: build/models.py:277 +#: build/models.py:279 msgid "Number of stock items to build" msgstr "Số kho hàng để dựng" -#: build/models.py:281 +#: build/models.py:283 msgid "Completed items" msgstr "Những mục hoàn thành" -#: build/models.py:283 +#: build/models.py:285 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:287 +#: build/models.py:289 msgid "Build Status" msgstr "Trnạg thái bản dựng" -#: build/models.py:291 +#: build/models.py:293 msgid "Build status code" msgstr "Mã trạng thái bản dựng" -#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 -#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 +#: build/models.py:302 build/serializers.py:286 order/serializers.py:580 +#: stock/models.py:838 stock/serializers.py:74 stock/serializers.py:1458 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Mã lô hàng" -#: build/models.py:304 build/serializers.py:288 +#: build/models.py:306 build/serializers.py:287 msgid "Batch code for this build output" msgstr "Mã lô cho đầu ra bản dựng này" -#: build/models.py:307 order/models.py:316 order/serializers.py:120 -#: part/models.py:1122 part/templates/part/part_base.html:310 +#: build/models.py:309 order/models.py:316 order/serializers.py:119 +#: part/models.py:1115 part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:338 #: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "Ngày tạo" -#: build/models.py:311 +#: build/models.py:313 msgid "Target completion date" msgstr "Ngày hoàn thành mục tiêu" -#: build/models.py:312 +#: build/models.py:314 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:315 order/models.py:521 order/models.py:2101 +#: build/models.py:317 order/models.py:521 order/models.py:2065 #: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "Ngày hoàn thành" -#: build/models.py:321 +#: build/models.py:323 msgid "completed by" msgstr "hoàn thành bởi" -#: build/models.py:329 templates/js/translated/build.js:2207 +#: build/models.py:331 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "Cấp bởi" -#: build/models.py:330 +#: build/models.py:332 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:338 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:145 +#: build/models.py:340 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:147 #: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:232 part/models.py:1139 +#: order/templates/order/sales_order_base.html:232 part/models.py:1132 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_report.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 @@ -1019,31 +927,36 @@ msgstr "Người dùng người đã được phân công cho đơn đặt bản msgid "Responsible" msgstr "Chịu trách nhiệm" -#: build/models.py:339 +#: build/models.py:341 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:344 build/templates/build/detail.html:108 +#: build/models.py:346 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:184 -#: part/templates/part/part_base.html:383 stock/models.py:836 +#: part/templates/part/part_base.html:383 stock/models.py:834 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "Liên kết bên ngoài" -#: build/models.py:349 +#: build/models.py:347 common/models.py:3178 part/models.py:956 +#: stock/models.py:834 +msgid "Link to external URL" +msgstr "Liên kết đến URL bên ngoài" + +#: build/models.py:351 msgid "Build Priority" msgstr "Độ ưu tiên" -#: build/models.py:352 +#: build/models.py:354 msgid "Priority of this build order" msgstr "Độ quan trọng của đơn đặt bản dựng" -#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: build/models.py:361 common/models.py:131 order/admin.py:18 #: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 #: templates/js/translated/build.js:2144 #: templates/js/translated/purchase_order.js:1710 @@ -1054,65 +967,65 @@ msgstr "Độ quan trọng của đơn đặt bản dựng" msgid "Project Code" msgstr "Mã dự án" -#: build/models.py:360 +#: build/models.py:362 msgid "Project code for this build order" msgstr "Mã dự án cho đơn đặt bản dựng này" -#: build/models.py:593 build/models.py:658 +#: build/models.py:595 build/models.py:660 msgid "Failed to offload task to complete build allocations" msgstr "" -#: build/models.py:615 +#: build/models.py:617 #, 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:621 +#: build/models.py:623 msgid "A build order has been completed" msgstr "Một đơn đặt bản dựng đã được hoàn thành" -#: build/models.py:847 build/models.py:932 +#: build/models.py:849 build/models.py:934 msgid "No build output specified" msgstr "Không có đầu ra bản dựng đã được chỉ ra" -#: build/models.py:850 +#: build/models.py:852 msgid "Build output is already completed" msgstr "Đầu ra bản dựng đã được hoàn thiện" -#: build/models.py:853 +#: build/models.py:855 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:936 build/serializers.py:220 build/serializers.py:269 -#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 -#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 -#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 +#: build/models.py:938 build/serializers.py:219 build/serializers.py:268 +#: build/serializers.py:866 order/models.py:559 order/serializers.py:432 +#: order/serializers.py:575 part/serializers.py:1484 part/serializers.py:1884 +#: stock/models.py:677 stock/models.py:1495 stock/serializers.py:603 msgid "Quantity must be greater than zero" msgstr "Số lượng phải lớn hơn 0" -#: build/models.py:941 build/serializers.py:225 +#: build/models.py:943 build/serializers.py:224 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:1001 build/serializers.py:548 +#: build/models.py:1003 build/serializers.py:547 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1352 +#: build/models.py:1344 msgid "Build Order Line Item" msgstr "" -#: build/models.py:1377 +#: build/models.py:1369 msgid "Build object" msgstr "Dựng đối tượng" -#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 -#: build/serializers.py:254 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2539 -#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 -#: part/forms.py:48 part/models.py:3205 part/models.py:4078 +#: build/models.py:1383 build/models.py:1639 build/serializers.py:206 +#: build/serializers.py:253 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2509 +#: order/models.py:1272 order/models.py:1931 order/serializers.py:1327 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3170 part/models.py:4058 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1121,8 +1034,8 @@ msgstr "Dựng đối tượng" #: report/templates/report/inventree_sales_order_report.html:29 #: report/templates/report/inventree_stock_location_report.html:104 #: report/templates/report/inventree_test_report.html:90 -#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 -#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:125 stock/serializers.py:165 stock/serializers.py:594 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1133,8 +1046,8 @@ msgstr "Dựng đối tượng" #: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 #: templates/js/translated/model_renderers.js:236 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:962 +#: templates/js/translated/part.js:1812 templates/js/translated/part.js:3342 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1154,38 +1067,38 @@ msgstr "Dựng đối tượng" msgid "Quantity" msgstr "Số lượng" -#: build/models.py:1392 +#: build/models.py:1384 msgid "Required quantity for build order" msgstr "Yêu cầu số lượng để dựng đơn đặt" -#: build/models.py:1472 +#: build/models.py:1464 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:1481 +#: build/models.py:1473 #, 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:1491 order/models.py:1918 +#: build/models.py:1483 order/models.py:1882 msgid "Stock item is over-allocated" msgstr "Kho hàng đã bị phân bổ quá đà" -#: build/models.py:1497 order/models.py:1921 +#: build/models.py:1489 order/models.py:1885 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:1503 +#: build/models.py:1495 msgid "Quantity must be 1 for serialized stock" msgstr "Số lượng phải là 1 cho kho sê ri" -#: build/models.py:1562 +#: build/models.py:1554 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:1634 build/serializers.py:847 order/serializers.py:1183 -#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 -#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: build/models.py:1626 build/serializers.py:846 order/serializers.py:1171 +#: order/serializers.py:1192 stock/models.py:358 stock/serializers.py:91 +#: stock/serializers.py:697 stock/serializers.py:1177 stock/serializers.py:1289 #: stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 @@ -1201,70 +1114,70 @@ 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:1635 +#: build/models.py:1627 msgid "Source stock item" msgstr "Kho hàng gốc" -#: build/models.py:1648 +#: build/models.py:1640 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:1656 +#: build/models.py:1648 msgid "Install into" msgstr "Cài đặt vào" -#: build/models.py:1657 +#: build/models.py:1649 msgid "Destination stock item" msgstr "Kho hàng đích" -#: build/serializers.py:157 build/serializers.py:876 +#: build/serializers.py:156 build/serializers.py:875 #: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "Đầu ra bản dựng" -#: build/serializers.py:169 +#: build/serializers.py:168 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:173 +#: build/serializers.py:172 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:177 +#: build/serializers.py:176 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:188 +#: build/serializers.py:187 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:208 build/serializers.py:255 +#: build/serializers.py:207 build/serializers.py:254 msgid "Enter quantity for build output" msgstr "Điền số lượng cho đầu ra bản dựng" -#: build/serializers.py:276 +#: build/serializers.py:275 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:279 +#: build/serializers.py:278 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:294 order/serializers.py:589 order/serializers.py:1343 -#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:293 order/serializers.py:588 order/serializers.py:1331 +#: stock/serializers.py:614 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Số sê-ri" -#: build/serializers.py:295 +#: build/serializers.py:294 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:300 build/serializers.py:441 build/serializers.py:513 -#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 -#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 -#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 -#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 +#: build/serializers.py:299 build/serializers.py:440 build/serializers.py:512 +#: order/serializers.py:564 order/serializers.py:672 order/serializers.py:1656 +#: part/serializers.py:1140 stock/serializers.py:100 stock/serializers.py:625 +#: stock/serializers.py:785 stock/serializers.py:881 stock/serializers.py:1321 +#: stock/serializers.py:1577 stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:1001 #: templates/js/translated/build.js:2372 @@ -1280,54 +1193,54 @@ msgstr "Nhập vào số sêri cho đầu ra bản dựng" msgid "Location" msgstr "Địa điểm" -#: build/serializers.py:301 +#: build/serializers.py:300 msgid "Stock location for build output" msgstr "" -#: build/serializers.py:315 +#: build/serializers.py:314 msgid "Auto Allocate Serial Numbers" msgstr "Số sêri tự cấp" -#: build/serializers.py:316 +#: build/serializers.py:315 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:331 +#: build/serializers.py:330 msgid "Serial numbers must be provided for trackable parts" msgstr "" -#: build/serializers.py:356 stock/api.py:1031 +#: build/serializers.py:355 stock/api.py:1041 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:403 build/serializers.py:465 build/serializers.py:554 +#: build/serializers.py:402 build/serializers.py:464 build/serializers.py:553 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:442 +#: build/serializers.py:441 msgid "Stock location for scrapped outputs" msgstr "Vị trí kho cho đầu ra phế phẩm" -#: build/serializers.py:448 +#: build/serializers.py:447 msgid "Discard Allocations" msgstr "Hủy phân bổ" -#: build/serializers.py:449 +#: build/serializers.py:448 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:454 +#: build/serializers.py:453 msgid "Reason for scrapping build output(s)" msgstr "Lý do loại bỏ đầu ra bản dựng" -#: build/serializers.py:514 +#: build/serializers.py:513 msgid "Location for completed build outputs" msgstr "Vị trí cho đầu ra bản dựng hoàn thiện" -#: build/serializers.py:520 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:952 -#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 -#: stock/serializers.py:930 stock/serializers.py:1469 +#: build/serializers.py:519 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2044 order/serializers.py:596 stock/admin.py:164 +#: stock/serializers.py:932 stock/serializers.py:1465 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 @@ -1339,188 +1252,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:526 +#: build/serializers.py:525 msgid "Accept Incomplete Allocation" msgstr "Chấp nhận phân kho dang dở" -#: build/serializers.py:527 +#: build/serializers.py:526 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:612 +#: build/serializers.py:611 msgid "Consume Allocated Stock" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:612 msgid "Consume any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:619 +#: build/serializers.py:618 msgid "Remove Incomplete Outputs" msgstr "Xóa toàn bộ đầu ra chưa hoàn thành" -#: build/serializers.py:620 +#: build/serializers.py:619 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:647 +#: build/serializers.py:646 msgid "Not permitted" msgstr "Chưa được cấp phép" -#: build/serializers.py:648 +#: build/serializers.py:647 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:649 +#: build/serializers.py:648 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:679 +#: build/serializers.py:678 msgid "Overallocated Stock" msgstr "Kho quá tải" -#: build/serializers.py:681 +#: build/serializers.py:680 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:691 +#: build/serializers.py:690 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:696 +#: build/serializers.py:695 msgid "Accept Unallocated" msgstr "Chấp nhận chưa phân bổ được" -#: build/serializers.py:697 +#: build/serializers.py:696 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:707 templates/js/translated/build.js:315 +#: build/serializers.py:706 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:712 order/serializers.py:301 order/serializers.py:1246 +#: build/serializers.py:711 order/serializers.py:300 order/serializers.py:1234 msgid "Accept Incomplete" msgstr "Chấp nhận không hoàn thành" -#: build/serializers.py:713 +#: build/serializers.py:712 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:723 templates/js/translated/build.js:319 +#: build/serializers.py:722 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:732 templates/js/translated/build.js:303 +#: build/serializers.py:731 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:770 +#: build/serializers.py:769 msgid "Build Line" msgstr "Lộ giới" -#: build/serializers.py:780 +#: build/serializers.py:779 msgid "Build output" msgstr "Đầu ra bản dựng" -#: build/serializers.py:788 +#: build/serializers.py:787 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:824 +#: build/serializers.py:823 msgid "Build Line Item" msgstr "Mục chi tiết bản dựng" -#: build/serializers.py:838 +#: build/serializers.py:837 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:853 stock/serializers.py:1194 +#: build/serializers.py:852 stock/serializers.py:1190 msgid "Item must be in stock" msgstr "Hàng hóa phải trong kho" -#: build/serializers.py:901 order/serializers.py:1237 +#: build/serializers.py:900 order/serializers.py:1225 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Số lượng có sẵn ({q}) đã bị vượt quá" -#: build/serializers.py:907 +#: build/serializers.py:906 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:914 +#: build/serializers.py:913 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:938 order/serializers.py:1489 +#: build/serializers.py:937 order/serializers.py:1477 msgid "Allocation items must be provided" msgstr "Hàng hóa phân bổ phải được cung cấp" -#: build/serializers.py:1001 +#: build/serializers.py:1000 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:1009 +#: build/serializers.py:1008 msgid "Exclude Location" msgstr "Ngoại trừ vị trí" -#: build/serializers.py:1010 +#: build/serializers.py:1009 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:1015 +#: build/serializers.py:1014 msgid "Interchangeable Stock" msgstr "Kho trao đổi" -#: build/serializers.py:1016 +#: build/serializers.py:1015 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:1021 +#: build/serializers.py:1020 msgid "Substitute Stock" msgstr "Kho thay thế" -#: build/serializers.py:1022 +#: build/serializers.py:1021 msgid "Allow allocation of substitute parts" msgstr "Cho phép phân kho sản phẩm thay thế" -#: build/serializers.py:1027 +#: build/serializers.py:1026 msgid "Optional Items" msgstr "Mục tùy chọn" -#: build/serializers.py:1028 +#: build/serializers.py:1027 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:1050 +#: build/serializers.py:1049 msgid "Failed to start auto-allocation task" msgstr "" -#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 -#: stock/api.py:794 +#: build/serializers.py:1139 part/models.py:3953 part/models.py:4387 +#: stock/api.py:804 msgid "BOM Item" msgstr "Mục BOM" -#: build/serializers.py:1149 templates/js/translated/index.js:130 +#: build/serializers.py:1148 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:832 part/serializers.py:1506 +#: build/serializers.py:1153 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:828 part/serializers.py:1502 #: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 -#: templates/js/translated/build.js:2613 templates/js/translated/part.js:709 -#: templates/js/translated/part.js:2148 +#: templates/js/translated/build.js:2613 templates/js/translated/part.js:710 +#: templates/js/translated/part.js:2149 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "Bật đơn hàng" -#: build/serializers.py:1159 part/serializers.py:1508 +#: build/serializers.py:1158 part/serializers.py:1504 #: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "Đang sản xuất" -#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 +#: build/serializers.py:1163 part/bom.py:172 part/serializers.py:1527 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1929 msgid "Available Stock" @@ -1544,7 +1457,7 @@ msgstr "Đã hủy" #: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 #: order/status_codes.py:44 order/status_codes.py:69 #: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:165 report/models.py:443 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 msgid "Complete" msgstr "Hoàn thành" @@ -1674,11 +1587,11 @@ msgstr "Kho không được phân bổ đầy đủ với yêu cầu bản dựn #: build/templates/build/build_base.html:160 #: build/templates/build/detail.html:138 order/models.py:309 -#: order/models.py:1343 order/templates/order/order_base.html:186 +#: order/models.py:1307 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:196 #: report/templates/report/inventree_build_order_report.html:125 -#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1831 #: templates/js/translated/purchase_order.js:1739 #: templates/js/translated/purchase_order.js:2147 #: templates/js/translated/return_order.js:346 @@ -1711,8 +1624,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:1511 order/models.py:847 -#: order/models.py:1587 order/models.py:1701 order/models.py:1855 +#: build/templates/build/detail.html:101 order/api.py:1463 order/models.py:845 +#: order/models.py:1551 order/models.py:1665 order/models.py:1819 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_report.html:135 @@ -1762,7 +1675,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:1479 +#: build/templates/build/detail.html:49 order/models.py:1443 #: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "Đích đến" @@ -1775,7 +1688,7 @@ 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:163 +#: build/templates/build/detail.html:80 stock/admin.py:162 #: stock/templates/stock/item_base.html:162 #: templates/js/translated/build.js:1380 #: templates/js/translated/model_renderers.js:241 @@ -1894,11 +1807,11 @@ msgstr "Tập tin đính kèm" msgid "Build Notes" msgstr "Ghi chép bản dựng" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:436 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -1914,6 +1827,34 @@ msgstr "Chi tiết đơn đặt bản dựng" msgid "Incomplete Outputs" msgstr "Đầu ra chưa hoàn thiện" +#: common/api.py:689 +msgid "Is Link" +msgstr "" + +#: common/api.py:697 +msgid "Is File" +msgstr "" + +#: common/api.py:739 +msgid "User does not have permission to delete this attachment" +msgstr "" + +#: common/currency.py:130 +msgid "Invalid currency code" +msgstr "" + +#: common/currency.py:132 +msgid "Duplicate currency code" +msgstr "" + +#: common/currency.py:137 +msgid "No valid currency codes provided" +msgstr "" + +#: common/currency.py:154 +msgid "No plugin" +msgstr "Không phần mở rộng" + #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1952,1509 +1893,1512 @@ 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:71 +#: common/models.py:73 msgid "Updated" msgstr "Đã cập nhật" -#: common/models.py:72 +#: common/models.py:74 msgid "Timestamp of last update" msgstr "Nhãn thời gian của lần cập cuối cùng" -#: common/models.py:105 +#: common/models.py:107 msgid "Site URL is locked by configuration" msgstr "" -#: common/models.py:130 +#: common/models.py:132 msgid "Unique project code" msgstr "Mã dự án duy nhất" -#: common/models.py:137 +#: common/models.py:139 msgid "Project description" msgstr "Mô tả dự án" -#: common/models.py:146 +#: common/models.py:148 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:766 +#: common/models.py:765 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:770 +#: common/models.py:769 msgid "Settings value" msgstr "Giá trị cài đặt" -#: common/models.py:822 +#: common/models.py:821 msgid "Chosen value is not a valid option" msgstr "Giá trị đã chọn không hợp lệ" -#: common/models.py:838 +#: common/models.py:837 msgid "Value must be a boolean value" msgstr "Giá trị phải là kiểu boolean" -#: common/models.py:846 +#: common/models.py:845 msgid "Value must be an integer value" msgstr "Giá trị phải là một số nguyên dương" -#: common/models.py:883 +#: common/models.py:882 msgid "Key string must be unique" msgstr "Chuỗi khóa phải duy nhất" -#: common/models.py:1115 +#: common/models.py:1114 msgid "No group" msgstr "Không có nhóm" -#: common/models.py:1158 -msgid "An empty domain is not allowed." -msgstr "Tên miền rỗng là không được phép." - -#: common/models.py:1160 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "Tên miền không hợp lệ: {domain}" - -#: common/models.py:1172 -msgid "No plugin" -msgstr "Không phần mở rộng" - -#: common/models.py:1260 +#: common/models.py:1213 msgid "Restart required" msgstr "Cần khởi động lại" -#: common/models.py:1262 +#: common/models.py:1215 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:1269 +#: common/models.py:1222 msgid "Pending migrations" msgstr "Chuyển dữ liệu chờ xử lý" -#: common/models.py:1270 +#: common/models.py:1223 msgid "Number of pending database migrations" msgstr "Số đợt nâng cấp cơ sở dữ liệu chờ xử lý" -#: common/models.py:1275 +#: common/models.py:1228 msgid "Server Instance Name" msgstr "Tên thực thể máy chủ" -#: common/models.py:1277 +#: common/models.py:1230 msgid "String descriptor for the server instance" msgstr "Mô tả chuỗi cho thực thể máy chủ" -#: common/models.py:1281 +#: common/models.py:1234 msgid "Use instance name" msgstr "Sử dụng tên thực thể" -#: common/models.py:1282 +#: common/models.py:1235 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:1287 +#: common/models.py:1240 msgid "Restrict showing `about`" msgstr "Cấm hiển thị `giới thiệu`" -#: common/models.py:1288 +#: common/models.py:1241 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:1293 company/models.py:108 company/models.py:109 +#: common/models.py:1246 company/models.py:111 company/models.py:112 msgid "Company name" msgstr "Tên công ty" -#: common/models.py:1294 +#: common/models.py:1247 msgid "Internal company name" msgstr "Tên công ty nội bộ" -#: common/models.py:1298 +#: common/models.py:1251 msgid "Base URL" msgstr "URL cơ sở" -#: common/models.py:1299 +#: common/models.py:1252 msgid "Base URL for server instance" msgstr "URL cơ sở cho thực thể máy chủ" -#: common/models.py:1305 +#: common/models.py:1258 msgid "Default Currency" msgstr "Tiền tệ mặc định" -#: common/models.py:1306 +#: common/models.py:1259 msgid "Select base currency for pricing calculations" msgstr "Chọn tiền tệ chính khi tính giá" -#: common/models.py:1312 +#: common/models.py:1265 +msgid "Supported Currencies" +msgstr "" + +#: common/models.py:1266 +msgid "List of supported currency codes" +msgstr "" + +#: common/models.py:1272 msgid "Currency Update Interval" msgstr "Tần suất cập nhật tiền tệ" -#: common/models.py:1314 +#: common/models.py:1274 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:1317 common/models.py:1373 common/models.py:1386 -#: common/models.py:1394 common/models.py:1403 common/models.py:1412 -#: common/models.py:1620 common/models.py:1642 common/models.py:1757 -#: common/models.py:2076 +#: common/models.py:1277 common/models.py:1333 common/models.py:1346 +#: common/models.py:1354 common/models.py:1363 common/models.py:1372 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:2046 msgid "days" msgstr "ngày" -#: common/models.py:1321 +#: common/models.py:1281 msgid "Currency Update Plugin" msgstr "Phần mở rộng cập nhật tiền tệ" -#: common/models.py:1322 +#: common/models.py:1282 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:1327 +#: common/models.py:1287 msgid "Download from URL" msgstr "Tải về từ URL" -#: common/models.py:1329 +#: common/models.py:1289 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:1335 +#: common/models.py:1295 msgid "Download Size Limit" msgstr "Giới hạn kích thước tải xuống" -#: common/models.py:1336 +#: common/models.py:1296 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:1342 +#: common/models.py:1302 msgid "User-agent used to download from URL" msgstr "User-agent được dùng để tải xuống theo URL" -#: common/models.py:1344 +#: common/models.py:1304 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:1349 +#: common/models.py:1309 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1350 +#: common/models.py:1310 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1355 +#: common/models.py:1315 msgid "Require confirm" msgstr "Yêu cầu xác nhận" -#: common/models.py:1356 +#: common/models.py:1316 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:1361 +#: common/models.py:1321 msgid "Tree Depth" msgstr "Cấp độ cây" -#: common/models.py:1363 +#: common/models.py:1323 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:1369 +#: common/models.py:1329 msgid "Update Check Interval" msgstr "Thời gian kiểm tra bản cập nhật" -#: common/models.py:1370 +#: common/models.py:1330 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:1376 +#: common/models.py:1336 msgid "Automatic Backup" msgstr "Sao lưu tự động" -#: common/models.py:1377 +#: common/models.py:1337 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:1382 +#: common/models.py:1342 msgid "Auto Backup Interval" msgstr "Khoảng thời gian sao lưu tự động" -#: common/models.py:1383 +#: common/models.py:1343 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:1389 +#: common/models.py:1349 msgid "Task Deletion Interval" msgstr "Khoảng thời gian xóa tác vụ" -#: common/models.py:1391 +#: common/models.py:1351 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:1398 +#: common/models.py:1358 msgid "Error Log Deletion Interval" msgstr "Khoảng thời gian xóa nhật ký lỗi" -#: common/models.py:1400 +#: common/models.py:1360 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:1407 +#: common/models.py:1367 msgid "Notification Deletion Interval" msgstr "Khoảng thời gian xóa thông báo" -#: common/models.py:1409 +#: common/models.py:1369 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:1416 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1376 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Hỗ trợ mã vạch" -#: common/models.py:1417 +#: common/models.py:1377 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:1422 +#: common/models.py:1382 msgid "Barcode Input Delay" msgstr "Độ trễ quét mã vạch" -#: common/models.py:1423 +#: common/models.py:1383 msgid "Barcode input processing delay time" msgstr "Thời gian trễ xử lý đầu đọc mã vạch" -#: common/models.py:1429 +#: common/models.py:1389 msgid "Barcode Webcam Support" msgstr "Hỗ trợ mã vạch qua webcam" -#: common/models.py:1430 +#: common/models.py:1390 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:1435 +#: common/models.py:1395 msgid "Part Revisions" msgstr "Phiên bản Sản phẩm" -#: common/models.py:1436 +#: common/models.py:1396 msgid "Enable revision field for Part" msgstr "Bật trường phiên bản cho sản phẩm" -#: common/models.py:1441 +#: common/models.py:1401 msgid "Allow Deletion from Assembly" msgstr "" -#: common/models.py:1442 +#: common/models.py:1402 msgid "Allow deletion of parts which are used in an assembly" msgstr "" -#: common/models.py:1447 +#: common/models.py:1407 msgid "IPN Regex" msgstr "Mẫu IPN" -#: common/models.py:1448 +#: common/models.py:1408 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:1451 +#: common/models.py:1411 msgid "Allow Duplicate IPN" msgstr "Cho phép trùng IPN" -#: common/models.py:1452 +#: common/models.py:1412 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:1457 +#: common/models.py:1417 msgid "Allow Editing IPN" msgstr "Cho phép sửa IPN" -#: common/models.py:1458 +#: common/models.py:1418 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:1463 +#: common/models.py:1423 msgid "Copy Part BOM Data" msgstr "Sao chép dữ liệu BOM của sản phẩm" -#: common/models.py:1464 +#: common/models.py:1424 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:1469 +#: common/models.py:1429 msgid "Copy Part Parameter Data" msgstr "Sao chép dữ liệu tham số sản phẩm" -#: common/models.py:1470 +#: common/models.py:1430 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:1475 +#: common/models.py:1435 msgid "Copy Part Test Data" msgstr "Chép thông tin kiểm thử sản phẩm" -#: common/models.py:1476 +#: common/models.py:1436 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:1481 +#: common/models.py:1441 msgid "Copy Category Parameter Templates" msgstr "Sao chéo mẫu tham số danh mục" -#: common/models.py:1482 +#: common/models.py:1442 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:1487 part/admin.py:108 part/models.py:3815 -#: report/models.py:293 report/models.py:360 report/serializers.py:90 -#: report/serializers.py:131 stock/serializers.py:228 +#: common/models.py:1447 part/admin.py:108 part/models.py:3795 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:227 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "Mẫu" -#: common/models.py:1488 +#: common/models.py:1448 msgid "Parts are templates by default" msgstr "Sản phẩm là mẫu bởi mặc định" -#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 +#: common/models.py:1453 part/admin.py:91 part/admin.py:425 part/models.py:1052 #: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" msgstr "Lắp ráp" -#: common/models.py:1494 +#: common/models.py:1454 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:1499 part/admin.py:95 part/models.py:1065 +#: common/models.py:1459 part/admin.py:95 part/models.py:1058 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "Thành phần" -#: common/models.py:1500 +#: common/models.py:1460 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:1505 part/admin.py:100 part/models.py:1077 +#: common/models.py:1465 part/admin.py:100 part/models.py:1070 msgid "Purchaseable" msgstr "Có thể mua" -#: common/models.py:1506 +#: common/models.py:1466 msgid "Parts are purchaseable by default" msgstr "Sản phẩm mặc định có thể mua được" -#: common/models.py:1511 part/admin.py:104 part/models.py:1083 +#: common/models.py:1471 part/admin.py:104 part/models.py:1076 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "Có thể bán" -#: common/models.py:1512 +#: common/models.py:1472 msgid "Parts are salable by default" msgstr "Sản phẩm mặc định có thể bán được" -#: common/models.py:1517 part/admin.py:113 part/models.py:1071 +#: common/models.py:1477 part/admin.py:113 part/models.py:1064 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" msgstr "Có thể theo dõi" -#: common/models.py:1518 +#: common/models.py:1478 msgid "Parts are trackable by default" msgstr "Sản phẩm mặc định có thể theo dõi được" -#: common/models.py:1523 part/admin.py:117 part/models.py:1093 +#: common/models.py:1483 part/admin.py:117 part/models.py:1086 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" msgstr "Ảo" -#: common/models.py:1524 +#: common/models.py:1484 msgid "Parts are virtual by default" msgstr "Sản phẩm mặc định là số hóa" -#: common/models.py:1529 +#: common/models.py:1489 msgid "Show Import in Views" msgstr "Hiển thị Nhập liệu trong khung xem" -#: common/models.py:1530 +#: common/models.py:1490 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:1535 +#: common/models.py:1495 msgid "Show related parts" msgstr "Hiển thị sản phẩm liên quan" -#: common/models.py:1536 +#: common/models.py:1496 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:1541 +#: common/models.py:1501 msgid "Initial Stock Data" msgstr "Số liệu tồn kho ban đầu" -#: common/models.py:1542 +#: common/models.py:1502 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:1547 templates/js/translated/part.js:107 +#: common/models.py:1507 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Dữ liệu nhà cung cấp ban đầu" -#: common/models.py:1549 +#: common/models.py:1509 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:1555 +#: common/models.py:1515 msgid "Part Name Display Format" msgstr "Định dạng tên sản phẩm hiển thị" -#: common/models.py:1556 +#: common/models.py:1516 msgid "Format to display the part name" msgstr "Định dạng để hiển thị tên sản phẩm" -#: common/models.py:1562 +#: common/models.py:1522 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:1563 +#: common/models.py:1523 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:1567 +#: common/models.py:1527 msgid "Enforce Parameter Units" msgstr "Bắt buộc đơn vị tham số" -#: common/models.py:1569 +#: common/models.py:1529 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:1575 +#: common/models.py:1535 msgid "Minimum Pricing Decimal Places" msgstr "Vị trí phần thập phân giá bán tối thiểu" -#: common/models.py:1577 +#: common/models.py:1537 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:1583 +#: common/models.py:1548 msgid "Maximum Pricing Decimal Places" msgstr "Vị trí phần thập phân giá bán tối đa" -#: common/models.py:1585 +#: common/models.py:1550 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:1591 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "Sử dụng giá bán nhà cung cấp" -#: common/models.py:1593 +#: common/models.py:1563 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:1599 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "Ghi đè lịch sử mua hàng" -#: common/models.py:1601 +#: common/models.py:1571 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:1607 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "Sử dụng giá hàng hóa trong kho" -#: common/models.py:1609 +#: common/models.py:1579 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:1615 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "Tuổi giá kho hàng" -#: common/models.py:1617 +#: common/models.py:1587 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:1624 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "Sử dụng giá biến thể" -#: common/models.py:1625 +#: common/models.py:1595 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:1630 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "Chỉ các biến thể hoạt động" -#: common/models.py:1632 +#: common/models.py:1602 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:1638 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "Tần suất tạo lại giá" -#: common/models.py:1640 +#: common/models.py:1610 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:1647 +#: common/models.py:1617 msgid "Internal Prices" msgstr "Giá nội bộ" -#: common/models.py:1648 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "Bật giá nội bộ cho sản phẩm" -#: common/models.py:1653 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "Ghi đè giá nội bộ" -#: common/models.py:1655 +#: common/models.py:1625 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:1661 +#: common/models.py:1631 msgid "Enable label printing" msgstr "Bật in tem nhãn" -#: common/models.py:1662 +#: common/models.py:1632 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:1667 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "DPI hỉnh ảnh tem nhãn" -#: common/models.py:1669 +#: common/models.py:1639 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:1675 +#: common/models.py:1645 msgid "Enable Reports" msgstr "Bật báo cáo" -#: common/models.py:1676 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "Cho phép tạo báo cáo" -#: common/models.py:1681 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "Chế độ gỡ lỗi" -#: common/models.py:1682 +#: common/models.py:1652 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:1687 +#: common/models.py:1657 msgid "Log Report Errors" msgstr "" -#: common/models.py:1688 +#: common/models.py:1658 msgid "Log errors which occur when generating reports" msgstr "" -#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:301 +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:302 msgid "Page Size" msgstr "Khổ giấy" -#: common/models.py:1694 +#: common/models.py:1664 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:1699 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "Bật báo cáo kiểm thử" -#: common/models.py:1700 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "Cho phép tạo báo cáo kiểm thử" -#: common/models.py:1705 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "Đính kèm báo cáo kiểm thử" -#: common/models.py:1707 +#: common/models.py:1677 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:1713 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "Sê ri toàn cục duy nhất" -#: common/models.py:1714 +#: common/models.py:1684 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:1719 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "Tự động điền số sê ri" -#: common/models.py:1720 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "Tự động điền số sê ri vào biểu mẫu" -#: common/models.py:1725 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "Xóa kho đã hết hàng" -#: common/models.py:1727 +#: common/models.py:1697 msgid "Determines default behavior when a stock item is depleted" msgstr "" -#: common/models.py:1733 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "Mẫu sinh mã theo lô" -#: common/models.py:1735 +#: common/models.py:1705 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:1740 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "Quá hạn trong kho" -#: common/models.py:1741 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "Bật chức năng quá hạn tồn kho" -#: common/models.py:1746 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "Bán kho quá hạn" -#: common/models.py:1747 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "Cho phép bán hàng kho quá hạn" -#: common/models.py:1752 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "Thời gian hàng cũ trong kho" -#: common/models.py:1754 +#: common/models.py:1724 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:1761 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "Dựng kho quá hạn" -#: common/models.py:1762 +#: common/models.py:1732 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:1767 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "Kiểm soát sở hữu kho" -#: common/models.py:1768 +#: common/models.py:1738 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:1773 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "Biểu tượng địa điểm kho mặc định" -#: common/models.py:1774 +#: common/models.py:1744 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:1778 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "Hiển thị hàng hóa đã lắp đặt" -#: common/models.py:1779 +#: common/models.py:1749 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:1784 +#: common/models.py:1754 msgid "Check BOM when installing items" msgstr "" -#: common/models.py:1786 +#: common/models.py:1756 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "" -#: common/models.py:1792 +#: common/models.py:1762 msgid "Allow Out of Stock Transfer" msgstr "" -#: common/models.py:1794 +#: common/models.py:1764 msgid "Allow stock items which are not in stock to be transferred between stock locations" msgstr "" -#: common/models.py:1800 +#: common/models.py:1770 msgid "Build Order Reference Pattern" msgstr "Mã tham chiếu đơn đặt bản dựng" -#: common/models.py:1802 +#: common/models.py:1772 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:1808 common/models.py:1836 common/models.py:1858 -#: common/models.py:1894 +#: common/models.py:1778 common/models.py:1806 common/models.py:1828 +#: common/models.py:1864 msgid "Require Responsible Owner" msgstr "" -#: common/models.py:1809 common/models.py:1837 common/models.py:1859 -#: common/models.py:1895 +#: common/models.py:1779 common/models.py:1807 common/models.py:1829 +#: common/models.py:1865 msgid "A responsible owner must be assigned to each order" msgstr "" -#: common/models.py:1814 +#: common/models.py:1784 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1816 +#: common/models.py:1786 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:1822 +#: common/models.py:1792 msgid "Enable Return Orders" msgstr "Bật đơn hàng trả lại" -#: common/models.py:1823 +#: common/models.py:1793 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:1828 +#: common/models.py:1798 msgid "Return Order Reference Pattern" msgstr "Mẫu tham chiếu đơn hàng trả lại" -#: common/models.py:1830 +#: common/models.py:1800 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1842 +#: common/models.py:1812 msgid "Edit Completed Return Orders" msgstr "Sửa đơn hàng trả lại đã hoàn thành" -#: common/models.py:1844 +#: common/models.py:1814 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:1850 +#: common/models.py:1820 msgid "Sales Order Reference Pattern" msgstr "Mẫu tham chiếu đơn đặt hàng" -#: common/models.py:1852 +#: common/models.py:1822 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:1864 +#: common/models.py:1834 msgid "Sales Order Default Shipment" msgstr "Vận chuyển mặc định đơn đặt hàng" -#: common/models.py:1865 +#: common/models.py:1835 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:1870 +#: common/models.py:1840 msgid "Edit Completed Sales Orders" msgstr "Sửa đơn đặt hàng đã hoàn thành" -#: common/models.py:1872 +#: common/models.py:1842 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:1878 -#, fuzzy -#| msgid "Mark order as complete" +#: common/models.py:1848 msgid "Mark Shipped Orders as Complete" -msgstr "Đánh dấu đơn đặt đã hoàn thành" +msgstr "" -#: common/models.py:1880 +#: common/models.py:1850 msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" msgstr "" -#: common/models.py:1886 +#: common/models.py:1856 msgid "Purchase Order Reference Pattern" msgstr "Mẫu tham chiếu đơn đặt mua" -#: common/models.py:1888 +#: common/models.py:1858 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:1900 +#: common/models.py:1870 msgid "Edit Completed Purchase Orders" msgstr "Sửa đơn đặt mua đã hoàn thành" -#: common/models.py:1902 +#: common/models.py:1872 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:1908 +#: common/models.py:1878 msgid "Auto Complete Purchase Orders" msgstr "Tự động hoàn thành đơn đặt mua" -#: common/models.py:1910 +#: common/models.py:1880 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1917 +#: common/models.py:1887 msgid "Enable password forgot" msgstr "Bật quên mật khẩu" -#: common/models.py:1918 +#: common/models.py:1888 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:1923 +#: common/models.py:1893 msgid "Enable registration" msgstr "Bật đăng ký" -#: common/models.py:1924 +#: common/models.py:1894 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:1929 +#: common/models.py:1899 msgid "Enable SSO" msgstr "Bật SSO" -#: common/models.py:1930 +#: common/models.py:1900 msgid "Enable SSO on the login pages" msgstr "Cho phép SSO tại trang đăng nhập" -#: common/models.py:1935 +#: common/models.py:1905 msgid "Enable SSO registration" msgstr "Bật đăng ký SSO" -#: common/models.py:1937 +#: common/models.py:1907 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:1943 +#: common/models.py:1913 msgid "Email required" msgstr "Yêu cầu email" -#: common/models.py:1944 +#: common/models.py:1914 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:1949 +#: common/models.py:1919 msgid "Auto-fill SSO users" msgstr "Người dùng tự động điền SSO" -#: common/models.py:1951 +#: common/models.py:1921 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:1957 +#: common/models.py:1927 msgid "Mail twice" msgstr "Thư 2 lần" -#: common/models.py:1958 +#: common/models.py:1928 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:1963 +#: common/models.py:1933 msgid "Password twice" msgstr "Mật khẩu 2 lần" -#: common/models.py:1964 +#: common/models.py:1934 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:1969 +#: common/models.py:1939 msgid "Allowed domains" msgstr "Các tên miền được phép" -#: common/models.py:1971 +#: common/models.py:1941 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:1977 +#: common/models.py:1947 msgid "Group on signup" msgstr "Nhóm khi đăng ký" -#: common/models.py:1978 +#: common/models.py:1948 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:1983 +#: common/models.py:1953 msgid "Enforce MFA" msgstr "Bắt buộc MFA" -#: common/models.py:1984 +#: common/models.py:1954 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:1989 +#: common/models.py:1959 msgid "Check plugins on startup" msgstr "Kiểm tra phần mở rộng khi khởi động" -#: common/models.py:1991 +#: common/models.py:1961 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:1999 +#: common/models.py:1969 msgid "Check for plugin updates" msgstr "Kiểm tra cập nhật plugin" -#: common/models.py:2000 +#: common/models.py:1970 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:2006 +#: common/models.py:1976 msgid "Enable URL integration" msgstr "Bật tích hợp URL" -#: common/models.py:2007 +#: common/models.py:1977 msgid "Enable plugins to add URL routes" msgstr "Bật phần mở rộng để thêm định tuyến URL" -#: common/models.py:2013 +#: common/models.py:1983 msgid "Enable navigation integration" msgstr "Bật tích hợp điều hướng" -#: common/models.py:2014 +#: common/models.py:1984 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:2020 +#: common/models.py:1990 msgid "Enable app integration" msgstr "Bật tích hợp ứng dụng" -#: common/models.py:2021 +#: common/models.py:1991 msgid "Enable plugins to add apps" msgstr "Bật phần mở rộng để thêm ứng dụng" -#: common/models.py:2027 +#: common/models.py:1997 msgid "Enable schedule integration" msgstr "Cho phép tích hợp lập lịch" -#: common/models.py:2028 +#: common/models.py:1998 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:2034 +#: common/models.py:2004 msgid "Enable event integration" msgstr "Bật tích hợp nguồn cấp sự kiện" -#: common/models.py:2035 +#: common/models.py:2005 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:2041 +#: common/models.py:2011 msgid "Enable project codes" msgstr "Bật mã dự án" -#: common/models.py:2042 +#: common/models.py:2012 msgid "Enable project codes for tracking projects" msgstr "Bật mã dự án để theo dõi dự án" -#: common/models.py:2047 +#: common/models.py:2017 msgid "Stocktake Functionality" msgstr "Chức năng kiểm kê" -#: common/models.py:2049 +#: common/models.py:2019 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:2055 +#: common/models.py:2025 msgid "Exclude External Locations" msgstr "Ngoại trừ vị trí bên ngoài" -#: common/models.py:2057 +#: common/models.py:2027 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:2063 +#: common/models.py:2033 msgid "Automatic Stocktake Period" msgstr "Giai đoạn kiểm kê tự động" -#: common/models.py:2065 +#: common/models.py:2035 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:2071 +#: common/models.py:2041 msgid "Report Deletion Interval" msgstr "Khoảng thời gian xóa báo cáo" -#: common/models.py:2073 +#: common/models.py:2043 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:2080 +#: common/models.py:2050 msgid "Display Users full names" msgstr "Hiển thị tên đầy đủ của người dùng" -#: common/models.py:2081 +#: common/models.py:2051 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:2086 +#: common/models.py:2056 msgid "Enable Test Station Data" msgstr "" -#: common/models.py:2087 +#: common/models.py:2057 msgid "Enable test station data collection for test results" msgstr "" -#: common/models.py:2099 common/models.py:2509 +#: common/models.py:2069 common/models.py:2479 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:2142 +#: common/models.py:2112 msgid "Hide inactive parts" msgstr "Ẩn sản phẩm ngừng hoạt động" -#: common/models.py:2144 +#: common/models.py:2114 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:2150 +#: common/models.py:2120 msgid "Show subscribed parts" msgstr "Hiện sản phẩm đã đăng ký" -#: common/models.py:2151 +#: common/models.py:2121 msgid "Show subscribed parts on the homepage" msgstr "Hiện sản phẩm đã đăng ký trên trang chủ" -#: common/models.py:2156 +#: common/models.py:2126 msgid "Show subscribed categories" msgstr "Hiện danh mục đã đăng ký" -#: common/models.py:2157 +#: common/models.py:2127 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:2162 +#: common/models.py:2132 msgid "Show latest parts" msgstr "Hiển thị nguyên liệu mới nhất" -#: common/models.py:2163 +#: common/models.py:2133 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:2168 +#: common/models.py:2138 msgid "Show invalid BOMs" msgstr "" -#: common/models.py:2169 +#: common/models.py:2139 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:2174 +#: common/models.py:2144 msgid "Show recent stock changes" msgstr "Hiện thay đổi kho hàng gần đây" -#: common/models.py:2175 +#: common/models.py:2145 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:2180 +#: common/models.py:2150 msgid "Show low stock" msgstr "Hiển thị hàng còn ít" -#: common/models.py:2181 +#: common/models.py:2151 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:2186 +#: common/models.py:2156 msgid "Show depleted stock" msgstr "Hiển thị hết hàng" -#: common/models.py:2187 +#: common/models.py:2157 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:2192 +#: common/models.py:2162 msgid "Show needed stock" msgstr "Hiển thị hàng cần thiết" -#: common/models.py:2193 +#: common/models.py:2163 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:2198 +#: common/models.py:2168 msgid "Show expired stock" msgstr "Bán kho quá hạn" -#: common/models.py:2199 +#: common/models.py:2169 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:2204 +#: common/models.py:2174 msgid "Show stale stock" msgstr "Hiện kho hàng ế" -#: common/models.py:2205 +#: common/models.py:2175 msgid "Show stale stock items on the homepage" msgstr "Hiện hàng trong kho bị ế trên trang chủ" -#: common/models.py:2210 +#: common/models.py:2180 msgid "Show pending builds" msgstr "Hiện bản dựng chờ xử lý" -#: common/models.py:2211 +#: common/models.py:2181 msgid "Show pending builds on the homepage" msgstr "Hiện bản dựng chờ xử lý trên trang chủ" -#: common/models.py:2216 +#: common/models.py:2186 msgid "Show overdue builds" msgstr "Hiện bản dựng quá hạn" -#: common/models.py:2217 +#: common/models.py:2187 msgid "Show overdue builds on the homepage" msgstr "Hiện bản dựng quá hạn trên trang chủ" -#: common/models.py:2222 +#: common/models.py:2192 msgid "Show outstanding POs" msgstr "Hiện PO nổi bật" -#: common/models.py:2223 +#: common/models.py:2193 msgid "Show outstanding POs on the homepage" msgstr "Hiện PO nổi bật trên trang chủ" -#: common/models.py:2228 +#: common/models.py:2198 msgid "Show overdue POs" msgstr "Hiện PO quá hạn" -#: common/models.py:2229 +#: common/models.py:2199 msgid "Show overdue POs on the homepage" msgstr "Hiện đơn mua hàng quá hạn trên trang chủ" -#: common/models.py:2234 +#: common/models.py:2204 msgid "Show outstanding SOs" msgstr "Hiện đơn hàng vận chuyển nổi bật" -#: common/models.py:2235 +#: common/models.py:2205 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:2240 +#: common/models.py:2210 msgid "Show overdue SOs" msgstr "Hiện đơn vận chuyển quá hạn" -#: common/models.py:2241 +#: common/models.py:2211 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:2246 +#: common/models.py:2216 msgid "Show pending SO shipments" msgstr "Hiện đơn vận chuyển chờ xử lý" -#: common/models.py:2247 +#: common/models.py:2217 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:2252 +#: common/models.py:2222 msgid "Show News" msgstr "Hiện tin tức" -#: common/models.py:2253 +#: common/models.py:2223 msgid "Show news on the homepage" msgstr "Hiện tin tức trên trang chủ" -#: common/models.py:2258 +#: common/models.py:2228 msgid "Inline label display" msgstr "Hiển thị nhãn cùng dòng" -#: common/models.py:2260 +#: common/models.py:2230 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:2266 +#: common/models.py:2236 msgid "Default label printer" msgstr "Máy in tem nhãn mặc định" -#: common/models.py:2268 +#: common/models.py:2238 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:2274 +#: common/models.py:2244 msgid "Inline report display" msgstr "Hiển thị báo cáo cùng hàng" -#: common/models.py:2276 +#: common/models.py:2246 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:2282 +#: common/models.py:2252 msgid "Search Parts" msgstr "Tìm sản phẩm" -#: common/models.py:2283 +#: common/models.py:2253 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:2288 +#: common/models.py:2258 msgid "Search Supplier Parts" msgstr "Tìm sản phẩm nhà cung cấp" -#: common/models.py:2289 +#: common/models.py:2259 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:2294 +#: common/models.py:2264 msgid "Search Manufacturer Parts" msgstr "Tìm sản phẩm nhà sản xuất" -#: common/models.py:2295 +#: common/models.py:2265 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:2300 +#: common/models.py:2270 msgid "Hide Inactive Parts" msgstr "Ẩn sản phẩm ngừng hoạt động" -#: common/models.py:2301 +#: common/models.py:2271 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:2306 +#: common/models.py:2276 msgid "Search Categories" msgstr "Tìm kiếm danh mục" -#: common/models.py:2307 +#: common/models.py:2277 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:2312 +#: common/models.py:2282 msgid "Search Stock" msgstr "Tìm kiếm kho" -#: common/models.py:2313 +#: common/models.py:2283 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:2318 +#: common/models.py:2288 msgid "Hide Unavailable Stock Items" msgstr "Ẩn hàng hóa trong kho không có sẵn" -#: common/models.py:2320 +#: common/models.py:2290 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:2326 +#: common/models.py:2296 msgid "Search Locations" msgstr "Tìm kiếm vị trí" -#: common/models.py:2327 +#: common/models.py:2297 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:2332 +#: common/models.py:2302 msgid "Search Companies" msgstr "Tìm kiếm công ty" -#: common/models.py:2333 +#: common/models.py:2303 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:2338 +#: common/models.py:2308 msgid "Search Build Orders" msgstr "Tìm kiếm đặt hàng xây dựng" -#: common/models.py:2339 +#: common/models.py:2309 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:2344 +#: common/models.py:2314 msgid "Search Purchase Orders" msgstr "Tìm kiếm đơn đặt mua" -#: common/models.py:2345 +#: common/models.py:2315 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:2350 +#: common/models.py:2320 msgid "Exclude Inactive Purchase Orders" msgstr "Loại trừ đơn đặt mua không hoạt động" -#: common/models.py:2352 +#: common/models.py:2322 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:2358 +#: common/models.py:2328 msgid "Search Sales Orders" msgstr "Tìm đơn đặt hàng người mua" -#: common/models.py:2359 +#: common/models.py:2329 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:2364 +#: common/models.py:2334 msgid "Exclude Inactive Sales Orders" msgstr "Loại trừ đơn đặt hàng người mua không hoạt động" -#: common/models.py:2366 +#: common/models.py:2336 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:2372 +#: common/models.py:2342 msgid "Search Return Orders" msgstr "Tìm kiếm đơn hàng trả lại" -#: common/models.py:2373 +#: common/models.py:2343 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:2378 +#: common/models.py:2348 msgid "Exclude Inactive Return Orders" msgstr "Loại trừ đơn hàng trả lại không hoạt động" -#: common/models.py:2380 +#: common/models.py:2350 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:2386 +#: common/models.py:2356 msgid "Search Preview Results" msgstr "Kết quả xem trước tìm kiếm" -#: common/models.py:2388 +#: common/models.py:2358 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:2394 +#: common/models.py:2364 msgid "Regex Search" msgstr "Tìm kiếm biểu thức" -#: common/models.py:2395 +#: common/models.py:2365 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:2400 +#: common/models.py:2370 msgid "Whole Word Search" msgstr "Tìm phù hợp toàn bộ chữ" -#: common/models.py:2401 +#: common/models.py:2371 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:2406 +#: common/models.py:2376 msgid "Show Quantity in Forms" msgstr "Hiện số lượng trong biểu mẫu" -#: common/models.py:2407 +#: common/models.py:2377 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:2412 +#: common/models.py:2382 msgid "Escape Key Closes Forms" msgstr "Phím escape để đóng mẫu biểu" -#: common/models.py:2413 +#: common/models.py:2383 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:2418 +#: common/models.py:2388 msgid "Fixed Navbar" msgstr "Cố định điều hướng" -#: common/models.py:2419 +#: common/models.py:2389 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:2424 +#: common/models.py:2394 msgid "Date Format" msgstr "Định dạng ngày" -#: common/models.py:2425 +#: common/models.py:2395 msgid "Preferred format for displaying dates" msgstr "Định dạng ưa chuộng khi hiển thị ngày" -#: common/models.py:2438 part/templates/part/detail.html:41 +#: common/models.py:2408 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Lập lịch sản phẩm" -#: common/models.py:2439 +#: common/models.py:2409 msgid "Display part scheduling information" msgstr "Hiển thị thông tin lịch sản phẩm" -#: common/models.py:2444 part/templates/part/detail.html:62 +#: common/models.py:2414 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "Kiểm kê sản phẩm" -#: common/models.py:2446 +#: common/models.py:2416 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:2452 +#: common/models.py:2422 msgid "Table String Length" msgstr "Độ dài chuỗi trong bảng" -#: common/models.py:2454 +#: common/models.py:2424 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:2460 +#: common/models.py:2430 msgid "Default part label template" msgstr "Mẫu nhãn sản phẩm mặc định" -#: common/models.py:2461 +#: common/models.py:2431 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:2466 +#: common/models.py:2436 msgid "Default stock item template" msgstr "Mẫu hàng hóa trong khi mặc định" -#: common/models.py:2468 +#: common/models.py:2438 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:2474 +#: common/models.py:2444 msgid "Default stock location label template" msgstr "Mẫu nhãn vị trí kho mặc định" -#: common/models.py:2476 +#: common/models.py:2446 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:2482 +#: common/models.py:2452 msgid "Default build line label template" msgstr "" -#: common/models.py:2484 +#: common/models.py:2454 msgid "The build line label template to be automatically selected" msgstr "" -#: common/models.py:2490 +#: common/models.py:2460 msgid "Receive error reports" msgstr "Nhận báo cáo lỗi" -#: common/models.py:2491 +#: common/models.py:2461 msgid "Receive notifications for system errors" msgstr "Nhận thông báo khi có lỗi hệ thống" -#: common/models.py:2496 +#: common/models.py:2466 msgid "Last used printing machines" msgstr "" -#: common/models.py:2497 +#: common/models.py:2467 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2540 +#: common/models.py:2487 common/models.py:2488 common/models.py:2636 +#: common/models.py:2637 common/models.py:2882 common/models.py:2883 +#: common/models.py:3193 common/models.py:3194 part/models.py:3193 +#: part/models.py:3280 part/models.py:3353 part/models.py:3381 +#: plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "Người dùng" + +#: common/models.py:2510 msgid "Price break quantity" msgstr "Số lượng giá phá vỡ" -#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1382 order/models.py:2301 -#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 +#: common/models.py:2517 company/serializers.py:472 order/admin.py:42 +#: order/models.py:1346 order/models.py:2265 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1886 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:740 msgid "Price" msgstr "Giá" -#: common/models.py:2548 +#: common/models.py:2518 msgid "Unit price at specified quantity" msgstr "Đơn vị giá theo số lượng cụ thể" -#: common/models.py:2719 common/models.py:2904 +#: common/models.py:2613 common/models.py:2798 msgid "Endpoint" msgstr "Đầu mối" -#: common/models.py:2720 +#: common/models.py:2614 msgid "Endpoint at which this webhook is received" msgstr "Đầu mối tại điểm webhook được nhận" -#: common/models.py:2730 +#: common/models.py:2624 msgid "Name for this webhook" msgstr "Tên của webhook này" -#: common/models.py:2734 company/models.py:160 company/models.py:814 -#: machine/models.py:39 part/admin.py:88 part/models.py:1088 -#: plugin/models.py:65 templates/js/translated/company.js:523 +#: common/models.py:2628 company/models.py:163 company/models.py:782 +#: machine/models.py:39 part/admin.py:88 part/models.py:1081 +#: plugin/models.py:66 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3464,101 +3408,118 @@ msgstr "Tên của webhook này" msgid "Active" msgstr "Hoạt động" -#: common/models.py:2734 +#: common/models.py:2628 msgid "Is this webhook active" msgstr "Webhook có hoạt động không" -#: common/models.py:2750 users/models.py:159 +#: common/models.py:2644 users/models.py:159 msgid "Token" msgstr "Chữ ký số" -#: common/models.py:2751 +#: common/models.py:2645 msgid "Token for access" msgstr "Chữ ký số để truy cập" -#: common/models.py:2759 +#: common/models.py:2653 msgid "Secret" msgstr "Bí mật" -#: common/models.py:2760 +#: common/models.py:2654 msgid "Shared secret for HMAC" msgstr "Mã bí mật dùng chung cho HMAC" -#: common/models.py:2868 +#: common/models.py:2762 msgid "Message ID" msgstr "Mã Tin nhắn" -#: common/models.py:2869 +#: common/models.py:2763 msgid "Unique identifier for this message" msgstr "Định danh duy nhất cho tin nhắn này" -#: common/models.py:2877 +#: common/models.py:2771 msgid "Host" msgstr "Máy chủ" -#: common/models.py:2878 +#: common/models.py:2772 msgid "Host from which this message was received" msgstr "Mãy chủ từ tin nhắn này đã được nhận" -#: common/models.py:2886 +#: common/models.py:2780 msgid "Header" msgstr "Đầu mục" -#: common/models.py:2887 +#: common/models.py:2781 msgid "Header of this message" msgstr "Đầu mục tin nhắn" -#: common/models.py:2894 +#: common/models.py:2788 msgid "Body" msgstr "Thân" -#: common/models.py:2895 +#: common/models.py:2789 msgid "Body of this message" msgstr "Thân tin nhắn này" -#: common/models.py:2905 +#: common/models.py:2799 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:2910 +#: common/models.py:2804 msgid "Worked on" msgstr "Làm việc vào" -#: common/models.py:2911 +#: common/models.py:2805 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:3037 +#: common/models.py:2931 msgid "Id" msgstr "Mã" -#: common/models.py:3039 templates/js/translated/company.js:965 +#: common/models.py:2933 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "Tiêu đề" -#: common/models.py:3043 templates/js/translated/news.js:60 +#: common/models.py:2935 common/models.py:3177 company/models.py:149 +#: company/models.py:440 company/models.py:500 company/models.py:799 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +#: part/admin.py:55 part/models.py:955 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "Liên kết" + +#: common/models.py:2937 templates/js/translated/news.js:60 msgid "Published" msgstr "Đã công bố" -#: common/models.py:3045 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2939 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:3047 templates/js/translated/news.js:52 +#: common/models.py:2941 templates/js/translated/news.js:52 msgid "Summary" msgstr "Tóm tắt" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Read" msgstr "Đọc" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Was this news item read?" msgstr "Tin này đã được đọc?" -#: common/models.py:3067 company/models.py:156 part/models.py:972 +#: common/models.py:2961 company/models.py:159 part/models.py:965 #: 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.html:35 @@ -3568,34 +3529,89 @@ msgstr "Tin này đã được đọc?" msgid "Image" msgstr "Hình ảnh" -#: common/models.py:3067 +#: common/models.py:2961 msgid "Image file" msgstr "Tệp ảnh" -#: common/models.py:3109 +#: common/models.py:2973 common/models.py:3161 +msgid "Target model type for this image" +msgstr "" + +#: common/models.py:2977 +msgid "Target model ID for this image" +msgstr "" + +#: common/models.py:3018 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:3128 +#: common/models.py:3037 msgid "Unit name" msgstr "Tên đơn vị" -#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3044 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "Biểu tượng" -#: common/models.py:3136 +#: common/models.py:3045 msgid "Optional unit symbol" msgstr "Biểu tượng đơn vị tùy chọn" -#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3052 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "Định nghĩa" -#: common/models.py:3144 +#: common/models.py:3053 msgid "Unit definition" msgstr "Định nghĩa đơn vị" +#: common/models.py:3111 common/models.py:3168 stock/models.py:2426 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "Đính kèm" + +#: common/models.py:3123 +msgid "Missing file" +msgstr "Tập tin bị thiếu" + +#: common/models.py:3124 +msgid "Missing external link" +msgstr "Thiếu liên kết bên ngoài" + +#: common/models.py:3169 +msgid "Select file to attach" +msgstr "Chọn file đính kèm" + +#: common/models.py:3184 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "Bình luận" + +#: common/models.py:3185 +msgid "Attachment comment" +msgstr "" + +#: common/models.py:3201 +msgid "Upload date" +msgstr "" + +#: common/models.py:3202 +msgid "Date the file was uploaded" +msgstr "" + +#: common/models.py:3206 +msgid "File size" +msgstr "" + +#: common/models.py:3206 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3244 common/serializers.py:553 +msgid "Invalid model type specified for attachment" +msgstr "" + #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" @@ -3630,66 +3646,103 @@ 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:366 +#: common/serializers.py:371 msgid "Is Running" msgstr "Đang chạy" -#: common/serializers.py:372 +#: common/serializers.py:377 msgid "Pending Tasks" msgstr "Công việc chờ xử lý" -#: common/serializers.py:378 +#: common/serializers.py:383 msgid "Scheduled Tasks" msgstr "Tác vụ theo lịch" -#: common/serializers.py:384 +#: common/serializers.py:389 msgid "Failed Tasks" msgstr "Tác vụ thất bại" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Task ID" msgstr "ID tác vụ" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Unique task ID" msgstr "ID tác vụ duy nhất" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock" msgstr "Khoá" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock time" msgstr "Thời gian khóa" -#: common/serializers.py:403 +#: common/serializers.py:408 msgid "Task name" msgstr "Tên công việc" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function" msgstr "Chức năng" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function name" msgstr "Tên chức năng" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Arguments" msgstr "Đối số" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Task arguments" msgstr "Đối số công việc" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Keyword Arguments" msgstr "Đối số từ khóa" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Task keyword arguments" msgstr "Đối số từ khóa công việc" +#: common/serializers.py:525 +msgid "Filename" +msgstr "Tên tập tin" + +#: common/serializers.py:532 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: common/serializers.py:559 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "" + +#: common/validators.py:33 +msgid "No attachment model type provided" +msgstr "" + +#: common/validators.py:39 +msgid "Invalid attachment model type" +msgstr "" + +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "Tên miền rỗng là không được phép." + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +msgstr "Tên miền không hợp lệ: {domain}" + #: 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 @@ -3728,210 +3781,222 @@ msgstr "Hàng hóa đã được nhập vào" msgid "Previous Step" msgstr "Bước trước" -#: company/api.py:164 +#: company/api.py:144 msgid "Part is Active" msgstr "" -#: company/api.py:168 +#: company/api.py:148 msgid "Manufacturer is Active" msgstr "" -#: company/api.py:317 +#: company/api.py:281 msgid "Supplier Part is Active" msgstr "" -#: company/api.py:321 +#: company/api.py:285 msgid "Internal Part is Active" msgstr "" -#: company/api.py:325 +#: company/api.py:289 msgid "Supplier is Active" msgstr "" -#: company/models.py:114 +#: company/models.py:100 company/models.py:365 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:822 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "Doanh nghiêp" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "Doanh nghiệp" + +#: company/models.py:117 msgid "Company description" msgstr "Mô tả công ty" -#: company/models.py:115 +#: company/models.py:118 msgid "Description of the company" msgstr "Mô tả của công ty" -#: company/models.py:120 company/templates/company/company_base.html:106 +#: company/models.py:123 company/templates/company/company_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:532 msgid "Website" msgstr "Trang web" -#: company/models.py:120 +#: company/models.py:123 msgid "Company website URL" msgstr "URL trang web của công ty" -#: company/models.py:125 +#: company/models.py:128 msgid "Phone number" msgstr "Số điện thoại" -#: company/models.py:127 +#: company/models.py:130 msgid "Contact phone number" msgstr "Số điện thoại liên hệ" -#: company/models.py:134 +#: company/models.py:137 msgid "Contact email address" msgstr "Địa chỉ email liên hệ" -#: company/models.py:139 company/templates/company/company_base.html:145 +#: company/models.py:142 company/templates/company/company_base.html:145 #: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "Liên hệ" -#: company/models.py:141 +#: company/models.py:144 msgid "Point of contact" msgstr "Đầu mối liên hệ" -#: company/models.py:147 +#: company/models.py:150 msgid "Link to external company information" msgstr "Liên kết đến thông tin công ty ngoài" -#: company/models.py:160 +#: company/models.py:163 msgid "Is this company active?" msgstr "" -#: company/models.py:165 +#: company/models.py:168 msgid "is customer" msgstr "là khách hàng" -#: company/models.py:166 +#: company/models.py:169 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:171 +#: company/models.py:174 msgid "is supplier" msgstr "là nhà cung cấp" -#: company/models.py:172 +#: company/models.py:175 msgid "Do you purchase items from this company?" msgstr "Bạn có mua hàng từ công ty này?" -#: company/models.py:177 +#: company/models.py:180 msgid "is manufacturer" msgstr "là nhà sản xuất" -#: company/models.py:178 +#: company/models.py:181 msgid "Does this company manufacture parts?" msgstr "Công ty này có sản xuất sản phẩm?" -#: company/models.py:186 +#: company/models.py:189 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:273 company/models.py:382 -#: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:812 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 -msgid "Company" -msgstr "Doanh nghiêp" - -#: company/models.py:383 +#: company/models.py:366 msgid "Select company" msgstr "Chọn doanh nghiệp" -#: company/models.py:388 +#: company/models.py:371 msgid "Address title" msgstr "Tiêu đề địa chỉ" -#: company/models.py:389 +#: company/models.py:372 msgid "Title describing the address entry" msgstr "Tiêu đề mô tả mục địa chỉ" -#: company/models.py:395 +#: company/models.py:378 msgid "Primary address" msgstr "Địa chỉ chính" -#: company/models.py:396 +#: company/models.py:379 msgid "Set as primary address" msgstr "Đặt làm địa chỉ chính" -#: company/models.py:401 templates/js/translated/company.js:914 +#: company/models.py:384 templates/js/translated/company.js:914 #: templates/js/translated/company.js:971 msgid "Line 1" msgstr "Dòng 1" -#: company/models.py:402 +#: company/models.py:385 msgid "Address line 1" msgstr "Địa chỉ dòng 1" -#: company/models.py:408 templates/js/translated/company.js:915 +#: company/models.py:391 templates/js/translated/company.js:915 #: templates/js/translated/company.js:977 msgid "Line 2" msgstr "Dòng 2" -#: company/models.py:409 +#: company/models.py:392 msgid "Address line 2" msgstr "Địa chỉ dòng 2" -#: company/models.py:415 company/models.py:416 +#: company/models.py:398 company/models.py:399 #: templates/js/translated/company.js:983 msgid "Postal code" msgstr "Mã bưu chính" -#: company/models.py:422 +#: company/models.py:405 msgid "City/Region" msgstr "Thành phố/Vùng" -#: company/models.py:423 +#: company/models.py:406 msgid "Postal code city/region" msgstr "Mã bưu chính thành phố/vùng" -#: company/models.py:429 +#: company/models.py:412 msgid "State/Province" msgstr "Bang/Tỉnh" -#: company/models.py:430 +#: company/models.py:413 msgid "State or province" msgstr "Bang hay tỉnh" -#: company/models.py:436 templates/js/translated/company.js:1001 +#: company/models.py:419 templates/js/translated/company.js:1001 msgid "Country" msgstr "Quốc gia" -#: company/models.py:437 +#: company/models.py:420 msgid "Address country" msgstr "Địa chỉ quốc gia" -#: company/models.py:443 +#: company/models.py:426 msgid "Courier shipping notes" msgstr "Ghi chú vận chuyển" -#: company/models.py:444 +#: company/models.py:427 msgid "Notes for shipping courier" msgstr "Ghi chú dành cho chuyển phát nhanh" -#: company/models.py:450 +#: company/models.py:433 msgid "Internal shipping notes" msgstr "Ghi chú nội bọ chuyển phát nhanh" -#: company/models.py:451 +#: company/models.py:434 msgid "Shipping notes for internal use" msgstr "Ghi chú nội bộ sử dụng cho chuyển phát nhanh" -#: company/models.py:458 +#: company/models.py:441 msgid "Link to address information (external)" msgstr "Liên kết thông tin địa chỉ (bên ngoài)" -#: company/models.py:489 company/models.py:792 stock/models.py:768 -#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 +#: company/models.py:463 company/models.py:574 company/models.py:792 +#: 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:475 company/models.py:760 stock/models.py:766 +#: stock/serializers.py:422 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:491 company/models.py:794 +#: company/models.py:477 company/models.py:762 msgid "Select part" msgstr "Chọn sản phẩm" -#: company/models.py:500 company/templates/company/company_base.html:82 +#: company/models.py:486 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:530 +#: company/templates/company/supplier_part.html:145 part/serializers.py:525 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -3941,152 +4006,154 @@ msgstr "Chọn sản phẩm" msgid "Manufacturer" msgstr "Nhà sản xuất" -#: company/models.py:501 +#: company/models.py:487 msgid "Select manufacturer" msgstr "Chọn nhà sản xuất" -#: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:540 +#: company/models.py:493 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:535 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 -#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1801 #: templates/js/translated/purchase_order.js:1851 #: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "" -#: company/models.py:508 +#: company/models.py:494 msgid "Manufacturer Part Number" msgstr "Mã số nhà sản xuất" -#: company/models.py:515 +#: company/models.py:501 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:524 +#: company/models.py:510 msgid "Manufacturer part description" msgstr "Mô tả sản phẩm của nhà sản xuất" -#: company/models.py:581 company/models.py:608 company/models.py:824 -#: 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:615 +#: company/models.py:581 msgid "Parameter name" msgstr "Tên tham số" -#: company/models.py:621 report/templates/report/inventree_test_report.html:104 -#: stock/models.py:2429 templates/js/translated/company.js:1166 -#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 +#: company/models.py:587 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2418 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1493 #: templates/js/translated/stock.js:1522 msgid "Value" msgstr "Giá trị" -#: company/models.py:622 +#: company/models.py:588 msgid "Parameter value" msgstr "Giá trị tham số" -#: company/models.py:629 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1052 part/models.py:3666 +#: company/models.py:595 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1045 part/models.py:3646 #: part/templates/part/part_base.html:284 -#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1512 +#: templates/js/translated/part.js:1616 templates/js/translated/part.js:2370 msgid "Units" msgstr "Đơn vị" -#: company/models.py:630 +#: company/models.py:596 msgid "Parameter units" msgstr "Đơn vị tham số" -#: company/models.py:732 +#: company/models.py:648 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:777 stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "Sản phẩm nhà cung cấp" + +#: company/models.py:700 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:739 +#: company/models.py:707 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:753 +#: company/models.py:721 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:802 company/templates/company/company_base.html:87 +#: company/models.py:770 company/templates/company/company_base.html:87 #: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:514 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:509 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:511 -#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1769 #: templates/js/translated/pricing.js:498 #: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "Nhà cung cấp" -#: company/models.py:803 +#: company/models.py:771 msgid "Select supplier" msgstr "Chọn nhà cung cấp" -#: company/models.py:809 part/serializers.py:525 +#: company/models.py:777 part/serializers.py:520 msgid "Supplier stock keeping unit" msgstr "Đơn vị quản lý kho nhà cung cấp" -#: company/models.py:815 +#: company/models.py:783 msgid "Is this supplier part active?" msgstr "" -#: company/models.py:825 +#: company/models.py:793 msgid "Select manufacturer part" msgstr "Chọn sản phẩm của nhà sản xuất" -#: company/models.py:832 +#: company/models.py:800 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:841 +#: company/models.py:809 msgid "Supplier part description" msgstr "Mô tả sản phẩm nhà cung cấp" -#: company/models.py:848 company/templates/company/supplier_part.html:187 -#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 +#: company/models.py:816 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4093 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_purchase_order_report.html:32 #: report/templates/report/inventree_return_order_report.html:27 #: report/templates/report/inventree_sales_order_report.html:32 #: report/templates/report/inventree_stock_location_report.html:105 -#: stock/serializers.py:708 +#: stock/serializers.py:710 msgid "Note" msgstr "Ghi chú" -#: company/models.py:857 part/models.py:2010 +#: company/models.py:825 part/models.py:2003 msgid "base cost" msgstr "chi phí cơ sở" -#: company/models.py:858 part/models.py:2011 +#: company/models.py:826 part/models.py:2004 msgid "Minimum charge (e.g. stocking fee)" msgstr "Thu phí tối thiểu (vd: phí kho bãi)" -#: company/models.py:865 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 +#: company/models.py:833 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:797 stock/serializers.py:1475 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 #: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "Đóng gói" -#: company/models.py:866 +#: company/models.py:834 msgid "Part packaging" msgstr "Đóng gói sản phẩm" -#: company/models.py:871 templates/js/translated/company.js:1651 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: company/models.py:839 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:311 #: templates/js/translated/purchase_order.js:841 #: templates/js/translated/purchase_order.js:1103 @@ -4095,35 +4162,35 @@ msgstr "Đóng gói sản phẩm" msgid "Pack Quantity" msgstr "Số lượng gói" -#: company/models.py:873 +#: company/models.py:841 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:892 part/models.py:2017 +#: company/models.py:860 part/models.py:2010 msgid "multiple" msgstr "nhiều" -#: company/models.py:893 +#: company/models.py:861 msgid "Order multiple" msgstr "Đặt hàng nhiều" -#: company/models.py:905 +#: company/models.py:873 msgid "Quantity available from supplier" msgstr "Số lượng có sẵn từ nhà cung cấp" -#: company/models.py:911 +#: company/models.py:879 msgid "Availability Updated" msgstr "Sẵn hàng đã được cập nhật" -#: company/models.py:912 +#: company/models.py:880 msgid "Date of last update of availability data" msgstr "Ngày cập nhật cuối thông tin tồn kho" -#: company/serializers.py:163 +#: company/serializers.py:161 msgid "Default currency used for this supplier" msgstr "Tiền tệ mặc định được sử dụng cho nhà cung cấp này" -#: company/serializers.py:381 part/admin.py:126 +#: company/serializers.py:357 part/admin.py:126 #: part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1689 #: templates/js/translated/table_filters.js:355 @@ -4135,7 +4202,7 @@ msgstr "Còn hàng" #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 #: templates/js/translated/model_renderers.js:312 -#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +#: templates/js/translated/part.js:815 templates/js/translated/part.js:1219 msgid "Inactive" msgstr "Không hoạt động" @@ -4174,7 +4241,7 @@ msgstr "Xóa doanh nghiệp" #: report/templates/report/inventree_purchase_order_report.html:40 #: report/templates/report/inventree_sales_order_report.html:40 #: report/templates/report/inventree_test_report.html:84 -#: report/templates/report/inventree_test_report.html:163 +#: report/templates/report/inventree_test_report.html:162 msgid "Part image" msgstr "Ảnh sản phẩm" @@ -4193,10 +4260,10 @@ msgstr "Tải hình ảnh từ URL" msgid "Delete image" msgstr "Xóa ảnh" -#: company/templates/company/company_base.html:92 order/models.py:940 -#: order/models.py:2068 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:148 stock/models.py:821 -#: stock/models.py:822 stock/serializers.py:1229 +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2032 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:819 +#: stock/models.py:820 stock/serializers.py:1225 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 @@ -4407,7 +4474,7 @@ msgstr "Chưa có thông tin nhà sản xuất" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:836 +#: part/admin.py:122 part/serializers.py:832 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4427,8 +4494,8 @@ msgstr "Thông số" msgid "New Parameter" msgstr "Tham số mới" -#: company/templates/company/manufacturer_part.html:206 -#: templates/js/translated/part.js:1422 +#: company/templates/company/manufacturer_part.html:196 +#: templates/js/translated/part.js:1423 msgid "Add Parameter" msgstr "Thêm thông số" @@ -4456,15 +4523,6 @@ msgstr "Danh bạ" msgid "Addresses" msgstr "Địa chỉ" -#: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:452 -#: stock/models.py:779 stock/templates/stock/item_base.html:233 -#: templates/js/translated/company.js:1600 -#: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2280 -msgid "Supplier Part" -msgstr "Sản phẩm nhà cung cấp" - #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1526 msgid "Supplier part actions" @@ -4507,8 +4565,8 @@ msgid "No supplier information available" msgstr "Chưa có thông tin nhà cung cấp" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:524 -#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: part/bom.py:311 part/serializers.py:519 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1787 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1850 #: templates/js/translated/purchase_order.js:2028 @@ -4520,12 +4578,12 @@ msgid "Supplier Part Stock" msgstr "Kho sản phẩm nhà cung cấp" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:207 msgid "Create new stock item" msgstr "Thêm mới hàng trong kho" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "Hàng trong kho mới" @@ -4557,15 +4615,15 @@ msgid "Update Part Availability" msgstr "Cập nhật độ sẵn sàng sản phẩm" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:835 part/stocktake.py:223 +#: part/serializers.py:831 part/stocktake.py:224 #: part/templates/part/category.html:183 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:916 stock/serializers.py:1080 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:918 stock/serializers.py:1091 #: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:191 #: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1061 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:206 msgid "Stock Items" @@ -4592,10 +4650,6 @@ msgstr "Khách hàng" msgid "New Customer" msgstr "Khách hàng mới" -#: company/views.py:51 templates/js/translated/search.js:192 -msgid "Companies" -msgstr "Doanh nghiệp" - #: company/views.py:52 msgid "New Company" msgstr "Doanh nghiệp mới" @@ -4616,7 +4670,7 @@ msgstr "" msgid "Connected" msgstr "" -#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: machine/machine_types/label_printer.py:235 order/api.py:1467 #: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "Không rõ" @@ -4705,7 +4759,7 @@ msgstr "" msgid "Config type" msgstr "" -#: order/admin.py:30 order/models.py:89 +#: order/admin.py:30 order/models.py:90 #: report/templates/report/inventree_purchase_order_report.html:31 #: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 @@ -4714,30 +4768,30 @@ msgstr "" msgid "Total Price" msgstr "Tổng tiền" -#: order/api.py:161 order/serializers.py:91 +#: order/api.py:157 order/serializers.py:90 #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "Trạng thái đặt hàng" -#: order/api.py:165 templates/js/translated/table_filters.js:194 +#: order/api.py:161 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "" -#: order/api.py:240 +#: order/api.py:236 msgid "No matching purchase order found" msgstr "Không tìm thấy đơn đặt mua phù hợp" -#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 -#: order/models.py:1586 order/models.py:1700 order/models.py:1854 -#: order/models.py:2267 order/models.py:2318 +#: order/api.py:435 order/api.py:801 order/models.py:1395 order/models.py:1504 +#: order/models.py:1550 order/models.py:1664 order/models.py:1818 +#: order/models.py:2231 order/models.py:2282 #: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "Đặt hàng" -#: order/api.py:441 order/api.py:838 +#: order/api.py:439 order/api.py:822 msgid "Order Complete" msgstr "" @@ -4745,13 +4799,13 @@ msgstr "" msgid "Order Pending" msgstr "" -#: order/api.py:1509 order/models.py:380 order/models.py:1432 -#: order/models.py:1541 order/templates/order/order_base.html:9 +#: order/api.py:1461 order/models.py:380 order/models.py:1396 +#: order/models.py:1505 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_purchase_order_report.html:14 -#: stock/serializers.py:119 stock/templates/stock/item_base.html:176 +#: stock/serializers.py:118 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/part.js:1746 templates/js/translated/pricing.js:804 #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1673 @@ -4759,8 +4813,8 @@ msgstr "" msgid "Purchase Order" msgstr "Đơn hàng" -#: order/api.py:1513 order/models.py:2017 order/models.py:2268 -#: order/models.py:2319 order/templates/order/return_order_base.html:9 +#: order/api.py:1465 order/models.py:1981 order/models.py:2232 +#: order/models.py:2283 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report.html:13 #: templates/js/translated/return_order.js:280 @@ -4768,15 +4822,15 @@ msgstr "Đơn hàng" msgid "Return Order" msgstr "Đơn hàng trả lại" -#: order/models.py:90 +#: order/models.py:91 msgid "Total price for this order" msgstr "Tổng tiền cho đơn hàng hàng" -#: order/models.py:95 order/serializers.py:71 +#: order/models.py:96 order/serializers.py:70 msgid "Order Currency" msgstr "Tiền tệ đơn đặt hàng" -#: order/models.py:98 order/serializers.py:72 +#: order/models.py:99 order/serializers.py:71 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)" @@ -4792,7 +4846,7 @@ msgstr "Mô tả đơn đặt (tùy chọn)" msgid "Select project code for this order" msgstr "Mã dự án đã chọn cho đơn đặt hàng này" -#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 msgid "Link to external page" msgstr "Liên kết đến trang bên ngoài" @@ -4816,11 +4870,11 @@ msgstr "Đầu mối liên hệ của đơn đặt này" msgid "Company address for this order" msgstr "Địa chỉ công ty cho đơn đặt này" -#: order/models.py:464 order/models.py:929 +#: order/models.py:464 order/models.py:927 msgid "Order reference" msgstr "Mã đặt hàng" -#: order/models.py:472 order/models.py:953 +#: order/models.py:472 order/models.py:951 msgid "Purchase order status" msgstr "Trạng thái đơn đặt mua" @@ -4841,15 +4895,15 @@ msgstr "Mã tham chiếu đơn đặt nhà cung cấp" msgid "received by" msgstr "nhận bởi" -#: order/models.py:514 order/models.py:2094 +#: order/models.py:514 order/models.py:2058 msgid "Issue Date" msgstr "Ngày phát hành" -#: order/models.py:515 order/models.py:2095 +#: order/models.py:515 order/models.py:2059 msgid "Date order was issued" msgstr "Ngày đặt hàng đã phát hành" -#: order/models.py:522 order/models.py:2102 +#: order/models.py:522 order/models.py:2066 msgid "Date order was completed" msgstr "Ngày đặt hàng đã được hoàn thiện" @@ -4861,98 +4915,94 @@ msgstr "Nhà cung cấp sản phẩm phải trùng với nhà cung cấp PO" msgid "Quantity must be a positive number" msgstr "Số lượng phải là số dương" -#: order/models.py:941 +#: order/models.py:939 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:964 order/models.py:2087 +#: order/models.py:962 order/models.py:2051 msgid "Customer Reference " msgstr "Tham chiếu khách hàng " -#: order/models.py:965 order/models.py:2088 +#: order/models.py:963 order/models.py:2052 msgid "Customer order reference code" msgstr "Mã tham chiếu đơn đặt của khách hàng" -#: order/models.py:969 order/models.py:1707 +#: order/models.py:967 order/models.py:1671 #: templates/js/translated/sales_order.js:879 #: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "Ngày giao hàng" -#: order/models.py:978 +#: order/models.py:976 msgid "shipped by" msgstr "vận chuyển bằng" -#: order/models.py:1027 -#, fuzzy -#| msgid "Build output is already completed" +#: order/models.py:1025 msgid "Order is already complete" -msgstr "Đầu ra bản dựng đã được hoàn thiện" +msgstr "" -#: order/models.py:1030 -#, fuzzy -#| msgid "Order cannot be cancelled" +#: order/models.py:1028 msgid "Order is already cancelled" -msgstr "Đơn đặt không thể bị hủy" +msgstr "" -#: order/models.py:1034 +#: order/models.py:1032 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:1038 +#: order/models.py:1036 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:1043 +#: order/models.py:1041 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:1309 +#: order/models.py:1273 msgid "Item quantity" msgstr "Số lượng mặt hàng" -#: order/models.py:1326 +#: order/models.py:1290 msgid "Line item reference" msgstr "Tham chiếu khoản riêng" -#: order/models.py:1333 +#: order/models.py:1297 msgid "Line item notes" msgstr "Ghi chú khoản riêng" -#: order/models.py:1345 +#: order/models.py:1309 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:1366 +#: order/models.py:1330 msgid "Line item description (optional)" msgstr "Mô tả khoản riêng (tùy chọn)" -#: order/models.py:1372 +#: order/models.py:1336 msgid "Context" msgstr "Ngữ cảnh" -#: order/models.py:1373 +#: order/models.py:1337 msgid "Additional context for this line" msgstr "Ngữ cảnh bổ sung" -#: order/models.py:1383 +#: order/models.py:1347 msgid "Unit price" msgstr "Đơn giá" -#: order/models.py:1416 +#: order/models.py:1380 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:1423 +#: order/models.py:1387 msgid "deleted" msgstr "đã bị xóa" -#: order/models.py:1451 +#: order/models.py:1415 msgid "Supplier part" msgstr "Sản phẩm nhà cung cấp" -#: order/models.py:1458 order/templates/order/order_base.html:196 -#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: order/models.py:1422 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1870 templates/js/translated/part.js:1902 #: templates/js/translated/purchase_order.js:1306 #: templates/js/translated/purchase_order.js:2169 #: templates/js/translated/return_order.js:763 @@ -4961,196 +5011,196 @@ msgstr "Sản phẩm nhà cung cấp" msgid "Received" msgstr "Đã nhận" -#: order/models.py:1459 +#: order/models.py:1423 msgid "Number of items received" msgstr "Số mục đã nhận" -#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 +#: order/models.py:1431 stock/models.py:938 stock/serializers.py:556 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "Giá mua" -#: order/models.py:1468 +#: order/models.py:1432 msgid "Unit purchase price" msgstr "Giá đơn vị mua" -#: order/models.py:1483 +#: order/models.py:1447 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:1574 +#: order/models.py:1538 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:1579 +#: order/models.py:1543 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:1605 part/templates/part/part_pricing.html:107 +#: order/models.py:1569 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:1606 +#: order/models.py:1570 msgid "Unit sale price" msgstr "Giá bán đơn vị" -#: order/models.py:1615 order/status_codes.py:43 +#: order/models.py:1579 order/status_codes.py:43 #: templates/js/translated/sales_order.js:1559 #: templates/js/translated/sales_order.js:1680 #: templates/js/translated/sales_order.js:1993 msgid "Shipped" msgstr "Đã chuyển" -#: order/models.py:1616 +#: order/models.py:1580 msgid "Shipped quantity" msgstr "Số lượng đã vận chuyển" -#: order/models.py:1708 +#: order/models.py:1672 msgid "Date of shipment" msgstr "Ngày vận chuyển" -#: order/models.py:1714 templates/js/translated/sales_order.js:1072 +#: order/models.py:1678 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "Ngày giao hàng" -#: order/models.py:1715 +#: order/models.py:1679 msgid "Date of delivery of shipment" msgstr "Ngày giao hàng của vận chuyển" -#: order/models.py:1723 +#: order/models.py:1687 msgid "Checked By" msgstr "Kiểm tra bởi" -#: order/models.py:1724 +#: order/models.py:1688 msgid "User who checked this shipment" msgstr "Người dùng đã kiểm tra vận chuyển này" -#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 -#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 +#: order/models.py:1695 order/models.py:1908 order/serializers.py:1342 +#: order/serializers.py:1452 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "Vận chuyển" -#: order/models.py:1732 +#: order/models.py:1696 msgid "Shipment number" msgstr "Mã vận chuyển" -#: order/models.py:1740 +#: order/models.py:1704 msgid "Tracking Number" msgstr "Số theo dõi" -#: order/models.py:1741 +#: order/models.py:1705 msgid "Shipment tracking information" msgstr "Thông tin theo dõi vận chuyển" -#: order/models.py:1748 +#: order/models.py:1712 msgid "Invoice Number" msgstr "Mã hóa đơn" -#: order/models.py:1749 +#: order/models.py:1713 msgid "Reference number for associated invoice" msgstr "Số tham chiếu liên kết với hóa đơn" -#: order/models.py:1769 +#: order/models.py:1733 msgid "Shipment has already been sent" msgstr "Vận đơn đã được gửi đi" -#: order/models.py:1772 +#: order/models.py:1736 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:1890 order/models.py:1892 +#: order/models.py:1854 order/models.py:1856 msgid "Stock item has not been assigned" msgstr "Hàng trong kho chưa được giao" -#: order/models.py:1899 +#: order/models.py:1863 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:1902 +#: order/models.py:1866 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:1905 +#: order/models.py:1869 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:1924 order/serializers.py:1231 +#: order/models.py:1888 order/serializers.py:1219 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:1927 +#: order/models.py:1891 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:1928 plugin/base/barcodes/api.py:481 +#: order/models.py:1892 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:1936 +#: order/models.py:1900 msgid "Line" msgstr "Dòng" -#: order/models.py:1945 +#: order/models.py:1909 msgid "Sales order shipment reference" msgstr "Tham chiếu vận đơn của đơn hàng bán" -#: order/models.py:1958 order/models.py:2275 +#: order/models.py:1922 order/models.py:2239 #: templates/js/translated/return_order.js:721 msgid "Item" msgstr "Hàng hóa" -#: order/models.py:1959 +#: order/models.py:1923 msgid "Select stock item to allocate" msgstr "Chọn hàng trong kho để phân bổ" -#: order/models.py:1968 +#: order/models.py:1932 msgid "Enter stock allocation quantity" msgstr "Nhập số lượng phân kho" -#: order/models.py:2057 +#: order/models.py:2021 msgid "Return Order reference" msgstr "Tham chiếu đơn hàng trả lại" -#: order/models.py:2069 +#: order/models.py:2033 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:2081 +#: order/models.py:2045 msgid "Return order status" msgstr "Trạng thái đơn hàng trả lại" -#: order/models.py:2260 +#: order/models.py:2224 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:2276 +#: order/models.py:2240 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:2282 +#: order/models.py:2246 msgid "Received Date" msgstr "Ngày nhận được" -#: order/models.py:2283 +#: order/models.py:2247 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:2294 templates/js/translated/return_order.js:732 +#: order/models.py:2258 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "Kết quả" -#: order/models.py:2295 +#: order/models.py:2259 msgid "Outcome for this line item" msgstr "Kết quả cho hàng hóa dòng này" -#: order/models.py:2302 +#: order/models.py:2266 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:80 order/templates/order/po_sidebar.html:5 +#: order/serializers.py:79 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_purchase_order_report.html:22 @@ -5159,163 +5209,163 @@ msgstr "Chi phí gắn với hàng trả lại hoặc sửa chữa cho dòng hà msgid "Line Items" msgstr "Mục dòng" -#: order/serializers.py:84 +#: order/serializers.py:83 msgid "Completed Lines" msgstr "" -#: order/serializers.py:287 +#: order/serializers.py:286 msgid "Order cannot be cancelled" msgstr "Đơn đặt không thể bị hủy" -#: order/serializers.py:302 order/serializers.py:1247 +#: order/serializers.py:301 order/serializers.py:1235 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:312 order/serializers.py:1257 +#: order/serializers.py:311 order/serializers.py:1245 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:440 +#: order/serializers.py:439 msgid "Order is not open" msgstr "Đơn đặt là không được mở" -#: order/serializers.py:461 +#: order/serializers.py:460 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:463 +#: order/serializers.py:462 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:473 +#: order/serializers.py:472 msgid "Purchase price currency" msgstr "Tiền tệ giá mua" -#: order/serializers.py:479 +#: order/serializers.py:478 msgid "Merge Items" msgstr "" -#: order/serializers.py:481 +#: order/serializers.py:480 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:499 +#: order/serializers.py:498 msgid "Supplier part must be specified" msgstr "Sản phẩm nhà cung cấp phải được chỉ định" -#: order/serializers.py:502 +#: order/serializers.py:501 msgid "Purchase order must be specified" msgstr "Đơn đặt mua phải được chỉ định" -#: order/serializers.py:510 +#: order/serializers.py:509 msgid "Supplier must match purchase order" msgstr "Nhà cung cấp phải phù hợp với đơn đặt mua" -#: order/serializers.py:511 +#: order/serializers.py:510 msgid "Purchase order must match supplier" msgstr "Đơn đặt mua phải phù hợp với nhà cung cấp" -#: order/serializers.py:550 order/serializers.py:1325 +#: order/serializers.py:549 order/serializers.py:1313 msgid "Line Item" msgstr "Mục dòng" -#: order/serializers.py:556 +#: order/serializers.py:555 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:566 order/serializers.py:674 order/serializers.py:1680 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1657 msgid "Select destination location for received items" msgstr "Chọn vị trí đích cho hàng hóa đã nhận" -#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:581 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "Nhập mã lô cho hàng trong kho đang đến" -#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:589 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "Nhập số sê ri cho hàng trong kho đang đến" -#: order/serializers.py:601 templates/js/translated/barcode.js:52 +#: order/serializers.py:600 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Mã vạch" -#: order/serializers.py:602 +#: order/serializers.py:601 msgid "Scanned barcode" msgstr "Mã vạch đã quét" -#: order/serializers.py:618 +#: order/serializers.py:617 msgid "Barcode is already in use" msgstr "Mã vạch đã được dùng" -#: order/serializers.py:642 +#: order/serializers.py:641 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:690 order/serializers.py:1696 +#: order/serializers.py:689 order/serializers.py:1673 msgid "Line items must be provided" msgstr "Dòng hàng hóa phải được cung cấp" -#: order/serializers.py:706 +#: order/serializers.py:705 msgid "Destination location must be specified" msgstr "Vị trí đích phải được chỉ ra" -#: order/serializers.py:717 +#: order/serializers.py:716 msgid "Supplied barcode values must be unique" msgstr "Giá trị mã vạch đã cung cấp phải duy nhất" -#: order/serializers.py:1074 +#: order/serializers.py:1062 msgid "Sale price currency" msgstr "Tiền tệ giá bán" -#: order/serializers.py:1134 +#: order/serializers.py:1122 msgid "No shipment details provided" msgstr "Chưa cung cấp thông tin vận chuyển" -#: order/serializers.py:1195 order/serializers.py:1334 +#: order/serializers.py:1183 order/serializers.py:1322 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:1214 +#: order/serializers.py:1202 msgid "Quantity must be positive" msgstr "Số lượng phải là số dương" -#: order/serializers.py:1344 +#: order/serializers.py:1332 msgid "Enter serial numbers to allocate" msgstr "Nhập số sê ri để phân bổ" -#: order/serializers.py:1366 order/serializers.py:1472 +#: order/serializers.py:1354 order/serializers.py:1460 msgid "Shipment has already been shipped" msgstr "Vận đơn đã được chuyển đi" -#: order/serializers.py:1369 order/serializers.py:1475 +#: order/serializers.py:1357 order/serializers.py:1463 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:1416 +#: order/serializers.py:1404 msgid "No match found for the following serial numbers" msgstr "Không tìm thấy số sê ri sau đây" -#: order/serializers.py:1423 +#: order/serializers.py:1411 msgid "The following serial numbers are already allocated" msgstr "Những số sê ri sau đây đã được phân bổ" -#: order/serializers.py:1650 +#: order/serializers.py:1627 msgid "Return order line item" msgstr "Dòng riêng biệt đơn hàng trả lại" -#: order/serializers.py:1656 +#: order/serializers.py:1633 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:1659 +#: order/serializers.py:1636 msgid "Line item has already been received" msgstr "Line item đã nhận được" -#: order/serializers.py:1688 +#: order/serializers.py:1665 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:1766 +#: order/serializers.py:1743 msgid "Line price currency" msgstr "Tiền tệ giá đồng hạng" @@ -5645,7 +5695,7 @@ msgstr "Mã khách hàng" #: 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/part.js:1073 #: templates/js/translated/purchase_order.js:1752 #: templates/js/translated/return_order.js:380 #: templates/js/translated/sales_order.js:891 @@ -5741,34 +5791,34 @@ 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:406 part/models.py:3964 part/stocktake.py:218 -#: stock/admin.py:153 +#: part/admin.py:39 part/admin.py:398 part/models.py:3944 part/stocktake.py:219 +#: stock/admin.py:152 msgid "Part ID" msgstr "ID sản phẩm" -#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 -#: stock/admin.py:157 +#: part/admin.py:41 part/admin.py:405 part/models.py:3945 part/stocktake.py:220 +#: stock/admin.py:156 msgid "Part Name" msgstr "Tên sản phẩm" -#: part/admin.py:45 part/stocktake.py:220 +#: part/admin.py:45 part/stocktake.py:221 msgid "Part Description" msgstr "Mô tả sản phẩm" -#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:940 part/templates/part/part_base.html:269 #: report/templates/report/inventree_stock_location_report.html:103 -#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/part.js:1227 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 -#: report/models.py:161 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2346 +#: part/admin.py:50 part/models.py:949 part/templates/part/part_base.html:277 +#: report/models.py:162 templates/js/translated/part.js:1232 +#: templates/js/translated/part.js:2347 msgid "Revision" msgstr "Phiên bản" -#: part/admin.py:53 part/admin.py:319 part/models.py:929 +#: part/admin.py:53 part/admin.py:319 part/models.py:922 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "Từ khóa" @@ -5777,11 +5827,11 @@ msgstr "Từ khóa" msgid "Part Image" msgstr "Ảnh sản phẩm" -#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:222 msgid "Category ID" msgstr "ID danh mục" -#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:223 msgid "Category Name" msgstr "Tên danh mục" @@ -5793,11 +5843,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:915 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:908 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "Biến thể của" -#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1036 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "Kho tối thiểu" @@ -5805,26 +5855,26 @@ msgstr "Kho tối thiểu" msgid "Used In" msgstr "Sử dụng trong" -#: 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 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:235 +#: templates/js/translated/part.js:715 templates/js/translated/part.js:2153 msgid "Building" msgstr "Đang dựng" -#: part/admin.py:155 part/models.py:3123 part/models.py:3137 -#: templates/js/translated/part.js:969 +#: part/admin.py:155 part/models.py:3088 part/models.py:3102 +#: templates/js/translated/part.js:970 msgid "Minimum Cost" msgstr "Chi phí tối thiểu" -#: part/admin.py:158 part/models.py:3130 part/models.py:3144 -#: templates/js/translated/part.js:979 +#: part/admin.py:158 part/models.py:3095 part/models.py:3109 +#: templates/js/translated/part.js:980 msgid "Maximum Cost" msgstr "Chi phí tối đa" -#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 msgid "Parent ID" msgstr "ID cha" -#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 msgid "Parent Name" msgstr "Tên cha" @@ -5833,141 +5883,149 @@ msgstr "Tên cha" msgid "Category Path" msgstr "Đưỡng dẫn danh mục" -#: part/admin.py:325 part/models.py:393 part/serializers.py:117 -#: part/serializers.py:272 part/serializers.py:391 +#: part/admin.py:325 part/models.py:396 part/serializers.py:124 +#: part/serializers.py:267 part/serializers.py:386 #: 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:2803 templates/js/translated/search.js:130 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "Nguyên liệu" -#: part/admin.py:386 +#: part/admin.py:378 msgid "BOM Level" msgstr "Cấp độ BOM" -#: part/admin.py:389 +#: part/admin.py:381 msgid "BOM Item ID" msgstr "ID hàng hóa BOM" -#: part/admin.py:399 +#: part/admin.py:391 msgid "Parent IPN" msgstr "IPN cha" -#: part/admin.py:410 part/models.py:3966 +#: part/admin.py:402 part/models.py:3946 msgid "Part IPN" msgstr "IPN sản phẩm" -#: part/admin.py:423 part/serializers.py:1278 +#: part/admin.py:415 part/serializers.py:1274 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "Giá thấp nhất" -#: part/admin.py:428 part/serializers.py:1293 +#: part/admin.py:420 part/serializers.py:1289 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "Giá cao nhất" -#: part/api.py:110 +#: part/api.py:104 msgid "Starred" msgstr "" -#: part/api.py:112 +#: part/api.py:106 msgid "Filter by starred categories" msgstr "" -#: part/api.py:129 stock/api.py:318 +#: part/api.py:123 stock/api.py:312 msgid "Depth" msgstr "" -#: part/api.py:129 +#: part/api.py:123 msgid "Filter by category depth" msgstr "" -#: part/api.py:147 stock/api.py:336 +#: part/api.py:141 stock/api.py:330 +msgid "Top Level" +msgstr "" + +#: part/api.py:143 +msgid "Filter by top-level categories" +msgstr "" + +#: part/api.py:156 stock/api.py:345 msgid "Cascade" msgstr "" -#: part/api.py:149 +#: part/api.py:158 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:169 +#: part/api.py:179 templates/js/translated/part.js:308 msgid "Parent" msgstr "" -#: part/api.py:171 +#: part/api.py:181 msgid "Filter by parent category" msgstr "" -#: part/api.py:204 +#: part/api.py:214 msgid "Exclude Tree" msgstr "" -#: part/api.py:206 +#: part/api.py:216 msgid "Exclude sub-categories under the specified category" msgstr "" -#: part/api.py:455 +#: part/api.py:449 msgid "Has Results" msgstr "" -#: part/api.py:622 +#: part/api.py:616 msgid "Incoming Purchase Order" msgstr "Đơn đặt mua vào" -#: part/api.py:640 +#: part/api.py:634 msgid "Outgoing Sales Order" msgstr "Đơn hàng bán ra" -#: part/api.py:656 +#: part/api.py:650 msgid "Stock produced by Build Order" msgstr "Kho sản xuất bởi Đơn đặt bản dựng" -#: part/api.py:740 +#: part/api.py:734 msgid "Stock required for Build Order" msgstr "Kho được yêu cầu cho đơn đặt bản dựng" -#: part/api.py:887 +#: part/api.py:881 msgid "Valid" msgstr "Hợp lệ" -#: part/api.py:888 +#: part/api.py:882 msgid "Validate entire Bill of Materials" msgstr "Xác minh toàn bộ hóa đơn vật liệu" -#: part/api.py:894 +#: part/api.py:888 msgid "This option must be selected" msgstr "Tùy chọn này phải được chọn" -#: part/api.py:1111 +#: part/api.py:1105 msgid "BOM Valid" msgstr "" -#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 -#: part/serializers.py:406 part/serializers.py:1134 -#: part/templates/part/part_base.html:260 stock/api.py:781 +#: part/api.py:1508 part/models.py:932 part/models.py:3374 part/models.py:3889 +#: part/serializers.py:401 part/serializers.py:1130 +#: part/templates/part/part_base.html:260 stock/api.py:791 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2376 +#: templates/js/translated/part.js:2377 msgid "Category" msgstr "Danh mục" -#: part/api.py:1803 +#: part/api.py:1796 msgid "Uses" msgstr "" -#: part/bom.py:170 part/models.py:102 part/models.py:982 +#: part/bom.py:170 part/models.py:104 part/models.py:975 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Điểm bán mặc định" -#: part/bom.py:171 part/serializers.py:837 +#: part/bom.py:171 part/serializers.py:833 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "Tổng số lượng" @@ -5976,1054 +6034,1066 @@ msgstr "Tổng số lượng" msgid "Input quantity for price calculation" msgstr "Số lượng đầu ra cho tính toán giá bán" -#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 +#: part/models.py:85 part/models.py:3890 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:84 part/templates/part/category.html:136 +#: part/models.py:86 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "Danh mục sản phẩm" -#: part/models.py:103 +#: part/models.py:105 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:108 stock/models.py:173 templates/js/translated/part.js:2809 +#: part/models.py:110 stock/models.py:174 templates/js/translated/part.js:2810 #: templates/js/translated/stock.js:2772 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "Cấu trúc" -#: part/models.py:110 +#: part/models.py:112 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:119 +#: part/models.py:121 msgid "Default keywords" msgstr "Từ khóa mặc định" -#: part/models.py:120 +#: part/models.py:122 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:126 stock/models.py:85 stock/models.py:156 +#: part/models.py:128 stock/models.py:86 stock/models.py:157 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "Biểu tượng" -#: part/models.py:127 stock/models.py:157 +#: part/models.py:129 stock/models.py:158 msgid "Icon (optional)" msgstr "Biểu tượng (tùy chọn)" -#: part/models.py:149 +#: part/models.py:151 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:482 +#: part/models.py:485 msgid "Cannot delete this part as it is still active" msgstr "" -#: part/models.py:489 +#: part/models.py:490 msgid "Cannot delete this part as it is used in an assembly" msgstr "" -#: part/models.py:527 +#: part/models.py:528 msgid "Invalid choice for parent part" msgstr "Lựa chọn sai cho sản phẩm cha" -#: part/models.py:575 part/models.py:582 +#: part/models.py:576 part/models.py:583 #, 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:594 +#: part/models.py:595 #, 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:659 +#: part/models.py:658 #, 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:739 +#: part/models.py:736 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:844 +#: part/models.py:837 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:854 +#: part/models.py:847 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:869 +#: part/models.py:862 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:898 part/models.py:3965 +#: part/models.py:891 part/models.py:3945 msgid "Part name" msgstr "Tên sản phẩm" -#: part/models.py:903 +#: part/models.py:896 msgid "Is Template" msgstr "Là Mẫu" -#: part/models.py:904 +#: part/models.py:897 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:914 +#: part/models.py:907 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:922 +#: part/models.py:915 msgid "Part description (optional)" msgstr "Mô tả (không bắt buộc)" -#: part/models.py:930 +#: part/models.py:923 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:940 +#: part/models.py:933 msgid "Part category" msgstr "Danh mục sản phẩm" -#: part/models.py:948 +#: part/models.py:941 msgid "Internal Part Number" msgstr "Mã sản phẩm nội bộ" -#: part/models.py:955 +#: part/models.py:948 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:980 +#: part/models.py:973 msgid "Where is this item normally stored?" msgstr "Hàng hóa này sẽ được cất vào đâu?" -#: part/models.py:1026 part/templates/part/part_base.html:376 +#: part/models.py:1019 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "Nhà cung ứng mặc định" -#: part/models.py:1027 +#: part/models.py:1020 msgid "Default supplier part" msgstr "Nhà cung ứng sản phẩm mặc định" -#: part/models.py:1034 +#: part/models.py:1027 msgid "Default Expiry" msgstr "Hết hạn mặc định" -#: part/models.py:1035 +#: part/models.py:1028 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:1044 +#: part/models.py:1037 msgid "Minimum allowed stock level" msgstr "Cấp độ kho tối thiểu được phép" -#: part/models.py:1053 +#: part/models.py:1046 msgid "Units of measure for this part" msgstr "Đơn vị đo cho sản phẩm này" -#: part/models.py:1060 +#: part/models.py:1053 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:1066 +#: part/models.py:1059 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:1072 +#: part/models.py:1065 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:1078 +#: part/models.py:1071 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:1084 +#: part/models.py:1077 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:1088 +#: part/models.py:1081 msgid "Is this part active?" msgstr "Sản phẩm này đang hoạt động?" -#: part/models.py:1094 +#: part/models.py:1087 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:1100 +#: part/models.py:1093 msgid "BOM checksum" msgstr "Giá trị tổng kiểm BOM" -#: part/models.py:1101 +#: part/models.py:1094 msgid "Stored BOM checksum" msgstr "Giá trị tổng kiểm BOM đã được lưu" -#: part/models.py:1109 +#: part/models.py:1102 msgid "BOM checked by" msgstr "BOM kiểm tra bởi" -#: part/models.py:1114 +#: part/models.py:1107 msgid "BOM checked date" msgstr "Ngày kiểm tra BOM" -#: part/models.py:1130 +#: part/models.py:1123 msgid "Creation User" msgstr "Tạo người dùng" -#: part/models.py:1140 +#: part/models.py:1133 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:1145 part/templates/part/part_base.html:339 +#: part/models.py:1138 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2470 +#: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "Kiểm kê cuối cùng" -#: part/models.py:2018 +#: part/models.py:2011 msgid "Sell multiple" msgstr "Bán nhiều" -#: part/models.py:3037 +#: part/models.py:3002 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:3053 +#: part/models.py:3018 msgid "Minimum BOM Cost" msgstr "Chi phí BOM tối thiểu" -#: part/models.py:3054 +#: part/models.py:3019 msgid "Minimum cost of component parts" msgstr "Chi phí thành phần sản phẩm tối thiểu" -#: part/models.py:3060 +#: part/models.py:3025 msgid "Maximum BOM Cost" msgstr "Chi phí BOM tối đa" -#: part/models.py:3061 +#: part/models.py:3026 msgid "Maximum cost of component parts" msgstr "Chi phí thành phần sản phẩm tối đa" -#: part/models.py:3067 +#: part/models.py:3032 msgid "Minimum Purchase Cost" msgstr "Chi phí mua vào tối thiểu" -#: part/models.py:3068 +#: part/models.py:3033 msgid "Minimum historical purchase cost" msgstr "Chi phí mua vào tối thiểu trong lịch sử" -#: part/models.py:3074 +#: part/models.py:3039 msgid "Maximum Purchase Cost" msgstr "Chi phí mua tối đa" -#: part/models.py:3075 +#: part/models.py:3040 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:3081 +#: part/models.py:3046 msgid "Minimum Internal Price" msgstr "Giá nội bộ tối thiểu" -#: part/models.py:3082 +#: part/models.py:3047 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:3088 +#: part/models.py:3053 msgid "Maximum Internal Price" msgstr "Giá nội bộ tối đa" -#: part/models.py:3089 +#: part/models.py:3054 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:3095 +#: part/models.py:3060 msgid "Minimum Supplier Price" msgstr "Giá nhà cung ứng tối thiểu" -#: part/models.py:3096 +#: part/models.py:3061 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:3102 +#: part/models.py:3067 msgid "Maximum Supplier Price" msgstr "Giá nhà cung ứng tối đa" -#: part/models.py:3103 +#: part/models.py:3068 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:3109 +#: part/models.py:3074 msgid "Minimum Variant Cost" msgstr "Giá trị biến thể tối thiểu" -#: part/models.py:3110 +#: part/models.py:3075 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:3116 +#: part/models.py:3081 msgid "Maximum Variant Cost" msgstr "Chi phí biến thể tối đa" -#: part/models.py:3117 +#: part/models.py:3082 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:3124 +#: part/models.py:3089 msgid "Override minimum cost" msgstr "Ghi đề chi phí tối thiểu" -#: part/models.py:3131 +#: part/models.py:3096 msgid "Override maximum cost" msgstr "Ghi đề chi phí tối đa" -#: part/models.py:3138 +#: part/models.py:3103 msgid "Calculated overall minimum cost" msgstr "Chi phí tối thiểu tính toán tổng thể" -#: part/models.py:3145 +#: part/models.py:3110 msgid "Calculated overall maximum cost" msgstr "Chi phí tối đa tính toán tổng thể" -#: part/models.py:3151 +#: part/models.py:3116 msgid "Minimum Sale Price" msgstr "Giá bán thấp nhất" -#: part/models.py:3152 +#: part/models.py:3117 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:3158 +#: part/models.py:3123 msgid "Maximum Sale Price" msgstr "Giá bán cao nhất" -#: part/models.py:3159 +#: part/models.py:3124 msgid "Maximum sale price based on price breaks" msgstr "Giá bán cao nhất dựa trên phá giá" -#: part/models.py:3165 +#: part/models.py:3130 msgid "Minimum Sale Cost" msgstr "Chi phí bán hàng tối thiểu" -#: part/models.py:3166 +#: part/models.py:3131 msgid "Minimum historical sale price" msgstr "Giá bán hàng tối thiểu trong lịch sử" -#: part/models.py:3172 +#: part/models.py:3137 msgid "Maximum Sale Cost" msgstr "Giá bán hàng tối đa" -#: part/models.py:3173 +#: part/models.py:3138 msgid "Maximum historical sale price" msgstr "Giá bán hàng tối đa trong lịch sử" -#: part/models.py:3192 +#: part/models.py:3157 msgid "Part for stocktake" msgstr "Sản phẩm dành cho kiểm kê" -#: part/models.py:3197 +#: part/models.py:3162 msgid "Item Count" msgstr "Tổng số hàng" -#: part/models.py:3198 +#: part/models.py:3163 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:3206 +#: part/models.py:3171 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:3210 part/models.py:3293 +#: part/models.py:3175 part/models.py:3258 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report.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/part.js:1086 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "Ngày" -#: part/models.py:3211 +#: part/models.py:3176 msgid "Date stocktake was performed" msgstr "Kiểm kê đã thực hiện" -#: part/models.py:3219 +#: part/models.py:3184 msgid "Additional notes" msgstr "Ghi chú bổ sung" -#: part/models.py:3229 +#: part/models.py:3194 msgid "User who performed this stocktake" msgstr "Người dùng đã thực hiện đợt kiểm kê này" -#: part/models.py:3235 +#: part/models.py:3200 msgid "Minimum Stock Cost" msgstr "Chi phí kho tối thiểu" -#: part/models.py:3236 +#: part/models.py:3201 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:3242 +#: part/models.py:3207 msgid "Maximum Stock Cost" msgstr "Chi phí kho tối đa" -#: part/models.py:3243 +#: part/models.py:3208 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:3299 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3264 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "Báo cáo" -#: part/models.py:3300 +#: part/models.py:3265 msgid "Stocktake report file (generated internally)" msgstr "Tệp báo cáo kiểm kê (được sinh nội bộ)" -#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3270 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "Bộ đếm sản phẩm" -#: part/models.py:3306 +#: part/models.py:3271 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:3316 +#: part/models.py:3281 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:3478 +#: part/models.py:3423 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3489 +#: part/models.py:3444 part/models.py:3608 +msgid "Choices must be unique" +msgstr "Lựa chọn phải duy nhất" + +#: part/models.py:3455 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:3500 +#: part/models.py:3466 msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3517 templates/js/translated/part.js:2878 +#: part/models.py:3483 templates/js/translated/part.js:2880 msgid "Test Name" msgstr "Tên kiểm thử" -#: part/models.py:3518 +#: part/models.py:3484 msgid "Enter a name for the test" msgstr "Nhập tên cho kiểm thử" -#: part/models.py:3524 +#: part/models.py:3490 msgid "Test Key" msgstr "" -#: part/models.py:3525 +#: part/models.py:3491 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3532 +#: part/models.py:3498 msgid "Test Description" msgstr "Mô tả kiểm thử" -#: part/models.py:3533 +#: part/models.py:3499 msgid "Enter description for this test" msgstr "Nhập mô tả cho kiểm thử này" -#: part/models.py:3537 report/models.py:208 -#: templates/js/translated/part.js:2899 +#: part/models.py:3503 report/models.py:209 +#: templates/js/translated/part.js:2901 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "Đã bật" -#: part/models.py:3537 +#: part/models.py:3503 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3542 templates/js/translated/part.js:2907 +#: part/models.py:3508 templates/js/translated/part.js:2909 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Bắt buộc" -#: part/models.py:3543 +#: part/models.py:3509 msgid "Is this test required to pass?" msgstr "Kiểm thử này bắt buộc phải đạt?" -#: part/models.py:3548 templates/js/translated/part.js:2915 +#: part/models.py:3514 templates/js/translated/part.js:2917 msgid "Requires Value" msgstr "Giá trị bắt buộc" -#: part/models.py:3549 +#: part/models.py:3515 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:3554 templates/js/translated/part.js:2922 +#: part/models.py:3520 templates/js/translated/part.js:2924 msgid "Requires Attachment" msgstr "Yêu cầu đính kèm" -#: part/models.py:3556 +#: part/models.py:3522 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:3603 +#: part/models.py:3528 part/models.py:3667 templates/js/translated/part.js:1637 +msgid "Choices" +msgstr "Lựa chọn" + +#: part/models.py:3529 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3583 msgid "Checkbox parameters cannot have units" msgstr "Tham số hộp kiểm tra không thể có đơn vị" -#: part/models.py:3608 +#: part/models.py:3588 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:3628 -msgid "Choices must be unique" -msgstr "Lựa chọn phải duy nhất" - -#: part/models.py:3645 +#: part/models.py:3625 msgid "Parameter template name must be unique" msgstr "Tên tham số mẫu phải là duy nhất" -#: part/models.py:3660 +#: part/models.py:3640 msgid "Parameter Name" msgstr "Tên tham số" -#: part/models.py:3667 +#: part/models.py:3647 msgid "Physical units for this parameter" msgstr "Đơn vị vật lý cho tham số này" -#: part/models.py:3675 +#: part/models.py:3655 msgid "Parameter description" msgstr "Mô tả tham số" -#: part/models.py:3681 templates/js/translated/part.js:1627 +#: part/models.py:3661 templates/js/translated/part.js:1628 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "Ô lựa chọn" -#: part/models.py:3682 +#: part/models.py:3662 msgid "Is this parameter a checkbox?" msgstr "Tham số này có phải là hộp kiểm tra?" -#: part/models.py:3687 templates/js/translated/part.js:1636 -msgid "Choices" -msgstr "Lựa chọn" - -#: part/models.py:3688 +#: part/models.py:3668 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:3765 +#: part/models.py:3745 msgid "Invalid choice for parameter value" msgstr "Lựa chọn sai cho giá trị tham số" -#: part/models.py:3808 +#: part/models.py:3788 msgid "Parent Part" msgstr "Sản phẩm cha" -#: part/models.py:3816 part/models.py:3917 part/models.py:3918 +#: part/models.py:3796 part/models.py:3897 part/models.py:3898 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "Mẫu tham số" -#: part/models.py:3821 +#: part/models.py:3801 msgid "Data" msgstr "Dữ liệu" -#: part/models.py:3822 +#: part/models.py:3802 msgid "Parameter Value" msgstr "Giá trị tham số" -#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3904 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "Giá trị mặc định" -#: part/models.py:3925 +#: part/models.py:3905 msgid "Default Parameter Value" msgstr "Giá trị tham số mặc định" -#: part/models.py:3963 +#: part/models.py:3943 msgid "Part ID or part name" msgstr "Tên hoặc mã sản phẩm" -#: part/models.py:3964 +#: part/models.py:3944 msgid "Unique part ID value" msgstr "Giá trị mã sản phẩm duy nhất" -#: part/models.py:3966 +#: part/models.py:3946 msgid "Part IPN value" msgstr "Giá trị IPN sản phẩm" -#: part/models.py:3967 +#: part/models.py:3947 msgid "Level" msgstr "Cấp độ" -#: part/models.py:3967 +#: part/models.py:3947 msgid "BOM level" msgstr "Cấp độ BOM" -#: part/models.py:4057 +#: part/models.py:4037 msgid "Select parent part" msgstr "Chọn sản phẩm cha" -#: part/models.py:4067 +#: part/models.py:4047 msgid "Sub part" msgstr "Sản phẩm phụ" -#: part/models.py:4068 +#: part/models.py:4048 msgid "Select part to be used in BOM" msgstr "Chọn sản phẩm được dùng trong BOM" -#: part/models.py:4079 +#: part/models.py:4059 msgid "BOM quantity for this BOM item" msgstr "Số lượng BOM cho mục BOM này" -#: part/models.py:4085 +#: part/models.py:4065 msgid "This BOM item is optional" msgstr "Mục BOM này là tùy chọn" -#: part/models.py:4091 +#: part/models.py:4071 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:4098 part/templates/part/upload_bom.html:55 +#: part/models.py:4078 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Dư thừa" -#: part/models.py:4099 +#: part/models.py:4079 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:4106 +#: part/models.py:4086 msgid "BOM item reference" msgstr "Tham chiếu mục BOM" -#: part/models.py:4114 +#: part/models.py:4094 msgid "BOM item notes" msgstr "Ghi chú mục BOM" -#: part/models.py:4120 +#: part/models.py:4100 msgid "Checksum" msgstr "Giá trị tổng kiểm" -#: part/models.py:4121 +#: part/models.py:4101 msgid "BOM line checksum" msgstr "Giá trị tổng kiểm dòng BOM" -#: part/models.py:4126 templates/js/translated/table_filters.js:174 +#: part/models.py:4106 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "Đã xác minh" -#: part/models.py:4127 +#: part/models.py:4107 msgid "This BOM item has been validated" msgstr "Mục BOM này là hợp lệ" -#: part/models.py:4132 part/templates/part/upload_bom.html:57 +#: part/models.py:4112 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:4133 +#: part/models.py:4113 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:4138 part/templates/part/upload_bom.html:56 +#: part/models.py:4118 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:4139 +#: part/models.py:4119 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:4224 stock/models.py:664 +#: part/models.py:4204 stock/models.py:662 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:4234 part/models.py:4236 +#: part/models.py:4214 part/models.py:4216 msgid "Sub part must be specified" msgstr "Sản phẩm phụ phải được chỉ định" -#: part/models.py:4376 +#: part/models.py:4354 msgid "BOM Item Substitute" msgstr "Sảm phẩm thay thế mục BOM" -#: part/models.py:4397 +#: part/models.py:4375 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:4410 +#: part/models.py:4388 msgid "Parent BOM item" msgstr "Hàng hóa BOM cha" -#: part/models.py:4418 +#: part/models.py:4396 msgid "Substitute part" msgstr "Sản phẩm thay thế" -#: part/models.py:4434 +#: part/models.py:4412 msgid "Part 1" msgstr "Sản phẩm 1" -#: part/models.py:4442 +#: part/models.py:4420 msgid "Part 2" msgstr "Sản phẩm 2" -#: part/models.py:4443 +#: part/models.py:4421 msgid "Select Related Part" msgstr "Chọn sản phẩm liên quan" -#: part/models.py:4462 +#: part/models.py:4440 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:4467 +#: part/models.py:4445 msgid "Duplicate relationship already exists" msgstr "Đã tồn tại mối quan hệ trùng lặp" -#: part/serializers.py:119 part/serializers.py:141 +#: part/serializers.py:118 +msgid "Parent Category" +msgstr "" + +#: part/serializers.py:119 templates/js/translated/part.js:309 +msgid "Parent part category" +msgstr "" + +#: part/serializers.py:126 part/serializers.py:148 #: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "Phụ mục" -#: part/serializers.py:185 +#: part/serializers.py:180 msgid "Results" msgstr "" -#: part/serializers.py:186 +#: part/serializers.py:181 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 +#: part/serializers.py:205 part/serializers.py:223 stock/serializers.py:562 msgid "Purchase currency of this stock item" msgstr "Loại tiền mua hàng của hàng hóa này" -#: part/serializers.py:273 +#: part/serializers.py:268 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:397 +#: part/serializers.py:392 msgid "No parts selected" msgstr "Chưa chọn sản phẩm" -#: part/serializers.py:407 +#: part/serializers.py:402 msgid "Select category" msgstr "Chọn danh mục" -#: part/serializers.py:442 +#: part/serializers.py:437 msgid "Original Part" msgstr "Sản phẩm gốc" -#: part/serializers.py:443 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "Chọn sản phẩm gốc để nhân bản" -#: part/serializers.py:448 +#: part/serializers.py:443 msgid "Copy Image" msgstr "Sao chép ảnh" -#: part/serializers.py:449 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "Sao chép hình ảnh từ sản phẩm gốc" -#: part/serializers.py:455 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "Sao chép BOM" -#: part/serializers.py:456 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "Sao chép định mức nguyên vật liệu từ sản phẩm gốc" -#: part/serializers.py:462 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "Sao chép thông số" -#: part/serializers.py:463 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "Sao chép thông tin tham số từ sản phẩm gốc" -#: part/serializers.py:469 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "Sao chép ghi chú" -#: part/serializers.py:470 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "Sao chép ghi chú từ sản phẩm gốc" -#: part/serializers.py:488 +#: part/serializers.py:483 msgid "Initial Stock Quantity" msgstr "Số liệu tồn kho ban đầu" -#: part/serializers.py:490 +#: part/serializers.py:485 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "Chỉ ra số lượng tồn kho ban đầu cho sản phẩm. Nếu điền là không, không thêm kho nào." -#: part/serializers.py:497 +#: part/serializers.py:492 msgid "Initial Stock Location" msgstr "Vị trí kho ban đầu" -#: part/serializers.py:498 +#: part/serializers.py:493 msgid "Specify initial stock location for this Part" msgstr "Chỉ định vị trí kho ban đầu cho sản phẩm này" -#: part/serializers.py:515 +#: part/serializers.py:510 msgid "Select supplier (or leave blank to skip)" msgstr "Chọn nhà cung cấp (hoặc để trống để bỏ qua)" -#: part/serializers.py:531 +#: part/serializers.py:526 msgid "Select manufacturer (or leave blank to skip)" msgstr "Chọn nhà sản xuất (hoặc để trống để bỏ qua)" -#: part/serializers.py:541 +#: part/serializers.py:536 msgid "Manufacturer part number" msgstr "Mã số nhà sản xuất" -#: part/serializers.py:548 +#: part/serializers.py:543 msgid "Selected company is not a valid supplier" msgstr "Công ty đã chọn không phải là nhà cung ứng hợp lệ" -#: part/serializers.py:557 +#: part/serializers.py:552 msgid "Selected company is not a valid manufacturer" msgstr "Công ty đã chọn không phải là nhà sản xuất hợp lệ" -#: part/serializers.py:568 +#: part/serializers.py:563 msgid "Manufacturer part matching this MPN already exists" msgstr "Mã số nhà sản xuất khớp với MPN này đã tồn tại" -#: part/serializers.py:575 +#: part/serializers.py:570 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:838 +#: part/serializers.py:834 msgid "External Stock" msgstr "" -#: part/serializers.py:840 +#: part/serializers.py:836 msgid "Unallocated Stock" msgstr "" -#: part/serializers.py:843 +#: part/serializers.py:839 msgid "Variant Stock" msgstr "" -#: part/serializers.py:873 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:471 +#: part/serializers.py:869 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:472 msgid "Duplicate Part" msgstr "Nhân bản sản phẩm" -#: part/serializers.py:874 +#: part/serializers.py:870 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:880 templates/js/translated/part.js:102 +#: part/serializers.py:876 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "Số liệu kho ban đầu" -#: part/serializers.py:881 +#: part/serializers.py:877 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:887 +#: part/serializers.py:883 msgid "Supplier Information" msgstr "Thông tin nhà cung cấp" -#: part/serializers.py:888 +#: part/serializers.py:884 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:896 +#: part/serializers.py:892 msgid "Copy Category Parameters" msgstr "Sao chép thông số nhóm hàng" -#: part/serializers.py:897 +#: part/serializers.py:893 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:902 +#: part/serializers.py:898 msgid "Existing Image" msgstr "Ảnh hiện có" -#: part/serializers.py:903 +#: part/serializers.py:899 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:920 +#: part/serializers.py:916 msgid "Image file does not exist" msgstr "Tệp hình ảnh không tồn tại" -#: part/serializers.py:1126 +#: part/serializers.py:1122 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:1136 +#: part/serializers.py:1132 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:1146 +#: part/serializers.py:1142 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:1152 +#: part/serializers.py:1148 msgid "Exclude External Stock" msgstr "Ngoại trừ kho bên ngoài" -#: part/serializers.py:1153 +#: part/serializers.py:1149 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:1158 +#: part/serializers.py:1154 msgid "Generate Report" msgstr "Tạo báo cáo" -#: part/serializers.py:1159 +#: part/serializers.py:1155 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:1164 +#: part/serializers.py:1160 msgid "Update Parts" msgstr "Cập nhật sản phẩm" -#: part/serializers.py:1165 +#: part/serializers.py:1161 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:1173 +#: part/serializers.py:1169 msgid "Stocktake functionality is not enabled" msgstr "Chức năng kiểm kê chưa được bật" -#: part/serializers.py:1279 +#: part/serializers.py:1275 msgid "Override calculated value for minimum price" msgstr "Giá trị tính toán ghi đè cho giá tối thiểu" -#: part/serializers.py:1286 +#: part/serializers.py:1282 msgid "Minimum price currency" msgstr "Tiền tế giá tối thiểu" -#: part/serializers.py:1294 +#: part/serializers.py:1290 msgid "Override calculated value for maximum price" msgstr "Giá trị tính toán ghi đè cho giá tối đa" -#: part/serializers.py:1301 +#: part/serializers.py:1297 msgid "Maximum price currency" msgstr "Tiền tế giá tối đa" -#: part/serializers.py:1330 +#: part/serializers.py:1326 msgid "Update" msgstr "Cập nhật" -#: part/serializers.py:1331 +#: part/serializers.py:1327 msgid "Update pricing for this part" msgstr "Cập nhật giá cho sản phẩm này" -#: part/serializers.py:1354 +#: part/serializers.py:1350 #, 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:1361 +#: part/serializers.py:1357 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:1364 +#: part/serializers.py:1360 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:1731 +#: part/serializers.py:1727 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:1739 +#: part/serializers.py:1735 msgid "Remove Existing Data" msgstr "Xóa dữ liệu đã tồn tại" -#: part/serializers.py:1740 +#: part/serializers.py:1736 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:1745 +#: part/serializers.py:1741 msgid "Include Inherited" msgstr "Bao gồm thừa hưởng" -#: part/serializers.py:1746 +#: part/serializers.py:1742 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:1751 +#: part/serializers.py:1747 msgid "Skip Invalid Rows" msgstr "Bỏ qua dòng không hợp lệ" -#: part/serializers.py:1752 +#: part/serializers.py:1748 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:1757 +#: part/serializers.py:1753 msgid "Copy Substitute Parts" msgstr "Sao chép sản phẩm thay thế" -#: part/serializers.py:1758 +#: part/serializers.py:1754 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:1792 +#: part/serializers.py:1788 msgid "Clear Existing BOM" msgstr "Dọn dẹp BOM đang tồn tại" -#: part/serializers.py:1793 +#: part/serializers.py:1789 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:1823 +#: part/serializers.py:1819 msgid "No part column specified" msgstr "Chưa chỉ ra cột sản phẩm" -#: part/serializers.py:1867 +#: part/serializers.py:1863 msgid "Multiple matching parts found" msgstr "Tìm thấy nhiều sản phẩm phù hợp" -#: part/serializers.py:1870 +#: part/serializers.py:1866 msgid "No matching part found" msgstr "Không tìm thấy sản phẩm nào" -#: part/serializers.py:1873 +#: part/serializers.py:1869 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:1882 +#: part/serializers.py:1878 msgid "Quantity not provided" msgstr "Chưa cung cấp số lượng" -#: part/serializers.py:1890 +#: part/serializers.py:1886 msgid "Invalid quantity" msgstr "Số lượng không hợp lệ" -#: part/serializers.py:1911 +#: part/serializers.py:1907 msgid "At least one BOM item is required" msgstr "Buộc phải nhập ít nhất một mục BOM" -#: part/stocktake.py:224 templates/js/translated/part.js:1066 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: part/stocktake.py:225 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "Tổng số lượng" -#: part/stocktake.py:225 +#: part/stocktake.py:226 msgid "Total Cost Min" msgstr "Tổng chi phí tối thiểu" -#: part/stocktake.py:226 +#: part/stocktake.py:227 msgid "Total Cost Max" msgstr "Tổng chi phí tối đa" -#: part/stocktake.py:284 +#: part/stocktake.py:285 msgid "Stocktake Report Available" msgstr "Báo cáo kiểm kê có sẵn" -#: part/stocktake.py:285 +#: part/stocktake.py:286 msgid "A new stocktake report is available for download" msgstr "Có sẵn một báo cáo kiểm kê mới để tải về" @@ -7157,7 +7227,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:251 templates/InvenTree/settings/part_stocktake.html:30 +#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" @@ -7257,15 +7327,15 @@ msgstr "Nhà cung cấp sản phẩm" msgid "Part Manufacturers" msgstr "Nhà sản xuất sản phẩm" -#: part/templates/part/detail.html:655 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:663 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:748 +#: part/templates/part/detail.html:750 msgid "Add Test Result Template" msgstr "" @@ -7346,7 +7416,7 @@ msgstr "Đếm kho sản phẩm" msgid "Transfer part stock" msgstr "Chuyển kho sản phẩm" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" msgstr "Chức năng sản phẩm" @@ -7418,7 +7488,7 @@ msgid "Minimum stock level" msgstr "Cấp kho tối thiểu" #: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 -#: templates/js/translated/part.js:1264 templates/js/translated/part.js:2443 +#: templates/js/translated/part.js:1265 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7511,8 +7581,8 @@ msgstr "Biến thể" #: 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:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/part.js:1243 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 #: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "Kiện hàng" @@ -7555,7 +7625,7 @@ msgstr "Ghi đè định giá sản phẩm" msgid "Edit" msgstr "Sửa" -#: part/templates/part/prices.html:28 stock/admin.py:247 +#: part/templates/part/prices.html:28 stock/admin.py:251 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 @@ -7632,8 +7702,8 @@ msgstr "Cập nhập giá bán" #: part/templates/part/stock_count.html:7 #: templates/js/translated/model_renderers.js:227 -#: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 -#: templates/js/translated/part.js:2142 +#: templates/js/translated/part.js:705 templates/js/translated/part.js:2141 +#: templates/js/translated/part.js:2143 msgid "No Stock" msgstr "Hết hàng" @@ -8005,7 +8075,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:307 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:308 msgid "Landscape" msgstr "Ngang" @@ -8118,62 +8188,62 @@ msgstr "" msgid "Uninstalled plugin successfully" msgstr "" -#: plugin/models.py:35 +#: plugin/models.py:36 msgid "Plugin Configuration" msgstr "Cấu hình phần bổ sung" -#: plugin/models.py:36 +#: plugin/models.py:37 msgid "Plugin Configurations" msgstr "Cấu hình phần bổ sung" -#: plugin/models.py:42 users/models.py:100 +#: plugin/models.py:43 users/models.py:100 msgid "Key" msgstr "Khóa" -#: plugin/models.py:43 +#: plugin/models.py:44 msgid "Key of plugin" msgstr "Khóa của phần bổ sung" -#: plugin/models.py:51 +#: plugin/models.py:52 msgid "PluginName of the plugin" msgstr "Tên của phần bổ sung" -#: plugin/models.py:58 plugin/serializers.py:90 +#: plugin/models.py:59 plugin/serializers.py:90 msgid "Package Name" msgstr "Tên gói" -#: plugin/models.py:60 +#: plugin/models.py:61 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:65 +#: plugin/models.py:66 msgid "Is the plugin active" msgstr "Là phần bổ sung hoạt động" -#: plugin/models.py:156 templates/js/translated/table_filters.js:370 +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "Đã cài đặt" -#: plugin/models.py:165 +#: plugin/models.py:166 msgid "Sample plugin" msgstr "Phần bổ sung mẫu" -#: plugin/models.py:173 +#: plugin/models.py:174 msgid "Builtin Plugin" msgstr "Plugin có sẵn" -#: plugin/models.py:181 +#: plugin/models.py:182 msgid "Package Plugin" msgstr "" -#: plugin/models.py:205 report/models.py:474 +#: plugin/models.py:220 report/models.py:475 #: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "Phần bổ sung" -#: plugin/models.py:252 +#: plugin/models.py:267 msgid "Method" msgstr "Phương thức" @@ -8181,17 +8251,17 @@ msgstr "Phương thức" msgid "No author found" msgstr "Không tìm thấy tác giả" -#: plugin/registry.py:597 +#: plugin/registry.py:534 #, 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:600 +#: plugin/registry.py:537 #, 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:602 +#: plugin/registry.py:539 #, 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}" @@ -8306,23 +8376,19 @@ msgstr "Kích hoạt phần bổ sung" msgid "Activate this plugin" msgstr "Kích hoạt phần bổ sung này" -#: plugin/serializers.py:234 +#: plugin/serializers.py:226 msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:235 +#: plugin/serializers.py:227 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:77 +#: report/api.py:88 msgid "No valid objects provided to template" msgstr "Chưa cung cấp đối tượng hợp lệ cho bản mẫu" -#: report/api.py:89 report/serializers.py:53 -msgid "Model Type" -msgstr "" - -#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/api.py:103 report/models.py:439 report/serializers.py:98 #: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 #: templates/js/translated/return_order.js:353 #: templates/js/translated/sales_order.js:887 @@ -8330,176 +8396,176 @@ msgstr "" msgid "Items" msgstr "" -#: report/api.py:168 +#: report/api.py:180 msgid "Plugin not found" msgstr "" -#: report/api.py:170 +#: report/api.py:182 msgid "Plugin is not active" msgstr "" -#: report/api.py:172 +#: report/api.py:184 msgid "Plugin does not support label printing" msgstr "" -#: report/api.py:221 +#: report/api.py:233 msgid "Invalid label dimensions" msgstr "" -#: report/api.py:236 report/api.py:316 +#: report/api.py:248 report/api.py:329 msgid "No valid items provided to template" msgstr "" -#: report/api.py:271 +#: report/api.py:283 msgid "Error printing label" msgstr "" -#: report/api.py:362 report/api.py:398 +#: report/api.py:375 report/api.py:411 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "Tệp mẫu '{template}' đang bị lỗi hoặc không tồn tại" -#: report/helpers.py:41 +#: report/helpers.py:43 msgid "A4" msgstr "" -#: report/helpers.py:42 +#: report/helpers.py:44 msgid "A3" msgstr "" -#: report/helpers.py:43 +#: report/helpers.py:45 msgid "Legal" msgstr "Pháp lý" -#: report/helpers.py:44 +#: report/helpers.py:46 msgid "Letter" msgstr "Thư" -#: report/models.py:118 +#: report/models.py:119 msgid "Template file with this name already exists" msgstr "" -#: report/models.py:150 +#: report/models.py:151 msgid "Template name" msgstr "Tên mẫu" -#: report/models.py:156 +#: report/models.py:157 msgid "Template description" msgstr "" -#: report/models.py:162 +#: report/models.py:163 msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Filename Pattern" msgstr "Mẫu tên tệp" -#: report/models.py:203 +#: report/models.py:204 msgid "Pattern for generating filenames" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Template is enabled" msgstr "" -#: report/models.py:214 +#: report/models.py:215 msgid "Target model type for template" msgstr "" -#: report/models.py:234 +#: report/models.py:235 msgid "Filters" msgstr "Bộ lọc" -#: report/models.py:235 +#: report/models.py:236 msgid "Template query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:294 report/models.py:361 +#: report/models.py:295 report/models.py:362 msgid "Template file" msgstr "" -#: report/models.py:302 +#: report/models.py:303 msgid "Page size for PDF reports" msgstr "Khổ giấy cho báo cáo PDF" -#: report/models.py:308 +#: report/models.py:309 msgid "Render report in landscape orientation" msgstr "Tạo báo cáo theo hướng ngang" -#: report/models.py:367 +#: report/models.py:368 msgid "Width [mm]" msgstr "Chiều rộng [mm]" -#: report/models.py:368 +#: report/models.py:369 msgid "Label width, specified in mm" msgstr "Chiều rộng nhãn, tính theo mm" -#: report/models.py:374 +#: report/models.py:375 msgid "Height [mm]" msgstr "Chiều cao [mm]" -#: report/models.py:375 +#: report/models.py:376 msgid "Label height, specified in mm" msgstr "Chiều cao nhãn, tính theo mm" -#: report/models.py:438 +#: report/models.py:439 msgid "Number of items to process" msgstr "" -#: report/models.py:444 +#: report/models.py:445 msgid "Report generation is complete" msgstr "" -#: report/models.py:448 templates/js/translated/build.js:2177 +#: report/models.py:449 templates/js/translated/build.js:2177 msgid "Progress" msgstr "" -#: report/models.py:448 +#: report/models.py:449 msgid "Report generation progress" msgstr "" -#: report/models.py:456 +#: report/models.py:457 msgid "Report Template" msgstr "" -#: report/models.py:463 report/models.py:486 +#: report/models.py:464 report/models.py:487 msgid "Output File" msgstr "" -#: report/models.py:464 report/models.py:487 +#: report/models.py:465 report/models.py:488 msgid "Generated output file" msgstr "" -#: report/models.py:475 +#: report/models.py:476 msgid "Label output plugin" msgstr "" -#: report/models.py:479 +#: report/models.py:480 msgid "Label Template" msgstr "" -#: report/models.py:502 +#: report/models.py:503 msgid "Snippet" msgstr "Mẫu trích" -#: report/models.py:503 +#: report/models.py:504 msgid "Report snippet file" msgstr "Tệp báo cáo mẫu" -#: report/models.py:510 +#: report/models.py:511 msgid "Snippet file description" msgstr "Mô tả tệp báo cáo mẫu" -#: report/models.py:528 +#: report/models.py:529 msgid "Asset" msgstr "Tài sản" -#: report/models.py:529 +#: report/models.py:530 msgid "Report asset file" msgstr "Tệp báo cáo tài sản" -#: report/models.py:536 +#: report/models.py:537 msgid "Asset file description" msgstr "Mô tả tệp báo cáo tài sản" @@ -8572,8 +8638,8 @@ msgid "Total" msgstr "Tổng cộng" #: report/templates/report/inventree_return_order_report.html:25 -#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 -#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:824 +#: stock/serializers.py:149 stock/templates/stock/item_base.html:311 #: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 #: templates/js/translated/build.js:2355 #: templates/js/translated/model_renderers.js:230 @@ -8603,32 +8669,32 @@ msgstr "Kết quả kiểm tra" msgid "Test" msgstr "Thử nghiệm" -#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2412 msgid "Result" msgstr "Kết quả" -#: report/templates/report/inventree_test_report.html:130 +#: report/templates/report/inventree_test_report.html:129 msgid "Pass" msgstr "Đạt" -#: report/templates/report/inventree_test_report.html:132 +#: report/templates/report/inventree_test_report.html:131 msgid "Fail" msgstr "Không đạt" -#: report/templates/report/inventree_test_report.html:139 +#: report/templates/report/inventree_test_report.html:138 msgid "No result (required)" msgstr "Không có kết quả (bắt buộc)" -#: report/templates/report/inventree_test_report.html:141 +#: report/templates/report/inventree_test_report.html:140 msgid "No result" msgstr "Không có kết quả" -#: report/templates/report/inventree_test_report.html:154 +#: report/templates/report/inventree_test_report.html:153 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "Mục đã cài đặt" -#: report/templates/report/inventree_test_report.html:168 stock/admin.py:162 +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 #: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 #: templates/js/translated/stock.js:3110 msgid "Serial" @@ -8650,654 +8716,670 @@ msgstr "thẻ part_image yêu cầu 1 thực thể sản phẩm" 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:172 +#: stock/admin.py:51 stock/admin.py:171 msgid "Location ID" msgstr "ID địa điểm" -#: stock/admin.py:54 stock/admin.py:176 +#: stock/admin.py:53 stock/admin.py:175 msgid "Location Name" msgstr "Tên địa điểm" -#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/admin.py:63 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "Đường dẫn địa điểm" -#: stock/admin.py:149 +#: stock/admin.py:148 msgid "Stock Item ID" msgstr "ID mặt hàng" -#: stock/admin.py:168 +#: stock/admin.py:167 msgid "Status Code" msgstr "Mã trạng thái" -#: stock/admin.py:180 +#: stock/admin.py:179 msgid "Supplier Part ID" msgstr "Sản phẩm nhà cung cấp" -#: stock/admin.py:185 +#: stock/admin.py:184 +msgid "Supplier Part SKU" +msgstr "" + +#: stock/admin.py:189 msgid "Supplier ID" msgstr "Tên nhà cung cấp" -#: stock/admin.py:191 +#: stock/admin.py:195 msgid "Supplier Name" msgstr "Tên nhà cung cấp" -#: stock/admin.py:196 +#: stock/admin.py:200 msgid "Customer ID" msgstr "ID Khách hàng" -#: stock/admin.py:201 stock/models.py:806 +#: stock/admin.py:205 stock/models.py:804 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "Đã cài đặt trong" -#: stock/admin.py:206 +#: stock/admin.py:210 msgid "Build ID" msgstr "ID bản dựng" -#: stock/admin.py:216 +#: stock/admin.py:220 msgid "Sales Order ID" msgstr "ID đơn hàng bán" -#: stock/admin.py:221 +#: stock/admin.py:225 msgid "Purchase Order ID" msgstr "ID đơn đặt mua" -#: stock/admin.py:236 +#: stock/admin.py:240 msgid "Review Needed" msgstr "Cần xem xét" -#: stock/admin.py:241 +#: stock/admin.py:245 msgid "Delete on Deplete" msgstr "Xóa khi thiếu hụt" -#: stock/admin.py:256 stock/models.py:900 +#: stock/admin.py:260 stock/models.py:898 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "Ngày hết hạn" -#: stock/api.py:318 +#: stock/api.py:312 msgid "Filter by location depth" msgstr "" -#: stock/api.py:338 +#: stock/api.py:332 +msgid "Filter by top-level locations" +msgstr "" + +#: stock/api.py:347 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:359 +#: stock/api.py:369 stock/serializers.py:1085 msgid "Parent Location" msgstr "" -#: stock/api.py:360 +#: stock/api.py:370 msgid "Filter by parent location" msgstr "" -#: stock/api.py:615 templates/js/translated/table_filters.js:427 +#: stock/api.py:625 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "Địa điểm bên ngoài" -#: stock/api.py:803 +#: stock/api.py:813 msgid "Part Tree" msgstr "Cây sản phẩm" -#: stock/api.py:833 +#: stock/api.py:843 msgid "Expiry date before" msgstr "Ngày hết hạn trước đó" -#: stock/api.py:837 +#: stock/api.py:847 msgid "Expiry date after" msgstr "Ngày hết hạn sau đó" -#: stock/api.py:840 stock/templates/stock/item_base.html:439 +#: stock/api.py:850 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "Ế" -#: stock/api.py:927 +#: stock/api.py:937 msgid "Quantity is required" msgstr "Bắt buộc nhập số lượng" -#: stock/api.py:933 +#: stock/api.py:943 msgid "Valid part must be supplied" msgstr "Phải cung cấp sản phẩm hợp lệ" -#: stock/api.py:964 +#: stock/api.py:974 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:974 +#: stock/api.py:984 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:1005 +#: stock/api.py:1015 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:59 +#: stock/models.py:60 msgid "Stock Location type" msgstr "Loại vị trí kho hàng" -#: stock/models.py:60 +#: stock/models.py:61 msgid "Stock Location types" msgstr "Loại vị trí kho hàng" -#: stock/models.py:86 +#: stock/models.py:87 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:123 stock/models.py:788 +#: stock/models.py:124 stock/models.py:786 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Kho hàng" -#: stock/models.py:124 stock/templates/stock/location.html:186 +#: stock/models.py:125 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "Vị trí kho hàng" -#: stock/models.py:166 stock/models.py:949 +#: stock/models.py:167 stock/models.py:947 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "Chủ sở hữu" -#: stock/models.py:167 stock/models.py:950 +#: stock/models.py:168 stock/models.py:948 msgid "Select Owner" msgstr "Chọn chủ sở hữu" -#: stock/models.py:175 +#: stock/models.py:176 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "Không thể đưa trực tiếp hàng trong kho vào bên trong vị trí kho hàng có cấu trúc, nhưng có thể đặt vào kho con." -#: stock/models.py:182 templates/js/translated/stock.js:2781 +#: stock/models.py:183 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "Bên ngoài" -#: stock/models.py:183 +#: stock/models.py:184 msgid "This is an external stock location" msgstr "Đây là vị trí kho bên ngoài" -#: stock/models.py:189 templates/js/translated/stock.js:2790 +#: stock/models.py:190 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "Loại vị trí" -#: stock/models.py:193 +#: stock/models.py:194 msgid "Stock location type of this location" msgstr "Loại vị trí kho hàng của địa điểm này" -#: stock/models.py:262 +#: stock/models.py:261 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:643 +#: stock/models.py:641 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:670 stock/serializers.py:419 +#: stock/models.py:668 stock/serializers.py:446 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:687 +#: stock/models.py:685 #, 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:697 stock/models.py:710 +#: stock/models.py:695 stock/models.py:708 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:700 +#: stock/models.py:698 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:724 +#: stock/models.py:722 msgid "Item cannot belong to itself" msgstr "Hàng hóa không thể thuộc về chính nó" -#: stock/models.py:729 +#: stock/models.py:727 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:742 +#: stock/models.py:740 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:758 +#: stock/models.py:756 msgid "Parent Stock Item" msgstr "Hàng trong kho cha" -#: stock/models.py:770 +#: stock/models.py:768 msgid "Base part" msgstr "Sản phẩm cơ bản" -#: stock/models.py:780 +#: stock/models.py:778 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:792 +#: stock/models.py:790 msgid "Where is this stock item located?" msgstr "Hàng trong kho này được đặt ở đâu?" -#: stock/models.py:800 stock/serializers.py:1480 +#: stock/models.py:798 stock/serializers.py:1476 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:811 +#: stock/models.py:809 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:830 +#: stock/models.py:828 msgid "Serial number for this item" msgstr "Số sê ri cho mục này" -#: stock/models.py:844 stock/serializers.py:1463 +#: stock/models.py:842 stock/serializers.py:1459 msgid "Batch code for this stock item" msgstr "Mã lô cho hàng trong kho này" -#: stock/models.py:849 +#: stock/models.py:847 msgid "Stock Quantity" msgstr "Số lượng tồn kho" -#: stock/models.py:859 +#: stock/models.py:857 msgid "Source Build" msgstr "Bản dựng nguồn" -#: stock/models.py:862 +#: stock/models.py:860 msgid "Build for this stock item" msgstr "Bản dựng cho hàng hóa này" -#: stock/models.py:869 stock/templates/stock/item_base.html:363 +#: stock/models.py:867 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "Tiêu thụ bởi" -#: stock/models.py:872 +#: stock/models.py:870 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:881 +#: stock/models.py:879 msgid "Source Purchase Order" msgstr "Đơn đặt mua nguồn" -#: stock/models.py:885 +#: stock/models.py:883 msgid "Purchase order for this stock item" msgstr "Đơn đặt mua cho hàng hóa này" -#: stock/models.py:891 +#: stock/models.py:889 msgid "Destination Sales Order" msgstr "Đơn hàng bán đích" -#: stock/models.py:902 +#: stock/models.py:900 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:920 +#: stock/models.py:918 msgid "Delete on deplete" msgstr "Xóa khi thiếu hụt" -#: stock/models.py:921 +#: stock/models.py:919 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:941 +#: stock/models.py:939 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:972 +#: stock/models.py:970 msgid "Converted to part" msgstr "Đã chuyển đổi sang sản phẩm" -#: stock/models.py:1490 +#: stock/models.py:1486 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:1496 +#: stock/models.py:1492 msgid "Quantity must be integer" msgstr "Số lượng phải là số nguyên" -#: stock/models.py:1504 +#: stock/models.py:1500 #, 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:1510 +#: stock/models.py:1506 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:1515 +#: stock/models.py:1511 msgid "Quantity does not match serial numbers" msgstr "Số lượng không khớp với số sêri" -#: stock/models.py:1523 stock/serializers.py:658 +#: stock/models.py:1519 stock/serializers.py:660 msgid "Serial numbers already exist" msgstr "Số sêri đã tồn tại" -#: stock/models.py:1620 +#: stock/models.py:1616 msgid "Test template does not exist" msgstr "" -#: stock/models.py:1638 +#: stock/models.py:1634 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:1642 +#: stock/models.py:1638 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:1645 +#: stock/models.py:1641 msgid "Stock item contains other items" msgstr "Hàng trong kho chứa hàng hóa khác" -#: stock/models.py:1648 +#: stock/models.py:1644 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:1651 +#: stock/models.py:1647 msgid "Stock item is currently in production" msgstr "Hàng trong kho hiện đang sản xuất" -#: stock/models.py:1654 +#: stock/models.py:1650 msgid "Serialized stock cannot be merged" msgstr "Không thể hợp nhất kho nối tiếp" -#: stock/models.py:1661 stock/serializers.py:1369 +#: stock/models.py:1657 stock/serializers.py:1365 msgid "Duplicate stock items" msgstr "Mặt hàng trùng lặp" -#: stock/models.py:1665 +#: stock/models.py:1661 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:1673 +#: stock/models.py:1669 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:1678 +#: stock/models.py:1674 msgid "Stock status codes must match" msgstr "Mã trạng thái kho phải phù hợp" -#: stock/models.py:1905 +#: stock/models.py:1901 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:2326 +#: stock/models.py:2310 msgid "Entry notes" msgstr "Ghi chú đầu vào" -#: stock/models.py:2391 +#: stock/models.py:2378 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:2396 +#: stock/models.py:2383 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:2423 +#: stock/models.py:2388 +msgid "Invalid value for this test" +msgstr "" + +#: stock/models.py:2412 msgid "Test result" msgstr "Kết quả kiểm thử" -#: stock/models.py:2430 +#: stock/models.py:2419 msgid "Test output value" msgstr "Giá trị đầu ra kiểm thử" -#: stock/models.py:2438 +#: stock/models.py:2427 msgid "Test result attachment" msgstr "Đính kèm kết quả kiểm thử" -#: stock/models.py:2442 +#: stock/models.py:2431 msgid "Test notes" msgstr "Ghi chú kiểm thử" -#: stock/models.py:2450 templates/js/translated/stock.js:1548 +#: stock/models.py:2439 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2440 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2457 +#: stock/models.py:2446 msgid "Started" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2447 msgid "The timestamp of the test start" msgstr "" -#: stock/models.py:2464 +#: stock/models.py:2453 msgid "Finished" msgstr "" -#: stock/models.py:2465 +#: stock/models.py:2454 msgid "The timestamp of the test finish" msgstr "" -#: stock/serializers.py:75 +#: stock/serializers.py:74 msgid "Generated batch code" msgstr "" -#: stock/serializers.py:84 +#: stock/serializers.py:83 msgid "Select build order" msgstr "" -#: stock/serializers.py:93 +#: stock/serializers.py:92 msgid "Select stock item to generate batch code for" msgstr "" -#: stock/serializers.py:102 +#: stock/serializers.py:101 msgid "Select location to generate batch code for" msgstr "" -#: stock/serializers.py:111 +#: stock/serializers.py:110 msgid "Select part to generate batch code for" msgstr "" -#: stock/serializers.py:120 +#: stock/serializers.py:119 msgid "Select purchase order" msgstr "" -#: stock/serializers.py:127 +#: stock/serializers.py:126 msgid "Enter quantity for batch code" msgstr "" -#: stock/serializers.py:150 +#: stock/serializers.py:149 msgid "Generated serial number" msgstr "" -#: stock/serializers.py:159 +#: stock/serializers.py:158 msgid "Select part to generate serial number for" msgstr "" -#: stock/serializers.py:167 +#: stock/serializers.py:166 msgid "Quantity of serial numbers to generate" msgstr "" -#: stock/serializers.py:229 +#: stock/serializers.py:228 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:248 +#: stock/serializers.py:247 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:280 +#: stock/serializers.py:279 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:313 +#: stock/serializers.py:315 msgid "Serial number is too large" msgstr "Số sêri quá lớn" -#: stock/serializers.py:411 +#: stock/serializers.py:438 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:531 +#: stock/serializers.py:558 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:593 +#: stock/serializers.py:595 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:606 +#: stock/serializers.py:608 #, 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:613 +#: stock/serializers.py:615 msgid "Enter serial numbers for new items" msgstr "Điền số sêri cho hàng hóa mới" -#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 +#: stock/serializers.py:626 stock/serializers.py:1322 stock/serializers.py:1578 msgid "Destination stock location" msgstr "Vị trí kho đích" -#: stock/serializers.py:631 +#: stock/serializers.py:633 msgid "Optional note field" msgstr "Trường ghi chú tùy chọn" -#: stock/serializers.py:641 +#: stock/serializers.py:643 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:696 +#: stock/serializers.py:698 msgid "Select stock item to install" msgstr "Chọn mặt hàng để lắp đặt" -#: stock/serializers.py:703 +#: stock/serializers.py:705 msgid "Quantity to Install" msgstr "Số lượng để cài đặt" -#: stock/serializers.py:704 +#: stock/serializers.py:706 msgid "Enter the quantity of items to install" msgstr "Nhập số lượng hàng hóa để cài đặt" -#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 -#: stock/serializers.py:935 +#: stock/serializers.py:711 stock/serializers.py:791 stock/serializers.py:887 +#: stock/serializers.py:937 msgid "Add transaction note (optional)" msgstr "Thêm ghi chú giao dịch (tùy chọn)" -#: stock/serializers.py:717 +#: stock/serializers.py:719 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:725 +#: stock/serializers.py:727 msgid "Stock item is unavailable" msgstr "Mặt hàng không khả dụng" -#: stock/serializers.py:736 +#: stock/serializers.py:738 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:749 +#: stock/serializers.py:751 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:784 +#: stock/serializers.py:786 msgid "Destination location for uninstalled item" msgstr "Vị trí đích cho hàng hóa bị gỡ bỏ" -#: stock/serializers.py:819 +#: stock/serializers.py:821 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:832 +#: stock/serializers.py:834 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:849 +#: stock/serializers.py:851 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:880 +#: stock/serializers.py:882 msgid "Destination location for returned item" msgstr "Vị trí đích dành cho hàng hóa trả lại" -#: stock/serializers.py:917 +#: stock/serializers.py:919 msgid "Select stock items to change status" msgstr "Chọn mặt hàng để đổi trạng thái" -#: stock/serializers.py:923 +#: stock/serializers.py:925 msgid "No stock items selected" msgstr "Không có mặt hàng nào được chọn" -#: stock/serializers.py:1019 stock/serializers.py:1082 +#: stock/serializers.py:1021 stock/serializers.py:1093 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:220 +#: stock/templates/stock/location.html:222 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "Kho phụ" -#: stock/serializers.py:1198 +#: stock/serializers.py:1086 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: stock/serializers.py:1194 msgid "Part must be salable" msgstr "Sản phẩm phải có thể bán được" -#: stock/serializers.py:1202 +#: stock/serializers.py:1198 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:1206 +#: stock/serializers.py:1202 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:1230 +#: stock/serializers.py:1226 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:1236 +#: stock/serializers.py:1232 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:1244 +#: stock/serializers.py:1240 msgid "Stock assignment notes" msgstr "Ghi chú phân bổ kho" -#: stock/serializers.py:1254 stock/serializers.py:1508 +#: stock/serializers.py:1250 stock/serializers.py:1504 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:1333 +#: stock/serializers.py:1329 msgid "Stock merging notes" msgstr "Ghi chú gộp kho" -#: stock/serializers.py:1338 +#: stock/serializers.py:1334 msgid "Allow mismatched suppliers" msgstr "Cho phép nhiều nhà cung không khớp" -#: stock/serializers.py:1339 +#: stock/serializers.py:1335 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:1344 +#: stock/serializers.py:1340 msgid "Allow mismatched status" msgstr "Cho phép trạng thái không khớp" -#: stock/serializers.py:1345 +#: stock/serializers.py:1341 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:1355 +#: stock/serializers.py:1351 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:1422 +#: stock/serializers.py:1418 msgid "No Change" msgstr "" -#: stock/serializers.py:1451 +#: stock/serializers.py:1447 msgid "StockItem primary key value" msgstr "Giá trị khóa chính mặt hàng" -#: stock/serializers.py:1470 +#: stock/serializers.py:1466 msgid "Stock item status code" msgstr "Mã trạng thái mặt hàng" -#: stock/serializers.py:1498 +#: stock/serializers.py:1494 msgid "Stock transaction notes" msgstr "Ghi chú giao dịch kho" @@ -9450,7 +9532,7 @@ msgstr "Thông tin kiểm thử" msgid "Test Report" msgstr "Báo cáo kiểm thử" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276 msgid "Delete Test Data" msgstr "Xóa dữ liệu báo cáo kiểm thử" @@ -9470,11 +9552,11 @@ msgstr "Hàng hóa đã lắp đặt" msgid "Install Stock Item" msgstr "Lắp đặt hàng hóa trong kho" -#: stock/templates/stock/item.html:272 +#: stock/templates/stock/item.html:264 msgid "Delete all test results for this stock item" msgstr "Xóa toàn bộ kết quả kiểm thử cho kho hàng này" -#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "" @@ -9760,28 +9842,28 @@ msgstr "Bạn không thuộc danh sách chủ sở hữu của vị trí này. V msgid "Location Type" msgstr "" -#: stock/templates/stock/location.html:224 +#: stock/templates/stock/location.html:226 msgid "Create new stock location" msgstr "Tạo mới vị trí kho" -#: stock/templates/stock/location.html:225 +#: stock/templates/stock/location.html:227 msgid "New Location" msgstr "Vị trí mới" -#: stock/templates/stock/location.html:295 +#: stock/templates/stock/location.html:299 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:317 +#: stock/templates/stock/location.html:321 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:390 +#: stock/templates/stock/location.html:394 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:401 +#: stock/templates/stock/location.html:405 msgid "Link Barcode to Stock Location" msgstr "" @@ -10205,20 +10287,20 @@ msgstr "Cài đặt đơn đặt mua" msgid "Pricing Settings" msgstr "Cài đặt định giá" -#: templates/InvenTree/settings/pricing.html:34 +#: templates/InvenTree/settings/pricing.html:35 msgid "Exchange Rates" msgstr "Tỷ giá hối đoái" -#: templates/InvenTree/settings/pricing.html:38 +#: templates/InvenTree/settings/pricing.html:39 msgid "Update Now" msgstr "Cập nhật ngay" -#: templates/InvenTree/settings/pricing.html:46 -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 msgid "Last Update" msgstr "Lần cập nhật gần nhất" -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:51 msgid "Never" msgstr "Chưa bao giờ" @@ -10275,8 +10357,8 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:547 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 +#: templates/js/translated/part.js:393 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:402 msgid "Delete" msgstr "Xóa" @@ -10316,12 +10398,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 -#: templates/js/translated/part.js:1645 +#: templates/js/translated/part.js:1646 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 -#: templates/js/translated/part.js:1646 +#: templates/js/translated/part.js:1647 msgid "Delete Template" msgstr "" @@ -10711,7 +10793,7 @@ msgid "Submit Bug Report" msgstr "Gửi báo cáo lỗi" #: templates/about.html:91 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 +#: templates/js/translated/helpers.js:589 msgid "copy to clipboard" msgstr "sao chép đến bảng tạm" @@ -10775,7 +10857,7 @@ msgid "Are you sure you want to sign out?" msgstr "Bạn có chắc bạn muốn đăng xuất không?" #: templates/account/logout.html:27 templates/allauth_2fa/backup_tokens.html:35 -#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:44 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45 msgid "Return to Site" msgstr "Quay lại site" @@ -10889,15 +10971,19 @@ msgstr "Bước 1" msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "Quét mã QR bên dưới với bộ sinh mã thông báo mà bạn chọn (cho thực thể Google Authentication)." -#: templates/allauth_2fa/setup.html:23 +#: templates/allauth_2fa/setup.html:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 msgid "Step 2" msgstr "Bước 2" -#: templates/allauth_2fa/setup.html:27 +#: templates/allauth_2fa/setup.html:28 msgid "Input a token generated by the app:" msgstr "Điền một mã thông báo đã sinh bởi ứng dụng:" -#: templates/allauth_2fa/setup.html:37 +#: templates/allauth_2fa/setup.html:38 msgid "Verify" msgstr "Xác minh" @@ -10976,7 +11062,7 @@ msgid "Click on the following link to view this part" msgstr "Nhấp chuột vào liên kết dưới đây để xem sản phẩm này" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3217 +#: templates/js/translated/part.js:3219 msgid "Minimum Quantity" msgstr "Số lượng tối thiểu" @@ -11064,27 +11150,27 @@ msgstr "" msgid "Delete attachments" msgstr "" -#: templates/js/translated/attachment.js:253 +#: templates/js/translated/attachment.js:260 msgid "Attachment actions" msgstr "" -#: templates/js/translated/attachment.js:275 +#: templates/js/translated/attachment.js:294 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:315 +#: templates/js/translated/attachment.js:334 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:365 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:366 +#: templates/js/translated/attachment.js:385 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:374 +#: templates/js/translated/attachment.js:393 msgid "Delete attachment" msgstr "" @@ -11365,7 +11451,7 @@ msgid "Includes variant and substitute stock" msgstr "" #: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 -#: templates/js/translated/part.js:1256 +#: templates/js/translated/part.js:1257 #: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" @@ -11692,7 +11778,7 @@ msgstr "" #: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 #: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 -#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11735,8 +11821,8 @@ msgstr "" msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 -#: templates/js/translated/part.js:1202 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:791 +#: templates/js/translated/part.js:1203 msgid "Trackable part" msgstr "" @@ -11922,7 +12008,7 @@ msgid "Delete Parameters" msgstr "" #: templates/js/translated/company.js:1191 -#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2244 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2245 msgid "Order parts" msgstr "" @@ -11939,34 +12025,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:1279 -#: templates/js/translated/company.js:1567 templates/js/translated/part.js:798 -#: templates/js/translated/part.js:1210 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Template part" msgstr "" #: templates/js/translated/company.js:1283 -#: templates/js/translated/company.js:1571 templates/js/translated/part.js:802 -#: templates/js/translated/part.js:1214 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:803 +#: templates/js/translated/part.js:1215 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1464 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1465 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1527 +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1528 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1528 +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1529 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1433 +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1434 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1549 +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1550 msgid "Delete Parameter" msgstr "" @@ -12100,23 +12186,23 @@ msgstr "Lỗi biểu mẫu tồn tại" msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2499 +#: templates/js/translated/forms.js:2500 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3113 +#: templates/js/translated/forms.js:3114 msgid "Select Columns" msgstr "" @@ -12217,7 +12303,7 @@ msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 -#: templates/js/translated/part.js:1604 +#: templates/js/translated/part.js:1605 msgid "ID" msgstr "" @@ -12298,347 +12384,343 @@ msgstr "" 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 +#: templates/js/translated/part.js:333 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:355 +#: templates/js/translated/part.js:356 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:356 +#: templates/js/translated/part.js:357 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:370 +#: templates/js/translated/part.js:371 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:383 +#: templates/js/translated/part.js:384 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:388 +#: templates/js/translated/part.js:389 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:397 +#: templates/js/translated/part.js:398 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:401 +#: templates/js/translated/part.js:402 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:406 +#: templates/js/translated/part.js:407 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:430 +#: templates/js/translated/part.js:431 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:432 +#: templates/js/translated/part.js:433 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:433 +#: templates/js/translated/part.js:434 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:462 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:463 +#: templates/js/translated/part.js:464 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:474 +#: templates/js/translated/part.js:475 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:531 +#: templates/js/translated/part.js:532 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:532 +#: templates/js/translated/part.js:533 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:546 +#: templates/js/translated/part.js:547 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:548 +#: templates/js/translated/part.js:549 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:549 +#: templates/js/translated/part.js:550 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:550 +#: templates/js/translated/part.js:551 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:557 +#: templates/js/translated/part.js:558 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:593 +#: templates/js/translated/part.js:594 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:595 +#: templates/js/translated/part.js:596 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:600 +#: templates/js/translated/part.js:601 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:602 +#: templates/js/translated/part.js:603 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:619 +#: templates/js/translated/part.js:620 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:629 +#: templates/js/translated/part.js:630 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:632 +#: templates/js/translated/part.js:633 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:657 +#: templates/js/translated/part.js:658 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:685 +#: templates/js/translated/part.js:686 #: templates/js/translated/table_filters.js:747 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:688 +#: templates/js/translated/part.js:689 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:748 +#: templates/js/translated/part.js:749 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:771 +#: templates/js/translated/part.js:772 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +#: templates/js/translated/part.js:795 templates/js/translated/part.js:1207 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:806 +#: templates/js/translated/part.js:807 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:810 +#: templates/js/translated/part.js:811 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:897 +#: templates/js/translated/part.js:898 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:901 +#: templates/js/translated/part.js:902 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1050 +#: templates/js/translated/part.js:1051 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1145 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +#: templates/js/translated/part.js:1113 templates/js/translated/part.js:1155 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1281 +#: templates/js/translated/part.js:1282 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1599 +#: templates/js/translated/part.js:1600 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1662 +#: templates/js/translated/part.js:1663 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1674 +#: templates/js/translated/part.js:1675 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1682 +#: templates/js/translated/part.js:1683 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1716 +#: templates/js/translated/part.js:1717 #: templates/js/translated/purchase_order.js:1654 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1860 +#: templates/js/translated/part.js:1861 #: templates/js/translated/purchase_order.js:2153 #: templates/js/translated/return_order.js:755 #: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1906 +#: templates/js/translated/part.js:1907 #: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1970 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1991 +#: templates/js/translated/part.js:1992 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 +#: templates/js/translated/part.js:2080 templates/js/translated/part.js:2506 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2200 +#: templates/js/translated/part.js:2201 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2205 +#: templates/js/translated/part.js:2206 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2235 +#: templates/js/translated/part.js:2236 msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2286 +#: templates/js/translated/part.js:2287 msgid "part" msgstr "" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2288 msgid "parts" msgstr "" -#: templates/js/translated/part.js:2383 +#: templates/js/translated/part.js:2384 msgid "No category" msgstr "" -#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2546 +#: templates/js/translated/part.js:2547 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2644 +#: templates/js/translated/part.js:2645 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2760 +#: templates/js/translated/part.js:2761 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2776 +#: templates/js/translated/part.js:2777 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2865 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2887 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/part.js:2938 templates/js/translated/stock.js:1457 #: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2940 +#: templates/js/translated/part.js:2942 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2956 +#: templates/js/translated/part.js:2958 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2970 +#: templates/js/translated/part.js:2972 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3051 templates/js/translated/part.js:3052 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3052 +#: templates/js/translated/part.js:3054 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3058 +#: templates/js/translated/part.js:3060 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3108 +#: templates/js/translated/part.js:3110 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3114 +#: templates/js/translated/part.js:3116 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3210 +#: templates/js/translated/part.js:3212 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3226 +#: templates/js/translated/part.js:3228 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3271 +#: templates/js/translated/part.js:3273 msgid "Minimum Stock Level" msgstr "" @@ -13246,10 +13328,6 @@ msgstr "" 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 "" @@ -13418,7 +13496,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:401 +#: templates/js/translated/stock.js:1042 users/models.py:392 msgid "Add" msgstr "Thêm" @@ -14309,34 +14387,35 @@ msgstr "Lần cuối mã thông báo được sử dụng" msgid "Revoked" msgstr "Đã thu hồi" -#: users/models.py:384 +#: users/models.py:375 msgid "Permission set" msgstr "Quyền hạn đã đặt" -#: users/models.py:393 +#: users/models.py:384 msgid "Group" msgstr "Nhóm" -#: users/models.py:397 +#: users/models.py:388 msgid "View" msgstr "Xem" -#: users/models.py:397 +#: users/models.py:388 msgid "Permission to view items" msgstr "Quyền để xem mục" -#: users/models.py:401 +#: users/models.py:392 msgid "Permission to add items" msgstr "Quyền để thêm mục" -#: users/models.py:405 +#: users/models.py:396 msgid "Change" msgstr "Đổi" -#: users/models.py:407 +#: users/models.py:398 msgid "Permissions to edit items" msgstr "Quyển để sửa mục" -#: users/models.py:413 +#: users/models.py:404 msgid "Permission to delete items" msgstr "Quyền để xóa mục" + diff --git a/src/backend/InvenTree/locale/zh/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/zh/LC_MESSAGES/django.po index 8f153ad6c2..786fe8f7fa 100644 --- a/src/backend/InvenTree/locale/zh/LC_MESSAGES/django.po +++ b/src/backend/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-05-31 07:08+0000\n" -"PO-Revision-Date: 2024-05-27 11:54\n" +"POT-Creation-Date: 2024-06-26 03:18+0000\n" +"PO-Revision-Date: 2024-06-26 06:04\n" "Last-Translator: \n" "Language-Team: Chinese Traditional\n" "Language: zh_TW\n" @@ -21,7 +21,7 @@ msgstr "" msgid "API endpoint not found" msgstr "" -#: InvenTree/api.py:536 +#: InvenTree/api.py:520 msgid "User does not have permission to view this model" msgstr "" @@ -52,25 +52,25 @@ msgstr "" msgid "Error details can be found in the admin panel" msgstr "" -#: InvenTree/fields.py:139 +#: InvenTree/fields.py:136 msgid "Enter date" msgstr "" -#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 -#: build/serializers.py:531 build/templates/build/sidebar.html:21 -#: company/models.py:849 company/templates/company/sidebar.html:37 -#: order/models.py:1332 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:205 InvenTree/models.py:918 build/serializers.py:452 +#: build/serializers.py:530 build/templates/build/sidebar.html:21 +#: company/models.py:817 company/templates/company/sidebar.html:37 +#: order/models.py:1296 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:3218 part/templates/part/part_sidebar.html:63 +#: part/models.py:3183 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_report.html:172 -#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 -#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 -#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 -#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:230 stock/models.py:2309 stock/models.py:2431 +#: stock/serializers.py:632 stock/serializers.py:790 stock/serializers.py:886 +#: stock/serializers.py:936 stock/serializers.py:1239 stock/serializers.py:1328 +#: stock/serializers.py:1493 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1080 +#: templates/js/translated/part.js:1081 #: templates/js/translated/purchase_order.js:2200 #: templates/js/translated/return_order.js:775 #: templates/js/translated/sales_order.js:1103 @@ -120,15 +120,15 @@ msgstr "" msgid "You must type the same email each time." msgstr "" -#: InvenTree/forms.py:253 InvenTree/forms.py:261 +#: InvenTree/forms.py:248 InvenTree/forms.py:256 msgid "The provided primary email address is not valid." msgstr "" -#: InvenTree/forms.py:268 +#: InvenTree/forms.py:263 msgid "The provided email domain is not approved." msgstr "" -#: InvenTree/forms.py:395 +#: InvenTree/forms.py:390 msgid "Registration is disabled." msgstr "" @@ -171,35 +171,35 @@ msgstr "" msgid "Remove HTML tags from this value" msgstr "" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Connection error" msgstr "" -#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 msgid "Server responded with invalid status code" msgstr "" -#: InvenTree/helpers_model.py:158 +#: InvenTree/helpers_model.py:148 msgid "Exception occurred" msgstr "" -#: InvenTree/helpers_model.py:168 +#: InvenTree/helpers_model.py:158 msgid "Server responded with invalid Content-Length value" msgstr "" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:161 msgid "Image size is too large" msgstr "" -#: InvenTree/helpers_model.py:183 +#: InvenTree/helpers_model.py:173 msgid "Image download exceeded maximum size" msgstr "" -#: InvenTree/helpers_model.py:188 +#: InvenTree/helpers_model.py:178 msgid "Remote server returned empty response" msgstr "" -#: InvenTree/helpers_model.py:196 +#: InvenTree/helpers_model.py:186 msgid "Supplied URL is not a valid image file" msgstr "" @@ -296,46 +296,50 @@ msgid "Portuguese (Brazilian)" msgstr "" #: InvenTree/locales.py:41 -msgid "Russian" +msgid "Romanian" msgstr "" #: InvenTree/locales.py:42 -msgid "Slovak" +msgid "Russian" msgstr "" #: InvenTree/locales.py:43 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: InvenTree/locales.py:44 -msgid "Serbian" +msgid "Slovenian" msgstr "" #: InvenTree/locales.py:45 -msgid "Swedish" +msgid "Serbian" msgstr "" #: InvenTree/locales.py:46 -msgid "Thai" +msgid "Swedish" msgstr "" #: InvenTree/locales.py:47 -msgid "Turkish" +msgid "Thai" msgstr "" #: InvenTree/locales.py:48 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: InvenTree/locales.py:49 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: InvenTree/locales.py:50 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: InvenTree/locales.py:51 +msgid "Chinese (Simplified)" +msgstr "" + +#: InvenTree/locales.py:52 msgid "Chinese (Traditional)" msgstr "" @@ -344,153 +348,65 @@ msgstr "" msgid "[{site_name}] Log in to the app" msgstr "" -#: InvenTree/magic_login.py:38 company/models.py:133 +#: InvenTree/magic_login.py:38 company/models.py:136 #: company/templates/company/company_base.html:138 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:677 msgid "Email" msgstr "" -#: InvenTree/models.py:107 +#: InvenTree/models.py:105 msgid "Error running plugin validation" msgstr "" -#: InvenTree/models.py:176 +#: InvenTree/models.py:174 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:182 +#: InvenTree/models.py:180 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:183 +#: InvenTree/models.py:181 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:413 +#: InvenTree/models.py:408 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:420 +#: InvenTree/models.py:415 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:426 +#: InvenTree/models.py:421 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:437 +#: InvenTree/models.py:432 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:445 +#: InvenTree/models.py:440 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:476 +#: InvenTree/models.py:471 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:550 -msgid "Missing file" -msgstr "" - -#: InvenTree/models.py:551 -msgid "Missing external link" -msgstr "" - -#: InvenTree/models.py:572 stock/models.py:2437 -#: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:326 -msgid "Attachment" -msgstr "" - -#: InvenTree/models.py:573 -msgid "Select file to attach" -msgstr "" - -#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:831 -#: order/models.py:303 order/models.py:1337 order/models.py:1753 -#: part/admin.py:55 part/models.py:962 -#: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_report.html:164 -#: stock/admin.py:225 templates/js/translated/company.js:1319 -#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2455 -#: templates/js/translated/purchase_order.js:2040 -#: templates/js/translated/purchase_order.js:2204 -#: templates/js/translated/return_order.js:779 -#: templates/js/translated/sales_order.js:1092 -#: templates/js/translated/sales_order.js:2023 -msgid "Link" -msgstr "" - -#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 -#: stock/models.py:836 -msgid "Link to external URL" -msgstr "" - -#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:341 -msgid "Comment" -msgstr "" - -#: InvenTree/models.py:589 -msgid "File comment" -msgstr "" - -#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 -#: common/models.py:2518 common/models.py:2742 common/models.py:2743 -#: common/models.py:2988 common/models.py:2989 part/models.py:3228 -#: part/models.py:3315 part/models.py:3408 part/models.py:3436 -#: plugin/models.py:259 plugin/models.py:260 -#: report/templates/report/inventree_test_report.html:105 -#: templates/js/translated/stock.js:3036 users/models.py:111 -msgid "User" -msgstr "" - -#: InvenTree/models.py:602 -msgid "upload date" -msgstr "" - -#: InvenTree/models.py:624 -msgid "Filename must not be empty" -msgstr "" - -#: InvenTree/models.py:635 -msgid "Invalid attachment directory" -msgstr "" - -#: InvenTree/models.py:665 -#, python-brace-format -msgid "Filename contains illegal character '{c}'" -msgstr "" - -#: InvenTree/models.py:668 -msgid "Filename missing extension" -msgstr "" - -#: InvenTree/models.py:677 -msgid "Attachment with this filename already exists" -msgstr "" - -#: InvenTree/models.py:684 -msgid "Error renaming file" -msgstr "" - -#: InvenTree/models.py:860 +#: InvenTree/models.py:719 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:877 +#: InvenTree/models.py:736 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 -#: common/serializers.py:403 company/models.py:614 machine/models.py:24 -#: part/models.py:898 part/models.py:3659 plugin/models.py:50 -#: report/models.py:149 stock/models.py:72 +#: InvenTree/models.py:766 common/models.py:2623 common/models.py:3036 +#: common/serializers.py:408 company/models.py:580 machine/models.py:24 +#: part/models.py:891 part/models.py:3639 plugin/models.py:51 +#: report/models.py:150 stock/models.py:73 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:83 @@ -501,25 +417,25 @@ msgstr "" #: templates/js/translated/company.js:724 #: templates/js/translated/company.js:913 #: templates/js/translated/company.js:1165 -#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 -#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1187 +#: templates/js/translated/part.js:1475 templates/js/translated/part.js:1611 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "" -#: InvenTree/models.py:913 build/models.py:218 -#: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:523 company/models.py:840 +#: InvenTree/models.py:772 build/models.py:220 +#: build/templates/build/detail.html:24 common/models.py:138 +#: company/models.py:509 company/models.py:808 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 order/models.py:289 -#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 -#: part/models.py:3674 part/templates/part/category.html:82 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:914 +#: part/models.py:3654 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:155 -#: report/models.py:509 report/models.py:535 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 #: report/templates/report/inventree_build_order_report.html:117 -#: stock/admin.py:55 stock/models.py:78 stock/templates/stock/location.html:125 +#: stock/admin.py:54 stock/models.py:79 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 @@ -528,10 +444,10 @@ msgstr "" #: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 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:2354 -#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1239 +#: templates/js/translated/part.js:1484 templates/js/translated/part.js:1622 +#: templates/js/translated/part.js:1959 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2897 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1706 #: templates/js/translated/purchase_order.js:1849 @@ -544,149 +460,141 @@ msgstr "" msgid "Description" msgstr "" -#: InvenTree/models.py:914 stock/models.py:79 +#: InvenTree/models.py:773 stock/models.py:80 msgid "Description (optional)" msgstr "" -#: InvenTree/models.py:923 -msgid "parent" -msgstr "" - -#: InvenTree/models.py:929 templates/js/translated/part.js:2793 +#: InvenTree/models.py:788 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "" -#: InvenTree/models.py:1035 +#: InvenTree/models.py:918 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:1064 +#: InvenTree/models.py:947 msgid "Barcode Data" msgstr "" -#: InvenTree/models.py:1065 +#: InvenTree/models.py:948 msgid "Third party barcode data" msgstr "" -#: InvenTree/models.py:1071 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:1072 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:1125 +#: InvenTree/models.py:1008 msgid "Existing barcode found" msgstr "" -#: InvenTree/models.py:1168 +#: InvenTree/models.py:1051 msgid "Server Error" msgstr "" -#: InvenTree/models.py:1169 +#: InvenTree/models.py:1052 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:62 part/models.py:4212 +#: InvenTree/serializers.py:63 part/models.py:4192 msgid "Must be a valid number" msgstr "" -#: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:3036 +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3001 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "" -#: InvenTree/serializers.py:102 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:441 +#: InvenTree/serializers.py:442 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:453 +#: InvenTree/serializers.py:454 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:472 +#: InvenTree/serializers.py:473 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:474 +#: InvenTree/serializers.py:475 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:481 +#: InvenTree/serializers.py:482 msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:542 -msgid "Filename" -msgstr "" - -#: InvenTree/serializers.py:576 +#: InvenTree/serializers.py:540 msgid "Invalid value" msgstr "" -#: InvenTree/serializers.py:596 +#: InvenTree/serializers.py:560 msgid "Data File" msgstr "" -#: InvenTree/serializers.py:597 +#: InvenTree/serializers.py:561 msgid "Select data file for upload" msgstr "" -#: InvenTree/serializers.py:614 +#: InvenTree/serializers.py:578 msgid "Unsupported file type" msgstr "" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:584 msgid "File is too large" msgstr "" -#: InvenTree/serializers.py:641 +#: InvenTree/serializers.py:605 msgid "No columns found in file" msgstr "" -#: InvenTree/serializers.py:644 +#: InvenTree/serializers.py:608 msgid "No data rows found in file" msgstr "" -#: InvenTree/serializers.py:757 +#: InvenTree/serializers.py:721 msgid "No data rows provided" msgstr "" -#: InvenTree/serializers.py:760 +#: InvenTree/serializers.py:724 msgid "No data columns supplied" msgstr "" -#: InvenTree/serializers.py:827 +#: InvenTree/serializers.py:791 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "" -#: InvenTree/serializers.py:836 +#: InvenTree/serializers.py:800 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/serializers.py:859 +#: InvenTree/serializers.py:840 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:860 +#: InvenTree/serializers.py:841 msgid "URL of remote image file" msgstr "" -#: InvenTree/serializers.py:878 +#: InvenTree/serializers.py:859 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/status.py:66 part/serializers.py:1178 +#: InvenTree/status.py:66 part/serializers.py:1174 msgid "Background worker check failed" msgstr "" @@ -698,27 +606,27 @@ msgstr "" msgid "InvenTree system health checks failed" msgstr "" -#: InvenTree/templatetags/inventree_extras.py:183 +#: InvenTree/templatetags/inventree_extras.py:184 msgid "Unknown database" msgstr "" -#: InvenTree/validators.py:31 InvenTree/validators.py:33 +#: InvenTree/validators.py:32 InvenTree/validators.py:34 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:39 +#: InvenTree/validators.py:40 msgid "Not a valid currency code" msgstr "" -#: InvenTree/validators.py:121 InvenTree/validators.py:137 +#: InvenTree/validators.py:118 InvenTree/validators.py:134 msgid "Overage value must not be negative" msgstr "" -#: InvenTree/validators.py:139 +#: InvenTree/validators.py:136 msgid "Overage must not exceed 100%" msgstr "" -#: InvenTree/validators.py:145 +#: InvenTree/validators.py:142 msgid "Invalid value for overage" msgstr "" @@ -750,14 +658,14 @@ msgstr "" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: build/api.py:299 part/models.py:4070 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:300 part/models.py:4084 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4064 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2529 #: templates/js/translated/table_filters.js:186 @@ -778,30 +686,30 @@ msgstr "" msgid "Allocated" msgstr "" -#: build/api.py:311 company/models.py:904 company/serializers.py:383 +#: build/api.py:311 company/models.py:872 company/serializers.py:359 #: 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:2561 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:234 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 -#: templates/js/translated/part.js:699 +#: templates/js/translated/part.js:693 templates/js/translated/part.js:695 +#: templates/js/translated/part.js:700 #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:575 msgid "Available" msgstr "" -#: build/models.py:83 build/templates/build/build_base.html:9 +#: build/models.py:85 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_report.html:105 -#: stock/serializers.py:83 templates/email/build_order_completed.html:16 +#: stock/serializers.py:82 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:2892 msgid "Build Order" msgstr "" -#: build/models.py:84 build/templates/build/build_base.html:13 +#: build/models.py:86 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 @@ -812,25 +720,25 @@ msgstr "" msgid "Build Orders" msgstr "" -#: build/models.py:131 +#: build/models.py:133 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:142 order/models.py:240 +#: build/models.py:144 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "" -#: build/models.py:148 +#: build/models.py:150 msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:209 +#: build/models.py:211 msgid "Build Order Reference" msgstr "" -#: build/models.py:210 order/models.py:463 order/models.py:928 -#: order/models.py:1325 order/models.py:2056 part/admin.py:419 -#: part/models.py:4105 part/templates/part/upload_bom.html:54 +#: build/models.py:212 order/models.py:463 order/models.py:926 +#: order/models.py:1289 order/models.py:2020 part/admin.py:411 +#: part/models.py:4085 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_purchase_order_report.html:28 #: report/templates/report/inventree_return_order_report.html:26 @@ -844,27 +752,27 @@ msgstr "" msgid "Reference" msgstr "" -#: build/models.py:221 +#: build/models.py:223 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:229 build/templates/build/build_base.html:183 +#: build/models.py:231 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:230 +#: build/models.py:232 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:235 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 -#: order/models.py:1450 order/models.py:1595 order/models.py:1596 -#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 -#: part/models.py:3191 part/models.py:3335 part/models.py:3358 -#: part/models.py:3379 part/models.py:3401 part/models.py:3511 -#: part/models.py:3807 part/models.py:3963 part/models.py:4056 -#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 +#: build/models.py:237 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1026 order/api.py:805 +#: order/models.py:1414 order/models.py:1559 order/models.py:1560 +#: part/api.py:1494 part/api.py:1788 part/models.py:395 part/models.py:3012 +#: part/models.py:3156 part/models.py:3303 part/models.py:3324 +#: part/models.py:3346 part/models.py:3477 part/models.py:3787 +#: part/models.py:3943 part/models.py:4036 part/models.py:4395 +#: part/serializers.py:1120 part/serializers.py:1726 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -875,8 +783,8 @@ msgstr "" #: report/templates/report/inventree_return_order_report.html:24 #: report/templates/report/inventree_sales_order_report.html:27 #: report/templates/report/inventree_stock_location_report.html:102 -#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 -#: stock/serializers.py:818 templates/InvenTree/search.html:82 +#: stock/serializers.py:109 stock/serializers.py:157 stock/serializers.py:423 +#: stock/serializers.py:820 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 @@ -889,8 +797,8 @@ msgstr "" #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 -#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2323 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:1944 templates/js/translated/part.js:2016 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 #: templates/js/translated/purchase_order.js:751 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1848 @@ -908,107 +816,107 @@ msgstr "" msgid "Part" msgstr "" -#: build/models.py:243 +#: build/models.py:245 msgid "Select part to build" msgstr "" -#: build/models.py:248 +#: build/models.py:250 msgid "Sales Order Reference" msgstr "" -#: build/models.py:252 +#: build/models.py:254 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:257 build/serializers.py:1000 +#: build/models.py:259 build/serializers.py:999 #: templates/js/translated/build.js:1731 #: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "" -#: build/models.py:261 +#: build/models.py:263 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:266 +#: build/models.py:268 msgid "Destination Location" msgstr "" -#: build/models.py:270 +#: build/models.py:272 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:274 +#: build/models.py:276 msgid "Build Quantity" msgstr "" -#: build/models.py:277 +#: build/models.py:279 msgid "Number of stock items to build" msgstr "" -#: build/models.py:281 +#: build/models.py:283 msgid "Completed items" msgstr "" -#: build/models.py:283 +#: build/models.py:285 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:287 +#: build/models.py:289 msgid "Build Status" msgstr "" -#: build/models.py:291 +#: build/models.py:293 msgid "Build status code" msgstr "" -#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 -#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 +#: build/models.py:302 build/serializers.py:286 order/serializers.py:580 +#: stock/models.py:838 stock/serializers.py:74 stock/serializers.py:1458 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "" -#: build/models.py:304 build/serializers.py:288 +#: build/models.py:306 build/serializers.py:287 msgid "Batch code for this build output" msgstr "" -#: build/models.py:307 order/models.py:316 order/serializers.py:120 -#: part/models.py:1122 part/templates/part/part_base.html:310 +#: build/models.py:309 order/models.py:316 order/serializers.py:119 +#: part/models.py:1115 part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:338 #: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "" -#: build/models.py:311 +#: build/models.py:313 msgid "Target completion date" msgstr "" -#: build/models.py:312 +#: build/models.py:314 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:315 order/models.py:521 order/models.py:2101 +#: build/models.py:317 order/models.py:521 order/models.py:2065 #: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "" -#: build/models.py:321 +#: build/models.py:323 msgid "completed by" msgstr "" -#: build/models.py:329 templates/js/translated/build.js:2207 +#: build/models.py:331 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "" -#: build/models.py:330 +#: build/models.py:332 msgid "User who issued this build order" msgstr "" -#: build/models.py:338 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:145 +#: build/models.py:340 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:147 #: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:232 part/models.py:1139 +#: order/templates/order/sales_order_base.html:232 part/models.py:1132 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_report.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 @@ -1019,31 +927,36 @@ msgstr "" msgid "Responsible" msgstr "" -#: build/models.py:339 +#: build/models.py:341 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:344 build/templates/build/detail.html:108 +#: build/models.py:346 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:184 -#: part/templates/part/part_base.html:383 stock/models.py:836 +#: part/templates/part/part_base.html:383 stock/models.py:834 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "" -#: build/models.py:349 +#: build/models.py:347 common/models.py:3178 part/models.py:956 +#: stock/models.py:834 +msgid "Link to external URL" +msgstr "" + +#: build/models.py:351 msgid "Build Priority" msgstr "" -#: build/models.py:352 +#: build/models.py:354 msgid "Priority of this build order" msgstr "" -#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: build/models.py:361 common/models.py:131 order/admin.py:18 #: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 #: templates/js/translated/build.js:2144 #: templates/js/translated/purchase_order.js:1710 @@ -1054,65 +967,65 @@ msgstr "" msgid "Project Code" msgstr "" -#: build/models.py:360 +#: build/models.py:362 msgid "Project code for this build order" msgstr "" -#: build/models.py:593 build/models.py:658 +#: build/models.py:595 build/models.py:660 msgid "Failed to offload task to complete build allocations" msgstr "" -#: build/models.py:615 +#: build/models.py:617 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:621 +#: build/models.py:623 msgid "A build order has been completed" msgstr "" -#: build/models.py:847 build/models.py:932 +#: build/models.py:849 build/models.py:934 msgid "No build output specified" msgstr "" -#: build/models.py:850 +#: build/models.py:852 msgid "Build output is already completed" msgstr "" -#: build/models.py:853 +#: build/models.py:855 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 -#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 -#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 -#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 +#: build/models.py:938 build/serializers.py:219 build/serializers.py:268 +#: build/serializers.py:866 order/models.py:559 order/serializers.py:432 +#: order/serializers.py:575 part/serializers.py:1484 part/serializers.py:1884 +#: stock/models.py:677 stock/models.py:1495 stock/serializers.py:603 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:941 build/serializers.py:225 +#: build/models.py:943 build/serializers.py:224 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1001 build/serializers.py:548 +#: build/models.py:1003 build/serializers.py:547 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1352 +#: build/models.py:1344 msgid "Build Order Line Item" msgstr "" -#: build/models.py:1377 +#: build/models.py:1369 msgid "Build object" msgstr "" -#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 -#: build/serializers.py:254 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2539 -#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 -#: part/forms.py:48 part/models.py:3205 part/models.py:4078 +#: build/models.py:1383 build/models.py:1639 build/serializers.py:206 +#: build/serializers.py:253 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2509 +#: order/models.py:1272 order/models.py:1931 order/serializers.py:1327 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3170 part/models.py:4058 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1121,8 +1034,8 @@ msgstr "" #: report/templates/report/inventree_sales_order_report.html:29 #: report/templates/report/inventree_stock_location_report.html:104 #: report/templates/report/inventree_test_report.html:90 -#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 -#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:125 stock/serializers.py:165 stock/serializers.py:594 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1133,8 +1046,8 @@ msgstr "" #: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 #: templates/js/translated/model_renderers.js:236 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:962 +#: templates/js/translated/part.js:1812 templates/js/translated/part.js:3342 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1154,38 +1067,38 @@ msgstr "" msgid "Quantity" msgstr "" -#: build/models.py:1392 +#: build/models.py:1384 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1472 +#: build/models.py:1464 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1481 +#: build/models.py:1473 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1491 order/models.py:1918 +#: build/models.py:1483 order/models.py:1882 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1497 order/models.py:1921 +#: build/models.py:1489 order/models.py:1885 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1503 +#: build/models.py:1495 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1562 +#: build/models.py:1554 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 -#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 -#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: build/models.py:1626 build/serializers.py:846 order/serializers.py:1171 +#: order/serializers.py:1192 stock/models.py:358 stock/serializers.py:91 +#: stock/serializers.py:697 stock/serializers.py:1177 stock/serializers.py:1289 #: stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 @@ -1201,70 +1114,70 @@ msgstr "" msgid "Stock Item" msgstr "" -#: build/models.py:1635 +#: build/models.py:1627 msgid "Source stock item" msgstr "" -#: build/models.py:1648 +#: build/models.py:1640 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1656 +#: build/models.py:1648 msgid "Install into" msgstr "" -#: build/models.py:1657 +#: build/models.py:1649 msgid "Destination stock item" msgstr "" -#: build/serializers.py:157 build/serializers.py:876 +#: build/serializers.py:156 build/serializers.py:875 #: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "" -#: build/serializers.py:169 +#: build/serializers.py:168 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:173 +#: build/serializers.py:172 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:177 +#: build/serializers.py:176 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:188 +#: build/serializers.py:187 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:208 build/serializers.py:255 +#: build/serializers.py:207 build/serializers.py:254 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:276 +#: build/serializers.py:275 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:279 +#: build/serializers.py:278 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:294 order/serializers.py:589 order/serializers.py:1343 -#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:293 order/serializers.py:588 order/serializers.py:1331 +#: stock/serializers.py:614 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:295 +#: build/serializers.py:294 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 -#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 -#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 -#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 -#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 +#: build/serializers.py:299 build/serializers.py:440 build/serializers.py:512 +#: order/serializers.py:564 order/serializers.py:672 order/serializers.py:1656 +#: part/serializers.py:1140 stock/serializers.py:100 stock/serializers.py:625 +#: stock/serializers.py:785 stock/serializers.py:881 stock/serializers.py:1321 +#: stock/serializers.py:1577 stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:1001 #: templates/js/translated/build.js:2372 @@ -1280,54 +1193,54 @@ msgstr "" msgid "Location" msgstr "" -#: build/serializers.py:301 +#: build/serializers.py:300 msgid "Stock location for build output" msgstr "" -#: build/serializers.py:315 +#: build/serializers.py:314 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:316 +#: build/serializers.py:315 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:331 +#: build/serializers.py:330 msgid "Serial numbers must be provided for trackable parts" msgstr "" -#: build/serializers.py:356 stock/api.py:1031 +#: build/serializers.py:355 stock/api.py:1041 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:403 build/serializers.py:465 build/serializers.py:554 +#: build/serializers.py:402 build/serializers.py:464 build/serializers.py:553 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:442 +#: build/serializers.py:441 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:448 +#: build/serializers.py:447 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:449 +#: build/serializers.py:448 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:454 +#: build/serializers.py:453 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:514 +#: build/serializers.py:513 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:520 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:952 -#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 -#: stock/serializers.py:930 stock/serializers.py:1469 +#: build/serializers.py:519 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2044 order/serializers.py:596 stock/admin.py:164 +#: stock/serializers.py:932 stock/serializers.py:1465 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 @@ -1339,188 +1252,188 @@ msgstr "" msgid "Status" msgstr "" -#: build/serializers.py:526 +#: build/serializers.py:525 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:527 +#: build/serializers.py:526 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:612 +#: build/serializers.py:611 msgid "Consume Allocated Stock" msgstr "" -#: build/serializers.py:613 +#: build/serializers.py:612 msgid "Consume any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:619 +#: build/serializers.py:618 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:620 +#: build/serializers.py:619 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:647 +#: build/serializers.py:646 msgid "Not permitted" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:647 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:648 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:679 +#: build/serializers.py:678 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:681 +#: build/serializers.py:680 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:691 +#: build/serializers.py:690 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:696 +#: build/serializers.py:695 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:697 +#: build/serializers.py:696 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:707 templates/js/translated/build.js:315 +#: build/serializers.py:706 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:712 order/serializers.py:301 order/serializers.py:1246 +#: build/serializers.py:711 order/serializers.py:300 order/serializers.py:1234 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:713 +#: build/serializers.py:712 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:723 templates/js/translated/build.js:319 +#: build/serializers.py:722 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:732 templates/js/translated/build.js:303 +#: build/serializers.py:731 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:770 +#: build/serializers.py:769 msgid "Build Line" msgstr "" -#: build/serializers.py:780 +#: build/serializers.py:779 msgid "Build output" msgstr "" -#: build/serializers.py:788 +#: build/serializers.py:787 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:824 +#: build/serializers.py:823 msgid "Build Line Item" msgstr "" -#: build/serializers.py:838 +#: build/serializers.py:837 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:853 stock/serializers.py:1194 +#: build/serializers.py:852 stock/serializers.py:1190 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:901 order/serializers.py:1237 +#: build/serializers.py:900 order/serializers.py:1225 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:907 +#: build/serializers.py:906 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:914 +#: build/serializers.py:913 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:938 order/serializers.py:1489 +#: build/serializers.py:937 order/serializers.py:1477 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:1001 +#: build/serializers.py:1000 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:1009 +#: build/serializers.py:1008 msgid "Exclude Location" msgstr "" -#: build/serializers.py:1010 +#: build/serializers.py:1009 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:1015 +#: build/serializers.py:1014 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:1016 +#: build/serializers.py:1015 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:1021 +#: build/serializers.py:1020 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:1022 +#: build/serializers.py:1021 msgid "Allow allocation of substitute parts" msgstr "" -#: build/serializers.py:1027 +#: build/serializers.py:1026 msgid "Optional Items" msgstr "" -#: build/serializers.py:1028 +#: build/serializers.py:1027 msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1050 +#: build/serializers.py:1049 msgid "Failed to start auto-allocation task" msgstr "" -#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 -#: stock/api.py:794 +#: build/serializers.py:1139 part/models.py:3953 part/models.py:4387 +#: stock/api.py:804 msgid "BOM Item" msgstr "" -#: build/serializers.py:1149 templates/js/translated/index.js:130 +#: build/serializers.py:1148 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:832 part/serializers.py:1506 +#: build/serializers.py:1153 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:828 part/serializers.py:1502 #: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 -#: templates/js/translated/build.js:2613 templates/js/translated/part.js:709 -#: templates/js/translated/part.js:2148 +#: templates/js/translated/build.js:2613 templates/js/translated/part.js:710 +#: templates/js/translated/part.js:2149 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1159 part/serializers.py:1508 +#: build/serializers.py:1158 part/serializers.py:1504 #: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 +#: build/serializers.py:1163 part/bom.py:172 part/serializers.py:1527 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1929 msgid "Available Stock" @@ -1544,7 +1457,7 @@ msgstr "" #: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 #: order/status_codes.py:44 order/status_codes.py:69 #: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:165 report/models.py:443 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 msgid "Complete" msgstr "" @@ -1674,11 +1587,11 @@ msgstr "" #: build/templates/build/build_base.html:160 #: build/templates/build/detail.html:138 order/models.py:309 -#: order/models.py:1343 order/templates/order/order_base.html:186 +#: order/models.py:1307 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:196 #: report/templates/report/inventree_build_order_report.html:125 -#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1831 #: templates/js/translated/purchase_order.js:1739 #: templates/js/translated/purchase_order.js:2147 #: templates/js/translated/return_order.js:346 @@ -1711,8 +1624,8 @@ msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 -#: order/models.py:1587 order/models.py:1701 order/models.py:1855 +#: build/templates/build/detail.html:101 order/api.py:1463 order/models.py:845 +#: order/models.py:1551 order/models.py:1665 order/models.py:1819 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_report.html:135 @@ -1762,7 +1675,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1479 +#: build/templates/build/detail.html:49 order/models.py:1443 #: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "" @@ -1775,7 +1688,7 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:163 +#: build/templates/build/detail.html:80 stock/admin.py:162 #: stock/templates/stock/item_base.html:162 #: templates/js/translated/build.js:1380 #: templates/js/translated/model_renderers.js:241 @@ -1894,11 +1807,11 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:436 +#: build/templates/build/detail.html:427 msgid "All lines have been fully allocated" msgstr "" @@ -1914,6 +1827,34 @@ msgstr "" msgid "Incomplete Outputs" msgstr "" +#: common/api.py:689 +msgid "Is Link" +msgstr "" + +#: common/api.py:697 +msgid "Is File" +msgstr "" + +#: common/api.py:739 +msgid "User does not have permission to delete this attachment" +msgstr "" + +#: common/currency.py:130 +msgid "Invalid currency code" +msgstr "" + +#: common/currency.py:132 +msgid "Duplicate currency code" +msgstr "" + +#: common/currency.py:137 +msgid "No valid currency codes provided" +msgstr "" + +#: common/currency.py:154 +msgid "No plugin" +msgstr "" + #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1952,1507 +1893,1512 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:71 +#: common/models.py:73 msgid "Updated" msgstr "" -#: common/models.py:72 +#: common/models.py:74 msgid "Timestamp of last update" msgstr "" -#: common/models.py:105 +#: common/models.py:107 msgid "Site URL is locked by configuration" msgstr "" -#: common/models.py:130 +#: common/models.py:132 msgid "Unique project code" msgstr "" -#: common/models.py:137 +#: common/models.py:139 msgid "Project description" msgstr "" -#: common/models.py:146 +#: common/models.py:148 msgid "User or group responsible for this project" msgstr "" -#: common/models.py:766 +#: common/models.py:765 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:770 +#: common/models.py:769 msgid "Settings value" msgstr "" -#: common/models.py:822 +#: common/models.py:821 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:838 +#: common/models.py:837 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:846 +#: common/models.py:845 msgid "Value must be an integer value" msgstr "" -#: common/models.py:883 +#: common/models.py:882 msgid "Key string must be unique" msgstr "" -#: common/models.py:1115 +#: common/models.py:1114 msgid "No group" msgstr "" -#: common/models.py:1158 -msgid "An empty domain is not allowed." -msgstr "" - -#: common/models.py:1160 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "" - -#: common/models.py:1172 -msgid "No plugin" -msgstr "" - -#: common/models.py:1260 +#: common/models.py:1213 msgid "Restart required" msgstr "" -#: common/models.py:1262 +#: common/models.py:1215 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1269 +#: common/models.py:1222 msgid "Pending migrations" msgstr "" -#: common/models.py:1270 +#: common/models.py:1223 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1275 +#: common/models.py:1228 msgid "Server Instance Name" msgstr "" -#: common/models.py:1277 +#: common/models.py:1230 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1281 +#: common/models.py:1234 msgid "Use instance name" msgstr "" -#: common/models.py:1282 +#: common/models.py:1235 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1287 +#: common/models.py:1240 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1288 +#: common/models.py:1241 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1293 company/models.py:108 company/models.py:109 +#: common/models.py:1246 company/models.py:111 company/models.py:112 msgid "Company name" msgstr "" -#: common/models.py:1294 +#: common/models.py:1247 msgid "Internal company name" msgstr "" -#: common/models.py:1298 +#: common/models.py:1251 msgid "Base URL" msgstr "" -#: common/models.py:1299 +#: common/models.py:1252 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1305 +#: common/models.py:1258 msgid "Default Currency" msgstr "" -#: common/models.py:1306 +#: common/models.py:1259 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1312 +#: common/models.py:1265 +msgid "Supported Currencies" +msgstr "" + +#: common/models.py:1266 +msgid "List of supported currency codes" +msgstr "" + +#: common/models.py:1272 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1314 +#: common/models.py:1274 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1317 common/models.py:1373 common/models.py:1386 -#: common/models.py:1394 common/models.py:1403 common/models.py:1412 -#: common/models.py:1620 common/models.py:1642 common/models.py:1757 -#: common/models.py:2076 +#: common/models.py:1277 common/models.py:1333 common/models.py:1346 +#: common/models.py:1354 common/models.py:1363 common/models.py:1372 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:2046 msgid "days" msgstr "" -#: common/models.py:1321 +#: common/models.py:1281 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1322 +#: common/models.py:1282 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1327 +#: common/models.py:1287 msgid "Download from URL" msgstr "" -#: common/models.py:1329 +#: common/models.py:1289 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1335 +#: common/models.py:1295 msgid "Download Size Limit" msgstr "" -#: common/models.py:1336 +#: common/models.py:1296 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1342 +#: common/models.py:1302 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1344 +#: common/models.py:1304 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:1349 +#: common/models.py:1309 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1350 +#: common/models.py:1310 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1355 +#: common/models.py:1315 msgid "Require confirm" msgstr "" -#: common/models.py:1356 +#: common/models.py:1316 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1361 +#: common/models.py:1321 msgid "Tree Depth" msgstr "" -#: common/models.py:1363 +#: common/models.py:1323 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1369 +#: common/models.py:1329 msgid "Update Check Interval" msgstr "" -#: common/models.py:1370 +#: common/models.py:1330 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1376 +#: common/models.py:1336 msgid "Automatic Backup" msgstr "" -#: common/models.py:1377 +#: common/models.py:1337 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1382 +#: common/models.py:1342 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1383 +#: common/models.py:1343 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1389 +#: common/models.py:1349 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1391 +#: common/models.py:1351 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1398 +#: common/models.py:1358 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1400 +#: common/models.py:1360 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1407 +#: common/models.py:1367 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1409 +#: common/models.py:1369 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1416 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1376 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1417 +#: common/models.py:1377 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1422 +#: common/models.py:1382 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1423 +#: common/models.py:1383 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1429 +#: common/models.py:1389 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1430 +#: common/models.py:1390 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1435 +#: common/models.py:1395 msgid "Part Revisions" msgstr "" -#: common/models.py:1436 +#: common/models.py:1396 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1441 +#: common/models.py:1401 msgid "Allow Deletion from Assembly" msgstr "" -#: common/models.py:1442 +#: common/models.py:1402 msgid "Allow deletion of parts which are used in an assembly" msgstr "" -#: common/models.py:1447 +#: common/models.py:1407 msgid "IPN Regex" msgstr "" -#: common/models.py:1448 +#: common/models.py:1408 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1451 +#: common/models.py:1411 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1452 +#: common/models.py:1412 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1457 +#: common/models.py:1417 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1458 +#: common/models.py:1418 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1463 +#: common/models.py:1423 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1464 +#: common/models.py:1424 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1469 +#: common/models.py:1429 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1470 +#: common/models.py:1430 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1475 +#: common/models.py:1435 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1476 +#: common/models.py:1436 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1481 +#: common/models.py:1441 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1482 +#: common/models.py:1442 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1487 part/admin.py:108 part/models.py:3815 -#: report/models.py:293 report/models.py:360 report/serializers.py:90 -#: report/serializers.py:131 stock/serializers.py:228 +#: common/models.py:1447 part/admin.py:108 part/models.py:3795 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:227 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1488 +#: common/models.py:1448 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 +#: common/models.py:1453 part/admin.py:91 part/admin.py:425 part/models.py:1052 #: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" msgstr "" -#: common/models.py:1494 +#: common/models.py:1454 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1499 part/admin.py:95 part/models.py:1065 +#: common/models.py:1459 part/admin.py:95 part/models.py:1058 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1500 +#: common/models.py:1460 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1505 part/admin.py:100 part/models.py:1077 +#: common/models.py:1465 part/admin.py:100 part/models.py:1070 msgid "Purchaseable" msgstr "" -#: common/models.py:1506 +#: common/models.py:1466 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1511 part/admin.py:104 part/models.py:1083 +#: common/models.py:1471 part/admin.py:104 part/models.py:1076 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1512 +#: common/models.py:1472 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1517 part/admin.py:113 part/models.py:1071 +#: common/models.py:1477 part/admin.py:113 part/models.py:1064 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" msgstr "" -#: common/models.py:1518 +#: common/models.py:1478 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1523 part/admin.py:117 part/models.py:1093 +#: common/models.py:1483 part/admin.py:117 part/models.py:1086 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" msgstr "" -#: common/models.py:1524 +#: common/models.py:1484 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1529 +#: common/models.py:1489 msgid "Show Import in Views" msgstr "" -#: common/models.py:1530 +#: common/models.py:1490 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1535 +#: common/models.py:1495 msgid "Show related parts" msgstr "" -#: common/models.py:1536 +#: common/models.py:1496 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1541 +#: common/models.py:1501 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1542 +#: common/models.py:1502 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1547 templates/js/translated/part.js:107 +#: common/models.py:1507 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1549 +#: common/models.py:1509 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1555 +#: common/models.py:1515 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1556 +#: common/models.py:1516 msgid "Format to display the part name" msgstr "" -#: common/models.py:1562 +#: common/models.py:1522 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1563 +#: common/models.py:1523 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1567 +#: common/models.py:1527 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1569 +#: common/models.py:1529 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1575 +#: common/models.py:1535 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1577 +#: common/models.py:1537 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1583 +#: common/models.py:1548 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1585 +#: common/models.py:1550 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1591 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1593 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1599 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1601 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1607 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1609 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1615 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1617 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1630 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1632 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1638 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1640 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1647 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1648 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1653 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1655 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1661 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1662 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1667 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1669 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1675 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1676 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1681 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1682 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1687 +#: common/models.py:1657 msgid "Log Report Errors" msgstr "" -#: common/models.py:1688 +#: common/models.py:1658 msgid "Log errors which occur when generating reports" msgstr "" -#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:301 +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:302 msgid "Page Size" msgstr "" -#: common/models.py:1694 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1699 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1700 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1705 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1707 +#: common/models.py:1677 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1713 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1714 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1719 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1720 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1725 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1727 +#: common/models.py:1697 msgid "Determines default behavior when a stock item is depleted" msgstr "" -#: common/models.py:1733 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1735 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1740 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1741 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1746 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1747 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1752 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1754 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1761 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1762 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1767 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1768 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1773 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1774 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1778 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1779 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1784 +#: common/models.py:1754 msgid "Check BOM when installing items" msgstr "" -#: common/models.py:1786 +#: common/models.py:1756 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "" -#: common/models.py:1792 +#: common/models.py:1762 msgid "Allow Out of Stock Transfer" msgstr "" -#: common/models.py:1794 +#: common/models.py:1764 msgid "Allow stock items which are not in stock to be transferred between stock locations" msgstr "" -#: common/models.py:1800 +#: common/models.py:1770 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1802 +#: common/models.py:1772 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1808 common/models.py:1836 common/models.py:1858 -#: common/models.py:1894 +#: common/models.py:1778 common/models.py:1806 common/models.py:1828 +#: common/models.py:1864 msgid "Require Responsible Owner" msgstr "" -#: common/models.py:1809 common/models.py:1837 common/models.py:1859 -#: common/models.py:1895 +#: common/models.py:1779 common/models.py:1807 common/models.py:1829 +#: common/models.py:1865 msgid "A responsible owner must be assigned to each order" msgstr "" -#: common/models.py:1814 +#: common/models.py:1784 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1816 +#: common/models.py:1786 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:1822 +#: common/models.py:1792 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1823 +#: common/models.py:1793 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1828 +#: common/models.py:1798 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1830 +#: common/models.py:1800 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1842 +#: common/models.py:1812 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1844 +#: common/models.py:1814 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1850 +#: common/models.py:1820 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1852 +#: common/models.py:1822 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1864 +#: common/models.py:1834 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1865 +#: common/models.py:1835 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1870 +#: common/models.py:1840 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1872 +#: common/models.py:1842 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1878 +#: common/models.py:1848 msgid "Mark Shipped Orders as Complete" msgstr "" -#: common/models.py:1880 +#: common/models.py:1850 msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" msgstr "" -#: common/models.py:1886 +#: common/models.py:1856 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1888 +#: common/models.py:1858 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1900 +#: common/models.py:1870 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1902 +#: common/models.py:1872 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1908 +#: common/models.py:1878 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1910 +#: common/models.py:1880 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1917 +#: common/models.py:1887 msgid "Enable password forgot" msgstr "" -#: common/models.py:1918 +#: common/models.py:1888 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1923 +#: common/models.py:1893 msgid "Enable registration" msgstr "" -#: common/models.py:1924 +#: common/models.py:1894 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1929 +#: common/models.py:1899 msgid "Enable SSO" msgstr "" -#: common/models.py:1930 +#: common/models.py:1900 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1935 +#: common/models.py:1905 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1937 +#: common/models.py:1907 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1943 +#: common/models.py:1913 msgid "Email required" msgstr "" -#: common/models.py:1944 +#: common/models.py:1914 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1949 +#: common/models.py:1919 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1951 +#: common/models.py:1921 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1957 +#: common/models.py:1927 msgid "Mail twice" msgstr "" -#: common/models.py:1958 +#: common/models.py:1928 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1963 +#: common/models.py:1933 msgid "Password twice" msgstr "" -#: common/models.py:1964 +#: common/models.py:1934 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1969 +#: common/models.py:1939 msgid "Allowed domains" msgstr "" -#: common/models.py:1971 +#: common/models.py:1941 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1977 +#: common/models.py:1947 msgid "Group on signup" msgstr "" -#: common/models.py:1978 +#: common/models.py:1948 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1983 +#: common/models.py:1953 msgid "Enforce MFA" msgstr "" -#: common/models.py:1984 +#: common/models.py:1954 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1989 +#: common/models.py:1959 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1991 +#: common/models.py:1961 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1999 +#: common/models.py:1969 msgid "Check for plugin updates" msgstr "" -#: common/models.py:2000 +#: common/models.py:1970 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:2006 +#: common/models.py:1976 msgid "Enable URL integration" msgstr "" -#: common/models.py:2007 +#: common/models.py:1977 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:2013 +#: common/models.py:1983 msgid "Enable navigation integration" msgstr "" -#: common/models.py:2014 +#: common/models.py:1984 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:2020 +#: common/models.py:1990 msgid "Enable app integration" msgstr "" -#: common/models.py:2021 +#: common/models.py:1991 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:2027 +#: common/models.py:1997 msgid "Enable schedule integration" msgstr "" -#: common/models.py:2028 +#: common/models.py:1998 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:2034 +#: common/models.py:2004 msgid "Enable event integration" msgstr "" -#: common/models.py:2035 +#: common/models.py:2005 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:2041 +#: common/models.py:2011 msgid "Enable project codes" msgstr "" -#: common/models.py:2042 +#: common/models.py:2012 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:2047 +#: common/models.py:2017 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:2049 +#: common/models.py:2019 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:2055 +#: common/models.py:2025 msgid "Exclude External Locations" msgstr "" -#: common/models.py:2057 +#: common/models.py:2027 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:2063 +#: common/models.py:2033 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:2065 +#: common/models.py:2035 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:2071 +#: common/models.py:2041 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:2073 +#: common/models.py:2043 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:2080 +#: common/models.py:2050 msgid "Display Users full names" msgstr "" -#: common/models.py:2081 +#: common/models.py:2051 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:2086 +#: common/models.py:2056 msgid "Enable Test Station Data" msgstr "" -#: common/models.py:2087 +#: common/models.py:2057 msgid "Enable test station data collection for test results" msgstr "" -#: common/models.py:2099 common/models.py:2509 +#: common/models.py:2069 common/models.py:2479 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2142 +#: common/models.py:2112 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2144 +#: common/models.py:2114 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2150 +#: common/models.py:2120 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2151 +#: common/models.py:2121 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2156 +#: common/models.py:2126 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2157 +#: common/models.py:2127 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2162 +#: common/models.py:2132 msgid "Show latest parts" msgstr "" -#: common/models.py:2163 +#: common/models.py:2133 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2168 +#: common/models.py:2138 msgid "Show invalid BOMs" msgstr "" -#: common/models.py:2169 +#: common/models.py:2139 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2174 +#: common/models.py:2144 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2175 +#: common/models.py:2145 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2180 +#: common/models.py:2150 msgid "Show low stock" msgstr "" -#: common/models.py:2181 +#: common/models.py:2151 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2186 +#: common/models.py:2156 msgid "Show depleted stock" msgstr "" -#: common/models.py:2187 +#: common/models.py:2157 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2192 +#: common/models.py:2162 msgid "Show needed stock" msgstr "" -#: common/models.py:2193 +#: common/models.py:2163 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2198 +#: common/models.py:2168 msgid "Show expired stock" msgstr "" -#: common/models.py:2199 +#: common/models.py:2169 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2204 +#: common/models.py:2174 msgid "Show stale stock" msgstr "" -#: common/models.py:2205 +#: common/models.py:2175 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2210 +#: common/models.py:2180 msgid "Show pending builds" msgstr "" -#: common/models.py:2211 +#: common/models.py:2181 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2216 +#: common/models.py:2186 msgid "Show overdue builds" msgstr "" -#: common/models.py:2217 +#: common/models.py:2187 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2222 +#: common/models.py:2192 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2223 +#: common/models.py:2193 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2228 +#: common/models.py:2198 msgid "Show overdue POs" msgstr "" -#: common/models.py:2229 +#: common/models.py:2199 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2234 +#: common/models.py:2204 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2235 +#: common/models.py:2205 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2240 +#: common/models.py:2210 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2241 +#: common/models.py:2211 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2246 +#: common/models.py:2216 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2247 +#: common/models.py:2217 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2252 +#: common/models.py:2222 msgid "Show News" msgstr "" -#: common/models.py:2253 +#: common/models.py:2223 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2258 +#: common/models.py:2228 msgid "Inline label display" msgstr "" -#: common/models.py:2260 +#: common/models.py:2230 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2266 +#: common/models.py:2236 msgid "Default label printer" msgstr "" -#: common/models.py:2268 +#: common/models.py:2238 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2274 +#: common/models.py:2244 msgid "Inline report display" msgstr "" -#: common/models.py:2276 +#: common/models.py:2246 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2282 +#: common/models.py:2252 msgid "Search Parts" msgstr "" -#: common/models.py:2283 +#: common/models.py:2253 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2288 +#: common/models.py:2258 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2289 +#: common/models.py:2259 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2294 +#: common/models.py:2264 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2295 +#: common/models.py:2265 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2300 +#: common/models.py:2270 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2301 +#: common/models.py:2271 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2306 +#: common/models.py:2276 msgid "Search Categories" msgstr "" -#: common/models.py:2307 +#: common/models.py:2277 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2312 +#: common/models.py:2282 msgid "Search Stock" msgstr "" -#: common/models.py:2313 +#: common/models.py:2283 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2318 +#: common/models.py:2288 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2320 +#: common/models.py:2290 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2326 +#: common/models.py:2296 msgid "Search Locations" msgstr "" -#: common/models.py:2327 +#: common/models.py:2297 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2332 +#: common/models.py:2302 msgid "Search Companies" msgstr "" -#: common/models.py:2333 +#: common/models.py:2303 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2338 +#: common/models.py:2308 msgid "Search Build Orders" msgstr "" -#: common/models.py:2339 +#: common/models.py:2309 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2344 +#: common/models.py:2314 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2345 +#: common/models.py:2315 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2350 +#: common/models.py:2320 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2352 +#: common/models.py:2322 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2358 +#: common/models.py:2328 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2359 +#: common/models.py:2329 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2364 +#: common/models.py:2334 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2366 +#: common/models.py:2336 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2372 +#: common/models.py:2342 msgid "Search Return Orders" msgstr "" -#: common/models.py:2373 +#: common/models.py:2343 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2378 +#: common/models.py:2348 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2380 +#: common/models.py:2350 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2386 +#: common/models.py:2356 msgid "Search Preview Results" msgstr "" -#: common/models.py:2388 +#: common/models.py:2358 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2394 +#: common/models.py:2364 msgid "Regex Search" msgstr "" -#: common/models.py:2395 +#: common/models.py:2365 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2400 +#: common/models.py:2370 msgid "Whole Word Search" msgstr "" -#: common/models.py:2401 +#: common/models.py:2371 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2406 +#: common/models.py:2376 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2407 +#: common/models.py:2377 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2412 +#: common/models.py:2382 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2413 +#: common/models.py:2383 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2418 +#: common/models.py:2388 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2419 +#: common/models.py:2389 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2424 +#: common/models.py:2394 msgid "Date Format" msgstr "" -#: common/models.py:2425 +#: common/models.py:2395 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2438 part/templates/part/detail.html:41 +#: common/models.py:2408 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2439 +#: common/models.py:2409 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2444 part/templates/part/detail.html:62 +#: common/models.py:2414 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2446 +#: common/models.py:2416 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2452 +#: common/models.py:2422 msgid "Table String Length" msgstr "" -#: common/models.py:2454 +#: common/models.py:2424 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2460 +#: common/models.py:2430 msgid "Default part label template" msgstr "" -#: common/models.py:2461 +#: common/models.py:2431 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2466 +#: common/models.py:2436 msgid "Default stock item template" msgstr "" -#: common/models.py:2468 +#: common/models.py:2438 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2474 +#: common/models.py:2444 msgid "Default stock location label template" msgstr "" -#: common/models.py:2476 +#: common/models.py:2446 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2482 +#: common/models.py:2452 msgid "Default build line label template" msgstr "" -#: common/models.py:2484 +#: common/models.py:2454 msgid "The build line label template to be automatically selected" msgstr "" -#: common/models.py:2490 +#: common/models.py:2460 msgid "Receive error reports" msgstr "" -#: common/models.py:2491 +#: common/models.py:2461 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2496 +#: common/models.py:2466 msgid "Last used printing machines" msgstr "" -#: common/models.py:2497 +#: common/models.py:2467 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2540 +#: common/models.py:2487 common/models.py:2488 common/models.py:2636 +#: common/models.py:2637 common/models.py:2882 common/models.py:2883 +#: common/models.py:3193 common/models.py:3194 part/models.py:3193 +#: part/models.py:3280 part/models.py:3353 part/models.py:3381 +#: plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "" + +#: common/models.py:2510 msgid "Price break quantity" msgstr "" -#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1382 order/models.py:2301 -#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 +#: common/models.py:2517 company/serializers.py:472 order/admin.py:42 +#: order/models.py:1346 order/models.py:2265 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1886 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:740 msgid "Price" msgstr "" -#: common/models.py:2548 +#: common/models.py:2518 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2719 common/models.py:2904 +#: common/models.py:2613 common/models.py:2798 msgid "Endpoint" msgstr "" -#: common/models.py:2720 +#: common/models.py:2614 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2730 +#: common/models.py:2624 msgid "Name for this webhook" msgstr "" -#: common/models.py:2734 company/models.py:160 company/models.py:814 -#: machine/models.py:39 part/admin.py:88 part/models.py:1088 -#: plugin/models.py:65 templates/js/translated/company.js:523 +#: common/models.py:2628 company/models.py:163 company/models.py:782 +#: machine/models.py:39 part/admin.py:88 part/models.py:1081 +#: plugin/models.py:66 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3462,101 +3408,118 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2734 +#: common/models.py:2628 msgid "Is this webhook active" msgstr "" -#: common/models.py:2750 users/models.py:159 +#: common/models.py:2644 users/models.py:159 msgid "Token" msgstr "" -#: common/models.py:2751 +#: common/models.py:2645 msgid "Token for access" msgstr "" -#: common/models.py:2759 +#: common/models.py:2653 msgid "Secret" msgstr "" -#: common/models.py:2760 +#: common/models.py:2654 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2868 +#: common/models.py:2762 msgid "Message ID" msgstr "" -#: common/models.py:2869 +#: common/models.py:2763 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2877 +#: common/models.py:2771 msgid "Host" msgstr "" -#: common/models.py:2878 +#: common/models.py:2772 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2886 +#: common/models.py:2780 msgid "Header" msgstr "" -#: common/models.py:2887 +#: common/models.py:2781 msgid "Header of this message" msgstr "" -#: common/models.py:2894 +#: common/models.py:2788 msgid "Body" msgstr "" -#: common/models.py:2895 +#: common/models.py:2789 msgid "Body of this message" msgstr "" -#: common/models.py:2905 +#: common/models.py:2799 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2910 +#: common/models.py:2804 msgid "Worked on" msgstr "" -#: common/models.py:2911 +#: common/models.py:2805 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:3037 +#: common/models.py:2931 msgid "Id" msgstr "" -#: common/models.py:3039 templates/js/translated/company.js:965 +#: common/models.py:2933 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:3043 templates/js/translated/news.js:60 +#: common/models.py:2935 common/models.py:3177 company/models.py:149 +#: company/models.py:440 company/models.py:500 company/models.py:799 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +#: part/admin.py:55 part/models.py:955 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "" + +#: common/models.py:2937 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:3045 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2939 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:3047 templates/js/translated/news.js:52 +#: common/models.py:2941 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Read" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Was this news item read?" msgstr "" -#: common/models.py:3067 company/models.py:156 part/models.py:972 +#: common/models.py:2961 company/models.py:159 part/models.py:965 #: 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.html:35 @@ -3566,34 +3529,89 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:3067 +#: common/models.py:2961 msgid "Image file" msgstr "" -#: common/models.py:3109 +#: common/models.py:2973 common/models.py:3161 +msgid "Target model type for this image" +msgstr "" + +#: common/models.py:2977 +msgid "Target model ID for this image" +msgstr "" + +#: common/models.py:3018 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3128 +#: common/models.py:3037 msgid "Unit name" msgstr "" -#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3044 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3136 +#: common/models.py:3045 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3052 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3144 +#: common/models.py:3053 msgid "Unit definition" msgstr "" +#: common/models.py:3111 common/models.py:3168 stock/models.py:2426 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "" + +#: common/models.py:3123 +msgid "Missing file" +msgstr "" + +#: common/models.py:3124 +msgid "Missing external link" +msgstr "" + +#: common/models.py:3169 +msgid "Select file to attach" +msgstr "" + +#: common/models.py:3184 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "" + +#: common/models.py:3185 +msgid "Attachment comment" +msgstr "" + +#: common/models.py:3201 +msgid "Upload date" +msgstr "" + +#: common/models.py:3202 +msgid "Date the file was uploaded" +msgstr "" + +#: common/models.py:3206 +msgid "File size" +msgstr "" + +#: common/models.py:3206 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3244 common/serializers.py:553 +msgid "Invalid model type specified for attachment" +msgstr "" + #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" @@ -3628,66 +3646,103 @@ msgstr "" msgid "Error raised by plugin" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:371 msgid "Is Running" msgstr "" -#: common/serializers.py:372 +#: common/serializers.py:377 msgid "Pending Tasks" msgstr "" -#: common/serializers.py:378 +#: common/serializers.py:383 msgid "Scheduled Tasks" msgstr "" -#: common/serializers.py:384 +#: common/serializers.py:389 msgid "Failed Tasks" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Task ID" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Unique task ID" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock time" msgstr "" -#: common/serializers.py:403 +#: common/serializers.py:408 msgid "Task name" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function" msgstr "" -#: common/serializers.py:405 +#: common/serializers.py:410 msgid "Function name" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Arguments" msgstr "" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Task arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Keyword Arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Task keyword arguments" msgstr "" +#: common/serializers.py:525 +msgid "Filename" +msgstr "" + +#: common/serializers.py:532 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: common/serializers.py:559 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "" + +#: common/validators.py:33 +msgid "No attachment model type provided" +msgstr "" + +#: common/validators.py:39 +msgid "Invalid attachment model type" +msgstr "" + +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "" + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +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 @@ -3726,210 +3781,222 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/api.py:164 +#: company/api.py:144 msgid "Part is Active" msgstr "" -#: company/api.py:168 +#: company/api.py:148 msgid "Manufacturer is Active" msgstr "" -#: company/api.py:317 +#: company/api.py:281 msgid "Supplier Part is Active" msgstr "" -#: company/api.py:321 +#: company/api.py:285 msgid "Internal Part is Active" msgstr "" -#: company/api.py:325 +#: company/api.py:289 msgid "Supplier is Active" msgstr "" -#: company/models.py:114 +#: company/models.py:100 company/models.py:365 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:822 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "" + +#: company/models.py:117 msgid "Company description" msgstr "" -#: company/models.py:115 +#: company/models.py:118 msgid "Description of the company" msgstr "" -#: company/models.py:120 company/templates/company/company_base.html:106 +#: company/models.py:123 company/templates/company/company_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:532 msgid "Website" msgstr "" -#: company/models.py:120 +#: company/models.py:123 msgid "Company website URL" msgstr "" -#: company/models.py:125 +#: company/models.py:128 msgid "Phone number" msgstr "" -#: company/models.py:127 +#: company/models.py:130 msgid "Contact phone number" msgstr "" -#: company/models.py:134 +#: company/models.py:137 msgid "Contact email address" msgstr "" -#: company/models.py:139 company/templates/company/company_base.html:145 +#: company/models.py:142 company/templates/company/company_base.html:145 #: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "" -#: company/models.py:141 +#: company/models.py:144 msgid "Point of contact" msgstr "" -#: company/models.py:147 +#: company/models.py:150 msgid "Link to external company information" msgstr "" -#: company/models.py:160 +#: company/models.py:163 msgid "Is this company active?" msgstr "" -#: company/models.py:165 +#: company/models.py:168 msgid "is customer" msgstr "" -#: company/models.py:166 +#: company/models.py:169 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:171 +#: company/models.py:174 msgid "is supplier" msgstr "" -#: company/models.py:172 +#: company/models.py:175 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:177 +#: company/models.py:180 msgid "is manufacturer" msgstr "" -#: company/models.py:178 +#: company/models.py:181 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:186 +#: company/models.py:189 msgid "Default currency used for this company" msgstr "" -#: company/models.py:273 company/models.py:382 -#: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:812 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 -msgid "Company" -msgstr "" - -#: company/models.py:383 +#: company/models.py:366 msgid "Select company" msgstr "" -#: company/models.py:388 +#: company/models.py:371 msgid "Address title" msgstr "" -#: company/models.py:389 +#: company/models.py:372 msgid "Title describing the address entry" msgstr "" -#: company/models.py:395 +#: company/models.py:378 msgid "Primary address" msgstr "" -#: company/models.py:396 +#: company/models.py:379 msgid "Set as primary address" msgstr "" -#: company/models.py:401 templates/js/translated/company.js:914 +#: company/models.py:384 templates/js/translated/company.js:914 #: templates/js/translated/company.js:971 msgid "Line 1" msgstr "" -#: company/models.py:402 +#: company/models.py:385 msgid "Address line 1" msgstr "" -#: company/models.py:408 templates/js/translated/company.js:915 +#: company/models.py:391 templates/js/translated/company.js:915 #: templates/js/translated/company.js:977 msgid "Line 2" msgstr "" -#: company/models.py:409 +#: company/models.py:392 msgid "Address line 2" msgstr "" -#: company/models.py:415 company/models.py:416 +#: company/models.py:398 company/models.py:399 #: templates/js/translated/company.js:983 msgid "Postal code" msgstr "" -#: company/models.py:422 +#: company/models.py:405 msgid "City/Region" msgstr "" -#: company/models.py:423 +#: company/models.py:406 msgid "Postal code city/region" msgstr "" -#: company/models.py:429 +#: company/models.py:412 msgid "State/Province" msgstr "" -#: company/models.py:430 +#: company/models.py:413 msgid "State or province" msgstr "" -#: company/models.py:436 templates/js/translated/company.js:1001 +#: company/models.py:419 templates/js/translated/company.js:1001 msgid "Country" msgstr "" -#: company/models.py:437 +#: company/models.py:420 msgid "Address country" msgstr "" -#: company/models.py:443 +#: company/models.py:426 msgid "Courier shipping notes" msgstr "" -#: company/models.py:444 +#: company/models.py:427 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:450 +#: company/models.py:433 msgid "Internal shipping notes" msgstr "" -#: company/models.py:451 +#: company/models.py:434 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:458 +#: company/models.py:441 msgid "Link to address information (external)" msgstr "" -#: company/models.py:489 company/models.py:792 stock/models.py:768 -#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 +#: company/models.py:463 company/models.py:574 company/models.py:792 +#: 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:475 company/models.py:760 stock/models.py:766 +#: stock/serializers.py:422 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:491 company/models.py:794 +#: company/models.py:477 company/models.py:762 msgid "Select part" msgstr "" -#: company/models.py:500 company/templates/company/company_base.html:82 +#: company/models.py:486 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:530 +#: company/templates/company/supplier_part.html:145 part/serializers.py:525 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -3939,152 +4006,154 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:501 +#: company/models.py:487 msgid "Select manufacturer" msgstr "" -#: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:540 +#: company/models.py:493 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:535 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 -#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1801 #: templates/js/translated/purchase_order.js:1851 #: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "" -#: company/models.py:508 +#: company/models.py:494 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:515 +#: company/models.py:501 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:524 +#: company/models.py:510 msgid "Manufacturer part description" msgstr "" -#: company/models.py:581 company/models.py:608 company/models.py:824 -#: 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:615 +#: company/models.py:581 msgid "Parameter name" msgstr "" -#: company/models.py:621 report/templates/report/inventree_test_report.html:104 -#: stock/models.py:2429 templates/js/translated/company.js:1166 -#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 +#: company/models.py:587 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2418 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1493 #: templates/js/translated/stock.js:1522 msgid "Value" msgstr "" -#: company/models.py:622 +#: company/models.py:588 msgid "Parameter value" msgstr "" -#: company/models.py:629 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1052 part/models.py:3666 +#: company/models.py:595 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1045 part/models.py:3646 #: part/templates/part/part_base.html:284 -#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1512 +#: templates/js/translated/part.js:1616 templates/js/translated/part.js:2370 msgid "Units" msgstr "" -#: company/models.py:630 +#: company/models.py:596 msgid "Parameter units" msgstr "" -#: company/models.py:732 +#: company/models.py:648 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:777 stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "" + +#: company/models.py:700 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:739 +#: company/models.py:707 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:753 +#: company/models.py:721 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/models.py:770 company/templates/company/company_base.html:87 #: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:514 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:509 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:511 -#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1769 #: templates/js/translated/pricing.js:498 #: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "" -#: company/models.py:803 +#: company/models.py:771 msgid "Select supplier" msgstr "" -#: company/models.py:809 part/serializers.py:525 +#: company/models.py:777 part/serializers.py:520 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:815 +#: company/models.py:783 msgid "Is this supplier part active?" msgstr "" -#: company/models.py:825 +#: company/models.py:793 msgid "Select manufacturer part" msgstr "" -#: company/models.py:832 +#: company/models.py:800 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:841 +#: company/models.py:809 msgid "Supplier part description" msgstr "" -#: company/models.py:848 company/templates/company/supplier_part.html:187 -#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 +#: company/models.py:816 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4093 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_purchase_order_report.html:32 #: report/templates/report/inventree_return_order_report.html:27 #: report/templates/report/inventree_sales_order_report.html:32 #: report/templates/report/inventree_stock_location_report.html:105 -#: stock/serializers.py:708 +#: stock/serializers.py:710 msgid "Note" msgstr "" -#: company/models.py:857 part/models.py:2010 +#: company/models.py:825 part/models.py:2003 msgid "base cost" msgstr "" -#: company/models.py:858 part/models.py:2011 +#: company/models.py:826 part/models.py:2004 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:865 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 +#: company/models.py:833 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:797 stock/serializers.py:1475 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 #: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "" -#: company/models.py:866 +#: company/models.py:834 msgid "Part packaging" msgstr "" -#: company/models.py:871 templates/js/translated/company.js:1651 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: company/models.py:839 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:311 #: templates/js/translated/purchase_order.js:841 #: templates/js/translated/purchase_order.js:1103 @@ -4093,35 +4162,35 @@ msgstr "" msgid "Pack Quantity" msgstr "" -#: company/models.py:873 +#: company/models.py:841 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:892 part/models.py:2017 +#: company/models.py:860 part/models.py:2010 msgid "multiple" msgstr "" -#: company/models.py:893 +#: company/models.py:861 msgid "Order multiple" msgstr "" -#: company/models.py:905 +#: company/models.py:873 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:911 +#: company/models.py:879 msgid "Availability Updated" msgstr "" -#: company/models.py:912 +#: company/models.py:880 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:163 +#: company/serializers.py:161 msgid "Default currency used for this supplier" msgstr "" -#: company/serializers.py:381 part/admin.py:126 +#: company/serializers.py:357 part/admin.py:126 #: part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1689 #: templates/js/translated/table_filters.js:355 @@ -4133,7 +4202,7 @@ msgstr "" #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 #: templates/js/translated/model_renderers.js:312 -#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +#: templates/js/translated/part.js:815 templates/js/translated/part.js:1219 msgid "Inactive" msgstr "" @@ -4172,7 +4241,7 @@ msgstr "" #: report/templates/report/inventree_purchase_order_report.html:40 #: report/templates/report/inventree_sales_order_report.html:40 #: report/templates/report/inventree_test_report.html:84 -#: report/templates/report/inventree_test_report.html:163 +#: report/templates/report/inventree_test_report.html:162 msgid "Part image" msgstr "" @@ -4191,10 +4260,10 @@ msgstr "" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:92 order/models.py:940 -#: order/models.py:2068 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:148 stock/models.py:821 -#: stock/models.py:822 stock/serializers.py:1229 +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2032 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:819 +#: stock/models.py:820 stock/serializers.py:1225 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 @@ -4405,7 +4474,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:836 +#: part/admin.py:122 part/serializers.py:832 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4425,8 +4494,8 @@ msgstr "" msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:206 -#: templates/js/translated/part.js:1422 +#: company/templates/company/manufacturer_part.html:196 +#: templates/js/translated/part.js:1423 msgid "Add Parameter" msgstr "" @@ -4454,15 +4523,6 @@ msgstr "" msgid "Addresses" msgstr "" -#: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:452 -#: stock/models.py:779 stock/templates/stock/item_base.html:233 -#: templates/js/translated/company.js:1600 -#: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2280 -msgid "Supplier Part" -msgstr "" - #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1526 msgid "Supplier part actions" @@ -4505,8 +4565,8 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:524 -#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: part/bom.py:311 part/serializers.py:519 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1787 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1850 #: templates/js/translated/purchase_order.js:2028 @@ -4518,12 +4578,12 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:207 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" @@ -4555,15 +4615,15 @@ msgid "Update Part Availability" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:835 part/stocktake.py:223 +#: part/serializers.py:831 part/stocktake.py:224 #: part/templates/part/category.html:183 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:916 stock/serializers.py:1080 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:918 stock/serializers.py:1091 #: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:191 #: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1061 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:206 msgid "Stock Items" @@ -4590,10 +4650,6 @@ msgstr "" 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 "" @@ -4614,7 +4670,7 @@ msgstr "" msgid "Connected" msgstr "" -#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: machine/machine_types/label_printer.py:235 order/api.py:1467 #: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "" @@ -4703,7 +4759,7 @@ msgstr "" msgid "Config type" msgstr "" -#: order/admin.py:30 order/models.py:89 +#: order/admin.py:30 order/models.py:90 #: report/templates/report/inventree_purchase_order_report.html:31 #: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 @@ -4712,30 +4768,30 @@ msgstr "" msgid "Total Price" msgstr "" -#: order/api.py:161 order/serializers.py:91 +#: order/api.py:157 order/serializers.py:90 #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "" -#: order/api.py:165 templates/js/translated/table_filters.js:194 +#: order/api.py:161 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "" -#: order/api.py:240 +#: order/api.py:236 msgid "No matching purchase order found" msgstr "" -#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 -#: order/models.py:1586 order/models.py:1700 order/models.py:1854 -#: order/models.py:2267 order/models.py:2318 +#: order/api.py:435 order/api.py:801 order/models.py:1395 order/models.py:1504 +#: order/models.py:1550 order/models.py:1664 order/models.py:1818 +#: order/models.py:2231 order/models.py:2282 #: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "" -#: order/api.py:441 order/api.py:838 +#: order/api.py:439 order/api.py:822 msgid "Order Complete" msgstr "" @@ -4743,13 +4799,13 @@ msgstr "" msgid "Order Pending" msgstr "" -#: order/api.py:1509 order/models.py:380 order/models.py:1432 -#: order/models.py:1541 order/templates/order/order_base.html:9 +#: order/api.py:1461 order/models.py:380 order/models.py:1396 +#: order/models.py:1505 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_purchase_order_report.html:14 -#: stock/serializers.py:119 stock/templates/stock/item_base.html:176 +#: stock/serializers.py:118 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/part.js:1746 templates/js/translated/pricing.js:804 #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1673 @@ -4757,8 +4813,8 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/api.py:1513 order/models.py:2017 order/models.py:2268 -#: order/models.py:2319 order/templates/order/return_order_base.html:9 +#: order/api.py:1465 order/models.py:1981 order/models.py:2232 +#: order/models.py:2283 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report.html:13 #: templates/js/translated/return_order.js:280 @@ -4766,15 +4822,15 @@ msgstr "" msgid "Return Order" msgstr "" -#: order/models.py:90 +#: order/models.py:91 msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:71 +#: order/models.py:96 order/serializers.py:70 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:72 +#: order/models.py:99 order/serializers.py:71 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -4790,7 +4846,7 @@ msgstr "" msgid "Select project code for this order" msgstr "" -#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 msgid "Link to external page" msgstr "" @@ -4814,11 +4870,11 @@ msgstr "" msgid "Company address for this order" msgstr "" -#: order/models.py:464 order/models.py:929 +#: order/models.py:464 order/models.py:927 msgid "Order reference" msgstr "" -#: order/models.py:472 order/models.py:953 +#: order/models.py:472 order/models.py:951 msgid "Purchase order status" msgstr "" @@ -4839,15 +4895,15 @@ msgstr "" msgid "received by" msgstr "" -#: order/models.py:514 order/models.py:2094 +#: order/models.py:514 order/models.py:2058 msgid "Issue Date" msgstr "" -#: order/models.py:515 order/models.py:2095 +#: order/models.py:515 order/models.py:2059 msgid "Date order was issued" msgstr "" -#: order/models.py:522 order/models.py:2102 +#: order/models.py:522 order/models.py:2066 msgid "Date order was completed" msgstr "" @@ -4859,94 +4915,94 @@ msgstr "" msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:941 +#: order/models.py:939 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:964 order/models.py:2087 +#: order/models.py:962 order/models.py:2051 msgid "Customer Reference " msgstr "" -#: order/models.py:965 order/models.py:2088 +#: order/models.py:963 order/models.py:2052 msgid "Customer order reference code" msgstr "" -#: order/models.py:969 order/models.py:1707 +#: order/models.py:967 order/models.py:1671 #: templates/js/translated/sales_order.js:879 #: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "" -#: order/models.py:978 +#: order/models.py:976 msgid "shipped by" msgstr "" -#: order/models.py:1027 +#: order/models.py:1025 msgid "Order is already complete" msgstr "" -#: order/models.py:1030 +#: order/models.py:1028 msgid "Order is already cancelled" msgstr "" -#: order/models.py:1034 +#: order/models.py:1032 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:1038 +#: order/models.py:1036 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:1043 +#: order/models.py:1041 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1309 +#: order/models.py:1273 msgid "Item quantity" msgstr "" -#: order/models.py:1326 +#: order/models.py:1290 msgid "Line item reference" msgstr "" -#: order/models.py:1333 +#: order/models.py:1297 msgid "Line item notes" msgstr "" -#: order/models.py:1345 +#: order/models.py:1309 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1366 +#: order/models.py:1330 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1372 +#: order/models.py:1336 msgid "Context" msgstr "" -#: order/models.py:1373 +#: order/models.py:1337 msgid "Additional context for this line" msgstr "" -#: order/models.py:1383 +#: order/models.py:1347 msgid "Unit price" msgstr "" -#: order/models.py:1416 +#: order/models.py:1380 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1423 +#: order/models.py:1387 msgid "deleted" msgstr "" -#: order/models.py:1451 +#: order/models.py:1415 msgid "Supplier part" msgstr "" -#: order/models.py:1458 order/templates/order/order_base.html:196 -#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: order/models.py:1422 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1870 templates/js/translated/part.js:1902 #: templates/js/translated/purchase_order.js:1306 #: templates/js/translated/purchase_order.js:2169 #: templates/js/translated/return_order.js:763 @@ -4955,196 +5011,196 @@ msgstr "" msgid "Received" msgstr "" -#: order/models.py:1459 +#: order/models.py:1423 msgid "Number of items received" msgstr "" -#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 +#: order/models.py:1431 stock/models.py:938 stock/serializers.py:556 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "" -#: order/models.py:1468 +#: order/models.py:1432 msgid "Unit purchase price" msgstr "" -#: order/models.py:1483 +#: order/models.py:1447 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1574 +#: order/models.py:1538 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1579 +#: order/models.py:1543 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1605 part/templates/part/part_pricing.html:107 +#: order/models.py:1569 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:1606 +#: order/models.py:1570 msgid "Unit sale price" msgstr "" -#: order/models.py:1615 order/status_codes.py:43 +#: order/models.py:1579 order/status_codes.py:43 #: templates/js/translated/sales_order.js:1559 #: templates/js/translated/sales_order.js:1680 #: templates/js/translated/sales_order.js:1993 msgid "Shipped" msgstr "" -#: order/models.py:1616 +#: order/models.py:1580 msgid "Shipped quantity" msgstr "" -#: order/models.py:1708 +#: order/models.py:1672 msgid "Date of shipment" msgstr "" -#: order/models.py:1714 templates/js/translated/sales_order.js:1072 +#: order/models.py:1678 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "" -#: order/models.py:1715 +#: order/models.py:1679 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1723 +#: order/models.py:1687 msgid "Checked By" msgstr "" -#: order/models.py:1724 +#: order/models.py:1688 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 -#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 +#: order/models.py:1695 order/models.py:1908 order/serializers.py:1342 +#: order/serializers.py:1452 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "" -#: order/models.py:1732 +#: order/models.py:1696 msgid "Shipment number" msgstr "" -#: order/models.py:1740 +#: order/models.py:1704 msgid "Tracking Number" msgstr "" -#: order/models.py:1741 +#: order/models.py:1705 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1748 +#: order/models.py:1712 msgid "Invoice Number" msgstr "" -#: order/models.py:1749 +#: order/models.py:1713 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1769 +#: order/models.py:1733 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1772 +#: order/models.py:1736 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1890 order/models.py:1892 +#: order/models.py:1854 order/models.py:1856 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1899 +#: order/models.py:1863 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1902 +#: order/models.py:1866 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1905 +#: order/models.py:1869 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1924 order/serializers.py:1231 +#: order/models.py:1888 order/serializers.py:1219 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1927 +#: order/models.py:1891 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1928 plugin/base/barcodes/api.py:481 +#: order/models.py:1892 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1936 +#: order/models.py:1900 msgid "Line" msgstr "" -#: order/models.py:1945 +#: order/models.py:1909 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1958 order/models.py:2275 +#: order/models.py:1922 order/models.py:2239 #: templates/js/translated/return_order.js:721 msgid "Item" msgstr "" -#: order/models.py:1959 +#: order/models.py:1923 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1968 +#: order/models.py:1932 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:2057 +#: order/models.py:2021 msgid "Return Order reference" msgstr "" -#: order/models.py:2069 +#: order/models.py:2033 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:2081 +#: order/models.py:2045 msgid "Return order status" msgstr "" -#: order/models.py:2260 +#: order/models.py:2224 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2276 +#: order/models.py:2240 msgid "Select item to return from customer" msgstr "" -#: order/models.py:2282 +#: order/models.py:2246 msgid "Received Date" msgstr "" -#: order/models.py:2283 +#: order/models.py:2247 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2294 templates/js/translated/return_order.js:732 +#: order/models.py:2258 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2295 +#: order/models.py:2259 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2302 +#: order/models.py:2266 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/serializers.py:79 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_purchase_order_report.html:22 @@ -5153,163 +5209,163 @@ msgstr "" msgid "Line Items" msgstr "" -#: order/serializers.py:84 +#: order/serializers.py:83 msgid "Completed Lines" msgstr "" -#: order/serializers.py:287 +#: order/serializers.py:286 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:302 order/serializers.py:1247 +#: order/serializers.py:301 order/serializers.py:1235 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:312 order/serializers.py:1257 +#: order/serializers.py:311 order/serializers.py:1245 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:440 +#: order/serializers.py:439 msgid "Order is not open" msgstr "" -#: order/serializers.py:461 +#: order/serializers.py:460 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:463 +#: order/serializers.py:462 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:473 +#: order/serializers.py:472 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:478 msgid "Merge Items" msgstr "" -#: order/serializers.py:481 +#: order/serializers.py:480 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:499 +#: order/serializers.py:498 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:502 +#: order/serializers.py:501 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:510 +#: order/serializers.py:509 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:511 +#: order/serializers.py:510 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:550 order/serializers.py:1325 +#: order/serializers.py:549 order/serializers.py:1313 msgid "Line Item" msgstr "" -#: order/serializers.py:556 +#: order/serializers.py:555 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1657 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:581 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:589 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:601 templates/js/translated/barcode.js:52 +#: order/serializers.py:600 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:602 +#: order/serializers.py:601 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:618 +#: order/serializers.py:617 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:642 +#: order/serializers.py:641 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:690 order/serializers.py:1696 +#: order/serializers.py:689 order/serializers.py:1673 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:706 +#: order/serializers.py:705 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:717 +#: order/serializers.py:716 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1074 +#: order/serializers.py:1062 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1134 +#: order/serializers.py:1122 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1195 order/serializers.py:1334 +#: order/serializers.py:1183 order/serializers.py:1322 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1214 +#: order/serializers.py:1202 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1344 +#: order/serializers.py:1332 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1366 order/serializers.py:1472 +#: order/serializers.py:1354 order/serializers.py:1460 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1369 order/serializers.py:1475 +#: order/serializers.py:1357 order/serializers.py:1463 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1416 +#: order/serializers.py:1404 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1423 +#: order/serializers.py:1411 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1650 +#: order/serializers.py:1627 msgid "Return order line item" msgstr "" -#: order/serializers.py:1656 +#: order/serializers.py:1633 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1659 +#: order/serializers.py:1636 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1688 +#: order/serializers.py:1665 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1766 +#: order/serializers.py:1743 msgid "Line price currency" msgstr "" @@ -5639,7 +5695,7 @@ msgstr "" #: 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/part.js:1073 #: templates/js/translated/purchase_order.js:1752 #: templates/js/translated/return_order.js:380 #: templates/js/translated/sales_order.js:891 @@ -5735,34 +5791,34 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:406 part/models.py:3964 part/stocktake.py:218 -#: stock/admin.py:153 +#: part/admin.py:39 part/admin.py:398 part/models.py:3944 part/stocktake.py:219 +#: stock/admin.py:152 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 -#: stock/admin.py:157 +#: part/admin.py:41 part/admin.py:405 part/models.py:3945 part/stocktake.py:220 +#: stock/admin.py:156 msgid "Part Name" msgstr "" -#: part/admin.py:45 part/stocktake.py:220 +#: part/admin.py:45 part/stocktake.py:221 msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:940 part/templates/part/part_base.html:269 #: report/templates/report/inventree_stock_location_report.html:103 -#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/part.js:1227 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 -#: report/models.py:161 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2346 +#: part/admin.py:50 part/models.py:949 part/templates/part/part_base.html:277 +#: report/models.py:162 templates/js/translated/part.js:1232 +#: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:319 part/models.py:929 +#: part/admin.py:53 part/admin.py:319 part/models.py:922 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" @@ -5771,11 +5827,11 @@ msgstr "" msgid "Part Image" msgstr "" -#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:222 msgid "Category ID" msgstr "" -#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:223 msgid "Category Name" msgstr "" @@ -5787,11 +5843,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:908 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1036 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" @@ -5799,26 +5855,26 @@ msgstr "" 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 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:235 +#: templates/js/translated/part.js:715 templates/js/translated/part.js:2153 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3123 part/models.py:3137 -#: templates/js/translated/part.js:969 +#: part/admin.py:155 part/models.py:3088 part/models.py:3102 +#: templates/js/translated/part.js:970 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3130 part/models.py:3144 -#: templates/js/translated/part.js:979 +#: part/admin.py:158 part/models.py:3095 part/models.py:3109 +#: templates/js/translated/part.js:980 msgid "Maximum Cost" msgstr "" -#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 msgid "Parent ID" msgstr "" -#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 msgid "Parent Name" msgstr "" @@ -5827,141 +5883,149 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:325 part/models.py:393 part/serializers.py:117 -#: part/serializers.py:272 part/serializers.py:391 +#: part/admin.py:325 part/models.py:396 part/serializers.py:124 +#: part/serializers.py:267 part/serializers.py:386 #: 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:2803 templates/js/translated/search.js:130 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "" -#: part/admin.py:386 +#: part/admin.py:378 msgid "BOM Level" msgstr "" -#: part/admin.py:389 +#: part/admin.py:381 msgid "BOM Item ID" msgstr "" -#: part/admin.py:399 +#: part/admin.py:391 msgid "Parent IPN" msgstr "" -#: part/admin.py:410 part/models.py:3966 +#: part/admin.py:402 part/models.py:3946 msgid "Part IPN" msgstr "" -#: part/admin.py:423 part/serializers.py:1278 +#: part/admin.py:415 part/serializers.py:1274 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:428 part/serializers.py:1293 +#: part/admin.py:420 part/serializers.py:1289 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:110 +#: part/api.py:104 msgid "Starred" msgstr "" -#: part/api.py:112 +#: part/api.py:106 msgid "Filter by starred categories" msgstr "" -#: part/api.py:129 stock/api.py:318 +#: part/api.py:123 stock/api.py:312 msgid "Depth" msgstr "" -#: part/api.py:129 +#: part/api.py:123 msgid "Filter by category depth" msgstr "" -#: part/api.py:147 stock/api.py:336 +#: part/api.py:141 stock/api.py:330 +msgid "Top Level" +msgstr "" + +#: part/api.py:143 +msgid "Filter by top-level categories" +msgstr "" + +#: part/api.py:156 stock/api.py:345 msgid "Cascade" msgstr "" -#: part/api.py:149 +#: part/api.py:158 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:169 +#: part/api.py:179 templates/js/translated/part.js:308 msgid "Parent" msgstr "" -#: part/api.py:171 +#: part/api.py:181 msgid "Filter by parent category" msgstr "" -#: part/api.py:204 +#: part/api.py:214 msgid "Exclude Tree" msgstr "" -#: part/api.py:206 +#: part/api.py:216 msgid "Exclude sub-categories under the specified category" msgstr "" -#: part/api.py:455 +#: part/api.py:449 msgid "Has Results" msgstr "" -#: part/api.py:622 +#: part/api.py:616 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:640 +#: part/api.py:634 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:656 +#: part/api.py:650 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:740 +#: part/api.py:734 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:887 +#: part/api.py:881 msgid "Valid" msgstr "" -#: part/api.py:888 +#: part/api.py:882 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:894 +#: part/api.py:888 msgid "This option must be selected" msgstr "" -#: part/api.py:1111 +#: part/api.py:1105 msgid "BOM Valid" msgstr "" -#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 -#: part/serializers.py:406 part/serializers.py:1134 -#: part/templates/part/part_base.html:260 stock/api.py:781 +#: part/api.py:1508 part/models.py:932 part/models.py:3374 part/models.py:3889 +#: part/serializers.py:401 part/serializers.py:1130 +#: part/templates/part/part_base.html:260 stock/api.py:791 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2376 +#: templates/js/translated/part.js:2377 msgid "Category" msgstr "" -#: part/api.py:1803 +#: part/api.py:1796 msgid "Uses" msgstr "" -#: part/bom.py:170 part/models.py:102 part/models.py:982 +#: part/bom.py:170 part/models.py:104 part/models.py:975 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 part/serializers.py:837 +#: part/bom.py:171 part/serializers.py:833 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5970,1054 +6034,1066 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 +#: part/models.py:85 part/models.py:3890 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:84 part/templates/part/category.html:136 +#: part/models.py:86 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "" -#: part/models.py:103 +#: part/models.py:105 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 +#: part/models.py:110 stock/models.py:174 templates/js/translated/part.js:2810 #: templates/js/translated/stock.js:2772 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:110 +#: part/models.py:112 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:119 +#: part/models.py:121 msgid "Default keywords" msgstr "" -#: part/models.py:120 +#: part/models.py:122 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:126 stock/models.py:85 stock/models.py:156 +#: part/models.py:128 stock/models.py:86 stock/models.py:157 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:127 stock/models.py:157 +#: part/models.py:129 stock/models.py:158 msgid "Icon (optional)" msgstr "" -#: part/models.py:149 +#: part/models.py:151 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:482 +#: part/models.py:485 msgid "Cannot delete this part as it is still active" msgstr "" -#: part/models.py:489 +#: part/models.py:490 msgid "Cannot delete this part as it is used in an assembly" msgstr "" -#: part/models.py:527 +#: part/models.py:528 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:575 part/models.py:582 +#: part/models.py:576 part/models.py:583 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:594 +#: part/models.py:595 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:659 +#: part/models.py:658 #, python-brace-format msgid "IPN must match regex pattern {pattern}" msgstr "" -#: part/models.py:739 +#: part/models.py:736 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:844 +#: part/models.py:837 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:854 +#: part/models.py:847 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:869 +#: part/models.py:862 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:898 part/models.py:3965 +#: part/models.py:891 part/models.py:3945 msgid "Part name" msgstr "" -#: part/models.py:903 +#: part/models.py:896 msgid "Is Template" msgstr "" -#: part/models.py:904 +#: part/models.py:897 msgid "Is this part a template part?" msgstr "" -#: part/models.py:914 +#: part/models.py:907 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:922 +#: part/models.py:915 msgid "Part description (optional)" msgstr "" -#: part/models.py:930 +#: part/models.py:923 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:940 +#: part/models.py:933 msgid "Part category" msgstr "" -#: part/models.py:948 +#: part/models.py:941 msgid "Internal Part Number" msgstr "" -#: part/models.py:955 +#: part/models.py:948 msgid "Part revision or version number" msgstr "" -#: part/models.py:980 +#: part/models.py:973 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:1026 part/templates/part/part_base.html:376 +#: part/models.py:1019 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:1027 +#: part/models.py:1020 msgid "Default supplier part" msgstr "" -#: part/models.py:1034 +#: part/models.py:1027 msgid "Default Expiry" msgstr "" -#: part/models.py:1035 +#: part/models.py:1028 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:1044 +#: part/models.py:1037 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:1053 +#: part/models.py:1046 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1060 +#: part/models.py:1053 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1066 +#: part/models.py:1059 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1072 +#: part/models.py:1065 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1078 +#: part/models.py:1071 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1084 +#: part/models.py:1077 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1088 +#: part/models.py:1081 msgid "Is this part active?" msgstr "" -#: part/models.py:1094 +#: part/models.py:1087 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1100 +#: part/models.py:1093 msgid "BOM checksum" msgstr "" -#: part/models.py:1101 +#: part/models.py:1094 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1109 +#: part/models.py:1102 msgid "BOM checked by" msgstr "" -#: part/models.py:1114 +#: part/models.py:1107 msgid "BOM checked date" msgstr "" -#: part/models.py:1130 +#: part/models.py:1123 msgid "Creation User" msgstr "" -#: part/models.py:1140 +#: part/models.py:1133 msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1145 part/templates/part/part_base.html:339 +#: part/models.py:1138 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2470 +#: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:2018 +#: part/models.py:2011 msgid "Sell multiple" msgstr "" -#: part/models.py:3037 +#: part/models.py:3002 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:3053 +#: part/models.py:3018 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:3054 +#: part/models.py:3019 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:3060 +#: part/models.py:3025 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3026 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:3067 +#: part/models.py:3032 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3033 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3074 +#: part/models.py:3039 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3040 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3046 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3047 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3053 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3054 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3060 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3096 +#: part/models.py:3061 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3102 +#: part/models.py:3067 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3103 +#: part/models.py:3068 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3109 +#: part/models.py:3074 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3110 +#: part/models.py:3075 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3116 +#: part/models.py:3081 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3117 +#: part/models.py:3082 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3124 +#: part/models.py:3089 msgid "Override minimum cost" msgstr "" -#: part/models.py:3131 +#: part/models.py:3096 msgid "Override maximum cost" msgstr "" -#: part/models.py:3138 +#: part/models.py:3103 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3145 +#: part/models.py:3110 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3151 +#: part/models.py:3116 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3152 +#: part/models.py:3117 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3158 +#: part/models.py:3123 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3159 +#: part/models.py:3124 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3165 +#: part/models.py:3130 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3131 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3172 +#: part/models.py:3137 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3138 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3192 +#: part/models.py:3157 msgid "Part for stocktake" msgstr "" -#: part/models.py:3197 +#: part/models.py:3162 msgid "Item Count" msgstr "" -#: part/models.py:3198 +#: part/models.py:3163 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3206 +#: part/models.py:3171 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3210 part/models.py:3293 +#: part/models.py:3175 part/models.py:3258 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report.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/part.js:1086 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" -#: part/models.py:3211 +#: part/models.py:3176 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3219 +#: part/models.py:3184 msgid "Additional notes" msgstr "" -#: part/models.py:3229 +#: part/models.py:3194 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3235 +#: part/models.py:3200 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3236 +#: part/models.py:3201 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3242 +#: part/models.py:3207 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3243 +#: part/models.py:3208 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3264 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3300 +#: part/models.py:3265 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3270 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3306 +#: part/models.py:3271 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3316 +#: part/models.py:3281 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3478 +#: part/models.py:3423 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3489 +#: part/models.py:3444 part/models.py:3608 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3455 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3500 +#: part/models.py:3466 msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3517 templates/js/translated/part.js:2878 +#: part/models.py:3483 templates/js/translated/part.js:2880 msgid "Test Name" msgstr "" -#: part/models.py:3518 +#: part/models.py:3484 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3524 +#: part/models.py:3490 msgid "Test Key" msgstr "" -#: part/models.py:3525 +#: part/models.py:3491 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3532 +#: part/models.py:3498 msgid "Test Description" msgstr "" -#: part/models.py:3533 +#: part/models.py:3499 msgid "Enter description for this test" msgstr "" -#: part/models.py:3537 report/models.py:208 -#: templates/js/translated/part.js:2899 +#: part/models.py:3503 report/models.py:209 +#: templates/js/translated/part.js:2901 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" -#: part/models.py:3537 +#: part/models.py:3503 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3542 templates/js/translated/part.js:2907 +#: part/models.py:3508 templates/js/translated/part.js:2909 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3543 +#: part/models.py:3509 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3548 templates/js/translated/part.js:2915 +#: part/models.py:3514 templates/js/translated/part.js:2917 msgid "Requires Value" msgstr "" -#: part/models.py:3549 +#: part/models.py:3515 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3554 templates/js/translated/part.js:2922 +#: part/models.py:3520 templates/js/translated/part.js:2924 msgid "Requires Attachment" msgstr "" -#: part/models.py:3556 +#: part/models.py:3522 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3603 +#: part/models.py:3528 part/models.py:3667 templates/js/translated/part.js:1637 +msgid "Choices" +msgstr "" + +#: part/models.py:3529 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3583 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3608 +#: part/models.py:3588 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3628 -msgid "Choices must be unique" -msgstr "" - -#: part/models.py:3645 +#: part/models.py:3625 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3660 +#: part/models.py:3640 msgid "Parameter Name" msgstr "" -#: part/models.py:3667 +#: part/models.py:3647 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3675 +#: part/models.py:3655 msgid "Parameter description" msgstr "" -#: part/models.py:3681 templates/js/translated/part.js:1627 +#: part/models.py:3661 templates/js/translated/part.js:1628 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "" -#: part/models.py:3682 +#: part/models.py:3662 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3687 templates/js/translated/part.js:1636 -msgid "Choices" -msgstr "" - -#: part/models.py:3688 +#: part/models.py:3668 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3765 +#: part/models.py:3745 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3808 +#: part/models.py:3788 msgid "Parent Part" msgstr "" -#: part/models.py:3816 part/models.py:3917 part/models.py:3918 +#: part/models.py:3796 part/models.py:3897 part/models.py:3898 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3821 +#: part/models.py:3801 msgid "Data" msgstr "" -#: part/models.py:3822 +#: part/models.py:3802 msgid "Parameter Value" msgstr "" -#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3904 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3925 +#: part/models.py:3905 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3963 +#: part/models.py:3943 msgid "Part ID or part name" msgstr "" -#: part/models.py:3964 +#: part/models.py:3944 msgid "Unique part ID value" msgstr "" -#: part/models.py:3966 +#: part/models.py:3946 msgid "Part IPN value" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "Level" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "BOM level" msgstr "" -#: part/models.py:4057 +#: part/models.py:4037 msgid "Select parent part" msgstr "" -#: part/models.py:4067 +#: part/models.py:4047 msgid "Sub part" msgstr "" -#: part/models.py:4068 +#: part/models.py:4048 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4079 +#: part/models.py:4059 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4085 +#: part/models.py:4065 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4091 +#: part/models.py:4071 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4098 part/templates/part/upload_bom.html:55 +#: part/models.py:4078 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4099 +#: part/models.py:4079 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4106 +#: part/models.py:4086 msgid "BOM item reference" msgstr "" -#: part/models.py:4114 +#: part/models.py:4094 msgid "BOM item notes" msgstr "" -#: part/models.py:4120 +#: part/models.py:4100 msgid "Checksum" msgstr "" -#: part/models.py:4121 +#: part/models.py:4101 msgid "BOM line checksum" msgstr "" -#: part/models.py:4126 templates/js/translated/table_filters.js:174 +#: part/models.py:4106 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4127 +#: part/models.py:4107 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4132 part/templates/part/upload_bom.html:57 +#: part/models.py:4112 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:4133 +#: part/models.py:4113 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4138 part/templates/part/upload_bom.html:56 +#: part/models.py:4118 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4139 +#: part/models.py:4119 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4224 stock/models.py:664 +#: part/models.py:4204 stock/models.py:662 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4234 part/models.py:4236 +#: part/models.py:4214 part/models.py:4216 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4376 +#: part/models.py:4354 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4397 +#: part/models.py:4375 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4410 +#: part/models.py:4388 msgid "Parent BOM item" msgstr "" -#: part/models.py:4418 +#: part/models.py:4396 msgid "Substitute part" msgstr "" -#: part/models.py:4434 +#: part/models.py:4412 msgid "Part 1" msgstr "" -#: part/models.py:4442 +#: part/models.py:4420 msgid "Part 2" msgstr "" -#: part/models.py:4443 +#: part/models.py:4421 msgid "Select Related Part" msgstr "" -#: part/models.py:4462 +#: part/models.py:4440 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4467 +#: part/models.py:4445 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:119 part/serializers.py:141 +#: part/serializers.py:118 +msgid "Parent Category" +msgstr "" + +#: part/serializers.py:119 templates/js/translated/part.js:309 +msgid "Parent part category" +msgstr "" + +#: part/serializers.py:126 part/serializers.py:148 #: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/serializers.py:185 +#: part/serializers.py:180 msgid "Results" msgstr "" -#: part/serializers.py:186 +#: part/serializers.py:181 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 +#: part/serializers.py:205 part/serializers.py:223 stock/serializers.py:562 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:273 +#: part/serializers.py:268 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:397 +#: part/serializers.py:392 msgid "No parts selected" msgstr "" -#: part/serializers.py:407 +#: part/serializers.py:402 msgid "Select category" msgstr "" -#: part/serializers.py:442 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:443 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:448 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:449 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:455 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:456 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:463 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:488 +#: part/serializers.py:483 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:490 +#: part/serializers.py:485 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:497 +#: part/serializers.py:492 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:493 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:510 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:531 +#: part/serializers.py:526 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:541 +#: part/serializers.py:536 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:548 +#: part/serializers.py:543 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:557 +#: part/serializers.py:552 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:568 +#: part/serializers.py:563 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:575 +#: part/serializers.py:570 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:834 msgid "External Stock" msgstr "" -#: part/serializers.py:840 +#: part/serializers.py:836 msgid "Unallocated Stock" msgstr "" -#: part/serializers.py:843 +#: part/serializers.py:839 msgid "Variant Stock" msgstr "" -#: part/serializers.py:873 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:471 +#: part/serializers.py:869 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:472 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:870 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:880 templates/js/translated/part.js:102 +#: part/serializers.py:876 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:881 +#: part/serializers.py:877 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:887 +#: part/serializers.py:883 msgid "Supplier Information" msgstr "" -#: part/serializers.py:888 +#: part/serializers.py:884 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:896 +#: part/serializers.py:892 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:897 +#: part/serializers.py:893 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:902 +#: part/serializers.py:898 msgid "Existing Image" msgstr "" -#: part/serializers.py:903 +#: part/serializers.py:899 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:920 +#: part/serializers.py:916 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1126 +#: part/serializers.py:1122 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1136 +#: part/serializers.py:1132 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1146 +#: part/serializers.py:1142 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1152 +#: part/serializers.py:1148 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1153 +#: part/serializers.py:1149 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1158 +#: part/serializers.py:1154 msgid "Generate Report" msgstr "" -#: part/serializers.py:1159 +#: part/serializers.py:1155 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1164 +#: part/serializers.py:1160 msgid "Update Parts" msgstr "" -#: part/serializers.py:1165 +#: part/serializers.py:1161 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1173 +#: part/serializers.py:1169 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1279 +#: part/serializers.py:1275 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1286 +#: part/serializers.py:1282 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1294 +#: part/serializers.py:1290 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1301 +#: part/serializers.py:1297 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1330 +#: part/serializers.py:1326 msgid "Update" msgstr "" -#: part/serializers.py:1331 +#: part/serializers.py:1327 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1354 +#: part/serializers.py:1350 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1361 +#: part/serializers.py:1357 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1364 +#: part/serializers.py:1360 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1727 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1739 +#: part/serializers.py:1735 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1740 +#: part/serializers.py:1736 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1745 +#: part/serializers.py:1741 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1746 +#: part/serializers.py:1742 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1747 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1752 +#: part/serializers.py:1748 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1757 +#: part/serializers.py:1753 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1758 +#: part/serializers.py:1754 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1792 +#: part/serializers.py:1788 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1793 +#: part/serializers.py:1789 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1823 +#: part/serializers.py:1819 msgid "No part column specified" msgstr "" -#: part/serializers.py:1867 +#: part/serializers.py:1863 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1870 +#: part/serializers.py:1866 msgid "No matching part found" msgstr "" -#: part/serializers.py:1873 +#: part/serializers.py:1869 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1882 +#: part/serializers.py:1878 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1890 +#: part/serializers.py:1886 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1911 +#: part/serializers.py:1907 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 +#: part/stocktake.py:225 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "" -#: part/stocktake.py:225 +#: part/stocktake.py:226 msgid "Total Cost Min" msgstr "" -#: part/stocktake.py:226 +#: part/stocktake.py:227 msgid "Total Cost Max" msgstr "" -#: part/stocktake.py:284 +#: part/stocktake.py:285 msgid "Stocktake Report Available" msgstr "" -#: part/stocktake.py:285 +#: part/stocktake.py:286 msgid "A new stocktake report is available for download" msgstr "" @@ -7151,7 +7227,7 @@ 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 +#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" @@ -7251,15 +7327,15 @@ msgstr "" msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:655 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:663 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:748 +#: part/templates/part/detail.html:750 msgid "Add Test Result Template" msgstr "" @@ -7340,7 +7416,7 @@ msgstr "" msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" msgstr "" @@ -7412,7 +7488,7 @@ 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:2443 +#: templates/js/translated/part.js:1265 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7505,8 +7581,8 @@ msgstr "" #: 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:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/part.js:1243 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 #: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7549,7 +7625,7 @@ msgstr "" msgid "Edit" msgstr "" -#: part/templates/part/prices.html:28 stock/admin.py:247 +#: part/templates/part/prices.html:28 stock/admin.py:251 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 @@ -7626,8 +7702,8 @@ msgstr "" #: part/templates/part/stock_count.html:7 #: templates/js/translated/model_renderers.js:227 -#: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 -#: templates/js/translated/part.js:2142 +#: templates/js/translated/part.js:705 templates/js/translated/part.js:2141 +#: templates/js/translated/part.js:2143 msgid "No Stock" msgstr "" @@ -7999,7 +8075,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:308 msgid "Landscape" msgstr "" @@ -8112,62 +8188,62 @@ msgstr "" msgid "Uninstalled plugin successfully" msgstr "" -#: plugin/models.py:35 +#: plugin/models.py:36 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:36 +#: plugin/models.py:37 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:42 users/models.py:100 +#: plugin/models.py:43 users/models.py:100 msgid "Key" msgstr "" -#: plugin/models.py:43 +#: plugin/models.py:44 msgid "Key of plugin" msgstr "" -#: plugin/models.py:51 +#: plugin/models.py:52 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:58 plugin/serializers.py:90 +#: plugin/models.py:59 plugin/serializers.py:90 msgid "Package Name" msgstr "" -#: plugin/models.py:60 +#: plugin/models.py:61 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:65 +#: plugin/models.py:66 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:156 templates/js/translated/table_filters.js:370 +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "" -#: plugin/models.py:165 +#: plugin/models.py:166 msgid "Sample plugin" msgstr "" -#: plugin/models.py:173 +#: plugin/models.py:174 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:181 +#: plugin/models.py:182 msgid "Package Plugin" msgstr "" -#: plugin/models.py:205 report/models.py:474 +#: plugin/models.py:220 report/models.py:475 #: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:252 +#: plugin/models.py:267 msgid "Method" msgstr "" @@ -8175,17 +8251,17 @@ msgstr "" msgid "No author found" msgstr "" -#: plugin/registry.py:597 +#: plugin/registry.py:534 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:600 +#: plugin/registry.py:537 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:602 +#: plugin/registry.py:539 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -8300,23 +8376,19 @@ msgstr "" msgid "Activate this plugin" msgstr "" -#: plugin/serializers.py:234 +#: plugin/serializers.py:226 msgid "Delete configuration" msgstr "" -#: plugin/serializers.py:235 +#: plugin/serializers.py:227 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:77 +#: report/api.py:88 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:89 report/serializers.py:53 -msgid "Model Type" -msgstr "" - -#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/api.py:103 report/models.py:439 report/serializers.py:98 #: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 #: templates/js/translated/return_order.js:353 #: templates/js/translated/sales_order.js:887 @@ -8324,176 +8396,176 @@ msgstr "" msgid "Items" msgstr "" -#: report/api.py:168 +#: report/api.py:180 msgid "Plugin not found" msgstr "" -#: report/api.py:170 +#: report/api.py:182 msgid "Plugin is not active" msgstr "" -#: report/api.py:172 +#: report/api.py:184 msgid "Plugin does not support label printing" msgstr "" -#: report/api.py:221 +#: report/api.py:233 msgid "Invalid label dimensions" msgstr "" -#: report/api.py:236 report/api.py:316 +#: report/api.py:248 report/api.py:329 msgid "No valid items provided to template" msgstr "" -#: report/api.py:271 +#: report/api.py:283 msgid "Error printing label" msgstr "" -#: report/api.py:362 report/api.py:398 +#: report/api.py:375 report/api.py:411 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/helpers.py:41 +#: report/helpers.py:43 msgid "A4" msgstr "" -#: report/helpers.py:42 +#: report/helpers.py:44 msgid "A3" msgstr "" -#: report/helpers.py:43 +#: report/helpers.py:45 msgid "Legal" msgstr "" -#: report/helpers.py:44 +#: report/helpers.py:46 msgid "Letter" msgstr "" -#: report/models.py:118 +#: report/models.py:119 msgid "Template file with this name already exists" msgstr "" -#: report/models.py:150 +#: report/models.py:151 msgid "Template name" msgstr "" -#: report/models.py:156 +#: report/models.py:157 msgid "Template description" msgstr "" -#: report/models.py:162 +#: report/models.py:163 msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Filename Pattern" msgstr "" -#: report/models.py:203 +#: report/models.py:204 msgid "Pattern for generating filenames" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Template is enabled" msgstr "" -#: report/models.py:214 +#: report/models.py:215 msgid "Target model type for template" msgstr "" -#: report/models.py:234 +#: report/models.py:235 msgid "Filters" msgstr "" -#: report/models.py:235 +#: report/models.py:236 msgid "Template query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:294 report/models.py:361 +#: report/models.py:295 report/models.py:362 msgid "Template file" msgstr "" -#: report/models.py:302 +#: report/models.py:303 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:308 +#: report/models.py:309 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:367 +#: report/models.py:368 msgid "Width [mm]" msgstr "" -#: report/models.py:368 +#: report/models.py:369 msgid "Label width, specified in mm" msgstr "" -#: report/models.py:374 +#: report/models.py:375 msgid "Height [mm]" msgstr "" -#: report/models.py:375 +#: report/models.py:376 msgid "Label height, specified in mm" msgstr "" -#: report/models.py:438 +#: report/models.py:439 msgid "Number of items to process" msgstr "" -#: report/models.py:444 +#: report/models.py:445 msgid "Report generation is complete" msgstr "" -#: report/models.py:448 templates/js/translated/build.js:2177 +#: report/models.py:449 templates/js/translated/build.js:2177 msgid "Progress" msgstr "" -#: report/models.py:448 +#: report/models.py:449 msgid "Report generation progress" msgstr "" -#: report/models.py:456 +#: report/models.py:457 msgid "Report Template" msgstr "" -#: report/models.py:463 report/models.py:486 +#: report/models.py:464 report/models.py:487 msgid "Output File" msgstr "" -#: report/models.py:464 report/models.py:487 +#: report/models.py:465 report/models.py:488 msgid "Generated output file" msgstr "" -#: report/models.py:475 +#: report/models.py:476 msgid "Label output plugin" msgstr "" -#: report/models.py:479 +#: report/models.py:480 msgid "Label Template" msgstr "" -#: report/models.py:502 +#: report/models.py:503 msgid "Snippet" msgstr "" -#: report/models.py:503 +#: report/models.py:504 msgid "Report snippet file" msgstr "" -#: report/models.py:510 +#: report/models.py:511 msgid "Snippet file description" msgstr "" -#: report/models.py:528 +#: report/models.py:529 msgid "Asset" msgstr "" -#: report/models.py:529 +#: report/models.py:530 msgid "Report asset file" msgstr "" -#: report/models.py:536 +#: report/models.py:537 msgid "Asset file description" msgstr "" @@ -8566,8 +8638,8 @@ msgid "Total" msgstr "" #: report/templates/report/inventree_return_order_report.html:25 -#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 -#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:824 +#: stock/serializers.py:149 stock/templates/stock/item_base.html:311 #: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 #: templates/js/translated/build.js:2355 #: templates/js/translated/model_renderers.js:230 @@ -8597,32 +8669,32 @@ msgstr "" msgid "Test" msgstr "" -#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2412 msgid "Result" msgstr "" -#: report/templates/report/inventree_test_report.html:130 +#: report/templates/report/inventree_test_report.html:129 msgid "Pass" msgstr "" -#: report/templates/report/inventree_test_report.html:132 +#: report/templates/report/inventree_test_report.html:131 msgid "Fail" msgstr "" -#: report/templates/report/inventree_test_report.html:139 +#: report/templates/report/inventree_test_report.html:138 msgid "No result (required)" msgstr "" -#: report/templates/report/inventree_test_report.html:141 +#: report/templates/report/inventree_test_report.html:140 msgid "No result" msgstr "" -#: report/templates/report/inventree_test_report.html:154 +#: report/templates/report/inventree_test_report.html:153 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "" -#: report/templates/report/inventree_test_report.html:168 stock/admin.py:162 +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 #: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 #: templates/js/translated/stock.js:3110 msgid "Serial" @@ -8644,654 +8716,670 @@ msgstr "" msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:172 +#: stock/admin.py:51 stock/admin.py:171 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:176 +#: stock/admin.py:53 stock/admin.py:175 msgid "Location Name" msgstr "" -#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/admin.py:63 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:149 +#: stock/admin.py:148 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:168 +#: stock/admin.py:167 msgid "Status Code" msgstr "" -#: stock/admin.py:180 +#: stock/admin.py:179 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:185 +#: stock/admin.py:184 +msgid "Supplier Part SKU" +msgstr "" + +#: stock/admin.py:189 msgid "Supplier ID" msgstr "" -#: stock/admin.py:191 +#: stock/admin.py:195 msgid "Supplier Name" msgstr "" -#: stock/admin.py:196 +#: stock/admin.py:200 msgid "Customer ID" msgstr "" -#: stock/admin.py:201 stock/models.py:806 +#: stock/admin.py:205 stock/models.py:804 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:206 +#: stock/admin.py:210 msgid "Build ID" msgstr "" -#: stock/admin.py:216 +#: stock/admin.py:220 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:221 +#: stock/admin.py:225 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:236 +#: stock/admin.py:240 msgid "Review Needed" msgstr "" -#: stock/admin.py:241 +#: stock/admin.py:245 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:256 stock/models.py:900 +#: stock/admin.py:260 stock/models.py:898 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "" -#: stock/api.py:318 +#: stock/api.py:312 msgid "Filter by location depth" msgstr "" -#: stock/api.py:338 +#: stock/api.py:332 +msgid "Filter by top-level locations" +msgstr "" + +#: stock/api.py:347 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:359 +#: stock/api.py:369 stock/serializers.py:1085 msgid "Parent Location" msgstr "" -#: stock/api.py:360 +#: stock/api.py:370 msgid "Filter by parent location" msgstr "" -#: stock/api.py:615 templates/js/translated/table_filters.js:427 +#: stock/api.py:625 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:803 +#: stock/api.py:813 msgid "Part Tree" msgstr "" -#: stock/api.py:833 +#: stock/api.py:843 msgid "Expiry date before" msgstr "" -#: stock/api.py:837 +#: stock/api.py:847 msgid "Expiry date after" msgstr "" -#: stock/api.py:840 stock/templates/stock/item_base.html:439 +#: stock/api.py:850 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:927 +#: stock/api.py:937 msgid "Quantity is required" msgstr "" -#: stock/api.py:933 +#: stock/api.py:943 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:964 +#: stock/api.py:974 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:974 +#: stock/api.py:984 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:1005 +#: stock/api.py:1015 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:59 +#: stock/models.py:60 msgid "Stock Location type" msgstr "" -#: stock/models.py:60 +#: stock/models.py:61 msgid "Stock Location types" msgstr "" -#: stock/models.py:86 +#: stock/models.py:87 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:123 stock/models.py:788 +#: stock/models.py:124 stock/models.py:786 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:124 stock/templates/stock/location.html:186 +#: stock/models.py:125 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "" -#: stock/models.py:166 stock/models.py:949 +#: stock/models.py:167 stock/models.py:947 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:167 stock/models.py:950 +#: stock/models.py:168 stock/models.py:948 msgid "Select Owner" msgstr "" -#: stock/models.py:175 +#: stock/models.py:176 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:182 templates/js/translated/stock.js:2781 +#: stock/models.py:183 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:183 +#: stock/models.py:184 msgid "This is an external stock location" msgstr "" -#: stock/models.py:189 templates/js/translated/stock.js:2790 +#: stock/models.py:190 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" -#: stock/models.py:193 +#: stock/models.py:194 msgid "Stock location type of this location" msgstr "" -#: stock/models.py:262 +#: stock/models.py:261 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:643 +#: stock/models.py:641 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:670 stock/serializers.py:419 +#: stock/models.py:668 stock/serializers.py:446 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:687 +#: stock/models.py:685 #, python-brace-format msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:697 stock/models.py:710 +#: stock/models.py:695 stock/models.py:708 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:700 +#: stock/models.py:698 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:724 +#: stock/models.py:722 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:729 +#: stock/models.py:727 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:742 +#: stock/models.py:740 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:758 +#: stock/models.py:756 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:770 +#: stock/models.py:768 msgid "Base part" msgstr "" -#: stock/models.py:780 +#: stock/models.py:778 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:792 +#: stock/models.py:790 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:800 stock/serializers.py:1480 +#: stock/models.py:798 stock/serializers.py:1476 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:811 +#: stock/models.py:809 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:830 +#: stock/models.py:828 msgid "Serial number for this item" msgstr "" -#: stock/models.py:844 stock/serializers.py:1463 +#: stock/models.py:842 stock/serializers.py:1459 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:849 +#: stock/models.py:847 msgid "Stock Quantity" msgstr "" -#: stock/models.py:859 +#: stock/models.py:857 msgid "Source Build" msgstr "" -#: stock/models.py:862 +#: stock/models.py:860 msgid "Build for this stock item" msgstr "" -#: stock/models.py:869 stock/templates/stock/item_base.html:363 +#: stock/models.py:867 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:872 +#: stock/models.py:870 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:881 +#: stock/models.py:879 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:885 +#: stock/models.py:883 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:891 +#: stock/models.py:889 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:902 +#: stock/models.py:900 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:920 +#: stock/models.py:918 msgid "Delete on deplete" msgstr "" -#: stock/models.py:921 +#: stock/models.py:919 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:941 +#: stock/models.py:939 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:972 +#: stock/models.py:970 msgid "Converted to part" msgstr "" -#: stock/models.py:1490 +#: stock/models.py:1486 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1496 +#: stock/models.py:1492 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1500 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1510 +#: stock/models.py:1506 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1515 +#: stock/models.py:1511 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1523 stock/serializers.py:658 +#: stock/models.py:1519 stock/serializers.py:660 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1620 +#: stock/models.py:1616 msgid "Test template does not exist" msgstr "" -#: stock/models.py:1638 +#: stock/models.py:1634 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1642 +#: stock/models.py:1638 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1645 +#: stock/models.py:1641 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1648 +#: stock/models.py:1644 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1651 +#: stock/models.py:1647 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1654 +#: stock/models.py:1650 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1661 stock/serializers.py:1369 +#: stock/models.py:1657 stock/serializers.py:1365 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1665 +#: stock/models.py:1661 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1673 +#: stock/models.py:1669 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1678 +#: stock/models.py:1674 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1905 +#: stock/models.py:1901 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2310 msgid "Entry notes" msgstr "" -#: stock/models.py:2391 +#: stock/models.py:2378 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2396 +#: stock/models.py:2383 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2423 +#: stock/models.py:2388 +msgid "Invalid value for this test" +msgstr "" + +#: stock/models.py:2412 msgid "Test result" msgstr "" -#: stock/models.py:2430 +#: stock/models.py:2419 msgid "Test output value" msgstr "" -#: stock/models.py:2438 +#: stock/models.py:2427 msgid "Test result attachment" msgstr "" -#: stock/models.py:2442 +#: stock/models.py:2431 msgid "Test notes" msgstr "" -#: stock/models.py:2450 templates/js/translated/stock.js:1548 +#: stock/models.py:2439 templates/js/translated/stock.js:1548 msgid "Test station" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2440 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2457 +#: stock/models.py:2446 msgid "Started" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2447 msgid "The timestamp of the test start" msgstr "" -#: stock/models.py:2464 +#: stock/models.py:2453 msgid "Finished" msgstr "" -#: stock/models.py:2465 +#: stock/models.py:2454 msgid "The timestamp of the test finish" msgstr "" -#: stock/serializers.py:75 +#: stock/serializers.py:74 msgid "Generated batch code" msgstr "" -#: stock/serializers.py:84 +#: stock/serializers.py:83 msgid "Select build order" msgstr "" -#: stock/serializers.py:93 +#: stock/serializers.py:92 msgid "Select stock item to generate batch code for" msgstr "" -#: stock/serializers.py:102 +#: stock/serializers.py:101 msgid "Select location to generate batch code for" msgstr "" -#: stock/serializers.py:111 +#: stock/serializers.py:110 msgid "Select part to generate batch code for" msgstr "" -#: stock/serializers.py:120 +#: stock/serializers.py:119 msgid "Select purchase order" msgstr "" -#: stock/serializers.py:127 +#: stock/serializers.py:126 msgid "Enter quantity for batch code" msgstr "" -#: stock/serializers.py:150 +#: stock/serializers.py:149 msgid "Generated serial number" msgstr "" -#: stock/serializers.py:159 +#: stock/serializers.py:158 msgid "Select part to generate serial number for" msgstr "" -#: stock/serializers.py:167 +#: stock/serializers.py:166 msgid "Quantity of serial numbers to generate" msgstr "" -#: stock/serializers.py:229 +#: stock/serializers.py:228 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:248 +#: stock/serializers.py:247 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:280 +#: stock/serializers.py:279 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:313 +#: stock/serializers.py:315 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:411 +#: stock/serializers.py:438 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:531 +#: stock/serializers.py:558 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:595 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:606 +#: stock/serializers.py:608 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:613 +#: stock/serializers.py:615 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 +#: stock/serializers.py:626 stock/serializers.py:1322 stock/serializers.py:1578 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:631 +#: stock/serializers.py:633 msgid "Optional note field" msgstr "" -#: stock/serializers.py:641 +#: stock/serializers.py:643 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:696 +#: stock/serializers.py:698 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:703 +#: stock/serializers.py:705 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:704 +#: stock/serializers.py:706 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 -#: stock/serializers.py:935 +#: stock/serializers.py:711 stock/serializers.py:791 stock/serializers.py:887 +#: stock/serializers.py:937 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:719 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:725 +#: stock/serializers.py:727 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:736 +#: stock/serializers.py:738 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:749 +#: stock/serializers.py:751 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:784 +#: stock/serializers.py:786 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:819 +#: stock/serializers.py:821 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:834 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:849 +#: stock/serializers.py:851 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:880 +#: stock/serializers.py:882 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:917 +#: stock/serializers.py:919 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:923 +#: stock/serializers.py:925 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:1019 stock/serializers.py:1082 +#: stock/serializers.py:1021 stock/serializers.py:1093 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:220 +#: stock/templates/stock/location.html:222 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1198 +#: stock/serializers.py:1086 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: stock/serializers.py:1194 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1202 +#: stock/serializers.py:1198 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1206 +#: stock/serializers.py:1202 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1230 +#: stock/serializers.py:1226 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1236 +#: stock/serializers.py:1232 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1244 +#: stock/serializers.py:1240 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1254 stock/serializers.py:1508 +#: stock/serializers.py:1250 stock/serializers.py:1504 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1333 +#: stock/serializers.py:1329 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1338 +#: stock/serializers.py:1334 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1339 +#: stock/serializers.py:1335 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1344 +#: stock/serializers.py:1340 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1345 +#: stock/serializers.py:1341 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1355 +#: stock/serializers.py:1351 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1422 +#: stock/serializers.py:1418 msgid "No Change" msgstr "" -#: stock/serializers.py:1451 +#: stock/serializers.py:1447 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1470 +#: stock/serializers.py:1466 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1498 +#: stock/serializers.py:1494 msgid "Stock transaction notes" msgstr "" @@ -9444,7 +9532,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276 msgid "Delete Test Data" msgstr "" @@ -9464,11 +9552,11 @@ msgstr "" msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:272 +#: stock/templates/stock/item.html:264 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "" @@ -9754,28 +9842,28 @@ msgstr "" msgid "Location Type" msgstr "" -#: stock/templates/stock/location.html:224 +#: stock/templates/stock/location.html:226 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:225 +#: stock/templates/stock/location.html:227 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:295 +#: stock/templates/stock/location.html:299 #: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:317 +#: stock/templates/stock/location.html:321 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:390 +#: stock/templates/stock/location.html:394 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:401 +#: stock/templates/stock/location.html:405 msgid "Link Barcode to Stock Location" msgstr "" @@ -10199,20 +10287,20 @@ msgstr "" msgid "Pricing Settings" msgstr "" -#: templates/InvenTree/settings/pricing.html:34 +#: templates/InvenTree/settings/pricing.html:35 msgid "Exchange Rates" msgstr "" -#: templates/InvenTree/settings/pricing.html:38 +#: templates/InvenTree/settings/pricing.html:39 msgid "Update Now" msgstr "" -#: templates/InvenTree/settings/pricing.html:46 -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 msgid "Last Update" msgstr "" -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:51 msgid "Never" msgstr "" @@ -10269,8 +10357,8 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:547 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 +#: templates/js/translated/part.js:393 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:402 msgid "Delete" msgstr "" @@ -10310,12 +10398,12 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:308 -#: templates/js/translated/part.js:1645 +#: templates/js/translated/part.js:1646 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:309 -#: templates/js/translated/part.js:1646 +#: templates/js/translated/part.js:1647 msgid "Delete Template" msgstr "" @@ -10705,7 +10793,7 @@ msgid "Submit Bug Report" msgstr "" #: templates/about.html:91 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 +#: templates/js/translated/helpers.js:589 msgid "copy to clipboard" msgstr "" @@ -10769,7 +10857,7 @@ 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 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45 msgid "Return to Site" msgstr "" @@ -10883,15 +10971,19 @@ msgstr "" msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "" -#: templates/allauth_2fa/setup.html:23 +#: templates/allauth_2fa/setup.html:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 msgid "Step 2" msgstr "" -#: templates/allauth_2fa/setup.html:27 +#: templates/allauth_2fa/setup.html:28 msgid "Input a token generated by the app:" msgstr "" -#: templates/allauth_2fa/setup.html:37 +#: templates/allauth_2fa/setup.html:38 msgid "Verify" msgstr "" @@ -10970,7 +11062,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3217 +#: templates/js/translated/part.js:3219 msgid "Minimum Quantity" msgstr "" @@ -11058,27 +11150,27 @@ msgstr "" msgid "Delete attachments" msgstr "" -#: templates/js/translated/attachment.js:253 +#: templates/js/translated/attachment.js:260 msgid "Attachment actions" msgstr "" -#: templates/js/translated/attachment.js:275 +#: templates/js/translated/attachment.js:294 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:315 +#: templates/js/translated/attachment.js:334 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:365 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:366 +#: templates/js/translated/attachment.js:385 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:374 +#: templates/js/translated/attachment.js:393 msgid "Delete attachment" msgstr "" @@ -11359,7 +11451,7 @@ msgid "Includes variant and substitute stock" msgstr "" #: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 -#: templates/js/translated/part.js:1256 +#: templates/js/translated/part.js:1257 #: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" @@ -11686,7 +11778,7 @@ msgstr "" #: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 #: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 -#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11729,8 +11821,8 @@ msgstr "" msgid "No build lines found" msgstr "" -#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 -#: templates/js/translated/part.js:1202 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:791 +#: templates/js/translated/part.js:1203 msgid "Trackable part" msgstr "" @@ -11916,7 +12008,7 @@ msgid "Delete Parameters" msgstr "" #: templates/js/translated/company.js:1191 -#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2244 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2245 msgid "Order parts" msgstr "" @@ -11933,34 +12025,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:1279 -#: templates/js/translated/company.js:1567 templates/js/translated/part.js:798 -#: templates/js/translated/part.js:1210 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Template part" msgstr "" #: templates/js/translated/company.js:1283 -#: templates/js/translated/company.js:1571 templates/js/translated/part.js:802 -#: templates/js/translated/part.js:1214 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:803 +#: templates/js/translated/part.js:1215 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1464 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1465 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1527 +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1528 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1528 +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1529 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1433 +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1434 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1549 +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1550 msgid "Delete Parameter" msgstr "" @@ -12094,23 +12186,23 @@ msgstr "" msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2499 +#: templates/js/translated/forms.js:2500 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3113 +#: templates/js/translated/forms.js:3114 msgid "Select Columns" msgstr "" @@ -12211,7 +12303,7 @@ msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 -#: templates/js/translated/part.js:1604 +#: templates/js/translated/part.js:1605 msgid "ID" msgstr "" @@ -12292,347 +12384,343 @@ msgstr "" 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 +#: templates/js/translated/part.js:333 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:355 +#: templates/js/translated/part.js:356 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:356 +#: templates/js/translated/part.js:357 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:370 +#: templates/js/translated/part.js:371 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:383 +#: templates/js/translated/part.js:384 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:388 +#: templates/js/translated/part.js:389 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:397 +#: templates/js/translated/part.js:398 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:401 +#: templates/js/translated/part.js:402 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:406 +#: templates/js/translated/part.js:407 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:430 +#: templates/js/translated/part.js:431 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:432 +#: templates/js/translated/part.js:433 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:433 +#: templates/js/translated/part.js:434 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:462 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:463 +#: templates/js/translated/part.js:464 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:474 +#: templates/js/translated/part.js:475 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:531 +#: templates/js/translated/part.js:532 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:532 +#: templates/js/translated/part.js:533 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:546 +#: templates/js/translated/part.js:547 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:548 +#: templates/js/translated/part.js:549 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:549 +#: templates/js/translated/part.js:550 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:550 +#: templates/js/translated/part.js:551 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:557 +#: templates/js/translated/part.js:558 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:593 +#: templates/js/translated/part.js:594 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:595 +#: templates/js/translated/part.js:596 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:600 +#: templates/js/translated/part.js:601 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:602 +#: templates/js/translated/part.js:603 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:619 +#: templates/js/translated/part.js:620 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:629 +#: templates/js/translated/part.js:630 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:632 +#: templates/js/translated/part.js:633 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:657 +#: templates/js/translated/part.js:658 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:685 +#: templates/js/translated/part.js:686 #: templates/js/translated/table_filters.js:747 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:688 +#: templates/js/translated/part.js:689 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:748 +#: templates/js/translated/part.js:749 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:771 +#: templates/js/translated/part.js:772 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +#: templates/js/translated/part.js:795 templates/js/translated/part.js:1207 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:806 +#: templates/js/translated/part.js:807 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:810 +#: templates/js/translated/part.js:811 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:897 +#: templates/js/translated/part.js:898 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:901 +#: templates/js/translated/part.js:902 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1050 +#: templates/js/translated/part.js:1051 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1145 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +#: templates/js/translated/part.js:1113 templates/js/translated/part.js:1155 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1281 +#: templates/js/translated/part.js:1282 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1599 +#: templates/js/translated/part.js:1600 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1662 +#: templates/js/translated/part.js:1663 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1674 +#: templates/js/translated/part.js:1675 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1682 +#: templates/js/translated/part.js:1683 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1716 +#: templates/js/translated/part.js:1717 #: templates/js/translated/purchase_order.js:1654 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1860 +#: templates/js/translated/part.js:1861 #: templates/js/translated/purchase_order.js:2153 #: templates/js/translated/return_order.js:755 #: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1906 +#: templates/js/translated/part.js:1907 #: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1970 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1991 +#: templates/js/translated/part.js:1992 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 +#: templates/js/translated/part.js:2080 templates/js/translated/part.js:2506 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2200 +#: templates/js/translated/part.js:2201 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2205 +#: templates/js/translated/part.js:2206 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2235 +#: templates/js/translated/part.js:2236 msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2286 +#: templates/js/translated/part.js:2287 msgid "part" msgstr "" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2288 msgid "parts" msgstr "" -#: templates/js/translated/part.js:2383 +#: templates/js/translated/part.js:2384 msgid "No category" msgstr "" -#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2546 +#: templates/js/translated/part.js:2547 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2644 +#: templates/js/translated/part.js:2645 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2760 +#: templates/js/translated/part.js:2761 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2776 +#: templates/js/translated/part.js:2777 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2865 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2887 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/part.js:2938 templates/js/translated/stock.js:1457 #: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2940 +#: templates/js/translated/part.js:2942 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2956 +#: templates/js/translated/part.js:2958 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2970 +#: templates/js/translated/part.js:2972 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3051 templates/js/translated/part.js:3052 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3052 +#: templates/js/translated/part.js:3054 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3058 +#: templates/js/translated/part.js:3060 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3108 +#: templates/js/translated/part.js:3110 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3114 +#: templates/js/translated/part.js:3116 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3210 +#: templates/js/translated/part.js:3212 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3226 +#: templates/js/translated/part.js:3228 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3271 +#: templates/js/translated/part.js:3273 msgid "Minimum Stock Level" msgstr "" @@ -13240,10 +13328,6 @@ msgstr "" 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 "" @@ -13412,7 +13496,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:401 +#: templates/js/translated/stock.js:1042 users/models.py:392 msgid "Add" msgstr "" @@ -14303,34 +14387,35 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:384 +#: users/models.py:375 msgid "Permission set" msgstr "" -#: users/models.py:393 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "View" msgstr "" -#: users/models.py:397 +#: users/models.py:388 msgid "Permission to view items" msgstr "" -#: users/models.py:401 +#: users/models.py:392 msgid "Permission to add items" msgstr "" -#: users/models.py:405 +#: users/models.py:396 msgid "Change" msgstr "" -#: users/models.py:407 +#: users/models.py:398 msgid "Permissions to edit items" msgstr "" -#: users/models.py:413 +#: users/models.py:404 msgid "Permission to delete items" msgstr "" + diff --git a/src/backend/InvenTree/locale/zh_Hans/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/zh_Hans/LC_MESSAGES/django.po index 618a19ae01..b851189f1a 100644 --- a/src/backend/InvenTree/locale/zh_Hans/LC_MESSAGES/django.po +++ b/src/backend/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-05-31 07:08+0000\n" +"POT-Creation-Date: 2024-06-26 03:18+0000\n" "PO-Revision-Date: 2023-02-28 22:38\n" "Last-Translator: \n" "Language-Team: Chinese Simplified\n" @@ -21,7 +21,7 @@ msgstr "" msgid "API endpoint not found" msgstr "未找到 API 端点" -#: InvenTree/api.py:536 +#: InvenTree/api.py:520 msgid "User does not have permission to view this model" msgstr "" @@ -58,25 +58,25 @@ msgstr "提供的数量无效" msgid "Error details can be found in the admin panel" msgstr "在管理面板中可以找到错误详细信息" -#: InvenTree/fields.py:139 +#: InvenTree/fields.py:136 msgid "Enter date" msgstr "输入日期" -#: InvenTree/fields.py:208 InvenTree/models.py:1035 build/serializers.py:453 -#: build/serializers.py:531 build/templates/build/sidebar.html:21 -#: company/models.py:849 company/templates/company/sidebar.html:37 -#: order/models.py:1332 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:205 InvenTree/models.py:918 build/serializers.py:452 +#: build/serializers.py:530 build/templates/build/sidebar.html:21 +#: company/models.py:817 company/templates/company/sidebar.html:37 +#: order/models.py:1296 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:3218 part/templates/part/part_sidebar.html:63 +#: part/models.py:3183 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_report.html:172 -#: stock/admin.py:226 stock/models.py:2325 stock/models.py:2442 -#: stock/serializers.py:630 stock/serializers.py:788 stock/serializers.py:884 -#: stock/serializers.py:934 stock/serializers.py:1243 stock/serializers.py:1332 -#: stock/serializers.py:1497 stock/templates/stock/stock_sidebar.html:25 +#: stock/admin.py:230 stock/models.py:2309 stock/models.py:2431 +#: stock/serializers.py:632 stock/serializers.py:790 stock/serializers.py:886 +#: stock/serializers.py:936 stock/serializers.py:1239 stock/serializers.py:1328 +#: stock/serializers.py:1493 stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1080 +#: templates/js/translated/part.js:1081 #: templates/js/translated/purchase_order.js:2200 #: templates/js/translated/return_order.js:775 #: templates/js/translated/sales_order.js:1103 @@ -126,15 +126,15 @@ msgstr "Email 地址确认" msgid "You must type the same email each time." msgstr "您必须输入相同的 Email 。" -#: InvenTree/forms.py:253 InvenTree/forms.py:261 +#: InvenTree/forms.py:248 InvenTree/forms.py:256 msgid "The provided primary email address is not valid." msgstr "所提供的主要电子邮件地址无效。" -#: InvenTree/forms.py:268 +#: InvenTree/forms.py:263 msgid "The provided email domain is not approved." msgstr "提供的电子邮件域未被核准。" -#: InvenTree/forms.py:395 +#: InvenTree/forms.py:390 msgid "Registration is disabled." msgstr "" @@ -182,35 +182,35 @@ msgstr "唯一序列号 ({s}) 必须匹配数量 ({q})" msgid "Remove HTML tags from this value" msgstr "从这个值中删除 HTML 标签" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Connection error" msgstr "连接错误" -#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 msgid "Server responded with invalid status code" msgstr "服务器响应状态码无效" -#: InvenTree/helpers_model.py:158 +#: InvenTree/helpers_model.py:148 msgid "Exception occurred" msgstr "发生异常" -#: InvenTree/helpers_model.py:168 +#: InvenTree/helpers_model.py:158 msgid "Server responded with invalid Content-Length value" msgstr "服务器响应的内容长度值无效" -#: InvenTree/helpers_model.py:171 +#: InvenTree/helpers_model.py:161 msgid "Image size is too large" msgstr "图片尺寸过大" -#: InvenTree/helpers_model.py:183 +#: InvenTree/helpers_model.py:173 msgid "Image download exceeded maximum size" msgstr "图像下载超过最大尺寸" -#: InvenTree/helpers_model.py:188 +#: InvenTree/helpers_model.py:178 msgid "Remote server returned empty response" msgstr "远程服务器返回了空响应" -#: InvenTree/helpers_model.py:196 +#: InvenTree/helpers_model.py:186 msgid "Supplied URL is not a valid image file" msgstr "提供的 URL 不是一个有效的图片文件" @@ -311,48 +311,52 @@ msgid "Portuguese (Brazilian)" msgstr "葡萄牙语 (巴西)" #: InvenTree/locales.py:41 +msgid "Romanian" +msgstr "" + +#: InvenTree/locales.py:42 msgid "Russian" msgstr "俄语" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:43 #, fuzzy #| msgid "Slovenian" msgid "Slovak" msgstr "斯洛文尼亚" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:44 msgid "Slovenian" msgstr "斯洛文尼亚" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:45 msgid "Serbian" msgstr "" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:46 msgid "Swedish" msgstr "瑞典语" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:47 msgid "Thai" msgstr "泰语" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:48 msgid "Turkish" msgstr "土耳其语" -#: InvenTree/locales.py:48 +#: InvenTree/locales.py:49 msgid "Ukrainian" msgstr "" -#: InvenTree/locales.py:49 +#: InvenTree/locales.py:50 msgid "Vietnamese" msgstr "越南语" -#: InvenTree/locales.py:50 +#: InvenTree/locales.py:51 msgid "Chinese (Simplified)" msgstr "" -#: InvenTree/locales.py:51 +#: InvenTree/locales.py:52 msgid "Chinese (Traditional)" msgstr "" @@ -361,155 +365,67 @@ msgstr "" msgid "[{site_name}] Log in to the app" msgstr "" -#: InvenTree/magic_login.py:38 company/models.py:133 +#: InvenTree/magic_login.py:38 company/models.py:136 #: company/templates/company/company_base.html:138 #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:677 msgid "Email" msgstr "电子邮件" -#: InvenTree/models.py:107 +#: InvenTree/models.py:105 #, fuzzy #| msgid "Error reading file (invalid format)" msgid "Error running plugin validation" msgstr "读取文件时发生错误 (无效编码)" -#: InvenTree/models.py:176 +#: InvenTree/models.py:174 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:182 +#: InvenTree/models.py:180 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:183 +#: InvenTree/models.py:181 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:413 +#: InvenTree/models.py:408 msgid "Improperly formatted pattern" msgstr "格式不正确" -#: InvenTree/models.py:420 +#: InvenTree/models.py:415 msgid "Unknown format key specified" msgstr "指定了未知格式密钥" -#: InvenTree/models.py:426 +#: InvenTree/models.py:421 msgid "Missing required format key" msgstr "缺少必需的格式密钥" -#: InvenTree/models.py:437 +#: InvenTree/models.py:432 msgid "Reference field cannot be empty" msgstr "引用字段不能为空" -#: InvenTree/models.py:445 +#: InvenTree/models.py:440 msgid "Reference must match required pattern" msgstr "引用必须匹配所需的图案" -#: InvenTree/models.py:476 +#: InvenTree/models.py:471 msgid "Reference number is too large" msgstr "参考编号过大" -#: InvenTree/models.py:550 -msgid "Missing file" -msgstr "缺少文件" - -#: InvenTree/models.py:551 -msgid "Missing external link" -msgstr "缺少外部链接" - -#: InvenTree/models.py:572 stock/models.py:2437 -#: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:326 -msgid "Attachment" -msgstr "附件" - -#: InvenTree/models.py:573 -msgid "Select file to attach" -msgstr "选择附件" - -#: InvenTree/models.py:581 common/models.py:3041 company/models.py:146 -#: company/models.py:457 company/models.py:514 company/models.py:831 -#: order/models.py:303 order/models.py:1337 order/models.py:1753 -#: part/admin.py:55 part/models.py:962 -#: part/templates/part/part_scheduling.html:11 -#: report/templates/report/inventree_build_order_report.html:164 -#: stock/admin.py:225 templates/js/translated/company.js:1319 -#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2455 -#: templates/js/translated/purchase_order.js:2040 -#: templates/js/translated/purchase_order.js:2204 -#: templates/js/translated/return_order.js:779 -#: templates/js/translated/sales_order.js:1092 -#: templates/js/translated/sales_order.js:2023 -msgid "Link" -msgstr "链接" - -#: InvenTree/models.py:582 build/models.py:345 part/models.py:963 -#: stock/models.py:836 -msgid "Link to external URL" -msgstr "链接到外部 URL" - -#: InvenTree/models.py:588 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:341 -msgid "Comment" -msgstr "注释" - -#: InvenTree/models.py:589 -msgid "File comment" -msgstr "文件注释" - -#: InvenTree/models.py:597 InvenTree/models.py:598 common/models.py:2517 -#: common/models.py:2518 common/models.py:2742 common/models.py:2743 -#: common/models.py:2988 common/models.py:2989 part/models.py:3228 -#: part/models.py:3315 part/models.py:3408 part/models.py:3436 -#: plugin/models.py:259 plugin/models.py:260 -#: report/templates/report/inventree_test_report.html:105 -#: templates/js/translated/stock.js:3036 users/models.py:111 -msgid "User" -msgstr "用户" - -#: InvenTree/models.py:602 -msgid "upload date" -msgstr "上传日期" - -#: InvenTree/models.py:624 -msgid "Filename must not be empty" -msgstr "文件名不能为空!" - -#: InvenTree/models.py:635 -msgid "Invalid attachment directory" -msgstr "非法的附件目录" - -#: InvenTree/models.py:665 -#, python-brace-format -msgid "Filename contains illegal character '{c}'" -msgstr "文件名包含非法字符 '{c}'" - -#: InvenTree/models.py:668 -msgid "Filename missing extension" -msgstr "缺少文件名扩展" - -#: InvenTree/models.py:677 -msgid "Attachment with this filename already exists" -msgstr "使用此文件名的附件已存在" - -#: InvenTree/models.py:684 -msgid "Error renaming file" -msgstr "重命名文件出错" - -#: InvenTree/models.py:860 +#: InvenTree/models.py:719 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:877 +#: InvenTree/models.py:736 msgid "Invalid choice" msgstr "选择无效" -#: InvenTree/models.py:907 common/models.py:2729 common/models.py:3127 -#: common/serializers.py:403 company/models.py:614 machine/models.py:24 -#: part/models.py:898 part/models.py:3659 plugin/models.py:50 -#: report/models.py:149 stock/models.py:72 +#: InvenTree/models.py:766 common/models.py:2623 common/models.py:3036 +#: common/serializers.py:408 company/models.py:580 machine/models.py:24 +#: part/models.py:891 part/models.py:3639 plugin/models.py:51 +#: report/models.py:150 stock/models.py:73 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:83 @@ -520,25 +436,25 @@ msgstr "选择无效" #: templates/js/translated/company.js:724 #: templates/js/translated/company.js:913 #: templates/js/translated/company.js:1165 -#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1186 -#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2748 templates/js/translated/stock.js:2716 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1187 +#: templates/js/translated/part.js:1475 templates/js/translated/part.js:1611 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "名称" -#: InvenTree/models.py:913 build/models.py:218 -#: build/templates/build/detail.html:24 common/models.py:136 -#: company/models.py:523 company/models.py:840 +#: InvenTree/models.py:772 build/models.py:220 +#: build/templates/build/detail.html:24 common/models.py:138 +#: company/models.py:509 company/models.py:808 #: company/templates/company/company_base.html:77 #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 order/models.py:289 -#: order/models.py:1365 part/admin.py:305 part/admin.py:416 part/models.py:921 -#: part/models.py:3674 part/templates/part/category.html:82 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:914 +#: part/models.py:3654 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:155 -#: report/models.py:509 report/models.py:535 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 #: report/templates/report/inventree_build_order_report.html:117 -#: stock/admin.py:55 stock/models.py:78 stock/templates/stock/location.html:125 +#: stock/admin.py:54 stock/models.py:79 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 @@ -547,10 +463,10 @@ msgstr "名称" #: templates/js/translated/build.js:2139 templates/js/translated/company.js:519 #: templates/js/translated/company.js:1330 #: templates/js/translated/company.js:1641 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:2354 -#: templates/js/translated/part.js:2784 templates/js/translated/part.js:2895 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1239 +#: templates/js/translated/part.js:1484 templates/js/translated/part.js:1622 +#: templates/js/translated/part.js:1959 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2897 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1706 #: templates/js/translated/purchase_order.js:1849 @@ -563,155 +479,147 @@ msgstr "名称" msgid "Description" msgstr "描述信息" -#: InvenTree/models.py:914 stock/models.py:79 +#: InvenTree/models.py:773 stock/models.py:80 msgid "Description (optional)" msgstr "描述 (可选)" -#: InvenTree/models.py:923 -msgid "parent" -msgstr "上级项" - -#: InvenTree/models.py:929 templates/js/translated/part.js:2793 +#: InvenTree/models.py:788 templates/js/translated/part.js:2794 #: templates/js/translated/stock.js:2757 msgid "Path" msgstr "路径" -#: InvenTree/models.py:1035 +#: InvenTree/models.py:918 #, fuzzy #| msgid "Add transaction note (optional)" msgid "Markdown notes (optional)" msgstr "添加交易备注 (可选)" -#: InvenTree/models.py:1064 +#: InvenTree/models.py:947 msgid "Barcode Data" msgstr "条码数据" -#: InvenTree/models.py:1065 +#: InvenTree/models.py:948 msgid "Third party barcode data" msgstr "第三方条形码数据" -#: InvenTree/models.py:1071 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "条码哈希" -#: InvenTree/models.py:1072 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "条码数据的唯一哈希" -#: InvenTree/models.py:1125 +#: InvenTree/models.py:1008 msgid "Existing barcode found" msgstr "发现现有条码" -#: InvenTree/models.py:1168 +#: InvenTree/models.py:1051 msgid "Server Error" msgstr "服务器错误" -#: InvenTree/models.py:1169 +#: InvenTree/models.py:1052 msgid "An error has been logged by the server." msgstr "服务器记录了一个错误。" -#: InvenTree/serializers.py:62 part/models.py:4212 +#: InvenTree/serializers.py:63 part/models.py:4192 msgid "Must be a valid number" msgstr "必须是有效数字" -#: InvenTree/serializers.py:99 company/models.py:183 -#: company/templates/company/company_base.html:112 part/models.py:3036 +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3001 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "货币" -#: InvenTree/serializers.py:102 +#: InvenTree/serializers.py:103 msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:441 +#: InvenTree/serializers.py:442 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:453 +#: InvenTree/serializers.py:454 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:472 +#: InvenTree/serializers.py:473 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:474 +#: InvenTree/serializers.py:475 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:481 +#: InvenTree/serializers.py:482 #, fuzzy #| msgid "About InvenTree" msgid "Welcome to InvenTree" msgstr "关于 InventTree" -#: InvenTree/serializers.py:542 -msgid "Filename" -msgstr "文件名" - -#: InvenTree/serializers.py:576 +#: InvenTree/serializers.py:540 msgid "Invalid value" msgstr "无效值" -#: InvenTree/serializers.py:596 +#: InvenTree/serializers.py:560 msgid "Data File" msgstr "数据文件" -#: InvenTree/serializers.py:597 +#: InvenTree/serializers.py:561 msgid "Select data file for upload" msgstr "选择要上传的文件" -#: InvenTree/serializers.py:614 +#: InvenTree/serializers.py:578 msgid "Unsupported file type" msgstr "不支持的文件类型" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:584 msgid "File is too large" msgstr "文件过大" -#: InvenTree/serializers.py:641 +#: InvenTree/serializers.py:605 msgid "No columns found in file" msgstr "在文件中没有找到列" -#: InvenTree/serializers.py:644 +#: InvenTree/serializers.py:608 msgid "No data rows found in file" msgstr "在文件中没有找到数据行" -#: InvenTree/serializers.py:757 +#: InvenTree/serializers.py:721 msgid "No data rows provided" msgstr "没有提供数据行" -#: InvenTree/serializers.py:760 +#: InvenTree/serializers.py:724 msgid "No data columns supplied" msgstr "没有提供数据列" -#: InvenTree/serializers.py:827 +#: InvenTree/serializers.py:791 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "缺少必需的列:'{name}'" -#: InvenTree/serializers.py:836 +#: InvenTree/serializers.py:800 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "复制列: '{col}'" -#: InvenTree/serializers.py:859 +#: InvenTree/serializers.py:840 #, fuzzy #| msgid "Part name" msgid "Remote Image" msgstr "商品名称" -#: InvenTree/serializers.py:860 +#: InvenTree/serializers.py:841 msgid "URL of remote image file" msgstr "远程图像文件的 URL" -#: InvenTree/serializers.py:878 +#: InvenTree/serializers.py:859 msgid "Downloading images from remote URL is not enabled" msgstr "未启用从远程 URL下载图像" -#: InvenTree/status.py:66 part/serializers.py:1178 +#: InvenTree/status.py:66 part/serializers.py:1174 msgid "Background worker check failed" msgstr "后台工作人员检查失败" @@ -723,29 +631,29 @@ msgstr "未配置电子邮件后端" msgid "InvenTree system health checks failed" msgstr "InventTree系统健康检查失败" -#: InvenTree/templatetags/inventree_extras.py:183 +#: InvenTree/templatetags/inventree_extras.py:184 msgid "Unknown database" msgstr "" -#: InvenTree/validators.py:31 InvenTree/validators.py:33 +#: InvenTree/validators.py:32 InvenTree/validators.py:34 #, fuzzy #| msgid "Invalid value" msgid "Invalid physical unit" msgstr "无效值" -#: InvenTree/validators.py:39 +#: InvenTree/validators.py:40 msgid "Not a valid currency code" msgstr "不是有效的货币代码" -#: InvenTree/validators.py:121 InvenTree/validators.py:137 +#: InvenTree/validators.py:118 InvenTree/validators.py:134 msgid "Overage value must not be negative" msgstr "备损值不能为负数" -#: InvenTree/validators.py:139 +#: InvenTree/validators.py:136 msgid "Overage must not exceed 100%" msgstr "备损不能超过 100%" -#: InvenTree/validators.py:145 +#: InvenTree/validators.py:142 msgid "Invalid value for overage" msgstr "无效的备损值" @@ -777,14 +685,14 @@ msgstr "关于 InventTree" msgid "Build must be cancelled before it can be deleted" msgstr "在删除前必须取消生产" -#: build/api.py:299 part/models.py:4090 templates/js/translated/bom.js:997 +#: build/api.py:299 part/models.py:4070 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2520 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:300 part/models.py:4084 part/templates/part/upload_bom.html:58 +#: build/api.py:300 part/models.py:4064 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2529 #: templates/js/translated/table_filters.js:186 @@ -805,30 +713,30 @@ msgstr "" msgid "Allocated" msgstr "" -#: build/api.py:311 company/models.py:904 company/serializers.py:383 +#: build/api.py:311 company/models.py:872 company/serializers.py:359 #: 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:2561 #: templates/js/translated/index.js:123 #: templates/js/translated/model_renderers.js:234 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 -#: templates/js/translated/part.js:699 +#: templates/js/translated/part.js:693 templates/js/translated/part.js:695 +#: templates/js/translated/part.js:700 #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:575 msgid "Available" msgstr "空闲" -#: build/models.py:83 build/templates/build/build_base.html:9 +#: build/models.py:85 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_report.html:105 -#: stock/serializers.py:83 templates/email/build_order_completed.html:16 +#: stock/serializers.py:82 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:2892 msgid "Build Order" msgstr "生产订单" -#: build/models.py:84 build/templates/build/build_base.html:13 +#: build/models.py:86 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 @@ -839,27 +747,27 @@ msgstr "生产订单" msgid "Build Orders" msgstr "生产订单" -#: build/models.py:131 +#: build/models.py:133 msgid "Invalid choice for parent build" msgstr "上级生产选项无效" -#: build/models.py:142 order/models.py:240 +#: build/models.py:144 order/models.py:240 msgid "Responsible user or group must be specified" msgstr "" -#: build/models.py:148 +#: build/models.py:150 #, fuzzy #| msgid "Order cannot be cancelled" msgid "Build order part cannot be changed" msgstr "无法取消订单" -#: build/models.py:209 +#: build/models.py:211 msgid "Build Order Reference" msgstr "相关生产订单" -#: build/models.py:210 order/models.py:463 order/models.py:928 -#: order/models.py:1325 order/models.py:2056 part/admin.py:419 -#: part/models.py:4105 part/templates/part/upload_bom.html:54 +#: build/models.py:212 order/models.py:463 order/models.py:926 +#: order/models.py:1289 order/models.py:2020 part/admin.py:411 +#: part/models.py:4085 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_purchase_order_report.html:28 #: report/templates/report/inventree_return_order_report.html:26 @@ -873,29 +781,29 @@ msgstr "相关生产订单" msgid "Reference" msgstr "引用" -#: build/models.py:221 +#: build/models.py:223 #, fuzzy #| msgid "Brief description of the build" msgid "Brief description of the build (optional)" msgstr "生产的简短描述." -#: build/models.py:229 build/templates/build/build_base.html:183 +#: build/models.py:231 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "上级生产" -#: build/models.py:230 +#: build/models.py:232 msgid "BuildOrder to which this build is allocated" msgstr "此次生产匹配的订单" -#: build/models.py:235 build/templates/build/build_base.html:97 -#: build/templates/build/detail.html:29 company/models.py:1058 order/api.py:821 -#: order/models.py:1450 order/models.py:1595 order/models.py:1596 -#: part/api.py:1501 part/api.py:1795 part/models.py:392 part/models.py:3047 -#: part/models.py:3191 part/models.py:3335 part/models.py:3358 -#: part/models.py:3379 part/models.py:3401 part/models.py:3511 -#: part/models.py:3807 part/models.py:3963 part/models.py:4056 -#: part/models.py:4417 part/serializers.py:1124 part/serializers.py:1730 +#: build/models.py:237 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1026 order/api.py:805 +#: order/models.py:1414 order/models.py:1559 order/models.py:1560 +#: part/api.py:1494 part/api.py:1788 part/models.py:395 part/models.py:3012 +#: part/models.py:3156 part/models.py:3303 part/models.py:3324 +#: part/models.py:3346 part/models.py:3477 part/models.py:3787 +#: part/models.py:3943 part/models.py:4036 part/models.py:4395 +#: part/serializers.py:1120 part/serializers.py:1726 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -906,8 +814,8 @@ msgstr "此次生产匹配的订单" #: report/templates/report/inventree_return_order_report.html:24 #: report/templates/report/inventree_sales_order_report.html:27 #: report/templates/report/inventree_stock_location_report.html:102 -#: stock/serializers.py:110 stock/serializers.py:158 stock/serializers.py:396 -#: stock/serializers.py:818 templates/InvenTree/search.html:82 +#: stock/serializers.py:109 stock/serializers.py:157 stock/serializers.py:423 +#: stock/serializers.py:820 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 @@ -920,8 +828,8 @@ msgstr "此次生产匹配的订单" #: templates/js/translated/company.js:1116 #: templates/js/translated/company.js:1271 #: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 -#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 -#: templates/js/translated/part.js:2323 templates/js/translated/pricing.js:369 +#: templates/js/translated/part.js:1944 templates/js/translated/part.js:2016 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 #: templates/js/translated/purchase_order.js:751 #: templates/js/translated/purchase_order.js:1304 #: templates/js/translated/purchase_order.js:1848 @@ -939,107 +847,107 @@ msgstr "此次生产匹配的订单" msgid "Part" msgstr "商品" -#: build/models.py:243 +#: build/models.py:245 msgid "Select part to build" msgstr "选择要生产的商品" -#: build/models.py:248 +#: build/models.py:250 msgid "Sales Order Reference" msgstr "相关销售订单" -#: build/models.py:252 +#: build/models.py:254 msgid "SalesOrder to which this build is allocated" msgstr "此次生产匹配的销售订单" -#: build/models.py:257 build/serializers.py:1000 +#: build/models.py:259 build/serializers.py:999 #: templates/js/translated/build.js:1731 #: templates/js/translated/sales_order.js:1221 msgid "Source Location" msgstr "来源地点" -#: build/models.py:261 +#: build/models.py:263 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "此次生产从哪个仓储位置获取库存(留空即可从任何仓储位置取出)" -#: build/models.py:266 +#: build/models.py:268 msgid "Destination Location" msgstr "目标地点" -#: build/models.py:270 +#: build/models.py:272 msgid "Select location where the completed items will be stored" msgstr "选择已完成项目仓储地点" -#: build/models.py:274 +#: build/models.py:276 msgid "Build Quantity" msgstr "生产数量" -#: build/models.py:277 +#: build/models.py:279 msgid "Number of stock items to build" msgstr "要生产的项目数量" -#: build/models.py:281 +#: build/models.py:283 msgid "Completed items" msgstr "已完成项目" -#: build/models.py:283 +#: build/models.py:285 msgid "Number of stock items which have been completed" msgstr "已完成的库存项目数量" -#: build/models.py:287 +#: build/models.py:289 msgid "Build Status" msgstr "生产状态" -#: build/models.py:291 +#: build/models.py:293 msgid "Build status code" msgstr "生产状态代码" -#: build/models.py:300 build/serializers.py:287 order/serializers.py:581 -#: stock/models.py:840 stock/serializers.py:75 stock/serializers.py:1462 +#: build/models.py:302 build/serializers.py:286 order/serializers.py:580 +#: stock/models.py:838 stock/serializers.py:74 stock/serializers.py:1458 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "批量代码" -#: build/models.py:304 build/serializers.py:288 +#: build/models.py:306 build/serializers.py:287 msgid "Batch code for this build output" msgstr "此生产产出的批量代码" -#: build/models.py:307 order/models.py:316 order/serializers.py:120 -#: part/models.py:1122 part/templates/part/part_base.html:310 +#: build/models.py:309 order/models.py:316 order/serializers.py:119 +#: part/models.py:1115 part/templates/part/part_base.html:310 #: templates/js/translated/return_order.js:338 #: templates/js/translated/sales_order.js:863 msgid "Creation Date" msgstr "创建日期" -#: build/models.py:311 +#: build/models.py:313 msgid "Target completion date" msgstr "预计完成日期" -#: build/models.py:312 +#: build/models.py:314 msgid "Target date for build completion. Build will be overdue after this date." msgstr "生产完成的目标日期。生产将在此日期之后逾期。" -#: build/models.py:315 order/models.py:521 order/models.py:2101 +#: build/models.py:317 order/models.py:521 order/models.py:2065 #: templates/js/translated/build.js:2247 msgid "Completion Date" msgstr "完成日期:" -#: build/models.py:321 +#: build/models.py:323 msgid "completed by" msgstr "完成人" -#: build/models.py:329 templates/js/translated/build.js:2207 +#: build/models.py:331 templates/js/translated/build.js:2207 msgid "Issued by" msgstr "发布者" -#: build/models.py:330 +#: build/models.py:332 msgid "User who issued this build order" msgstr "发布此生产订单的用户" -#: build/models.py:338 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 common/models.py:145 +#: build/models.py:340 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:147 #: order/models.py:334 order/templates/order/order_base.html:217 #: order/templates/order/return_order_base.html:188 -#: order/templates/order/sales_order_base.html:232 part/models.py:1139 +#: order/templates/order/sales_order_base.html:232 part/models.py:1132 #: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_report.html:158 #: templates/InvenTree/settings/settings_staff_js.html:150 @@ -1050,31 +958,36 @@ msgstr "发布此生产订单的用户" msgid "Responsible" msgstr "责任人" -#: build/models.py:339 +#: build/models.py:341 msgid "User or group responsible for this build order" msgstr "构建此订单的用户或组" -#: build/models.py:344 build/templates/build/detail.html:108 +#: build/models.py:346 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:184 -#: part/templates/part/part_base.html:383 stock/models.py:836 +#: part/templates/part/part_base.html:383 stock/models.py:834 #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1019 msgid "External Link" msgstr "外部链接" -#: build/models.py:349 +#: build/models.py:347 common/models.py:3178 part/models.py:956 +#: stock/models.py:834 +msgid "Link to external URL" +msgstr "链接到外部 URL" + +#: build/models.py:351 msgid "Build Priority" msgstr "创建优先级" -#: build/models.py:352 +#: build/models.py:354 msgid "Priority of this build order" msgstr "此构建订单的优先级" -#: build/models.py:359 common/models.py:129 order/admin.py:18 +#: build/models.py:361 common/models.py:131 order/admin.py:18 #: order/models.py:298 templates/InvenTree/settings/settings_staff_js.html:146 #: templates/js/translated/build.js:2144 #: templates/js/translated/purchase_order.js:1710 @@ -1087,73 +1000,73 @@ msgstr "此构建订单的优先级" msgid "Project Code" msgstr "商品二维码" -#: build/models.py:360 +#: build/models.py:362 #, fuzzy #| msgid "Priority of this build order" msgid "Project code for this build order" msgstr "此构建订单的优先级" -#: build/models.py:593 build/models.py:658 +#: build/models.py:595 build/models.py:660 msgid "Failed to offload task to complete build allocations" msgstr "" -#: build/models.py:615 +#: build/models.py:617 #, python-brace-format msgid "Build order {build} has been completed" msgstr "生产订单 {build} 已完成" -#: build/models.py:621 +#: build/models.py:623 msgid "A build order has been completed" msgstr "生产订单已完成" -#: build/models.py:847 build/models.py:932 +#: build/models.py:849 build/models.py:934 msgid "No build output specified" msgstr "未指定生产产出" -#: build/models.py:850 +#: build/models.py:852 msgid "Build output is already completed" msgstr "生产产出已完成" -#: build/models.py:853 +#: build/models.py:855 msgid "Build output does not match Build Order" msgstr "生产产出与订单不匹配" -#: build/models.py:936 build/serializers.py:220 build/serializers.py:269 -#: build/serializers.py:867 order/models.py:559 order/serializers.py:433 -#: order/serializers.py:576 part/serializers.py:1488 part/serializers.py:1888 -#: stock/models.py:679 stock/models.py:1499 stock/serializers.py:601 +#: build/models.py:938 build/serializers.py:219 build/serializers.py:268 +#: build/serializers.py:866 order/models.py:559 order/serializers.py:432 +#: order/serializers.py:575 part/serializers.py:1484 part/serializers.py:1884 +#: stock/models.py:677 stock/models.py:1495 stock/serializers.py:603 msgid "Quantity must be greater than zero" msgstr "数量必须大于0" -#: build/models.py:941 build/serializers.py:225 +#: build/models.py:943 build/serializers.py:224 #, fuzzy #| msgid "Quantity must be greater than zero" msgid "Quantity cannot be greater than the output quantity" msgstr "数量必须大于0" -#: build/models.py:1001 build/serializers.py:548 +#: build/models.py:1003 build/serializers.py:547 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1352 +#: build/models.py:1344 #, fuzzy #| msgid "Delete parameters" msgid "Build Order Line Item" msgstr "删除参数" -#: build/models.py:1377 +#: build/models.py:1369 #, fuzzy #| msgid "Build Notes" msgid "Build object" msgstr "生产备注" -#: build/models.py:1391 build/models.py:1647 build/serializers.py:207 -#: build/serializers.py:254 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2539 -#: order/models.py:1308 order/models.py:1967 order/serializers.py:1339 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:418 -#: part/forms.py:48 part/models.py:3205 part/models.py:4078 +#: build/models.py:1383 build/models.py:1639 build/serializers.py:206 +#: build/serializers.py:253 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2509 +#: order/models.py:1272 order/models.py:1931 order/serializers.py:1327 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3170 part/models.py:4058 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1162,8 +1075,8 @@ msgstr "生产备注" #: report/templates/report/inventree_sales_order_report.html:29 #: report/templates/report/inventree_stock_location_report.html:104 #: report/templates/report/inventree_test_report.html:90 -#: report/templates/report/inventree_test_report.html:170 stock/admin.py:160 -#: stock/serializers.py:126 stock/serializers.py:166 stock/serializers.py:592 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:125 stock/serializers.py:165 stock/serializers.py:594 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1174,8 +1087,8 @@ msgstr "生产备注" #: templates/js/translated/build.js:1746 templates/js/translated/build.js:2357 #: templates/js/translated/company.js:1818 #: templates/js/translated/model_renderers.js:236 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3340 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:962 +#: templates/js/translated/part.js:1812 templates/js/translated/part.js:3342 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1195,42 +1108,42 @@ msgstr "生产备注" msgid "Quantity" msgstr "数量" -#: build/models.py:1392 +#: build/models.py:1384 #, fuzzy #| msgid "Stock required for build order" msgid "Required quantity for build order" msgstr "生产订单所需的库存" -#: build/models.py:1472 +#: build/models.py:1464 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "生产项必须指定生产产出,因为主部件已经被标记为可追踪的" -#: build/models.py:1481 +#: build/models.py:1473 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "分配数量 ({q}) 不得超过可用库存数量 ({a})" -#: build/models.py:1491 order/models.py:1918 +#: build/models.py:1483 order/models.py:1882 msgid "Stock item is over-allocated" msgstr "库存物品分配过度!" -#: build/models.py:1497 order/models.py:1921 +#: build/models.py:1489 order/models.py:1885 msgid "Allocation quantity must be greater than zero" msgstr "分配数量必须大于0" -#: build/models.py:1503 +#: build/models.py:1495 msgid "Quantity must be 1 for serialized stock" msgstr "序列化库存的数量必须是 1" -#: build/models.py:1562 +#: build/models.py:1554 #, fuzzy #| msgid "Selected stock item not found in BOM" msgid "Selected stock item does not match BOM line" msgstr "在BOM中找不到选定的库存项" -#: build/models.py:1634 build/serializers.py:847 order/serializers.py:1183 -#: order/serializers.py:1204 stock/models.py:360 stock/serializers.py:92 -#: stock/serializers.py:695 stock/serializers.py:1181 stock/serializers.py:1293 +#: build/models.py:1626 build/serializers.py:846 order/serializers.py:1171 +#: order/serializers.py:1192 stock/models.py:358 stock/serializers.py:91 +#: stock/serializers.py:697 stock/serializers.py:1177 stock/serializers.py:1289 #: stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:194 @@ -1246,70 +1159,70 @@ msgstr "在BOM中找不到选定的库存项" msgid "Stock Item" msgstr "库存项" -#: build/models.py:1635 +#: build/models.py:1627 msgid "Source stock item" msgstr "源库存项" -#: build/models.py:1648 +#: build/models.py:1640 msgid "Stock quantity to allocate to build" msgstr "分配到生产的数量" -#: build/models.py:1656 +#: build/models.py:1648 msgid "Install into" msgstr "安装到" -#: build/models.py:1657 +#: build/models.py:1649 msgid "Destination stock item" msgstr "目标库存项" -#: build/serializers.py:157 build/serializers.py:876 +#: build/serializers.py:156 build/serializers.py:875 #: templates/js/translated/build.js:1322 msgid "Build Output" msgstr "生产产出" -#: build/serializers.py:169 +#: build/serializers.py:168 msgid "Build output does not match the parent build" msgstr "生产产出与对应生产不匹配" -#: build/serializers.py:173 +#: build/serializers.py:172 msgid "Output part does not match BuildOrder part" msgstr "产出部件与生产订单部件不匹配" -#: build/serializers.py:177 +#: build/serializers.py:176 msgid "This build output has already been completed" msgstr "此生产产出已经完成" -#: build/serializers.py:188 +#: build/serializers.py:187 msgid "This build output is not fully allocated" msgstr "生产产出未被完成分配" -#: build/serializers.py:208 build/serializers.py:255 +#: build/serializers.py:207 build/serializers.py:254 msgid "Enter quantity for build output" msgstr "输入生产产出数量" -#: build/serializers.py:276 +#: build/serializers.py:275 msgid "Integer quantity required for trackable parts" msgstr "对于可追踪的部件,需要整数型数值" -#: build/serializers.py:279 +#: build/serializers.py:278 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "需要整数型数值,因为BOM包含可追踪的部件" -#: build/serializers.py:294 order/serializers.py:589 order/serializers.py:1343 -#: stock/serializers.py:612 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:293 order/serializers.py:588 order/serializers.py:1331 +#: stock/serializers.py:614 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "序列号" -#: build/serializers.py:295 +#: build/serializers.py:294 msgid "Enter serial numbers for build outputs" msgstr "输入生产产出的序列号" -#: build/serializers.py:300 build/serializers.py:441 build/serializers.py:513 -#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1679 -#: part/serializers.py:1144 stock/serializers.py:101 stock/serializers.py:623 -#: stock/serializers.py:783 stock/serializers.py:879 stock/serializers.py:1325 -#: stock/serializers.py:1581 stock/templates/stock/item_base.html:394 +#: build/serializers.py:299 build/serializers.py:440 build/serializers.py:512 +#: order/serializers.py:564 order/serializers.py:672 order/serializers.py:1656 +#: part/serializers.py:1140 stock/serializers.py:100 stock/serializers.py:625 +#: stock/serializers.py:785 stock/serializers.py:881 stock/serializers.py:1321 +#: stock/serializers.py:1577 stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:1001 #: templates/js/translated/build.js:2372 @@ -1325,64 +1238,64 @@ msgstr "输入生产产出的序列号" msgid "Location" msgstr "地点" -#: build/serializers.py:301 +#: build/serializers.py:300 #, fuzzy #| msgid "Stock item created" msgid "Stock location for build output" msgstr "库存项已创建" -#: build/serializers.py:315 +#: build/serializers.py:314 msgid "Auto Allocate Serial Numbers" msgstr "自动分配序列号" -#: build/serializers.py:316 +#: build/serializers.py:315 msgid "Automatically allocate required items with matching serial numbers" msgstr "自动为所需项分配对应的序列号" -#: build/serializers.py:331 +#: build/serializers.py:330 #, fuzzy #| msgid "Integer quantity required for trackable parts" msgid "Serial numbers must be provided for trackable parts" msgstr "对于可追踪的部件,需要整数型数值" -#: build/serializers.py:356 stock/api.py:1031 +#: build/serializers.py:355 stock/api.py:1041 msgid "The following serial numbers already exist or are invalid" msgstr "以下序列号已存在或无效" -#: build/serializers.py:403 build/serializers.py:465 build/serializers.py:554 +#: build/serializers.py:402 build/serializers.py:464 build/serializers.py:553 msgid "A list of build outputs must be provided" msgstr "必须提供生产产出列表" -#: build/serializers.py:442 +#: build/serializers.py:441 #, fuzzy #| msgid "Stock item created" msgid "Stock location for scrapped outputs" msgstr "库存项已创建" -#: build/serializers.py:448 +#: build/serializers.py:447 #, fuzzy #| msgid "Stock Locations" msgid "Discard Allocations" msgstr "仓储地点" -#: build/serializers.py:449 +#: build/serializers.py:448 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:454 +#: build/serializers.py:453 #, fuzzy #| msgid "Location for completed build outputs" msgid "Reason for scrapping build output(s)" msgstr "已完成生产产出的仓储地点" -#: build/serializers.py:514 +#: build/serializers.py:513 msgid "Location for completed build outputs" msgstr "已完成生产产出的仓储地点" -#: build/serializers.py:520 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:952 -#: order/models.py:2080 order/serializers.py:597 stock/admin.py:165 -#: stock/serializers.py:930 stock/serializers.py:1469 +#: build/serializers.py:519 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2044 order/serializers.py:596 stock/admin.py:164 +#: stock/serializers.py:932 stock/serializers.py:1465 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2191 #: templates/js/translated/purchase_order.js:1308 @@ -1394,196 +1307,196 @@ msgstr "已完成生产产出的仓储地点" msgid "Status" msgstr "状态" -#: build/serializers.py:526 +#: build/serializers.py:525 msgid "Accept Incomplete Allocation" msgstr "接受不完整的分配" -#: build/serializers.py:527 +#: build/serializers.py:526 msgid "Complete outputs if stock has not been fully allocated" msgstr "如果库存尚未完成分配,完成产出" -#: build/serializers.py:612 +#: build/serializers.py:611 #, fuzzy #| msgid "Remove Allocated Stock" msgid "Consume Allocated Stock" msgstr "移除已分配的库存" -#: build/serializers.py:613 +#: build/serializers.py:612 #, fuzzy #| msgid "Subtract any stock which has already been allocated to this build" msgid "Consume any stock which has already been allocated to this build" msgstr "减去已经分配至此生产的库存" -#: build/serializers.py:619 +#: build/serializers.py:618 msgid "Remove Incomplete Outputs" msgstr "移除未完成的产出" -#: build/serializers.py:620 +#: build/serializers.py:619 msgid "Delete any build outputs which have not been completed" msgstr "删除所有未完成的生产产出" -#: build/serializers.py:647 +#: build/serializers.py:646 msgid "Not permitted" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:647 msgid "Accept as consumed by this build order" msgstr "接受此构建订单所消耗的内容" -#: build/serializers.py:649 +#: build/serializers.py:648 msgid "Deallocate before completing this build order" msgstr "在完成此构建订单前取消分配" -#: build/serializers.py:679 +#: build/serializers.py:678 msgid "Overallocated Stock" msgstr "超出分配的库存" -#: build/serializers.py:681 +#: build/serializers.py:680 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "你想如何处理分配给构建订单的额外库存物品" -#: build/serializers.py:691 +#: build/serializers.py:690 msgid "Some stock items have been overallocated" msgstr "一些库存项已被过度分配" -#: build/serializers.py:696 +#: build/serializers.py:695 msgid "Accept Unallocated" msgstr "接受未分配的" -#: build/serializers.py:697 +#: build/serializers.py:696 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "接受库存项未被完成分配至此生产订单" -#: build/serializers.py:707 templates/js/translated/build.js:315 +#: build/serializers.py:706 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" msgstr "所需库存尚未完全分配" -#: build/serializers.py:712 order/serializers.py:301 order/serializers.py:1246 +#: build/serializers.py:711 order/serializers.py:300 order/serializers.py:1234 msgid "Accept Incomplete" msgstr "接受未完成" -#: build/serializers.py:713 +#: build/serializers.py:712 msgid "Accept that the required number of build outputs have not been completed" msgstr "接受所需的生产产出未完成" -#: build/serializers.py:723 templates/js/translated/build.js:319 +#: build/serializers.py:722 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" msgstr "所需生产数量尚未完成" -#: build/serializers.py:732 templates/js/translated/build.js:303 +#: build/serializers.py:731 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" msgstr "生产订单有未完成的产出" -#: build/serializers.py:770 +#: build/serializers.py:769 #, fuzzy #| msgid "Build actions" msgid "Build Line" msgstr "生产操作" -#: build/serializers.py:780 +#: build/serializers.py:779 msgid "Build output" msgstr "生产产出" -#: build/serializers.py:788 +#: build/serializers.py:787 msgid "Build output must point to the same build" msgstr "生产产出必须指向相同的生产" -#: build/serializers.py:824 +#: build/serializers.py:823 #, fuzzy #| msgid "Delete parameters" msgid "Build Line Item" msgstr "删除参数" -#: build/serializers.py:838 +#: build/serializers.py:837 msgid "bom_item.part must point to the same part as the build order" msgstr "bom_item.part 必须与生产订单指向相同的部件" -#: build/serializers.py:853 stock/serializers.py:1194 +#: build/serializers.py:852 stock/serializers.py:1190 msgid "Item must be in stock" msgstr "项目必须在库存中" -#: build/serializers.py:901 order/serializers.py:1237 +#: build/serializers.py:900 order/serializers.py:1225 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "可用量 ({q}) 超出了限制" -#: build/serializers.py:907 +#: build/serializers.py:906 msgid "Build output must be specified for allocation of tracked parts" msgstr "对于被追踪的部件的分配,必须指定生产产出" -#: build/serializers.py:914 +#: build/serializers.py:913 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "对于未被追踪的部件,无法指定生产产出" -#: build/serializers.py:938 order/serializers.py:1489 +#: build/serializers.py:937 order/serializers.py:1477 msgid "Allocation items must be provided" msgstr "必须提供分配的项" -#: build/serializers.py:1001 +#: build/serializers.py:1000 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "部件来源的仓储地点(留空则可来源于任何仓储地点)" -#: build/serializers.py:1009 +#: build/serializers.py:1008 msgid "Exclude Location" msgstr "排除地点" -#: build/serializers.py:1010 +#: build/serializers.py:1009 msgid "Exclude stock items from this selected location" msgstr "从该选定的仓储地点排除库存项" -#: build/serializers.py:1015 +#: build/serializers.py:1014 msgid "Interchangeable Stock" msgstr "可互换的库存" -#: build/serializers.py:1016 +#: build/serializers.py:1015 msgid "Stock items in multiple locations can be used interchangeably" msgstr "多处地点的库存项可以互换使用" -#: build/serializers.py:1021 +#: build/serializers.py:1020 msgid "Substitute Stock" msgstr "可替换的库存" -#: build/serializers.py:1022 +#: build/serializers.py:1021 msgid "Allow allocation of substitute parts" msgstr "允许分配可替换的部件" -#: build/serializers.py:1027 +#: build/serializers.py:1026 msgid "Optional Items" msgstr "可选项目" -#: build/serializers.py:1028 +#: build/serializers.py:1027 msgid "Allocate optional BOM items to build order" msgstr "分配可选的BOM项目来建立订单" -#: build/serializers.py:1050 +#: build/serializers.py:1049 msgid "Failed to start auto-allocation task" msgstr "" -#: build/serializers.py:1140 part/models.py:3973 part/models.py:4409 -#: stock/api.py:794 +#: build/serializers.py:1139 part/models.py:3953 part/models.py:4387 +#: stock/api.py:804 msgid "BOM Item" msgstr "BOM项" -#: build/serializers.py:1149 templates/js/translated/index.js:130 +#: build/serializers.py:1148 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1154 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:832 part/serializers.py:1506 +#: build/serializers.py:1153 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:828 part/serializers.py:1502 #: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 -#: templates/js/translated/build.js:2613 templates/js/translated/part.js:709 -#: templates/js/translated/part.js:2148 +#: templates/js/translated/build.js:2613 templates/js/translated/part.js:710 +#: templates/js/translated/part.js:2149 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1159 part/serializers.py:1508 +#: build/serializers.py:1158 part/serializers.py:1504 #: templates/js/translated/build.js:2617 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "正在生产" -#: build/serializers.py:1164 part/bom.py:172 part/serializers.py:1531 +#: build/serializers.py:1163 part/bom.py:172 part/serializers.py:1527 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1929 msgid "Available Stock" @@ -1607,7 +1520,7 @@ msgstr "已取消" #: build/status_codes.py:14 generic/states/tests.py:19 order/status_codes.py:14 #: order/status_codes.py:44 order/status_codes.py:69 #: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:165 report/models.py:443 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 msgid "Complete" msgstr "完成" @@ -1739,11 +1652,11 @@ msgstr "库存尚未被完全分配到此构建订单" #: build/templates/build/build_base.html:160 #: build/templates/build/detail.html:138 order/models.py:309 -#: order/models.py:1343 order/templates/order/order_base.html:186 +#: order/models.py:1307 order/templates/order/order_base.html:186 #: order/templates/order/return_order_base.html:164 #: order/templates/order/sales_order_base.html:196 #: report/templates/report/inventree_build_order_report.html:125 -#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1830 +#: templates/js/translated/build.js:2239 templates/js/translated/part.js:1831 #: templates/js/translated/purchase_order.js:1739 #: templates/js/translated/purchase_order.js:2147 #: templates/js/translated/return_order.js:346 @@ -1776,8 +1689,8 @@ msgid "Completed Outputs" msgstr "已完成输出" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1511 order/models.py:847 -#: order/models.py:1587 order/models.py:1701 order/models.py:1855 +#: build/templates/build/detail.html:101 order/api.py:1463 order/models.py:845 +#: order/models.py:1551 order/models.py:1665 order/models.py:1819 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_report.html:135 @@ -1831,7 +1744,7 @@ msgstr "库存来源" msgid "Stock can be taken from any available location." msgstr "库存可以从任何可用的地点获得。" -#: build/templates/build/detail.html:49 order/models.py:1479 +#: build/templates/build/detail.html:49 order/models.py:1443 #: templates/js/translated/purchase_order.js:2189 msgid "Destination" msgstr "目的地" @@ -1844,7 +1757,7 @@ msgstr "目标位置未指定" msgid "Allocated Parts" msgstr "已分配的部件" -#: build/templates/build/detail.html:80 stock/admin.py:163 +#: build/templates/build/detail.html:80 stock/admin.py:162 #: stock/templates/stock/item_base.html:162 #: templates/js/translated/build.js:1380 #: templates/js/translated/model_renderers.js:241 @@ -1971,11 +1884,11 @@ msgstr "附件" msgid "Build Notes" msgstr "生产备注" -#: build/templates/build/detail.html:435 +#: build/templates/build/detail.html:426 msgid "Allocation Complete" msgstr "分配完成" -#: build/templates/build/detail.html:436 +#: build/templates/build/detail.html:427 #, fuzzy #| msgid "Required stock has not been fully allocated" msgid "All lines have been fully allocated" @@ -1993,6 +1906,46 @@ msgstr "生产订单详情" msgid "Incomplete Outputs" msgstr "未完成输出" +#: common/api.py:689 +#, fuzzy +#| msgid "Link" +msgid "Is Link" +msgstr "链接" + +#: common/api.py:697 +#, fuzzy +#| msgid "File" +msgid "Is File" +msgstr "文件" + +#: common/api.py:739 +msgid "User does not have permission to delete this attachment" +msgstr "" + +#: common/currency.py:130 +#, fuzzy +#| msgid "Not a valid currency code" +msgid "Invalid currency code" +msgstr "不是有效的货币代码" + +#: common/currency.py:132 +#, fuzzy +#| msgid "Not a valid currency code" +msgid "Duplicate currency code" +msgstr "不是有效的货币代码" + +#: common/currency.py:137 +#, fuzzy +#| msgid "Not a valid currency code" +msgid "No valid currency codes provided" +msgstr "不是有效的货币代码" + +#: common/currency.py:154 +#, fuzzy +#| msgid "Subcategories" +msgid "No plugin" +msgstr "子类别" + #: common/files.py:63 #, fuzzy, python-brace-format #| msgid "Unsupported file format: {ext.upper()}" @@ -2032,1565 +1985,1570 @@ msgstr "{name.title()} 文件" msgid "Select {name} file to upload" msgstr "选择 {name} 文件上传" -#: common/models.py:71 +#: common/models.py:73 msgid "Updated" msgstr "已更新" -#: common/models.py:72 +#: common/models.py:74 msgid "Timestamp of last update" msgstr "最后一次更新时间" -#: common/models.py:105 +#: common/models.py:107 msgid "Site URL is locked by configuration" msgstr "" -#: common/models.py:130 +#: common/models.py:132 msgid "Unique project code" msgstr "" -#: common/models.py:137 +#: common/models.py:139 #, fuzzy #| msgid "Part description" msgid "Project description" msgstr "商品描述" -#: common/models.py:146 +#: common/models.py:148 #, fuzzy #| msgid "User or group responsible for this order" msgid "User or group responsible for this project" msgstr "负责此订单的用户或群组" -#: common/models.py:766 +#: common/models.py:765 msgid "Settings key (must be unique - case insensitive)" msgstr "设置键值(必须是唯一的 - 大小写不敏感)" -#: common/models.py:770 +#: common/models.py:769 msgid "Settings value" msgstr "设定值" -#: common/models.py:822 +#: common/models.py:821 msgid "Chosen value is not a valid option" msgstr "选择的值不是一个有效的选项" -#: common/models.py:838 +#: common/models.py:837 msgid "Value must be a boolean value" msgstr "值必须是布尔量" -#: common/models.py:846 +#: common/models.py:845 msgid "Value must be an integer value" msgstr "值必须为整数" -#: common/models.py:883 +#: common/models.py:882 msgid "Key string must be unique" msgstr "关键字必须是唯一的" -#: common/models.py:1115 +#: common/models.py:1114 msgid "No group" msgstr "无群组" -#: common/models.py:1158 -msgid "An empty domain is not allowed." -msgstr "不允许空域。" - -#: common/models.py:1160 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "无效的域名: {domain}" - -#: common/models.py:1172 -#, fuzzy -#| msgid "Subcategories" -msgid "No plugin" -msgstr "子类别" - -#: common/models.py:1260 +#: common/models.py:1213 msgid "Restart required" msgstr "需要重启" -#: common/models.py:1262 +#: common/models.py:1215 msgid "A setting has been changed which requires a server restart" msgstr "设置已更改,需要服务器重启" -#: common/models.py:1269 +#: common/models.py:1222 #, fuzzy #| msgid "Printing Actions" msgid "Pending migrations" msgstr "打印操作" -#: common/models.py:1270 +#: common/models.py:1223 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1275 +#: common/models.py:1228 msgid "Server Instance Name" msgstr "服务器实例名称" -#: common/models.py:1277 +#: common/models.py:1230 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1281 +#: common/models.py:1234 msgid "Use instance name" msgstr "" -#: common/models.py:1282 +#: common/models.py:1235 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1287 +#: common/models.py:1240 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1288 +#: common/models.py:1241 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1293 company/models.py:108 company/models.py:109 +#: common/models.py:1246 company/models.py:111 company/models.py:112 msgid "Company name" msgstr "公司名称" -#: common/models.py:1294 +#: common/models.py:1247 msgid "Internal company name" msgstr "内部公司名称" -#: common/models.py:1298 +#: common/models.py:1251 msgid "Base URL" msgstr "" -#: common/models.py:1299 +#: common/models.py:1252 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1305 +#: common/models.py:1258 msgid "Default Currency" msgstr "" -#: common/models.py:1306 +#: common/models.py:1259 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1312 +#: common/models.py:1265 +msgid "Supported Currencies" +msgstr "" + +#: common/models.py:1266 +#, fuzzy +#| msgid "Not a valid currency code" +msgid "List of supported currency codes" +msgstr "不是有效的货币代码" + +#: common/models.py:1272 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1314 +#: common/models.py:1274 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1317 common/models.py:1373 common/models.py:1386 -#: common/models.py:1394 common/models.py:1403 common/models.py:1412 -#: common/models.py:1620 common/models.py:1642 common/models.py:1757 -#: common/models.py:2076 +#: common/models.py:1277 common/models.py:1333 common/models.py:1346 +#: common/models.py:1354 common/models.py:1363 common/models.py:1372 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:2046 msgid "days" msgstr "天" -#: common/models.py:1321 +#: common/models.py:1281 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1322 +#: common/models.py:1282 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1327 +#: common/models.py:1287 msgid "Download from URL" msgstr "" -#: common/models.py:1329 +#: common/models.py:1289 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1335 +#: common/models.py:1295 msgid "Download Size Limit" msgstr "" -#: common/models.py:1336 +#: common/models.py:1296 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1342 +#: common/models.py:1302 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1344 +#: common/models.py:1304 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:1349 +#: common/models.py:1309 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1350 +#: common/models.py:1310 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1355 +#: common/models.py:1315 msgid "Require confirm" msgstr "" -#: common/models.py:1356 +#: common/models.py:1316 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1361 +#: common/models.py:1321 msgid "Tree Depth" msgstr "" -#: common/models.py:1363 +#: common/models.py:1323 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1369 +#: common/models.py:1329 msgid "Update Check Interval" msgstr "" -#: common/models.py:1370 +#: common/models.py:1330 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1376 +#: common/models.py:1336 msgid "Automatic Backup" msgstr "" -#: common/models.py:1377 +#: common/models.py:1337 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1382 +#: common/models.py:1342 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1383 +#: common/models.py:1343 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1389 +#: common/models.py:1349 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1391 +#: common/models.py:1351 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1398 +#: common/models.py:1358 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1400 +#: common/models.py:1360 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1407 +#: common/models.py:1367 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1409 +#: common/models.py:1369 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1416 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1376 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1417 +#: common/models.py:1377 #, fuzzy #| msgid "Enable barcode scanner support" msgid "Enable barcode scanner support in the web interface" msgstr "启用条形码扫描支持" -#: common/models.py:1422 +#: common/models.py:1382 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1423 +#: common/models.py:1383 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1429 +#: common/models.py:1389 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1430 +#: common/models.py:1390 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1435 +#: common/models.py:1395 #, fuzzy #| msgid "Part description" msgid "Part Revisions" msgstr "商品描述" -#: common/models.py:1436 +#: common/models.py:1396 #, fuzzy #| msgid "Enable internal prices for parts" msgid "Enable revision field for Part" msgstr "启用内部商品价格" -#: common/models.py:1441 +#: common/models.py:1401 #, fuzzy #| msgid "Removed from assembly" msgid "Allow Deletion from Assembly" msgstr "已从组装中删除" -#: common/models.py:1442 +#: common/models.py:1402 msgid "Allow deletion of parts which are used in an assembly" msgstr "" -#: common/models.py:1447 +#: common/models.py:1407 msgid "IPN Regex" msgstr "" -#: common/models.py:1448 +#: common/models.py:1408 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1451 +#: common/models.py:1411 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1452 +#: common/models.py:1412 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1457 +#: common/models.py:1417 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1458 +#: common/models.py:1418 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1463 +#: common/models.py:1423 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1464 +#: common/models.py:1424 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1469 +#: common/models.py:1429 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1470 +#: common/models.py:1430 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1475 +#: common/models.py:1435 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1476 +#: common/models.py:1436 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1481 +#: common/models.py:1441 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1482 +#: common/models.py:1442 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1487 part/admin.py:108 part/models.py:3815 -#: report/models.py:293 report/models.py:360 report/serializers.py:90 -#: report/serializers.py:131 stock/serializers.py:228 +#: common/models.py:1447 part/admin.py:108 part/models.py:3795 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:227 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "模板" -#: common/models.py:1488 +#: common/models.py:1448 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1493 part/admin.py:91 part/admin.py:433 part/models.py:1059 +#: common/models.py:1453 part/admin.py:91 part/admin.py:425 part/models.py:1052 #: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" msgstr "组装" -#: common/models.py:1494 +#: common/models.py:1454 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1499 part/admin.py:95 part/models.py:1065 +#: common/models.py:1459 part/admin.py:95 part/models.py:1058 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "组件" -#: common/models.py:1500 +#: common/models.py:1460 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1505 part/admin.py:100 part/models.py:1077 +#: common/models.py:1465 part/admin.py:100 part/models.py:1070 msgid "Purchaseable" msgstr "可购买" -#: common/models.py:1506 +#: common/models.py:1466 msgid "Parts are purchaseable by default" msgstr "商品默认可购买" -#: common/models.py:1511 part/admin.py:104 part/models.py:1083 +#: common/models.py:1471 part/admin.py:104 part/models.py:1076 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "可销售" -#: common/models.py:1512 +#: common/models.py:1472 msgid "Parts are salable by default" msgstr "商品默认可销售" -#: common/models.py:1517 part/admin.py:113 part/models.py:1071 +#: common/models.py:1477 part/admin.py:113 part/models.py:1064 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" msgstr "可追踪" -#: common/models.py:1518 +#: common/models.py:1478 msgid "Parts are trackable by default" msgstr "商品默认可跟踪" -#: common/models.py:1523 part/admin.py:117 part/models.py:1093 +#: common/models.py:1483 part/admin.py:117 part/models.py:1086 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" msgstr "虚拟" -#: common/models.py:1524 +#: common/models.py:1484 msgid "Parts are virtual by default" msgstr "商品默认是虚拟的" -#: common/models.py:1529 +#: common/models.py:1489 msgid "Show Import in Views" msgstr "视图中显示导入" -#: common/models.py:1530 +#: common/models.py:1490 msgid "Display the import wizard in some part views" msgstr "在一些商品视图中显示导入向导" -#: common/models.py:1535 +#: common/models.py:1495 msgid "Show related parts" msgstr "显示相关商品" -#: common/models.py:1536 +#: common/models.py:1496 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1541 +#: common/models.py:1501 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1542 +#: common/models.py:1502 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1547 templates/js/translated/part.js:107 +#: common/models.py:1507 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1549 +#: common/models.py:1509 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1555 +#: common/models.py:1515 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1556 +#: common/models.py:1516 msgid "Format to display the part name" msgstr "" -#: common/models.py:1562 +#: common/models.py:1522 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1563 +#: common/models.py:1523 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1567 +#: common/models.py:1527 #, fuzzy #| msgid "Parameter units" msgid "Enforce Parameter Units" msgstr "参数单位" -#: common/models.py:1569 +#: common/models.py:1529 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1575 +#: common/models.py:1535 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1577 +#: common/models.py:1537 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1583 +#: common/models.py:1548 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1585 +#: common/models.py:1550 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1591 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1593 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1599 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1601 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1607 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1609 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1615 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1617 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1630 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1632 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1638 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1640 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1647 +#: common/models.py:1617 msgid "Internal Prices" msgstr "内部价格" -#: common/models.py:1648 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "启用内部商品价格" -#: common/models.py:1653 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1655 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1661 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1662 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1667 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1669 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1675 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1676 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1681 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "调试模式" -#: common/models.py:1682 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "在调试模式生成报告(HTML输出)" -#: common/models.py:1687 +#: common/models.py:1657 #, fuzzy #| msgid "No Reports Found" msgid "Log Report Errors" msgstr "没有找到报表" -#: common/models.py:1688 +#: common/models.py:1658 msgid "Log errors which occur when generating reports" msgstr "" -#: common/models.py:1693 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:301 +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:302 msgid "Page Size" msgstr "页面大小" -#: common/models.py:1694 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "PDF 报表默认页面大小" -#: common/models.py:1699 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1700 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "启用生成测试报表" -#: common/models.py:1705 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1707 +#: common/models.py:1677 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1713 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1714 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1719 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1720 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1725 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1727 +#: common/models.py:1697 msgid "Determines default behavior when a stock item is depleted" msgstr "" -#: common/models.py:1733 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1735 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1740 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "库存到期" -#: common/models.py:1741 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "启用库存到期功能" -#: common/models.py:1746 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "销售过期库存" -#: common/models.py:1747 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "允许销售过期库存" -#: common/models.py:1752 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1754 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1761 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1762 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1767 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "库存所有权控制" -#: common/models.py:1768 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1773 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1774 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1778 +#: common/models.py:1748 #, fuzzy #| msgid "Select Stock Items" msgid "Show Installed Stock Items" msgstr "选择库存项" -#: common/models.py:1779 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1784 +#: common/models.py:1754 msgid "Check BOM when installing items" msgstr "" -#: common/models.py:1786 +#: common/models.py:1756 msgid "Installed stock items must exist in the BOM for the parent part" msgstr "" -#: common/models.py:1792 +#: common/models.py:1762 msgid "Allow Out of Stock Transfer" msgstr "" -#: common/models.py:1794 +#: common/models.py:1764 msgid "Allow stock items which are not in stock to be transferred between stock locations" msgstr "" -#: common/models.py:1800 +#: common/models.py:1770 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1802 +#: common/models.py:1772 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1808 common/models.py:1836 common/models.py:1858 -#: common/models.py:1894 +#: common/models.py:1778 common/models.py:1806 common/models.py:1828 +#: common/models.py:1864 #, fuzzy #| msgid "Responsible" msgid "Require Responsible Owner" msgstr "责任人" -#: common/models.py:1809 common/models.py:1837 common/models.py:1859 -#: common/models.py:1895 +#: common/models.py:1779 common/models.py:1807 common/models.py:1829 +#: common/models.py:1865 msgid "A responsible owner must be assigned to each order" msgstr "" -#: common/models.py:1814 +#: common/models.py:1784 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1816 +#: common/models.py:1786 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:1822 +#: common/models.py:1792 #, fuzzy #| msgid "Sales Orders" msgid "Enable Return Orders" msgstr "销售订单" -#: common/models.py:1823 +#: common/models.py:1793 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1828 +#: common/models.py:1798 #, fuzzy #| msgid "Build Order Reference" msgid "Return Order Reference Pattern" msgstr "相关生产订单" -#: common/models.py:1830 +#: common/models.py:1800 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1842 +#: common/models.py:1812 #, fuzzy #| msgid "Complete Build Order" msgid "Edit Completed Return Orders" msgstr "生产订单完成" -#: common/models.py:1844 +#: common/models.py:1814 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1850 +#: common/models.py:1820 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1852 +#: common/models.py:1822 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1864 +#: common/models.py:1834 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1865 +#: common/models.py:1835 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1870 +#: common/models.py:1840 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1872 +#: common/models.py:1842 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1878 +#: common/models.py:1848 #, fuzzy #| msgid "Build Order is incomplete" msgid "Mark Shipped Orders as Complete" msgstr "生产订单未完成" -#: common/models.py:1880 +#: common/models.py:1850 msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" msgstr "" -#: common/models.py:1886 +#: common/models.py:1856 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1888 +#: common/models.py:1858 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1900 +#: common/models.py:1870 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1902 +#: common/models.py:1872 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1908 +#: common/models.py:1878 #, fuzzy #| msgid "Create Purchase Order" msgid "Auto Complete Purchase Orders" msgstr "创建采购订单" -#: common/models.py:1910 +#: common/models.py:1880 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1917 +#: common/models.py:1887 msgid "Enable password forgot" msgstr "" -#: common/models.py:1918 +#: common/models.py:1888 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1923 +#: common/models.py:1893 msgid "Enable registration" msgstr "" -#: common/models.py:1924 +#: common/models.py:1894 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1929 +#: common/models.py:1899 msgid "Enable SSO" msgstr "" -#: common/models.py:1930 +#: common/models.py:1900 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1935 +#: common/models.py:1905 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1937 +#: common/models.py:1907 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1943 +#: common/models.py:1913 msgid "Email required" msgstr "" -#: common/models.py:1944 +#: common/models.py:1914 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1949 +#: common/models.py:1919 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1951 +#: common/models.py:1921 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1957 +#: common/models.py:1927 msgid "Mail twice" msgstr "" -#: common/models.py:1958 +#: common/models.py:1928 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1963 +#: common/models.py:1933 msgid "Password twice" msgstr "" -#: common/models.py:1964 +#: common/models.py:1934 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1969 +#: common/models.py:1939 msgid "Allowed domains" msgstr "" -#: common/models.py:1971 +#: common/models.py:1941 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1977 +#: common/models.py:1947 msgid "Group on signup" msgstr "" -#: common/models.py:1978 +#: common/models.py:1948 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1983 +#: common/models.py:1953 msgid "Enforce MFA" msgstr "" -#: common/models.py:1984 +#: common/models.py:1954 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1989 +#: common/models.py:1959 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1991 +#: common/models.py:1961 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1999 +#: common/models.py:1969 msgid "Check for plugin updates" msgstr "" -#: common/models.py:2000 +#: common/models.py:1970 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:2006 +#: common/models.py:1976 msgid "Enable URL integration" msgstr "" -#: common/models.py:2007 +#: common/models.py:1977 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:2013 +#: common/models.py:1983 msgid "Enable navigation integration" msgstr "" -#: common/models.py:2014 +#: common/models.py:1984 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:2020 +#: common/models.py:1990 msgid "Enable app integration" msgstr "" -#: common/models.py:2021 +#: common/models.py:1991 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:2027 +#: common/models.py:1997 msgid "Enable schedule integration" msgstr "" -#: common/models.py:2028 +#: common/models.py:1998 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:2034 +#: common/models.py:2004 msgid "Enable event integration" msgstr "" -#: common/models.py:2035 +#: common/models.py:2005 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:2041 +#: common/models.py:2011 #, fuzzy #| msgid "Sales Orders" msgid "Enable project codes" msgstr "销售订单" -#: common/models.py:2042 +#: common/models.py:2012 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:2047 +#: common/models.py:2017 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:2049 +#: common/models.py:2019 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:2055 +#: common/models.py:2025 #, fuzzy #| msgid "Exclude Location" msgid "Exclude External Locations" msgstr "排除地点" -#: common/models.py:2057 +#: common/models.py:2027 #, fuzzy #| msgid "Exclude stock items from this selected location" msgid "Exclude stock items in external locations from stocktake calculations" msgstr "从该选定的仓储地点排除库存项" -#: common/models.py:2063 +#: common/models.py:2033 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:2065 +#: common/models.py:2035 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:2071 +#: common/models.py:2041 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:2073 +#: common/models.py:2043 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:2080 +#: common/models.py:2050 msgid "Display Users full names" msgstr "" -#: common/models.py:2081 +#: common/models.py:2051 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:2086 +#: common/models.py:2056 msgid "Enable Test Station Data" msgstr "" -#: common/models.py:2087 +#: common/models.py:2057 #, fuzzy #| msgid "Enable generation of test reports" msgid "Enable test station data collection for test results" msgstr "启用生成测试报表" -#: common/models.py:2099 common/models.py:2509 +#: common/models.py:2069 common/models.py:2479 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2142 +#: common/models.py:2112 #, fuzzy #| msgid "Build to allocate parts" msgid "Hide inactive parts" msgstr "生产以分配部件" -#: common/models.py:2144 +#: common/models.py:2114 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2150 +#: common/models.py:2120 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2151 +#: common/models.py:2121 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2156 +#: common/models.py:2126 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2157 +#: common/models.py:2127 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2162 +#: common/models.py:2132 msgid "Show latest parts" msgstr "显示最近商品" -#: common/models.py:2163 +#: common/models.py:2133 msgid "Show latest parts on the homepage" msgstr "在主页上显示最近商品" -#: common/models.py:2168 +#: common/models.py:2138 msgid "Show invalid BOMs" msgstr "" -#: common/models.py:2169 +#: common/models.py:2139 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2174 +#: common/models.py:2144 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2175 +#: common/models.py:2145 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2180 +#: common/models.py:2150 msgid "Show low stock" msgstr "" -#: common/models.py:2181 +#: common/models.py:2151 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2186 +#: common/models.py:2156 msgid "Show depleted stock" msgstr "" -#: common/models.py:2187 +#: common/models.py:2157 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2192 +#: common/models.py:2162 msgid "Show needed stock" msgstr "" -#: common/models.py:2193 +#: common/models.py:2163 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2198 +#: common/models.py:2168 msgid "Show expired stock" msgstr "" -#: common/models.py:2199 +#: common/models.py:2169 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2204 +#: common/models.py:2174 msgid "Show stale stock" msgstr "" -#: common/models.py:2205 +#: common/models.py:2175 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2210 +#: common/models.py:2180 msgid "Show pending builds" msgstr "" -#: common/models.py:2211 +#: common/models.py:2181 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2216 +#: common/models.py:2186 msgid "Show overdue builds" msgstr "显示逾期生产" -#: common/models.py:2217 +#: common/models.py:2187 msgid "Show overdue builds on the homepage" msgstr "在主页上显示逾期的生产" -#: common/models.py:2222 +#: common/models.py:2192 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2223 +#: common/models.py:2193 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2228 +#: common/models.py:2198 msgid "Show overdue POs" msgstr "" -#: common/models.py:2229 +#: common/models.py:2199 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2234 +#: common/models.py:2204 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2235 +#: common/models.py:2205 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2240 +#: common/models.py:2210 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2241 +#: common/models.py:2211 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2246 +#: common/models.py:2216 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2247 +#: common/models.py:2217 #, fuzzy #| msgid "Show latest parts on the homepage" msgid "Show pending SO shipments on the homepage" msgstr "在主页上显示最近商品" -#: common/models.py:2252 +#: common/models.py:2222 msgid "Show News" msgstr "" -#: common/models.py:2253 +#: common/models.py:2223 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2258 +#: common/models.py:2228 msgid "Inline label display" msgstr "内嵌标签显示" -#: common/models.py:2260 +#: common/models.py:2230 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "在浏览器中显示 PDF 标签,而不是以文件形式下载" -#: common/models.py:2266 +#: common/models.py:2236 msgid "Default label printer" msgstr "" -#: common/models.py:2268 +#: common/models.py:2238 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2274 +#: common/models.py:2244 msgid "Inline report display" msgstr "" -#: common/models.py:2276 +#: common/models.py:2246 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "在浏览器中显示 PDF 报告,而不是以文件形式下载" -#: common/models.py:2282 +#: common/models.py:2252 msgid "Search Parts" msgstr "" -#: common/models.py:2283 +#: common/models.py:2253 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2288 +#: common/models.py:2258 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2289 +#: common/models.py:2259 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2294 +#: common/models.py:2264 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2295 +#: common/models.py:2265 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2300 +#: common/models.py:2270 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2301 +#: common/models.py:2271 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2306 +#: common/models.py:2276 msgid "Search Categories" msgstr "" -#: common/models.py:2307 +#: common/models.py:2277 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2312 +#: common/models.py:2282 msgid "Search Stock" msgstr "" -#: common/models.py:2313 +#: common/models.py:2283 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2318 +#: common/models.py:2288 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2320 +#: common/models.py:2290 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2326 +#: common/models.py:2296 msgid "Search Locations" msgstr "" -#: common/models.py:2327 +#: common/models.py:2297 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2332 +#: common/models.py:2302 msgid "Search Companies" msgstr "" -#: common/models.py:2333 +#: common/models.py:2303 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2338 +#: common/models.py:2308 msgid "Search Build Orders" msgstr "" -#: common/models.py:2339 +#: common/models.py:2309 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2344 +#: common/models.py:2314 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2345 +#: common/models.py:2315 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2350 +#: common/models.py:2320 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2352 +#: common/models.py:2322 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2358 +#: common/models.py:2328 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2359 +#: common/models.py:2329 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2364 +#: common/models.py:2334 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2366 +#: common/models.py:2336 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2372 +#: common/models.py:2342 #, fuzzy #| msgid "Purchase Orders" msgid "Search Return Orders" msgstr "采购订单" -#: common/models.py:2373 +#: common/models.py:2343 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2378 +#: common/models.py:2348 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2380 +#: common/models.py:2350 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2386 +#: common/models.py:2356 msgid "Search Preview Results" msgstr "搜索预览结果" -#: common/models.py:2388 +#: common/models.py:2358 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2394 +#: common/models.py:2364 #, fuzzy #| msgid "Search" msgid "Regex Search" msgstr "搜索" -#: common/models.py:2395 +#: common/models.py:2365 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2400 +#: common/models.py:2370 msgid "Whole Word Search" msgstr "" -#: common/models.py:2401 +#: common/models.py:2371 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2406 +#: common/models.py:2376 msgid "Show Quantity in Forms" msgstr "在表格中显示数量" -#: common/models.py:2407 +#: common/models.py:2377 msgid "Display available part quantity in some forms" msgstr "在某些表格中显示可用的商品数量" -#: common/models.py:2412 +#: common/models.py:2382 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2413 +#: common/models.py:2383 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2418 +#: common/models.py:2388 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2419 +#: common/models.py:2389 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2424 +#: common/models.py:2394 msgid "Date Format" msgstr "" -#: common/models.py:2425 +#: common/models.py:2395 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2438 part/templates/part/detail.html:41 +#: common/models.py:2408 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2439 +#: common/models.py:2409 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2444 part/templates/part/detail.html:62 +#: common/models.py:2414 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2446 +#: common/models.py:2416 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2452 +#: common/models.py:2422 msgid "Table String Length" msgstr "" -#: common/models.py:2454 +#: common/models.py:2424 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2460 +#: common/models.py:2430 #, fuzzy #| msgid "Select Label Template" msgid "Default part label template" msgstr "选择标签模板" -#: common/models.py:2461 +#: common/models.py:2431 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2466 +#: common/models.py:2436 #, fuzzy #| msgid "stock items selected" msgid "Default stock item template" msgstr "已选择库存项" -#: common/models.py:2468 +#: common/models.py:2438 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2474 +#: common/models.py:2444 #, fuzzy #| msgid "No stock location set" msgid "Default stock location label template" msgstr "未设置仓储地点" -#: common/models.py:2476 +#: common/models.py:2446 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2482 +#: common/models.py:2452 #, fuzzy #| msgid "No stock location set" msgid "Default build line label template" msgstr "未设置仓储地点" -#: common/models.py:2484 +#: common/models.py:2454 msgid "The build line label template to be automatically selected" msgstr "" -#: common/models.py:2490 +#: common/models.py:2460 msgid "Receive error reports" msgstr "" -#: common/models.py:2491 +#: common/models.py:2461 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2496 +#: common/models.py:2466 msgid "Last used printing machines" msgstr "" -#: common/models.py:2497 +#: common/models.py:2467 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2540 +#: common/models.py:2487 common/models.py:2488 common/models.py:2636 +#: common/models.py:2637 common/models.py:2882 common/models.py:2883 +#: common/models.py:3193 common/models.py:3194 part/models.py:3193 +#: part/models.py:3280 part/models.py:3353 part/models.py:3381 +#: plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "用户" + +#: common/models.py:2510 msgid "Price break quantity" msgstr "" -#: common/models.py:2547 company/serializers.py:496 order/admin.py:42 -#: order/models.py:1382 order/models.py:2301 -#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1885 +#: common/models.py:2517 company/serializers.py:472 order/admin.py:42 +#: order/models.py:1346 order/models.py:2265 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1886 #: templates/js/translated/pricing.js:621 #: templates/js/translated/return_order.js:740 msgid "Price" msgstr "价格" -#: common/models.py:2548 +#: common/models.py:2518 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2719 common/models.py:2904 +#: common/models.py:2613 common/models.py:2798 msgid "Endpoint" msgstr "" -#: common/models.py:2720 +#: common/models.py:2614 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2730 +#: common/models.py:2624 msgid "Name for this webhook" msgstr "" -#: common/models.py:2734 company/models.py:160 company/models.py:814 -#: machine/models.py:39 part/admin.py:88 part/models.py:1088 -#: plugin/models.py:65 templates/js/translated/company.js:523 +#: common/models.py:2628 company/models.py:163 company/models.py:782 +#: machine/models.py:39 part/admin.py:88 part/models.py:1081 +#: plugin/models.py:66 templates/js/translated/company.js:523 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 #: templates/js/translated/table_filters.js:492 @@ -3600,101 +3558,118 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2734 +#: common/models.py:2628 msgid "Is this webhook active" msgstr "" -#: common/models.py:2750 users/models.py:159 +#: common/models.py:2644 users/models.py:159 msgid "Token" msgstr "令牌" -#: common/models.py:2751 +#: common/models.py:2645 msgid "Token for access" msgstr "" -#: common/models.py:2759 +#: common/models.py:2653 msgid "Secret" msgstr "" -#: common/models.py:2760 +#: common/models.py:2654 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2868 +#: common/models.py:2762 msgid "Message ID" msgstr "" -#: common/models.py:2869 +#: common/models.py:2763 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2877 +#: common/models.py:2771 msgid "Host" msgstr "" -#: common/models.py:2878 +#: common/models.py:2772 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2886 +#: common/models.py:2780 msgid "Header" msgstr "" -#: common/models.py:2887 +#: common/models.py:2781 msgid "Header of this message" msgstr "" -#: common/models.py:2894 +#: common/models.py:2788 msgid "Body" msgstr "" -#: common/models.py:2895 +#: common/models.py:2789 msgid "Body of this message" msgstr "" -#: common/models.py:2905 +#: common/models.py:2799 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2910 +#: common/models.py:2804 msgid "Worked on" msgstr "" -#: common/models.py:2911 +#: common/models.py:2805 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:3037 +#: common/models.py:2931 msgid "Id" msgstr "" -#: common/models.py:3039 templates/js/translated/company.js:965 +#: common/models.py:2933 templates/js/translated/company.js:965 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:3043 templates/js/translated/news.js:60 +#: common/models.py:2935 common/models.py:3177 company/models.py:149 +#: company/models.py:440 company/models.py:500 company/models.py:799 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 +#: part/admin.py:55 part/models.py:955 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "链接" + +#: common/models.py:2937 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:3045 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2939 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:3047 templates/js/translated/news.js:52 +#: common/models.py:2941 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Read" msgstr "" -#: common/models.py:3050 +#: common/models.py:2944 msgid "Was this news item read?" msgstr "" -#: common/models.py:3067 company/models.py:156 part/models.py:972 +#: common/models.py:2961 company/models.py:159 part/models.py:965 #: 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.html:35 @@ -3704,44 +3679,111 @@ msgstr "" msgid "Image" msgstr "图片" -#: common/models.py:3067 +#: common/models.py:2961 #, fuzzy #| msgid "Image" msgid "Image file" msgstr "图片" -#: common/models.py:3109 +#: common/models.py:2973 common/models.py:3161 +#, fuzzy +#| msgid "Part Parameter Templates" +msgid "Target model type for this image" +msgstr "商品参数模板" + +#: common/models.py:2977 +#, fuzzy +#| msgid "Part Parameter Templates" +msgid "Target model ID for this image" +msgstr "商品参数模板" + +#: common/models.py:3018 #, fuzzy #| msgid "Must be a valid number" msgid "Unit name must be a valid identifier" msgstr "必须是有效数字" -#: common/models.py:3128 +#: common/models.py:3037 #, fuzzy #| msgid "Part name" msgid "Unit name" msgstr "商品名称" -#: common/models.py:3135 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3044 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3136 +#: common/models.py:3045 #, fuzzy #| msgid "Optional Items" msgid "Optional unit symbol" msgstr "可选项目" -#: common/models.py:3143 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3052 templates/InvenTree/settings/settings_staff_js.html:71 #, fuzzy #| msgid "Destination" msgid "Definition" msgstr "目的地" -#: common/models.py:3144 +#: common/models.py:3053 msgid "Unit definition" msgstr "" +#: common/models.py:3111 common/models.py:3168 stock/models.py:2426 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "附件" + +#: common/models.py:3123 +msgid "Missing file" +msgstr "缺少文件" + +#: common/models.py:3124 +msgid "Missing external link" +msgstr "缺少外部链接" + +#: common/models.py:3169 +msgid "Select file to attach" +msgstr "选择附件" + +#: common/models.py:3184 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "注释" + +#: common/models.py:3185 +#, fuzzy +#| msgid "Attachments" +msgid "Attachment comment" +msgstr "附件" + +#: common/models.py:3201 +#, fuzzy +#| msgid "upload date" +msgid "Upload date" +msgstr "上传日期" + +#: common/models.py:3202 +#, fuzzy +#| msgid "Select file to upload" +msgid "Date the file was uploaded" +msgstr "选择要上传的文件" + +#: common/models.py:3206 +#, fuzzy +#| msgid "File Fields" +msgid "File size" +msgstr "文件字段" + +#: common/models.py:3206 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3244 common/serializers.py:553 +msgid "Invalid model type specified for attachment" +msgstr "" + #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" @@ -3778,80 +3820,121 @@ msgstr "收到定购单" msgid "Error raised by plugin" msgstr "" -#: common/serializers.py:366 +#: common/serializers.py:371 msgid "Is Running" msgstr "" -#: common/serializers.py:372 +#: common/serializers.py:377 #, fuzzy #| msgid "Pending" msgid "Pending Tasks" msgstr "待定" -#: common/serializers.py:378 +#: common/serializers.py:383 msgid "Scheduled Tasks" msgstr "" -#: common/serializers.py:384 +#: common/serializers.py:389 msgid "Failed Tasks" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Task ID" msgstr "" -#: common/serializers.py:399 +#: common/serializers.py:404 msgid "Unique task ID" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 msgid "Lock" msgstr "" -#: common/serializers.py:401 +#: common/serializers.py:406 #, fuzzy #| msgid "Stock Item" msgid "Lock time" msgstr "库存项" -#: common/serializers.py:403 +#: common/serializers.py:408 #, fuzzy #| msgid "Part name" msgid "Task name" msgstr "商品名称" -#: common/serializers.py:405 +#: common/serializers.py:410 #, fuzzy #| msgid "Production" msgid "Function" msgstr "生产中" -#: common/serializers.py:405 +#: common/serializers.py:410 #, fuzzy #| msgid "Part name" msgid "Function name" msgstr "商品名称" -#: common/serializers.py:407 +#: common/serializers.py:412 #, fuzzy #| msgid "Attachments" msgid "Arguments" msgstr "附件" -#: common/serializers.py:407 +#: common/serializers.py:412 msgid "Task arguments" msgstr "" -#: common/serializers.py:410 +#: common/serializers.py:415 #, fuzzy #| msgid "Keywords" msgid "Keyword Arguments" msgstr "关键词" -#: common/serializers.py:410 +#: common/serializers.py:415 msgid "Task keyword arguments" msgstr "" +#: common/serializers.py:525 +msgid "Filename" +msgstr "文件名" + +#: common/serializers.py:532 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: common/serializers.py:559 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "" + +#: common/validators.py:33 +#, fuzzy +#| msgid "No data rows provided" +msgid "No attachment model type provided" +msgstr "没有提供数据行" + +#: common/validators.py:39 +#, fuzzy +#| msgid "Invalid attachment directory" +msgid "Invalid attachment model type" +msgstr "非法的附件目录" + +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "不允许空域。" + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +msgstr "无效的域名: {domain}" + #: 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 @@ -3890,240 +3973,252 @@ msgstr "已导入商品" msgid "Previous Step" msgstr "" -#: company/api.py:164 +#: company/api.py:144 #, fuzzy #| msgid "Print actions" msgid "Part is Active" msgstr "打印操作" -#: company/api.py:168 +#: company/api.py:148 #, fuzzy #| msgid "Manufacturers" msgid "Manufacturer is Active" msgstr "制造商" -#: company/api.py:317 +#: company/api.py:281 #, fuzzy #| msgid "Supplier Part Pricing" msgid "Supplier Part is Active" msgstr "供应商商品价格" -#: company/api.py:321 +#: company/api.py:285 #, fuzzy #| msgid "Internal Prices" msgid "Internal Part is Active" msgstr "内部价格" -#: company/api.py:325 +#: company/api.py:289 #, fuzzy #| msgid "Supplier List" msgid "Supplier is Active" msgstr "供应商列表" -#: company/models.py:114 +#: company/models.py:100 company/models.py:365 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:822 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "公司" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "公司" + +#: company/models.py:117 msgid "Company description" msgstr "公司简介" -#: company/models.py:115 +#: company/models.py:118 msgid "Description of the company" msgstr "公司简介" -#: company/models.py:120 company/templates/company/company_base.html:106 +#: company/models.py:123 company/templates/company/company_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:532 msgid "Website" msgstr "网站" -#: company/models.py:120 +#: company/models.py:123 msgid "Company website URL" msgstr "公司网站" -#: company/models.py:125 +#: company/models.py:128 msgid "Phone number" msgstr "电话号码" -#: company/models.py:127 +#: company/models.py:130 msgid "Contact phone number" msgstr "联系电话" -#: company/models.py:134 +#: company/models.py:137 msgid "Contact email address" msgstr "联系人电子邮件" -#: company/models.py:139 company/templates/company/company_base.html:145 +#: company/models.py:142 company/templates/company/company_base.html:145 #: order/models.py:343 order/templates/order/order_base.html:203 #: order/templates/order/return_order_base.html:174 #: order/templates/order/sales_order_base.html:218 msgid "Contact" msgstr "联系人" -#: company/models.py:141 +#: company/models.py:144 msgid "Point of contact" msgstr "" -#: company/models.py:147 +#: company/models.py:150 msgid "Link to external company information" msgstr "链接到外部公司信息" -#: company/models.py:160 +#: company/models.py:163 #, fuzzy #| msgid "Does this company manufacture parts?" msgid "Is this company active?" msgstr "该公司制造商品吗?" -#: company/models.py:165 +#: company/models.py:168 msgid "is customer" msgstr "是客户" -#: company/models.py:166 +#: company/models.py:169 msgid "Do you sell items to this company?" msgstr "您是否向该公司出售商品?" -#: company/models.py:171 +#: company/models.py:174 msgid "is supplier" msgstr "是供应商" -#: company/models.py:172 +#: company/models.py:175 msgid "Do you purchase items from this company?" msgstr "您是否从该公司采购商品?" -#: company/models.py:177 +#: company/models.py:180 msgid "is manufacturer" msgstr "是制造商" -#: company/models.py:178 +#: company/models.py:181 msgid "Does this company manufacture parts?" msgstr "该公司制造商品吗?" -#: company/models.py:186 +#: company/models.py:189 msgid "Default currency used for this company" msgstr "该公司使用的默认货币" -#: company/models.py:273 company/models.py:382 -#: company/templates/company/company_base.html:8 -#: company/templates/company/company_base.html:12 stock/api.py:812 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 -msgid "Company" -msgstr "公司" - -#: company/models.py:383 +#: company/models.py:366 #, fuzzy #| msgid "Delete Company" msgid "Select company" msgstr "删除该公司" -#: company/models.py:388 +#: company/models.py:371 #, fuzzy #| msgid "Address" msgid "Address title" msgstr "地址" -#: company/models.py:389 +#: company/models.py:372 msgid "Title describing the address entry" msgstr "" -#: company/models.py:395 +#: company/models.py:378 #, fuzzy #| msgid "Company address" msgid "Primary address" msgstr "公司地址" -#: company/models.py:396 +#: company/models.py:379 #, fuzzy #| msgid "Contact email address" msgid "Set as primary address" msgstr "联系人电子邮件" -#: company/models.py:401 templates/js/translated/company.js:914 +#: company/models.py:384 templates/js/translated/company.js:914 #: templates/js/translated/company.js:971 msgid "Line 1" msgstr "" -#: company/models.py:402 +#: company/models.py:385 #, fuzzy #| msgid "Address" msgid "Address line 1" msgstr "地址" -#: company/models.py:408 templates/js/translated/company.js:915 +#: company/models.py:391 templates/js/translated/company.js:915 #: templates/js/translated/company.js:977 msgid "Line 2" msgstr "" -#: company/models.py:409 +#: company/models.py:392 #, fuzzy #| msgid "Address" msgid "Address line 2" msgstr "地址" -#: company/models.py:415 company/models.py:416 +#: company/models.py:398 company/models.py:399 #: templates/js/translated/company.js:983 msgid "Postal code" msgstr "" -#: company/models.py:422 +#: company/models.py:405 msgid "City/Region" msgstr "" -#: company/models.py:423 +#: company/models.py:406 msgid "Postal code city/region" msgstr "" -#: company/models.py:429 +#: company/models.py:412 msgid "State/Province" msgstr "" -#: company/models.py:430 +#: company/models.py:413 msgid "State or province" msgstr "" -#: company/models.py:436 templates/js/translated/company.js:1001 +#: company/models.py:419 templates/js/translated/company.js:1001 msgid "Country" msgstr "" -#: company/models.py:437 +#: company/models.py:420 #, fuzzy #| msgid "Address" msgid "Address country" msgstr "地址" -#: company/models.py:443 +#: company/models.py:426 msgid "Courier shipping notes" msgstr "" -#: company/models.py:444 +#: company/models.py:427 msgid "Notes for shipping courier" msgstr "" -#: company/models.py:450 +#: company/models.py:433 #, fuzzy #| msgid "Internal company name" msgid "Internal shipping notes" msgstr "内部公司名称" -#: company/models.py:451 +#: company/models.py:434 msgid "Shipping notes for internal use" msgstr "" -#: company/models.py:458 +#: company/models.py:441 #, fuzzy #| msgid "Description (optional)" msgid "Link to address information (external)" msgstr "描述 (可选)" -#: company/models.py:489 company/models.py:792 stock/models.py:768 -#: stock/serializers.py:395 stock/templates/stock/item_base.html:142 +#: company/models.py:463 company/models.py:574 company/models.py:792 +#: 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:475 company/models.py:760 stock/models.py:766 +#: stock/serializers.py:422 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:491 company/models.py:794 +#: company/models.py:477 company/models.py:762 msgid "Select part" msgstr "选择商品" -#: company/models.py:500 company/templates/company/company_base.html:82 +#: company/models.py:486 company/templates/company/company_base.html:82 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:530 +#: company/templates/company/supplier_part.html:145 part/serializers.py:525 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:507 #: templates/js/translated/company.js:1118 @@ -4133,156 +4228,158 @@ msgstr "选择商品" msgid "Manufacturer" msgstr "制造商" -#: company/models.py:501 +#: company/models.py:487 msgid "Select manufacturer" msgstr "选择制造商" -#: company/models.py:507 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:540 +#: company/models.py:493 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:535 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1117 #: templates/js/translated/company.js:1312 -#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1800 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1801 #: templates/js/translated/purchase_order.js:1851 #: templates/js/translated/purchase_order.js:2053 msgid "MPN" msgstr "" -#: company/models.py:508 +#: company/models.py:494 msgid "Manufacturer Part Number" msgstr "制造商商品编号" -#: company/models.py:515 +#: company/models.py:501 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:524 +#: company/models.py:510 msgid "Manufacturer part description" msgstr "制造商商品描述" -#: company/models.py:581 company/models.py:608 company/models.py:824 -#: 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:615 +#: company/models.py:581 msgid "Parameter name" msgstr "参数名称" -#: company/models.py:621 report/templates/report/inventree_test_report.html:104 -#: stock/models.py:2429 templates/js/translated/company.js:1166 -#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1492 +#: company/models.py:587 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2418 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1493 #: templates/js/translated/stock.js:1522 msgid "Value" msgstr "数值" -#: company/models.py:622 +#: company/models.py:588 msgid "Parameter value" msgstr "参数值" -#: company/models.py:629 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1052 part/models.py:3666 +#: company/models.py:595 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1045 part/models.py:3646 #: part/templates/part/part_base.html:284 -#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1511 -#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2369 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1512 +#: templates/js/translated/part.js:1616 templates/js/translated/part.js:2370 msgid "Units" msgstr "单位" -#: company/models.py:630 +#: company/models.py:596 msgid "Parameter units" msgstr "参数单位" -#: company/models.py:732 +#: company/models.py:648 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:452 +#: stock/models.py:777 stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "供应商商品" + +#: company/models.py:700 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:739 +#: company/models.py:707 #, fuzzy #| msgid "Quantity must be greater than zero" msgid "Pack units must be greater than zero" msgstr "数量必须大于0" -#: company/models.py:753 +#: company/models.py:721 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:802 company/templates/company/company_base.html:87 +#: company/models.py:770 company/templates/company/company_base.html:87 #: company/templates/company/supplier_part.html:129 order/models.py:486 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:514 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:509 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:511 -#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1768 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1769 #: templates/js/translated/pricing.js:498 #: templates/js/translated/purchase_order.js:1689 #: templates/js/translated/table_filters.js:804 msgid "Supplier" msgstr "供应商" -#: company/models.py:803 +#: company/models.py:771 msgid "Select supplier" msgstr "选择供应商" -#: company/models.py:809 part/serializers.py:525 +#: company/models.py:777 part/serializers.py:520 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:815 +#: company/models.py:783 #, fuzzy #| msgid "Delete supplier part" msgid "Is this supplier part active?" msgstr "删除供应商商品" -#: company/models.py:825 +#: company/models.py:793 msgid "Select manufacturer part" msgstr "选择制造商商品" -#: company/models.py:832 +#: company/models.py:800 msgid "URL for external supplier part link" msgstr "外部供货商商品链接URL" -#: company/models.py:841 +#: company/models.py:809 msgid "Supplier part description" msgstr "供应商商品描述" -#: company/models.py:848 company/templates/company/supplier_part.html:187 -#: part/admin.py:420 part/models.py:4113 part/templates/part/upload_bom.html:59 +#: company/models.py:816 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4093 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_purchase_order_report.html:32 #: report/templates/report/inventree_return_order_report.html:27 #: report/templates/report/inventree_sales_order_report.html:32 #: report/templates/report/inventree_stock_location_report.html:105 -#: stock/serializers.py:708 +#: stock/serializers.py:710 msgid "Note" msgstr "备注" -#: company/models.py:857 part/models.py:2010 +#: company/models.py:825 part/models.py:2003 msgid "base cost" msgstr "" -#: company/models.py:858 part/models.py:2011 +#: company/models.py:826 part/models.py:2004 msgid "Minimum charge (e.g. stocking fee)" msgstr "最低收费(例如库存费)" -#: company/models.py:865 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:799 stock/serializers.py:1479 +#: company/models.py:833 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:797 stock/serializers.py:1475 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1646 #: templates/js/translated/stock.js:2424 msgid "Packaging" msgstr "打包" -#: company/models.py:866 +#: company/models.py:834 msgid "Part packaging" msgstr "商品打包" -#: company/models.py:871 templates/js/translated/company.js:1651 -#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: company/models.py:839 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:311 #: templates/js/translated/purchase_order.js:841 #: templates/js/translated/purchase_order.js:1103 @@ -4291,35 +4388,35 @@ msgstr "商品打包" msgid "Pack Quantity" msgstr "" -#: company/models.py:873 +#: company/models.py:841 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:892 part/models.py:2017 +#: company/models.py:860 part/models.py:2010 msgid "multiple" msgstr "" -#: company/models.py:893 +#: company/models.py:861 msgid "Order multiple" msgstr "" -#: company/models.py:905 +#: company/models.py:873 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:911 +#: company/models.py:879 msgid "Availability Updated" msgstr "" -#: company/models.py:912 +#: company/models.py:880 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:163 +#: company/serializers.py:161 msgid "Default currency used for this supplier" msgstr "该公司使用的默认货币" -#: company/serializers.py:381 part/admin.py:126 +#: company/serializers.py:357 part/admin.py:126 #: part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1689 #: templates/js/translated/table_filters.js:355 @@ -4331,7 +4428,7 @@ msgstr "" #: templates/js/translated/company.js:1287 #: templates/js/translated/company.js:1575 #: templates/js/translated/model_renderers.js:312 -#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +#: templates/js/translated/part.js:815 templates/js/translated/part.js:1219 msgid "Inactive" msgstr "" @@ -4370,7 +4467,7 @@ msgstr "删除该公司" #: report/templates/report/inventree_purchase_order_report.html:40 #: report/templates/report/inventree_sales_order_report.html:40 #: report/templates/report/inventree_test_report.html:84 -#: report/templates/report/inventree_test_report.html:163 +#: report/templates/report/inventree_test_report.html:162 #, fuzzy #| msgid "Part name" msgid "Part image" @@ -4391,10 +4488,10 @@ msgstr "从 URL 下载图片" msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:92 order/models.py:940 -#: order/models.py:2068 order/templates/order/return_order_base.html:131 -#: order/templates/order/sales_order_base.html:148 stock/models.py:821 -#: stock/models.py:822 stock/serializers.py:1229 +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2032 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:819 +#: stock/models.py:820 stock/serializers.py:1225 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:503 @@ -4619,7 +4716,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/serializers.py:836 +#: part/admin.py:122 part/serializers.py:832 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 #: templates/navbar.html:48 msgid "Suppliers" @@ -4639,8 +4736,8 @@ msgstr "参数" msgid "New Parameter" msgstr "新建参数" -#: company/templates/company/manufacturer_part.html:206 -#: templates/js/translated/part.js:1422 +#: company/templates/company/manufacturer_part.html:196 +#: templates/js/translated/part.js:1423 msgid "Add Parameter" msgstr "添加参数" @@ -4672,15 +4769,6 @@ msgstr "联系人" msgid "Addresses" msgstr "地址" -#: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 order/api.py:452 -#: stock/models.py:779 stock/templates/stock/item_base.html:233 -#: templates/js/translated/company.js:1600 -#: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2280 -msgid "Supplier Part" -msgstr "供应商商品" - #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1526 msgid "Supplier part actions" @@ -4723,8 +4811,8 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:524 -#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: part/bom.py:311 part/serializers.py:519 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1787 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1850 #: templates/js/translated/purchase_order.js:2028 @@ -4736,12 +4824,12 @@ msgid "Supplier Part Stock" msgstr "供货商商品库存" #: company/templates/company/supplier_part.html:209 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:206 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:207 msgid "Create new stock item" msgstr "" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:207 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 #: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" @@ -4773,15 +4861,15 @@ msgid "Update Part Availability" msgstr "" #: company/templates/company/supplier_part_sidebar.html:5 -#: part/serializers.py:835 part/stocktake.py:223 +#: part/serializers.py:831 part/stocktake.py:224 #: part/templates/part/category.html:183 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:916 stock/serializers.py:1080 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:918 stock/serializers.py:1091 #: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:191 #: stock/templates/stock/location.html:203 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1061 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:206 msgid "Stock Items" @@ -4808,10 +4896,6 @@ msgstr "客户信息" 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 "新建公司信息" @@ -4836,7 +4920,7 @@ msgstr "要生产的项目数量" msgid "Connected" msgstr "连接错误" -#: machine/machine_types/label_printer.py:235 order/api.py:1515 +#: machine/machine_types/label_printer.py:235 order/api.py:1467 #: templates/js/translated/sales_order.js:1078 msgid "Unknown" msgstr "" @@ -4939,7 +5023,7 @@ msgstr "" msgid "Config type" msgstr "" -#: order/admin.py:30 order/models.py:89 +#: order/admin.py:30 order/models.py:90 #: report/templates/report/inventree_purchase_order_report.html:31 #: report/templates/report/inventree_sales_order_report.html:31 #: templates/js/translated/order.js:327 @@ -4948,30 +5032,30 @@ msgstr "" msgid "Total Price" msgstr "" -#: order/api.py:161 order/serializers.py:91 +#: order/api.py:157 order/serializers.py:90 #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:122 msgid "Order Status" msgstr "" -#: order/api.py:165 templates/js/translated/table_filters.js:194 +#: order/api.py:161 templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 msgid "Has Pricing" msgstr "" -#: order/api.py:240 +#: order/api.py:236 msgid "No matching purchase order found" msgstr "" -#: order/api.py:437 order/api.py:817 order/models.py:1431 order/models.py:1540 -#: order/models.py:1586 order/models.py:1700 order/models.py:1854 -#: order/models.py:2267 order/models.py:2318 +#: order/api.py:435 order/api.py:801 order/models.py:1395 order/models.py:1504 +#: order/models.py:1550 order/models.py:1664 order/models.py:1818 +#: order/models.py:2231 order/models.py:2282 #: templates/js/translated/sales_order.js:1524 msgid "Order" msgstr "" -#: order/api.py:441 order/api.py:838 +#: order/api.py:439 order/api.py:822 #, fuzzy #| msgid "Order Code" msgid "Order Complete" @@ -4983,13 +5067,13 @@ msgstr "订单编码" msgid "Order Pending" msgstr "待定" -#: order/api.py:1509 order/models.py:380 order/models.py:1432 -#: order/models.py:1541 order/templates/order/order_base.html:9 +#: order/api.py:1461 order/models.py:380 order/models.py:1396 +#: order/models.py:1505 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_purchase_order_report.html:14 -#: stock/serializers.py:119 stock/templates/stock/item_base.html:176 +#: stock/serializers.py:118 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/part.js:1746 templates/js/translated/pricing.js:804 #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1673 @@ -4997,8 +5081,8 @@ msgstr "待定" msgid "Purchase Order" msgstr "" -#: order/api.py:1513 order/models.py:2017 order/models.py:2268 -#: order/models.py:2319 order/templates/order/return_order_base.html:9 +#: order/api.py:1465 order/models.py:1981 order/models.py:2232 +#: order/models.py:2283 order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report.html:13 #: templates/js/translated/return_order.js:280 @@ -5008,19 +5092,19 @@ msgstr "" msgid "Return Order" msgstr "已退回" -#: order/models.py:90 +#: order/models.py:91 #, fuzzy #| msgid "User or group responsible for this order" msgid "Total price for this order" msgstr "负责此订单的用户或群组" -#: order/models.py:95 order/serializers.py:71 +#: order/models.py:96 order/serializers.py:70 #, fuzzy #| msgid "Currency" msgid "Order Currency" msgstr "货币" -#: order/models.py:98 order/serializers.py:72 +#: order/models.py:99 order/serializers.py:71 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -5042,7 +5126,7 @@ msgstr "描述 (可选)" msgid "Select project code for this order" msgstr "负责此订单的用户或群组" -#: order/models.py:303 order/models.py:1337 order/models.py:1753 +#: order/models.py:303 order/models.py:1301 order/models.py:1717 msgid "Link to external page" msgstr "" @@ -5070,11 +5154,11 @@ msgstr "此构建订单的优先级" msgid "Company address for this order" msgstr "负责此订单的用户或群组" -#: order/models.py:464 order/models.py:929 +#: order/models.py:464 order/models.py:927 msgid "Order reference" msgstr "" -#: order/models.py:472 order/models.py:953 +#: order/models.py:472 order/models.py:951 msgid "Purchase order status" msgstr "" @@ -5095,15 +5179,15 @@ msgstr "" msgid "received by" msgstr "" -#: order/models.py:514 order/models.py:2094 +#: order/models.py:514 order/models.py:2058 msgid "Issue Date" msgstr "" -#: order/models.py:515 order/models.py:2095 +#: order/models.py:515 order/models.py:2059 msgid "Date order was issued" msgstr "" -#: order/models.py:522 order/models.py:2102 +#: order/models.py:522 order/models.py:2066 msgid "Date order was completed" msgstr "" @@ -5115,102 +5199,102 @@ msgstr "" msgid "Quantity must be a positive number" msgstr "数量必须大于0" -#: order/models.py:941 +#: order/models.py:939 msgid "Company to which the items are being sold" msgstr "向其出售该商品的公司" -#: order/models.py:964 order/models.py:2087 +#: order/models.py:962 order/models.py:2051 msgid "Customer Reference " msgstr "" -#: order/models.py:965 order/models.py:2088 +#: order/models.py:963 order/models.py:2052 msgid "Customer order reference code" msgstr "" -#: order/models.py:969 order/models.py:1707 +#: order/models.py:967 order/models.py:1671 #: templates/js/translated/sales_order.js:879 #: templates/js/translated/sales_order.js:1060 msgid "Shipment Date" msgstr "" -#: order/models.py:978 +#: order/models.py:976 msgid "shipped by" msgstr "" -#: order/models.py:1027 +#: order/models.py:1025 #, fuzzy #| msgid "Build output is already completed" msgid "Order is already complete" msgstr "生产产出已完成" -#: order/models.py:1030 +#: order/models.py:1028 #, fuzzy #| msgid "Order cannot be cancelled" msgid "Order is already cancelled" msgstr "无法取消订单" -#: order/models.py:1034 +#: order/models.py:1032 #, fuzzy #| msgid "Build Order is ready to mark as completed" msgid "Only an open order can be marked as complete" msgstr "构建订单已准备好标记为已完成" -#: order/models.py:1038 +#: order/models.py:1036 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:1043 +#: order/models.py:1041 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1309 +#: order/models.py:1273 msgid "Item quantity" msgstr "" -#: order/models.py:1326 +#: order/models.py:1290 msgid "Line item reference" msgstr "" -#: order/models.py:1333 +#: order/models.py:1297 msgid "Line item notes" msgstr "" -#: order/models.py:1345 +#: order/models.py:1309 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1366 +#: order/models.py:1330 #, fuzzy #| msgid "Description (optional)" msgid "Line item description (optional)" msgstr "描述 (可选)" -#: order/models.py:1372 +#: order/models.py:1336 msgid "Context" msgstr "" -#: order/models.py:1373 +#: order/models.py:1337 msgid "Additional context for this line" msgstr "" -#: order/models.py:1383 +#: order/models.py:1347 msgid "Unit price" msgstr "" -#: order/models.py:1416 +#: order/models.py:1380 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1423 +#: order/models.py:1387 msgid "deleted" msgstr "" -#: order/models.py:1451 +#: order/models.py:1415 msgid "Supplier part" msgstr "供应商商品" -#: order/models.py:1458 order/templates/order/order_base.html:196 -#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: order/models.py:1422 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1870 templates/js/translated/part.js:1902 #: templates/js/translated/purchase_order.js:1306 #: templates/js/translated/purchase_order.js:2169 #: templates/js/translated/return_order.js:763 @@ -5219,202 +5303,202 @@ msgstr "供应商商品" msgid "Received" msgstr "" -#: order/models.py:1459 +#: order/models.py:1423 msgid "Number of items received" msgstr "" -#: order/models.py:1467 stock/models.py:940 stock/serializers.py:529 +#: order/models.py:1431 stock/models.py:938 stock/serializers.py:556 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2311 msgid "Purchase Price" msgstr "采购价格" -#: order/models.py:1468 +#: order/models.py:1432 msgid "Unit purchase price" msgstr "" -#: order/models.py:1483 +#: order/models.py:1447 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1574 +#: order/models.py:1538 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1579 +#: order/models.py:1543 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1605 part/templates/part/part_pricing.html:107 +#: order/models.py:1569 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:1606 +#: order/models.py:1570 msgid "Unit sale price" msgstr "" -#: order/models.py:1615 order/status_codes.py:43 +#: order/models.py:1579 order/status_codes.py:43 #: templates/js/translated/sales_order.js:1559 #: templates/js/translated/sales_order.js:1680 #: templates/js/translated/sales_order.js:1993 msgid "Shipped" msgstr "已发货" -#: order/models.py:1616 +#: order/models.py:1580 msgid "Shipped quantity" msgstr "" -#: order/models.py:1708 +#: order/models.py:1672 msgid "Date of shipment" msgstr "" -#: order/models.py:1714 templates/js/translated/sales_order.js:1072 +#: order/models.py:1678 templates/js/translated/sales_order.js:1072 msgid "Delivery Date" msgstr "" -#: order/models.py:1715 +#: order/models.py:1679 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1723 +#: order/models.py:1687 msgid "Checked By" msgstr "" -#: order/models.py:1724 +#: order/models.py:1688 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1731 order/models.py:1944 order/serializers.py:1354 -#: order/serializers.py:1464 templates/js/translated/model_renderers.js:454 +#: order/models.py:1695 order/models.py:1908 order/serializers.py:1342 +#: order/serializers.py:1452 templates/js/translated/model_renderers.js:454 msgid "Shipment" msgstr "" -#: order/models.py:1732 +#: order/models.py:1696 msgid "Shipment number" msgstr "" -#: order/models.py:1740 +#: order/models.py:1704 msgid "Tracking Number" msgstr "" -#: order/models.py:1741 +#: order/models.py:1705 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1748 +#: order/models.py:1712 msgid "Invoice Number" msgstr "" -#: order/models.py:1749 +#: order/models.py:1713 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1769 +#: order/models.py:1733 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1772 +#: order/models.py:1736 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1890 order/models.py:1892 +#: order/models.py:1854 order/models.py:1856 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1899 +#: order/models.py:1863 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1902 +#: order/models.py:1866 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1905 +#: order/models.py:1869 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1924 order/serializers.py:1231 +#: order/models.py:1888 order/serializers.py:1219 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1927 +#: order/models.py:1891 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1928 plugin/base/barcodes/api.py:481 +#: order/models.py:1892 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1936 +#: order/models.py:1900 msgid "Line" msgstr "" -#: order/models.py:1945 +#: order/models.py:1909 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1958 order/models.py:2275 +#: order/models.py:1922 order/models.py:2239 #: templates/js/translated/return_order.js:721 msgid "Item" msgstr "" -#: order/models.py:1959 +#: order/models.py:1923 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1968 +#: order/models.py:1932 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:2057 +#: order/models.py:2021 #, fuzzy #| msgid "Build Order Reference" msgid "Return Order reference" msgstr "相关生产订单" -#: order/models.py:2069 +#: order/models.py:2033 #, fuzzy #| msgid "Company from which the items are being ordered" msgid "Company from which items are being returned" msgstr "订购该商品的公司" -#: order/models.py:2081 +#: order/models.py:2045 msgid "Return order status" msgstr "" -#: order/models.py:2260 +#: order/models.py:2224 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:2276 +#: order/models.py:2240 #, fuzzy #| msgid "Returned from customer" msgid "Select item to return from customer" msgstr "从客户退货" -#: order/models.py:2282 +#: order/models.py:2246 msgid "Received Date" msgstr "" -#: order/models.py:2283 +#: order/models.py:2247 msgid "The date this this return item was received" msgstr "" -#: order/models.py:2294 templates/js/translated/return_order.js:732 +#: order/models.py:2258 templates/js/translated/return_order.js:732 #: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:2295 +#: order/models.py:2259 msgid "Outcome for this line item" msgstr "" -#: order/models.py:2302 +#: order/models.py:2266 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:80 order/templates/order/po_sidebar.html:5 +#: order/serializers.py:79 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_purchase_order_report.html:22 @@ -5423,175 +5507,175 @@ msgstr "" msgid "Line Items" msgstr "" -#: order/serializers.py:84 +#: order/serializers.py:83 #, fuzzy #| msgid "Completed items" msgid "Completed Lines" msgstr "已完成项目" -#: order/serializers.py:287 +#: order/serializers.py:286 msgid "Order cannot be cancelled" msgstr "无法取消订单" -#: order/serializers.py:302 order/serializers.py:1247 +#: order/serializers.py:301 order/serializers.py:1235 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:312 order/serializers.py:1257 +#: order/serializers.py:311 order/serializers.py:1245 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:440 +#: order/serializers.py:439 msgid "Order is not open" msgstr "" -#: order/serializers.py:461 +#: order/serializers.py:460 #, fuzzy #| msgid "Part Pricing" msgid "Auto Pricing" msgstr "商品价格" -#: order/serializers.py:463 +#: order/serializers.py:462 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:473 +#: order/serializers.py:472 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:478 #, fuzzy #| msgid "Select Stock Items" msgid "Merge Items" msgstr "选择库存项" -#: order/serializers.py:481 +#: order/serializers.py:480 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:499 +#: order/serializers.py:498 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:502 +#: order/serializers.py:501 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:510 +#: order/serializers.py:509 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:511 +#: order/serializers.py:510 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:550 order/serializers.py:1325 +#: order/serializers.py:549 order/serializers.py:1313 msgid "Line Item" msgstr "" -#: order/serializers.py:556 +#: order/serializers.py:555 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:566 order/serializers.py:674 order/serializers.py:1680 +#: order/serializers.py:565 order/serializers.py:673 order/serializers.py:1657 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:582 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:581 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:590 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:589 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:601 templates/js/translated/barcode.js:52 +#: order/serializers.py:600 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "条形码" -#: order/serializers.py:602 +#: order/serializers.py:601 #, fuzzy #| msgid "Scan Barcode" msgid "Scanned barcode" msgstr "扫描条形码" -#: order/serializers.py:618 +#: order/serializers.py:617 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:642 +#: order/serializers.py:641 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:690 order/serializers.py:1696 +#: order/serializers.py:689 order/serializers.py:1673 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:706 +#: order/serializers.py:705 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:717 +#: order/serializers.py:716 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1074 +#: order/serializers.py:1062 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1134 +#: order/serializers.py:1122 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1195 order/serializers.py:1334 +#: order/serializers.py:1183 order/serializers.py:1322 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1214 +#: order/serializers.py:1202 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1344 +#: order/serializers.py:1332 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1366 order/serializers.py:1472 +#: order/serializers.py:1354 order/serializers.py:1460 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1369 order/serializers.py:1475 +#: order/serializers.py:1357 order/serializers.py:1463 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1416 +#: order/serializers.py:1404 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1423 +#: order/serializers.py:1411 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1650 +#: order/serializers.py:1627 msgid "Return order line item" msgstr "" -#: order/serializers.py:1656 +#: order/serializers.py:1633 #, fuzzy #| msgid "Build output does not match Build Order" msgid "Line item does not match return order" msgstr "生产产出与订单不匹配" -#: order/serializers.py:1659 +#: order/serializers.py:1636 #, fuzzy #| msgid "This build output has already been completed" msgid "Line item has already been received" msgstr "此生产产出已经完成" -#: order/serializers.py:1688 +#: order/serializers.py:1665 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1766 +#: order/serializers.py:1743 #, fuzzy #| msgid "Uses default currency" msgid "Line price currency" @@ -5939,7 +6023,7 @@ msgstr "" #: 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/part.js:1073 #: templates/js/translated/purchase_order.js:1752 #: templates/js/translated/return_order.js:380 #: templates/js/translated/sales_order.js:891 @@ -6049,34 +6133,34 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:406 part/models.py:3964 part/stocktake.py:218 -#: stock/admin.py:153 +#: part/admin.py:39 part/admin.py:398 part/models.py:3944 part/stocktake.py:219 +#: stock/admin.py:152 msgid "Part ID" msgstr "商品ID" -#: part/admin.py:41 part/admin.py:413 part/models.py:3965 part/stocktake.py:219 -#: stock/admin.py:157 +#: part/admin.py:41 part/admin.py:405 part/models.py:3945 part/stocktake.py:220 +#: stock/admin.py:156 msgid "Part Name" msgstr "" -#: part/admin.py:45 part/stocktake.py:220 +#: part/admin.py:45 part/stocktake.py:221 msgid "Part Description" msgstr "" -#: part/admin.py:48 part/models.py:947 part/templates/part/part_base.html:269 +#: part/admin.py:48 part/models.py:940 part/templates/part/part_base.html:269 #: report/templates/report/inventree_stock_location_report.html:103 -#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2340 +#: templates/js/translated/part.js:1227 templates/js/translated/part.js:2341 #: templates/js/translated/stock.js:2036 msgid "IPN" msgstr "" -#: part/admin.py:50 part/models.py:956 part/templates/part/part_base.html:277 -#: report/models.py:161 templates/js/translated/part.js:1231 -#: templates/js/translated/part.js:2346 +#: part/admin.py:50 part/models.py:949 part/templates/part/part_base.html:277 +#: report/models.py:162 templates/js/translated/part.js:1232 +#: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" -#: part/admin.py:53 part/admin.py:319 part/models.py:929 +#: part/admin.py:53 part/admin.py:319 part/models.py:922 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "关键词" @@ -6087,11 +6171,11 @@ msgstr "关键词" msgid "Part Image" msgstr "商品名称" -#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221 +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:222 msgid "Category ID" msgstr "类别 ID" -#: part/admin.py:67 part/admin.py:304 part/stocktake.py:222 +#: part/admin.py:67 part/admin.py:304 part/stocktake.py:223 msgid "Category Name" msgstr "" @@ -6103,11 +6187,11 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:81 part/models.py:915 part/templates/part/part_base.html:177 +#: part/admin.py:81 part/models.py:908 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:84 part/models.py:1043 part/templates/part/part_base.html:203 +#: part/admin.py:84 part/models.py:1036 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "最低库存" @@ -6115,26 +6199,26 @@ msgstr "最低库存" 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 +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:235 +#: templates/js/translated/part.js:715 templates/js/translated/part.js:2153 msgid "Building" msgstr "" -#: part/admin.py:155 part/models.py:3123 part/models.py:3137 -#: templates/js/translated/part.js:969 +#: part/admin.py:155 part/models.py:3088 part/models.py:3102 +#: templates/js/translated/part.js:970 msgid "Minimum Cost" msgstr "" -#: part/admin.py:158 part/models.py:3130 part/models.py:3144 -#: templates/js/translated/part.js:979 +#: part/admin.py:158 part/models.py:3095 part/models.py:3109 +#: templates/js/translated/part.js:980 msgid "Maximum Cost" msgstr "" -#: part/admin.py:308 part/admin.py:395 stock/admin.py:58 stock/admin.py:211 +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 msgid "Parent ID" msgstr "" -#: part/admin.py:312 part/admin.py:402 stock/admin.py:62 +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 msgid "Parent Name" msgstr "" @@ -6143,149 +6227,161 @@ msgstr "" msgid "Category Path" msgstr "类别路径" -#: part/admin.py:325 part/models.py:393 part/serializers.py:117 -#: part/serializers.py:272 part/serializers.py:391 +#: part/admin.py:325 part/models.py:396 part/serializers.py:124 +#: part/serializers.py:267 part/serializers.py:386 #: 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:2803 templates/js/translated/search.js:130 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:203 msgid "Parts" msgstr "商品" -#: part/admin.py:386 +#: part/admin.py:378 msgid "BOM Level" msgstr "" -#: part/admin.py:389 +#: part/admin.py:381 msgid "BOM Item ID" msgstr "" -#: part/admin.py:399 +#: part/admin.py:391 msgid "Parent IPN" msgstr "" -#: part/admin.py:410 part/models.py:3966 +#: part/admin.py:402 part/models.py:3946 msgid "Part IPN" msgstr "" -#: part/admin.py:423 part/serializers.py:1278 +#: part/admin.py:415 part/serializers.py:1274 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:428 part/serializers.py:1293 +#: part/admin.py:420 part/serializers.py:1289 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:110 +#: part/api.py:104 msgid "Starred" msgstr "" -#: part/api.py:112 +#: part/api.py:106 msgid "Filter by starred categories" msgstr "" -#: part/api.py:129 stock/api.py:318 +#: part/api.py:123 stock/api.py:312 msgid "Depth" msgstr "" -#: part/api.py:129 +#: part/api.py:123 msgid "Filter by category depth" msgstr "" -#: part/api.py:147 stock/api.py:336 +#: part/api.py:141 stock/api.py:330 +#, fuzzy +#| msgid "Levels" +msgid "Top Level" +msgstr "等级" + +#: part/api.py:143 +#, fuzzy +#| msgid "Create new part category" +msgid "Filter by top-level categories" +msgstr "新建商品类别" + +#: part/api.py:156 stock/api.py:345 msgid "Cascade" msgstr "" -#: part/api.py:149 +#: part/api.py:158 msgid "Include sub-categories in filtered results" msgstr "" -#: part/api.py:169 +#: part/api.py:179 templates/js/translated/part.js:308 #, fuzzy #| msgid "parent" msgid "Parent" msgstr "上级项" -#: part/api.py:171 +#: part/api.py:181 #, fuzzy #| msgid "Create new part category" msgid "Filter by parent category" msgstr "新建商品类别" -#: part/api.py:204 +#: part/api.py:214 msgid "Exclude Tree" msgstr "" -#: part/api.py:206 +#: part/api.py:216 #, fuzzy #| msgid "Exclude stock items from this selected location" msgid "Exclude sub-categories under the specified category" msgstr "从该选定的仓储地点排除库存项" -#: part/api.py:455 +#: part/api.py:449 #, fuzzy #| msgid "Units" msgid "Has Results" msgstr "单位" -#: part/api.py:622 +#: part/api.py:616 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:640 +#: part/api.py:634 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:656 +#: part/api.py:650 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:740 +#: part/api.py:734 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:887 +#: part/api.py:881 msgid "Valid" msgstr "" -#: part/api.py:888 +#: part/api.py:882 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:894 +#: part/api.py:888 msgid "This option must be selected" msgstr "" -#: part/api.py:1111 +#: part/api.py:1105 msgid "BOM Valid" msgstr "" -#: part/api.py:1515 part/models.py:939 part/models.py:3429 part/models.py:3909 -#: part/serializers.py:406 part/serializers.py:1134 -#: part/templates/part/part_base.html:260 stock/api.py:781 +#: part/api.py:1508 part/models.py:932 part/models.py:3374 part/models.py:3889 +#: part/serializers.py:401 part/serializers.py:1130 +#: part/templates/part/part_base.html:260 stock/api.py:791 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 -#: templates/js/translated/part.js:2376 +#: templates/js/translated/part.js:2377 msgid "Category" msgstr "类别" -#: part/api.py:1803 +#: part/api.py:1796 msgid "Uses" msgstr "" -#: part/bom.py:170 part/models.py:102 part/models.py:982 +#: part/bom.py:170 part/models.py:104 part/models.py:975 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "默认仓储地点" -#: part/bom.py:171 part/serializers.py:837 +#: part/bom.py:171 part/serializers.py:833 #: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -6294,1091 +6390,1105 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:83 part/models.py:3910 part/templates/part/category.html:16 +#: part/models.py:85 part/models.py:3890 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "商品类别" -#: part/models.py:84 part/templates/part/category.html:136 +#: part/models.py:86 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:202 msgid "Part Categories" msgstr "商品类别" -#: part/models.py:103 +#: part/models.py:105 msgid "Default location for parts in this category" msgstr "此类别商品的默认仓储地点" -#: part/models.py:108 stock/models.py:173 templates/js/translated/part.js:2809 +#: part/models.py:110 stock/models.py:174 templates/js/translated/part.js:2810 #: templates/js/translated/stock.js:2772 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:110 +#: part/models.py:112 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:119 +#: part/models.py:121 msgid "Default keywords" msgstr "" -#: part/models.py:120 +#: part/models.py:122 msgid "Default keywords for parts in this category" msgstr "此类别商品的默认关键字" -#: part/models.py:126 stock/models.py:85 stock/models.py:156 +#: part/models.py:128 stock/models.py:86 stock/models.py:157 #: templates/InvenTree/settings/settings_staff_js.html:456 msgid "Icon" msgstr "" -#: part/models.py:127 stock/models.py:157 +#: part/models.py:129 stock/models.py:158 msgid "Icon (optional)" msgstr "" -#: part/models.py:149 +#: part/models.py:151 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:482 +#: part/models.py:485 #, fuzzy #| msgid "Print actions" msgid "Cannot delete this part as it is still active" msgstr "打印操作" -#: part/models.py:489 +#: part/models.py:490 msgid "Cannot delete this part as it is used in an assembly" msgstr "" -#: part/models.py:527 +#: part/models.py:528 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:575 part/models.py:582 +#: part/models.py:576 part/models.py:583 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:594 +#: part/models.py:595 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:659 +#: part/models.py:658 #, fuzzy, python-brace-format #| msgid "IPN must match regex pattern {pat}" msgid "IPN must match regex pattern {pattern}" msgstr "IPN 必须匹配正则表达式 {pat}" -#: part/models.py:739 +#: part/models.py:736 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:844 +#: part/models.py:837 msgid "Duplicate IPN not allowed in part settings" msgstr "在商品设置中不允许重复的IPN" -#: part/models.py:854 +#: part/models.py:847 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:869 +#: part/models.py:862 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:898 part/models.py:3965 +#: part/models.py:891 part/models.py:3945 msgid "Part name" msgstr "商品名称" -#: part/models.py:903 +#: part/models.py:896 msgid "Is Template" msgstr "" -#: part/models.py:904 +#: part/models.py:897 msgid "Is this part a template part?" msgstr "" -#: part/models.py:914 +#: part/models.py:907 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:922 +#: part/models.py:915 #, fuzzy #| msgid "Description (optional)" msgid "Part description (optional)" msgstr "描述 (可选)" -#: part/models.py:930 +#: part/models.py:923 msgid "Part keywords to improve visibility in search results" msgstr "提高搜索结果可见性的关键字" -#: part/models.py:940 +#: part/models.py:933 msgid "Part category" msgstr "商品类别" -#: part/models.py:948 +#: part/models.py:941 msgid "Internal Part Number" msgstr "内部商品编号" -#: part/models.py:955 +#: part/models.py:948 msgid "Part revision or version number" msgstr "商品版本号" -#: part/models.py:980 +#: part/models.py:973 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:1026 part/templates/part/part_base.html:376 +#: part/models.py:1019 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:1027 +#: part/models.py:1020 msgid "Default supplier part" msgstr "默认供应商商品" -#: part/models.py:1034 +#: part/models.py:1027 msgid "Default Expiry" msgstr "" -#: part/models.py:1035 +#: part/models.py:1028 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:1044 +#: part/models.py:1037 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:1053 +#: part/models.py:1046 msgid "Units of measure for this part" msgstr "" -#: part/models.py:1060 +#: part/models.py:1053 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1066 +#: part/models.py:1059 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1072 +#: part/models.py:1065 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1078 +#: part/models.py:1071 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1084 +#: part/models.py:1077 msgid "Can this part be sold to customers?" msgstr "此商品可以销售给客户吗?" -#: part/models.py:1088 +#: part/models.py:1081 msgid "Is this part active?" msgstr "" -#: part/models.py:1094 +#: part/models.py:1087 msgid "Is this a virtual part, such as a software product or license?" msgstr "这是一个虚拟商品,如软件产品或许可证吗?" -#: part/models.py:1100 +#: part/models.py:1093 msgid "BOM checksum" msgstr "" -#: part/models.py:1101 +#: part/models.py:1094 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1109 +#: part/models.py:1102 msgid "BOM checked by" msgstr "" -#: part/models.py:1114 +#: part/models.py:1107 msgid "BOM checked date" msgstr "" -#: part/models.py:1130 +#: part/models.py:1123 msgid "Creation User" msgstr "新建用户" -#: part/models.py:1140 +#: part/models.py:1133 #, fuzzy #| msgid "User or group responsible for this order" msgid "Owner responsible for this part" msgstr "负责此订单的用户或群组" -#: part/models.py:1145 part/templates/part/part_base.html:339 +#: part/models.py:1138 part/templates/part/part_base.html:339 #: stock/templates/stock/item_base.html:451 -#: templates/js/translated/part.js:2470 +#: templates/js/translated/part.js:2471 msgid "Last Stocktake" msgstr "" -#: part/models.py:2018 +#: part/models.py:2011 msgid "Sell multiple" msgstr "" -#: part/models.py:3037 +#: part/models.py:3002 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:3053 +#: part/models.py:3018 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:3054 +#: part/models.py:3019 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:3060 +#: part/models.py:3025 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:3061 +#: part/models.py:3026 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:3067 +#: part/models.py:3032 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:3068 +#: part/models.py:3033 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:3074 +#: part/models.py:3039 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:3075 +#: part/models.py:3040 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:3081 +#: part/models.py:3046 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:3082 +#: part/models.py:3047 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:3088 +#: part/models.py:3053 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:3089 +#: part/models.py:3054 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:3095 +#: part/models.py:3060 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:3096 +#: part/models.py:3061 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:3102 +#: part/models.py:3067 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:3103 +#: part/models.py:3068 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:3109 +#: part/models.py:3074 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:3110 +#: part/models.py:3075 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:3116 +#: part/models.py:3081 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:3117 +#: part/models.py:3082 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:3124 +#: part/models.py:3089 msgid "Override minimum cost" msgstr "" -#: part/models.py:3131 +#: part/models.py:3096 msgid "Override maximum cost" msgstr "" -#: part/models.py:3138 +#: part/models.py:3103 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:3145 +#: part/models.py:3110 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:3151 +#: part/models.py:3116 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:3152 +#: part/models.py:3117 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:3158 +#: part/models.py:3123 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:3159 +#: part/models.py:3124 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:3165 +#: part/models.py:3130 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:3166 +#: part/models.py:3131 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:3172 +#: part/models.py:3137 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:3173 +#: part/models.py:3138 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:3192 +#: part/models.py:3157 msgid "Part for stocktake" msgstr "" -#: part/models.py:3197 +#: part/models.py:3162 msgid "Item Count" msgstr "" -#: part/models.py:3198 +#: part/models.py:3163 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:3206 +#: part/models.py:3171 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:3210 part/models.py:3293 +#: part/models.py:3175 part/models.py:3258 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report.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/part.js:1086 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1731 #: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" -#: part/models.py:3211 +#: part/models.py:3176 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3219 +#: part/models.py:3184 msgid "Additional notes" msgstr "" -#: part/models.py:3229 +#: part/models.py:3194 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3235 +#: part/models.py:3200 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3236 +#: part/models.py:3201 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3242 +#: part/models.py:3207 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3243 +#: part/models.py:3208 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3299 templates/InvenTree/settings/settings_staff_js.html:529 +#: part/models.py:3264 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" msgstr "" -#: part/models.py:3300 +#: part/models.py:3265 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3305 templates/InvenTree/settings/settings_staff_js.html:536 +#: part/models.py:3270 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" msgstr "" -#: part/models.py:3306 +#: part/models.py:3271 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3316 +#: part/models.py:3281 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3478 +#: part/models.py:3423 msgid "Invalid template name - must include at least one alphanumeric character" msgstr "" -#: part/models.py:3489 -msgid "Test templates can only be created for trackable parts" -msgstr "" - -#: part/models.py:3500 -#, fuzzy -#| msgid "Attachment with this filename already exists" -msgid "Test template with the same key already exists for part" -msgstr "使用此文件名的附件已存在" - -#: part/models.py:3517 templates/js/translated/part.js:2878 -msgid "Test Name" -msgstr "" - -#: part/models.py:3518 -msgid "Enter a name for the test" -msgstr "" - -#: part/models.py:3524 -msgid "Test Key" -msgstr "" - -#: part/models.py:3525 -msgid "Simplified key for the test" -msgstr "" - -#: part/models.py:3532 -msgid "Test Description" -msgstr "" - -#: part/models.py:3533 -msgid "Enter description for this test" -msgstr "" - -#: part/models.py:3537 report/models.py:208 -#: templates/js/translated/part.js:2899 -#: templates/js/translated/table_filters.js:481 -msgid "Enabled" -msgstr "已启用" - -#: part/models.py:3537 -msgid "Is this test enabled?" -msgstr "" - -#: part/models.py:3542 templates/js/translated/part.js:2907 -#: templates/js/translated/table_filters.js:477 -msgid "Required" -msgstr "" - -#: part/models.py:3543 -msgid "Is this test required to pass?" -msgstr "" - -#: part/models.py:3548 templates/js/translated/part.js:2915 -msgid "Requires Value" -msgstr "" - -#: part/models.py:3549 -msgid "Does this test require a value when adding a test result?" -msgstr "" - -#: part/models.py:3554 templates/js/translated/part.js:2922 -msgid "Requires Attachment" -msgstr "" - -#: part/models.py:3556 -msgid "Does this test require a file attachment when adding a test result?" -msgstr "" - -#: part/models.py:3603 -msgid "Checkbox parameters cannot have units" -msgstr "" - -#: part/models.py:3608 -msgid "Checkbox parameters cannot have choices" -msgstr "" - -#: part/models.py:3628 +#: part/models.py:3444 part/models.py:3608 #, fuzzy #| msgid "Key string must be unique" msgid "Choices must be unique" msgstr "关键字必须是唯一的" -#: part/models.py:3645 +#: part/models.py:3455 +msgid "Test templates can only be created for trackable parts" +msgstr "" + +#: part/models.py:3466 +#, fuzzy +#| msgid "Attachment with this filename already exists" +msgid "Test template with the same key already exists for part" +msgstr "使用此文件名的附件已存在" + +#: part/models.py:3483 templates/js/translated/part.js:2880 +msgid "Test Name" +msgstr "" + +#: part/models.py:3484 +msgid "Enter a name for the test" +msgstr "" + +#: part/models.py:3490 +msgid "Test Key" +msgstr "" + +#: part/models.py:3491 +msgid "Simplified key for the test" +msgstr "" + +#: part/models.py:3498 +msgid "Test Description" +msgstr "" + +#: part/models.py:3499 +msgid "Enter description for this test" +msgstr "" + +#: part/models.py:3503 report/models.py:209 +#: templates/js/translated/part.js:2901 +#: templates/js/translated/table_filters.js:481 +msgid "Enabled" +msgstr "已启用" + +#: part/models.py:3503 +msgid "Is this test enabled?" +msgstr "" + +#: part/models.py:3508 templates/js/translated/part.js:2909 +#: templates/js/translated/table_filters.js:477 +msgid "Required" +msgstr "" + +#: part/models.py:3509 +msgid "Is this test required to pass?" +msgstr "" + +#: part/models.py:3514 templates/js/translated/part.js:2917 +msgid "Requires Value" +msgstr "" + +#: part/models.py:3515 +msgid "Does this test require a value when adding a test result?" +msgstr "" + +#: part/models.py:3520 templates/js/translated/part.js:2924 +msgid "Requires Attachment" +msgstr "" + +#: part/models.py:3522 +msgid "Does this test require a file attachment when adding a test result?" +msgstr "" + +#: part/models.py:3528 part/models.py:3667 templates/js/translated/part.js:1637 +msgid "Choices" +msgstr "" + +#: part/models.py:3529 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3583 +msgid "Checkbox parameters cannot have units" +msgstr "" + +#: part/models.py:3588 +msgid "Checkbox parameters cannot have choices" +msgstr "" + +#: part/models.py:3625 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3660 +#: part/models.py:3640 msgid "Parameter Name" msgstr "" -#: part/models.py:3667 +#: part/models.py:3647 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3675 +#: part/models.py:3655 msgid "Parameter description" msgstr "" -#: part/models.py:3681 templates/js/translated/part.js:1627 +#: part/models.py:3661 templates/js/translated/part.js:1628 #: templates/js/translated/table_filters.js:825 msgid "Checkbox" msgstr "" -#: part/models.py:3682 +#: part/models.py:3662 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3687 templates/js/translated/part.js:1636 -msgid "Choices" -msgstr "" - -#: part/models.py:3688 +#: part/models.py:3668 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3765 +#: part/models.py:3745 #, fuzzy #| msgid "Invalid choice for parent build" msgid "Invalid choice for parameter value" msgstr "上级生产选项无效" -#: part/models.py:3808 +#: part/models.py:3788 msgid "Parent Part" msgstr "" -#: part/models.py:3816 part/models.py:3917 part/models.py:3918 +#: part/models.py:3796 part/models.py:3897 part/models.py:3898 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "参数模板" -#: part/models.py:3821 +#: part/models.py:3801 msgid "Data" msgstr "" -#: part/models.py:3822 +#: part/models.py:3802 msgid "Parameter Value" msgstr "" -#: part/models.py:3924 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3904 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "默认值" -#: part/models.py:3925 +#: part/models.py:3905 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3963 +#: part/models.py:3943 msgid "Part ID or part name" msgstr "" -#: part/models.py:3964 +#: part/models.py:3944 msgid "Unique part ID value" msgstr "" -#: part/models.py:3966 +#: part/models.py:3946 msgid "Part IPN value" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "Level" msgstr "" -#: part/models.py:3967 +#: part/models.py:3947 msgid "BOM level" msgstr "" -#: part/models.py:4057 +#: part/models.py:4037 msgid "Select parent part" msgstr "" -#: part/models.py:4067 +#: part/models.py:4047 msgid "Sub part" msgstr "" -#: part/models.py:4068 +#: part/models.py:4048 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4079 +#: part/models.py:4059 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4085 +#: part/models.py:4065 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4091 +#: part/models.py:4071 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4098 part/templates/part/upload_bom.html:55 +#: part/models.py:4078 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4099 +#: part/models.py:4079 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4106 +#: part/models.py:4086 msgid "BOM item reference" msgstr "" -#: part/models.py:4114 +#: part/models.py:4094 msgid "BOM item notes" msgstr "" -#: part/models.py:4120 +#: part/models.py:4100 msgid "Checksum" msgstr "" -#: part/models.py:4121 +#: part/models.py:4101 msgid "BOM line checksum" msgstr "" -#: part/models.py:4126 templates/js/translated/table_filters.js:174 +#: part/models.py:4106 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4127 +#: part/models.py:4107 #, fuzzy #| msgid "Some stock items have been overallocated" msgid "This BOM item has been validated" msgstr "一些库存项已被过度分配" -#: part/models.py:4132 part/templates/part/upload_bom.html:57 +#: part/models.py:4112 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:4133 +#: part/models.py:4113 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4138 part/templates/part/upload_bom.html:56 +#: part/models.py:4118 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4139 +#: part/models.py:4119 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4224 stock/models.py:664 +#: part/models.py:4204 stock/models.py:662 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4234 part/models.py:4236 +#: part/models.py:4214 part/models.py:4216 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4376 +#: part/models.py:4354 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4397 +#: part/models.py:4375 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4410 +#: part/models.py:4388 msgid "Parent BOM item" msgstr "" -#: part/models.py:4418 +#: part/models.py:4396 msgid "Substitute part" msgstr "" -#: part/models.py:4434 +#: part/models.py:4412 msgid "Part 1" msgstr "" -#: part/models.py:4442 +#: part/models.py:4420 msgid "Part 2" msgstr "" -#: part/models.py:4443 +#: part/models.py:4421 msgid "Select Related Part" msgstr "" -#: part/models.py:4462 +#: part/models.py:4440 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4467 +#: part/models.py:4445 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:119 part/serializers.py:141 +#: part/serializers.py:118 +#, fuzzy +#| msgid "Part Category" +msgid "Parent Category" +msgstr "商品类别" + +#: part/serializers.py:119 templates/js/translated/part.js:309 +msgid "Parent part category" +msgstr "" + +#: part/serializers.py:126 part/serializers.py:148 #: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "子类别" -#: part/serializers.py:185 +#: part/serializers.py:180 msgid "Results" msgstr "" -#: part/serializers.py:186 +#: part/serializers.py:181 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:535 +#: part/serializers.py:205 part/serializers.py:223 stock/serializers.py:562 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:273 +#: part/serializers.py:268 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:397 +#: part/serializers.py:392 #, fuzzy #| msgid "Rejected" msgid "No parts selected" msgstr "已拒绝" -#: part/serializers.py:407 +#: part/serializers.py:402 #, fuzzy #| msgid "Set category" msgid "Select category" msgstr "设置类别" -#: part/serializers.py:442 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:443 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:448 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:449 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:455 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:456 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:463 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:464 #, fuzzy #| msgid "Company Notes" msgid "Copy Notes" msgstr "公司备注" -#: part/serializers.py:470 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:488 +#: part/serializers.py:483 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:490 +#: part/serializers.py:485 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:497 +#: part/serializers.py:492 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:493 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:510 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:531 +#: part/serializers.py:526 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:541 +#: part/serializers.py:536 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:548 +#: part/serializers.py:543 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:557 +#: part/serializers.py:552 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:568 +#: part/serializers.py:563 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:575 +#: part/serializers.py:570 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:834 #, fuzzy #| msgid "External Link" msgid "External Stock" msgstr "外部链接" -#: part/serializers.py:840 +#: part/serializers.py:836 #, fuzzy #| msgid "Unallocate Stock" msgid "Unallocated Stock" msgstr "未分配库存" -#: part/serializers.py:843 +#: part/serializers.py:839 #, fuzzy #| msgid "Part Stock" msgid "Variant Stock" msgstr "商品库存" -#: part/serializers.py:873 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:471 +#: part/serializers.py:869 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:472 msgid "Duplicate Part" msgstr "复制部件" -#: part/serializers.py:874 +#: part/serializers.py:870 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:880 templates/js/translated/part.js:102 +#: part/serializers.py:876 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:881 +#: part/serializers.py:877 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:887 +#: part/serializers.py:883 msgid "Supplier Information" msgstr "" -#: part/serializers.py:888 +#: part/serializers.py:884 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:896 +#: part/serializers.py:892 msgid "Copy Category Parameters" msgstr "复制类别参数" -#: part/serializers.py:897 +#: part/serializers.py:893 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:902 +#: part/serializers.py:898 #, fuzzy #| msgid "Existing barcode found" msgid "Existing Image" msgstr "发现现有条码" -#: part/serializers.py:903 +#: part/serializers.py:899 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:920 +#: part/serializers.py:916 #, fuzzy #| msgid "Part image not found" msgid "Image file does not exist" msgstr "未找到商品图像" -#: part/serializers.py:1126 +#: part/serializers.py:1122 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1136 +#: part/serializers.py:1132 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1146 +#: part/serializers.py:1142 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1152 +#: part/serializers.py:1148 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1153 +#: part/serializers.py:1149 #, fuzzy #| msgid "Exclude stock items from this selected location" msgid "Exclude stock items in external locations" msgstr "从该选定的仓储地点排除库存项" -#: part/serializers.py:1158 +#: part/serializers.py:1154 msgid "Generate Report" msgstr "" -#: part/serializers.py:1159 +#: part/serializers.py:1155 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1164 +#: part/serializers.py:1160 msgid "Update Parts" msgstr "" -#: part/serializers.py:1165 +#: part/serializers.py:1161 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1173 +#: part/serializers.py:1169 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1279 +#: part/serializers.py:1275 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1286 +#: part/serializers.py:1282 #, fuzzy #| msgid "Uses default currency" msgid "Minimum price currency" msgstr "使用默认货币" -#: part/serializers.py:1294 +#: part/serializers.py:1290 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1301 +#: part/serializers.py:1297 #, fuzzy #| msgid "Uses default currency" msgid "Maximum price currency" msgstr "使用默认货币" -#: part/serializers.py:1330 +#: part/serializers.py:1326 msgid "Update" msgstr "" -#: part/serializers.py:1331 +#: part/serializers.py:1327 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1354 +#: part/serializers.py:1350 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1361 +#: part/serializers.py:1357 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1364 +#: part/serializers.py:1360 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1731 +#: part/serializers.py:1727 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1739 +#: part/serializers.py:1735 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1740 +#: part/serializers.py:1736 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1745 +#: part/serializers.py:1741 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1746 +#: part/serializers.py:1742 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1751 +#: part/serializers.py:1747 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1752 +#: part/serializers.py:1748 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1757 +#: part/serializers.py:1753 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1758 +#: part/serializers.py:1754 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1792 +#: part/serializers.py:1788 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1793 +#: part/serializers.py:1789 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1823 +#: part/serializers.py:1819 msgid "No part column specified" msgstr "" -#: part/serializers.py:1867 +#: part/serializers.py:1863 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1870 +#: part/serializers.py:1866 msgid "No matching part found" msgstr "" -#: part/serializers.py:1873 +#: part/serializers.py:1869 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1882 +#: part/serializers.py:1878 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1890 +#: part/serializers.py:1886 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1911 +#: part/serializers.py:1907 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 +#: part/stocktake.py:225 templates/js/translated/part.js:1067 +#: templates/js/translated/part.js:1822 templates/js/translated/part.js:1878 #: templates/js/translated/purchase_order.js:2084 msgid "Total Quantity" msgstr "" -#: part/stocktake.py:225 +#: part/stocktake.py:226 msgid "Total Cost Min" msgstr "" -#: part/stocktake.py:226 +#: part/stocktake.py:227 msgid "Total Cost Max" msgstr "" -#: part/stocktake.py:284 +#: part/stocktake.py:285 msgid "Stocktake Report Available" msgstr "" -#: part/stocktake.py:285 +#: part/stocktake.py:286 msgid "A new stocktake report is available for download" msgstr "" @@ -7516,7 +7626,7 @@ 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 +#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 #: templates/js/translated/stock.js:2216 users/models.py:204 msgid "Stocktake" @@ -7616,15 +7726,15 @@ msgstr "商品供应商" msgid "Part Manufacturers" msgstr "商品制造商" -#: part/templates/part/detail.html:655 +#: part/templates/part/detail.html:657 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:663 +#: part/templates/part/detail.html:665 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:748 +#: part/templates/part/detail.html:750 msgid "Add Test Result Template" msgstr "" @@ -7705,7 +7815,7 @@ msgstr "清点商品库存" msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2292 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" msgstr "" @@ -7779,7 +7889,7 @@ 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:2443 +#: templates/js/translated/part.js:1265 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" @@ -7872,8 +7982,8 @@ msgstr "" #: 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:2391 templates/js/translated/stock.js:1059 +#: templates/js/translated/part.js:1243 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 #: templates/js/translated/stock.js:2070 templates/navbar.html:31 msgid "Stock" msgstr "库存" @@ -7918,7 +8028,7 @@ msgstr "商品价格" msgid "Edit" msgstr "编辑" -#: part/templates/part/prices.html:28 stock/admin.py:247 +#: part/templates/part/prices.html:28 stock/admin.py:251 #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1703 #: templates/js/translated/company.js:1713 @@ -7999,8 +8109,8 @@ msgstr "商品价格" #: part/templates/part/stock_count.html:7 #: templates/js/translated/model_renderers.js:227 -#: templates/js/translated/part.js:704 templates/js/translated/part.js:2140 -#: templates/js/translated/part.js:2142 +#: templates/js/translated/part.js:705 templates/js/translated/part.js:2141 +#: templates/js/translated/part.js:2143 msgid "No Stock" msgstr "" @@ -8440,7 +8550,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:308 msgid "Landscape" msgstr "" @@ -8574,64 +8684,64 @@ msgstr "打印操作" msgid "Uninstalled plugin successfully" msgstr "安装到组装中" -#: plugin/models.py:35 +#: plugin/models.py:36 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:36 +#: plugin/models.py:37 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:42 users/models.py:100 +#: plugin/models.py:43 users/models.py:100 msgid "Key" msgstr "" -#: plugin/models.py:43 +#: plugin/models.py:44 msgid "Key of plugin" msgstr "" -#: plugin/models.py:51 +#: plugin/models.py:52 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:58 plugin/serializers.py:90 +#: plugin/models.py:59 plugin/serializers.py:90 msgid "Package Name" msgstr "" -#: plugin/models.py:60 +#: plugin/models.py:61 msgid "Name of the installed package, if the plugin was installed via PIP" msgstr "" -#: plugin/models.py:65 +#: plugin/models.py:66 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:156 templates/js/translated/table_filters.js:370 +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" msgstr "" -#: plugin/models.py:165 +#: plugin/models.py:166 msgid "Sample plugin" msgstr "" -#: plugin/models.py:173 +#: plugin/models.py:174 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:181 +#: plugin/models.py:182 #, fuzzy #| msgid "Packaging" msgid "Package Plugin" msgstr "打包" -#: plugin/models.py:205 report/models.py:474 +#: plugin/models.py:220 report/models.py:475 #: templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" msgstr "" -#: plugin/models.py:252 +#: plugin/models.py:267 msgid "Method" msgstr "" @@ -8639,17 +8749,17 @@ msgstr "" msgid "No author found" msgstr "" -#: plugin/registry.py:597 +#: plugin/registry.py:534 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:600 +#: plugin/registry.py:537 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:602 +#: plugin/registry.py:539 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" @@ -8768,25 +8878,21 @@ msgstr "" msgid "Activate this plugin" msgstr "" -#: plugin/serializers.py:234 +#: plugin/serializers.py:226 #, fuzzy #| msgid "Delete location" msgid "Delete configuration" msgstr "删除仓储地" -#: plugin/serializers.py:235 +#: plugin/serializers.py:227 msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:77 +#: report/api.py:88 msgid "No valid objects provided to template" msgstr "没有为模板提供有效对象" -#: report/api.py:89 report/serializers.py:53 -msgid "Model Type" -msgstr "" - -#: report/api.py:92 report/models.py:438 report/serializers.py:98 +#: report/api.py:103 report/models.py:439 report/serializers.py:98 #: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 #: templates/js/translated/return_order.js:353 #: templates/js/translated/sales_order.js:887 @@ -8794,216 +8900,216 @@ msgstr "" msgid "Items" msgstr "" -#: report/api.py:168 +#: report/api.py:180 #, fuzzy #| msgid "Part image not found" msgid "Plugin not found" msgstr "未找到商品图像" -#: report/api.py:170 +#: report/api.py:182 #, fuzzy #| msgid "Print actions" msgid "Plugin is not active" msgstr "打印操作" -#: report/api.py:172 +#: report/api.py:184 #, fuzzy #| msgid "Part(s) must be selected before printing labels" msgid "Plugin does not support label printing" msgstr "打印标签前必须选择商品" -#: report/api.py:221 +#: report/api.py:233 #, fuzzy #| msgid "Inline label display" msgid "Invalid label dimensions" msgstr "内嵌标签显示" -#: report/api.py:236 report/api.py:316 +#: report/api.py:248 report/api.py:329 #, fuzzy #| msgid "No valid objects provided to template" msgid "No valid items provided to template" msgstr "没有为模板提供有效对象" -#: report/api.py:271 +#: report/api.py:283 #, fuzzy #| msgid "Error renaming file" msgid "Error printing label" msgstr "重命名文件出错" -#: report/api.py:362 report/api.py:398 +#: report/api.py:375 report/api.py:411 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/helpers.py:41 +#: report/helpers.py:43 msgid "A4" msgstr "" -#: report/helpers.py:42 +#: report/helpers.py:44 msgid "A3" msgstr "" -#: report/helpers.py:43 +#: report/helpers.py:45 msgid "Legal" msgstr "" -#: report/helpers.py:44 +#: report/helpers.py:46 msgid "Letter" msgstr "" -#: report/models.py:118 +#: report/models.py:119 #, fuzzy #| msgid "Attachment with this filename already exists" msgid "Template file with this name already exists" msgstr "使用此文件名的附件已存在" -#: report/models.py:150 +#: report/models.py:151 msgid "Template name" msgstr "" -#: report/models.py:156 +#: report/models.py:157 #, fuzzy #| msgid "Company description" msgid "Template description" msgstr "公司简介" -#: report/models.py:162 +#: report/models.py:163 msgid "Revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Filename Pattern" msgstr "文件名样式" -#: report/models.py:203 +#: report/models.py:204 msgid "Pattern for generating filenames" msgstr "" -#: report/models.py:208 +#: report/models.py:209 #, fuzzy #| msgid "Label template is enabled" msgid "Template is enabled" msgstr "标签模板已启用" -#: report/models.py:214 +#: report/models.py:215 #, fuzzy #| msgid "Part Parameter Templates" msgid "Target model type for template" msgstr "商品参数模板" -#: report/models.py:234 +#: report/models.py:235 msgid "Filters" msgstr "筛选器" -#: report/models.py:235 +#: report/models.py:236 #, fuzzy #| msgid "Query filters (comma-separated list of key=value pairs)," msgid "Template query filters (comma-separated list of key=value pairs)" msgstr "查询筛选器 (逗号分隔的键值对列表)" -#: report/models.py:294 report/models.py:361 +#: report/models.py:295 report/models.py:362 #, fuzzy #| msgid "Template" msgid "Template file" msgstr "模板" -#: report/models.py:302 +#: report/models.py:303 #, fuzzy #| msgid "Default page size for PDF reports" msgid "Page size for PDF reports" msgstr "PDF 报表默认页面大小" -#: report/models.py:308 +#: report/models.py:309 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:367 +#: report/models.py:368 msgid "Width [mm]" msgstr "宽度 [mm]" -#: report/models.py:368 +#: report/models.py:369 msgid "Label width, specified in mm" msgstr "标注宽度,以毫米为单位。" -#: report/models.py:374 +#: report/models.py:375 msgid "Height [mm]" msgstr "高度 [mm]" -#: report/models.py:375 +#: report/models.py:376 msgid "Label height, specified in mm" msgstr "标注高度,以毫米为单位。" -#: report/models.py:438 +#: report/models.py:439 #, fuzzy #| msgid "Number of stock items to build" msgid "Number of items to process" msgstr "要生产的项目数量" -#: report/models.py:444 +#: report/models.py:445 msgid "Report generation is complete" msgstr "" -#: report/models.py:448 templates/js/translated/build.js:2177 +#: report/models.py:449 templates/js/translated/build.js:2177 msgid "Progress" msgstr "" -#: report/models.py:448 +#: report/models.py:449 #, fuzzy #| msgid "Report Settings" msgid "Report generation progress" msgstr "报表设置" -#: report/models.py:456 +#: report/models.py:457 #, fuzzy #| msgid "Delete Template" msgid "Report Template" msgstr "删除模板" -#: report/models.py:463 report/models.py:486 +#: report/models.py:464 report/models.py:487 #, fuzzy #| msgid "Output Actions" msgid "Output File" msgstr "输出操作" -#: report/models.py:464 report/models.py:487 +#: report/models.py:465 report/models.py:488 #, fuzzy #| msgid "Delete outputs" msgid "Generated output file" msgstr "删除输出" -#: report/models.py:475 +#: report/models.py:476 #, fuzzy #| msgid "Select supplier" msgid "Label output plugin" msgstr "选择供应商" -#: report/models.py:479 +#: report/models.py:480 #, fuzzy #| msgid "Label template file" msgid "Label Template" msgstr "标签模板文件" -#: report/models.py:502 +#: report/models.py:503 msgid "Snippet" msgstr "" -#: report/models.py:503 +#: report/models.py:504 msgid "Report snippet file" msgstr "" -#: report/models.py:510 +#: report/models.py:511 msgid "Snippet file description" msgstr "" -#: report/models.py:528 +#: report/models.py:529 msgid "Asset" msgstr "" -#: report/models.py:529 +#: report/models.py:530 msgid "Report asset file" msgstr "" -#: report/models.py:536 +#: report/models.py:537 msgid "Asset file description" msgstr "" @@ -9086,8 +9192,8 @@ msgid "Total" msgstr "" #: report/templates/report/inventree_return_order_report.html:25 -#: report/templates/report/inventree_test_report.html:88 stock/models.py:826 -#: stock/serializers.py:150 stock/templates/stock/item_base.html:311 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:824 +#: stock/serializers.py:149 stock/templates/stock/item_base.html:311 #: templates/js/translated/build.js:519 templates/js/translated/build.js:1367 #: templates/js/translated/build.js:2355 #: templates/js/translated/model_renderers.js:230 @@ -9119,34 +9225,34 @@ msgstr "" msgid "Test" msgstr "" -#: report/templates/report/inventree_test_report.html:103 stock/models.py:2423 +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2412 msgid "Result" msgstr "" -#: report/templates/report/inventree_test_report.html:130 +#: report/templates/report/inventree_test_report.html:129 msgid "Pass" msgstr "" -#: report/templates/report/inventree_test_report.html:132 +#: report/templates/report/inventree_test_report.html:131 msgid "Fail" msgstr "" -#: report/templates/report/inventree_test_report.html:139 +#: report/templates/report/inventree_test_report.html:138 #, fuzzy #| msgid "Restart required" msgid "No result (required)" msgstr "需要重启" -#: report/templates/report/inventree_test_report.html:141 +#: report/templates/report/inventree_test_report.html:140 msgid "No result" msgstr "" -#: report/templates/report/inventree_test_report.html:154 +#: report/templates/report/inventree_test_report.html:153 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" msgstr "" -#: report/templates/report/inventree_test_report.html:168 stock/admin.py:162 +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 #: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 #: templates/js/translated/stock.js:3110 msgid "Serial" @@ -9170,726 +9276,748 @@ msgstr "" msgid "company_image tag requires a Company instance" msgstr "" -#: stock/admin.py:52 stock/admin.py:172 +#: stock/admin.py:51 stock/admin.py:171 msgid "Location ID" msgstr "" -#: stock/admin.py:54 stock/admin.py:176 +#: stock/admin.py:53 stock/admin.py:175 msgid "Location Name" msgstr "" -#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/admin.py:63 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:149 +#: stock/admin.py:148 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:168 +#: stock/admin.py:167 #, fuzzy #| msgid "Status" msgid "Status Code" msgstr "状态" -#: stock/admin.py:180 +#: stock/admin.py:179 msgid "Supplier Part ID" msgstr "供应商商品ID" -#: stock/admin.py:185 +#: stock/admin.py:184 +#, fuzzy +#| msgid "Supplier Part" +msgid "Supplier Part SKU" +msgstr "供应商商品" + +#: stock/admin.py:189 msgid "Supplier ID" msgstr "" -#: stock/admin.py:191 +#: stock/admin.py:195 msgid "Supplier Name" msgstr "" -#: stock/admin.py:196 +#: stock/admin.py:200 msgid "Customer ID" msgstr "" -#: stock/admin.py:201 stock/models.py:806 +#: stock/admin.py:205 stock/models.py:804 #: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:206 +#: stock/admin.py:210 msgid "Build ID" msgstr "" -#: stock/admin.py:216 +#: stock/admin.py:220 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:221 +#: stock/admin.py:225 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:236 +#: stock/admin.py:240 msgid "Review Needed" msgstr "" -#: stock/admin.py:241 +#: stock/admin.py:245 #, fuzzy #| msgid "Delete Template" msgid "Delete on Deplete" msgstr "删除模板" -#: stock/admin.py:256 stock/models.py:900 +#: stock/admin.py:260 stock/models.py:898 #: stock/templates/stock/item_base.html:433 #: templates/js/translated/stock.js:2230 users/models.py:124 msgid "Expiry Date" msgstr "" -#: stock/api.py:318 +#: stock/api.py:312 #, fuzzy #| msgid "Print Order Reports" msgid "Filter by location depth" msgstr "打印订单报表" -#: stock/api.py:338 +#: stock/api.py:332 +#, fuzzy +#| msgid "Delete location" +msgid "Filter by top-level locations" +msgstr "删除仓储地" + +#: stock/api.py:347 msgid "Include sub-locations in filtered results" msgstr "" -#: stock/api.py:359 +#: stock/api.py:369 stock/serializers.py:1085 #, fuzzy #| msgid "Print actions" msgid "Parent Location" msgstr "打印操作" -#: stock/api.py:360 +#: stock/api.py:370 #, fuzzy #| msgid "Delete location" msgid "Filter by parent location" msgstr "删除仓储地" -#: stock/api.py:615 templates/js/translated/table_filters.js:427 +#: stock/api.py:625 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:803 +#: stock/api.py:813 #, fuzzy #| msgid "Part name" msgid "Part Tree" msgstr "商品名称" -#: stock/api.py:833 +#: stock/api.py:843 msgid "Expiry date before" msgstr "" -#: stock/api.py:837 +#: stock/api.py:847 msgid "Expiry date after" msgstr "" -#: stock/api.py:840 stock/templates/stock/item_base.html:439 +#: stock/api.py:850 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/api.py:927 +#: stock/api.py:937 msgid "Quantity is required" msgstr "" -#: stock/api.py:933 +#: stock/api.py:943 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:964 +#: stock/api.py:974 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:974 +#: stock/api.py:984 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:1005 +#: stock/api.py:1015 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:59 +#: stock/models.py:60 #, fuzzy #| msgid "Stock Location" msgid "Stock Location type" msgstr "仓储地点" -#: stock/models.py:60 +#: stock/models.py:61 #, fuzzy #| msgid "Stock Locations" msgid "Stock Location types" msgstr "仓储地点" -#: stock/models.py:86 +#: stock/models.py:87 msgid "Default icon for all locations that have no icon set (optional)" msgstr "" -#: stock/models.py:123 stock/models.py:788 +#: stock/models.py:124 stock/models.py:786 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "仓储地点" -#: stock/models.py:124 stock/templates/stock/location.html:186 +#: stock/models.py:125 stock/templates/stock/location.html:186 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 #: users/models.py:205 msgid "Stock Locations" msgstr "仓储地点" -#: stock/models.py:166 stock/models.py:949 +#: stock/models.py:167 stock/models.py:947 #: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:167 stock/models.py:950 +#: stock/models.py:168 stock/models.py:948 msgid "Select Owner" msgstr "" -#: stock/models.py:175 +#: stock/models.py:176 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:182 templates/js/translated/stock.js:2781 +#: stock/models.py:183 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:183 +#: stock/models.py:184 msgid "This is an external stock location" msgstr "" -#: stock/models.py:189 templates/js/translated/stock.js:2790 +#: stock/models.py:190 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 #, fuzzy #| msgid "Location" msgid "Location type" msgstr "地点" -#: stock/models.py:193 +#: stock/models.py:194 #, fuzzy #| msgid "Stock item created" msgid "Stock location type of this location" msgstr "库存项已创建" -#: stock/models.py:262 +#: stock/models.py:261 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:643 +#: stock/models.py:641 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:670 stock/serializers.py:419 +#: stock/models.py:668 stock/serializers.py:446 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:687 +#: stock/models.py:685 #, 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:697 stock/models.py:710 +#: stock/models.py:695 stock/models.py:708 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:700 +#: stock/models.py:698 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:724 +#: stock/models.py:722 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:729 +#: stock/models.py:727 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:742 +#: stock/models.py:740 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:758 +#: stock/models.py:756 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:770 +#: stock/models.py:768 msgid "Base part" msgstr "" -#: stock/models.py:780 +#: stock/models.py:778 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:792 +#: stock/models.py:790 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:800 stock/serializers.py:1480 +#: stock/models.py:798 stock/serializers.py:1476 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:811 +#: stock/models.py:809 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:830 +#: stock/models.py:828 msgid "Serial number for this item" msgstr "" -#: stock/models.py:844 stock/serializers.py:1463 +#: stock/models.py:842 stock/serializers.py:1459 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:849 +#: stock/models.py:847 msgid "Stock Quantity" msgstr "" -#: stock/models.py:859 +#: stock/models.py:857 msgid "Source Build" msgstr "" -#: stock/models.py:862 +#: stock/models.py:860 msgid "Build for this stock item" msgstr "" -#: stock/models.py:869 stock/templates/stock/item_base.html:363 +#: stock/models.py:867 stock/templates/stock/item_base.html:363 #, fuzzy #| msgid "Issued By" msgid "Consumed By" msgstr "发布者" -#: stock/models.py:872 +#: stock/models.py:870 #, fuzzy #| msgid "BuildOrder to which this build is allocated" msgid "Build order which consumed this stock item" msgstr "此次生产匹配的订单" -#: stock/models.py:881 +#: stock/models.py:879 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:885 +#: stock/models.py:883 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:891 +#: stock/models.py:889 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:902 +#: stock/models.py:900 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:920 +#: stock/models.py:918 msgid "Delete on deplete" msgstr "" -#: stock/models.py:921 +#: stock/models.py:919 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:941 +#: stock/models.py:939 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:972 +#: stock/models.py:970 msgid "Converted to part" msgstr "" -#: stock/models.py:1490 +#: stock/models.py:1486 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1496 +#: stock/models.py:1492 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1500 #, 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:1510 +#: stock/models.py:1506 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1515 +#: stock/models.py:1511 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1523 stock/serializers.py:658 +#: stock/models.py:1519 stock/serializers.py:660 msgid "Serial numbers already exist" msgstr "序列号已存在" -#: stock/models.py:1620 +#: stock/models.py:1616 #, fuzzy #| msgid "Part image not found" msgid "Test template does not exist" msgstr "未找到商品图像" -#: stock/models.py:1638 +#: stock/models.py:1634 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1642 +#: stock/models.py:1638 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1645 +#: stock/models.py:1641 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1648 +#: stock/models.py:1644 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1651 +#: stock/models.py:1647 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1654 +#: stock/models.py:1650 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1661 stock/serializers.py:1369 +#: stock/models.py:1657 stock/serializers.py:1365 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1665 +#: stock/models.py:1661 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1673 +#: stock/models.py:1669 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1678 +#: stock/models.py:1674 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1905 +#: stock/models.py:1901 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2326 +#: stock/models.py:2310 msgid "Entry notes" msgstr "" -#: stock/models.py:2391 +#: stock/models.py:2378 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2396 +#: stock/models.py:2383 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2423 +#: stock/models.py:2388 +#, fuzzy +#| msgid "Invalid value for overage" +msgid "Invalid value for this test" +msgstr "无效的备损值" + +#: stock/models.py:2412 msgid "Test result" msgstr "" -#: stock/models.py:2430 +#: stock/models.py:2419 msgid "Test output value" msgstr "" -#: stock/models.py:2438 +#: stock/models.py:2427 msgid "Test result attachment" msgstr "" -#: stock/models.py:2442 +#: stock/models.py:2431 msgid "Test notes" msgstr "" -#: stock/models.py:2450 templates/js/translated/stock.js:1548 +#: stock/models.py:2439 templates/js/translated/stock.js:1548 #, fuzzy #| msgid "Destination" msgid "Test station" msgstr "目的地" -#: stock/models.py:2451 +#: stock/models.py:2440 msgid "The identifier of the test station where the test was performed" msgstr "" -#: stock/models.py:2457 +#: stock/models.py:2446 msgid "Started" msgstr "" -#: stock/models.py:2458 +#: stock/models.py:2447 #, fuzzy #| msgid "Timestamp of last update" msgid "The timestamp of the test start" msgstr "最后一次更新时间" -#: stock/models.py:2464 +#: stock/models.py:2453 #, fuzzy #| msgid "Danish" msgid "Finished" msgstr "丹麦语" -#: stock/models.py:2465 +#: stock/models.py:2454 #, fuzzy #| msgid "Timestamp of last update" msgid "The timestamp of the test finish" msgstr "最后一次更新时间" -#: stock/serializers.py:75 +#: stock/serializers.py:74 msgid "Generated batch code" msgstr "" -#: stock/serializers.py:84 +#: stock/serializers.py:83 #, fuzzy #| msgid "Delete Build Order" msgid "Select build order" msgstr "删除生产订单" -#: stock/serializers.py:93 +#: stock/serializers.py:92 #, fuzzy #| msgid "Selected stock item not found in BOM" msgid "Select stock item to generate batch code for" msgstr "在BOM中找不到选定的库存项" -#: stock/serializers.py:102 +#: stock/serializers.py:101 #, fuzzy #| msgid "Select location where the completed items will be stored" msgid "Select location to generate batch code for" msgstr "选择已完成项目仓储地点" -#: stock/serializers.py:111 +#: stock/serializers.py:110 #, fuzzy #| msgid "User or group responsible for this order" msgid "Select part to generate batch code for" msgstr "负责此订单的用户或群组" -#: stock/serializers.py:120 +#: stock/serializers.py:119 #, fuzzy #| msgid "Create new purchase order" msgid "Select purchase order" msgstr "新建采购订单" -#: stock/serializers.py:127 +#: stock/serializers.py:126 #, fuzzy #| msgid "Enter quantity for build output" msgid "Enter quantity for batch code" msgstr "输入生产产出数量" -#: stock/serializers.py:150 +#: stock/serializers.py:149 #, fuzzy #| msgid "Assigned serial number" msgid "Generated serial number" msgstr "已分配序列号" -#: stock/serializers.py:159 +#: stock/serializers.py:158 #, fuzzy #| msgid "Trackable parts can have serial numbers specified" msgid "Select part to generate serial number for" msgstr "可追踪商品可以指定序列号" -#: stock/serializers.py:167 +#: stock/serializers.py:166 #, fuzzy #| msgid "Enter serial numbers for new items" msgid "Quantity of serial numbers to generate" msgstr "输入新项目的序列号" -#: stock/serializers.py:229 +#: stock/serializers.py:228 #, fuzzy #| msgid "User or group responsible for this order" msgid "Test template for this result" msgstr "负责此订单的用户或群组" -#: stock/serializers.py:248 +#: stock/serializers.py:247 #, fuzzy #| msgid "Allocation items must be provided" msgid "Template ID or test name must be provided" msgstr "必须提供分配的项" -#: stock/serializers.py:280 +#: stock/serializers.py:279 msgid "The test finished time cannot be earlier than the test started time" msgstr "" -#: stock/serializers.py:313 +#: stock/serializers.py:315 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:411 +#: stock/serializers.py:438 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:531 +#: stock/serializers.py:558 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:595 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:606 +#: stock/serializers.py:608 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:613 +#: stock/serializers.py:615 msgid "Enter serial numbers for new items" msgstr "输入新项目的序列号" -#: stock/serializers.py:624 stock/serializers.py:1326 stock/serializers.py:1582 +#: stock/serializers.py:626 stock/serializers.py:1322 stock/serializers.py:1578 msgid "Destination stock location" msgstr "目标库存位置" -#: stock/serializers.py:631 +#: stock/serializers.py:633 msgid "Optional note field" msgstr "" -#: stock/serializers.py:641 +#: stock/serializers.py:643 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:696 +#: stock/serializers.py:698 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:703 +#: stock/serializers.py:705 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:704 +#: stock/serializers.py:706 #, fuzzy #| msgid "Enter quantity for build output" msgid "Enter the quantity of items to install" msgstr "输入生产产出数量" -#: stock/serializers.py:709 stock/serializers.py:789 stock/serializers.py:885 -#: stock/serializers.py:935 +#: stock/serializers.py:711 stock/serializers.py:791 stock/serializers.py:887 +#: stock/serializers.py:937 msgid "Add transaction note (optional)" msgstr "添加交易备注 (可选)" -#: stock/serializers.py:717 +#: stock/serializers.py:719 #, fuzzy #| msgid "Quantity must be a positive number" msgid "Quantity to install must be at least 1" msgstr "数量必须大于0" -#: stock/serializers.py:725 +#: stock/serializers.py:727 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:736 +#: stock/serializers.py:738 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:749 +#: stock/serializers.py:751 #, 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:784 +#: stock/serializers.py:786 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:819 +#: stock/serializers.py:821 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:834 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:849 +#: stock/serializers.py:851 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:880 +#: stock/serializers.py:882 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:917 +#: stock/serializers.py:919 #, fuzzy #| msgid "Selected stock item not found in BOM" msgid "Select stock items to change status" msgstr "在BOM中找不到选定的库存项" -#: stock/serializers.py:923 +#: stock/serializers.py:925 #, fuzzy #| msgid "Stock item created" msgid "No stock items selected" msgstr "库存项已创建" -#: stock/serializers.py:1019 stock/serializers.py:1082 +#: stock/serializers.py:1021 stock/serializers.py:1093 #: stock/templates/stock/location.html:165 -#: stock/templates/stock/location.html:220 +#: stock/templates/stock/location.html:222 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1198 +#: stock/serializers.py:1086 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: stock/serializers.py:1194 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1202 +#: stock/serializers.py:1198 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1206 +#: stock/serializers.py:1202 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1230 +#: stock/serializers.py:1226 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1236 +#: stock/serializers.py:1232 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1244 +#: stock/serializers.py:1240 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1254 stock/serializers.py:1508 +#: stock/serializers.py:1250 stock/serializers.py:1504 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1333 +#: stock/serializers.py:1329 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1338 +#: stock/serializers.py:1334 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1339 +#: stock/serializers.py:1335 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1344 +#: stock/serializers.py:1340 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1345 +#: stock/serializers.py:1341 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1355 +#: stock/serializers.py:1351 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1422 +#: stock/serializers.py:1418 #, fuzzy #| msgid "Change" msgid "No Change" msgstr "更改" -#: stock/serializers.py:1451 +#: stock/serializers.py:1447 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1470 +#: stock/serializers.py:1466 #, fuzzy #| msgid "Stock item created" msgid "Stock item status code" msgstr "库存项已创建" -#: stock/serializers.py:1498 +#: stock/serializers.py:1494 msgid "Stock transaction notes" msgstr "" @@ -10052,7 +10180,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:284 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276 msgid "Delete Test Data" msgstr "" @@ -10072,11 +10200,11 @@ msgstr "" msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:272 +#: stock/templates/stock/item.html:264 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:302 templates/js/translated/stock.js:1701 +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 msgid "Add Test Result" msgstr "" @@ -10370,30 +10498,30 @@ msgstr "您不在此仓储地的所有者列表中,无法编辑此仓储地。 msgid "Location Type" msgstr "地点" -#: stock/templates/stock/location.html:224 +#: stock/templates/stock/location.html:226 msgid "Create new stock location" msgstr "新建仓储地点" -#: stock/templates/stock/location.html:225 +#: stock/templates/stock/location.html:227 msgid "New Location" msgstr "新建仓储地点" -#: stock/templates/stock/location.html:295 +#: stock/templates/stock/location.html:299 #: templates/js/translated/stock.js:2572 #, fuzzy #| msgid "Stock Location" msgid "stock location" msgstr "仓储地点" -#: stock/templates/stock/location.html:317 +#: stock/templates/stock/location.html:321 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:390 +#: stock/templates/stock/location.html:394 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:401 +#: stock/templates/stock/location.html:405 msgid "Link Barcode to Stock Location" msgstr "" @@ -10823,20 +10951,20 @@ msgstr "采购订单设置" msgid "Pricing Settings" msgstr "" -#: templates/InvenTree/settings/pricing.html:34 +#: templates/InvenTree/settings/pricing.html:35 msgid "Exchange Rates" msgstr "汇率" -#: templates/InvenTree/settings/pricing.html:38 +#: templates/InvenTree/settings/pricing.html:39 msgid "Update Now" msgstr "立即更新" -#: templates/InvenTree/settings/pricing.html:46 -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 msgid "Last Update" msgstr "上次更新" -#: templates/InvenTree/settings/pricing.html:50 +#: templates/InvenTree/settings/pricing.html:51 msgid "Never" msgstr "从不" @@ -10901,8 +11029,8 @@ msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 #: templates/js/translated/forms.js:547 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 +#: templates/js/translated/part.js:393 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:402 msgid "Delete" msgstr "删除" @@ -10954,12 +11082,12 @@ msgid "No category parameter templates found" msgstr "未找到类别参数模板" #: templates/InvenTree/settings/settings_staff_js.html:308 -#: templates/js/translated/part.js:1645 +#: templates/js/translated/part.js:1646 msgid "Edit Template" msgstr "编辑模板" #: templates/InvenTree/settings/settings_staff_js.html:309 -#: templates/js/translated/part.js:1646 +#: templates/js/translated/part.js:1647 msgid "Delete Template" msgstr "删除模板" @@ -11371,7 +11499,7 @@ msgid "Submit Bug Report" msgstr "" #: templates/about.html:91 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 +#: templates/js/translated/helpers.js:589 msgid "copy to clipboard" msgstr "" @@ -11437,7 +11565,7 @@ 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 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45 msgid "Return to Site" msgstr "" @@ -11551,15 +11679,19 @@ msgstr "" msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." msgstr "" -#: templates/allauth_2fa/setup.html:23 +#: templates/allauth_2fa/setup.html:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 msgid "Step 2" msgstr "" -#: templates/allauth_2fa/setup.html:27 +#: templates/allauth_2fa/setup.html:28 msgid "Input a token generated by the app:" msgstr "" -#: templates/allauth_2fa/setup.html:37 +#: templates/allauth_2fa/setup.html:38 msgid "Verify" msgstr "" @@ -11638,7 +11770,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3217 +#: templates/js/translated/part.js:3219 msgid "Minimum Quantity" msgstr "" @@ -11730,29 +11862,29 @@ msgstr "" msgid "Delete attachments" msgstr "删除参数" -#: templates/js/translated/attachment.js:253 +#: templates/js/translated/attachment.js:260 #, fuzzy #| msgid "Attachments" msgid "Attachment actions" msgstr "附件" -#: templates/js/translated/attachment.js:275 +#: templates/js/translated/attachment.js:294 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:315 +#: templates/js/translated/attachment.js:334 msgid "Edit Attachment" msgstr "编辑附件" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:365 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:366 +#: templates/js/translated/attachment.js:385 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:374 +#: templates/js/translated/attachment.js:393 msgid "Delete attachment" msgstr "" @@ -12037,7 +12169,7 @@ msgid "Includes variant and substitute stock" msgstr "" #: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2601 -#: templates/js/translated/part.js:1256 +#: templates/js/translated/part.js:1257 #: templates/js/translated/sales_order.js:1943 msgid "Includes variant stock" msgstr "" @@ -12400,7 +12532,7 @@ msgstr "" #: templates/js/translated/build.js:2117 templates/js/translated/build.js:2479 #: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 -#: templates/js/translated/part.js:2315 templates/js/translated/part.js:2741 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 #: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -12449,8 +12581,8 @@ msgstr "生产操作" msgid "No build lines found" msgstr "子类别" -#: templates/js/translated/build.js:2504 templates/js/translated/part.js:790 -#: templates/js/translated/part.js:1202 +#: templates/js/translated/build.js:2504 templates/js/translated/part.js:791 +#: templates/js/translated/part.js:1203 msgid "Trackable part" msgstr "可追溯商品" @@ -12676,7 +12808,7 @@ msgid "Delete Parameters" msgstr "删除参数" #: templates/js/translated/company.js:1191 -#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2244 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2245 msgid "Order parts" msgstr "订购商品" @@ -12695,34 +12827,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:1279 -#: templates/js/translated/company.js:1567 templates/js/translated/part.js:798 -#: templates/js/translated/part.js:1210 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Template part" msgstr "" #: templates/js/translated/company.js:1283 -#: templates/js/translated/company.js:1571 templates/js/translated/part.js:802 -#: templates/js/translated/part.js:1214 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:803 +#: templates/js/translated/part.js:1215 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1464 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1465 msgid "No parameters found" msgstr "无指定参数" -#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1527 +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1528 msgid "Edit parameter" msgstr "编辑参数" -#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1528 +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1529 msgid "Delete parameter" msgstr "删除参数" -#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1433 +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1434 msgid "Edit Parameter" msgstr "编辑参数" -#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1549 +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1550 msgid "Delete Parameter" msgstr "删除参数" @@ -12862,23 +12994,23 @@ msgstr "" msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2285 templates/js/translated/search.js:239 +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2499 +#: templates/js/translated/forms.js:2500 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3101 +#: templates/js/translated/forms.js:3102 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3113 +#: templates/js/translated/forms.js:3114 msgid "Select Columns" msgstr "" @@ -12985,7 +13117,7 @@ msgstr "" #: templates/js/translated/news.js:38 #: templates/js/translated/notification.js:46 -#: templates/js/translated/part.js:1604 +#: templates/js/translated/part.js:1605 msgid "ID" msgstr "" @@ -13066,357 +13198,353 @@ msgstr "商品重复选项" 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 +#: templates/js/translated/part.js:333 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:352 +#: templates/js/translated/part.js:353 msgid "Create Part Category" msgstr "创建商品类别" -#: templates/js/translated/part.js:355 +#: templates/js/translated/part.js:356 #, fuzzy #| msgid "Create new part category" msgid "Create new category after this one" msgstr "新建商品类别" -#: templates/js/translated/part.js:356 +#: templates/js/translated/part.js:357 #, fuzzy #| msgid "Part category" msgid "Part category created" msgstr "商品类别" -#: templates/js/translated/part.js:370 +#: templates/js/translated/part.js:371 msgid "Edit Part Category" msgstr "编辑商品类别" -#: templates/js/translated/part.js:383 +#: templates/js/translated/part.js:384 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:388 +#: templates/js/translated/part.js:389 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:397 +#: templates/js/translated/part.js:398 msgid "Delete Part Category" msgstr "删除商品类别" -#: templates/js/translated/part.js:401 +#: templates/js/translated/part.js:402 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:406 +#: templates/js/translated/part.js:407 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:430 +#: templates/js/translated/part.js:431 msgid "Create Part" msgstr "创建商品" -#: templates/js/translated/part.js:432 +#: templates/js/translated/part.js:433 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:433 +#: templates/js/translated/part.js:434 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:461 +#: templates/js/translated/part.js:462 msgid "Edit Part" msgstr "编辑商品" -#: templates/js/translated/part.js:463 +#: templates/js/translated/part.js:464 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:474 +#: templates/js/translated/part.js:475 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:531 +#: templates/js/translated/part.js:532 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:532 +#: templates/js/translated/part.js:533 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:546 +#: templates/js/translated/part.js:547 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:548 +#: templates/js/translated/part.js:549 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:549 +#: templates/js/translated/part.js:550 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:550 +#: templates/js/translated/part.js:551 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:557 +#: templates/js/translated/part.js:558 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:593 +#: templates/js/translated/part.js:594 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:595 +#: templates/js/translated/part.js:596 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:600 +#: templates/js/translated/part.js:601 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:602 +#: templates/js/translated/part.js:603 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:619 +#: templates/js/translated/part.js:620 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:629 +#: templates/js/translated/part.js:630 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:632 +#: templates/js/translated/part.js:633 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:657 +#: templates/js/translated/part.js:658 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:685 +#: templates/js/translated/part.js:686 #: templates/js/translated/table_filters.js:747 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:688 +#: templates/js/translated/part.js:689 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:748 +#: templates/js/translated/part.js:749 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:771 +#: templates/js/translated/part.js:772 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +#: templates/js/translated/part.js:795 templates/js/translated/part.js:1207 msgid "Virtual part" msgstr "虚拟商品" -#: templates/js/translated/part.js:806 +#: templates/js/translated/part.js:807 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:810 +#: templates/js/translated/part.js:811 msgid "Salable part" msgstr "可销售商品" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:889 +#: templates/js/translated/part.js:890 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:897 +#: templates/js/translated/part.js:898 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:901 +#: templates/js/translated/part.js:902 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1050 +#: templates/js/translated/part.js:1051 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1145 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +#: templates/js/translated/part.js:1113 templates/js/translated/part.js:1155 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1281 +#: templates/js/translated/part.js:1282 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1599 +#: templates/js/translated/part.js:1600 msgid "No part parameter templates found" msgstr "未找到商品参数模板" -#: templates/js/translated/part.js:1662 +#: templates/js/translated/part.js:1663 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1674 +#: templates/js/translated/part.js:1675 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1682 +#: templates/js/translated/part.js:1683 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1716 +#: templates/js/translated/part.js:1717 #: templates/js/translated/purchase_order.js:1654 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1860 +#: templates/js/translated/part.js:1861 #: templates/js/translated/purchase_order.js:2153 #: templates/js/translated/return_order.js:755 #: templates/js/translated/sales_order.js:1911 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1906 +#: templates/js/translated/part.js:1907 #: templates/js/translated/purchase_order.js:2220 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1969 +#: templates/js/translated/part.js:1970 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1991 +#: templates/js/translated/part.js:1992 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2505 +#: templates/js/translated/part.js:2080 templates/js/translated/part.js:2506 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2200 +#: templates/js/translated/part.js:2201 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2205 +#: templates/js/translated/part.js:2206 msgid "Set Part Category" msgstr "设置商品类别" -#: templates/js/translated/part.js:2235 +#: templates/js/translated/part.js:2236 msgid "Set category" msgstr "设置类别" -#: templates/js/translated/part.js:2286 +#: templates/js/translated/part.js:2287 #, fuzzy #| msgid "Edit part" msgid "part" msgstr "编辑商品" -#: templates/js/translated/part.js:2287 +#: templates/js/translated/part.js:2288 #, fuzzy #| msgid "Parts" msgid "parts" msgstr "商品" -#: templates/js/translated/part.js:2383 +#: templates/js/translated/part.js:2384 msgid "No category" msgstr "没有分类" -#: templates/js/translated/part.js:2530 templates/js/translated/part.js:2660 +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 #: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2546 +#: templates/js/translated/part.js:2547 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2644 +#: templates/js/translated/part.js:2645 #, fuzzy #| msgid "Subcategories" msgid "No subcategories found" msgstr "子类别" -#: templates/js/translated/part.js:2680 templates/js/translated/stock.js:2689 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2760 +#: templates/js/translated/part.js:2761 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2776 +#: templates/js/translated/part.js:2777 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2865 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2885 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2887 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2935 templates/js/translated/stock.js:1456 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1456 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1457 +#: templates/js/translated/part.js:2938 templates/js/translated/stock.js:1457 #: templates/js/translated/stock.js:1731 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2940 +#: templates/js/translated/part.js:2942 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2956 +#: templates/js/translated/part.js:2958 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2970 +#: templates/js/translated/part.js:2972 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3049 templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3051 templates/js/translated/part.js:3052 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3052 +#: templates/js/translated/part.js:3054 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3058 +#: templates/js/translated/part.js:3060 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3108 +#: templates/js/translated/part.js:3110 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3114 +#: templates/js/translated/part.js:3116 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3210 +#: templates/js/translated/part.js:3212 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3226 +#: templates/js/translated/part.js:3228 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3271 +#: templates/js/translated/part.js:3273 msgid "Minimum Stock Level" msgstr "" @@ -14078,10 +14206,6 @@ msgstr "" 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 #, fuzzy #| msgid "Location" @@ -14254,7 +14378,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1042 users/models.py:401 +#: templates/js/translated/stock.js:1042 users/models.py:392 msgid "Add" msgstr "添加" @@ -15197,38 +15321,60 @@ msgstr "" msgid "Revoked" msgstr "" -#: users/models.py:384 +#: users/models.py:375 msgid "Permission set" msgstr "权限设置" -#: users/models.py:393 +#: users/models.py:384 msgid "Group" msgstr "群组" -#: users/models.py:397 +#: users/models.py:388 msgid "View" msgstr "视图" -#: users/models.py:397 +#: users/models.py:388 msgid "Permission to view items" msgstr "查看项目权限" -#: users/models.py:401 +#: users/models.py:392 msgid "Permission to add items" msgstr "添加项目权限" -#: users/models.py:405 +#: users/models.py:396 msgid "Change" msgstr "更改" -#: users/models.py:407 +#: users/models.py:398 msgid "Permissions to edit items" msgstr "编辑项目权限" -#: users/models.py:413 +#: users/models.py:404 msgid "Permission to delete items" msgstr "删除项目权限" +#~ msgid "parent" +#~ msgstr "上级项" + +#~ msgid "File comment" +#~ msgstr "文件注释" + +#~ msgid "Filename must not be empty" +#~ msgstr "文件名不能为空!" + +#, python-brace-format +#~ msgid "Filename contains illegal character '{c}'" +#~ msgstr "文件名包含非法字符 '{c}'" + +#~ msgid "Filename missing extension" +#~ msgstr "缺少文件名扩展" + +#~ msgid "Attachment with this filename already exists" +#~ msgstr "使用此文件名的附件已存在" + +#~ msgid "Error renaming file" +#~ msgstr "重命名文件出错" + #~ msgid "Label name" #~ msgstr "标签名称" diff --git a/src/backend/InvenTree/order/api.py b/src/backend/InvenTree/order/api.py index b2dd13483b..2cd8e59351 100644 --- a/src/backend/InvenTree/order/api.py +++ b/src/backend/InvenTree/order/api.py @@ -17,15 +17,11 @@ from rest_framework import status from rest_framework.exceptions import ValidationError from rest_framework.response import Response -import common.models as common_models -from company.models import SupplierPart +import common.models +import common.settings +import company.models from generic.states.api import StatusView -from InvenTree.api import ( - APIDownloadMixin, - AttachmentMixin, - ListCreateDestroyAPIView, - MetadataView, -) +from InvenTree.api import APIDownloadMixin, ListCreateDestroyAPIView, MetadataView from InvenTree.filters import SEARCH_ORDER_FILTER, SEARCH_ORDER_FILTER_ALIAS from InvenTree.helpers import DownloadFile, str2bool from InvenTree.helpers_model import construct_absolute_url, get_base_url @@ -135,7 +131,7 @@ class OrderFilter(rest_filters.FilterSet): return queryset.exclude(status__in=self.Meta.model.get_status_class().OPEN) project_code = rest_filters.ModelChoiceFilter( - queryset=common_models.ProjectCode.objects.all(), field_name='project_code' + queryset=common.models.ProjectCode.objects.all(), field_name='project_code' ) has_project_code = rest_filters.BooleanFilter( @@ -306,11 +302,13 @@ class PurchaseOrderList(PurchaseOrderMixin, APIDownloadMixin, ListCreateAPI): if supplier_part is not None: try: - supplier_part = SupplierPart.objects.get(pk=supplier_part) + supplier_part = company.models.SupplierPart.objects.get( + pk=supplier_part + ) queryset = queryset.filter( id__in=[p.id for p in supplier_part.purchase_orders()] ) - except (ValueError, SupplierPart.DoesNotExist): + except (ValueError, company.models.SupplierPart.DoesNotExist): pass # Filter by 'date range' @@ -449,7 +447,9 @@ class PurchaseOrderLineItemFilter(LineItemFilter): return queryset.exclude(order__status=PurchaseOrderStatus.COMPLETE.value) part = rest_filters.ModelChoiceFilter( - queryset=SupplierPart.objects.all(), field_name='part', label=_('Supplier Part') + queryset=company.models.SupplierPart.objects.all(), + field_name='part', + label=_('Supplier Part'), ) base_part = rest_filters.ModelChoiceFilter( @@ -648,22 +648,6 @@ class PurchaseOrderExtraLineDetail(RetrieveUpdateDestroyAPI): serializer_class = serializers.PurchaseOrderExtraLineSerializer -class SalesOrderAttachmentList(AttachmentMixin, ListCreateDestroyAPIView): - """API endpoint for listing, creating and bulk deleting a SalesOrderAttachment (file upload).""" - - queryset = models.SalesOrderAttachment.objects.all() - serializer_class = serializers.SalesOrderAttachmentSerializer - - filterset_fields = ['order'] - - -class SalesOrderAttachmentDetail(AttachmentMixin, RetrieveUpdateDestroyAPI): - """Detail endpoint for SalesOrderAttachment.""" - - queryset = models.SalesOrderAttachment.objects.all() - serializer_class = serializers.SalesOrderAttachmentSerializer - - class SalesOrderFilter(OrderFilter): """Custom API filters for the SalesOrderList endpoint.""" @@ -1150,22 +1134,6 @@ class SalesOrderShipmentComplete(CreateAPI): return ctx -class PurchaseOrderAttachmentList(AttachmentMixin, ListCreateDestroyAPIView): - """API endpoint for listing, creating and bulk deleting) a PurchaseOrderAttachment (file upload).""" - - queryset = models.PurchaseOrderAttachment.objects.all() - serializer_class = serializers.PurchaseOrderAttachmentSerializer - - filterset_fields = ['order'] - - -class PurchaseOrderAttachmentDetail(AttachmentMixin, RetrieveUpdateDestroyAPI): - """Detail endpoint for a PurchaseOrderAttachment.""" - - queryset = models.PurchaseOrderAttachment.objects.all() - serializer_class = serializers.PurchaseOrderAttachmentSerializer - - class ReturnOrderFilter(OrderFilter): """Custom API filters for the ReturnOrderList endpoint.""" @@ -1416,22 +1384,6 @@ class ReturnOrderExtraLineDetail(RetrieveUpdateDestroyAPI): serializer_class = serializers.ReturnOrderExtraLineSerializer -class ReturnOrderAttachmentList(AttachmentMixin, ListCreateDestroyAPIView): - """API endpoint for listing, creating and bulk deleting a ReturnOrderAttachment (file upload).""" - - queryset = models.ReturnOrderAttachment.objects.all() - serializer_class = serializers.ReturnOrderAttachmentSerializer - - filterset_fields = ['order'] - - -class ReturnOrderAttachmentDetail(AttachmentMixin, RetrieveUpdateDestroyAPI): - """Detail endpoint for the ReturnOrderAttachment model.""" - - queryset = models.ReturnOrderAttachment.objects.all() - serializer_class = serializers.ReturnOrderAttachmentSerializer - - class OrderCalendarExport(ICalFeed): """Calendar export for Purchase/Sales Orders. @@ -1514,7 +1466,9 @@ class OrderCalendarExport(ICalFeed): else: ordertype_title = _('Unknown') - return f'{common_models.InvenTreeSetting.get_setting("INVENTREE_COMPANY_NAME")} {ordertype_title}' + company_name = common.settings.get_global_setting('INVENTREE_COMPANY_NAME') + + return f'{company_name} {ordertype_title}' def product_id(self, obj): """Return calendar product id.""" @@ -1597,22 +1551,6 @@ order_api_urls = [ path( 'po/', include([ - # Purchase order attachments - path( - 'attachment/', - include([ - path( - '/', - PurchaseOrderAttachmentDetail.as_view(), - name='api-po-attachment-detail', - ), - path( - '', - PurchaseOrderAttachmentList.as_view(), - name='api-po-attachment-list', - ), - ]), - ), # Individual purchase order detail URLs path( '/', @@ -1704,21 +1642,6 @@ order_api_urls = [ path( 'so/', include([ - path( - 'attachment/', - include([ - path( - '/', - SalesOrderAttachmentDetail.as_view(), - name='api-so-attachment-detail', - ), - path( - '', - SalesOrderAttachmentList.as_view(), - name='api-so-attachment-list', - ), - ]), - ), path( 'shipment/', include([ @@ -1854,21 +1777,6 @@ order_api_urls = [ path( 'ro/', include([ - path( - 'attachment/', - include([ - path( - '/', - ReturnOrderAttachmentDetail.as_view(), - name='api-return-order-attachment-detail', - ), - path( - '', - ReturnOrderAttachmentList.as_view(), - name='api-return-order-attachment-list', - ), - ]), - ), # Return Order detail endpoints path( '/', diff --git a/src/backend/InvenTree/order/migrations/0016_purchaseorderattachment.py b/src/backend/InvenTree/order/migrations/0016_purchaseorderattachment.py index 25b43e222d..750642f6f9 100644 --- a/src/backend/InvenTree/order/migrations/0016_purchaseorderattachment.py +++ b/src/backend/InvenTree/order/migrations/0016_purchaseorderattachment.py @@ -16,7 +16,7 @@ class Migration(migrations.Migration): name='PurchaseOrderAttachment', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('attachment', models.FileField(help_text='Select file to attach', upload_to=InvenTree.models.rename_attachment)), + ('attachment', models.FileField(help_text='Select file to attach', upload_to='attachments')), ('comment', models.CharField(help_text='File comment', max_length=100)), ('order', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='attachments', to='order.PurchaseOrder')), ], diff --git a/src/backend/InvenTree/order/migrations/0020_auto_20200420_0940.py b/src/backend/InvenTree/order/migrations/0020_auto_20200420_0940.py index 76e903b45a..44d1401438 100644 --- a/src/backend/InvenTree/order/migrations/0020_auto_20200420_0940.py +++ b/src/backend/InvenTree/order/migrations/0020_auto_20200420_0940.py @@ -65,7 +65,7 @@ class Migration(migrations.Migration): name='SalesOrderAttachment', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('attachment', models.FileField(help_text='Select file to attach', upload_to=InvenTree.models.rename_attachment)), + ('attachment', models.FileField(help_text='Select file to attach', upload_to='attachments')), ('comment', models.CharField(help_text='File comment', max_length=100)), ('order', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='attachments', to='order.SalesOrder')), ], diff --git a/src/backend/InvenTree/order/migrations/0044_auto_20210404_2016.py b/src/backend/InvenTree/order/migrations/0044_auto_20210404_2016.py index ef69235545..d97c9accc1 100644 --- a/src/backend/InvenTree/order/migrations/0044_auto_20210404_2016.py +++ b/src/backend/InvenTree/order/migrations/0044_auto_20210404_2016.py @@ -67,7 +67,7 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='purchaseorderattachment', name='attachment', - field=models.FileField(help_text='Select file to attach', upload_to=InvenTree.models.rename_attachment, verbose_name='Attachment'), + field=models.FileField(help_text='Select file to attach', upload_to='attachments', verbose_name='Attachment'), ), migrations.AlterField( model_name='purchaseorderattachment', @@ -187,7 +187,7 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='salesorderattachment', name='attachment', - field=models.FileField(help_text='Select file to attach', upload_to=InvenTree.models.rename_attachment, verbose_name='Attachment'), + field=models.FileField(help_text='Select file to attach', upload_to='attachments', verbose_name='Attachment'), ), migrations.AlterField( model_name='salesorderattachment', diff --git a/src/backend/InvenTree/order/migrations/0053_auto_20211128_0151.py b/src/backend/InvenTree/order/migrations/0053_auto_20211128_0151.py index bbe029b4af..a4e0ec30a0 100644 --- a/src/backend/InvenTree/order/migrations/0053_auto_20211128_0151.py +++ b/src/backend/InvenTree/order/migrations/0053_auto_20211128_0151.py @@ -25,11 +25,11 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='purchaseorderattachment', name='attachment', - field=models.FileField(blank=True, help_text='Select file to attach', null=True, upload_to=InvenTree.models.rename_attachment, verbose_name='Attachment'), + field=models.FileField(blank=True, help_text='Select file to attach', null=True, upload_to='attachments', verbose_name='Attachment'), ), migrations.AlterField( model_name='salesorderattachment', name='attachment', - field=models.FileField(blank=True, help_text='Select file to attach', null=True, upload_to=InvenTree.models.rename_attachment, verbose_name='Attachment'), + field=models.FileField(blank=True, help_text='Select file to attach', null=True, upload_to='attachments', verbose_name='Attachment'), ), ] diff --git a/src/backend/InvenTree/order/migrations/0081_auto_20230314_0725.py b/src/backend/InvenTree/order/migrations/0081_auto_20230314_0725.py index f15b800ffe..ed815aa5a9 100644 --- a/src/backend/InvenTree/order/migrations/0081_auto_20230314_0725.py +++ b/src/backend/InvenTree/order/migrations/0081_auto_20230314_0725.py @@ -51,7 +51,7 @@ class Migration(migrations.Migration): name='ReturnOrderAttachment', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('attachment', models.FileField(blank=True, help_text='Select file to attach', null=True, upload_to=InvenTree.models.rename_attachment, verbose_name='Attachment')), + ('attachment', models.FileField(blank=True, help_text='Select file to attach', null=True, upload_to='attachments', verbose_name='Attachment')), ('link', InvenTree.fields.InvenTreeURLField(blank=True, help_text='Link to external URL', null=True, verbose_name='Link')), ('comment', models.CharField(blank=True, help_text='File comment', max_length=100, verbose_name='Comment')), ('upload_date', models.DateField(auto_now_add=True, null=True, verbose_name='upload date')), diff --git a/src/backend/InvenTree/order/migrations/0100_remove_returnorderattachment_order_and_more.py b/src/backend/InvenTree/order/migrations/0100_remove_returnorderattachment_order_and_more.py new file mode 100644 index 0000000000..01e5679ebd --- /dev/null +++ b/src/backend/InvenTree/order/migrations/0100_remove_returnorderattachment_order_and_more.py @@ -0,0 +1,27 @@ +# Generated by Django 4.2.12 on 2024-06-09 09:02 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('build', '0050_auto_20240508_0138'), + ('common', '0026_auto_20240608_1238'), + ('company', '0069_company_active'), + ('order', '0099_alter_salesorder_status'), + ('part', '0123_parttesttemplate_choices'), + ('stock', '0110_alter_stockitemtestresult_finished_datetime_and_more') + ] + + operations = [ + migrations.DeleteModel( + name='PurchaseOrderAttachment', + ), + migrations.DeleteModel( + name='ReturnOrderAttachment', + ), + migrations.DeleteModel( + name='SalesOrderAttachment', + ), + ] diff --git a/src/backend/InvenTree/order/models.py b/src/backend/InvenTree/order/models.py index 36dad6aa9f..077dd94bda 100644 --- a/src/backend/InvenTree/order/models.py +++ b/src/backend/InvenTree/order/models.py @@ -35,6 +35,7 @@ import stock.models import users.models as UserModels from common.currency import currency_code_default from common.notifications import InvenTreeNotificationBodies +from common.settings import get_global_setting from company.models import Address, Company, Contact, SupplierPart from generic.states import StateTransitionMixin from InvenTree.exceptions import log_error @@ -44,7 +45,7 @@ from InvenTree.fields import ( RoundingDecimalField, ) from InvenTree.helpers import decimal2string, pui_url -from InvenTree.helpers_model import getSetting, notify_responsible +from InvenTree.helpers_model import notify_responsible from order.status_codes import ( PurchaseOrderStatus, PurchaseOrderStatusGroups, @@ -183,6 +184,7 @@ class TotalPriceMixin(models.Model): class Order( StateTransitionMixin, + InvenTree.models.InvenTreeAttachmentMixin, InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models.InvenTreeNotesMixin, report.mixins.InvenTreeReportMixin, @@ -232,9 +234,7 @@ class Order( # Check if a responsible owner is required for this order type if self.REQUIRE_RESPONSIBLE_SETTING: - if common_models.InvenTreeSetting.get_setting( - self.REQUIRE_RESPONSIBLE_SETTING, backup_value=False - ): + if get_global_setting(self.REQUIRE_RESPONSIBLE_SETTING, backup_value=False): if not self.responsible: raise ValidationError({ 'responsible': _('Responsible user or group must be specified') @@ -820,9 +820,7 @@ class PurchaseOrder(TotalPriceMixin, Order): # Has this order been completed? if len(self.pending_line_items()) == 0: - if common_models.InvenTreeSetting.get_setting( - 'PURCHASEORDER_AUTO_COMPLETE', True - ): + if get_global_setting('PURCHASEORDER_AUTO_COMPLETE', True): self.received_by = user self.complete_order() # This will save the model @@ -1073,7 +1071,7 @@ class SalesOrder(TotalPriceMixin, Order): return False bypass_shipped = InvenTree.helpers.str2bool( - common_models.InvenTreeSetting.get_setting('SALESORDER_SHIP_COMPLETE') + get_global_setting('SALESORDER_SHIP_COMPLETE') ) if bypass_shipped or self.status == SalesOrderStatus.SHIPPED: @@ -1231,7 +1229,7 @@ def after_save_sales_order(sender, instance: SalesOrder, created: bool, **kwargs if created: # A new SalesOrder has just been created - if getSetting('SALESORDER_DEFAULT_SHIPMENT'): + if get_global_setting('SALESORDER_DEFAULT_SHIPMENT'): # Create default shipment SalesOrderShipment.objects.create(order=instance, reference='1') @@ -1239,40 +1237,6 @@ def after_save_sales_order(sender, instance: SalesOrder, created: bool, **kwargs notify_responsible(instance, sender, exclude=instance.created_by) -class PurchaseOrderAttachment(InvenTree.models.InvenTreeAttachment): - """Model for storing file attachments against a PurchaseOrder object.""" - - @staticmethod - def get_api_url(): - """Return the API URL associated with the PurchaseOrderAttachment model.""" - return reverse('api-po-attachment-list') - - def getSubdir(self): - """Return the directory path where PurchaseOrderAttachment files are located.""" - return os.path.join('po_files', str(self.order.id)) - - order = models.ForeignKey( - PurchaseOrder, on_delete=models.CASCADE, related_name='attachments' - ) - - -class SalesOrderAttachment(InvenTree.models.InvenTreeAttachment): - """Model for storing file attachments against a SalesOrder object.""" - - @staticmethod - def get_api_url(): - """Return the API URL associated with the SalesOrderAttachment class.""" - return reverse('api-so-attachment-list') - - def getSubdir(self): - """Return the directory path where SalesOrderAttachment files are located.""" - return os.path.join('so_files', str(self.order.id)) - - order = models.ForeignKey( - SalesOrder, on_delete=models.CASCADE, related_name='attachments' - ) - - class OrderLineItem(InvenTree.models.InvenTreeMetadataModel): """Abstract model for an order line item. @@ -2318,20 +2282,3 @@ class ReturnOrderExtraLine(OrderExtraLine): verbose_name=_('Order'), help_text=_('Return Order'), ) - - -class ReturnOrderAttachment(InvenTree.models.InvenTreeAttachment): - """Model for storing file attachments against a ReturnOrder object.""" - - @staticmethod - def get_api_url(): - """Return the API URL associated with the ReturnOrderAttachment class.""" - return reverse('api-return-order-attachment-list') - - def getSubdir(self): - """Return the directory path where ReturnOrderAttachment files are located.""" - return os.path.join('return_files', str(self.order.id)) - - order = models.ForeignKey( - ReturnOrder, on_delete=models.CASCADE, related_name='attachments' - ) diff --git a/src/backend/InvenTree/order/serializers.py b/src/backend/InvenTree/order/serializers.py index ee882beaa3..75f0990a03 100644 --- a/src/backend/InvenTree/order/serializers.py +++ b/src/backend/InvenTree/order/serializers.py @@ -1,6 +1,5 @@ """JSON serializers for the Order API.""" -from datetime import datetime from decimal import Decimal from django.core.exceptions import ValidationError as DjangoValidationError @@ -42,7 +41,6 @@ from InvenTree.helpers import ( str2bool, ) from InvenTree.serializers import ( - InvenTreeAttachmentSerializer, InvenTreeCurrencySerializer, InvenTreeDecimalField, InvenTreeModelSerializer, @@ -272,7 +270,7 @@ class PurchaseOrderCancelSerializer(serializers.Serializer): class Meta: """Metaclass options.""" - fields = ([],) + fields = [] def get_context_data(self): """Return custom context information about the order.""" @@ -757,17 +755,6 @@ class PurchaseOrderReceiveSerializer(serializers.Serializer): raise ValidationError(detail=serializers.as_serializer_error(exc)) -class PurchaseOrderAttachmentSerializer(InvenTreeAttachmentSerializer): - """Serializers for the PurchaseOrderAttachment model.""" - - class Meta: - """Metaclass options.""" - - model = order.models.PurchaseOrderAttachment - - fields = InvenTreeAttachmentSerializer.attachment_fields(['order']) - - class SalesOrderSerializer( NotesFieldMixin, TotalPriceMixin, AbstractOrderSerializer, InvenTreeModelSerializer ): @@ -1525,17 +1512,6 @@ class SalesOrderExtraLineSerializer( order_detail = SalesOrderSerializer(source='order', many=False, read_only=True) -class SalesOrderAttachmentSerializer(InvenTreeAttachmentSerializer): - """Serializers for the SalesOrderAttachment model.""" - - class Meta: - """Metaclass options.""" - - model = order.models.SalesOrderAttachment - - fields = InvenTreeAttachmentSerializer.attachment_fields(['order']) - - class ReturnOrderSerializer( NotesFieldMixin, AbstractOrderSerializer, TotalPriceMixin, InvenTreeModelSerializer ): @@ -1778,14 +1754,3 @@ class ReturnOrderExtraLineSerializer( model = order.models.ReturnOrderExtraLine order_detail = ReturnOrderSerializer(source='order', many=False, read_only=True) - - -class ReturnOrderAttachmentSerializer(InvenTreeAttachmentSerializer): - """Serializer for the ReturnOrderAttachment model.""" - - class Meta: - """Metaclass options.""" - - model = order.models.ReturnOrderAttachment - - fields = InvenTreeAttachmentSerializer.attachment_fields(['order']) diff --git a/src/backend/InvenTree/order/templates/order/purchase_order_detail.html b/src/backend/InvenTree/order/templates/order/purchase_order_detail.html index 9abc95f365..78da5925ac 100644 --- a/src/backend/InvenTree/order/templates/order/purchase_order_detail.html +++ b/src/backend/InvenTree/order/templates/order/purchase_order_detail.html @@ -132,17 +132,7 @@ }); onPanelLoad('order-attachments', function() { - loadAttachmentTable('{% url "api-po-attachment-list" %}', { - filters: { - order: {{ order.pk }}, - }, - fields: { - order: { - value: {{ order.pk }}, - hidden: true, - } - } - }); + loadAttachmentTable('purchaseorder', {{ order.pk }}); }); loadStockTable($("#stock-table"), { diff --git a/src/backend/InvenTree/order/templates/order/return_order_detail.html b/src/backend/InvenTree/order/templates/order/return_order_detail.html index 8cabf3a9e2..279ddc66cc 100644 --- a/src/backend/InvenTree/order/templates/order/return_order_detail.html +++ b/src/backend/InvenTree/order/templates/order/return_order_detail.html @@ -189,17 +189,7 @@ onPanelLoad('order-notes', function() { // Callback function when the 'attachments' panel is loaded onPanelLoad('order-attachments', function() { - loadAttachmentTable('{% url "api-return-order-attachment-list" %}', { - filters: { - order: {{ order.pk }}, - }, - fields: { - order: { - value: {{ order.pk }}, - hidden: true, - }, - } - }); + loadAttachmentTable('returnorder', {{ order.pk }}); }); enableSidebar('returnorder'); diff --git a/src/backend/InvenTree/order/templates/order/sales_order_detail.html b/src/backend/InvenTree/order/templates/order/sales_order_detail.html index 3b92201f10..c135211ab5 100644 --- a/src/backend/InvenTree/order/templates/order/sales_order_detail.html +++ b/src/backend/InvenTree/order/templates/order/sales_order_detail.html @@ -203,17 +203,7 @@ onPanelLoad('order-attachments', function() { - loadAttachmentTable('{% url "api-so-attachment-list" %}', { - filters: { - order: {{ order.pk }}, - }, - fields: { - order: { - value: {{ order.pk }}, - hidden: true, - }, - } - }); + loadAttachmentTable('salesorder', {{ order.pk }}); }); loadBuildTable($("#builds-table"), { diff --git a/src/backend/InvenTree/order/test_api.py b/src/backend/InvenTree/order/test_api.py index 73518b7ac8..5fb5fb560d 100644 --- a/src/backend/InvenTree/order/test_api.py +++ b/src/backend/InvenTree/order/test_api.py @@ -258,9 +258,9 @@ class PurchaseOrderTest(OrderTest): def test_po_attachments(self): """Test the list endpoint for the PurchaseOrderAttachment model.""" - url = reverse('api-po-attachment-list') + url = reverse('api-attachment-list') - response = self.get(url) + response = self.get(url, {'model_type': 'purchaseorder'}) self.assertEqual(response.status_code, status.HTTP_200_OK) @@ -484,6 +484,9 @@ class PurchaseOrderTest(OrderTest): url = reverse('api-po-cancel', kwargs={'pk': po.pk}) + # Get an OPTIONS request from the endpoint + self.options(url, data={'context': True}, expected_code=200) + # Try to cancel the PO, but without required permissions self.post(url, {}, expected_code=403) @@ -1260,9 +1263,12 @@ class SalesOrderTest(OrderTest): def test_so_attachments(self): """Test the list endpoint for the SalesOrderAttachment model.""" - url = reverse('api-so-attachment-list') + url = reverse('api-attachment-list') - self.get(url) + # Filter by 'salesorder' + self.get( + url, data={'model_type': 'salesorder', 'model_id': 1}, expected_code=200 + ) def test_so_operations(self): """Test that we can create / edit and delete a SalesOrder via the API.""" diff --git a/src/backend/InvenTree/part/admin.py b/src/backend/InvenTree/part/admin.py index e526dfc7ab..7ca74d75bc 100644 --- a/src/backend/InvenTree/part/admin.py +++ b/src/backend/InvenTree/part/admin.py @@ -353,14 +353,6 @@ class PartRelatedAdmin(admin.ModelAdmin): autocomplete_fields = ('part_1', 'part_2') -class PartAttachmentAdmin(admin.ModelAdmin): - """Admin class for the PartAttachment model.""" - - list_display = ('part', 'attachment', 'comment') - - autocomplete_fields = ('part',) - - class PartTestTemplateAdmin(admin.ModelAdmin): """Admin class for the PartTestTemplate model.""" @@ -607,7 +599,6 @@ class PartInternalPriceBreakAdmin(admin.ModelAdmin): admin.site.register(models.Part, PartAdmin) admin.site.register(models.PartCategory, PartCategoryAdmin) admin.site.register(models.PartRelated, PartRelatedAdmin) -admin.site.register(models.PartAttachment, PartAttachmentAdmin) admin.site.register(models.BomItem, BomItemAdmin) admin.site.register(models.PartParameterTemplate, ParameterTemplateAdmin) admin.site.register(models.PartParameter, ParameterAdmin) diff --git a/src/backend/InvenTree/part/api.py b/src/backend/InvenTree/part/api.py index 327a03e75d..9634e5071d 100644 --- a/src/backend/InvenTree/part/api.py +++ b/src/backend/InvenTree/part/api.py @@ -19,12 +19,7 @@ import order.models import part.filters from build.models import Build, BuildItem from build.status_codes import BuildStatusGroups -from InvenTree.api import ( - APIDownloadMixin, - AttachmentMixin, - ListCreateDestroyAPIView, - MetadataView, -) +from InvenTree.api import APIDownloadMixin, ListCreateDestroyAPIView, MetadataView from InvenTree.filters import ( ORDER_FILTER, ORDER_FILTER_ALIAS, @@ -56,7 +51,6 @@ from .models import ( BomItem, BomItemSubstitute, Part, - PartAttachment, PartCategory, PartCategoryParameterTemplate, PartInternalPriceBreak, @@ -143,6 +137,21 @@ class CategoryFilter(rest_filters.FilterSet): return queryset + top_level = rest_filters.BooleanFilter( + label=_('Top Level'), + method='filter_top_level', + help_text=_('Filter by top-level categories'), + ) + + def filter_top_level(self, queryset, name, value): + """Filter by top-level categories.""" + cascade = str2bool(self.data.get('cascade', False)) + + if value and not cascade: + return queryset.filter(parent=None) + + return queryset + cascade = rest_filters.BooleanFilter( label=_('Cascade'), method='filter_cascade', @@ -154,10 +163,11 @@ class CategoryFilter(rest_filters.FilterSet): Note: If the "parent" filter is provided, we offload the logic to that method. """ - parent = self.data.get('parent', None) + parent = str2bool(self.data.get('parent', None)) + top_level = str2bool(self.data.get('top_level', None)) # If the parent is *not* provided, update the results based on the "cascade" value - if not parent: + if not parent or top_level: if not value: # If "cascade" is False, only return top-level categories queryset = queryset.filter(parent=None) @@ -404,22 +414,6 @@ class PartInternalPriceList(ListCreateAPI): ordering = 'quantity' -class PartAttachmentList(AttachmentMixin, ListCreateDestroyAPIView): - """API endpoint for listing, creating and bulk deleting a PartAttachment (file upload).""" - - queryset = PartAttachment.objects.all() - serializer_class = part_serializers.PartAttachmentSerializer - - filterset_fields = ['part'] - - -class PartAttachmentDetail(AttachmentMixin, RetrieveUpdateDestroyAPI): - """Detail endpoint for PartAttachment model.""" - - queryset = PartAttachment.objects.all() - serializer_class = part_serializers.PartAttachmentSerializer - - class PartTestTemplateFilter(rest_filters.FilterSet): """Custom filterset class for the PartTestTemplateList endpoint.""" @@ -2059,18 +2053,6 @@ part_api_urls = [ ), ]), ), - # Base URL for PartAttachment API endpoints - path( - 'attachment/', - include([ - path( - '/', - PartAttachmentDetail.as_view(), - name='api-part-attachment-detail', - ), - path('', PartAttachmentList.as_view(), name='api-part-attachment-list'), - ]), - ), # Base URL for part sale pricing path( 'sale-price/', diff --git a/src/backend/InvenTree/part/helpers.py b/src/backend/InvenTree/part/helpers.py index ab20c795d7..fcd24b0f2e 100644 --- a/src/backend/InvenTree/part/helpers.py +++ b/src/backend/InvenTree/part/helpers.py @@ -7,6 +7,8 @@ from django.conf import settings from jinja2 import Environment, select_autoescape +from common.settings import get_global_setting + logger = logging.getLogger('inventree') @@ -20,14 +22,10 @@ def compile_full_name_template(*args, **kwargs): This function is called whenever the 'PART_NAME_FORMAT' setting is changed. """ - from common.models import InvenTreeSetting - global _part_full_name_template global _part_full_name_template_string - template_string = InvenTreeSetting.get_setting( - 'PART_NAME_FORMAT', backup_value='', cache=True - ) + template_string = get_global_setting('PART_NAME_FORMAT', cache=True) # Skip if the template string has not changed if ( diff --git a/src/backend/InvenTree/part/migrations/0032_auto_20200322_0453.py b/src/backend/InvenTree/part/migrations/0032_auto_20200322_0453.py index 29fb25f1e7..6b1403b0be 100644 --- a/src/backend/InvenTree/part/migrations/0032_auto_20200322_0453.py +++ b/src/backend/InvenTree/part/migrations/0032_auto_20200322_0453.py @@ -14,6 +14,6 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='partattachment', name='attachment', - field=models.FileField(help_text='Select file to attach', upload_to=InvenTree.models.rename_attachment), + field=models.FileField(help_text='Select file to attach', upload_to='attachments'), ), ] diff --git a/src/backend/InvenTree/part/migrations/0064_auto_20210404_2016.py b/src/backend/InvenTree/part/migrations/0064_auto_20210404_2016.py index 57943347a1..90cc04f885 100644 --- a/src/backend/InvenTree/part/migrations/0064_auto_20210404_2016.py +++ b/src/backend/InvenTree/part/migrations/0064_auto_20210404_2016.py @@ -98,7 +98,7 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='partattachment', name='attachment', - field=models.FileField(help_text='Select file to attach', upload_to=InvenTree.models.rename_attachment, verbose_name='Attachment'), + field=models.FileField(help_text='Select file to attach', upload_to='attachments', verbose_name='Attachment'), ), migrations.AlterField( model_name='partattachment', diff --git a/src/backend/InvenTree/part/migrations/0075_auto_20211128_0151.py b/src/backend/InvenTree/part/migrations/0075_auto_20211128_0151.py index d484a7adce..f516846ae2 100644 --- a/src/backend/InvenTree/part/migrations/0075_auto_20211128_0151.py +++ b/src/backend/InvenTree/part/migrations/0075_auto_20211128_0151.py @@ -20,6 +20,6 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='partattachment', name='attachment', - field=models.FileField(blank=True, help_text='Select file to attach', null=True, upload_to=InvenTree.models.rename_attachment, verbose_name='Attachment'), + field=models.FileField(blank=True, help_text='Select file to attach', null=True, upload_to='attachments', verbose_name='Attachment'), ), ] diff --git a/src/backend/InvenTree/part/migrations/0123_parttesttemplate_choices.py b/src/backend/InvenTree/part/migrations/0123_parttesttemplate_choices.py new file mode 100644 index 0000000000..df26051812 --- /dev/null +++ b/src/backend/InvenTree/part/migrations/0123_parttesttemplate_choices.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.12 on 2024-06-05 01:14 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('part', '0122_parttesttemplate_enabled'), + ] + + operations = [ + migrations.AddField( + model_name='parttesttemplate', + name='choices', + field=models.CharField(blank=True, help_text='Valid choices for this test (comma-separated)', max_length=5000, verbose_name='Choices'), + ), + ] diff --git a/src/backend/InvenTree/part/migrations/0124_delete_partattachment.py b/src/backend/InvenTree/part/migrations/0124_delete_partattachment.py new file mode 100644 index 0000000000..5213211aa4 --- /dev/null +++ b/src/backend/InvenTree/part/migrations/0124_delete_partattachment.py @@ -0,0 +1,21 @@ +# Generated by Django 4.2.12 on 2024-06-09 09:02 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('build', '0050_auto_20240508_0138'), + ('common', '0026_auto_20240608_1238'), + ('company', '0069_company_active'), + ('order', '0099_alter_salesorder_status'), + ('part', '0123_parttesttemplate_choices'), + ('stock', '0110_alter_stockitemtestresult_finished_datetime_and_more') + ] + + operations = [ + migrations.DeleteModel( + name='PartAttachment', + ), + ] diff --git a/src/backend/InvenTree/part/models.py b/src/backend/InvenTree/part/models.py index cd0282b908..8fa973a964 100644 --- a/src/backend/InvenTree/part/models.py +++ b/src/backend/InvenTree/part/models.py @@ -50,6 +50,7 @@ from build import models as BuildModels from build.status_codes import BuildStatusGroups from common.currency import currency_code_default from common.models import InvenTreeSetting +from common.settings import get_global_setting, set_global_setting from company.models import SupplierPart from InvenTree import helpers, validators from InvenTree.fields import InvenTreeURLField @@ -340,6 +341,7 @@ class PartManager(TreeManager): @cleanup.ignore class Part( + InvenTree.models.InvenTreeAttachmentMixin, InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models.InvenTreeNotesMixin, report.mixins.InvenTreeReportMixin, @@ -482,9 +484,7 @@ class Part( if self.active: raise ValidationError(_('Cannot delete this part as it is still active')) - if not common.models.InvenTreeSetting.get_setting( - 'PART_ALLOW_DELETE_FROM_ASSEMBLY', cache=False - ): + if not get_global_setting('PART_ALLOW_DELETE_FROM_ASSEMBLY', cache=False): if BomItem.objects.filter(sub_part=self).exists(): raise ValidationError( _('Cannot delete this part as it is used in an assembly') @@ -649,9 +649,7 @@ class Part( raise ValidationError({'IPN': exc.message}) # If we get to here, none of the plugins have raised an error - pattern = common.models.InvenTreeSetting.get_setting( - 'PART_IPN_REGEX', '', create=False - ).strip() + pattern = get_global_setting('PART_IPN_REGEX', '', create=False).strip() if pattern: match = re.search(pattern, self.IPN) @@ -719,9 +717,7 @@ class Part( from part.models import Part from stock.models import StockItem - if common.models.InvenTreeSetting.get_setting( - 'SERIAL_NUMBER_GLOBALLY_UNIQUE', False - ): + if get_global_setting('SERIAL_NUMBER_GLOBALLY_UNIQUE', False): # Serial number must be unique across *all* parts parts = Part.objects.all() else: @@ -775,9 +771,7 @@ class Part( ) # Generate a query for any stock items for this part variant tree with non-empty serial numbers - if common.models.InvenTreeSetting.get_setting( - 'SERIAL_NUMBER_GLOBALLY_UNIQUE', False - ): + if get_global_setting('SERIAL_NUMBER_GLOBALLY_UNIQUE', False): # Serial numbers are unique across all parts pass else: @@ -831,9 +825,7 @@ class Part( super().validate_unique(exclude) # User can decide whether duplicate IPN (Internal Part Number) values are allowed - allow_duplicate_ipn = common.models.InvenTreeSetting.get_setting( - 'PART_ALLOW_DUPLICATE_IPN' - ) + allow_duplicate_ipn = get_global_setting('PART_ALLOW_DUPLICATE_IPN') # Raise an error if an IPN is set, and it is a duplicate if self.IPN and not allow_duplicate_ipn: @@ -2217,24 +2209,6 @@ class Part( required=True, enabled=enabled, include_parent=include_parent ) - @property - def attachment_count(self): - """Count the number of attachments for this part. - - If the part is a variant of a template part, - include the number of attachments for the template part. - """ - return self.part_attachments.count() - - @property - def part_attachments(self): - """Return *all* attachments for this part, potentially including attachments for template parts above this one.""" - ancestors = self.get_ancestors(include_self=True) - - attachments = PartAttachment.objects.filter(part__in=ancestors) - - return attachments - def sales_orders(self): """Return a list of sales orders which reference this part.""" orders = [] @@ -2749,11 +2723,11 @@ class PartPricing(common.models.MetaMixin): purchase_max = purchase_cost # Also check if manual stock item pricing is included - if InvenTreeSetting.get_setting('PRICING_USE_STOCK_PRICING', True): + if get_global_setting('PRICING_USE_STOCK_PRICING', True): items = self.part.stock_items.all() # Limit to stock items updated within a certain window - days = int(InvenTreeSetting.get_setting('PRICING_STOCK_ITEM_AGE_DAYS', 0)) + days = int(get_global_setting('PRICING_STOCK_ITEM_AGE_DAYS', 0)) if days > 0: date_threshold = InvenTree.helpers.current_date() - timedelta(days=days) @@ -2789,7 +2763,7 @@ class PartPricing(common.models.MetaMixin): min_int_cost = None max_int_cost = None - if InvenTreeSetting.get_setting('PART_INTERNAL_PRICE', False): + if get_global_setting('PART_INTERNAL_PRICE', False): # Only calculate internal pricing if internal pricing is enabled for pb in self.part.internalpricebreaks.all(): cost = self.convert(pb.price) @@ -2865,7 +2839,7 @@ class PartPricing(common.models.MetaMixin): variant_min = None variant_max = None - active_only = InvenTreeSetting.get_setting('PRICING_ACTIVE_VARIANTS', False) + active_only = get_global_setting('PRICING_ACTIVE_VARIANTS', False) if self.part.is_template: variants = self.part.get_descendants(include_self=False) @@ -2907,11 +2881,11 @@ class PartPricing(common.models.MetaMixin): max_costs = [self.bom_cost_max, self.purchase_cost_max, self.internal_cost_max] - purchase_history_override = InvenTreeSetting.get_setting( + purchase_history_override = get_global_setting( 'PRICING_PURCHASE_HISTORY_OVERRIDES_SUPPLIER', False ) - if InvenTreeSetting.get_setting('PRICING_USE_SUPPLIER_PRICING', True): + if get_global_setting('PRICING_USE_SUPPLIER_PRICING', True): # Add supplier pricing data, *unless* historical pricing information should override if self.purchase_cost_min is None or not purchase_history_override: min_costs.append(self.supplier_price_min) @@ -2919,7 +2893,7 @@ class PartPricing(common.models.MetaMixin): if self.purchase_cost_max is None or not purchase_history_override: max_costs.append(self.supplier_price_max) - if InvenTreeSetting.get_setting('PRICING_USE_VARIANT_PRICING', True): + if get_global_setting('PRICING_USE_VARIANT_PRICING', True): # Include variant pricing in overall calculations min_costs.append(self.variant_cost_min) max_costs.append(self.variant_cost_max) @@ -2946,7 +2920,7 @@ class PartPricing(common.models.MetaMixin): if overall_max is None or cost > overall_max: overall_max = cost - if InvenTreeSetting.get_setting('PART_BOM_USE_INTERNAL_PRICE', False): + if get_global_setting('PART_BOM_USE_INTERNAL_PRICE', False): # Check if internal pricing should override other pricing if self.internal_cost_min is not None: overall_min = self.internal_cost_min @@ -3308,26 +3282,6 @@ class PartStocktakeReport(models.Model): ) -class PartAttachment(InvenTree.models.InvenTreeAttachment): - """Model for storing file attachments against a Part object.""" - - @staticmethod - def get_api_url(): - """Return the list API endpoint URL associated with the PartAttachment model.""" - return reverse('api-part-attachment-list') - - def getSubdir(self): - """Returns the media subdirectory where part attachments are stored.""" - return os.path.join('part_files', str(self.part.id)) - - part = models.ForeignKey( - Part, - on_delete=models.CASCADE, - verbose_name=_('Part'), - related_name='attachments', - ) - - class PartSellPriceBreak(common.models.PriceBreak): """Represents a price break for selling this part.""" @@ -3470,6 +3424,27 @@ class PartTestTemplate(InvenTree.models.InvenTreeMetadataModel): ) }) + # Check that 'choices' are in fact valid + if self.choices is None: + self.choices = '' + else: + self.choices = str(self.choices).strip() + + if self.choices: + choice_set = set() + + for choice in self.choices.split(','): + choice = choice.strip() + + # Ignore empty choices + if not choice: + continue + + if choice in choice_set: + raise ValidationError({'choices': _('Choices must be unique')}) + + choice_set.add(choice) + self.validate_unique() super().clean() @@ -3548,6 +3523,20 @@ class PartTestTemplate(InvenTree.models.InvenTreeMetadataModel): ), ) + choices = models.CharField( + max_length=5000, + verbose_name=_('Choices'), + help_text=_('Valid choices for this test (comma-separated)'), + blank=True, + ) + + def get_choices(self): + """Return a list of valid choices for this test template.""" + if not self.choices: + return [] + + return [x.strip() for x in self.choices.split(',') if x.strip()] + def validate_template_name(name): """Placeholder for legacy function used in migrations.""" @@ -3739,7 +3728,7 @@ class PartParameter(InvenTree.models.InvenTreeMetadataModel): super().clean() # Validate the parameter data against the template units - if InvenTreeSetting.get_setting( + if get_global_setting( 'PART_PARAMETER_ENFORCE_UNITS', True, cache=False, create=False ): if self.template.units: @@ -3881,7 +3870,7 @@ class PartCategoryParameterTemplate(InvenTree.models.InvenTreeMetadataModel): if ( self.default_value - and InvenTreeSetting.get_setting( + and get_global_setting( 'PART_PARAMETER_ENFORCE_UNITS', True, cache=False, create=False ) and self.parameter_template.units @@ -4290,9 +4279,7 @@ class BomItem( def price_range(self, internal=False): """Return the price-range for this BOM item.""" # get internal price setting - use_internal = common.models.InvenTreeSetting.get_setting( - 'PART_BOM_USE_INTERNAL_PRICE', False - ) + use_internal = get_global_setting('PART_BOM_USE_INTERNAL_PRICE', False) prange = self.sub_part.get_price_range( self.quantity, internal=use_internal and internal ) diff --git a/src/backend/InvenTree/part/serializers.py b/src/backend/InvenTree/part/serializers.py index 9575c2c329..90af41890e 100644 --- a/src/backend/InvenTree/part/serializers.py +++ b/src/backend/InvenTree/part/serializers.py @@ -22,7 +22,6 @@ from sql_util.utils import SubqueryCount, SubquerySum from taggit.serializers import TagListSerializerField import common.currency -import common.models import common.settings import company.models import InvenTree.helpers @@ -41,7 +40,6 @@ from .models import ( BomItem, BomItemSubstitute, Part, - PartAttachment, PartCategory, PartCategoryParameterTemplate, PartInternalPriceBreak, @@ -113,6 +111,14 @@ class CategorySerializer(InvenTree.serializers.InvenTreeModelSerializer): return queryset + parent = serializers.PrimaryKeyRelatedField( + queryset=PartCategory.objects.all(), + required=False, + allow_null=True, + label=_('Parent Category'), + help_text=_('Parent part category'), + ) + url = serializers.CharField(source='get_absolute_url', read_only=True) part_count = serializers.IntegerField(read_only=True, label=_('Parts')) @@ -147,19 +153,6 @@ class CategoryTree(InvenTree.serializers.InvenTreeModelSerializer): return queryset.annotate(subcategories=part.filters.annotate_sub_categories()) -class PartAttachmentSerializer(InvenTree.serializers.InvenTreeAttachmentSerializer): - """Serializer for the PartAttachment class.""" - - class Meta: - """Metaclass defining serializer fields.""" - - model = PartAttachment - - fields = InvenTree.serializers.InvenTreeAttachmentSerializer.attachment_fields([ - 'part' - ]) - - class PartTestTemplateSerializer(InvenTree.serializers.InvenTreeModelSerializer): """Serializer for the PartTestTemplate class.""" @@ -179,6 +172,7 @@ class PartTestTemplateSerializer(InvenTree.serializers.InvenTreeModelSerializer) 'requires_value', 'requires_attachment', 'results', + 'choices', ] key = serializers.CharField(read_only=True) @@ -1170,7 +1164,7 @@ class PartStocktakeReportGenerateSerializer(serializers.Serializer): def validate(self, data): """Custom validation for this serializer.""" # Stocktake functionality must be enabled - if not common.models.InvenTreeSetting.get_setting('STOCKTAKE_ENABLE', False): + if not common.settings.get_global_setting('STOCKTAKE_ENABLE'): raise serializers.ValidationError( _('Stocktake functionality is not enabled') ) diff --git a/src/backend/InvenTree/part/settings.py b/src/backend/InvenTree/part/settings.py index e5706a87ff..f258fbcb20 100644 --- a/src/backend/InvenTree/part/settings.py +++ b/src/backend/InvenTree/part/settings.py @@ -1,38 +1,38 @@ """User-configurable settings for the Part app.""" -from common.models import InvenTreeSetting +from common.settings import get_global_setting def part_assembly_default(): """Returns the default value for the 'assembly' field of a Part object.""" - return InvenTreeSetting.get_setting('PART_ASSEMBLY') + return get_global_setting('PART_ASSEMBLY') def part_template_default(): """Returns the default value for the 'is_template' field of a Part object.""" - return InvenTreeSetting.get_setting('PART_TEMPLATE') + return get_global_setting('PART_TEMPLATE') def part_virtual_default(): """Returns the default value for the 'is_virtual' field of Part object.""" - return InvenTreeSetting.get_setting('PART_VIRTUAL') + return get_global_setting('PART_VIRTUAL') def part_component_default(): """Returns the default value for the 'component' field of a Part object.""" - return InvenTreeSetting.get_setting('PART_COMPONENT') + return get_global_setting('PART_COMPONENT') def part_purchaseable_default(): """Returns the default value for the 'purchasable' field for a Part object.""" - return InvenTreeSetting.get_setting('PART_PURCHASEABLE') + return get_global_setting('PART_PURCHASEABLE') def part_salable_default(): """Returns the default value for the 'salable' field for a Part object.""" - return InvenTreeSetting.get_setting('PART_SALABLE') + return get_global_setting('PART_SALABLE') def part_trackable_default(): """Returns the default value for the 'trackable' field for a Part object.""" - return InvenTreeSetting.get_setting('PART_TRACKABLE') + return get_global_setting('PART_TRACKABLE') diff --git a/src/backend/InvenTree/part/tasks.py b/src/backend/InvenTree/part/tasks.py index 768be1a440..ec30fdfdb0 100644 --- a/src/backend/InvenTree/part/tasks.py +++ b/src/backend/InvenTree/part/tasks.py @@ -9,15 +9,14 @@ from django.core.exceptions import ValidationError from django.utils.translation import gettext_lazy as _ import common.currency -import common.models import common.notifications -import common.settings import company.models import InvenTree.helpers import InvenTree.helpers_model import InvenTree.tasks import part.models import part.stocktake +from common.settings import get_global_setting from InvenTree.tasks import ( ScheduledTask, check_daily_holdoff, @@ -99,7 +98,7 @@ def check_missing_pricing(limit=250): pp.schedule_for_update() # Find any parts which have 'old' pricing information - days = int(common.models.InvenTreeSetting.get_setting('PRICING_UPDATE_DAYS', 30)) + days = int(get_global_setting('PRICING_UPDATE_DAYS', 30)) stale_date = datetime.now().date() - timedelta(days=days) results = part.models.PartPricing.objects.filter(updated__lte=stale_date)[:limit] @@ -146,9 +145,7 @@ def scheduled_stocktake_reports(): # First let's delete any old stocktake reports delete_n_days = int( - common.models.InvenTreeSetting.get_setting( - 'STOCKTAKE_DELETE_REPORT_DAYS', 30, cache=False - ) + get_global_setting('STOCKTAKE_DELETE_REPORT_DAYS', 30, cache=False) ) threshold = datetime.now() - timedelta(days=delete_n_days) old_reports = part.models.PartStocktakeReport.objects.filter(date__lt=threshold) @@ -158,17 +155,11 @@ def scheduled_stocktake_reports(): old_reports.delete() # Next, check if stocktake functionality is enabled - if not common.models.InvenTreeSetting.get_setting( - 'STOCKTAKE_ENABLE', False, cache=False - ): + if not get_global_setting('STOCKTAKE_ENABLE', False, cache=False): logger.info('Stocktake functionality is not enabled - exiting') return - report_n_days = int( - common.models.InvenTreeSetting.get_setting( - 'STOCKTAKE_AUTO_DAYS', 0, cache=False - ) - ) + report_n_days = int(get_global_setting('STOCKTAKE_AUTO_DAYS', 0, cache=False)) if report_n_days < 1: logger.info('Stocktake auto reports are disabled, exiting') diff --git a/src/backend/InvenTree/part/templates/part/category.html b/src/backend/InvenTree/part/templates/part/category.html index 734e3ae98b..5671ca44c5 100644 --- a/src/backend/InvenTree/part/templates/part/category.html +++ b/src/backend/InvenTree/part/templates/part/category.html @@ -317,6 +317,8 @@ params: { {% if category %} parent: {{ category.pk }}, + {% else %} + top_level: true, {% endif %} }, allowTreeView: true, diff --git a/src/backend/InvenTree/part/templates/part/detail.html b/src/backend/InvenTree/part/templates/part/detail.html index f65a5e709f..71a0efd366 100644 --- a/src/backend/InvenTree/part/templates/part/detail.html +++ b/src/backend/InvenTree/part/templates/part/detail.html @@ -803,17 +803,7 @@ }); onPanelLoad("part-attachments", function() { - loadAttachmentTable('{% url "api-part-attachment-list" %}', { - filters: { - part: {{ part.pk }}, - }, - fields: { - part: { - value: {{ part.pk }}, - hidden: true - } - } - }); + loadAttachmentTable('part', {{ part.pk }}); }); onPanelLoad('pricing', function() { diff --git a/src/backend/InvenTree/part/test_api.py b/src/backend/InvenTree/part/test_api.py index 7d998e0033..6fb7265410 100644 --- a/src/backend/InvenTree/part/test_api.py +++ b/src/backend/InvenTree/part/test_api.py @@ -893,51 +893,6 @@ class PartAPITest(PartAPITestBase): # Now there should be 5 total parts self.assertEqual(len(response.data), 3) - def test_test_templates(self): - """Test the PartTestTemplate API.""" - url = reverse('api-part-test-template-list') - - # List ALL items - response = self.get(url) - 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), 6) - - # Try to post a new object (missing description) - response = self.post( - url, - data={'part': 10000, 'test_name': 'My very first test', 'required': False}, - expected_code=400, - ) - - # Try to post a new object (should succeed) - response = self.post( - url, - data={ - 'part': 10000, - 'test_name': 'New Test', - 'required': True, - 'description': 'a test description', - }, - ) - - # Try to post a new test with the same name (should fail) - response = self.post( - url, - data={'part': 10004, 'test_name': ' newtest', 'description': 'dafsdf'}, - expected_code=400, - ) - - # Try to post a new test against a non-trackable part (should fail) - response = self.post( - url, data={'part': 1, 'test_name': 'A simple test'}, expected_code=400 - ) - def test_get_thumbs(self): """Return list of part thumbnails.""" url = reverse('api-part-thumbs') @@ -2558,22 +2513,28 @@ class PartAttachmentTest(InvenTreeAPITestCase): def test_add_attachment(self): """Test that we can create a new PartAttachment via the API.""" - url = reverse('api-part-attachment-list') + url = reverse('api-attachment-list') # Upload without permission - response = self.post(url, {}, expected_code=403) + response = self.post( + url, {'model_id': 1, 'model_type': 'part'}, expected_code=403 + ) # Add required permission self.assignRole('part.add') + self.assignRole('part.change') # Upload without specifying part (will fail) response = self.post(url, {'comment': 'Hello world'}, expected_code=400) - self.assertIn('This field is required', str(response.data['part'])) + self.assertIn('This field is required', str(response.data['model_id'])) + self.assertIn('This field is required', str(response.data['model_type'])) # Upload without file OR link (will fail) response = self.post( - url, {'part': 1, 'comment': 'Hello world'}, expected_code=400 + url, + {'model_id': 1, 'model_type': 'part', 'comment': 'Hello world'}, + expected_code=400, ) self.assertIn('Missing file', str(response.data['attachment'])) @@ -2581,7 +2542,9 @@ class PartAttachmentTest(InvenTreeAPITestCase): # Upload an invalid link (will fail) response = self.post( - url, {'part': 1, 'link': 'not-a-link.py'}, expected_code=400 + url, + {'model_id': 1, 'model_type': 'part', 'link': 'not-a-link.py'}, + expected_code=400, ) self.assertIn('Enter a valid URL', str(response.data['link'])) @@ -2590,12 +2553,20 @@ class PartAttachmentTest(InvenTreeAPITestCase): # Upload a valid link (will pass) response = self.post( - url, {'part': 1, 'link': link, 'comment': 'Hello world'}, expected_code=201 + url, + { + 'model_id': 1, + 'model_type': 'part', + 'link': link, + 'comment': 'Hello world', + }, + expected_code=201, ) data = response.data - self.assertEqual(data['part'], 1) + self.assertEqual(data['model_type'], 'part') + self.assertEqual(data['model_id'], 1) self.assertEqual(data['link'], link) self.assertEqual(data['comment'], 'Hello world') @@ -2904,3 +2875,96 @@ class PartSchedulingTest(PartAPITestBase): for entry in data: for k in ['date', 'quantity', 'label']: self.assertIn(k, entry) + + +class PartTestTemplateTest(PartAPITestBase): + """API unit tests for the PartTestTemplate model.""" + + def test_test_templates(self): + """Test the PartTestTemplate API.""" + url = reverse('api-part-test-template-list') + + # List ALL items + response = self.get(url) + 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), 6) + + # Try to post a new object (missing description) + response = self.post( + url, + data={'part': 10000, 'test_name': 'My very first test', 'required': False}, + expected_code=400, + ) + + # Try to post a new object (should succeed) + response = self.post( + url, + data={ + 'part': 10000, + 'test_name': 'New Test', + 'required': True, + 'description': 'a test description', + }, + ) + + # Try to post a new test with the same name (should fail) + response = self.post( + url, + data={'part': 10004, 'test_name': ' newtest', 'description': 'dafsdf'}, + expected_code=400, + ) + + # Try to post a new test against a non-trackable part (should fail) + response = self.post( + url, data={'part': 1, 'test_name': 'A simple test'}, expected_code=400 + ) + + def test_choices(self): + """Test the 'choices' field for the PartTestTemplate model.""" + template = PartTestTemplate.objects.first() + + url = reverse('api-part-test-template-detail', kwargs={'pk': template.pk}) + + # Check OPTIONS response + response = self.options(url) + options = response.data['actions']['PUT'] + + self.assertTrue(options['pk']['read_only']) + self.assertTrue(options['pk']['required']) + self.assertEqual(options['part']['api_url'], '/api/part/') + self.assertTrue(options['test_name']['required']) + self.assertFalse(options['test_name']['read_only']) + self.assertFalse(options['choices']['required']) + self.assertFalse(options['choices']['read_only']) + self.assertEqual( + options['choices']['help_text'], + 'Valid choices for this test (comma-separated)', + ) + + # Check data endpoint + response = self.get(url) + data = response.data + + for key in [ + 'pk', + 'key', + 'part', + 'test_name', + 'description', + 'enabled', + 'required', + 'results', + 'choices', + ]: + self.assertIn(key, data) + + # Patch with invalid choices + response = self.patch(url, {'choices': 'a,b,c,d,e,f,f'}, expected_code=400) + + self.assertIn('Choices must be unique', str(response.data['choices'])) diff --git a/src/backend/InvenTree/part/test_part.py b/src/backend/InvenTree/part/test_part.py index 9c70ea23ca..58a88c3055 100644 --- a/src/backend/InvenTree/part/test_part.py +++ b/src/backend/InvenTree/part/test_part.py @@ -18,6 +18,7 @@ from common.models import ( NotificationMessage, ) from common.notifications import UIMessageNotification, storage +from common.settings import get_global_setting, set_global_setting from InvenTree import version from InvenTree.templatetags import inventree_extras from InvenTree.unit_test import InvenTreeTestCase @@ -500,17 +501,17 @@ class PartSettingsTest(InvenTreeTestCase): def test_custom(self): """Update some of the part values and re-test.""" for val in [True, False]: - InvenTreeSetting.set_setting('PART_COMPONENT', val, self.user) - InvenTreeSetting.set_setting('PART_PURCHASEABLE', val, self.user) - InvenTreeSetting.set_setting('PART_SALABLE', val, self.user) - InvenTreeSetting.set_setting('PART_TRACKABLE', val, self.user) - InvenTreeSetting.set_setting('PART_ASSEMBLY', val, self.user) - InvenTreeSetting.set_setting('PART_TEMPLATE', val, self.user) + set_global_setting('PART_COMPONENT', val, self.user) + set_global_setting('PART_PURCHASEABLE', val, self.user) + set_global_setting('PART_SALABLE', val, self.user) + set_global_setting('PART_TRACKABLE', val, self.user) + set_global_setting('PART_ASSEMBLY', val, self.user) + set_global_setting('PART_TEMPLATE', val, self.user) - self.assertEqual(val, InvenTreeSetting.get_setting('PART_COMPONENT')) - self.assertEqual(val, InvenTreeSetting.get_setting('PART_PURCHASEABLE')) - self.assertEqual(val, InvenTreeSetting.get_setting('PART_SALABLE')) - self.assertEqual(val, InvenTreeSetting.get_setting('PART_TRACKABLE')) + self.assertEqual(val, get_global_setting('PART_COMPONENT')) + self.assertEqual(val, get_global_setting('PART_PURCHASEABLE')) + self.assertEqual(val, get_global_setting('PART_SALABLE')) + self.assertEqual(val, get_global_setting('PART_TRACKABLE')) part = self.make_part() @@ -546,7 +547,7 @@ class PartSettingsTest(InvenTreeTestCase): part.validate_unique() # Now update the settings so duplicate IPN values are *not* allowed - InvenTreeSetting.set_setting('PART_ALLOW_DUPLICATE_IPN', False, self.user) + set_global_setting('PART_ALLOW_DUPLICATE_IPN', False, self.user) with self.assertRaises(ValidationError): part = Part(name='Hello', description='A thing', IPN='IPN123', revision='C') diff --git a/src/backend/InvenTree/part/test_pricing.py b/src/backend/InvenTree/part/test_pricing.py index 2cdc4c54a6..bf1b6764cc 100644 --- a/src/backend/InvenTree/part/test_pricing.py +++ b/src/backend/InvenTree/part/test_pricing.py @@ -12,6 +12,7 @@ import company.models import order.models import part.models import stock.models +from common.settings import get_global_setting, set_global_setting from InvenTree.unit_test import InvenTreeTestCase from order.status_codes import PurchaseOrderStatus @@ -172,7 +173,7 @@ class PartPricingTests(InvenTreeTestCase): def test_internal_pricing(self): """Tests for internal price breaks.""" # Ensure internal pricing is enabled - common.models.InvenTreeSetting.set_setting('PART_INTERNAL_PRICE', True, None) + set_global_setting('PART_INTERNAL_PRICE', True, None) pricing = self.part.pricing @@ -221,9 +222,7 @@ class PartPricingTests(InvenTreeTestCase): ) # Ensure that initially, stock item pricing is disabled - common.models.InvenTreeSetting.set_setting( - 'PRICING_USE_STOCK_PRICING', False, None - ) + set_global_setting('PRICING_USE_STOCK_PRICING', False, None) pricing = p.pricing pricing.update_pricing() @@ -235,9 +234,7 @@ class PartPricingTests(InvenTreeTestCase): self.assertIsNone(pricing.overall_max) # Turn on stock pricing - common.models.InvenTreeSetting.set_setting( - 'PRICING_USE_STOCK_PRICING', True, None - ) + set_global_setting('PRICING_USE_STOCK_PRICING', True, None) pricing.update_pricing() diff --git a/src/backend/InvenTree/part/urls.py b/src/backend/InvenTree/part/urls.py index 35eca76837..9b05133607 100644 --- a/src/backend/InvenTree/part/urls.py +++ b/src/backend/InvenTree/part/urls.py @@ -3,7 +3,6 @@ Provides URL endpoints for: - Display / Create / Edit / Delete PartCategory - Display / Create / Edit / Delete Part -- Create / Edit / Delete PartAttachment - Display / Create / Edit / Delete SupplierPart """ diff --git a/src/backend/InvenTree/plugin/base/event/events.py b/src/backend/InvenTree/plugin/base/event/events.py index 33a43b75f9..ee5a814763 100644 --- a/src/backend/InvenTree/plugin/base/event/events.py +++ b/src/backend/InvenTree/plugin/base/event/events.py @@ -8,6 +8,7 @@ from django.db.models.signals import post_delete, post_save from django.dispatch.dispatcher import receiver import InvenTree.exceptions +from common.settings import get_global_setting from InvenTree.ready import canAppAccessDatabase, isImportingData from InvenTree.tasks import offload_task from plugin.registry import registry @@ -21,9 +22,7 @@ def trigger_event(event, *args, **kwargs): This event will be stored in the database, and the worker will respond to it later on. """ - from common.models import InvenTreeSetting - - if not InvenTreeSetting.get_setting('ENABLE_PLUGINS_EVENTS', False): + if not get_global_setting('ENABLE_PLUGINS_EVENTS', False): # Do nothing if plugin events are not enabled return @@ -50,12 +49,10 @@ def register_event(event, *args, **kwargs): Note: This function is processed by the background worker, as it performs multiple database access operations. """ - from common.models import InvenTreeSetting - logger.debug("Registering triggered event: '%s'", event) # Determine if there are any plugins which are interested in responding - if settings.PLUGIN_TESTING or InvenTreeSetting.get_setting('ENABLE_PLUGINS_EVENTS'): + if settings.PLUGIN_TESTING or get_global_setting('ENABLE_PLUGINS_EVENTS'): # Check if the plugin registry needs to be reloaded registry.check_reload() diff --git a/src/backend/InvenTree/plugin/base/integration/AppMixin.py b/src/backend/InvenTree/plugin/base/integration/AppMixin.py index 196b941253..6c102cf9a8 100644 --- a/src/backend/InvenTree/plugin/base/integration/AppMixin.py +++ b/src/backend/InvenTree/plugin/base/integration/AppMixin.py @@ -38,11 +38,9 @@ class AppMixin: force_reload (bool, optional): Only reload base apps. Defaults to False. full_reload (bool, optional): Reload everything - including plugin mechanism. Defaults to False. """ - from common.models import InvenTreeSetting + from common.settings import get_global_setting - if settings.PLUGIN_TESTING or InvenTreeSetting.get_setting( - 'ENABLE_PLUGINS_APP' - ): + if settings.PLUGIN_TESTING or get_global_setting('ENABLE_PLUGINS_APP'): logger.info('Registering IntegrationPlugin apps') apps_changed = False diff --git a/src/backend/InvenTree/plugin/base/integration/ScheduleMixin.py b/src/backend/InvenTree/plugin/base/integration/ScheduleMixin.py index e12cc2a25d..8b350a7ed1 100644 --- a/src/backend/InvenTree/plugin/base/integration/ScheduleMixin.py +++ b/src/backend/InvenTree/plugin/base/integration/ScheduleMixin.py @@ -5,6 +5,7 @@ import logging from django.conf import settings from django.db.utils import OperationalError, ProgrammingError +from common.settings import get_global_setting from plugin.helpers import MixinImplementationError logger = logging.getLogger('inventree') @@ -58,16 +59,12 @@ class ScheduleMixin: @classmethod def _activate_mixin(cls, registry, plugins, *args, **kwargs): """Activate schedules from plugins with the ScheduleMixin.""" - from common.models import InvenTreeSetting - logger.debug('Activating plugin tasks') # List of tasks we have activated task_keys = [] - if settings.PLUGIN_TESTING or InvenTreeSetting.get_setting( - 'ENABLE_PLUGINS_SCHEDULE' - ): + if settings.PLUGIN_TESTING or get_global_setting('ENABLE_PLUGINS_SCHEDULE'): for _key, plugin in plugins: if plugin.mixin_enabled('schedule') and plugin.is_active(): # Only active tasks for plugins which are enabled diff --git a/src/backend/InvenTree/plugin/base/integration/UrlsMixin.py b/src/backend/InvenTree/plugin/base/integration/UrlsMixin.py index 7a5972c0d8..aa526b2dab 100644 --- a/src/backend/InvenTree/plugin/base/integration/UrlsMixin.py +++ b/src/backend/InvenTree/plugin/base/integration/UrlsMixin.py @@ -5,6 +5,7 @@ import logging from django.conf import settings from django.urls import include, re_path +from common.settings import get_global_setting from plugin.urls import PLUGIN_BASE logger = logging.getLogger('inventree') @@ -36,11 +37,7 @@ class UrlsMixin: force_reload (bool, optional): Only reload base apps. Defaults to False. full_reload (bool, optional): Reload everything - including plugin mechanism. Defaults to False. """ - from common.models import InvenTreeSetting - - if settings.PLUGIN_TESTING or InvenTreeSetting.get_setting( - 'ENABLE_PLUGINS_URL' - ): + if settings.PLUGIN_TESTING or get_global_setting('ENABLE_PLUGINS_URL'): logger.info('Registering UrlsMixin Plugin') urls_changed = False # check whether an activated plugin extends UrlsMixin diff --git a/src/backend/InvenTree/plugin/models.py b/src/backend/InvenTree/plugin/models.py index c6fee27fd3..4989f56af2 100644 --- a/src/backend/InvenTree/plugin/models.py +++ b/src/backend/InvenTree/plugin/models.py @@ -12,6 +12,7 @@ from django.utils.translation import gettext_lazy as _ import common.models import InvenTree.models +import plugin.staticfiles from plugin import InvenTreePlugin, registry @@ -186,6 +187,20 @@ class PluginConfig(InvenTree.models.MetadataMixin, models.Model): return getattr(self.plugin, 'is_package', False) + def activate(self, active: bool) -> None: + """Set the 'active' status of this plugin instance.""" + from InvenTree.tasks import check_for_migrations, offload_task + + if self.active == active: + return + + self.active = active + self.save() + + if active: + offload_task(check_for_migrations) + offload_task(plugin.staticfiles.copy_plugin_static_files, self.key) + class PluginSetting(common.models.BaseInvenTreeSetting): """This model represents settings for individual plugins.""" diff --git a/src/backend/InvenTree/plugin/registry.py b/src/backend/InvenTree/plugin/registry.py index 27b307df54..92f72bc0f1 100644 --- a/src/backend/InvenTree/plugin/registry.py +++ b/src/backend/InvenTree/plugin/registry.py @@ -25,6 +25,7 @@ from django.urls import clear_url_caches, path from django.utils.text import slugify from django.utils.translation import gettext_lazy as _ +from common.settings import get_global_setting, set_global_setting from InvenTree.config import get_plugin_dir from InvenTree.ready import canAppAccessDatabase @@ -219,51 +220,15 @@ class PluginsRegistry: """ logger.info('Loading plugins') - registered_successful = False - blocked_plugin = None - retry_counter = settings.PLUGIN_RETRY - - while not registered_successful: - try: - # We are using the db so for migrations etc we need to try this block - self._init_plugins(blocked_plugin) - self._activate_plugins(full_reload=full_reload) - registered_successful = True - except (OperationalError, ProgrammingError): # pragma: no cover - # Exception if the database has not been migrated yet - logger.info('Database not accessible while loading plugins') - break - except IntegrationPluginError as error: - logger.exception( - '[PLUGIN] Encountered an error with %s:\n%s', - error.path, - error.message, - ) - log_error({error.path: error.message}, 'load') - blocked_plugin = error.path # we will not try to load this app again - - # Initialize apps without any plugins - self._clean_registry() - self._clean_installed_apps() - self._activate_plugins(force_reload=True, full_reload=full_reload) - - # We do not want to end in an endless loop - retry_counter -= 1 - - if retry_counter <= 0: # pragma: no cover - if settings.PLUGIN_TESTING: - print('[PLUGIN] Max retries, breaking loading') - break - if settings.PLUGIN_TESTING: - print( - f'[PLUGIN] Above error occurred during testing - {retry_counter}/{settings.PLUGIN_RETRY} retries left' - ) - - # now the loading will re-start up with init - - # disable full reload after the first round - if full_reload: - full_reload = False + try: + self._init_plugins() + self._activate_plugins(full_reload=full_reload) + except (OperationalError, ProgrammingError, IntegrityError): + # Exception if the database has not been migrated yet, or is not ready + pass + except IntegrationPluginError: + # Plugin specific error has already been handled + pass # ensure plugins_loaded is True self.plugins_loaded = True @@ -478,18 +443,13 @@ class PluginsRegistry: # endregion # region general internal loading / activating / deactivating / unloading - def _init_plugins(self, disabled: str = None): - """Initialise all found plugins. + def _init_plugin(self, plugin, configs: dict): + """Initialise a single plugin. Args: - disabled (str, optional): Loading path of disabled app. Defaults to None. - - Raises: - error: IntegrationPluginError + plugin: Plugin module """ - # Imports need to be in this level to prevent early db model imports from InvenTree import version - from plugin.models import PluginConfig def safe_reference(plugin, key: str, active: bool = True): """Safe reference to plugin dicts.""" @@ -503,6 +463,99 @@ class PluginsRegistry: self.plugins_inactive[key] = plugin.db self.plugins_full[key] = plugin + # These checks only use attributes - never use plugin supplied functions -> that would lead to arbitrary code execution!! + plg_name = plugin.NAME + plg_key = slugify( + plugin.SLUG if getattr(plugin, 'SLUG', None) else plg_name + ) # keys are slugs! + + logger.info("Loading plugin '%s'", plg_key) + + if plg_key in configs: + plg_db = configs[plg_key] + else: + plg_db = self.get_plugin_config(plg_key, plg_name) + + plugin.db = plg_db + + # Check if this is a 'builtin' plugin + builtin = plugin.check_is_builtin() + + package_name = None + + # Extract plugin package name + if getattr(plugin, 'is_package', False): + package_name = getattr(plugin, '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 + # - If this plugin has been explicitly enabled by the user + if settings.PLUGIN_TESTING or builtin or (plg_db and plg_db.active): + # Initialize package - we can be sure that an admin has activated the plugin + logger.debug('Loading plugin `%s`', plg_name) + + try: + t_start = time.time() + plg_i: InvenTreePlugin = plugin() + dt = time.time() - t_start + logger.debug('Loaded plugin `%s` in %.3fs', plg_name, dt) + except Exception as error: + handle_error( + error, log_name='init' + ) # log error and raise it -> disable plugin + + logger.warning('Plugin `%s` could not be loaded', plg_name) + + # 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 + + # Run version check for plugin + if (plg_i.MIN_VERSION or plg_i.MAX_VERSION) and not plg_i.check_version(): + # Disable plugin + safe_reference(plugin=plg_i, key=plg_key, active=False) + + p = plg_name + v = version.inventreeVersion() + _msg = _( + f"Plugin '{p}' is not compatible with the current InvenTree version {v}" + ) + if v := plg_i.MIN_VERSION: + _msg += _(f'Plugin requires at least version {v}') + if v := plg_i.MAX_VERSION: + _msg += _(f'Plugin requires at most version {v}') + # Log to error stack + log_error(_msg, reference='init') + else: + safe_reference(plugin=plg_i, key=plg_key) + else: # pragma: no cover + safe_reference(plugin=plugin, key=plg_key, active=False) + + def _init_plugins(self): + """Initialise all found plugins. + + Args: + disabled (str, optional): Loading path of disabled app. Defaults to None. + + Raises: + error: IntegrationPluginError + """ + # Imports need to be in this level to prevent early db model imports + from plugin.models import PluginConfig + logger.debug('Starting plugin initialization') # Fetch and cache list of existing plugin configuration instances @@ -510,102 +563,32 @@ class PluginsRegistry: # Initialize plugins for plg in self.plugin_modules: - # These checks only use attributes - never use plugin supplied functions -> that would lead to arbitrary code execution!! - plg_name = plg.NAME - plg_key = slugify( - plg.SLUG if getattr(plg, 'SLUG', None) else plg_name - ) # keys are slugs! + # Attempt to load each individual plugin + attempts = settings.PLUGIN_RETRY - try: - if plg_key in plugin_configs: - # Configuration already exists - plg_db = plugin_configs[plg_key] - else: - # Configuration needs to be created - 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: - raise error # pragma: no cover - plg_db = None - except IntegrityError as error: # pragma: no cover - logger.exception('Error initializing plugin `%s`: %s', plg_name, error) - handle_error(error, log_name='init') - - # Append reference to plugin - plg.db = plg_db - - # 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 - # - If this plugin has been explicitly enabled by the user - if settings.PLUGIN_TESTING or builtin or (plg_db and plg_db.active): - # Check if the plugin was blocked -> threw an error; option1: package, option2: file-based - if disabled and disabled in (plg.__name__, plg.__module__): - safe_reference(plugin=plg, key=plg_key, active=False) - continue # continue -> the plugin is not loaded - - # Initialize package - we can be sure that an admin has activated the plugin - logger.debug('Loading plugin `%s`', plg_name) + while attempts > 0: + attempts -= 1 try: - t_start = time.time() - plg_i: InvenTreePlugin = plg() - dt = time.time() - t_start - logger.debug('Loaded plugin `%s` in %.3fs', plg_name, dt) + self._init_plugin(plg, plugin_configs) + break + except IntegrationPluginError as error: + # Error has been handled downstream + pass except Exception as error: + # Handle the error, log it and try again handle_error( - error, log_name='init' - ) # log error and raise it -> disable plugin - logger.warning('Plugin `%s` could not be loaded', plg_name) - - # 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 - - # Run version check for plugin - if ( - plg_i.MIN_VERSION or plg_i.MAX_VERSION - ) and not plg_i.check_version(): - # Disable plugin - safe_reference(plugin=plg_i, key=plg_key, active=False) - - p = plg_name - v = version.inventreeVersion() - _msg = _( - f"Plugin '{p}' is not compatible with the current InvenTree version {v}" + error, log_name='init', do_raise=settings.PLUGIN_TESTING ) - if v := plg_i.MIN_VERSION: - _msg += _(f'Plugin requires at least version {v}') - if v := plg_i.MAX_VERSION: - _msg += _(f'Plugin requires at most version {v}') - # Log to error stack - log_error(_msg, reference='init') - else: - safe_reference(plugin=plg_i, key=plg_key) - else: # pragma: no cover - safe_reference(plugin=plg, key=plg_key, active=False) + + if attempts == 0: + logger.exception( + '[PLUGIN] Encountered an error with %s:\n%s', + error.path, + str(error), + ) + + logger.debug('Finished plugin initialization') def __get_mixin_order(self): """Returns a list of mixin classes, in the order that they should be activated.""" @@ -732,12 +715,10 @@ class PluginsRegistry: # region plugin registry hash calculations def update_plugin_hash(self): """When the state of the plugin registry changes, update the hash.""" - from common.models import InvenTreeSetting - self.registry_hash = self.calculate_plugin_hash() try: - old_hash = InvenTreeSetting.get_setting( + old_hash = get_global_setting( '_PLUGIN_REGISTRY_HASH', '', create=False, cache=False ) except Exception: @@ -748,7 +729,7 @@ class PluginsRegistry: logger.debug( 'Updating plugin registry hash: %s', str(self.registry_hash) ) - InvenTreeSetting.set_setting( + set_global_setting( '_PLUGIN_REGISTRY_HASH', self.registry_hash, change_user=None ) except (OperationalError, ProgrammingError): @@ -776,8 +757,6 @@ class PluginsRegistry: """ from hashlib import md5 - from common.models import InvenTreeSetting - data = md5() # Hash for all loaded plugins @@ -789,7 +768,7 @@ class PluginsRegistry: for k in self.plugin_settings_keys(): try: - val = InvenTreeSetting.get_setting(k, False, create=False) + val = get_global_setting(k) msg = f'{k}-{val}' data.update(msg.encode()) @@ -800,8 +779,6 @@ class PluginsRegistry: def check_reload(self): """Determine if the registry needs to be reloaded.""" - from common.models import InvenTreeSetting - if settings.TESTING: # Skip if running during unit testing return @@ -817,9 +794,7 @@ class PluginsRegistry: self.registry_hash = self.calculate_plugin_hash() try: - reg_hash = InvenTreeSetting.get_setting( - '_PLUGIN_REGISTRY_HASH', '', create=False - ) + reg_hash = get_global_setting('_PLUGIN_REGISTRY_HASH', '', create=False) except Exception as exc: logger.exception('Failed to retrieve plugin registry hash: %s', str(exc)) return diff --git a/src/backend/InvenTree/plugin/serializers.py b/src/backend/InvenTree/plugin/serializers.py index aa4deffa1a..30fd5325ee 100644 --- a/src/backend/InvenTree/plugin/serializers.py +++ b/src/backend/InvenTree/plugin/serializers.py @@ -208,15 +208,7 @@ class PluginActivateSerializer(serializers.Serializer): def update(self, instance, validated_data): """Apply the new 'active' value to the plugin instance.""" - from InvenTree.tasks import check_for_migrations, offload_task - - instance.active = validated_data.get('active', True) - instance.save() - - if instance.active: - # A plugin has just been activated - check for database migrations - offload_task(check_for_migrations) - + instance.activate(validated_data.get('active', True)) return instance diff --git a/src/backend/InvenTree/plugin/staticfiles.py b/src/backend/InvenTree/plugin/staticfiles.py new file mode 100644 index 0000000000..e80f4a25f5 --- /dev/null +++ b/src/backend/InvenTree/plugin/staticfiles.py @@ -0,0 +1,92 @@ +"""Static files management for InvenTree plugins.""" + +import logging +from pathlib import Path + +from django.contrib.staticfiles.storage import staticfiles_storage + +from plugin.registry import registry + +logger = logging.getLogger('inventree') + + +def clear_static_dir(path, recursive=True): + """Clear the specified directory from the 'static' output directory. + + Arguments: + path: The path to the directory to clear + recursive: If True, clear the directory recursively + """ + if not staticfiles_storage.exists(path): + return + + dirs, files = staticfiles_storage.listdir(path) + + for f in files: + staticfiles_storage.delete(f'{path}/{f}') + + if recursive: + for d in dirs: + clear_static_dir(f'{path}/{d}', recursive=True) + staticfiles_storage.delete(d) + + +def collect_plugins_static_files(): + """Copy static files from all installed plugins into the static directory.""" + registry.check_reload() + + logger.info('Collecting static files for all installed plugins.') + + for slug in registry.plugins.keys(): + copy_plugin_static_files(slug) + + +def copy_plugin_static_files(slug): + """Copy static files for the specified plugin.""" + registry.check_reload() + + plugin = registry.get_plugin(slug) + + if not plugin: + return + + logger.info("Copying static files for plugin '%s'") + + # Get the source path for the plugin + source_path = plugin.path().joinpath('static') + + if not source_path.is_dir(): + return + + # Create prefix for the destination path + destination_prefix = f'plugins/{slug}/' + + # Clear the destination path + clear_static_dir(destination_prefix) + + items = list(source_path.glob('*')) + + idx = 0 + copied = 0 + + while idx < len(items): + item = items[idx] + + idx += 1 + + if item.is_dir(): + items.extend(item.glob('*')) + continue + + if item.is_file(): + relative_path = item.relative_to(source_path) + + destination_path = f'{destination_prefix}{relative_path}' + + with item.open('rb') as src: + staticfiles_storage.save(destination_path, src) + + logger.debug(f'- copied {item} to {destination_path}') + copied += 1 + + logger.info(f"Copied %s static files for plugin '%s'.", copied, slug) diff --git a/src/backend/InvenTree/plugin/templatetags/plugin_extras.py b/src/backend/InvenTree/plugin/templatetags/plugin_extras.py index 26612b76ba..38abaa650e 100644 --- a/src/backend/InvenTree/plugin/templatetags/plugin_extras.py +++ b/src/backend/InvenTree/plugin/templatetags/plugin_extras.py @@ -4,8 +4,8 @@ from django import template from django.conf import settings as djangosettings from django.urls import reverse -from common.models import InvenTreeSetting from common.notifications import storage +from common.settings import get_global_setting from plugin.registry import registry register = template.Library() @@ -55,7 +55,7 @@ def navigation_enabled(*args, **kwargs): """Is plugin navigation enabled?""" if djangosettings.PLUGIN_TESTING: return True - return InvenTreeSetting.get_setting('ENABLE_PLUGINS_NAVIGATION') # pragma: no cover + return get_global_setting('ENABLE_PLUGINS_NAVIGATION') # pragma: no cover @register.simple_tag() diff --git a/src/backend/InvenTree/plugin/test_api.py b/src/backend/InvenTree/plugin/test_api.py index ed4ae7439b..bdef4481e3 100644 --- a/src/backend/InvenTree/plugin/test_api.py +++ b/src/backend/InvenTree/plugin/test_api.py @@ -35,7 +35,7 @@ class PluginDetailAPITest(PluginMixin, InvenTreeAPITestCase): 'packagename': 'invalid_package_name-asdads-asfd-asdf-asdf-asdf', }, expected_code=400, - max_query_time=20, + max_query_time=30, ) # valid - Pypi @@ -43,7 +43,7 @@ class PluginDetailAPITest(PluginMixin, InvenTreeAPITestCase): url, {'confirm': True, 'packagename': self.PKG_NAME}, expected_code=201, - max_query_time=20, + max_query_time=30, ).data self.assertEqual(data['success'], 'Installed plugin successfully') @@ -53,7 +53,7 @@ class PluginDetailAPITest(PluginMixin, InvenTreeAPITestCase): url, {'confirm': True, 'url': self.PKG_URL}, expected_code=201, - max_query_time=20, + max_query_time=30, ).data self.assertEqual(data['success'], 'Installed plugin successfully') @@ -63,7 +63,7 @@ class PluginDetailAPITest(PluginMixin, InvenTreeAPITestCase): url, {'confirm': True, 'url': self.PKG_URL, 'packagename': self.PKG_NAME}, expected_code=201, - max_query_time=20, + max_query_time=30, ).data self.assertEqual(data['success'], 'Installed plugin successfully') diff --git a/src/backend/InvenTree/plugin/test_plugin.py b/src/backend/InvenTree/plugin/test_plugin.py index cff4373975..4fe03ea1c9 100644 --- a/src/backend/InvenTree/plugin/test_plugin.py +++ b/src/backend/InvenTree/plugin/test_plugin.py @@ -273,15 +273,17 @@ class RegistryTests(TestCase): # Reload to rediscover plugins registry.reload_plugins(full_reload=True, collect=True) - self.assertEqual(len(registry.errors), 3) + self.assertEqual(len(registry.errors), 2) + # There should be at least one discovery error in the module `broken_file` self.assertGreater(len(registry.errors.get('discovery')), 0) self.assertEqual( registry.errors.get('discovery')[0]['broken_file'], "name 'bb' is not defined", ) + # There should be at least one load error with an intentional KeyError - self.assertGreater(len(registry.errors.get('load')), 0) + self.assertGreater(len(registry.errors.get('init')), 0) self.assertEqual( - registry.errors.get('load')[0]['broken_sample'], "'This is a dummy error'" + registry.errors.get('init')[0]['broken_sample'], "'This is a dummy error'" ) diff --git a/src/backend/InvenTree/plugin/urls.py b/src/backend/InvenTree/plugin/urls.py index ac454e588e..5d6485e4ec 100644 --- a/src/backend/InvenTree/plugin/urls.py +++ b/src/backend/InvenTree/plugin/urls.py @@ -3,20 +3,18 @@ from django.conf import settings from django.urls import include, re_path +from common.validators import get_global_setting + PLUGIN_BASE = 'plugin' # Constant for links def get_plugin_urls(): """Returns a urlpattern that can be integrated into the global urls.""" - from common.models import InvenTreeSetting from plugin.registry import registry urls = [] - if ( - InvenTreeSetting.get_setting('ENABLE_PLUGINS_URL', False) - or settings.PLUGIN_TESTING_SETUP - ): + if get_global_setting('ENABLE_PLUGINS_URL', False) or settings.PLUGIN_TESTING_SETUP: for plugin in registry.plugins.values(): if plugin.mixin_enabled('urls'): urls.append(plugin.urlpatterns) diff --git a/src/backend/InvenTree/report/helpers.py b/src/backend/InvenTree/report/helpers.py index c0720ce348..8dcb196024 100644 --- a/src/backend/InvenTree/report/helpers.py +++ b/src/backend/InvenTree/report/helpers.py @@ -6,6 +6,8 @@ import logging from django.utils.translation import gettext_lazy as _ +from common.settings import get_global_setting + logger = logging.getLogger('inventree') @@ -67,10 +69,8 @@ def page_size(page_code): def report_page_size_default(): """Returns the default page size for PDF reports.""" - from common.models import InvenTreeSetting - try: - page_size = InvenTreeSetting.get_setting('REPORT_DEFAULT_PAGE_SIZE', 'A4') + page_size = get_global_setting('REPORT_DEFAULT_PAGE_SIZE', 'A4', create=False) except Exception as exc: logger.exception('Error getting default page size: %s', str(exc)) page_size = 'A4' diff --git a/src/backend/InvenTree/report/migrations/0026_auto_20240422_1301.py b/src/backend/InvenTree/report/migrations/0026_auto_20240422_1301.py index 838a0ae552..0e04b915db 100644 --- a/src/backend/InvenTree/report/migrations/0026_auto_20240422_1301.py +++ b/src/backend/InvenTree/report/migrations/0026_auto_20240422_1301.py @@ -36,6 +36,8 @@ def convert_legacy_labels(table_name, model_name, template_model): 'name', 'description', 'label', 'enabled', 'height', 'width', 'filename_pattern', 'filters' ] + non_null_fields = ['description', 'filename_pattern', 'filters'] + fieldnames = ', '.join(fields) query = f"SELECT {fieldnames} FROM {table_name};" @@ -56,6 +58,10 @@ def convert_legacy_labels(table_name, model_name, template_model): fields[idx]: row[idx] for idx in range(len(fields)) } + for field in non_null_fields: + if data.get(field, None) is None: + data[field] = '' + # Skip any "builtin" labels if 'label/inventree/' in data['label']: continue diff --git a/src/backend/InvenTree/report/models.py b/src/backend/InvenTree/report/models.py index 05584b5588..ec4ba2f2d5 100644 --- a/src/backend/InvenTree/report/models.py +++ b/src/backend/InvenTree/report/models.py @@ -21,6 +21,7 @@ import InvenTree.helpers import InvenTree.models import report.helpers import report.validators +from common.settings import get_global_setting from InvenTree.helpers_model import get_base_url from InvenTree.models import MetadataMixin from plugin.registry import registry @@ -311,8 +312,8 @@ class ReportTemplate(TemplateUploadMixin, ReportTemplateBase): def get_report_size(self): """Return the printable page size for this report.""" try: - page_size_default = common.models.InvenTreeSetting.get_setting( - 'REPORT_DEFAULT_PAGE_SIZE', 'A4' + page_size_default = get_global_setting( + 'REPORT_DEFAULT_PAGE_SIZE', 'A4', create=False ) except Exception: page_size_default = 'A4' diff --git a/src/backend/InvenTree/report/templates/report/inventree_test_report.html b/src/backend/InvenTree/report/templates/report/inventree_test_report.html index 4e25b4598f..25a4598154 100644 --- a/src/backend/InvenTree/report/templates/report/inventree_test_report.html +++ b/src/backend/InvenTree/report/templates/report/inventree_test_report.html @@ -111,8 +111,7 @@ content: "{% trans 'Stock Item Test Report' %}";
{% for key in test_keys %} - - {% getkey test_template_map key as test_template %} + {% getkey test_templates key as test_template %} {% getkey results key as test_result %} diff --git a/src/backend/InvenTree/report/templatetags/report.py b/src/backend/InvenTree/report/templatetags/report.py index aea2105abb..92fe1408c2 100644 --- a/src/backend/InvenTree/report/templatetags/report.py +++ b/src/backend/InvenTree/report/templatetags/report.py @@ -15,7 +15,7 @@ from PIL import Image import InvenTree.helpers import InvenTree.helpers_model import report.helpers -from common.models import InvenTreeSetting +from common.settings import get_global_setting from company.models import Company from part.models import Part @@ -87,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', cache=False) + debug_mode = get_global_setting('REPORT_DEBUG_MODE', cache=False) # Test if the file actually exists full_path = settings.MEDIA_ROOT.joinpath('report', 'assets', filename).resolve() @@ -132,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', cache=False) + debug_mode = get_global_setting('REPORT_DEBUG_MODE', cache=False) # Check if the file exists if not filename: @@ -300,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', cache=False) + debug_mode = get_global_setting('REPORT_DEBUG_MODE', cache=False) return InvenTree.helpers.getLogoImage(as_file=not debug_mode, **kwargs) diff --git a/src/backend/InvenTree/report/tests.py b/src/backend/InvenTree/report/tests.py index bf30286f15..b5ac753fd9 100644 --- a/src/backend/InvenTree/report/tests.py +++ b/src/backend/InvenTree/report/tests.py @@ -15,14 +15,14 @@ from PIL import Image import report.models as report_models from build.models import Build -from common.models import InvenTreeSetting +from common.models import Attachment, InvenTreeSetting from InvenTree.unit_test import InvenTreeAPITestCase from order.models import ReturnOrder, SalesOrder from plugin.registry import registry from report.models import LabelTemplate, ReportTemplate from report.templatetags import barcode as barcode_tags from report.templatetags import report as report_tags -from stock.models import StockItem, StockItemAttachment +from stock.models import StockItem class ReportTagTest(TestCase): @@ -502,7 +502,7 @@ class PrintTestMixins: }, expected_code=201, max_query_time=15, - max_query_count=1000, # TODO: Should look into this + max_query_count=500 * len(qs), ) @@ -548,7 +548,9 @@ class TestReportTest(PrintTestMixins, ReportTest): self.assertEqual(response.data['output'].startswith('/media/report/'), True) # By default, this should *not* have created an attachment against this stockitem - self.assertFalse(StockItemAttachment.objects.filter(stock_item=item).exists()) + self.assertFalse( + Attachment.objects.filter(model_id=item.pk, model_type='stockitem').exists() + ) return # TODO @matmair - Re-add this test after https://github.com/inventree/InvenTree/pull/7074/files#r1600694356 is resolved @@ -563,7 +565,9 @@ class TestReportTest(PrintTestMixins, ReportTest): self.assertEqual(response.data['output'].startswith('/media/report/'), True) # Check that a report has been uploaded - attachment = StockItemAttachment.objects.filter(stock_item=item).first() + attachment = Attachment.objects.filter( + model_id=item.pk, model_type='stockitem' + ).first() self.assertIsNotNone(attachment) def test_mdl_build(self): diff --git a/src/backend/InvenTree/stock/admin.py b/src/backend/InvenTree/stock/admin.py index 3601e992da..3ca5c6a664 100644 --- a/src/backend/InvenTree/stock/admin.py +++ b/src/backend/InvenTree/stock/admin.py @@ -16,7 +16,6 @@ from part.models import Part from .models import ( StockItem, - StockItemAttachment, StockItemTestResult, StockItemTracking, StockLocation, @@ -180,6 +179,11 @@ class StockItemResource(InvenTreeResource): column_name=_('Supplier Part ID'), widget=widgets.ForeignKeyWidget(SupplierPart), ) + supplier_part_sku = Field( + attribute='supplier_part__SKU', + column_name=_('Supplier Part SKU'), + readonly=True, + ) supplier = Field( attribute='supplier_part__supplier__id', column_name=_('Supplier ID'), @@ -296,15 +300,6 @@ class StockItemAdmin(ImportExportModelAdmin): ] -@admin.register(StockItemAttachment) -class StockAttachmentAdmin(admin.ModelAdmin): - """Admin class for StockAttachment.""" - - list_display = ('stock_item', 'attachment', 'comment') - - autocomplete_fields = ['stock_item'] - - @admin.register(StockItemTracking) class StockTrackingAdmin(ImportExportModelAdmin): """Admin class for StockTracking.""" diff --git a/src/backend/InvenTree/stock/api.py b/src/backend/InvenTree/stock/api.py index e78fd277a0..4823e40211 100644 --- a/src/backend/InvenTree/stock/api.py +++ b/src/backend/InvenTree/stock/api.py @@ -28,12 +28,7 @@ from build.serializers import BuildSerializer from company.models import Company, SupplierPart from company.serializers import CompanySerializer from generic.states.api import StatusView -from InvenTree.api import ( - APIDownloadMixin, - AttachmentMixin, - ListCreateDestroyAPIView, - MetadataView, -) +from InvenTree.api import APIDownloadMixin, ListCreateDestroyAPIView, MetadataView from InvenTree.filters import ( ORDER_FILTER_ALIAS, SEARCH_ORDER_FILTER, @@ -68,7 +63,6 @@ from stock.admin import LocationResource, StockItemResource from stock.generators import generate_batch_code, generate_serial_number from stock.models import ( StockItem, - StockItemAttachment, StockItemTestResult, StockItemTracking, StockLocation, @@ -332,6 +326,21 @@ class StockLocationFilter(rest_filters.FilterSet): return queryset + top_level = rest_filters.BooleanFilter( + label=_('Top Level'), + method='filter_top_level', + help_text=_('Filter by top-level locations'), + ) + + def filter_top_level(self, queryset, name, value): + """Filter by top-level locations.""" + cascade = str2bool(self.data.get('cascade', False)) + + if value and not cascade: + return queryset.filter(parent=None) + + return queryset + cascade = rest_filters.BooleanFilter( label=_('Cascade'), method='filter_cascade', @@ -344,9 +353,10 @@ class StockLocationFilter(rest_filters.FilterSet): Note: If the "parent" filter is provided, we offload the logic to that method. """ parent = self.data.get('parent', None) + top_level = str2bool(self.data.get('top_level', None)) # If the parent is *not* provided, update the results based on the "cascade" value - if not parent: + if not parent or top_level: if not value: # If "cascade" is False, only return top-level location queryset = queryset.filter(parent=None) @@ -1221,22 +1231,6 @@ class StockList(APIDownloadMixin, ListCreateDestroyAPIView): ] -class StockAttachmentList(AttachmentMixin, ListCreateDestroyAPIView): - """API endpoint for listing, creating and bulk deleting a StockItemAttachment (file upload).""" - - queryset = StockItemAttachment.objects.all() - serializer_class = StockSerializers.StockItemAttachmentSerializer - - filterset_fields = ['stock_item'] - - -class StockAttachmentDetail(AttachmentMixin, RetrieveUpdateDestroyAPI): - """Detail endpoint for StockItemAttachment.""" - - queryset = StockItemAttachment.objects.all() - serializer_class = StockSerializers.StockItemAttachmentSerializer - - class StockItemTestResultMixin: """Mixin class for the StockItemTestResult API endpoints.""" @@ -1408,6 +1402,22 @@ class StockTrackingList(ListAPI): return self.serializer_class(*args, **kwargs) + def get_delta_model_map(self) -> dict: + """Return a mapping of delta models to their respective models and serializers. + + This is used to generate additional context information for the historical data, + with some attempt at caching so that we can reduce the number of database hits. + """ + return { + 'part': (Part, PartBriefSerializer), + 'location': (StockLocation, StockSerializers.LocationSerializer), + 'customer': (Company, CompanySerializer), + 'purchaseorder': (PurchaseOrder, PurchaseOrderSerializer), + 'salesorder': (SalesOrder, SalesOrderSerializer), + 'returnorder': (ReturnOrder, ReturnOrderSerializer), + 'buildorder': (Build, BuildSerializer), + } + def list(self, request, *args, **kwargs): """List all stock tracking entries.""" queryset = self.filter_queryset(self.get_queryset()) @@ -1421,84 +1431,36 @@ class StockTrackingList(ListAPI): data = serializer.data - # Attempt to add extra context information to the historical data + delta_models = self.get_delta_model_map() + + # Construct a set of related models we need to lookup for later + related_model_lookups = {key: set() for key in delta_models.keys()} + + # Run a first pass through the data to determine which related models we need to lookup for item in data: - deltas = item['deltas'] + deltas = item['deltas'] or {} - if not deltas: - deltas = {} + for key in delta_models.keys(): + if key in deltas: + related_model_lookups[key].add(deltas[key]) - # Add part detail - if 'part' in deltas: - try: - part = Part.objects.get(pk=deltas['part']) - serializer = PartBriefSerializer(part) - deltas['part_detail'] = serializer.data - except Exception: - pass + for key in delta_models.keys(): + model, serializer = delta_models[key] - # Add location detail - if 'location' in deltas: - try: - location = StockLocation.objects.get(pk=deltas['location']) - serializer = StockSerializers.LocationSerializer(location) - deltas['location_detail'] = serializer.data - except Exception: - pass + # Fetch all related models in one go + related_models = model.objects.filter(pk__in=related_model_lookups[key]) - # Add stockitem detail - if 'stockitem' in deltas: - try: - stockitem = StockItem.objects.get(pk=deltas['stockitem']) - serializer = StockSerializers.StockItemSerializer(stockitem) - deltas['stockitem_detail'] = serializer.data - except Exception: - pass + # Construct a mapping of pk -> serialized data + related_data = {obj.pk: serializer(obj).data for obj in related_models} - # Add customer detail - if 'customer' in deltas: - try: - customer = Company.objects.get(pk=deltas['customer']) - serializer = CompanySerializer(customer) - deltas['customer_detail'] = serializer.data - except Exception: - pass + # Now, update the data with the serialized data + for item in data: + deltas = item['deltas'] or {} - # Add PurchaseOrder detail - if 'purchaseorder' in deltas: - try: - order = PurchaseOrder.objects.get(pk=deltas['purchaseorder']) - serializer = PurchaseOrderSerializer(order) - deltas['purchaseorder_detail'] = serializer.data - except Exception: - pass - - # Add SalesOrder detail - if 'salesorder' in deltas: - try: - order = SalesOrder.objects.get(pk=deltas['salesorder']) - serializer = SalesOrderSerializer(order) - deltas['salesorder_detail'] = serializer.data - except Exception: - pass - - # Add ReturnOrder detail - if 'returnorder' in deltas: - try: - order = ReturnOrder.objects.get(pk=deltas['returnorder']) - serializer = ReturnOrderSerializer(order) - deltas['returnorder_detail'] = serializer.data - except Exception: - pass - - # Add BuildOrder detail - if 'buildorder' in deltas: - try: - order = Build.objects.get(pk=deltas['buildorder']) - serializer = BuildSerializer(order) - deltas['buildorder_detail'] = serializer.data - except Exception: - pass + if key in deltas: + item['deltas'][f'{key}_detail'] = related_data.get( + deltas[key], None + ) if page is not None: return self.get_paginated_response(data) @@ -1641,18 +1603,6 @@ stock_api_urls = [ path('assign/', StockAssign.as_view(), name='api-stock-assign'), path('merge/', StockMerge.as_view(), name='api-stock-merge'), path('change_status/', StockChangeStatus.as_view(), name='api-stock-change-status'), - # StockItemAttachment API endpoints - path( - 'attachment/', - include([ - path( - '/', - StockAttachmentDetail.as_view(), - name='api-stock-attachment-detail', - ), - path('', StockAttachmentList.as_view(), name='api-stock-attachment-list'), - ]), - ), # StockItemTestResult API endpoints path( 'test/', diff --git a/src/backend/InvenTree/stock/migrations/0036_stockitemattachment.py b/src/backend/InvenTree/stock/migrations/0036_stockitemattachment.py index 946f6251b0..1ffc87b1e2 100644 --- a/src/backend/InvenTree/stock/migrations/0036_stockitemattachment.py +++ b/src/backend/InvenTree/stock/migrations/0036_stockitemattachment.py @@ -16,7 +16,7 @@ class Migration(migrations.Migration): name='StockItemAttachment', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('attachment', models.FileField(help_text='Select file to attach', upload_to=InvenTree.models.rename_attachment)), + ('attachment', models.FileField(help_text='Select file to attach', upload_to='attachments')), ('comment', models.CharField(help_text='File comment', max_length=100)), ('stock_item', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='attachments', to='stock.StockItem')), ], diff --git a/src/backend/InvenTree/stock/migrations/0059_auto_20210404_2016.py b/src/backend/InvenTree/stock/migrations/0059_auto_20210404_2016.py index b027a53854..3305b719e5 100644 --- a/src/backend/InvenTree/stock/migrations/0059_auto_20210404_2016.py +++ b/src/backend/InvenTree/stock/migrations/0059_auto_20210404_2016.py @@ -32,7 +32,7 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='stockitemattachment', name='attachment', - field=models.FileField(help_text='Select file to attach', upload_to=InvenTree.models.rename_attachment, verbose_name='Attachment'), + field=models.FileField(help_text='Select file to attach', upload_to='attachments', verbose_name='Attachment'), ), migrations.AlterField( model_name='stockitemattachment', diff --git a/src/backend/InvenTree/stock/migrations/0070_auto_20211128_0151.py b/src/backend/InvenTree/stock/migrations/0070_auto_20211128_0151.py index a2f6ef322d..3c23c28f65 100644 --- a/src/backend/InvenTree/stock/migrations/0070_auto_20211128_0151.py +++ b/src/backend/InvenTree/stock/migrations/0070_auto_20211128_0151.py @@ -20,6 +20,6 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='stockitemattachment', name='attachment', - field=models.FileField(blank=True, help_text='Select file to attach', null=True, upload_to=InvenTree.models.rename_attachment, verbose_name='Attachment'), + field=models.FileField(blank=True, help_text='Select file to attach', null=True, upload_to='attachments', verbose_name='Attachment'), ), ] diff --git a/src/backend/InvenTree/stock/migrations/0111_delete_stockitemattachment.py b/src/backend/InvenTree/stock/migrations/0111_delete_stockitemattachment.py new file mode 100644 index 0000000000..1526a63799 --- /dev/null +++ b/src/backend/InvenTree/stock/migrations/0111_delete_stockitemattachment.py @@ -0,0 +1,21 @@ +# Generated by Django 4.2.12 on 2024-06-09 09:02 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('build', '0050_auto_20240508_0138'), + ('common', '0026_auto_20240608_1238'), + ('company', '0069_company_active'), + ('order', '0099_alter_salesorder_status'), + ('part', '0123_parttesttemplate_choices'), + ('stock', '0110_alter_stockitemtestresult_finished_datetime_and_more') + ] + + operations = [ + migrations.DeleteModel( + name='StockItemAttachment', + ), + ] diff --git a/src/backend/InvenTree/stock/models.py b/src/backend/InvenTree/stock/models.py index 1def243c1a..f587cdf71f 100644 --- a/src/backend/InvenTree/stock/models.py +++ b/src/backend/InvenTree/stock/models.py @@ -32,6 +32,7 @@ import InvenTree.ready import InvenTree.tasks import report.mixins import report.models +from common.settings import get_global_setting from company import models as CompanyModels from InvenTree.fields import InvenTreeModelMoneyField, InvenTreeURLField from order.status_codes import SalesOrderStatusGroups @@ -234,9 +235,7 @@ class StockLocation( if user.is_superuser: return True - ownership_enabled = common.models.InvenTreeSetting.get_setting( - 'STOCK_OWNERSHIP_CONTROL' - ) + ownership_enabled = get_global_setting('STOCK_OWNERSHIP_CONTROL') if not ownership_enabled: # Location ownership function is not enabled, so return True @@ -310,15 +309,14 @@ def default_delete_on_deplete(): Now, there is a user-configurable setting to govern default behaviour. """ try: - return common.models.InvenTreeSetting.get_setting( - 'STOCK_DELETE_DEPLETED_DEFAULT', True - ) + return get_global_setting('STOCK_DELETE_DEPLETED_DEFAULT', True) except (IntegrityError, OperationalError): # Revert to original default behaviour return True class StockItem( + InvenTree.models.InvenTreeAttachmentMixin, InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models.InvenTreeNotesMixin, report.mixins.InvenTreeReportMixin, @@ -996,9 +994,7 @@ class StockItem( if user.is_superuser: return True - ownership_enabled = common.models.InvenTreeSetting.get_setting( - 'STOCK_OWNERSHIP_CONTROL' - ) + ownership_enabled = get_global_setting('STOCK_OWNERSHIP_CONTROL') if not ownership_enabled: # Location ownership function is not enabled, so return True @@ -1027,7 +1023,7 @@ class StockItem( today = InvenTree.helpers.current_date() - stale_days = common.models.InvenTreeSetting.get_setting('STOCK_STALE_DAYS') + stale_days = get_global_setting('STOCK_STALE_DAYS') if stale_days <= 0: return False @@ -1897,7 +1893,7 @@ class StockItem( except InvalidOperation: return False - allow_out_of_stock_transfer = common.models.InvenTreeSetting.get_setting( + allow_out_of_stock_transfer = get_global_setting( 'STOCK_ALLOW_OUT_OF_STOCK_TRANSFER', backup_value=False, cache=False ) @@ -2229,15 +2225,16 @@ def after_delete_stock_item(sender, instance: StockItem, **kwargs): """Function to be executed after a StockItem object is deleted.""" from part import tasks as part_tasks - if not InvenTree.ready.isImportingData(): + if not InvenTree.ready.isImportingData() and InvenTree.ready.canAppAccessDatabase( + allow_test=True + ): # Run this check in the background InvenTree.tasks.offload_task( part_tasks.notify_low_stock_if_required, instance.part ) # Schedule an update on parent part pricing - if InvenTree.ready.canAppAccessDatabase(allow_test=True): - instance.part.schedule_pricing_update(create=False) + instance.part.schedule_pricing_update(create=False) @receiver(post_save, sender=StockItem, dispatch_uid='stock_item_post_save_log') @@ -2245,31 +2242,18 @@ def after_save_stock_item(sender, instance: StockItem, created, **kwargs): """Hook function to be executed after StockItem object is saved/updated.""" from part import tasks as part_tasks - if created and not InvenTree.ready.isImportingData(): + if ( + created + and not InvenTree.ready.isImportingData() + and InvenTree.ready.canAppAccessDatabase(allow_test=True) + ): # Run this check in the background InvenTree.tasks.offload_task( part_tasks.notify_low_stock_if_required, instance.part ) - if InvenTree.ready.canAppAccessDatabase(allow_test=True): - instance.part.schedule_pricing_update(create=True) - - -class StockItemAttachment(InvenTree.models.InvenTreeAttachment): - """Model for storing file attachments against a StockItem object.""" - - @staticmethod - def get_api_url(): - """Return API url.""" - return reverse('api-stock-attachment-list') - - def getSubdir(self): - """Override attachment location.""" - return os.path.join('stock_files', str(self.stock_item.id)) - - stock_item = models.ForeignKey( - StockItem, on_delete=models.CASCADE, related_name='attachments' - ) + # Schedule an update on parent part pricing + instance.part.schedule_pricing_update(create=True) class StockItemTracking(InvenTree.models.InvenTreeModel): @@ -2380,23 +2364,28 @@ class StockItemTestResult(InvenTree.models.InvenTreeMetadataModel): super().clean() # If this test result corresponds to a template, check the requirements of the template - key = self.key + template = self.template - templates = self.stock_item.part.getTestTemplates() + if template is None: + # Fallback if there is no matching template + for template in self.stock_item.part.getTestTemplates(): + if self.key == template.key: + break - for template in templates: - if key == template.key: - if template.requires_value and not self.value: - raise ValidationError({ - 'value': _('Value must be provided for this test') - }) + if template: + if template.requires_value and not self.value: + raise ValidationError({ + 'value': _('Value must be provided for this test') + }) - if template.requires_attachment and not self.attachment: - raise ValidationError({ - 'attachment': _('Attachment must be uploaded for this test') - }) + if template.requires_attachment and not self.attachment: + raise ValidationError({ + 'attachment': _('Attachment must be uploaded for this test') + }) - break + if choices := template.get_choices(): + if self.value not in choices: + raise ValidationError({'value': _('Invalid value for this test')}) @property def key(self): diff --git a/src/backend/InvenTree/stock/serializers.py b/src/backend/InvenTree/stock/serializers.py index bf8ab2e0ac..a305bb90d2 100644 --- a/src/backend/InvenTree/stock/serializers.py +++ b/src/backend/InvenTree/stock/serializers.py @@ -1,7 +1,7 @@ """JSON serializers for Stock app.""" import logging -from datetime import datetime, timedelta +from datetime import timedelta from decimal import Decimal from django.core.exceptions import ValidationError as DjangoValidationError @@ -16,7 +16,6 @@ from sql_util.utils import SubqueryCount, SubquerySum from taggit.serializers import TagListSerializerField import build.models -import common.models import company.models import InvenTree.helpers import InvenTree.serializers @@ -25,13 +24,13 @@ import part.filters as part_filters import part.models as part_models import stock.filters import stock.status_codes +from common.settings import get_global_setting from company.serializers import SupplierPartSerializer from InvenTree.serializers import InvenTreeCurrencySerializer, InvenTreeDecimalField from part.serializers import PartBriefSerializer, PartTestTemplateSerializer from .models import ( StockItem, - StockItemAttachment, StockItemTestResult, StockItemTracking, StockLocation, @@ -391,6 +390,31 @@ class StockItemSerializer(InvenTree.serializers.InvenTreeTagModelSerializer): """ extra_kwargs = {'use_pack_size': {'write_only': True}} + def __init__(self, *args, **kwargs): + """Add detail fields.""" + part_detail = kwargs.pop('part_detail', False) + location_detail = kwargs.pop('location_detail', False) + supplier_part_detail = kwargs.pop('supplier_part_detail', False) + tests = kwargs.pop('tests', False) + path_detail = kwargs.pop('path_detail', False) + + super(StockItemSerializer, self).__init__(*args, **kwargs) + + if not part_detail: + self.fields.pop('part_detail') + + if not location_detail: + self.fields.pop('location_detail') + + if not supplier_part_detail: + self.fields.pop('supplier_part_detail') + + if not tests: + self.fields.pop('tests') + + if not path_detail: + self.fields.pop('location_path') + part = serializers.PrimaryKeyRelatedField( queryset=part_models.Part.objects.all(), many=False, @@ -476,7 +500,7 @@ class StockItemSerializer(InvenTree.serializers.InvenTreeTagModelSerializer): ) # Add flag to indicate if the StockItem is stale - stale_days = common.models.InvenTreeSetting.get_setting('STOCK_STALE_DAYS') + stale_days = get_global_setting('STOCK_STALE_DAYS') stale_date = InvenTree.helpers.current_date() + timedelta(days=stale_days) stale_filter = ( StockItem.IN_STOCK_FILTER @@ -547,31 +571,6 @@ class StockItemSerializer(InvenTree.serializers.InvenTreeTagModelSerializer): tags = TagListSerializerField(required=False) - def __init__(self, *args, **kwargs): - """Add detail fields.""" - part_detail = kwargs.pop('part_detail', False) - location_detail = kwargs.pop('location_detail', False) - supplier_part_detail = kwargs.pop('supplier_part_detail', False) - tests = kwargs.pop('tests', False) - path_detail = kwargs.pop('path_detail', False) - - super(StockItemSerializer, self).__init__(*args, **kwargs) - - if not part_detail: - self.fields.pop('part_detail') - - if not location_detail: - self.fields.pop('location_detail') - - if not supplier_part_detail: - self.fields.pop('supplier_part_detail') - - if not tests: - self.fields.pop('tests') - - if not path_detail: - self.fields.pop('location_path') - class SerializeStockItemSerializer(serializers.Serializer): """A DRF serializer for "serializing" a StockItem. @@ -730,7 +729,7 @@ class InstallStockItemSerializer(serializers.Serializer): parent_item = self.context['item'] parent_part = parent_item.part - if common.models.InvenTreeSetting.get_setting( + if get_global_setting( 'STOCK_ENFORCE_BOM_INSTALLATION', backup_value=True, cache=False ): # Check if the selected part is in the Bill of Materials of the parent item @@ -1078,6 +1077,15 @@ class LocationSerializer(InvenTree.serializers.InvenTreeTagModelSerializer): return queryset + parent = serializers.PrimaryKeyRelatedField( + queryset=StockLocation.objects.all(), + many=False, + allow_null=True, + required=False, + label=_('Parent Location'), + help_text=_('Parent stock location'), + ) + url = serializers.CharField(source='get_absolute_url', read_only=True) items = serializers.IntegerField(read_only=True, label=_('Stock Items')) @@ -1101,21 +1109,6 @@ class LocationSerializer(InvenTree.serializers.InvenTreeTagModelSerializer): ) -class StockItemAttachmentSerializer( - InvenTree.serializers.InvenTreeAttachmentSerializer -): - """Serializer for StockItemAttachment model.""" - - class Meta: - """Metaclass options.""" - - model = StockItemAttachment - - fields = InvenTree.serializers.InvenTreeAttachmentSerializer.attachment_fields([ - 'stock_item' - ]) - - class StockTrackingSerializer(InvenTree.serializers.InvenTreeModelSerializer): """Serializer for StockItemTracking model.""" diff --git a/src/backend/InvenTree/stock/templates/stock/item.html b/src/backend/InvenTree/stock/templates/stock/item.html index 214a409bcd..f85c5694e9 100644 --- a/src/backend/InvenTree/stock/templates/stock/item.html +++ b/src/backend/InvenTree/stock/templates/stock/item.html @@ -220,17 +220,7 @@ }); onPanelLoad('attachments', function() { - loadAttachmentTable('{% url "api-stock-attachment-list" %}', { - filters: { - stock_item: {{ item.pk }}, - }, - fields: { - stock_item: { - value: {{ item.pk }}, - hidden: true, - } - } - }); + loadAttachmentTable('stockitem', {{ item.pk }}); }); {% settings_value "TEST_STATION_DATA" as test_station_fields %} diff --git a/src/backend/InvenTree/stock/templates/stock/location.html b/src/backend/InvenTree/stock/templates/stock/location.html index 50483ab0a3..6c052e517b 100644 --- a/src/backend/InvenTree/stock/templates/stock/location.html +++ b/src/backend/InvenTree/stock/templates/stock/location.html @@ -203,9 +203,11 @@

{% trans "Stock Items" %}

{% include "spacer.html" %}
+ {% if roles.stock.add and not part.virtual %} + {% endif %}
@@ -278,6 +280,8 @@ params: { {% if location %} parent: {{ location.pk }}, + {% else %} + top_level: true, {% endif %} }, allowTreeView: true, diff --git a/src/backend/InvenTree/stock/test_api.py b/src/backend/InvenTree/stock/test_api.py index 07b08334ea..7848fd8234 100644 --- a/src/backend/InvenTree/stock/test_api.py +++ b/src/backend/InvenTree/stock/test_api.py @@ -2,6 +2,7 @@ import io import os +import random from datetime import datetime, timedelta from enum import IntEnum @@ -22,6 +23,7 @@ from part.models import Part, PartTestTemplate from stock.models import ( StockItem, StockItemTestResult, + StockItemTracking, StockLocation, StockLocationType, ) @@ -883,13 +885,6 @@ class StockItemListTest(StockAPITestCase): def test_query_count(self): """Test that the number of queries required to fetch stock items is reasonable.""" - - def get_stock(data, expected_status=200): - """Helper function to fetch stock items.""" - response = self.client.get(self.list_url, data=data) - self.assertEqual(response.status_code, expected_status) - return response.data - # Create a bunch of StockItem objects prt = Part.objects.first() @@ -899,20 +894,18 @@ class StockItemListTest(StockAPITestCase): ]) # List *all* stock items - with self.assertNumQueriesLessThan(25): - get_stock({}) + self.get(self.list_url, {}, max_query_count=35) # List all stock items, with part detail - with self.assertNumQueriesLessThan(20): - get_stock({'part_detail': True}) + self.get(self.list_url, {'part_detail': True}, max_query_count=35) # List all stock items, with supplier_part detail - with self.assertNumQueriesLessThan(20): - get_stock({'supplier_part_detail': True}) + self.get(self.list_url, {'supplier_part_detail': True}, max_query_count=35) # List all stock items, with 'location' and 'tests' detail - with self.assertNumQueriesLessThan(20): - get_stock({'location_detail': True, 'tests': True}) + self.get( + self.list_url, {'location_detail': True, 'tests': True}, max_query_count=35 + ) class StockItemTest(StockAPITestCase): @@ -1715,6 +1708,150 @@ class StockTestResultTest(StockAPITestCase): self.assertEqual(StockItemTestResult.objects.count(), n) + def test_value_choices(self): + """Test that the 'value' field is correctly validated.""" + url = reverse('api-stock-test-result-list') + + test_template = PartTestTemplate.objects.first() + + test_template.choices = 'AA, BB, CC' + test_template.save() + + stock_item = StockItem.objects.create( + part=test_template.part, quantity=1, location=StockLocation.objects.first() + ) + + # Create result with invalid choice + response = self.post( + url, + { + 'template': test_template.pk, + 'stock_item': stock_item.pk, + 'result': True, + 'value': 'DD', + }, + expected_code=400, + ) + + self.assertIn('Invalid value for this test', str(response.data['value'])) + + # Create result with valid choice + response = self.post( + url, + { + 'template': test_template.pk, + 'stock_item': stock_item.pk, + 'result': True, + 'value': 'BB', + }, + expected_code=201, + ) + + # Create result with unrestricted choice + test_template.choices = '' + test_template.save() + + response = self.post( + url, + { + 'template': test_template.pk, + 'stock_item': stock_item.pk, + 'result': False, + 'value': '12345', + }, + expected_code=201, + ) + + +class StockTrackingTest(StockAPITestCase): + """Tests for the StockTracking API endpoints.""" + + fixtures = [ + *StockAPITestCase.fixtures, + 'build', + 'order', + 'return_order', + 'sales_order', + ] + + @classmethod + def setUpTestData(cls): + """Initialize some test data for the StockTracking tests.""" + super().setUpTestData() + + import build.models + import company.models + import order.models + import stock.models + import stock.status_codes + + entries = [] + + N_BO = build.models.Build.objects.count() + N_PO = order.models.PurchaseOrder.objects.count() + N_RO = order.models.ReturnOrder.objects.count() + N_SO = order.models.SalesOrder.objects.count() + + N_COMPANY = company.models.Company.objects.count() + N_LOCATION = stock.models.StockLocation.objects.count() + + # Generate a large quantity of tracking items + # Note that the pk values are not guaranteed to exist in the database + for item in StockItem.objects.all(): + for i in range(50): + entries.append( + StockItemTracking( + item=item, + notes='This is a test entry', + tracking_type=stock.status_codes.StockHistoryCode.LEGACY.value, + deltas={ + 'quantity': 50 - i, + 'buildorder': random.randint(0, N_BO + 1), + 'purchaseorder': random.randint(0, N_PO + 1), + 'returnorder': random.randint(0, N_RO + 1), + 'salesorder': random.randint(0, N_SO + 1), + 'customer': random.randint(0, N_COMPANY + 1), + 'location': random.randint(0, N_LOCATION + 1), + }, + ) + ) + + StockItemTracking.objects.bulk_create(entries) + + def get_url(self): + """Helper function to get stock tracking api url.""" + return reverse('api-stock-tracking-list') + + def test_count(self): + """Test list endpoint with limit = 1.""" + url = self.get_url() + + N = StockItemTracking.objects.count() + + # Test counting + response = self.get(url, {'limit': 1}) + self.assertEqual(response.data['count'], N) + + def test_list(self): + """Test list endpoint.""" + url = self.get_url() + + N = StockItemTracking.objects.count() + self.assertGreater(N, 1000) + + response = self.client.get(url, max_query_count=25) + self.assertEqual(len(response.data), N) + + # Check expected delta values + keys = ['quantity', 'returnorder', 'buildorder', 'customer'] + + for item in response.data: + deltas = item['deltas'] + + for key in keys: + self.assertIn(key, deltas) + self.assertIsNotNone(deltas.get(key, None)) + class StockAssignTest(StockAPITestCase): """Unit tests for the stock assignment API endpoint, where stock items are manually assigned to a customer.""" diff --git a/src/backend/InvenTree/stock/views.py b/src/backend/InvenTree/stock/views.py index 3fb10d968f..57140a9952 100644 --- a/src/backend/InvenTree/stock/views.py +++ b/src/backend/InvenTree/stock/views.py @@ -4,7 +4,7 @@ from django.http import HttpResponseRedirect from django.urls import reverse from django.views.generic import DetailView, ListView -import common.settings +from common.settings import get_global_setting from InvenTree.views import InvenTreeRoleMixin from plugin.views import InvenTreePluginViewMixin @@ -34,9 +34,7 @@ class StockIndex(InvenTreeRoleMixin, InvenTreePluginViewMixin, ListView): # No 'ownership' checks are necessary for the top-level StockLocation view context['user_owns_location'] = True context['location_owner'] = None - context['ownership_enabled'] = common.models.InvenTreeSetting.get_setting( - 'STOCK_OWNERSHIP_CONTROL' - ) + context['ownership_enabled'] = get_global_setting('STOCK_OWNERSHIP_CONTROL') return context @@ -53,9 +51,7 @@ class StockLocationDetail(InvenTreeRoleMixin, InvenTreePluginViewMixin, DetailVi """Extend template context.""" context = super().get_context_data(**kwargs) - context['ownership_enabled'] = common.models.InvenTreeSetting.get_setting( - 'STOCK_OWNERSHIP_CONTROL' - ) + context['ownership_enabled'] = get_global_setting('STOCK_OWNERSHIP_CONTROL') context['location_owner'] = context['location'].get_location_owner() context['user_owns_location'] = context['location'].check_ownership( self.request.user @@ -80,9 +76,7 @@ class StockItemDetail(InvenTreeRoleMixin, InvenTreePluginViewMixin, DetailView): data['previous'] = self.object.get_next_serialized_item(reverse=True) data['next'] = self.object.get_next_serialized_item() - data['ownership_enabled'] = common.models.InvenTreeSetting.get_setting( - 'STOCK_OWNERSHIP_CONTROL' - ) + data['ownership_enabled'] = get_global_setting('STOCK_OWNERSHIP_CONTROL') data['item_owner'] = self.object.get_item_owner() data['user_owns_item'] = self.object.check_ownership(self.request.user) diff --git a/src/backend/InvenTree/templates/allauth_2fa/setup.html b/src/backend/InvenTree/templates/allauth_2fa/setup.html index 704757a374..c05b049f1f 100644 --- a/src/backend/InvenTree/templates/allauth_2fa/setup.html +++ b/src/backend/InvenTree/templates/allauth_2fa/setup.html @@ -17,6 +17,7 @@
{% trans 'QR Code' %}
+

{% trans 'Secret: ' %}{{ secret }}


diff --git a/src/backend/InvenTree/templates/js/translated/attachment.js b/src/backend/InvenTree/templates/js/translated/attachment.js index 4ec0b4b625..d73baa01c2 100644 --- a/src/backend/InvenTree/templates/js/translated/attachment.js +++ b/src/backend/InvenTree/templates/js/translated/attachment.js @@ -214,34 +214,41 @@ function makeAttachmentActions(permissions, options) { /* Load a table of attachments against a specific model. * Note that this is a 'generic' table which is used for multiple attachment model classes */ -function loadAttachmentTable(url, options) { +function loadAttachmentTable(model_type, model_id, options={}) { - var table = options.table || '#attachment-table'; + const url = '{% url "api-attachment-list" %}'; + const table = options.table || '#attachment-table'; - var permissions = {}; + let filters = { + model_type: model_type, + model_id: model_id, + }; - // First we determine which permissions the user has for this attachment table + let permissions = { + delete: false, + add: false, + change: false, + }; + + // Request the permissions for the current user $.ajax({ - url: url, + url: '{% url "api-user-roles" %}', async: false, - type: 'OPTIONS', - contentType: 'application/json', dataType: 'json', - accepts: { - json: 'application/json', - }, + contentType: 'application/json', success: function(response) { - if (response.actions.DELETE) { + if (response.is_superuser) { permissions.delete = true; + permissions.add = true; + permissions.change = true; + return; } - if (response.actions.POST) { - permissions.change = true; - permissions.add = true; - } - }, - error: function(xhr) { - showApiError(xhr, url); + let model_permissions = response?.permissions[model_type] ?? {}; + + permissions.delete = model_permissions.includes("delete"); + permissions.add = model_permissions.includes("add"); + permissions.change = model_permissions.includes("change"); } }); @@ -261,7 +268,19 @@ function loadAttachmentTable(url, options) { }); if (permissions.add) { - addAttachmentButtonCallbacks(url, options.fields || {}); + addAttachmentButtonCallbacks( + url, + { + model_type: { + value: model_type, + hidden: true, + }, + model_id: { + value: model_id, + hidden: true, + }, + } + ); } else { // Hide the buttons $('#new-attachment').hide(); @@ -276,7 +295,7 @@ function loadAttachmentTable(url, options) { }, sortable: true, search: true, - queryParams: options.filters || {}, + queryParams: filters, uniqueId: 'pk', sidePagination: 'server', onPostBody: function() { @@ -386,7 +405,10 @@ function loadAttachmentTable(url, options) { '#attachment-dropzone', url, { - data: options.filters, + data: { + model_type: model_type, + model_id: model_id, + }, label: 'attachment', method: 'POST', success: function() { diff --git a/src/backend/InvenTree/templates/js/translated/barcode.js b/src/backend/InvenTree/templates/js/translated/barcode.js index e03d6f3950..d82cc24c80 100644 --- a/src/backend/InvenTree/templates/js/translated/barcode.js +++ b/src/backend/InvenTree/templates/js/translated/barcode.js @@ -527,7 +527,7 @@ function barcodeCheckInStockItems(location_id, options={}) { var modal = options.modal || createNewModal(); options.modal = modal; - // List of items we are going to checkin + // List of items we are going to check in var items = []; function reloadTable() { diff --git a/src/backend/InvenTree/templates/js/translated/forms.js b/src/backend/InvenTree/templates/js/translated/forms.js index 56ae5a2c3c..7b49cb5238 100644 --- a/src/backend/InvenTree/templates/js/translated/forms.js +++ b/src/backend/InvenTree/templates/js/translated/forms.js @@ -2248,11 +2248,12 @@ function initializeRelatedField(field, fields, options={}) { */ function setRelatedFieldData(name, data, options={}) { - var select = getFormFieldElement(name, options); + let select = getFormFieldElement(name, options); - const pkField = options?.fields[name]?.pk_field ?? 'pk'; + let fields = options?.fields ?? {}; + let pkField = fields[name]?.pk_field ?? 'pk'; - var option = new Option(name, data[pkField], true, true); + let option = new Option(name, data[pkField], true, true); // Assign the JSON data to the 'instance' attribute, // so we can access and render it later diff --git a/src/backend/InvenTree/templates/js/translated/part.js b/src/backend/InvenTree/templates/js/translated/part.js index 48b3dcfdbb..f28281cfd7 100644 --- a/src/backend/InvenTree/templates/js/translated/part.js +++ b/src/backend/InvenTree/templates/js/translated/part.js @@ -305,6 +305,7 @@ function partFields(options={}) { function categoryFields(options={}) { let fields = { parent: { + label: '{% trans "Parent" %}', help_text: '{% trans "Parent part category" %}', required: false, tree_picker: { @@ -2827,6 +2828,7 @@ function partTestTemplateFields(options={}) { requires_value: {}, requires_attachment: {}, enabled: {}, + choices: {}, part: { hidden: true, } diff --git a/src/backend/InvenTree/users/api.py b/src/backend/InvenTree/users/api.py index 6ff708dbca..bbdc3be975 100644 --- a/src/backend/InvenTree/users/api.py +++ b/src/backend/InvenTree/users/api.py @@ -3,12 +3,16 @@ import datetime import logging -from django.contrib.auth import get_user, login, logout +from django.contrib.auth import authenticate, get_user, login, logout from django.contrib.auth.models import Group, User -from django.urls import include, path, re_path +from django.http.response import HttpResponse +from django.shortcuts import redirect +from django.urls import include, path, re_path, reverse from django.views.generic.base import RedirectView +from allauth.account import app_settings from allauth.account.adapter import get_adapter +from allauth_2fa.utils import user_has_valid_totp_device from dj_rest_auth.views import LoginView, LogoutView from drf_spectacular.utils import OpenApiResponse, extend_schema, extend_schema_view from rest_framework import exceptions, permissions @@ -29,8 +33,8 @@ from InvenTree.mixins import ( ) from InvenTree.serializers import ExendedUserSerializer, UserCreateSerializer from InvenTree.settings import FRONTEND_URL_BASE -from users.models import ApiToken, Owner, RuleSet, check_user_role -from users.serializers import GroupSerializer, OwnerSerializer +from users.models import ApiToken, Owner +from users.serializers import GroupSerializer, OwnerSerializer, RoleSerializer logger = logging.getLogger('inventree') @@ -108,44 +112,15 @@ class OwnerDetail(RetrieveAPI): serializer_class = OwnerSerializer -class RoleDetails(APIView): - """API endpoint which lists the available role permissions for the current user. - - (Requires authentication) - """ +class RoleDetails(RetrieveAPI): + """API endpoint which lists the available role permissions for the current user.""" permission_classes = [permissions.IsAuthenticated] - serializer_class = None + serializer_class = RoleSerializer - def get(self, request, *args, **kwargs): - """Return the list of roles / permissions available to the current user.""" - user = request.user - - roles = {} - - for ruleset in RuleSet.RULESET_CHOICES: - role, _text = ruleset - - permissions = [] - - for permission in RuleSet.RULESET_PERMISSIONS: - if check_user_role(user, role, permission): - permissions.append(permission) - - if len(permissions) > 0: - roles[role] = permissions - else: - roles[role] = None # pragma: no cover - - data = { - 'user': user.pk, - 'username': user.username, - 'roles': roles, - 'is_staff': user.is_staff, - 'is_superuser': user.is_superuser, - } - - return Response(data) + def get_object(self): + """Overwritten to always return current user.""" + return self.request.user class UserDetail(RetrieveUpdateDestroyAPI): @@ -218,12 +193,40 @@ class GroupList(ListCreateAPI): class Login(LoginView): """API view for logging in via API.""" + def post(self, request, *args, **kwargs): + """API view for logging in via API.""" + _data = request.data.copy() + _data.update(request.POST.copy()) + + if not _data.get('mfa', None): + return super().post(request, *args, **kwargs) + + # Check if login credentials valid + user = authenticate( + request, username=_data.get('username'), password=_data.get('password') + ) + if user is None: + return HttpResponse(status=401) + + # Check if user has mfa set up + if not user_has_valid_totp_device(user): + return super().post(request, *args, **kwargs) + + # Stage login and redirect to 2fa + request.session['allauth_2fa_user_id'] = str(user.id) + request.session['allauth_2fa_login'] = { + 'email_verification': app_settings.EMAIL_VERIFICATION, + 'signal_kwargs': None, + 'signup': False, + 'email': None, + 'redirect_url': reverse('platform'), + } + return redirect(reverse('two-factor-authenticate')) + def process_login(self): """Process the login request, ensure that MFA is enforced if required.""" # Normal login process ret = super().process_login() - - # Now check if MFA is enforced user = self.request.user adapter = get_adapter(self.request) @@ -260,7 +263,7 @@ class Logout(LogoutView): try: token = ApiToken.objects.get(key=token_key, user=request.user) token.delete() - except ApiToken.DoesNotExist: + except ApiToken.DoesNotExist: # pragma: no cover pass return super().logout(request) diff --git a/src/backend/InvenTree/users/apps.py b/src/backend/InvenTree/users/apps.py index a4c52ee777..fdf96ca0ec 100644 --- a/src/backend/InvenTree/users/apps.py +++ b/src/backend/InvenTree/users/apps.py @@ -26,7 +26,7 @@ class UsersConfig(AppConfig): # Skip if running migrations if InvenTree.ready.isRunningMigrations(): - return + return # pragma: no cover if InvenTree.ready.canAppAccessDatabase(allow_test=True): try: diff --git a/src/backend/InvenTree/users/migrations/0011_auto_20240523_1640.py b/src/backend/InvenTree/users/migrations/0011_auto_20240523_1640.py index cdda226fe9..31d606fab2 100644 --- a/src/backend/InvenTree/users/migrations/0011_auto_20240523_1640.py +++ b/src/backend/InvenTree/users/migrations/0011_auto_20240523_1640.py @@ -6,9 +6,13 @@ from django.conf import settings from django.db import migrations -def clear_sessions(apps, schema_editor): +def clear_sessions(apps, schema_editor): # pragma: no cover """Clear all user sessions.""" + # Ignore in test mode + if settings.TESTING: + return + try: engine = import_module(settings.SESSION_ENGINE) engine.SessionStore.clear_expired() @@ -16,6 +20,7 @@ def clear_sessions(apps, schema_editor): except Exception: # Database may not be ready yet, so this does not matter anyhow pass + class Migration(migrations.Migration): atomic = False diff --git a/src/backend/InvenTree/users/models.py b/src/backend/InvenTree/users/models.py index a544bdec10..48bb915b6a 100644 --- a/src/backend/InvenTree/users/models.py +++ b/src/backend/InvenTree/users/models.py @@ -21,9 +21,9 @@ from django.utils.translation import gettext_lazy as _ from rest_framework.authtoken.models import Token as AuthToken -import common.models as common_models import InvenTree.helpers import InvenTree.models +from common.settings import get_global_setting from InvenTree.ready import canAppAccessDatabase, isImportingData logger = logging.getLogger('inventree') @@ -34,7 +34,7 @@ logger = logging.getLogger('inventree') # string representation of a user def user_model_str(self): """Function to override the default Django User __str__.""" - if common_models.InvenTreeSetting.get_setting('DISPLAY_FULL_NAMES', cache=True): + if get_global_setting('DISPLAY_FULL_NAMES', cache=True): if self.first_name or self.last_name: return f'{self.first_name} {self.last_name}' return self.username @@ -258,7 +258,6 @@ class RuleSet(models.Model): 'part_partpricing', 'part_bomitem', 'part_bomitemsubstitute', - 'part_partattachment', 'part_partsellpricebreak', 'part_partinternalpricebreak', 'part_parttesttemplate', @@ -270,13 +269,11 @@ class RuleSet(models.Model): 'company_supplierpart', 'company_manufacturerpart', 'company_manufacturerpartparameter', - 'company_manufacturerpartattachment', ], 'stocktake': ['part_partstocktake', 'part_partstocktakereport'], 'stock_location': ['stock_stocklocation', 'stock_stocklocationtype'], 'stock': [ 'stock_stockitem', - 'stock_stockitemattachment', 'stock_stockitemtracking', 'stock_stockitemtestresult', ], @@ -288,13 +285,11 @@ class RuleSet(models.Model): 'build_build', 'build_builditem', 'build_buildline', - 'build_buildorderattachment', 'stock_stockitem', 'stock_stocklocation', ], 'purchase_order': [ 'company_company', - 'company_companyattachment', 'company_contact', 'company_address', 'company_manufacturerpart', @@ -302,31 +297,26 @@ class RuleSet(models.Model): 'company_supplierpart', 'company_supplierpricebreak', 'order_purchaseorder', - 'order_purchaseorderattachment', 'order_purchaseorderlineitem', 'order_purchaseorderextraline', ], 'sales_order': [ 'company_company', - 'company_companyattachment', 'company_contact', 'company_address', 'order_salesorder', 'order_salesorderallocation', - 'order_salesorderattachment', 'order_salesorderlineitem', 'order_salesorderextraline', 'order_salesordershipment', ], 'return_order': [ 'company_company', - 'company_companyattachment', 'company_contact', 'company_address', 'order_returnorder', 'order_returnorderlineitem', 'order_returnorderextraline', - 'order_returnorderattachment', ], } @@ -344,6 +334,7 @@ class RuleSet(models.Model): 'admin_logentry', 'contenttypes_contenttype', # Models which currently do not require permissions + 'common_attachment', 'common_colortheme', 'common_customunit', 'common_inventreesetting', @@ -687,25 +678,6 @@ def clear_user_role_cache(user): cache.delete(key) -def get_user_roles(user): - """Return all roles available to a given user.""" - roles = set() - - for group in user.groups.all(): - for rule in group.rule_sets.all(): - name = rule.name - if rule.can_view: - roles.add(f'{name}.view') - if rule.can_add: - roles.add(f'{name}.add') - if rule.can_change: - roles.add(f'{name}.change') - if rule.can_delete: - roles.add(f'{name}.delete') - - return roles - - def check_user_role(user, role, permission): """Check if a user has a particular role:permission combination. @@ -719,7 +691,7 @@ def check_user_role(user, role, permission): try: result = cache.get(key) - except Exception: + except Exception: # pragma: no cover result = None if result is not None: @@ -750,7 +722,7 @@ def check_user_role(user, role, permission): # Save result to cache try: cache.set(key, result, timeout=3600) - except Exception: + except Exception: # pragma: no cover pass return result @@ -816,11 +788,8 @@ class Owner(models.Model): def __str__(self): """Defines the owner string representation.""" - if ( - self.owner_type.name == 'user' - and common_models.InvenTreeSetting.get_setting( - 'DISPLAY_FULL_NAMES', cache=True - ) + if self.owner_type.name == 'user' and get_global_setting( + 'DISPLAY_FULL_NAMES', cache=True ): display_name = self.owner.get_full_name() else: @@ -829,11 +798,8 @@ class Owner(models.Model): def name(self): """Return the 'name' of this owner.""" - if ( - self.owner_type.name == 'user' - and common_models.InvenTreeSetting.get_setting( - 'DISPLAY_FULL_NAMES', cache=True - ) + if self.owner_type.name == 'user' and get_global_setting( + 'DISPLAY_FULL_NAMES', cache=True ): return self.owner.get_full_name() or str(self.owner) return str(self.owner) diff --git a/src/backend/InvenTree/users/serializers.py b/src/backend/InvenTree/users/serializers.py index b4e3dbb7da..583172d51c 100644 --- a/src/backend/InvenTree/users/serializers.py +++ b/src/backend/InvenTree/users/serializers.py @@ -1,6 +1,7 @@ """DRF API serializers for the 'users' app.""" -from django.contrib.auth.models import Group, User +from django.contrib.auth.models import Group, Permission, User +from django.db.models import Q from rest_framework import serializers @@ -40,16 +41,21 @@ class RoleSerializer(InvenTreeModelSerializer): """Metaclass options.""" model = User - fields = ['user', 'username', 'is_staff', 'is_superuser', 'roles'] + fields = [ + 'user', + 'username', + 'roles', + 'permissions', + 'is_staff', + 'is_superuser', + ] user = serializers.IntegerField(source='pk') - username = serializers.CharField() - is_staff = serializers.BooleanField() - is_superuser = serializers.BooleanField() roles = serializers.SerializerMethodField() + permissions = serializers.SerializerMethodField() def get_roles(self, user: User) -> dict: - """Return roles associated with the specified User.""" + """Roles associated with the user.""" roles = {} for ruleset in RuleSet.RULESET_CHOICES: @@ -67,3 +73,24 @@ class RoleSerializer(InvenTreeModelSerializer): roles[role] = None # pragma: no cover return roles + + def get_permissions(self, user: User) -> dict: + """Permissions associated with the user.""" + if user.is_superuser: + permissions = Permission.objects.all() + else: + permissions = Permission.objects.filter( + Q(user=user) | Q(group__user=user) + ).distinct() + + perms = {} + + for permission in permissions: + perm, model = permission.codename.split('_') + + if model not in perms: + perms[model] = [] + + perms[model].append(perm) + + return perms diff --git a/src/backend/InvenTree/users/test_api.py b/src/backend/InvenTree/users/test_api.py index c25b9acbff..ea271f7e19 100644 --- a/src/backend/InvenTree/users/test_api.py +++ b/src/backend/InvenTree/users/test_api.py @@ -12,6 +12,29 @@ from users.models import ApiToken class UserAPITests(InvenTreeAPITestCase): """Tests for user API endpoints.""" + def test_user_options(self): + """Tests for the User OPTIONS request.""" + self.assignRole('admin.add') + response = self.options(reverse('api-user-list'), expected_code=200) + + fields = response.data['actions']['POST'] + + # Check some of the field values + self.assertEqual(fields['username']['label'], 'Username') + + self.assertEqual(fields['email']['label'], 'Email') + self.assertEqual(fields['email']['help_text'], 'Email address of the user') + + self.assertEqual(fields['is_active']['label'], 'Active') + self.assertEqual( + fields['is_active']['help_text'], 'Is this user account active' + ) + + self.assertEqual(fields['is_staff']['label'], 'Staff') + self.assertEqual( + fields['is_staff']['help_text'], 'Does this user have staff permissions' + ) + def test_user_api(self): """Tests for User API endpoints.""" response = self.get(reverse('api-user-list'), expected_code=200) @@ -48,6 +71,25 @@ class UserAPITests(InvenTreeAPITestCase): self.assertIn('name', response.data) + def test_logout(self): + """Test api logout endpoint.""" + token_key = self.get(url=reverse('api-token')).data['token'] + self.client.logout() + self.client.credentials(HTTP_AUTHORIZATION='Token ' + token_key) + + self.post(reverse('api-logout'), expected_code=200) + self.get(reverse('api-token'), expected_code=401) + + def test_login_redirect(self): + """Test login redirect endpoint.""" + response = self.get(reverse('api-login-redirect'), expected_code=302) + self.assertEqual(response.url, '/index/') + + # PUI + self.put(reverse('api-ui-preference'), {'preferred_method': 'pui'}) + response = self.get(reverse('api-login-redirect'), expected_code=302) + self.assertEqual(response.url, '/platform/logged-in/') + class UserTokenTests(InvenTreeAPITestCase): """Tests for user token functionality.""" @@ -156,3 +198,13 @@ class UserTokenTests(InvenTreeAPITestCase): token.save() self.client.get(me, expected_code=200) + + def test_buildin_token(self): + """Test the built-in token authentication.""" + response = self.post( + reverse('rest_login'), + {'username': self.username, 'password': self.password}, + expected_code=200, + ) + self.assertIn('key', response.data) + self.assertTrue(response.data['key'].startswith('inv-')) diff --git a/src/backend/InvenTree/users/tests.py b/src/backend/InvenTree/users/tests.py index 44ea1ac1e8..968d9024b3 100644 --- a/src/backend/InvenTree/users/tests.py +++ b/src/backend/InvenTree/users/tests.py @@ -5,7 +5,7 @@ from django.contrib.auth.models import Group from django.test import TestCase, tag from django.urls import reverse -from InvenTree.unit_test import InvenTreeTestCase +from InvenTree.unit_test import InvenTreeAPITestCase, InvenTreeTestCase from users.models import ApiToken, Owner, RuleSet @@ -221,6 +221,10 @@ class OwnerModelTest(InvenTreeTestCase): self.client.login(username=self.username, password=self.password) # user list self.do_request(reverse('api-owner-list'), {}) + + # user list with 'is_active' filter + self.do_request(reverse('api-owner-list'), {'is_active': False}) + # user list with search self.do_request(reverse('api-owner-list'), {'search': 'user'}) @@ -265,3 +269,47 @@ class OwnerModelTest(InvenTreeTestCase): reverse('api-user-me'), {'name': 'another-token'}, 200 ) self.assertEqual(response['username'], self.username) + + +class MFALoginTest(InvenTreeAPITestCase): + """Some simplistic tests to ensure that MFA is working.""" + + def test_api(self): + """Test that the API is working.""" + auth_data = {'username': self.username, 'password': self.password} + login_url = reverse('api-login') + + # Normal login + response = self.post(login_url, auth_data, expected_code=200) + self.assertIn('key', response.data) + self.client.logout() + + # Add MFA + totp_model = self.user.totpdevice_set.create() + + # Login with MFA enabled but not provided + response = self.post(login_url, auth_data, expected_code=403) + self.assertContains(response, 'MFA required for this user', status_code=403) + + # Login with MFA enabled and provided - should redirect to MFA page + auth_data['mfa'] = 'anything' + response = self.post(login_url, auth_data, expected_code=302) + self.assertEqual(response.url, reverse('two-factor-authenticate')) + # MFA not finished - no access allowed + self.get(reverse('api-token'), expected_code=401) + + # Login with MFA enabled and provided - but incorrect pwd + auth_data['password'] = 'wrong' + self.post(login_url, auth_data, expected_code=401) + auth_data['password'] = self.password + + # Remove MFA + totp_model.delete() + + # Login with MFA disabled but correct credentials provided + response = self.post(login_url, auth_data, expected_code=200) + self.assertIn('key', response.data) + + # Wrong login should not work + auth_data['password'] = 'wrong' + self.post(login_url, auth_data, expected_code=401) diff --git a/src/backend/package-lock.json b/src/backend/package-lock.json index d611222c0d..f0a3461ade 100644 --- a/src/backend/package-lock.json +++ b/src/backend/package-lock.json @@ -5,7 +5,7 @@ "packages": { "": { "dependencies": { - "eslint": "^9.3.0", + "eslint": "^9.5.0", "eslint-config-google": "^0.14.0" } }, @@ -50,6 +50,19 @@ "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, + "node_modules/@eslint/config-array": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.16.0.tgz", + "integrity": "sha512-/jmuSd74i4Czf1XXn7wGRWZCuyaUZ330NH1Bek0Pplatt4Sy1S5haN21SCLLdbeKslQ+S0wEJ+++v5YibSi+Lg==", + "dependencies": { + "@eslint/object-schema": "^2.1.4", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/eslintrc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", @@ -73,24 +86,19 @@ } }, "node_modules/@eslint/js": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.3.0.tgz", - "integrity": "sha512-niBqk8iwv96+yuTwjM6bWg8ovzAPF9qkICsGtcoa5/dmqcEMfdwNAX7+/OHcJHc7wj7XqPxH98oAHytFYlw6Sw==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.5.0.tgz", + "integrity": "sha512-A7+AOT2ICkodvtsWnxZP4Xxk3NbZ3VMHd8oihydLRGrJgqqdEz1qSeEgXYyT/Cu8h1TWWsQRejIx48mtjZ5y1w==", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, + "node_modules/@eslint/object-schema": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", "engines": { - "node": ">=10.10.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@humanwhocodes/module-importer": { @@ -105,11 +113,6 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==" - }, "node_modules/@humanwhocodes/retry": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.0.tgz", @@ -319,15 +322,15 @@ } }, "node_modules/eslint": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.3.0.tgz", - "integrity": "sha512-5Iv4CsZW030lpUqHBapdPo3MJetAPtejVW8B84GIcIIv8+ohFaddXsrn1Gn8uD9ijDb+kcYKFUVmC8qG8B2ORQ==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.5.0.tgz", + "integrity": "sha512-+NAOZFrW/jFTS3dASCGBxX1pkFD0/fsO+hfAkJ4TyYKwgsXZbqzrw+seCYFCcPCYXvnD67tAnglU7GQTz6kcVw==", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", + "@eslint/config-array": "^0.16.0", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.3.0", - "@humanwhocodes/config-array": "^0.13.0", + "@eslint/js": "9.5.0", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.3.0", "@nodelib/fs.walk": "^1.2.8", @@ -339,7 +342,7 @@ "eslint-scope": "^8.0.1", "eslint-visitor-keys": "^4.0.0", "espree": "^10.0.1", - "esquery": "^1.4.2", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", @@ -365,7 +368,7 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://eslint.org/donate" } }, "node_modules/eslint-config-google": { diff --git a/src/backend/package.json b/src/backend/package.json index 6d256450d3..6a36da710d 100644 --- a/src/backend/package.json +++ b/src/backend/package.json @@ -1,6 +1,6 @@ { "dependencies": { - "eslint": "^9.3.0", + "eslint": "^9.5.0", "eslint-config-google": "^0.14.0" }, "type": "module" diff --git a/src/backend/requirements-dev.txt b/src/backend/requirements-dev.txt index aea5becad4..7debaf3965 100644 --- a/src/backend/requirements-dev.txt +++ b/src/backend/requirements-dev.txt @@ -1,5 +1,5 @@ # This file was autogenerated by uv via the following command: -# uv pip compile src/backend/requirements-dev.in -o src/backend/requirements-dev.txt --python-version=3.9 --no-strip-extras --generate-hashes +# uv pip compile src/backend/requirements-dev.in -o src/backend/requirements-dev.txt asgiref==3.8.1 \ --hash=sha256:3e1e3ecc849832fe52ccf2cb6686b7a55f82bb1d6aee72a58826471390335e47 \ --hash=sha256:c343bd80a0bec947a9860adb4c432ffa7db769836c64238fc34bdc3fec84d590 diff --git a/src/backend/requirements.txt b/src/backend/requirements.txt index 80c816ca37..e631ad0619 100644 --- a/src/backend/requirements.txt +++ b/src/backend/requirements.txt @@ -1,5 +1,5 @@ # This file was autogenerated by uv via the following command: -# uv pip compile src/backend/requirements.in -o src/backend/requirements.txt --python-version=3.9 --no-strip-extras --generate-hashes +# uv pip compile src/backend/requirements.in -o src/backend/requirements.txt asgiref==3.8.1 \ --hash=sha256:3e1e3ecc849832fe52ccf2cb6686b7a55f82bb1d6aee72a58826471390335e47 \ --hash=sha256:c343bd80a0bec947a9860adb4c432ffa7db769836c64238fc34bdc3fec84d590 diff --git a/src/frontend/.linguirc b/src/frontend/.linguirc index be405360b5..db0ade6fbe 100644 --- a/src/frontend/.linguirc +++ b/src/frontend/.linguirc @@ -23,6 +23,7 @@ "pl", "pt", "pt-br", + "ro", "ru", "sk", "sl", diff --git a/src/frontend/package.json b/src/frontend/package.json index 285078580f..af2378e32b 100644 --- a/src/frontend/package.json +++ b/src/frontend/package.json @@ -27,6 +27,7 @@ "@lingui/core": "^4.10.0", "@lingui/react": "^4.10.0", "@mantine/carousel": "^7.8.0", + "@mantine/charts": "^7.10.1", "@mantine/core": "^7.10.0", "@mantine/dates": "^7.8.0", "@mantine/dropzone": "^7.8.0", diff --git a/src/frontend/playwright.config.ts b/src/frontend/playwright.config.ts index f24b94d323..2914f54f5a 100644 --- a/src/frontend/playwright.config.ts +++ b/src/frontend/playwright.config.ts @@ -3,7 +3,7 @@ import { defineConfig, devices } from '@playwright/test'; export default defineConfig({ testDir: './tests', fullyParallel: true, - timeout: 60000, + timeout: 90000, forbidOnly: !!process.env.CI, retries: process.env.CI ? 1 : 0, workers: process.env.CI ? 2 : undefined, diff --git a/src/frontend/src/components/charts/colors.tsx b/src/frontend/src/components/charts/colors.tsx index 6be93493bd..fc19be3427 100644 --- a/src/frontend/src/components/charts/colors.tsx +++ b/src/frontend/src/components/charts/colors.tsx @@ -1,12 +1,12 @@ export const CHART_COLORS: string[] = [ - '#ffa8a8', - '#8ce99a', - '#74c0fc', - '#ffe066', - '#63e6be', - '#ffc078', - '#d8f5a2', - '#66d9e8', - '#e599f7', - '#dee2e6' + 'blue', + 'teal', + 'lime', + 'yellow', + 'grape', + 'red', + 'orange', + 'green', + 'indigo', + 'pink' ]; diff --git a/src/frontend/src/components/charts/tooltipFormatter.tsx b/src/frontend/src/components/charts/tooltipFormatter.tsx index 73b3b97703..2e7eadc13e 100644 --- a/src/frontend/src/components/charts/tooltipFormatter.tsx +++ b/src/frontend/src/components/charts/tooltipFormatter.tsx @@ -1,9 +1,12 @@ import { formatCurrency } from '../../defaults/formatters'; -export function tooltipFormatter(label: any, currency: string) { +/* + * Render a chart label for a currency graph + */ +export function tooltipFormatter(value: any, currency?: string) { return ( - formatCurrency(label, { + formatCurrency(value, { currency: currency - })?.toString() ?? '' + })?.toString() ?? value.toString() ); } diff --git a/src/frontend/src/components/details/Details.tsx b/src/frontend/src/components/details/Details.tsx index 374f35b556..2819e3245c 100644 --- a/src/frontend/src/components/details/Details.tsx +++ b/src/frontend/src/components/details/Details.tsx @@ -135,11 +135,11 @@ function NameBadge({ pk, type }: { pk: string | number; type: BadgeType }) { case 200: return response.data; default: - return null; + return undefined; } }) .catch(() => { - return null; + return undefined; }); } }); @@ -148,7 +148,9 @@ function NameBadge({ pk, type }: { pk: string | number; type: BadgeType }) { // Rendering a user's rame for the badge function _render_name() { - if (type === 'user' && settings.isSet('DISPLAY_FULL_NAMES')) { + if (!data) { + return ''; + } else if (type === 'user' && settings.isSet('DISPLAY_FULL_NAMES')) { if (data.first_name || data.last_name) { return `${data.first_name} ${data.last_name}`; } else { @@ -169,7 +171,7 @@ function NameBadge({ pk, type }: { pk: string | number; type: BadgeType }) { variant="filled" style={{ display: 'flex', alignItems: 'center' }} > - {data.name ?? _render_name()} + {data?.name ?? _render_name()} diff --git a/src/frontend/src/components/nav/Header.tsx b/src/frontend/src/components/nav/Header.tsx index af8c8b1126..b11b76ccc2 100644 --- a/src/frontend/src/components/nav/Header.tsx +++ b/src/frontend/src/components/nav/Header.tsx @@ -60,7 +60,7 @@ export function Header() { return null; }); setNotificationCount(response?.data?.count ?? 0); - return response?.data; + return response?.data ?? null; } catch (error) { return error; } diff --git a/src/frontend/src/components/nav/PanelGroup.tsx b/src/frontend/src/components/nav/PanelGroup.tsx index c7e880a642..5c1671fb90 100644 --- a/src/frontend/src/components/nav/PanelGroup.tsx +++ b/src/frontend/src/components/nav/PanelGroup.tsx @@ -24,7 +24,6 @@ import { identifierString } from '../../functions/conversion'; import { navigateToLink } from '../../functions/navigation'; import { useLocalState } from '../../states/LocalState'; import { Boundary } from '../Boundary'; -import { PlaceholderPanel } from '../items/Placeholder'; import { StylishText } from '../items/StylishText'; /** @@ -34,7 +33,7 @@ export type PanelType = { name: string; label: string; icon?: ReactNode; - content?: ReactNode; + content: ReactNode; hidden?: boolean; disabled?: boolean; showHeadline?: boolean; @@ -190,7 +189,7 @@ function BasePanelGroup({ )} - {panel.content ?? } + {panel.content} diff --git a/src/frontend/src/components/nav/SearchDrawer.tsx b/src/frontend/src/components/nav/SearchDrawer.tsx index e676e26948..30287e9631 100644 --- a/src/frontend/src/components/nav/SearchDrawer.tsx +++ b/src/frontend/src/components/nav/SearchDrawer.tsx @@ -33,6 +33,7 @@ import { api } from '../../App'; import { ApiEndpoints } from '../../enums/ApiEndpoints'; import { ModelType } from '../../enums/ModelType'; import { UserRoles } from '../../enums/Roles'; +import { navigateToLink } from '../../functions/navigation'; import { apiUrl } from '../../states/ApiState'; import { useUserSettingsState } from '../../states/SettingsState'; import { useUserState } from '../../states/UserState'; @@ -58,7 +59,7 @@ function QueryResultGroup({ }: { query: SearchQuery; onRemove: (query: ModelType) => void; - onResultClick: (query: ModelType, pk: number) => void; + onResultClick: (query: ModelType, pk: number, event: any) => void; }) { if (query.results.count == 0) { return null; @@ -92,7 +93,9 @@ function QueryResultGroup({ {query.results.results.map((result: any) => ( onResultClick(query.model, result.pk)} + onClick={(event: any) => + onResultClick(query.model, result.pk, event) + } key={result.pk} > @@ -316,11 +319,20 @@ export function SearchDrawer({ const navigate = useNavigate(); // Callback when one of the search results is clicked - function onResultClick(query: ModelType, pk: number) { - closeDrawer(); + function onResultClick(query: ModelType, pk: number, event: any) { const targetModel = ModelInformationDict[query]; - if (targetModel.url_detail == undefined) return; - navigate(targetModel.url_detail.replace(':pk', pk.toString())); + if (targetModel.url_detail == undefined) { + return; + } + + if (event?.ctrlKey || event?.shiftKey) { + // Keep the drawer open in this condition + } else { + closeDrawer(); + } + + let url = targetModel.url_detail.replace(':pk', pk.toString()); + navigateToLink(url, navigate, event); } return ( @@ -400,7 +412,9 @@ export function SearchDrawer({ key={idx} query={query} onRemove={(query) => removeResults(query)} - onResultClick={(query, pk) => onResultClick(query, pk)} + onResultClick={(query, pk, event) => + onResultClick(query, pk, event) + } /> ))} diff --git a/src/frontend/src/contexts/LanguageContext.tsx b/src/frontend/src/contexts/LanguageContext.tsx index 2f1dd35239..0036409324 100644 --- a/src/frontend/src/contexts/LanguageContext.tsx +++ b/src/frontend/src/contexts/LanguageContext.tsx @@ -40,6 +40,7 @@ export const getSupportedLanguages = (): Record => { pl: t`Polish`, pt: t`Portuguese`, 'pt-br': t`Portuguese (Brazilian)`, + ro: t`Romanian`, ru: t`Russian`, sk: t`Slovak`, sl: t`Slovenian`, diff --git a/src/frontend/src/defaults/formatters.tsx b/src/frontend/src/defaults/formatters.tsx index 892aa9e663..8a4c6acc21 100644 --- a/src/frontend/src/defaults/formatters.tsx +++ b/src/frontend/src/defaults/formatters.tsx @@ -117,7 +117,23 @@ export function formatPriceRange( )}`; } -interface RenderDateOptionsInterface { +/* + * Format a file size (in bytes) into a human-readable format + */ +export function formatFileSize(size: number) { + const suffixes: string[] = ['B', 'KB', 'MB', 'GB']; + + let idx = 0; + + while (size > 1024 && idx < suffixes.length) { + size /= 1024; + idx++; + } + + return `${size.toFixed(2)} ${suffixes[idx]}`; +} + +interface FormatDateOptionsInterface { showTime?: boolean; showSeconds?: boolean; } @@ -128,9 +144,9 @@ interface RenderDateOptionsInterface { * The provided "date" variable is a string, nominally ISO format e.g. 2022-02-22 * The user-configured setting DATE_DISPLAY_FORMAT determines how the date should be displayed. */ -export function renderDate( +export function formatDate( date: string, - options: RenderDateOptionsInterface = {} + options: FormatDateOptionsInterface = {} ) { if (!date) { return '-'; diff --git a/src/frontend/src/enums/ApiEndpoints.tsx b/src/frontend/src/enums/ApiEndpoints.tsx index 962da26c49..2775fa1845 100644 --- a/src/frontend/src/enums/ApiEndpoints.tsx +++ b/src/frontend/src/enums/ApiEndpoints.tsx @@ -57,7 +57,6 @@ export enum ApiEndpoints { build_output_complete = 'build/:id/complete/', build_output_scrap = 'build/:id/scrap-outputs/', build_output_delete = 'build/:id/delete-outputs/', - build_order_attachment_list = 'build/attachment/', build_line_list = 'build/line/', bom_list = 'bom/', @@ -76,18 +75,15 @@ export enum ApiEndpoints { category_tree = 'part/category/tree/', category_parameter_list = 'part/category/parameters/', related_part_list = 'part/related/', - part_attachment_list = 'part/attachment/', part_test_template_list = 'part/test-template/', // Company API endpoints company_list = 'company/', contact_list = 'company/contact/', address_list = 'company/address/', - company_attachment_list = 'company/attachment/', supplier_part_list = 'company/part/', supplier_part_pricing_list = 'company/price-break/', manufacturer_part_list = 'company/part/manufacturer/', - manufacturer_part_attachment_list = 'company/part/manufacturer/attachment/', manufacturer_part_parameter_list = 'company/part/manufacturer/parameter/', // Stock API endpoints @@ -96,7 +92,6 @@ export enum ApiEndpoints { stock_location_list = 'stock/location/', stock_location_type_list = 'stock/location-type/', stock_location_tree = 'stock/location/tree/', - stock_attachment_list = 'stock/attachment/', stock_test_result_list = 'stock/test/', stock_transfer = 'stock/transfer/', stock_remove = 'stock/remove/', @@ -115,16 +110,13 @@ export enum ApiEndpoints { // Order API endpoints purchase_order_list = 'order/po/', purchase_order_line_list = 'order/po-line/', - purchase_order_attachment_list = 'order/po/attachment/', purchase_order_receive = 'order/po/:id/receive/', sales_order_list = 'order/so/', sales_order_line_list = 'order/so-line/', - sales_order_attachment_list = 'order/so/attachment/', sales_order_shipment_list = 'order/so/shipment/', return_order_list = 'order/ro/', - return_order_attachment_list = 'order/ro/attachment/', // Template API endpoints label_list = 'label/template/', @@ -155,6 +147,7 @@ export enum ApiEndpoints { machine_setting_detail = 'machine/:machine/settings/:config_type/', // Miscellaneous API endpoints + attachment_list = 'attachment/', error_report_list = 'error-report/', project_code_list = 'project-code/', custom_unit_list = 'units/', diff --git a/src/frontend/src/forms/StockForms.tsx b/src/frontend/src/forms/StockForms.tsx index c6a944992d..123a2834f0 100644 --- a/src/frontend/src/forms/StockForms.tsx +++ b/src/frontend/src/forms/StockForms.tsx @@ -866,3 +866,63 @@ export function stockLocationFields({}: {}): ApiFormFieldSet { return fields; } + +// Construct a set of fields for +export function useTestResultFields({ + partId, + itemId +}: { + partId: number; + itemId: number; +}): ApiFormFieldSet { + // Valid field choices + const [choices, setChoices] = useState([]); + + // Field type for the "value" input + const [fieldType, setFieldType] = useState<'string' | 'choice'>('string'); + + return useMemo(() => { + return { + stock_item: { + value: itemId, + hidden: true + }, + template: { + filters: { + include_inherited: true, + part: partId + }, + onValueChange: (value: any, record: any) => { + // Adjust the type of the "value" field based on the selected template + if (record?.choices) { + let _choices: string[] = record.choices.split(','); + + if (_choices.length > 0) { + setChoices( + _choices.map((choice) => { + return { + label: choice.trim(), + value: choice.trim() + }; + }) + ); + setFieldType('choice'); + } else { + setChoices([]); + setFieldType('string'); + } + } + } + }, + result: {}, + value: { + field_type: fieldType, + choices: fieldType === 'choice' ? choices : undefined + }, + attachment: {}, + notes: {}, + started_datetime: {}, + finished_datetime: {} + }; + }, [choices, fieldType, partId, itemId]); +} diff --git a/src/frontend/src/functions/auth.tsx b/src/frontend/src/functions/auth.tsx index a9b66def18..863b20f24e 100644 --- a/src/frontend/src/functions/auth.tsx +++ b/src/frontend/src/functions/auth.tsx @@ -1,15 +1,45 @@ import { t } from '@lingui/macro'; import { notifications } from '@mantine/notifications'; import axios from 'axios'; +import { NavigateFunction } from 'react-router-dom'; import { api, setApiDefaults } from '../App'; import { ApiEndpoints } from '../enums/ApiEndpoints'; -import { apiUrl } from '../states/ApiState'; +import { apiUrl, useServerApiState } from '../states/ApiState'; import { useLocalState } from '../states/LocalState'; import { useUserState } from '../states/UserState'; import { fetchGlobalStates } from '../states/states'; import { showLoginNotification } from './notifications'; +/** + * sends a request to the specified url from a form. this will change the window location. + * @param {string} path the path to send the post request to + * @param {object} params the parameters to add to the url + * @param {string} [method=post] the method to use on the form + * + * Source https://stackoverflow.com/questions/133925/javascript-post-request-like-a-form-submit/133997#133997 + */ + +function post(path: string, params: any, method = 'post') { + const form = document.createElement('form'); + form.method = method; + form.action = path; + + for (const key in params) { + if (params.hasOwnProperty(key)) { + const hiddenField = document.createElement('input'); + hiddenField.type = 'hidden'; + hiddenField.name = key; + hiddenField.value = params[key]; + + form.appendChild(hiddenField); + } + } + + document.body.appendChild(form); + form.submit(); +} + /** * Attempt to login using username:password combination. * If login is successful, an API token will be returned. @@ -50,7 +80,19 @@ export const doBasicLogin = async (username: string, password: string) => { } } }) - .catch(() => {}); + .catch((err) => { + if ( + err?.response?.status == 403 && + err?.response?.data?.detail == 'MFA required for this user' + ) { + post(apiUrl(ApiEndpoints.user_login), { + username: username, + password: password, + csrfmiddlewaretoken: getCsrfCookie(), + mfa: true + }); + } + }); if (result) { await fetchUserState(); @@ -65,7 +107,7 @@ export const doBasicLogin = async (username: string, password: string) => { * * @arg deleteToken: If true, delete the token from the server */ -export const doLogout = async (navigate: any) => { +export const doLogout = async (navigate: NavigateFunction) => { const { clearUserState, isLoggedIn } = useUserState.getState(); // Logout from the server session diff --git a/src/frontend/src/hooks/UseFilter.tsx b/src/frontend/src/hooks/UseFilter.tsx index 2ae5399c04..b10a151082 100644 --- a/src/frontend/src/hooks/UseFilter.tsx +++ b/src/frontend/src/hooks/UseFilter.tsx @@ -44,7 +44,15 @@ export function useFilters(props: UseFilterProps) { }); const choices: TableFilterChoice[] = useMemo(() => { - return query.data?.map(props.transform) ?? []; + let opts = query.data?.map(props.transform) ?? []; + + // Ensure stringiness + return opts.map((opt: any) => { + return { + value: opt.value.toString(), + label: opt?.label?.toString() ?? opt.value.toString() + }; + }); }, [props.transform, query.data]); const refresh = useCallback(() => { diff --git a/src/frontend/src/locales/bg/messages.po b/src/frontend/src/locales/bg/messages.po index efbd067478..656c393e85 100644 --- a/src/frontend/src/locales/bg/messages.po +++ b/src/frontend/src/locales/bg/messages.po @@ -8,7 +8,7 @@ msgstr "" "Language: bg\n" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-05-23 11:38\n" +"PO-Revision-Date: 2024-06-19 04:49\n" "Last-Translator: \n" "Language-Team: Bulgarian\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -48,18 +48,18 @@ msgstr "" #: src/components/buttons/PrintingActions.tsx:107 #: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 #: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 -#: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 +#: src/components/nav/SearchDrawer.tsx:427 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" msgstr "" @@ -121,15 +121,15 @@ msgstr "" msgid "No" msgstr "" -#: src/components/details/Details.tsx:303 +#: src/components/details/Details.tsx:305 msgid "No name defined" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copied" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copy" msgstr "" @@ -145,7 +145,7 @@ msgstr "" #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" msgstr "" @@ -207,9 +207,9 @@ msgstr "" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:686 +#: src/pages/part/PartDetail.tsx:691 msgid "Inactive" msgstr "" @@ -248,6 +248,35 @@ msgstr "" msgid "Virtual" msgstr "" +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "" + #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" msgstr "" @@ -334,11 +363,6 @@ msgstr "" msgid "Form Error" msgstr "" -#: src/components/forms/ApiForm.tsx:430 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "" - #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" #~ msgstr "Form Errors Exist" @@ -389,7 +413,7 @@ msgstr "" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." msgstr "" @@ -399,7 +423,7 @@ msgstr "" #~ msgstr "Mail delivery successfull" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" msgstr "" @@ -527,7 +551,7 @@ msgstr "" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:127 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -551,7 +575,6 @@ msgid "Add Host" msgstr "" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" msgstr "" @@ -579,20 +602,20 @@ msgstr "" msgid "State: <0>worker ({0}), <1>plugins{1}" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "" @@ -614,7 +637,7 @@ msgid "Thumbnail" msgstr "" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" msgstr "" @@ -859,7 +882,7 @@ msgid "Close modal" msgstr "" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" msgstr "" @@ -967,7 +990,7 @@ msgstr "" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:295 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" msgstr "" @@ -1031,8 +1054,8 @@ msgid "About" msgstr "" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" @@ -1053,35 +1076,35 @@ msgstr "" msgid "Mark as read" msgstr "" -#: src/components/nav/SearchDrawer.tsx:77 +#: src/components/nav/SearchDrawer.tsx:78 msgid "results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:337 +#: src/components/nav/SearchDrawer.tsx:349 msgid "Enter search text" msgstr "" -#: src/components/nav/SearchDrawer.tsx:364 +#: src/components/nav/SearchDrawer.tsx:376 msgid "Search Options" msgstr "" -#: src/components/nav/SearchDrawer.tsx:367 +#: src/components/nav/SearchDrawer.tsx:379 msgid "Regex search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:377 +#: src/components/nav/SearchDrawer.tsx:389 msgid "Whole word search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:416 +#: src/components/nav/SearchDrawer.tsx:430 msgid "An error occurred during search query" msgstr "" -#: src/components/nav/SearchDrawer.tsx:427 +#: src/components/nav/SearchDrawer.tsx:441 msgid "No results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:430 +#: src/components/nav/SearchDrawer.tsx:444 msgid "No results available for search query" msgstr "" @@ -1100,7 +1123,7 @@ msgstr "" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:832 +#: src/pages/part/PartDetail.tsx:837 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" @@ -1109,11 +1132,11 @@ msgstr "" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:640 +#: src/pages/part/PartDetail.tsx:645 msgid "Parts" msgstr "" @@ -1136,7 +1159,7 @@ msgstr "" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "" @@ -1160,15 +1183,15 @@ msgid "Part Category" msgstr "" #: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 +#: src/pages/Index/Settings/SystemSettings.tsx:165 #: src/pages/part/CategoryDetail.tsx:249 #: src/pages/part/CategoryDetail.tsx:282 -#: src/pages/part/PartDetail.tsx:822 +#: src/pages/part/PartDetail.tsx:827 msgid "Part Categories" msgstr "" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:560 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "" @@ -1188,7 +1211,7 @@ msgstr "" #: src/components/render/ModelType.tsx:82 #: src/pages/stock/LocationDetail.tsx:185 #: src/pages/stock/LocationDetail.tsx:361 -#: src/pages/stock/StockDetail.tsx:552 +#: src/pages/stock/StockDetail.tsx:554 msgid "Stock Locations" msgstr "" @@ -1227,7 +1250,7 @@ msgid "Build Lines" msgstr "" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" msgstr "" @@ -1250,17 +1273,17 @@ msgid "Project Codes" msgstr "" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" msgstr "" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:573 +#: src/pages/part/PartDetail.tsx:579 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" msgstr "" @@ -1275,16 +1298,16 @@ msgstr "" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" msgstr "" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:579 +#: src/pages/part/PartDetail.tsx:586 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" msgstr "" @@ -1298,13 +1321,13 @@ msgid "Sales Order Shipments" msgstr "" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" msgstr "" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" @@ -1322,8 +1345,8 @@ msgstr "" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" msgstr "" @@ -1341,7 +1364,7 @@ msgid "Owners" msgstr "" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" msgstr "" @@ -1385,26 +1408,27 @@ msgstr "" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:493 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 #: src/pages/stock/LocationDetail.tsx:345 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" msgstr "" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:517 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" msgstr "" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:523 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 @@ -1844,16 +1868,12 @@ msgid "Getting started" msgstr "" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Failed to upload image" +#~ msgstr "Failed to upload image" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "" +#~ msgid "Notes saved" +#~ msgstr "Notes saved" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" @@ -1972,42 +1992,46 @@ msgid "Portuguese (Brazilian)" msgstr "" #: src/contexts/LanguageContext.tsx:43 -msgid "Russian" +msgid "Romanian" msgstr "" #: src/contexts/LanguageContext.tsx:44 -msgid "Slovak" +msgid "Russian" msgstr "" #: src/contexts/LanguageContext.tsx:45 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: src/contexts/LanguageContext.tsx:46 -msgid "Swedish" +msgid "Slovenian" msgstr "" #: src/contexts/LanguageContext.tsx:47 -msgid "Thai" +msgid "Swedish" msgstr "" #: src/contexts/LanguageContext.tsx:48 -msgid "Turkish" +msgid "Thai" msgstr "" #: src/contexts/LanguageContext.tsx:49 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: src/contexts/LanguageContext.tsx:50 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: src/contexts/LanguageContext.tsx:51 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: src/contexts/LanguageContext.tsx:52 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" msgstr "" @@ -2021,7 +2045,7 @@ msgstr "" #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" msgstr "" @@ -2160,10 +2184,10 @@ msgstr "" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" msgstr "" @@ -2171,15 +2195,15 @@ msgstr "" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" msgstr "" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" msgstr "" @@ -2464,7 +2488,7 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" @@ -2515,7 +2539,7 @@ msgstr "" #~ msgstr "Stock item updated" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" @@ -2537,8 +2561,8 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:207 -#: src/pages/part/PartDetail.tsx:656 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" msgstr "" @@ -2560,14 +2584,14 @@ msgid "Actions" msgstr "" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" msgstr "" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" msgstr "" @@ -2580,12 +2604,12 @@ msgid "Remove Stock" msgstr "" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:788 msgid "Transfer Stock" msgstr "" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:777 msgid "Count Stock" msgstr "" @@ -2625,23 +2649,14 @@ msgstr "" #~ msgid "You have been logged out" #~ msgstr "You have been logged out" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" msgstr "" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" msgstr "" -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "" - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "" - #: src/functions/auth.tsx:141 #~ msgid "Already logged in" #~ msgstr "Already logged in" @@ -2654,11 +2669,20 @@ msgstr "" #~ msgid "Found an existing login - welcome back!" #~ msgstr "Found an existing login - welcome back!" -#: src/functions/auth.tsx:153 +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "" + +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "" + +#: src/functions/auth.tsx:195 msgid "Logged In" msgstr "" -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:196 msgid "Successfully logged in" msgstr "" @@ -2796,7 +2820,7 @@ msgstr "" msgid "Welcome to your Dashboard{0}" msgstr "" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." msgstr "" @@ -3374,15 +3398,15 @@ msgstr "" msgid "System settings" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" msgstr "" @@ -3394,50 +3418,50 @@ msgstr "" #~ msgid "Exchange Rates" #~ msgstr "Exchange Rates" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:591 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:527 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:298 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" msgstr "" @@ -3475,8 +3499,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3489,8 +3513,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" @@ -3501,10 +3525,10 @@ msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:134 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3537,10 +3561,10 @@ msgid "Issued By" msgstr "" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:322 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 @@ -3555,8 +3579,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" msgstr "" @@ -3594,7 +3618,7 @@ msgstr "" #~ msgstr "Unlink custom barcode from part" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:535 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" msgstr "" @@ -3638,34 +3662,34 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:613 +#: src/pages/part/PartDetail.tsx:622 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" msgstr "" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:625 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" msgstr "" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" @@ -3676,17 +3700,17 @@ msgstr "" #~ msgstr "Reporting Actions" #: src/pages/build/BuildDetail.tsx:374 -#~ msgid "Print build report" -#~ msgstr "Print build report" - -#: src/pages/build/BuildDetail.tsx:378 msgid "Build Order Actions" msgstr "" -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "Print build report" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" msgstr "" @@ -3725,7 +3749,7 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" @@ -3733,10 +3757,10 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 @@ -3769,12 +3793,12 @@ msgstr "" msgid "Assigned Stock" msgstr "" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" msgstr "" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" msgstr "" @@ -3804,32 +3828,32 @@ msgid "Manufacturer Part Details" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:487 +#: src/pages/part/PartDetail.tsx:492 msgid "Parameters" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:560 +#: src/pages/part/PartDetail.tsx:566 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" msgstr "" @@ -3845,7 +3869,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" msgstr "" @@ -3879,7 +3903,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" msgstr "" @@ -3969,85 +3993,85 @@ msgstr "" msgid "Category Details" msgstr "" -#: src/pages/part/PartDetail.tsx:140 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" msgstr "" -#: src/pages/part/PartDetail.tsx:147 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" msgstr "" -#: src/pages/part/PartDetail.tsx:153 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:167 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" msgstr "" -#: src/pages/part/PartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" msgstr "" -#: src/pages/part/PartDetail.tsx:181 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" msgstr "" -#: src/pages/part/PartDetail.tsx:188 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" msgstr "" -#: src/pages/part/PartDetail.tsx:195 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" msgstr "" -#: src/pages/part/PartDetail.tsx:213 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:220 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" msgstr "" -#: src/pages/part/PartDetail.tsx:235 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:243 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:250 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" msgstr "" -#: src/pages/part/PartDetail.tsx:257 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" msgstr "" -#: src/pages/part/PartDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -4065,37 +4089,37 @@ msgstr "" msgid "Active" msgstr "" -#: src/pages/part/PartDetail.tsx:271 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" msgstr "" -#: src/pages/part/PartDetail.tsx:276 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" msgstr "" -#: src/pages/part/PartDetail.tsx:281 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" msgstr "" -#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:291 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:296 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" msgstr "" -#: src/pages/part/PartDetail.tsx:309 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" msgstr "" @@ -4104,7 +4128,7 @@ msgstr "" #~ msgid "Edit part" #~ msgstr "Edit part" -#: src/pages/part/PartDetail.tsx:314 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" msgstr "" @@ -4116,69 +4140,71 @@ msgstr "" #~ msgid "Delete part" #~ msgstr "Delete part" -#: src/pages/part/PartDetail.tsx:329 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" msgstr "" -#: src/pages/part/PartDetail.tsx:340 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" msgstr "" -#: src/pages/part/PartDetail.tsx:375 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" msgstr "" -#: src/pages/part/PartDetail.tsx:410 +#: src/pages/part/PartDetail.tsx:415 msgid "Stocktake By" msgstr "" -#: src/pages/part/PartDetail.tsx:481 +#: src/pages/part/PartDetail.tsx:486 msgid "Part Details" msgstr "" -#: src/pages/part/PartDetail.tsx:507 +#: src/pages/part/PartDetail.tsx:512 msgid "Variants" msgstr "" -#: src/pages/part/PartDetail.tsx:514 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" msgstr "" -#: src/pages/part/PartDetail.tsx:520 +#: src/pages/part/PartDetail.tsx:526 msgid "Bill of Materials" msgstr "" -#: src/pages/part/PartDetail.tsx:534 +#: src/pages/part/PartDetail.tsx:540 msgid "Used In" msgstr "" -#: src/pages/part/PartDetail.tsx:541 +#: src/pages/part/PartDetail.tsx:547 msgid "Part Pricing" msgstr "" -#: src/pages/part/PartDetail.tsx:547 +#: src/pages/part/PartDetail.tsx:553 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" msgstr "" -#: src/pages/part/PartDetail.tsx:586 +#: src/pages/part/PartDetail.tsx:593 msgid "Scheduling" msgstr "" -#: src/pages/part/PartDetail.tsx:596 +#: src/pages/part/PartDetail.tsx:605 msgid "Test Templates" msgstr "" -#: src/pages/part/PartDetail.tsx:607 +#: src/pages/part/PartDetail.tsx:616 msgid "Related Parts" msgstr "" -#: src/pages/part/PartDetail.tsx:662 -#: src/pages/stock/StockDetail.tsx:151 -#: src/pages/stock/StockDetail.tsx:529 +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 @@ -4186,55 +4212,55 @@ msgstr "" msgid "Available" msgstr "" -#: src/pages/part/PartDetail.tsx:668 +#: src/pages/part/PartDetail.tsx:673 msgid "No Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:674 +#: src/pages/part/PartDetail.tsx:679 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" msgstr "" -#: src/pages/part/PartDetail.tsx:680 -#: src/pages/stock/StockDetail.tsx:512 +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" msgstr "" -#: src/pages/part/PartDetail.tsx:699 +#: src/pages/part/PartDetail.tsx:704 msgid "Edit Part" msgstr "" -#: src/pages/part/PartDetail.tsx:706 +#: src/pages/part/PartDetail.tsx:711 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" msgstr "" -#: src/pages/part/PartDetail.tsx:718 +#: src/pages/part/PartDetail.tsx:723 msgid "Delete Part" msgstr "" -#: src/pages/part/PartDetail.tsx:727 +#: src/pages/part/PartDetail.tsx:732 msgid "Deleting this part cannot be reversed" msgstr "" -#: src/pages/part/PartDetail.tsx:765 +#: src/pages/part/PartDetail.tsx:770 #: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" msgstr "" -#: src/pages/part/PartDetail.tsx:773 +#: src/pages/part/PartDetail.tsx:778 msgid "Count part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:784 +#: src/pages/part/PartDetail.tsx:789 msgid "Transfer part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:793 +#: src/pages/part/PartDetail.tsx:798 msgid "Part Actions" msgstr "" @@ -4247,6 +4273,7 @@ msgid "No pricing data found for this part." msgstr "" #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" msgstr "" @@ -4255,54 +4282,32 @@ msgid "Purchase History" msgstr "" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "" - +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 @@ -4311,81 +4316,117 @@ msgstr "" msgid "Total Price" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "Minimum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "Maximum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:25 @@ -4404,33 +4445,33 @@ msgstr "" msgid "Loading pricing data" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "" @@ -4450,23 +4491,23 @@ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" msgstr "" @@ -4477,46 +4518,46 @@ msgstr "" #~ msgstr "Order Currency," #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" msgstr "" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" @@ -4526,17 +4567,17 @@ msgstr "" msgid "Customers" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" msgstr "" @@ -4599,11 +4640,11 @@ msgstr "" msgid "Location Actions" msgstr "" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" msgstr "" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" msgstr "" @@ -4615,15 +4656,15 @@ msgstr "" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "Unlink custom barcode from stock item" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" msgstr "" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" msgstr "" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" msgstr "" @@ -4636,31 +4677,31 @@ msgstr "" #~ msgid "Delete stock item" #~ msgstr "Delete stock item" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" msgstr "" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" msgstr "" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" msgstr "" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" msgstr "" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" msgstr "" @@ -4668,34 +4709,34 @@ msgstr "" #~ msgid "Duplicate stock item" #~ msgstr "Duplicate stock item" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" msgstr "" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" msgstr "" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "" @@ -4786,7 +4827,7 @@ msgstr "" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" msgstr "" @@ -5224,7 +5265,7 @@ msgid "Required Tests" msgstr "" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" msgstr "" @@ -5306,23 +5347,39 @@ msgstr "" msgid "File could not be uploaded" msgstr "" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" msgstr "" @@ -5330,11 +5387,11 @@ msgstr "" #~ msgid "Upload attachment" #~ msgstr "Upload attachment" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" msgstr "" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "" @@ -5716,75 +5773,75 @@ msgstr "" msgid "No Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 msgid "Required" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:80 +#: src/tables/part/PartTestTemplateTable.tsx:85 msgid "Show required tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:95 +#: src/tables/part/PartTestTemplateTable.tsx:100 msgid "Show tests that require an attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:99 +#: src/tables/part/PartTestTemplateTable.tsx:104 msgid "Include Inherited" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:100 +#: src/tables/part/PartTestTemplateTable.tsx:105 msgid "Show tests from inherited templates" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:104 +#: src/tables/part/PartTestTemplateTable.tsx:109 msgid "Has Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:105 +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" msgstr "" @@ -6273,7 +6330,7 @@ msgid "Task ID" msgstr "" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" msgstr "" @@ -6679,95 +6736,95 @@ msgstr "" msgid "Delete stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 msgid "Delete Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:289 +#: src/tables/stock/StockItemTestResultTable.tsx:273 msgid "Test result deleted" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:303 +#: src/tables/stock/StockItemTestResultTable.tsx:287 msgid "Test Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" msgstr "" diff --git a/src/frontend/src/locales/cs/messages.po b/src/frontend/src/locales/cs/messages.po index f777518e0d..2e8e595d15 100644 --- a/src/frontend/src/locales/cs/messages.po +++ b/src/frontend/src/locales/cs/messages.po @@ -8,7 +8,7 @@ msgstr "" "Language: cs\n" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-05-23 11:38\n" +"PO-Revision-Date: 2024-06-23 05:23\n" "Last-Translator: \n" "Language-Team: Czech\n" "Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" @@ -20,11 +20,11 @@ msgstr "" #: src/components/Boundary.tsx:12 msgid "Error rendering component" -msgstr "" +msgstr "Chyba při vykreslování komponenty" #: src/components/Boundary.tsx:14 msgid "An error occurred while rendering this component. Refer to the console for more information." -msgstr "" +msgstr "Došlo k chybě při vykreslování této komponenty. Více informací najdete v konzoli." #: src/components/DashboardItemProxy.tsx:34 msgid "Title" @@ -32,7 +32,7 @@ msgstr "Titulek" #: src/components/buttons/AdminButton.tsx:83 msgid "Open in admin interface" -msgstr "" +msgstr "Otevřít v administrátorském rozhraní" #: src/components/buttons/CopyButton.tsx:18 msgid "Copy to clipboard" @@ -40,56 +40,56 @@ msgstr "Zkopírovat do schránky" #: src/components/buttons/PrintingActions.tsx:95 msgid "Print Label" -msgstr "" +msgstr "Tisk štítku" #: src/components/buttons/PrintingActions.tsx:101 msgid "Label printing completed successfully" -msgstr "" +msgstr "Tisk štítků byl úspěšně dokončen" #: src/components/buttons/PrintingActions.tsx:107 #: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 #: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 -#: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 +#: src/components/nav/SearchDrawer.tsx:427 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" msgstr "Chyba" #: src/components/buttons/PrintingActions.tsx:108 msgid "The label could not be generated" -msgstr "" +msgstr "Štítek nelze vygenerovat" #: src/components/buttons/PrintingActions.tsx:123 msgid "Print Report" -msgstr "" +msgstr "Tisk reportu" #: src/components/buttons/PrintingActions.tsx:139 msgid "Report printing completed successfully" -msgstr "" +msgstr "Tisk reportu byl úspěšně dokončen" #: src/components/buttons/PrintingActions.tsx:145 msgid "The report could not be generated" -msgstr "" +msgstr "Report se nepodařilo vytvořit" #: src/components/buttons/PrintingActions.tsx:173 msgid "Printing Actions" -msgstr "" +msgstr "Tiskové akce" #: src/components/buttons/PrintingActions.tsx:178 msgid "Print Labels" -msgstr "" +msgstr "Tisk štítků" #: src/components/buttons/PrintingActions.tsx:184 msgid "Print Reports" -msgstr "" +msgstr "Tisk reportu" #: src/components/buttons/ScanButton.tsx:15 msgid "Scan QR code" @@ -97,7 +97,7 @@ msgstr "Naskenovat QR kód" #: src/components/buttons/ScanButton.tsx:20 msgid "Open QR code scanner" -msgstr "" +msgstr "Otevřít skener QR kódů" #: src/components/buttons/SpotlightButton.tsx:14 msgid "Open spotlight" @@ -121,15 +121,15 @@ msgstr "Ano" msgid "No" msgstr "Ne" -#: src/components/details/Details.tsx:303 +#: src/components/details/Details.tsx:305 msgid "No name defined" -msgstr "" +msgstr "Žádný název není definován" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copied" msgstr "Zkopírováno" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copy" msgstr "Kopírovat" @@ -145,7 +145,7 @@ msgstr "Odstranit přidružený obrázek z této položky?" #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" msgstr "Odstranit" @@ -207,27 +207,27 @@ msgstr "Součást není aktivní" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:686 +#: src/pages/part/PartDetail.tsx:691 msgid "Inactive" msgstr "Neaktivní" #: src/components/details/PartIcons.tsx:41 msgid "Part is a template part (variants can be made from this part)" -msgstr "" +msgstr "Součástka je šablonou (z této součástky jdou vytvořit varianty)" #: src/components/details/PartIcons.tsx:47 msgid "Part can be assembled from other parts" -msgstr "" +msgstr "Součástka může být sestavena z jiných součástek" #: src/components/details/PartIcons.tsx:53 msgid "Part can be used in assemblies" -msgstr "" +msgstr "Součástka může být použita v sestavách" #: src/components/details/PartIcons.tsx:59 msgid "Part stock is tracked by serial number" -msgstr "" +msgstr "Stav zásob je sledován sériovým číslem" #: src/components/details/PartIcons.tsx:65 msgid "Part can be purchased from external suppliers" @@ -248,6 +248,35 @@ msgstr "Část je virtuální (nikoli fyzická část)" msgid "Virtual" msgstr "Virtuální" +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "Nahrání obrázku se nezdařilo" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "Dokončeno" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "Poznámky byly úspěšně uloženy" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "Nepodařilo se uložit poznámky" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "Náhled poznámek" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "Upravit poznámky" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "Uložit poznámky" + #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" msgstr "Kód" @@ -275,7 +304,7 @@ msgstr "Chyba při ukládání šablony" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:146 #: src/components/editors/TemplateEditor/TemplateEditor.tsx:270 msgid "Save & Reload Preview" -msgstr "" +msgstr "Uložit a znovu načíst náhled" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:151 msgid "Are you sure you want to Save & Reload the preview?" @@ -287,7 +316,7 @@ msgstr "Opravdu chcete uložit a znovu načíst náhled?" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:153 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?" -msgstr "" +msgstr "Pro zobrazení náhledu je třeba aktuální šablonu na serveru nahradit změněnou, což může poškodit štítek, je-li aktivně používán. Chcete pokračovat?" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:157 msgid "Save & Reload" @@ -295,11 +324,11 @@ msgstr "Uložit a znovu načíst" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:189 msgid "Preview updated" -msgstr "" +msgstr "Náhled aktualizován" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:190 msgid "The preview has been updated successfully." -msgstr "" +msgstr "Náhled byl úspěšně aktualizován." #: src/components/editors/TemplateEditor/TemplateEditor.tsx:262 msgid "Reload preview" @@ -307,7 +336,7 @@ msgstr "Aktualizovat náhled" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:263 msgid "Use the currently stored template from the server" -msgstr "" +msgstr "Použít aktuálně uloženou šablonu ze serveru" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:263 #~ msgid "Save & Reload preview" @@ -323,22 +352,17 @@ msgstr "Uložit aktuální šablonu a znovu načíst náhled" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:329 msgid "Select instance to preview" -msgstr "" +msgstr "Vyberte instanci pro náhled" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:373 msgid "Error rendering template" -msgstr "" +msgstr "Chyba při načítání šablony" #: src/components/forms/ApiForm.tsx:149 #: src/functions/forms.tsx:259 msgid "Form Error" msgstr "Chyba formuláře" -#: src/components/forms/ApiForm.tsx:430 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "Dokončeno" - #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" #~ msgstr "Form Errors Exist" @@ -372,7 +396,7 @@ msgstr "Přihlášení úspěšné" #: src/components/forms/AuthenticationForm.tsx:52 msgid "Logged in successfully" -msgstr "" +msgstr "Přihlášení proběhlo úspěšně" #: src/components/forms/AuthenticationForm.tsx:52 #~ msgid "Welcome back!" @@ -389,9 +413,9 @@ msgstr "Přihlášení se nezdařilo" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." -msgstr "" +msgstr "Zkontrolujte vstup a zkuste to znovu." #: src/components/forms/AuthenticationForm.tsx:65 #: src/functions/auth.tsx:74 @@ -399,21 +423,21 @@ msgstr "" #~ msgstr "Mail delivery successfull" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" -msgstr "" +msgstr "E-mail byl doručen úspěšně" #: src/components/forms/AuthenticationForm.tsx:71 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too." -msgstr "" +msgstr "Zkontrolujte doručenou poštu pro přihlašovací odkaz. Pokud máte účet, obdržíte přihlašovací odkaz. Zkontrolujte také spam." #: src/components/forms/AuthenticationForm.tsx:75 msgid "Mail delivery failed" -msgstr "" +msgstr "Odeslání e-mailu se nezdařilo" #: src/components/forms/AuthenticationForm.tsx:95 msgid "Or continue with other methods" -msgstr "" +msgstr "Nebo pokračovat jinými metodami" #: src/components/forms/AuthenticationForm.tsx:106 #: src/components/forms/AuthenticationForm.tsx:227 @@ -464,11 +488,11 @@ msgstr "Zašleme vám přihlašovací odkaz - pokud jste registrováni" #: src/components/forms/AuthenticationForm.tsx:151 msgid "Send me an email" -msgstr "" +msgstr "Poslat si email" #: src/components/forms/AuthenticationForm.tsx:153 msgid "Use username and password" -msgstr "" +msgstr "Použijte uživatelské jméno a heslo" #: src/components/forms/AuthenticationForm.tsx:162 msgid "Log In" @@ -488,11 +512,11 @@ msgstr "Potvrďte, prosím, svou e-mailovou adresu pro dokončení registrace" #: src/components/forms/AuthenticationForm.tsx:210 msgid "Input error" -msgstr "" +msgstr "Chyba vstupu" #: src/components/forms/AuthenticationForm.tsx:234 msgid "This will be used for a confirmation" -msgstr "" +msgstr "Toto bude použito pro potvrzení" #: src/components/forms/AuthenticationForm.tsx:246 msgid "Password repeat" @@ -527,7 +551,7 @@ msgstr "Server" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:127 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -544,14 +568,13 @@ msgstr "Jméno" #: src/components/forms/HostOptionsForm.tsx:75 msgid "No one here..." -msgstr "" +msgstr "Nikdo zde není..." #: src/components/forms/HostOptionsForm.tsx:86 msgid "Add Host" msgstr "Přidat server" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" msgstr "Uložit" @@ -561,7 +584,7 @@ msgstr "Vyberte cílovou instanci" #: src/components/forms/InstanceOptions.tsx:71 msgid "Edit possible host options" -msgstr "" +msgstr "Upravit nastavení hosta" #: src/components/forms/InstanceOptions.tsx:98 msgid "Version: {0}" @@ -577,28 +600,28 @@ msgstr "Název: {0}" #: src/components/forms/InstanceOptions.tsx:104 msgid "State: <0>worker ({0}), <1>plugins{1}" -msgstr "" +msgstr "Stav: <0>worker ({0}), <1>pluginy{1}" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "Hledat" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" msgstr "Načítání" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "Nebyly nalezeny žádné výsledky" #: src/components/forms/fields/TableField.tsx:50 msgid "modelRenderer entry required for tables" -msgstr "" +msgstr "Položka modelRenderer je požadovaná pro tabulky" #: src/components/forms/fields/TableField.tsx:74 msgid "No entries available" @@ -614,7 +637,7 @@ msgid "Thumbnail" msgstr "Náhled" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" msgstr "Akce čárového kódu" @@ -693,7 +716,7 @@ msgstr "Tyto informace jsou dostupné pouze pro uživatele" #: src/components/items/Placeholder.tsx:14 msgid "This feature/button/site is a placeholder for a feature that is not implemented, only partial or intended for testing." -msgstr "" +msgstr "Tato funkce/tlačítko/stránka je zástupný znak pro funkci, která není implementována, nebo je naimplementována jen částečně či je určená k testování." #: src/components/items/Placeholder.tsx:17 msgid "PLH" @@ -701,19 +724,19 @@ msgstr "PLH" #: src/components/items/Placeholder.tsx:31 msgid "This panel is a placeholder." -msgstr "" +msgstr "Tento panel je zástupným znakem." #: src/components/modals/AboutInvenTreeModal.tsx:99 msgid "Version Information" -msgstr "" +msgstr "Informace o verzi" #: src/components/modals/AboutInvenTreeModal.tsx:103 msgid "Your InvenTree version status is" -msgstr "" +msgstr "Váš status InvenTree verze je" #: src/components/modals/AboutInvenTreeModal.tsx:107 msgid "Development Version" -msgstr "" +msgstr "Vývojové verze" #: src/components/modals/AboutInvenTreeModal.tsx:111 msgid "Up to Date" @@ -799,7 +822,7 @@ msgstr "Načítání licenčních informací" #: src/components/modals/LicenseModal.tsx:77 msgid "Failed to fetch license information" -msgstr "" +msgstr "Nepodařilo se načíst licenční informace" #: src/components/modals/LicenseModal.tsx:85 msgid "{key} Packages" @@ -812,7 +835,7 @@ msgstr "Neznámá odpověď" #: src/components/modals/QrCodeModal.tsx:102 #: src/pages/Index/Scan.tsx:636 msgid "Error while getting camera" -msgstr "" +msgstr "Chyba při spouštění kamery" #: src/components/modals/QrCodeModal.tsx:125 #: src/pages/Index/Scan.tsx:659 @@ -859,7 +882,7 @@ msgid "Close modal" msgstr "" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" msgstr "Server" @@ -967,7 +990,7 @@ msgstr "Nastavení účtu" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:295 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" msgstr "Nastavení systému" @@ -1031,8 +1054,8 @@ msgid "About" msgstr "O aplikaci" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" @@ -1053,35 +1076,35 @@ msgstr "Notifikace" msgid "Mark as read" msgstr "Označit jako přečtené" -#: src/components/nav/SearchDrawer.tsx:77 +#: src/components/nav/SearchDrawer.tsx:78 msgid "results" msgstr "výsledky" -#: src/components/nav/SearchDrawer.tsx:337 +#: src/components/nav/SearchDrawer.tsx:349 msgid "Enter search text" msgstr "Zadejte hledaný text" -#: src/components/nav/SearchDrawer.tsx:364 +#: src/components/nav/SearchDrawer.tsx:376 msgid "Search Options" msgstr "Možnosti hledání" -#: src/components/nav/SearchDrawer.tsx:367 +#: src/components/nav/SearchDrawer.tsx:379 msgid "Regex search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:377 +#: src/components/nav/SearchDrawer.tsx:389 msgid "Whole word search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:416 +#: src/components/nav/SearchDrawer.tsx:430 msgid "An error occurred during search query" msgstr "" -#: src/components/nav/SearchDrawer.tsx:427 +#: src/components/nav/SearchDrawer.tsx:441 msgid "No results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:430 +#: src/components/nav/SearchDrawer.tsx:444 msgid "No results available for search query" msgstr "" @@ -1100,7 +1123,7 @@ msgstr "" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:832 +#: src/pages/part/PartDetail.tsx:837 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" @@ -1109,11 +1132,11 @@ msgstr "Díl" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:640 +#: src/pages/part/PartDetail.tsx:645 msgid "Parts" msgstr "Díly" @@ -1136,7 +1159,7 @@ msgstr "" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "Dodavatel dílu" @@ -1160,15 +1183,15 @@ msgid "Part Category" msgstr "" #: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 +#: src/pages/Index/Settings/SystemSettings.tsx:165 #: src/pages/part/CategoryDetail.tsx:249 #: src/pages/part/CategoryDetail.tsx:282 -#: src/pages/part/PartDetail.tsx:822 +#: src/pages/part/PartDetail.tsx:827 msgid "Part Categories" msgstr "" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:560 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "Skladová položka" @@ -1188,7 +1211,7 @@ msgstr "Umístění skladu" #: src/components/render/ModelType.tsx:82 #: src/pages/stock/LocationDetail.tsx:185 #: src/pages/stock/LocationDetail.tsx:361 -#: src/pages/stock/StockDetail.tsx:552 +#: src/pages/stock/StockDetail.tsx:554 msgid "Stock Locations" msgstr "" @@ -1227,7 +1250,7 @@ msgid "Build Lines" msgstr "" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" msgstr "Firma" @@ -1250,17 +1273,17 @@ msgid "Project Codes" msgstr "Kódy projektu" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" msgstr "" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:573 +#: src/pages/part/PartDetail.tsx:579 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" msgstr "" @@ -1275,16 +1298,16 @@ msgstr "" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" msgstr "" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:579 +#: src/pages/part/PartDetail.tsx:586 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" msgstr "" @@ -1298,13 +1321,13 @@ msgid "Sales Order Shipments" msgstr "" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" msgstr "" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" @@ -1322,8 +1345,8 @@ msgstr "Adresy" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" msgstr "Kontakt" @@ -1341,7 +1364,7 @@ msgid "Owners" msgstr "Správci" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" msgstr "Uživatel" @@ -1385,26 +1408,27 @@ msgstr "" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:493 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 #: src/pages/stock/LocationDetail.tsx:345 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" msgstr "Zásoby" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:517 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" msgstr "Sériové číslo" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:523 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 @@ -1844,16 +1868,12 @@ msgid "Getting started" msgstr "Začínáme" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "Nepodařilo se nahrát obrázek" +#~ msgid "Failed to upload image" +#~ msgstr "Failed to upload image" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "Poznámky uloženy" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "Nepodařilo se uložit poznámky" +#~ msgid "Notes saved" +#~ msgstr "Notes saved" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" @@ -1972,44 +1992,48 @@ msgid "Portuguese (Brazilian)" msgstr "Portugalština (Brazilská)" #: src/contexts/LanguageContext.tsx:43 +msgid "Romanian" +msgstr "" + +#: src/contexts/LanguageContext.tsx:44 msgid "Russian" msgstr "Ruština" -#: src/contexts/LanguageContext.tsx:44 +#: src/contexts/LanguageContext.tsx:45 msgid "Slovak" msgstr "Slovenština" -#: src/contexts/LanguageContext.tsx:45 +#: src/contexts/LanguageContext.tsx:46 msgid "Slovenian" msgstr "Slovinština" -#: src/contexts/LanguageContext.tsx:46 +#: src/contexts/LanguageContext.tsx:47 msgid "Swedish" msgstr "Švédština" -#: src/contexts/LanguageContext.tsx:47 +#: src/contexts/LanguageContext.tsx:48 msgid "Thai" msgstr "Thajština" -#: src/contexts/LanguageContext.tsx:48 +#: src/contexts/LanguageContext.tsx:49 msgid "Turkish" msgstr "Turečtina" -#: src/contexts/LanguageContext.tsx:49 -msgid "Ukrainian" -msgstr "" - #: src/contexts/LanguageContext.tsx:50 +msgid "Ukrainian" +msgstr "Ukrajinština" + +#: src/contexts/LanguageContext.tsx:51 msgid "Vietnamese" msgstr "Vietnamština" -#: src/contexts/LanguageContext.tsx:51 -msgid "Chinese (Simplified)" -msgstr "" - #: src/contexts/LanguageContext.tsx:52 +msgid "Chinese (Simplified)" +msgstr "Čínština (zjednodušená)" + +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" -msgstr "" +msgstr "Čínština (tradiční)" #: src/defaults/actions.tsx:16 #: src/defaults/links.tsx:26 @@ -2021,17 +2045,17 @@ msgstr "Domů" #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" msgstr "Přehled" #: src/defaults/actions.tsx:24 msgid "Go to the InvenTree dashboard" -msgstr "" +msgstr "Přejít na InvenTree nástěnku" #: src/defaults/actions.tsx:31 msgid "Visit the documentation to learn more about InvenTree" -msgstr "" +msgstr "Navštivte dokumentaci pro více informací o InvenTree" #: src/defaults/actions.tsx:37 #: src/defaults/links.tsx:92 @@ -2042,16 +2066,16 @@ msgstr "O InvenTree" #: src/defaults/actions.tsx:38 #: src/defaults/links.tsx:123 msgid "About the InvenTree org" -msgstr "" +msgstr "O InvenTree.org" #: src/defaults/actions.tsx:44 msgid "Server Information" -msgstr "" +msgstr "Informace o serveru" #: src/defaults/actions.tsx:45 #: src/defaults/links.tsx:117 msgid "About this Inventree instance" -msgstr "" +msgstr "O této instanci Inventree" #: src/defaults/actions.tsx:51 #: src/defaults/links.tsx:105 @@ -2065,7 +2089,7 @@ msgstr "" #: src/defaults/actions.tsx:59 msgid "Open the main navigation menu" -msgstr "" +msgstr "Otevřít hlavní navigační menu" #: src/defaults/dashboardItems.tsx:15 msgid "Subscribed Parts" @@ -2077,24 +2101,24 @@ msgstr "" #: src/defaults/dashboardItems.tsx:29 msgid "Latest Parts" -msgstr "" +msgstr "Nejnovější díly" #: src/defaults/dashboardItems.tsx:36 msgid "BOM Waiting Validation" -msgstr "" +msgstr "Čeká se na ověření BOM" #: src/defaults/dashboardItems.tsx:43 msgid "Recently Updated" -msgstr "" +msgstr "Nedávno aktualizované" #: src/defaults/dashboardItems.tsx:50 #: src/tables/part/PartTable.tsx:216 msgid "Low Stock" -msgstr "" +msgstr "Nízké zásoby" #: src/defaults/dashboardItems.tsx:57 msgid "Depleted Stock" -msgstr "" +msgstr "Vyčerpané zásoby" #: src/defaults/dashboardItems.tsx:64 msgid "Required for Build Orders" @@ -2160,10 +2184,10 @@ msgstr "Demo" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" msgstr "Nákup" @@ -2171,15 +2195,15 @@ msgstr "Nákup" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" msgstr "Prodej" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" msgstr "Playground" @@ -2464,7 +2488,7 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" @@ -2515,7 +2539,7 @@ msgstr "" #~ msgstr "Stock item updated" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" @@ -2537,8 +2561,8 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:207 -#: src/pages/part/PartDetail.tsx:656 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" msgstr "Na skladě" @@ -2560,14 +2584,14 @@ msgid "Actions" msgstr "Akce" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" msgstr "Přidat" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" msgstr "Počet" @@ -2580,12 +2604,12 @@ msgid "Remove Stock" msgstr "" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:788 msgid "Transfer Stock" msgstr "" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:777 msgid "Count Stock" msgstr "" @@ -2625,23 +2649,14 @@ msgstr "" #~ msgid "You have been logged out" #~ msgstr "You have been logged out" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" msgstr "" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" msgstr "" -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "" - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "" - #: src/functions/auth.tsx:141 #~ msgid "Already logged in" #~ msgstr "Already logged in" @@ -2654,11 +2669,20 @@ msgstr "" #~ msgid "Found an existing login - welcome back!" #~ msgstr "Found an existing login - welcome back!" -#: src/functions/auth.tsx:153 +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "" + +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "" + +#: src/functions/auth.tsx:195 msgid "Logged In" msgstr "Přihlášen" -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:196 msgid "Successfully logged in" msgstr "" @@ -2796,7 +2820,7 @@ msgstr "" msgid "Welcome to your Dashboard{0}" msgstr "" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." msgstr "" @@ -3374,15 +3398,15 @@ msgstr "" msgid "System settings" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" msgstr "Přihlášení" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" msgstr "Čárové kódy" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" msgstr "Ceník" @@ -3394,50 +3418,50 @@ msgstr "Ceník" #~ msgid "Exchange Rates" #~ msgstr "Exchange Rates" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" msgstr "Štítky" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:591 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:527 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:298 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" msgstr "Účet" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" msgstr "" @@ -3475,8 +3499,8 @@ msgstr "Označit jako nepřečtenou" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3489,8 +3513,8 @@ msgstr "Stav" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" @@ -3501,10 +3525,10 @@ msgstr "Reference" #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:134 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3537,10 +3561,10 @@ msgid "Issued By" msgstr "" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:322 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 @@ -3555,8 +3579,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" msgstr "" @@ -3594,7 +3618,7 @@ msgstr "" #~ msgstr "Unlink custom barcode from part" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:535 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" msgstr "" @@ -3638,34 +3662,34 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:613 +#: src/pages/part/PartDetail.tsx:622 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" msgstr "" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:625 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" msgstr "" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" @@ -3676,17 +3700,17 @@ msgstr "" #~ msgstr "Reporting Actions" #: src/pages/build/BuildDetail.tsx:374 -#~ msgid "Print build report" -#~ msgstr "Print build report" - -#: src/pages/build/BuildDetail.tsx:378 msgid "Build Order Actions" msgstr "" -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "Print build report" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" msgstr "" @@ -3725,7 +3749,7 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" @@ -3733,10 +3757,10 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 @@ -3769,12 +3793,12 @@ msgstr "" msgid "Assigned Stock" msgstr "" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" msgstr "Upravit společnost" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" msgstr "" @@ -3804,32 +3828,32 @@ msgid "Manufacturer Part Details" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:487 +#: src/pages/part/PartDetail.tsx:492 msgid "Parameters" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:560 +#: src/pages/part/PartDetail.tsx:566 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" msgstr "" @@ -3845,7 +3869,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" msgstr "" @@ -3879,7 +3903,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" msgstr "" @@ -3969,85 +3993,85 @@ msgstr "" msgid "Category Details" msgstr "" -#: src/pages/part/PartDetail.tsx:140 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" msgstr "" -#: src/pages/part/PartDetail.tsx:147 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" msgstr "" -#: src/pages/part/PartDetail.tsx:153 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:167 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" msgstr "" -#: src/pages/part/PartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" msgstr "" -#: src/pages/part/PartDetail.tsx:181 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" msgstr "" -#: src/pages/part/PartDetail.tsx:188 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" msgstr "" -#: src/pages/part/PartDetail.tsx:195 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" msgstr "" -#: src/pages/part/PartDetail.tsx:213 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:220 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" msgstr "" -#: src/pages/part/PartDetail.tsx:235 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:243 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:250 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" msgstr "" -#: src/pages/part/PartDetail.tsx:257 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" msgstr "" -#: src/pages/part/PartDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -4065,37 +4089,37 @@ msgstr "" msgid "Active" msgstr "" -#: src/pages/part/PartDetail.tsx:271 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" msgstr "" -#: src/pages/part/PartDetail.tsx:276 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" msgstr "" -#: src/pages/part/PartDetail.tsx:281 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" msgstr "" -#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:291 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:296 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" msgstr "" -#: src/pages/part/PartDetail.tsx:309 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" msgstr "" @@ -4104,7 +4128,7 @@ msgstr "" #~ msgid "Edit part" #~ msgstr "Edit part" -#: src/pages/part/PartDetail.tsx:314 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" msgstr "" @@ -4116,69 +4140,71 @@ msgstr "" #~ msgid "Delete part" #~ msgstr "Delete part" -#: src/pages/part/PartDetail.tsx:329 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" msgstr "" -#: src/pages/part/PartDetail.tsx:340 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" msgstr "" -#: src/pages/part/PartDetail.tsx:375 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" msgstr "" -#: src/pages/part/PartDetail.tsx:410 +#: src/pages/part/PartDetail.tsx:415 msgid "Stocktake By" msgstr "" -#: src/pages/part/PartDetail.tsx:481 +#: src/pages/part/PartDetail.tsx:486 msgid "Part Details" msgstr "" -#: src/pages/part/PartDetail.tsx:507 +#: src/pages/part/PartDetail.tsx:512 msgid "Variants" msgstr "" -#: src/pages/part/PartDetail.tsx:514 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" msgstr "" -#: src/pages/part/PartDetail.tsx:520 +#: src/pages/part/PartDetail.tsx:526 msgid "Bill of Materials" msgstr "" -#: src/pages/part/PartDetail.tsx:534 +#: src/pages/part/PartDetail.tsx:540 msgid "Used In" msgstr "" -#: src/pages/part/PartDetail.tsx:541 +#: src/pages/part/PartDetail.tsx:547 msgid "Part Pricing" msgstr "" -#: src/pages/part/PartDetail.tsx:547 +#: src/pages/part/PartDetail.tsx:553 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" msgstr "" -#: src/pages/part/PartDetail.tsx:586 +#: src/pages/part/PartDetail.tsx:593 msgid "Scheduling" msgstr "" -#: src/pages/part/PartDetail.tsx:596 +#: src/pages/part/PartDetail.tsx:605 msgid "Test Templates" msgstr "" -#: src/pages/part/PartDetail.tsx:607 +#: src/pages/part/PartDetail.tsx:616 msgid "Related Parts" msgstr "" -#: src/pages/part/PartDetail.tsx:662 -#: src/pages/stock/StockDetail.tsx:151 -#: src/pages/stock/StockDetail.tsx:529 +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 @@ -4186,55 +4212,55 @@ msgstr "" msgid "Available" msgstr "" -#: src/pages/part/PartDetail.tsx:668 +#: src/pages/part/PartDetail.tsx:673 msgid "No Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:674 +#: src/pages/part/PartDetail.tsx:679 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" msgstr "" -#: src/pages/part/PartDetail.tsx:680 -#: src/pages/stock/StockDetail.tsx:512 +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" msgstr "" -#: src/pages/part/PartDetail.tsx:699 +#: src/pages/part/PartDetail.tsx:704 msgid "Edit Part" msgstr "" -#: src/pages/part/PartDetail.tsx:706 +#: src/pages/part/PartDetail.tsx:711 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" msgstr "" -#: src/pages/part/PartDetail.tsx:718 +#: src/pages/part/PartDetail.tsx:723 msgid "Delete Part" msgstr "" -#: src/pages/part/PartDetail.tsx:727 +#: src/pages/part/PartDetail.tsx:732 msgid "Deleting this part cannot be reversed" msgstr "" -#: src/pages/part/PartDetail.tsx:765 +#: src/pages/part/PartDetail.tsx:770 #: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" msgstr "" -#: src/pages/part/PartDetail.tsx:773 +#: src/pages/part/PartDetail.tsx:778 msgid "Count part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:784 +#: src/pages/part/PartDetail.tsx:789 msgid "Transfer part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:793 +#: src/pages/part/PartDetail.tsx:798 msgid "Part Actions" msgstr "" @@ -4247,6 +4273,7 @@ msgid "No pricing data found for this part." msgstr "" #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" msgstr "" @@ -4255,54 +4282,32 @@ msgid "Purchase History" msgstr "" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "" - +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 @@ -4311,81 +4316,117 @@ msgstr "" msgid "Total Price" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "Minimum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "Maximum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:25 @@ -4404,33 +4445,33 @@ msgstr "" msgid "Loading pricing data" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "" @@ -4450,23 +4491,23 @@ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" msgstr "" @@ -4477,46 +4518,46 @@ msgstr "" #~ msgstr "Order Currency," #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" msgstr "" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" @@ -4526,17 +4567,17 @@ msgstr "" msgid "Customers" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" msgstr "" @@ -4599,11 +4640,11 @@ msgstr "" msgid "Location Actions" msgstr "" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" msgstr "" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" msgstr "" @@ -4615,15 +4656,15 @@ msgstr "" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "Unlink custom barcode from stock item" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" msgstr "" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" msgstr "" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" msgstr "" @@ -4636,31 +4677,31 @@ msgstr "" #~ msgid "Delete stock item" #~ msgstr "Delete stock item" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" msgstr "" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" msgstr "" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" msgstr "" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" msgstr "" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" msgstr "" @@ -4668,34 +4709,34 @@ msgstr "" #~ msgid "Duplicate stock item" #~ msgstr "Duplicate stock item" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" msgstr "" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" msgstr "" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "" @@ -4786,7 +4827,7 @@ msgstr "" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" msgstr "" @@ -5224,7 +5265,7 @@ msgid "Required Tests" msgstr "" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" msgstr "" @@ -5306,23 +5347,39 @@ msgstr "" msgid "File could not be uploaded" msgstr "" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" msgstr "Smazat přílohu" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" msgstr "" @@ -5330,11 +5387,11 @@ msgstr "" #~ msgid "Upload attachment" #~ msgstr "Upload attachment" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" msgstr "" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "" @@ -5716,75 +5773,75 @@ msgstr "" msgid "No Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 msgid "Required" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:80 +#: src/tables/part/PartTestTemplateTable.tsx:85 msgid "Show required tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:95 +#: src/tables/part/PartTestTemplateTable.tsx:100 msgid "Show tests that require an attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:99 +#: src/tables/part/PartTestTemplateTable.tsx:104 msgid "Include Inherited" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:100 +#: src/tables/part/PartTestTemplateTable.tsx:105 msgid "Show tests from inherited templates" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:104 +#: src/tables/part/PartTestTemplateTable.tsx:109 msgid "Has Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:105 +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" msgstr "" @@ -6273,7 +6330,7 @@ msgid "Task ID" msgstr "" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" msgstr "" @@ -6679,95 +6736,95 @@ msgstr "" msgid "Delete stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 msgid "Delete Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:289 +#: src/tables/stock/StockItemTestResultTable.tsx:273 msgid "Test result deleted" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:303 +#: src/tables/stock/StockItemTestResultTable.tsx:287 msgid "Test Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" msgstr "" diff --git a/src/frontend/src/locales/da/messages.po b/src/frontend/src/locales/da/messages.po index 6541c27662..678c958ca8 100644 --- a/src/frontend/src/locales/da/messages.po +++ b/src/frontend/src/locales/da/messages.po @@ -8,7 +8,7 @@ msgstr "" "Language: da\n" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-05-23 11:38\n" +"PO-Revision-Date: 2024-06-19 04:49\n" "Last-Translator: \n" "Language-Team: Danish\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -48,18 +48,18 @@ msgstr "" #: src/components/buttons/PrintingActions.tsx:107 #: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 #: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 -#: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 +#: src/components/nav/SearchDrawer.tsx:427 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" msgstr "" @@ -121,15 +121,15 @@ msgstr "" msgid "No" msgstr "" -#: src/components/details/Details.tsx:303 +#: src/components/details/Details.tsx:305 msgid "No name defined" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copied" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copy" msgstr "" @@ -145,7 +145,7 @@ msgstr "" #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" msgstr "" @@ -207,9 +207,9 @@ msgstr "" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:686 +#: src/pages/part/PartDetail.tsx:691 msgid "Inactive" msgstr "" @@ -248,6 +248,35 @@ msgstr "" msgid "Virtual" msgstr "" +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "" + #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" msgstr "" @@ -334,11 +363,6 @@ msgstr "" msgid "Form Error" msgstr "" -#: src/components/forms/ApiForm.tsx:430 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "" - #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" #~ msgstr "Form Errors Exist" @@ -389,7 +413,7 @@ msgstr "" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." msgstr "" @@ -399,7 +423,7 @@ msgstr "" #~ msgstr "Mail delivery successfull" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" msgstr "" @@ -527,7 +551,7 @@ msgstr "" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:127 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -551,7 +575,6 @@ msgid "Add Host" msgstr "" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" msgstr "" @@ -579,20 +602,20 @@ msgstr "" msgid "State: <0>worker ({0}), <1>plugins{1}" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "" @@ -614,7 +637,7 @@ msgid "Thumbnail" msgstr "" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" msgstr "" @@ -859,7 +882,7 @@ msgid "Close modal" msgstr "" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" msgstr "" @@ -967,7 +990,7 @@ msgstr "" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:295 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" msgstr "" @@ -1031,8 +1054,8 @@ msgid "About" msgstr "" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" @@ -1053,35 +1076,35 @@ msgstr "" msgid "Mark as read" msgstr "" -#: src/components/nav/SearchDrawer.tsx:77 +#: src/components/nav/SearchDrawer.tsx:78 msgid "results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:337 +#: src/components/nav/SearchDrawer.tsx:349 msgid "Enter search text" msgstr "" -#: src/components/nav/SearchDrawer.tsx:364 +#: src/components/nav/SearchDrawer.tsx:376 msgid "Search Options" msgstr "" -#: src/components/nav/SearchDrawer.tsx:367 +#: src/components/nav/SearchDrawer.tsx:379 msgid "Regex search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:377 +#: src/components/nav/SearchDrawer.tsx:389 msgid "Whole word search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:416 +#: src/components/nav/SearchDrawer.tsx:430 msgid "An error occurred during search query" msgstr "" -#: src/components/nav/SearchDrawer.tsx:427 +#: src/components/nav/SearchDrawer.tsx:441 msgid "No results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:430 +#: src/components/nav/SearchDrawer.tsx:444 msgid "No results available for search query" msgstr "" @@ -1100,7 +1123,7 @@ msgstr "" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:832 +#: src/pages/part/PartDetail.tsx:837 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" @@ -1109,11 +1132,11 @@ msgstr "" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:640 +#: src/pages/part/PartDetail.tsx:645 msgid "Parts" msgstr "" @@ -1136,7 +1159,7 @@ msgstr "" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "" @@ -1160,15 +1183,15 @@ msgid "Part Category" msgstr "" #: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 +#: src/pages/Index/Settings/SystemSettings.tsx:165 #: src/pages/part/CategoryDetail.tsx:249 #: src/pages/part/CategoryDetail.tsx:282 -#: src/pages/part/PartDetail.tsx:822 +#: src/pages/part/PartDetail.tsx:827 msgid "Part Categories" msgstr "" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:560 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "" @@ -1188,7 +1211,7 @@ msgstr "" #: src/components/render/ModelType.tsx:82 #: src/pages/stock/LocationDetail.tsx:185 #: src/pages/stock/LocationDetail.tsx:361 -#: src/pages/stock/StockDetail.tsx:552 +#: src/pages/stock/StockDetail.tsx:554 msgid "Stock Locations" msgstr "" @@ -1227,7 +1250,7 @@ msgid "Build Lines" msgstr "" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" msgstr "" @@ -1250,17 +1273,17 @@ msgid "Project Codes" msgstr "" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" msgstr "" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:573 +#: src/pages/part/PartDetail.tsx:579 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" msgstr "" @@ -1275,16 +1298,16 @@ msgstr "" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" msgstr "" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:579 +#: src/pages/part/PartDetail.tsx:586 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" msgstr "" @@ -1298,13 +1321,13 @@ msgid "Sales Order Shipments" msgstr "" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" msgstr "" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" @@ -1322,8 +1345,8 @@ msgstr "" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" msgstr "" @@ -1341,7 +1364,7 @@ msgid "Owners" msgstr "" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" msgstr "" @@ -1385,26 +1408,27 @@ msgstr "" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:493 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 #: src/pages/stock/LocationDetail.tsx:345 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" msgstr "" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:517 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" msgstr "" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:523 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 @@ -1844,16 +1868,12 @@ msgid "Getting started" msgstr "" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Failed to upload image" +#~ msgstr "Failed to upload image" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "" +#~ msgid "Notes saved" +#~ msgstr "Notes saved" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" @@ -1972,42 +1992,46 @@ msgid "Portuguese (Brazilian)" msgstr "" #: src/contexts/LanguageContext.tsx:43 -msgid "Russian" +msgid "Romanian" msgstr "" #: src/contexts/LanguageContext.tsx:44 -msgid "Slovak" +msgid "Russian" msgstr "" #: src/contexts/LanguageContext.tsx:45 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: src/contexts/LanguageContext.tsx:46 -msgid "Swedish" +msgid "Slovenian" msgstr "" #: src/contexts/LanguageContext.tsx:47 -msgid "Thai" +msgid "Swedish" msgstr "" #: src/contexts/LanguageContext.tsx:48 -msgid "Turkish" +msgid "Thai" msgstr "" #: src/contexts/LanguageContext.tsx:49 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: src/contexts/LanguageContext.tsx:50 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: src/contexts/LanguageContext.tsx:51 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: src/contexts/LanguageContext.tsx:52 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" msgstr "" @@ -2021,7 +2045,7 @@ msgstr "" #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" msgstr "" @@ -2160,10 +2184,10 @@ msgstr "" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" msgstr "" @@ -2171,15 +2195,15 @@ msgstr "" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" msgstr "" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" msgstr "" @@ -2464,7 +2488,7 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" @@ -2515,7 +2539,7 @@ msgstr "" #~ msgstr "Stock item updated" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" @@ -2537,8 +2561,8 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:207 -#: src/pages/part/PartDetail.tsx:656 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" msgstr "" @@ -2560,14 +2584,14 @@ msgid "Actions" msgstr "" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" msgstr "" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" msgstr "" @@ -2580,12 +2604,12 @@ msgid "Remove Stock" msgstr "" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:788 msgid "Transfer Stock" msgstr "" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:777 msgid "Count Stock" msgstr "" @@ -2625,23 +2649,14 @@ msgstr "" #~ msgid "You have been logged out" #~ msgstr "You have been logged out" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" msgstr "" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" msgstr "" -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "" - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "" - #: src/functions/auth.tsx:141 #~ msgid "Already logged in" #~ msgstr "Already logged in" @@ -2654,11 +2669,20 @@ msgstr "" #~ msgid "Found an existing login - welcome back!" #~ msgstr "Found an existing login - welcome back!" -#: src/functions/auth.tsx:153 +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "" + +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "" + +#: src/functions/auth.tsx:195 msgid "Logged In" msgstr "" -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:196 msgid "Successfully logged in" msgstr "" @@ -2796,7 +2820,7 @@ msgstr "" msgid "Welcome to your Dashboard{0}" msgstr "" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." msgstr "" @@ -3374,15 +3398,15 @@ msgstr "" msgid "System settings" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" msgstr "" @@ -3394,50 +3418,50 @@ msgstr "" #~ msgid "Exchange Rates" #~ msgstr "Exchange Rates" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:591 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:527 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:298 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" msgstr "" @@ -3475,8 +3499,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3489,8 +3513,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" @@ -3501,10 +3525,10 @@ msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:134 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3537,10 +3561,10 @@ msgid "Issued By" msgstr "" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:322 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 @@ -3555,8 +3579,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" msgstr "" @@ -3594,7 +3618,7 @@ msgstr "" #~ msgstr "Unlink custom barcode from part" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:535 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" msgstr "" @@ -3638,34 +3662,34 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:613 +#: src/pages/part/PartDetail.tsx:622 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" msgstr "" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:625 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" msgstr "" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" @@ -3676,17 +3700,17 @@ msgstr "" #~ msgstr "Reporting Actions" #: src/pages/build/BuildDetail.tsx:374 -#~ msgid "Print build report" -#~ msgstr "Print build report" - -#: src/pages/build/BuildDetail.tsx:378 msgid "Build Order Actions" msgstr "" -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "Print build report" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" msgstr "" @@ -3725,7 +3749,7 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" @@ -3733,10 +3757,10 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 @@ -3769,12 +3793,12 @@ msgstr "" msgid "Assigned Stock" msgstr "" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" msgstr "" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" msgstr "" @@ -3804,32 +3828,32 @@ msgid "Manufacturer Part Details" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:487 +#: src/pages/part/PartDetail.tsx:492 msgid "Parameters" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:560 +#: src/pages/part/PartDetail.tsx:566 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" msgstr "" @@ -3845,7 +3869,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" msgstr "" @@ -3879,7 +3903,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" msgstr "" @@ -3969,85 +3993,85 @@ msgstr "" msgid "Category Details" msgstr "" -#: src/pages/part/PartDetail.tsx:140 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" msgstr "" -#: src/pages/part/PartDetail.tsx:147 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" msgstr "" -#: src/pages/part/PartDetail.tsx:153 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:167 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" msgstr "" -#: src/pages/part/PartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" msgstr "" -#: src/pages/part/PartDetail.tsx:181 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" msgstr "" -#: src/pages/part/PartDetail.tsx:188 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" msgstr "" -#: src/pages/part/PartDetail.tsx:195 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" msgstr "" -#: src/pages/part/PartDetail.tsx:213 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:220 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" msgstr "" -#: src/pages/part/PartDetail.tsx:235 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:243 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:250 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" msgstr "" -#: src/pages/part/PartDetail.tsx:257 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" msgstr "" -#: src/pages/part/PartDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -4065,37 +4089,37 @@ msgstr "" msgid "Active" msgstr "" -#: src/pages/part/PartDetail.tsx:271 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" msgstr "" -#: src/pages/part/PartDetail.tsx:276 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" msgstr "" -#: src/pages/part/PartDetail.tsx:281 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" msgstr "" -#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:291 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:296 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" msgstr "" -#: src/pages/part/PartDetail.tsx:309 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" msgstr "" @@ -4104,7 +4128,7 @@ msgstr "" #~ msgid "Edit part" #~ msgstr "Edit part" -#: src/pages/part/PartDetail.tsx:314 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" msgstr "" @@ -4116,69 +4140,71 @@ msgstr "" #~ msgid "Delete part" #~ msgstr "Delete part" -#: src/pages/part/PartDetail.tsx:329 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" msgstr "" -#: src/pages/part/PartDetail.tsx:340 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" msgstr "" -#: src/pages/part/PartDetail.tsx:375 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" msgstr "" -#: src/pages/part/PartDetail.tsx:410 +#: src/pages/part/PartDetail.tsx:415 msgid "Stocktake By" msgstr "" -#: src/pages/part/PartDetail.tsx:481 +#: src/pages/part/PartDetail.tsx:486 msgid "Part Details" msgstr "" -#: src/pages/part/PartDetail.tsx:507 +#: src/pages/part/PartDetail.tsx:512 msgid "Variants" msgstr "" -#: src/pages/part/PartDetail.tsx:514 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" msgstr "" -#: src/pages/part/PartDetail.tsx:520 +#: src/pages/part/PartDetail.tsx:526 msgid "Bill of Materials" msgstr "" -#: src/pages/part/PartDetail.tsx:534 +#: src/pages/part/PartDetail.tsx:540 msgid "Used In" msgstr "" -#: src/pages/part/PartDetail.tsx:541 +#: src/pages/part/PartDetail.tsx:547 msgid "Part Pricing" msgstr "" -#: src/pages/part/PartDetail.tsx:547 +#: src/pages/part/PartDetail.tsx:553 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" msgstr "" -#: src/pages/part/PartDetail.tsx:586 +#: src/pages/part/PartDetail.tsx:593 msgid "Scheduling" msgstr "" -#: src/pages/part/PartDetail.tsx:596 +#: src/pages/part/PartDetail.tsx:605 msgid "Test Templates" msgstr "" -#: src/pages/part/PartDetail.tsx:607 +#: src/pages/part/PartDetail.tsx:616 msgid "Related Parts" msgstr "" -#: src/pages/part/PartDetail.tsx:662 -#: src/pages/stock/StockDetail.tsx:151 -#: src/pages/stock/StockDetail.tsx:529 +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 @@ -4186,55 +4212,55 @@ msgstr "" msgid "Available" msgstr "" -#: src/pages/part/PartDetail.tsx:668 +#: src/pages/part/PartDetail.tsx:673 msgid "No Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:674 +#: src/pages/part/PartDetail.tsx:679 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" msgstr "" -#: src/pages/part/PartDetail.tsx:680 -#: src/pages/stock/StockDetail.tsx:512 +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" msgstr "" -#: src/pages/part/PartDetail.tsx:699 +#: src/pages/part/PartDetail.tsx:704 msgid "Edit Part" msgstr "" -#: src/pages/part/PartDetail.tsx:706 +#: src/pages/part/PartDetail.tsx:711 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" msgstr "" -#: src/pages/part/PartDetail.tsx:718 +#: src/pages/part/PartDetail.tsx:723 msgid "Delete Part" msgstr "" -#: src/pages/part/PartDetail.tsx:727 +#: src/pages/part/PartDetail.tsx:732 msgid "Deleting this part cannot be reversed" msgstr "" -#: src/pages/part/PartDetail.tsx:765 +#: src/pages/part/PartDetail.tsx:770 #: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" msgstr "" -#: src/pages/part/PartDetail.tsx:773 +#: src/pages/part/PartDetail.tsx:778 msgid "Count part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:784 +#: src/pages/part/PartDetail.tsx:789 msgid "Transfer part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:793 +#: src/pages/part/PartDetail.tsx:798 msgid "Part Actions" msgstr "" @@ -4247,6 +4273,7 @@ msgid "No pricing data found for this part." msgstr "" #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" msgstr "" @@ -4255,54 +4282,32 @@ msgid "Purchase History" msgstr "" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "" - +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 @@ -4311,81 +4316,117 @@ msgstr "" msgid "Total Price" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "Minimum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "Maximum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:25 @@ -4404,33 +4445,33 @@ msgstr "" msgid "Loading pricing data" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "" @@ -4450,23 +4491,23 @@ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" msgstr "" @@ -4477,46 +4518,46 @@ msgstr "" #~ msgstr "Order Currency," #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" msgstr "" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" @@ -4526,17 +4567,17 @@ msgstr "" msgid "Customers" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" msgstr "" @@ -4599,11 +4640,11 @@ msgstr "" msgid "Location Actions" msgstr "" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" msgstr "" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" msgstr "" @@ -4615,15 +4656,15 @@ msgstr "" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "Unlink custom barcode from stock item" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" msgstr "" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" msgstr "" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" msgstr "" @@ -4636,31 +4677,31 @@ msgstr "" #~ msgid "Delete stock item" #~ msgstr "Delete stock item" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" msgstr "" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" msgstr "" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" msgstr "" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" msgstr "" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" msgstr "" @@ -4668,34 +4709,34 @@ msgstr "" #~ msgid "Duplicate stock item" #~ msgstr "Duplicate stock item" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" msgstr "" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" msgstr "" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "" @@ -4786,7 +4827,7 @@ msgstr "" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" msgstr "" @@ -5224,7 +5265,7 @@ msgid "Required Tests" msgstr "" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" msgstr "" @@ -5306,23 +5347,39 @@ msgstr "" msgid "File could not be uploaded" msgstr "" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" msgstr "" @@ -5330,11 +5387,11 @@ msgstr "" #~ msgid "Upload attachment" #~ msgstr "Upload attachment" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" msgstr "" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "" @@ -5716,75 +5773,75 @@ msgstr "" msgid "No Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 msgid "Required" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:80 +#: src/tables/part/PartTestTemplateTable.tsx:85 msgid "Show required tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:95 +#: src/tables/part/PartTestTemplateTable.tsx:100 msgid "Show tests that require an attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:99 +#: src/tables/part/PartTestTemplateTable.tsx:104 msgid "Include Inherited" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:100 +#: src/tables/part/PartTestTemplateTable.tsx:105 msgid "Show tests from inherited templates" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:104 +#: src/tables/part/PartTestTemplateTable.tsx:109 msgid "Has Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:105 +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" msgstr "" @@ -6273,7 +6330,7 @@ msgid "Task ID" msgstr "" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" msgstr "" @@ -6679,95 +6736,95 @@ msgstr "" msgid "Delete stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 msgid "Delete Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:289 +#: src/tables/stock/StockItemTestResultTable.tsx:273 msgid "Test result deleted" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:303 +#: src/tables/stock/StockItemTestResultTable.tsx:287 msgid "Test Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" msgstr "" diff --git a/src/frontend/src/locales/de/messages.po b/src/frontend/src/locales/de/messages.po index 078ef4476a..0fe99a2d95 100644 --- a/src/frontend/src/locales/de/messages.po +++ b/src/frontend/src/locales/de/messages.po @@ -8,7 +8,7 @@ msgstr "" "Language: de\n" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-05-23 11:38\n" +"PO-Revision-Date: 2024-06-19 04:49\n" "Last-Translator: \n" "Language-Team: German\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -48,18 +48,18 @@ msgstr "" #: src/components/buttons/PrintingActions.tsx:107 #: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 #: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 -#: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 +#: src/components/nav/SearchDrawer.tsx:427 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" msgstr "Fehler" @@ -121,15 +121,15 @@ msgstr "Ja" msgid "No" msgstr "Nein" -#: src/components/details/Details.tsx:303 +#: src/components/details/Details.tsx:305 msgid "No name defined" msgstr "Kein Name festgelegt" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copied" msgstr "Kopiert" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copy" msgstr "Kopieren" @@ -145,7 +145,7 @@ msgstr "Verknüpftes Bild von diesem Teil entfernen?" #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" msgstr "Entfernen" @@ -207,9 +207,9 @@ msgstr "Teil ist nicht aktiv" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:686 +#: src/pages/part/PartDetail.tsx:691 msgid "Inactive" msgstr "Inaktiv" @@ -248,6 +248,35 @@ msgstr "Teil ist virtuell (kein physischer Gegenstand)" msgid "Virtual" msgstr "Virtuell" +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "Abgeschlossen" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "Notiz konnte nicht gespeichert werden" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "" + #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" msgstr "Code" @@ -334,11 +363,6 @@ msgstr "Fehler bei Darstellung der Vorlage" msgid "Form Error" msgstr "Formularfehler" -#: src/components/forms/ApiForm.tsx:430 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "Abgeschlossen" - #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" #~ msgstr "Form Errors Exist" @@ -389,7 +413,7 @@ msgstr "Login fehlgeschlagen" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." msgstr "Überprüfen Sie Ihre Eingabe und versuchen Sie es erneut." @@ -399,7 +423,7 @@ msgstr "Überprüfen Sie Ihre Eingabe und versuchen Sie es erneut." #~ msgstr "Mail delivery successfull" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" msgstr "Mail erfolgreich gesendet" @@ -527,7 +551,7 @@ msgstr "Adresse" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:127 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -551,7 +575,6 @@ msgid "Add Host" msgstr "Adresse hinzufügen" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" msgstr "Speichern" @@ -579,20 +602,20 @@ msgstr "Name: {0}" msgid "State: <0>worker ({0}), <1>plugins{1}" msgstr "Status: <0>worker ({0}), <1>Plugins{1}" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "Suche" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" msgstr "Wird geladen" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "Keine Ergebnisse gefunden" @@ -614,7 +637,7 @@ msgid "Thumbnail" msgstr "Vorschaubild" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" msgstr "Barcode-Aktionen" @@ -859,7 +882,7 @@ msgid "Close modal" msgstr "Dialog schließen" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" msgstr "Server" @@ -967,7 +990,7 @@ msgstr "Benutzereinstellungen" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:295 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" msgstr "Einstellungen" @@ -1031,8 +1054,8 @@ msgid "About" msgstr "Über uns" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" @@ -1053,35 +1076,35 @@ msgstr "Benachrichtigung" msgid "Mark as read" msgstr "Als gelesen markieren" -#: src/components/nav/SearchDrawer.tsx:77 +#: src/components/nav/SearchDrawer.tsx:78 msgid "results" msgstr "Ergebnisse" -#: src/components/nav/SearchDrawer.tsx:337 +#: src/components/nav/SearchDrawer.tsx:349 msgid "Enter search text" msgstr "Suchtext eingeben" -#: src/components/nav/SearchDrawer.tsx:364 +#: src/components/nav/SearchDrawer.tsx:376 msgid "Search Options" msgstr "Suchoptionen" -#: src/components/nav/SearchDrawer.tsx:367 +#: src/components/nav/SearchDrawer.tsx:379 msgid "Regex search" msgstr "Regex Suche" -#: src/components/nav/SearchDrawer.tsx:377 +#: src/components/nav/SearchDrawer.tsx:389 msgid "Whole word search" msgstr "Volltextsuche" -#: src/components/nav/SearchDrawer.tsx:416 +#: src/components/nav/SearchDrawer.tsx:430 msgid "An error occurred during search query" msgstr "Bei der Suchanfrage ist ein Fehler aufgetreten" -#: src/components/nav/SearchDrawer.tsx:427 +#: src/components/nav/SearchDrawer.tsx:441 msgid "No results" msgstr "Keine Ergebnisse" -#: src/components/nav/SearchDrawer.tsx:430 +#: src/components/nav/SearchDrawer.tsx:444 msgid "No results available for search query" msgstr "Keine Ergebnisse für Suchanfrage verfügbar" @@ -1100,7 +1123,7 @@ msgstr "Unbekanntes Modell: {model}" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:832 +#: src/pages/part/PartDetail.tsx:837 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" @@ -1109,11 +1132,11 @@ msgstr "Teil" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:640 +#: src/pages/part/PartDetail.tsx:645 msgid "Parts" msgstr "Teile" @@ -1136,7 +1159,7 @@ msgstr "Testvorlagen für Teil" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "Zuliefererteil" @@ -1160,15 +1183,15 @@ msgid "Part Category" msgstr "Teilkategorie" #: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 +#: src/pages/Index/Settings/SystemSettings.tsx:165 #: src/pages/part/CategoryDetail.tsx:249 #: src/pages/part/CategoryDetail.tsx:282 -#: src/pages/part/PartDetail.tsx:822 +#: src/pages/part/PartDetail.tsx:827 msgid "Part Categories" msgstr "Teil-Kategorien" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:560 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "Lagerartikel" @@ -1188,7 +1211,7 @@ msgstr "Lagerort" #: src/components/render/ModelType.tsx:82 #: src/pages/stock/LocationDetail.tsx:185 #: src/pages/stock/LocationDetail.tsx:361 -#: src/pages/stock/StockDetail.tsx:552 +#: src/pages/stock/StockDetail.tsx:554 msgid "Stock Locations" msgstr "Lagerorte" @@ -1227,7 +1250,7 @@ msgid "Build Lines" msgstr "Bauauftragspositionen" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" msgstr "Firma" @@ -1250,17 +1273,17 @@ msgid "Project Codes" msgstr "Projektnummern" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" msgstr "Einkaufsbestellung" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:573 +#: src/pages/part/PartDetail.tsx:579 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" msgstr "Nachbestellungen" @@ -1275,16 +1298,16 @@ msgstr "Bestellpositionen" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" msgstr "Verkaufsauftrag" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:579 +#: src/pages/part/PartDetail.tsx:586 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" msgstr "Aufträge" @@ -1298,13 +1321,13 @@ msgid "Sales Order Shipments" msgstr "Versand der Bestellungen" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" msgstr "Rückgabe Auftrag" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" @@ -1322,8 +1345,8 @@ msgstr "Adressen" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" msgstr "Kontakt" @@ -1341,7 +1364,7 @@ msgid "Owners" msgstr "Eigentümer" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" msgstr "Nutzer" @@ -1385,26 +1408,27 @@ msgstr "Sendung" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:493 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 #: src/pages/stock/LocationDetail.tsx:345 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" msgstr "Lager" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:517 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" msgstr "Seriennummer" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:523 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 @@ -1844,16 +1868,12 @@ msgid "Getting started" msgstr "Erste Schritte" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "Fehler beim Hochladen des Bildes" +#~ msgid "Failed to upload image" +#~ msgstr "Failed to upload image" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "Notizen gespeichert" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "Notiz konnte nicht gespeichert werden" +#~ msgid "Notes saved" +#~ msgstr "Notes saved" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" @@ -1972,42 +1992,46 @@ msgid "Portuguese (Brazilian)" msgstr "Portugiesisch (Brasilien)" #: src/contexts/LanguageContext.tsx:43 +msgid "Romanian" +msgstr "" + +#: src/contexts/LanguageContext.tsx:44 msgid "Russian" msgstr "Russisch" -#: src/contexts/LanguageContext.tsx:44 +#: src/contexts/LanguageContext.tsx:45 msgid "Slovak" msgstr "Slowakisch" -#: src/contexts/LanguageContext.tsx:45 +#: src/contexts/LanguageContext.tsx:46 msgid "Slovenian" msgstr "Slowenisch" -#: src/contexts/LanguageContext.tsx:46 +#: src/contexts/LanguageContext.tsx:47 msgid "Swedish" msgstr "Schwedisch" -#: src/contexts/LanguageContext.tsx:47 +#: src/contexts/LanguageContext.tsx:48 msgid "Thai" msgstr "Thailändisch" -#: src/contexts/LanguageContext.tsx:48 +#: src/contexts/LanguageContext.tsx:49 msgid "Turkish" msgstr "Türkisch" -#: src/contexts/LanguageContext.tsx:49 +#: src/contexts/LanguageContext.tsx:50 msgid "Ukrainian" msgstr "Ukrainisch" -#: src/contexts/LanguageContext.tsx:50 +#: src/contexts/LanguageContext.tsx:51 msgid "Vietnamese" msgstr "Vietnamesisch" -#: src/contexts/LanguageContext.tsx:51 +#: src/contexts/LanguageContext.tsx:52 msgid "Chinese (Simplified)" msgstr "Chinesisch (vereinfacht)" -#: src/contexts/LanguageContext.tsx:52 +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" msgstr "Chinesisch (Traditionell)" @@ -2021,7 +2045,7 @@ msgstr "Startseite" #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" msgstr "Dashboard" @@ -2160,10 +2184,10 @@ msgstr "Demo" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" msgstr "Einkauf" @@ -2171,15 +2195,15 @@ msgstr "Einkauf" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" msgstr "Verkäufe" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" msgstr "Spielplatz" @@ -2464,7 +2488,7 @@ msgstr "Artikel aus Liste entfernen" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" @@ -2515,7 +2539,7 @@ msgstr "Seriennummern für neue Lagerartikel eingeben (oder leer lassen)" #~ msgstr "Stock item updated" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" @@ -2537,8 +2561,8 @@ msgstr "Zum Standard-Lagerort verschieben" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:207 -#: src/pages/part/PartDetail.tsx:656 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" msgstr "Auf Lager" @@ -2560,14 +2584,14 @@ msgid "Actions" msgstr "Aktionen" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" msgstr "Hinzufügen" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" msgstr "Anzahl" @@ -2580,12 +2604,12 @@ msgid "Remove Stock" msgstr "Bestand entfernen" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:788 msgid "Transfer Stock" msgstr "Bestand verschieben" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:777 msgid "Count Stock" msgstr "Bestand zählen" @@ -2625,23 +2649,14 @@ msgstr "Übergeordneter Lagerort" #~ msgid "You have been logged out" #~ msgstr "You have been logged out" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" msgstr "Ausgeloggt" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" msgstr "Erfolgreich abgemeldet" -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "Prüfen Sie Ihren Posteingang für einen Link zum Zurücksetzen. Dies funktioniert nur, wenn Sie ein Konto haben. Prüfen Sie auch den Spam-Ordner." - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "Zurücksetzen fehlgeschlagen" - #: src/functions/auth.tsx:141 #~ msgid "Already logged in" #~ msgstr "Already logged in" @@ -2654,11 +2669,20 @@ msgstr "Zurücksetzen fehlgeschlagen" #~ msgid "Found an existing login - welcome back!" #~ msgstr "Found an existing login - welcome back!" -#: src/functions/auth.tsx:153 +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "Prüfen Sie Ihren Posteingang für einen Link zum Zurücksetzen. Dies funktioniert nur, wenn Sie ein Konto haben. Prüfen Sie auch den Spam-Ordner." + +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "Zurücksetzen fehlgeschlagen" + +#: src/functions/auth.tsx:195 msgid "Logged In" msgstr "Angemeldet" -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:196 msgid "Successfully logged in" msgstr "Erfolgreich angemeldet" @@ -2796,7 +2820,7 @@ msgstr "Diese Seite ist ein Ersatz für die alte Startseite mit den gleichen Inf msgid "Welcome to your Dashboard{0}" msgstr "Willkommen zu deinem Dashboard{0}" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." msgstr "Diese Seite ist ein Schaufenster für die Möglichkeiten der Plattform-Oberfläche." @@ -3374,15 +3398,15 @@ msgstr "Einstellungen die für den Benutzer Lebenszyklus relevant sind. Mehr ver msgid "System settings" msgstr "Systemeinstellungen" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" msgstr "Anmelden" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" msgstr "Barcode" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" msgstr "Preise" @@ -3394,50 +3418,50 @@ msgstr "Preise" #~ msgid "Exchange Rates" #~ msgstr "Exchange Rates" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" msgstr "Beschriftungen" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" msgstr "Berichte" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:591 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" msgstr "Inventur" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:527 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" msgstr "Bauaufträge" -#: src/pages/Index/Settings/SystemSettings.tsx:298 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" msgstr "Zu Benutzereinstellungen wechseln" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" msgstr "Konto" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" msgstr "Sicherheit" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" msgstr "Anzeigeoptionen" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" msgstr "Kontoeinstellungen" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" msgstr "Zu Systemeinstellungen wechseln" @@ -3475,8 +3499,8 @@ msgstr "Als ungelesen markieren" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3489,8 +3513,8 @@ msgstr "Status" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" @@ -3501,10 +3525,10 @@ msgstr "Referenz" #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:134 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3537,10 +3561,10 @@ msgid "Issued By" msgstr "Aufgegeben von" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:322 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 @@ -3555,8 +3579,8 @@ msgstr "Erstellt" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" msgstr "Zieldatum" @@ -3594,7 +3618,7 @@ msgstr "Ziel Lagerort" #~ msgstr "Unlink custom barcode from part" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:535 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" msgstr "Losnummer" @@ -3638,34 +3662,34 @@ msgstr "Unter-Bauaufträge" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:613 +#: src/pages/part/PartDetail.tsx:622 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" msgstr "Anhänge" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:625 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" msgstr "Notizen" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" msgstr "Bauauftrag bearbeiten" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" msgstr "Bauauftrag abbrechen" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" @@ -3676,17 +3700,17 @@ msgstr "Neuer Bauauftrag" #~ msgstr "Reporting Actions" #: src/pages/build/BuildDetail.tsx:374 -#~ msgid "Print build report" -#~ msgstr "Print build report" - -#: src/pages/build/BuildDetail.tsx:378 msgid "Build Order Actions" msgstr "Bauauftrag-Aktionen" -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "Print build report" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" msgstr "Bestellung stornieren" @@ -3725,7 +3749,7 @@ msgstr "Lieferant" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" @@ -3733,10 +3757,10 @@ msgstr "Hersteller" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 @@ -3769,12 +3793,12 @@ msgstr "Zuliefererteile" msgid "Assigned Stock" msgstr "Zugeordneter Bestand" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" msgstr "Unternehmen bearbeiten" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" msgstr "Firmen-Aktionen" @@ -3804,32 +3828,32 @@ msgid "Manufacturer Part Details" msgstr "Herstellerteil Details" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:487 +#: src/pages/part/PartDetail.tsx:492 msgid "Parameters" msgstr "Parameter" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:560 +#: src/pages/part/PartDetail.tsx:566 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" msgstr "Lieferanten" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" msgstr "Herstellerteil bearbeiten" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" msgstr "Herstellerteil hinzufügen" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" msgstr "Herstellerteil Aktionen" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" msgstr "Herstellerteil" @@ -3845,7 +3869,7 @@ msgstr "Art.-Nr." #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" msgstr "Verpackung" @@ -3879,7 +3903,7 @@ msgstr "Empfangene Lagerartikel" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" msgstr "Zulieferer-Preise" @@ -3969,85 +3993,85 @@ msgstr "Kategorieaktionen" msgid "Category Details" msgstr "Kategorie-Details" -#: src/pages/part/PartDetail.tsx:140 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" msgstr "Variante von" -#: src/pages/part/PartDetail.tsx:147 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" msgstr "Kategorie" -#: src/pages/part/PartDetail.tsx:153 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" msgstr "Standard Lagerort" -#: src/pages/part/PartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" msgstr "Standard-Lagerort der Kategorie" -#: src/pages/part/PartDetail.tsx:167 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" msgstr "IPN" -#: src/pages/part/PartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" msgstr "Version" -#: src/pages/part/PartDetail.tsx:181 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" msgstr "Einheiten" -#: src/pages/part/PartDetail.tsx:188 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" msgstr "Schlüsselwörter" -#: src/pages/part/PartDetail.tsx:195 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" msgstr "Link" -#: src/pages/part/PartDetail.tsx:213 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" msgstr "Verfügbarer Bestand" -#: src/pages/part/PartDetail.tsx:220 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" msgstr "Minimaler Bestand" -#: src/pages/part/PartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" msgstr "Bestellt" -#: src/pages/part/PartDetail.tsx:235 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" msgstr "Bauaufträgen zugeordnet" -#: src/pages/part/PartDetail.tsx:243 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" msgstr "Aufträgen zugeordnet" -#: src/pages/part/PartDetail.tsx:250 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" msgstr "Herstellbar" -#: src/pages/part/PartDetail.tsx:257 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" msgstr "Gebäude" -#: src/pages/part/PartDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -4065,37 +4089,37 @@ msgstr "Gebäude" msgid "Active" msgstr "Aktiv" -#: src/pages/part/PartDetail.tsx:271 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" msgstr "Vorlagenteil" -#: src/pages/part/PartDetail.tsx:276 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" msgstr "Baugruppe" -#: src/pages/part/PartDetail.tsx:281 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" msgstr "Komponente" -#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" msgstr "Nachverfolgbares Teil" -#: src/pages/part/PartDetail.tsx:291 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" msgstr "Käufliches Teil" -#: src/pages/part/PartDetail.tsx:296 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" msgstr "Verkäufliches Teil" -#: src/pages/part/PartDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" msgstr "Virtuelles Teil" -#: src/pages/part/PartDetail.tsx:309 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" msgstr "Erstelldatum" @@ -4104,7 +4128,7 @@ msgstr "Erstelldatum" #~ msgid "Edit part" #~ msgstr "Edit part" -#: src/pages/part/PartDetail.tsx:314 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" msgstr "Erstellt von" @@ -4116,69 +4140,71 @@ msgstr "Erstellt von" #~ msgid "Delete part" #~ msgstr "Delete part" -#: src/pages/part/PartDetail.tsx:329 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" msgstr "Standard Zulieferer" -#: src/pages/part/PartDetail.tsx:340 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" msgstr "Preisspanne" -#: src/pages/part/PartDetail.tsx:375 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" msgstr "Letzte Inventur" -#: src/pages/part/PartDetail.tsx:410 +#: src/pages/part/PartDetail.tsx:415 msgid "Stocktake By" msgstr "Inventur durch" -#: src/pages/part/PartDetail.tsx:481 +#: src/pages/part/PartDetail.tsx:486 msgid "Part Details" msgstr "Teil-Details" -#: src/pages/part/PartDetail.tsx:507 +#: src/pages/part/PartDetail.tsx:512 msgid "Variants" msgstr "Varianten" -#: src/pages/part/PartDetail.tsx:514 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" msgstr "Ferienguthaben/Freitage" -#: src/pages/part/PartDetail.tsx:520 +#: src/pages/part/PartDetail.tsx:526 msgid "Bill of Materials" msgstr "Stückliste" -#: src/pages/part/PartDetail.tsx:534 +#: src/pages/part/PartDetail.tsx:540 msgid "Used In" msgstr "Verwendet in" -#: src/pages/part/PartDetail.tsx:541 +#: src/pages/part/PartDetail.tsx:547 msgid "Part Pricing" msgstr "Teilbepreisung" -#: src/pages/part/PartDetail.tsx:547 +#: src/pages/part/PartDetail.tsx:553 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" msgstr "Hersteller" -#: src/pages/part/PartDetail.tsx:586 +#: src/pages/part/PartDetail.tsx:593 msgid "Scheduling" msgstr "Terminierung" -#: src/pages/part/PartDetail.tsx:596 +#: src/pages/part/PartDetail.tsx:605 msgid "Test Templates" msgstr "Testvorlagen" -#: src/pages/part/PartDetail.tsx:607 +#: src/pages/part/PartDetail.tsx:616 msgid "Related Parts" msgstr "Zugehörige Teile" -#: src/pages/part/PartDetail.tsx:662 -#: src/pages/stock/StockDetail.tsx:151 -#: src/pages/stock/StockDetail.tsx:529 +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 @@ -4186,55 +4212,55 @@ msgstr "Zugehörige Teile" msgid "Available" msgstr "Verfügbar" -#: src/pages/part/PartDetail.tsx:668 +#: src/pages/part/PartDetail.tsx:673 msgid "No Stock" msgstr "Kein Bestand" -#: src/pages/part/PartDetail.tsx:674 +#: src/pages/part/PartDetail.tsx:679 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" msgstr "In Bestellung" -#: src/pages/part/PartDetail.tsx:680 -#: src/pages/stock/StockDetail.tsx:512 +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" msgstr "In Produktion" -#: src/pages/part/PartDetail.tsx:699 +#: src/pages/part/PartDetail.tsx:704 msgid "Edit Part" msgstr "Teil bearbeiten" -#: src/pages/part/PartDetail.tsx:706 +#: src/pages/part/PartDetail.tsx:711 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" msgstr "Teil hinzufügen" -#: src/pages/part/PartDetail.tsx:718 +#: src/pages/part/PartDetail.tsx:723 msgid "Delete Part" msgstr "Teil löschen" -#: src/pages/part/PartDetail.tsx:727 +#: src/pages/part/PartDetail.tsx:732 msgid "Deleting this part cannot be reversed" msgstr "Das Löschen dieses Teils kann nicht rückgängig gemacht werden" -#: src/pages/part/PartDetail.tsx:765 +#: src/pages/part/PartDetail.tsx:770 #: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" msgstr "Lager-Aktionen" -#: src/pages/part/PartDetail.tsx:773 +#: src/pages/part/PartDetail.tsx:778 msgid "Count part stock" msgstr "Bestand zählen" -#: src/pages/part/PartDetail.tsx:784 +#: src/pages/part/PartDetail.tsx:789 msgid "Transfer part stock" msgstr "Bestand übertragen" -#: src/pages/part/PartDetail.tsx:793 +#: src/pages/part/PartDetail.tsx:798 msgid "Part Actions" msgstr "Teile-Aktionen" @@ -4247,6 +4273,7 @@ msgid "No pricing data found for this part." msgstr "Keine Preisdaten für diesen Teil gefunden." #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" msgstr "Preisübersicht" @@ -4255,54 +4282,32 @@ msgid "Purchase History" msgstr "Kaufhistorie" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" msgstr "Interne Preise" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" msgstr "Stücklisten Preise" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" msgstr "Varianten Preise" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" msgstr "Verkaufs Preise" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" msgstr "Verkaufshistorie" -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "Minimaler Gesamtpreis" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "Maximaler Gesamtpreis" - +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "Komponente" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "Preis pro Einheit" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 @@ -4311,82 +4316,118 @@ msgstr "Preis pro Einheit" msgid "Total Price" msgstr "Gesamtpreis" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "Komponente" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "Niedrigster Preis" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "Höchster Preis" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "Minimum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "Maximum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "Preis pro Einheit" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" msgstr "Aktualisiert" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" msgstr "Kuchendiagramm" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" msgstr "Balkendiagramm" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" msgstr "Preisstaffel hinzufügen" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "Staffelpreis bearbeiten" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "Staffelpreis löschen" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "Preisstaffel" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "Preiskategorie" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "Minimum" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "Maximum" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" msgstr "Einkaufs Preise" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "Preise überschreiben" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "Gesamt Preise" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" msgstr "Zuletzt aktualisiert" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" -msgstr "Niedrigster Preis" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" +msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" -msgstr "Höchster Preis" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" +msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:25 msgid "No data available" @@ -4404,33 +4445,33 @@ msgstr "Keine Preisdaten verfügbar" msgid "Loading pricing data" msgstr "Lade Preisdaten" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" msgstr "Datum" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "Einkaufspreis" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "Auftrag" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "Verkaufspreis" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "Lieferant Preis" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "Variantenteil" @@ -4450,23 +4491,23 @@ msgstr "Lieferanten-Referenz" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" msgstr "Positionen" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" msgstr "Abgeschlossene Positionen" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" msgstr "Abgeschlossene Sendungen" @@ -4477,46 +4518,46 @@ msgstr "Abgeschlossene Sendungen" #~ msgstr "Order Currency," #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "Bestellwährung" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" msgstr "Gesamtkosten" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" msgstr "Erstellt am" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" msgstr "Bestelldetails" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" msgstr "Bestellaktionen" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" msgstr "Kundenreferenz" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "Rücksendeauftrag bearbeiten" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" @@ -4526,17 +4567,17 @@ msgstr "Neuer Rücksendeauftrag" msgid "Customers" msgstr "Kunden" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" msgstr "Auftrag bearbeiten" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" msgstr "Auftrag hinzufügen" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" msgstr "Ausstehende Sendungen" @@ -4599,11 +4640,11 @@ msgstr "Aktion für untergeordnete Lagerorte an diesem Lagerort" msgid "Location Actions" msgstr "Lagerort Aktionen" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" msgstr "Basisteil" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" msgstr "Lagerbestand Status" @@ -4615,15 +4656,15 @@ msgstr "Lagerbestand Status" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "Unlink custom barcode from stock item" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" msgstr "Verbaut in" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" msgstr "Verbraucht von" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" msgstr "Bauauftrag" @@ -4636,31 +4677,31 @@ msgstr "Bauauftrag" #~ msgid "Delete stock item" #~ msgstr "Delete stock item" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" msgstr "Lagerdetails" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" msgstr "Bestandsverfolgung" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" msgstr "Test Daten" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" msgstr "Installierte Elemente" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" msgstr "Untergeordnete Objekte" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" msgstr "Lagerartikel bearbeiten" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" msgstr "Lagerartikel löschen" @@ -4668,34 +4709,34 @@ msgstr "Lagerartikel löschen" #~ msgid "Duplicate stock item" #~ msgstr "Duplicate stock item" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" msgstr "Lagervorgänge" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" msgstr "Bestand zählen" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" msgstr "Lagerbestand hinzufügen" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" msgstr "Lagerbestand entfernen" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" msgstr "Verschieben" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" msgstr "Lagerbestand verschieben" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "Lagerartikel Aktionen" @@ -4786,7 +4827,7 @@ msgstr "Filter" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" msgstr "Wert" @@ -5224,7 +5265,7 @@ msgid "Required Tests" msgstr "Erforderliche Tests" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" msgstr "Testergebnisse" @@ -5306,23 +5347,39 @@ msgstr "Upload fehlgeschlagen" msgid "File could not be uploaded" msgstr "Datei konnte nicht hochgeladen werden" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "Anhang hochladen" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "Anhang bearbeiten" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" msgstr "Anhang löschen" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" msgstr "Anhang hinzufügen" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" msgstr "Externen Link hinzufügen" @@ -5330,11 +5387,11 @@ msgstr "Externen Link hinzufügen" #~ msgid "Upload attachment" #~ msgstr "Upload attachment" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" msgstr "Keine Anlagen gefunden" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "Datei zum Hochladen hierher ziehen" @@ -5716,75 +5773,75 @@ msgstr "Ergebnisse" msgid "No Results" msgstr "Keine Ergebnisse" -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 msgid "Required" msgstr "Erforderlich" -#: src/tables/part/PartTestTemplateTable.tsx:80 +#: src/tables/part/PartTestTemplateTable.tsx:85 msgid "Show required tests" msgstr "Erforderliche Tests anzeigen" -#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" msgstr "Aktiviert" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" msgstr "Aktivierte Tests anzeigen" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "Wert erforderlich" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" msgstr "Tests anzeigen, die einen Wert erfordern" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "Anhang erforderlich" -#: src/tables/part/PartTestTemplateTable.tsx:95 +#: src/tables/part/PartTestTemplateTable.tsx:100 msgid "Show tests that require an attachment" msgstr "Tests anzeigen, die einen Anhang erfordern" -#: src/tables/part/PartTestTemplateTable.tsx:99 +#: src/tables/part/PartTestTemplateTable.tsx:104 msgid "Include Inherited" msgstr "Vererbte einschließen" -#: src/tables/part/PartTestTemplateTable.tsx:100 +#: src/tables/part/PartTestTemplateTable.tsx:105 msgid "Show tests from inherited templates" msgstr "Tests von geerbten Vorlagen anzeigen" -#: src/tables/part/PartTestTemplateTable.tsx:104 +#: src/tables/part/PartTestTemplateTable.tsx:109 msgid "Has Results" msgstr "Hat Ergebnisse" -#: src/tables/part/PartTestTemplateTable.tsx:105 +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" msgstr "Tests anzeigen, die die Ergebnisse beinhalten" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" msgstr "Testvorlage hinzufügen" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" msgstr "Testvorlage bearbeiten" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" msgstr "Testvorlage löschen" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" msgstr "Diese Aktion kann nicht rückgängig gemacht werden" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" msgstr "Alle mit dieser Vorlage verknüpften Testergebnisse werden gelöscht" @@ -6273,7 +6330,7 @@ msgid "Task ID" msgstr "Aufgaben ID" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" msgstr "Gestartet" @@ -6679,95 +6736,95 @@ msgstr "Bestand löschen" msgid "Delete stock items" msgstr "Lagerartikel löschen" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" msgstr "Test" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" msgstr "Testergebnis für installierten Lagerbestand" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" msgstr "Ergebnis" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" msgstr "Kein Ergebnis" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" msgstr "Anhang" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" msgstr "Teststation" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" msgstr "Fertiggestellt" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" msgstr "Testergebnis hinzufügen" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" msgstr "Testergebnis hinzugefügt" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" msgstr "Testergebnis bearbeiten" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" msgstr "Testergebnis aktualisiert" -#: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 msgid "Delete Test Result" msgstr "Testergebnis löschen" -#: src/tables/stock/StockItemTestResultTable.tsx:289 +#: src/tables/stock/StockItemTestResultTable.tsx:273 msgid "Test result deleted" msgstr "Testergebnis gelöscht" -#: src/tables/stock/StockItemTestResultTable.tsx:303 +#: src/tables/stock/StockItemTestResultTable.tsx:287 msgid "Test Passed" msgstr "Test bestanden" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" msgstr "Testergebnis wurde erfasst" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" msgstr "Fehler beim Erfassen des Testergebnisses" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" msgstr "Test bestanden" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" msgstr "Ergebnisse für erforderliche Tests anzeigen" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" msgstr "Installierte Teile einschließen" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" msgstr "Zeige Ergebnisse für installierte Lagerartikel" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" msgstr "Bestanden" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" msgstr "Nur bestandene Tests anzeigen" diff --git a/src/frontend/src/locales/el/messages.po b/src/frontend/src/locales/el/messages.po index fae3612e5a..05c9e9aed8 100644 --- a/src/frontend/src/locales/el/messages.po +++ b/src/frontend/src/locales/el/messages.po @@ -8,7 +8,7 @@ msgstr "" "Language: el\n" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-05-23 11:38\n" +"PO-Revision-Date: 2024-06-19 04:49\n" "Last-Translator: \n" "Language-Team: Greek\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -48,18 +48,18 @@ msgstr "" #: src/components/buttons/PrintingActions.tsx:107 #: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 #: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 -#: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 +#: src/components/nav/SearchDrawer.tsx:427 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" msgstr "" @@ -121,15 +121,15 @@ msgstr "" msgid "No" msgstr "" -#: src/components/details/Details.tsx:303 +#: src/components/details/Details.tsx:305 msgid "No name defined" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copied" msgstr "Αντιγράφηκε" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copy" msgstr "Αντιγραφή" @@ -145,7 +145,7 @@ msgstr "Αφαίρεση της σχετικής εικόνας από αυτό #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" msgstr "Αφαίρεση" @@ -207,9 +207,9 @@ msgstr "Το εξάρτημα είναι ανενεργό" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:686 +#: src/pages/part/PartDetail.tsx:691 msgid "Inactive" msgstr "Ανενεργό" @@ -248,6 +248,35 @@ msgstr "Το εξάρτημα είναι εικονικό (μη φυσικό ε msgid "Virtual" msgstr "Εικονικό" +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "Επιτυχία" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "" + #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" msgstr "Κωδικός" @@ -334,11 +363,6 @@ msgstr "Σφάλμα αποτύπωσης προτύπου" msgid "Form Error" msgstr "Σφάλμα Φόρμας" -#: src/components/forms/ApiForm.tsx:430 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "Επιτυχία" - #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" #~ msgstr "Form Errors Exist" @@ -389,7 +413,7 @@ msgstr "" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." msgstr "" @@ -399,7 +423,7 @@ msgstr "" #~ msgstr "Mail delivery successfull" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" msgstr "" @@ -527,7 +551,7 @@ msgstr "" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:127 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -551,7 +575,6 @@ msgid "Add Host" msgstr "" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" msgstr "" @@ -579,20 +602,20 @@ msgstr "" msgid "State: <0>worker ({0}), <1>plugins{1}" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "" @@ -614,7 +637,7 @@ msgid "Thumbnail" msgstr "" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" msgstr "" @@ -859,7 +882,7 @@ msgid "Close modal" msgstr "" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" msgstr "" @@ -967,7 +990,7 @@ msgstr "" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:295 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" msgstr "" @@ -1031,8 +1054,8 @@ msgid "About" msgstr "" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" @@ -1053,35 +1076,35 @@ msgstr "" msgid "Mark as read" msgstr "" -#: src/components/nav/SearchDrawer.tsx:77 +#: src/components/nav/SearchDrawer.tsx:78 msgid "results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:337 +#: src/components/nav/SearchDrawer.tsx:349 msgid "Enter search text" msgstr "" -#: src/components/nav/SearchDrawer.tsx:364 +#: src/components/nav/SearchDrawer.tsx:376 msgid "Search Options" msgstr "" -#: src/components/nav/SearchDrawer.tsx:367 +#: src/components/nav/SearchDrawer.tsx:379 msgid "Regex search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:377 +#: src/components/nav/SearchDrawer.tsx:389 msgid "Whole word search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:416 +#: src/components/nav/SearchDrawer.tsx:430 msgid "An error occurred during search query" msgstr "" -#: src/components/nav/SearchDrawer.tsx:427 +#: src/components/nav/SearchDrawer.tsx:441 msgid "No results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:430 +#: src/components/nav/SearchDrawer.tsx:444 msgid "No results available for search query" msgstr "" @@ -1100,7 +1123,7 @@ msgstr "" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:832 +#: src/pages/part/PartDetail.tsx:837 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" @@ -1109,11 +1132,11 @@ msgstr "" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:640 +#: src/pages/part/PartDetail.tsx:645 msgid "Parts" msgstr "" @@ -1136,7 +1159,7 @@ msgstr "" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "" @@ -1160,15 +1183,15 @@ msgid "Part Category" msgstr "" #: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 +#: src/pages/Index/Settings/SystemSettings.tsx:165 #: src/pages/part/CategoryDetail.tsx:249 #: src/pages/part/CategoryDetail.tsx:282 -#: src/pages/part/PartDetail.tsx:822 +#: src/pages/part/PartDetail.tsx:827 msgid "Part Categories" msgstr "" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:560 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "" @@ -1188,7 +1211,7 @@ msgstr "" #: src/components/render/ModelType.tsx:82 #: src/pages/stock/LocationDetail.tsx:185 #: src/pages/stock/LocationDetail.tsx:361 -#: src/pages/stock/StockDetail.tsx:552 +#: src/pages/stock/StockDetail.tsx:554 msgid "Stock Locations" msgstr "" @@ -1227,7 +1250,7 @@ msgid "Build Lines" msgstr "" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" msgstr "" @@ -1250,17 +1273,17 @@ msgid "Project Codes" msgstr "" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" msgstr "" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:573 +#: src/pages/part/PartDetail.tsx:579 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" msgstr "" @@ -1275,16 +1298,16 @@ msgstr "" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" msgstr "" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:579 +#: src/pages/part/PartDetail.tsx:586 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" msgstr "" @@ -1298,13 +1321,13 @@ msgid "Sales Order Shipments" msgstr "" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" msgstr "" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" @@ -1322,8 +1345,8 @@ msgstr "" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" msgstr "" @@ -1341,7 +1364,7 @@ msgid "Owners" msgstr "" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" msgstr "" @@ -1385,26 +1408,27 @@ msgstr "" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:493 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 #: src/pages/stock/LocationDetail.tsx:345 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" msgstr "" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:517 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" msgstr "" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:523 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 @@ -1844,16 +1868,12 @@ msgid "Getting started" msgstr "" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Failed to upload image" +#~ msgstr "Failed to upload image" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "" +#~ msgid "Notes saved" +#~ msgstr "Notes saved" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" @@ -1972,42 +1992,46 @@ msgid "Portuguese (Brazilian)" msgstr "" #: src/contexts/LanguageContext.tsx:43 -msgid "Russian" +msgid "Romanian" msgstr "" #: src/contexts/LanguageContext.tsx:44 -msgid "Slovak" +msgid "Russian" msgstr "" #: src/contexts/LanguageContext.tsx:45 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: src/contexts/LanguageContext.tsx:46 -msgid "Swedish" +msgid "Slovenian" msgstr "" #: src/contexts/LanguageContext.tsx:47 -msgid "Thai" +msgid "Swedish" msgstr "" #: src/contexts/LanguageContext.tsx:48 -msgid "Turkish" +msgid "Thai" msgstr "" #: src/contexts/LanguageContext.tsx:49 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: src/contexts/LanguageContext.tsx:50 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: src/contexts/LanguageContext.tsx:51 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: src/contexts/LanguageContext.tsx:52 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" msgstr "" @@ -2021,7 +2045,7 @@ msgstr "" #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" msgstr "" @@ -2160,10 +2184,10 @@ msgstr "" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" msgstr "" @@ -2171,15 +2195,15 @@ msgstr "" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" msgstr "" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" msgstr "" @@ -2464,7 +2488,7 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" @@ -2515,7 +2539,7 @@ msgstr "" #~ msgstr "Stock item updated" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" @@ -2537,8 +2561,8 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:207 -#: src/pages/part/PartDetail.tsx:656 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" msgstr "" @@ -2560,14 +2584,14 @@ msgid "Actions" msgstr "" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" msgstr "" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" msgstr "" @@ -2580,12 +2604,12 @@ msgid "Remove Stock" msgstr "" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:788 msgid "Transfer Stock" msgstr "" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:777 msgid "Count Stock" msgstr "" @@ -2625,23 +2649,14 @@ msgstr "" #~ msgid "You have been logged out" #~ msgstr "You have been logged out" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" msgstr "" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" msgstr "" -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "" - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "" - #: src/functions/auth.tsx:141 #~ msgid "Already logged in" #~ msgstr "Already logged in" @@ -2654,11 +2669,20 @@ msgstr "" #~ msgid "Found an existing login - welcome back!" #~ msgstr "Found an existing login - welcome back!" -#: src/functions/auth.tsx:153 +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "" + +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "" + +#: src/functions/auth.tsx:195 msgid "Logged In" msgstr "" -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:196 msgid "Successfully logged in" msgstr "" @@ -2796,7 +2820,7 @@ msgstr "" msgid "Welcome to your Dashboard{0}" msgstr "" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." msgstr "" @@ -3374,15 +3398,15 @@ msgstr "" msgid "System settings" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" msgstr "" @@ -3394,50 +3418,50 @@ msgstr "" #~ msgid "Exchange Rates" #~ msgstr "Exchange Rates" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:591 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:527 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:298 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" msgstr "" @@ -3475,8 +3499,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3489,8 +3513,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" @@ -3501,10 +3525,10 @@ msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:134 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3537,10 +3561,10 @@ msgid "Issued By" msgstr "" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:322 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 @@ -3555,8 +3579,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" msgstr "" @@ -3594,7 +3618,7 @@ msgstr "" #~ msgstr "Unlink custom barcode from part" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:535 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" msgstr "" @@ -3638,34 +3662,34 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:613 +#: src/pages/part/PartDetail.tsx:622 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" msgstr "" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:625 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" msgstr "" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" @@ -3676,17 +3700,17 @@ msgstr "" #~ msgstr "Reporting Actions" #: src/pages/build/BuildDetail.tsx:374 -#~ msgid "Print build report" -#~ msgstr "Print build report" - -#: src/pages/build/BuildDetail.tsx:378 msgid "Build Order Actions" msgstr "" -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "Print build report" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" msgstr "" @@ -3725,7 +3749,7 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" @@ -3733,10 +3757,10 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 @@ -3769,12 +3793,12 @@ msgstr "" msgid "Assigned Stock" msgstr "" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" msgstr "" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" msgstr "" @@ -3804,32 +3828,32 @@ msgid "Manufacturer Part Details" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:487 +#: src/pages/part/PartDetail.tsx:492 msgid "Parameters" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:560 +#: src/pages/part/PartDetail.tsx:566 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" msgstr "" @@ -3845,7 +3869,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" msgstr "" @@ -3879,7 +3903,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" msgstr "" @@ -3969,85 +3993,85 @@ msgstr "" msgid "Category Details" msgstr "" -#: src/pages/part/PartDetail.tsx:140 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" msgstr "" -#: src/pages/part/PartDetail.tsx:147 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" msgstr "" -#: src/pages/part/PartDetail.tsx:153 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:167 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" msgstr "" -#: src/pages/part/PartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" msgstr "" -#: src/pages/part/PartDetail.tsx:181 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" msgstr "" -#: src/pages/part/PartDetail.tsx:188 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" msgstr "" -#: src/pages/part/PartDetail.tsx:195 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" msgstr "" -#: src/pages/part/PartDetail.tsx:213 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:220 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" msgstr "" -#: src/pages/part/PartDetail.tsx:235 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:243 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:250 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" msgstr "" -#: src/pages/part/PartDetail.tsx:257 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" msgstr "" -#: src/pages/part/PartDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -4065,37 +4089,37 @@ msgstr "" msgid "Active" msgstr "" -#: src/pages/part/PartDetail.tsx:271 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" msgstr "" -#: src/pages/part/PartDetail.tsx:276 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" msgstr "" -#: src/pages/part/PartDetail.tsx:281 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" msgstr "" -#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:291 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:296 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" msgstr "" -#: src/pages/part/PartDetail.tsx:309 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" msgstr "" @@ -4104,7 +4128,7 @@ msgstr "" #~ msgid "Edit part" #~ msgstr "Edit part" -#: src/pages/part/PartDetail.tsx:314 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" msgstr "" @@ -4116,69 +4140,71 @@ msgstr "" #~ msgid "Delete part" #~ msgstr "Delete part" -#: src/pages/part/PartDetail.tsx:329 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" msgstr "" -#: src/pages/part/PartDetail.tsx:340 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" msgstr "" -#: src/pages/part/PartDetail.tsx:375 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" msgstr "" -#: src/pages/part/PartDetail.tsx:410 +#: src/pages/part/PartDetail.tsx:415 msgid "Stocktake By" msgstr "" -#: src/pages/part/PartDetail.tsx:481 +#: src/pages/part/PartDetail.tsx:486 msgid "Part Details" msgstr "" -#: src/pages/part/PartDetail.tsx:507 +#: src/pages/part/PartDetail.tsx:512 msgid "Variants" msgstr "" -#: src/pages/part/PartDetail.tsx:514 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" msgstr "" -#: src/pages/part/PartDetail.tsx:520 +#: src/pages/part/PartDetail.tsx:526 msgid "Bill of Materials" msgstr "" -#: src/pages/part/PartDetail.tsx:534 +#: src/pages/part/PartDetail.tsx:540 msgid "Used In" msgstr "" -#: src/pages/part/PartDetail.tsx:541 +#: src/pages/part/PartDetail.tsx:547 msgid "Part Pricing" msgstr "" -#: src/pages/part/PartDetail.tsx:547 +#: src/pages/part/PartDetail.tsx:553 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" msgstr "" -#: src/pages/part/PartDetail.tsx:586 +#: src/pages/part/PartDetail.tsx:593 msgid "Scheduling" msgstr "" -#: src/pages/part/PartDetail.tsx:596 +#: src/pages/part/PartDetail.tsx:605 msgid "Test Templates" msgstr "" -#: src/pages/part/PartDetail.tsx:607 +#: src/pages/part/PartDetail.tsx:616 msgid "Related Parts" msgstr "" -#: src/pages/part/PartDetail.tsx:662 -#: src/pages/stock/StockDetail.tsx:151 -#: src/pages/stock/StockDetail.tsx:529 +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 @@ -4186,55 +4212,55 @@ msgstr "" msgid "Available" msgstr "" -#: src/pages/part/PartDetail.tsx:668 +#: src/pages/part/PartDetail.tsx:673 msgid "No Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:674 +#: src/pages/part/PartDetail.tsx:679 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" msgstr "" -#: src/pages/part/PartDetail.tsx:680 -#: src/pages/stock/StockDetail.tsx:512 +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" msgstr "" -#: src/pages/part/PartDetail.tsx:699 +#: src/pages/part/PartDetail.tsx:704 msgid "Edit Part" msgstr "" -#: src/pages/part/PartDetail.tsx:706 +#: src/pages/part/PartDetail.tsx:711 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" msgstr "" -#: src/pages/part/PartDetail.tsx:718 +#: src/pages/part/PartDetail.tsx:723 msgid "Delete Part" msgstr "" -#: src/pages/part/PartDetail.tsx:727 +#: src/pages/part/PartDetail.tsx:732 msgid "Deleting this part cannot be reversed" msgstr "" -#: src/pages/part/PartDetail.tsx:765 +#: src/pages/part/PartDetail.tsx:770 #: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" msgstr "" -#: src/pages/part/PartDetail.tsx:773 +#: src/pages/part/PartDetail.tsx:778 msgid "Count part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:784 +#: src/pages/part/PartDetail.tsx:789 msgid "Transfer part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:793 +#: src/pages/part/PartDetail.tsx:798 msgid "Part Actions" msgstr "" @@ -4247,6 +4273,7 @@ msgid "No pricing data found for this part." msgstr "" #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" msgstr "" @@ -4255,54 +4282,32 @@ msgid "Purchase History" msgstr "" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "" - +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 @@ -4311,81 +4316,117 @@ msgstr "" msgid "Total Price" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "Minimum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "Maximum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:25 @@ -4404,33 +4445,33 @@ msgstr "" msgid "Loading pricing data" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "" @@ -4450,23 +4491,23 @@ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" msgstr "" @@ -4477,46 +4518,46 @@ msgstr "" #~ msgstr "Order Currency," #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" msgstr "" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" @@ -4526,17 +4567,17 @@ msgstr "" msgid "Customers" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" msgstr "" @@ -4599,11 +4640,11 @@ msgstr "" msgid "Location Actions" msgstr "" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" msgstr "" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" msgstr "" @@ -4615,15 +4656,15 @@ msgstr "" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "Unlink custom barcode from stock item" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" msgstr "" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" msgstr "" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" msgstr "" @@ -4636,31 +4677,31 @@ msgstr "" #~ msgid "Delete stock item" #~ msgstr "Delete stock item" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" msgstr "" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" msgstr "" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" msgstr "" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" msgstr "" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" msgstr "" @@ -4668,34 +4709,34 @@ msgstr "" #~ msgid "Duplicate stock item" #~ msgstr "Duplicate stock item" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" msgstr "" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" msgstr "" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "" @@ -4786,7 +4827,7 @@ msgstr "" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" msgstr "" @@ -5224,7 +5265,7 @@ msgid "Required Tests" msgstr "" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" msgstr "" @@ -5306,23 +5347,39 @@ msgstr "" msgid "File could not be uploaded" msgstr "" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" msgstr "" @@ -5330,11 +5387,11 @@ msgstr "" #~ msgid "Upload attachment" #~ msgstr "Upload attachment" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" msgstr "" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "" @@ -5716,75 +5773,75 @@ msgstr "" msgid "No Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 msgid "Required" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:80 +#: src/tables/part/PartTestTemplateTable.tsx:85 msgid "Show required tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:95 +#: src/tables/part/PartTestTemplateTable.tsx:100 msgid "Show tests that require an attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:99 +#: src/tables/part/PartTestTemplateTable.tsx:104 msgid "Include Inherited" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:100 +#: src/tables/part/PartTestTemplateTable.tsx:105 msgid "Show tests from inherited templates" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:104 +#: src/tables/part/PartTestTemplateTable.tsx:109 msgid "Has Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:105 +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" msgstr "" @@ -6273,7 +6330,7 @@ msgid "Task ID" msgstr "" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" msgstr "" @@ -6679,95 +6736,95 @@ msgstr "" msgid "Delete stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 msgid "Delete Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:289 +#: src/tables/stock/StockItemTestResultTable.tsx:273 msgid "Test result deleted" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:303 +#: src/tables/stock/StockItemTestResultTable.tsx:287 msgid "Test Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" msgstr "" diff --git a/src/frontend/src/locales/en/messages.po b/src/frontend/src/locales/en/messages.po index 5dc98da65e..3d135a820b 100644 --- a/src/frontend/src/locales/en/messages.po +++ b/src/frontend/src/locales/en/messages.po @@ -43,18 +43,18 @@ msgstr "Label printing completed successfully" #: src/components/buttons/PrintingActions.tsx:107 #: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 #: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 -#: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 +#: src/components/nav/SearchDrawer.tsx:427 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" msgstr "Error" @@ -116,15 +116,15 @@ msgstr "Yes" msgid "No" msgstr "No" -#: src/components/details/Details.tsx:303 +#: src/components/details/Details.tsx:305 msgid "No name defined" msgstr "No name defined" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copied" msgstr "Copied" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copy" msgstr "Copy" @@ -140,7 +140,7 @@ msgstr "Remove the associated image from this item?" #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" msgstr "Remove" @@ -202,9 +202,9 @@ msgstr "Part is not active" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:686 +#: src/pages/part/PartDetail.tsx:691 msgid "Inactive" msgstr "Inactive" @@ -243,6 +243,35 @@ msgstr "Part is virtual (not a physical part)" msgid "Virtual" msgstr "Virtual" +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "Image upload failed" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "Success" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "Notes saved successfully" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "Failed to save notes" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "Preview Notes" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "Edit Notes" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "Save Notes" + #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" msgstr "Code" @@ -329,11 +358,6 @@ msgstr "Error rendering template" msgid "Form Error" msgstr "Form Error" -#: src/components/forms/ApiForm.tsx:430 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "Success" - #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" #~ msgstr "Form Errors Exist" @@ -384,7 +408,7 @@ msgstr "Login failed" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." msgstr "Check your input and try again." @@ -394,7 +418,7 @@ msgstr "Check your input and try again." #~ msgstr "Mail delivery successfull" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" msgstr "Mail delivery successful" @@ -522,7 +546,7 @@ msgstr "Host" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:127 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -546,7 +570,6 @@ msgid "Add Host" msgstr "Add Host" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" msgstr "Save" @@ -574,20 +597,20 @@ msgstr "Name: {0}" msgid "State: <0>worker ({0}), <1>plugins{1}" msgstr "State: <0>worker ({0}), <1>plugins{1}" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "Search" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" msgstr "Loading" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "No results found" @@ -609,7 +632,7 @@ msgid "Thumbnail" msgstr "Thumbnail" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" msgstr "Barcode Actions" @@ -854,7 +877,7 @@ msgid "Close modal" msgstr "Close modal" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" msgstr "Server" @@ -962,7 +985,7 @@ msgstr "Account settings" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:295 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" msgstr "System Settings" @@ -1026,8 +1049,8 @@ msgid "About" msgstr "About" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" @@ -1048,35 +1071,35 @@ msgstr "Notification" msgid "Mark as read" msgstr "Mark as read" -#: src/components/nav/SearchDrawer.tsx:77 +#: src/components/nav/SearchDrawer.tsx:78 msgid "results" msgstr "results" -#: src/components/nav/SearchDrawer.tsx:337 +#: src/components/nav/SearchDrawer.tsx:349 msgid "Enter search text" msgstr "Enter search text" -#: src/components/nav/SearchDrawer.tsx:364 +#: src/components/nav/SearchDrawer.tsx:376 msgid "Search Options" msgstr "Search Options" -#: src/components/nav/SearchDrawer.tsx:367 +#: src/components/nav/SearchDrawer.tsx:379 msgid "Regex search" msgstr "Regex search" -#: src/components/nav/SearchDrawer.tsx:377 +#: src/components/nav/SearchDrawer.tsx:389 msgid "Whole word search" msgstr "Whole word search" -#: src/components/nav/SearchDrawer.tsx:416 +#: src/components/nav/SearchDrawer.tsx:430 msgid "An error occurred during search query" msgstr "An error occurred during search query" -#: src/components/nav/SearchDrawer.tsx:427 +#: src/components/nav/SearchDrawer.tsx:441 msgid "No results" msgstr "No results" -#: src/components/nav/SearchDrawer.tsx:430 +#: src/components/nav/SearchDrawer.tsx:444 msgid "No results available for search query" msgstr "No results available for search query" @@ -1095,7 +1118,7 @@ msgstr "Unknown model: {model}" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:832 +#: src/pages/part/PartDetail.tsx:837 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" @@ -1104,11 +1127,11 @@ msgstr "Part" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:640 +#: src/pages/part/PartDetail.tsx:645 msgid "Parts" msgstr "Parts" @@ -1131,7 +1154,7 @@ msgstr "Part Test Templates" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "Supplier Part" @@ -1155,15 +1178,15 @@ msgid "Part Category" msgstr "Part Category" #: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 +#: src/pages/Index/Settings/SystemSettings.tsx:165 #: src/pages/part/CategoryDetail.tsx:249 #: src/pages/part/CategoryDetail.tsx:282 -#: src/pages/part/PartDetail.tsx:822 +#: src/pages/part/PartDetail.tsx:827 msgid "Part Categories" msgstr "Part Categories" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:560 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "Stock Item" @@ -1183,7 +1206,7 @@ msgstr "Stock Location" #: src/components/render/ModelType.tsx:82 #: src/pages/stock/LocationDetail.tsx:185 #: src/pages/stock/LocationDetail.tsx:361 -#: src/pages/stock/StockDetail.tsx:552 +#: src/pages/stock/StockDetail.tsx:554 msgid "Stock Locations" msgstr "Stock Locations" @@ -1222,7 +1245,7 @@ msgid "Build Lines" msgstr "Build Lines" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" msgstr "Company" @@ -1245,17 +1268,17 @@ msgid "Project Codes" msgstr "Project Codes" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" msgstr "Purchase Order" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:573 +#: src/pages/part/PartDetail.tsx:579 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" msgstr "Purchase Orders" @@ -1270,16 +1293,16 @@ msgstr "Purchase Order Lines" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" msgstr "Sales Order" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:579 +#: src/pages/part/PartDetail.tsx:586 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" msgstr "Sales Orders" @@ -1293,13 +1316,13 @@ msgid "Sales Order Shipments" msgstr "Sales Order Shipments" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" msgstr "Return Order" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" @@ -1317,8 +1340,8 @@ msgstr "Addresses" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" msgstr "Contact" @@ -1336,7 +1359,7 @@ msgid "Owners" msgstr "Owners" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" msgstr "User" @@ -1380,26 +1403,27 @@ msgstr "Shipment" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:493 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 #: src/pages/stock/LocationDetail.tsx:345 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" msgstr "Stock" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:517 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" msgstr "Serial Number" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:523 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 @@ -1839,16 +1863,12 @@ msgid "Getting started" msgstr "Getting started" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "Failed to upload image" +#~ msgid "Failed to upload image" +#~ msgstr "Failed to upload image" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "Notes saved" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "Failed to save notes" +#~ msgid "Notes saved" +#~ msgstr "Notes saved" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" @@ -1967,42 +1987,46 @@ msgid "Portuguese (Brazilian)" msgstr "Portuguese (Brazilian)" #: src/contexts/LanguageContext.tsx:43 +msgid "Romanian" +msgstr "Romanian" + +#: src/contexts/LanguageContext.tsx:44 msgid "Russian" msgstr "Russian" -#: src/contexts/LanguageContext.tsx:44 +#: src/contexts/LanguageContext.tsx:45 msgid "Slovak" msgstr "Slovak" -#: src/contexts/LanguageContext.tsx:45 +#: src/contexts/LanguageContext.tsx:46 msgid "Slovenian" msgstr "Slovenian" -#: src/contexts/LanguageContext.tsx:46 +#: src/contexts/LanguageContext.tsx:47 msgid "Swedish" msgstr "Swedish" -#: src/contexts/LanguageContext.tsx:47 +#: src/contexts/LanguageContext.tsx:48 msgid "Thai" msgstr "Thai" -#: src/contexts/LanguageContext.tsx:48 +#: src/contexts/LanguageContext.tsx:49 msgid "Turkish" msgstr "Turkish" -#: src/contexts/LanguageContext.tsx:49 +#: src/contexts/LanguageContext.tsx:50 msgid "Ukrainian" msgstr "Ukrainian" -#: src/contexts/LanguageContext.tsx:50 +#: src/contexts/LanguageContext.tsx:51 msgid "Vietnamese" msgstr "Vietnamese" -#: src/contexts/LanguageContext.tsx:51 +#: src/contexts/LanguageContext.tsx:52 msgid "Chinese (Simplified)" msgstr "Chinese (Simplified)" -#: src/contexts/LanguageContext.tsx:52 +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" msgstr "Chinese (Traditional)" @@ -2016,7 +2040,7 @@ msgstr "Home" #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" msgstr "Dashboard" @@ -2155,10 +2179,10 @@ msgstr "Demo" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" msgstr "Purchasing" @@ -2166,15 +2190,15 @@ msgstr "Purchasing" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" msgstr "Sales" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" msgstr "Playground" @@ -2459,7 +2483,7 @@ msgstr "Remove item from list" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" @@ -2510,7 +2534,7 @@ msgstr "Enter serial numbers for new stock (or leave blank)" #~ msgstr "Stock item updated" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" @@ -2532,8 +2556,8 @@ msgstr "Move to default location" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:207 -#: src/pages/part/PartDetail.tsx:656 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" msgstr "In Stock" @@ -2555,14 +2579,14 @@ msgid "Actions" msgstr "Actions" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" msgstr "Add" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" msgstr "Count" @@ -2575,12 +2599,12 @@ msgid "Remove Stock" msgstr "Remove Stock" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:788 msgid "Transfer Stock" msgstr "Transfer Stock" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:777 msgid "Count Stock" msgstr "Count Stock" @@ -2620,23 +2644,14 @@ msgstr "Parent stock location" #~ msgid "You have been logged out" #~ msgstr "You have been logged out" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" msgstr "Logged Out" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" msgstr "Successfully logged out" -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "Check your inbox for a reset link. This only works if you have an account. Check in spam too." - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "Reset failed" - #: src/functions/auth.tsx:141 #~ msgid "Already logged in" #~ msgstr "Already logged in" @@ -2649,11 +2664,20 @@ msgstr "Reset failed" #~ msgid "Found an existing login - welcome back!" #~ msgstr "Found an existing login - welcome back!" -#: src/functions/auth.tsx:153 +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "Check your inbox for a reset link. This only works if you have an account. Check in spam too." + +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "Reset failed" + +#: src/functions/auth.tsx:195 msgid "Logged In" msgstr "Logged In" -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:196 msgid "Successfully logged in" msgstr "Successfully logged in" @@ -2791,7 +2815,7 @@ msgstr "This page is a replacement for the old start page with the same informat msgid "Welcome to your Dashboard{0}" msgstr "Welcome to your Dashboard{0}" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." msgstr "This page is a showcase for the possibilities of Platform UI." @@ -3369,15 +3393,15 @@ msgstr "Select settings relevant for user lifecycle. More available in" msgid "System settings" msgstr "System settings" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" msgstr "Login" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" msgstr "Barcodes" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" msgstr "Pricing" @@ -3389,50 +3413,50 @@ msgstr "Pricing" #~ msgid "Exchange Rates" #~ msgstr "Exchange Rates" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" msgstr "Labels" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" msgstr "Reporting" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:591 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" msgstr "Stocktake" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:527 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" msgstr "Build Orders" -#: src/pages/Index/Settings/SystemSettings.tsx:298 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" msgstr "Switch to User Setting" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" msgstr "Account" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" msgstr "Security" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" msgstr "Display Options" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" msgstr "Account Settings" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" msgstr "Switch to System Setting" @@ -3470,8 +3494,8 @@ msgstr "Mark as unread" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3484,8 +3508,8 @@ msgstr "Status" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" @@ -3496,10 +3520,10 @@ msgstr "Reference" #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:134 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3532,10 +3556,10 @@ msgid "Issued By" msgstr "Issued By" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:322 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 @@ -3550,8 +3574,8 @@ msgstr "Created" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" msgstr "Target Date" @@ -3589,7 +3613,7 @@ msgstr "Destination Location" #~ msgstr "Unlink custom barcode from part" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:535 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" msgstr "Batch Code" @@ -3633,34 +3657,34 @@ msgstr "Child Build Orders" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:613 +#: src/pages/part/PartDetail.tsx:622 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" msgstr "Attachments" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:625 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" msgstr "Notes" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" msgstr "Edit Build Order" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" msgstr "Cancel Build Order" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" @@ -3671,17 +3695,17 @@ msgstr "Add Build Order" #~ msgstr "Reporting Actions" #: src/pages/build/BuildDetail.tsx:374 -#~ msgid "Print build report" -#~ msgstr "Print build report" - -#: src/pages/build/BuildDetail.tsx:378 msgid "Build Order Actions" msgstr "Build Order Actions" -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "Print build report" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" msgstr "Cancel order" @@ -3720,7 +3744,7 @@ msgstr "Supplier" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" @@ -3728,10 +3752,10 @@ msgstr "Manufacturer" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 @@ -3764,12 +3788,12 @@ msgstr "Supplied Parts" msgid "Assigned Stock" msgstr "Assigned Stock" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" msgstr "Edit Company" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" msgstr "Company Actions" @@ -3799,32 +3823,32 @@ msgid "Manufacturer Part Details" msgstr "Manufacturer Part Details" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:487 +#: src/pages/part/PartDetail.tsx:492 msgid "Parameters" msgstr "Parameters" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:560 +#: src/pages/part/PartDetail.tsx:566 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" msgstr "Suppliers" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" msgstr "Edit Manufacturer Part" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" msgstr "Add Manufacturer Part" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" msgstr "Manufacturer Part Actions" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" msgstr "ManufacturerPart" @@ -3840,7 +3864,7 @@ msgstr "SKU" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" msgstr "Packaging" @@ -3874,7 +3898,7 @@ msgstr "Received Stock" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" msgstr "Supplier Pricing" @@ -3964,85 +3988,85 @@ msgstr "Category Actions" msgid "Category Details" msgstr "Category Details" -#: src/pages/part/PartDetail.tsx:140 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" msgstr "Variant of" -#: src/pages/part/PartDetail.tsx:147 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" msgstr "Category" -#: src/pages/part/PartDetail.tsx:153 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" msgstr "Default Location" -#: src/pages/part/PartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" msgstr "Category Default Location" -#: src/pages/part/PartDetail.tsx:167 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" msgstr "IPN" -#: src/pages/part/PartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" msgstr "Revision" -#: src/pages/part/PartDetail.tsx:181 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" msgstr "Units" -#: src/pages/part/PartDetail.tsx:188 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" msgstr "Keywords" -#: src/pages/part/PartDetail.tsx:195 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" msgstr "Link" -#: src/pages/part/PartDetail.tsx:213 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" msgstr "Available Stock" -#: src/pages/part/PartDetail.tsx:220 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" msgstr "Minimum Stock" -#: src/pages/part/PartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" msgstr "On order" -#: src/pages/part/PartDetail.tsx:235 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" msgstr "Allocated to Build Orders" -#: src/pages/part/PartDetail.tsx:243 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" msgstr "Allocated to Sales Orders" -#: src/pages/part/PartDetail.tsx:250 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" msgstr "Can Build" -#: src/pages/part/PartDetail.tsx:257 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" msgstr "Building" -#: src/pages/part/PartDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -4060,37 +4084,37 @@ msgstr "Building" msgid "Active" msgstr "Active" -#: src/pages/part/PartDetail.tsx:271 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" msgstr "Template Part" -#: src/pages/part/PartDetail.tsx:276 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" msgstr "Assembled Part" -#: src/pages/part/PartDetail.tsx:281 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" msgstr "Component Part" -#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" msgstr "Trackable Part" -#: src/pages/part/PartDetail.tsx:291 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" msgstr "Purchaseable Part" -#: src/pages/part/PartDetail.tsx:296 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" msgstr "Saleable Part" -#: src/pages/part/PartDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" msgstr "Virtual Part" -#: src/pages/part/PartDetail.tsx:309 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" msgstr "Creation Date" @@ -4099,7 +4123,7 @@ msgstr "Creation Date" #~ msgid "Edit part" #~ msgstr "Edit part" -#: src/pages/part/PartDetail.tsx:314 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" msgstr "Created By" @@ -4111,69 +4135,71 @@ msgstr "Created By" #~ msgid "Delete part" #~ msgstr "Delete part" -#: src/pages/part/PartDetail.tsx:329 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" msgstr "Default Supplier" -#: src/pages/part/PartDetail.tsx:340 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" msgstr "Price Range" -#: src/pages/part/PartDetail.tsx:375 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" msgstr "Last Stocktake" -#: src/pages/part/PartDetail.tsx:410 +#: src/pages/part/PartDetail.tsx:415 msgid "Stocktake By" msgstr "Stocktake By" -#: src/pages/part/PartDetail.tsx:481 +#: src/pages/part/PartDetail.tsx:486 msgid "Part Details" msgstr "Part Details" -#: src/pages/part/PartDetail.tsx:507 +#: src/pages/part/PartDetail.tsx:512 msgid "Variants" msgstr "Variants" -#: src/pages/part/PartDetail.tsx:514 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" msgstr "Allocations" -#: src/pages/part/PartDetail.tsx:520 +#: src/pages/part/PartDetail.tsx:526 msgid "Bill of Materials" msgstr "Bill of Materials" -#: src/pages/part/PartDetail.tsx:534 +#: src/pages/part/PartDetail.tsx:540 msgid "Used In" msgstr "Used In" -#: src/pages/part/PartDetail.tsx:541 +#: src/pages/part/PartDetail.tsx:547 msgid "Part Pricing" msgstr "Part Pricing" -#: src/pages/part/PartDetail.tsx:547 +#: src/pages/part/PartDetail.tsx:553 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" msgstr "Manufacturers" -#: src/pages/part/PartDetail.tsx:586 +#: src/pages/part/PartDetail.tsx:593 msgid "Scheduling" msgstr "Scheduling" -#: src/pages/part/PartDetail.tsx:596 +#: src/pages/part/PartDetail.tsx:605 msgid "Test Templates" msgstr "Test Templates" -#: src/pages/part/PartDetail.tsx:607 +#: src/pages/part/PartDetail.tsx:616 msgid "Related Parts" msgstr "Related Parts" -#: src/pages/part/PartDetail.tsx:662 -#: src/pages/stock/StockDetail.tsx:151 -#: src/pages/stock/StockDetail.tsx:529 +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 @@ -4181,55 +4207,55 @@ msgstr "Related Parts" msgid "Available" msgstr "Available" -#: src/pages/part/PartDetail.tsx:668 +#: src/pages/part/PartDetail.tsx:673 msgid "No Stock" msgstr "No Stock" -#: src/pages/part/PartDetail.tsx:674 +#: src/pages/part/PartDetail.tsx:679 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" msgstr "On Order" -#: src/pages/part/PartDetail.tsx:680 -#: src/pages/stock/StockDetail.tsx:512 +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" msgstr "In Production" -#: src/pages/part/PartDetail.tsx:699 +#: src/pages/part/PartDetail.tsx:704 msgid "Edit Part" msgstr "Edit Part" -#: src/pages/part/PartDetail.tsx:706 +#: src/pages/part/PartDetail.tsx:711 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" msgstr "Add Part" -#: src/pages/part/PartDetail.tsx:718 +#: src/pages/part/PartDetail.tsx:723 msgid "Delete Part" msgstr "Delete Part" -#: src/pages/part/PartDetail.tsx:727 +#: src/pages/part/PartDetail.tsx:732 msgid "Deleting this part cannot be reversed" msgstr "Deleting this part cannot be reversed" -#: src/pages/part/PartDetail.tsx:765 +#: src/pages/part/PartDetail.tsx:770 #: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" msgstr "Stock Actions" -#: src/pages/part/PartDetail.tsx:773 +#: src/pages/part/PartDetail.tsx:778 msgid "Count part stock" msgstr "Count part stock" -#: src/pages/part/PartDetail.tsx:784 +#: src/pages/part/PartDetail.tsx:789 msgid "Transfer part stock" msgstr "Transfer part stock" -#: src/pages/part/PartDetail.tsx:793 +#: src/pages/part/PartDetail.tsx:798 msgid "Part Actions" msgstr "Part Actions" @@ -4242,6 +4268,7 @@ msgid "No pricing data found for this part." msgstr "No pricing data found for this part." #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" msgstr "Pricing Overview" @@ -4250,54 +4277,32 @@ msgid "Purchase History" msgstr "Purchase History" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" msgstr "Internal Pricing" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" msgstr "BOM Pricing" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" msgstr "Variant Pricing" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" msgstr "Sale Pricing" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" msgstr "Sale History" -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "Minimum Total Price" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "Maximum Total Price" - +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "Component" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "Unit Price" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 @@ -4306,82 +4311,118 @@ msgstr "Unit Price" msgid "Total Price" msgstr "Total Price" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "Component" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "Minimum Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "Maximum Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "Minimum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "Maximum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "Unit Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" msgstr "Updated" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" msgstr "Pie Chart" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" msgstr "Bar Chart" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" msgstr "Add Price Break" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "Edit Price Break" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "Delete Price Break" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "Price Break" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "Price" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "Pricing Category" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "Minimum" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "Maximum" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" msgstr "Purchase Pricing" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "Override Pricing" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "Overall Pricing" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" msgstr "Last Updated" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" -msgstr "Minimum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" +msgstr "Minimum Value" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" -msgstr "Maximum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" +msgstr "Maximum Value" #: src/pages/part/pricing/PricingPanel.tsx:25 msgid "No data available" @@ -4399,33 +4440,33 @@ msgstr "No pricing data available" msgid "Loading pricing data" msgstr "Loading pricing data" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" msgstr "Date" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "Purchase Price" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "Sale Order" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "Sale Price" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "Supplier Price" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "Variant Part" @@ -4445,23 +4486,23 @@ msgstr "Supplier Reference" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" msgstr "Line Items" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" msgstr "Completed Line Items" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" msgstr "Completed Shipments" @@ -4472,46 +4513,46 @@ msgstr "Completed Shipments" #~ msgstr "Order Currency," #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "Order Currency" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" msgstr "Total Cost" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" msgstr "Created On" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" msgstr "Order Details" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" msgstr "Order Actions" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" msgstr "Customer Reference" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "Edit Return Order" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" @@ -4521,17 +4562,17 @@ msgstr "Add Return Order" msgid "Customers" msgstr "Customers" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" msgstr "Edit Sales Order" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" msgstr "Add Sales Order" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" msgstr "Pending Shipments" @@ -4594,11 +4635,11 @@ msgstr "Action for child locations in this location" msgid "Location Actions" msgstr "Location Actions" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" msgstr "Base Part" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" msgstr "Stock Status" @@ -4610,15 +4651,15 @@ msgstr "Stock Status" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "Unlink custom barcode from stock item" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" msgstr "Installed In" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" msgstr "Consumed By" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" msgstr "Build Order" @@ -4631,31 +4672,31 @@ msgstr "Build Order" #~ msgid "Delete stock item" #~ msgstr "Delete stock item" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" msgstr "Stock Details" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" msgstr "Stock Tracking" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" msgstr "Test Data" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" msgstr "Installed Items" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" msgstr "Child Items" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" msgstr "Edit Stock Item" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" msgstr "Delete Stock Item" @@ -4663,34 +4704,34 @@ msgstr "Delete Stock Item" #~ msgid "Duplicate stock item" #~ msgstr "Duplicate stock item" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" msgstr "Stock Operations" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" msgstr "Count stock" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" msgstr "Add stock" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" msgstr "Remove stock" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" msgstr "Transfer" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" msgstr "Transfer stock" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "Stock Item Actions" @@ -4781,7 +4822,7 @@ msgstr "Filter" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" msgstr "Value" @@ -5219,7 +5260,7 @@ msgid "Required Tests" msgstr "Required Tests" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" msgstr "Test Results" @@ -5301,23 +5342,39 @@ msgstr "Upload Error" msgid "File could not be uploaded" msgstr "File could not be uploaded" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "Upload Attachment" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "Edit Attachment" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" msgstr "Delete Attachment" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "Is Link" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "Show link attachments" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "Is File" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "Show file attachments" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" msgstr "Add attachment" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" msgstr "Add external link" @@ -5325,11 +5382,11 @@ msgstr "Add external link" #~ msgid "Upload attachment" #~ msgstr "Upload attachment" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" msgstr "No attachments found" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "Drag attachment file here to upload" @@ -5711,75 +5768,75 @@ msgstr "Results" msgid "No Results" msgstr "No Results" -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 msgid "Required" msgstr "Required" -#: src/tables/part/PartTestTemplateTable.tsx:80 +#: src/tables/part/PartTestTemplateTable.tsx:85 msgid "Show required tests" msgstr "Show required tests" -#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" msgstr "Enabled" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" msgstr "Show enabled tests" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "Requires Value" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" msgstr "Show tests that require a value" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "Requires Attachment" -#: src/tables/part/PartTestTemplateTable.tsx:95 +#: src/tables/part/PartTestTemplateTable.tsx:100 msgid "Show tests that require an attachment" msgstr "Show tests that require an attachment" -#: src/tables/part/PartTestTemplateTable.tsx:99 +#: src/tables/part/PartTestTemplateTable.tsx:104 msgid "Include Inherited" msgstr "Include Inherited" -#: src/tables/part/PartTestTemplateTable.tsx:100 +#: src/tables/part/PartTestTemplateTable.tsx:105 msgid "Show tests from inherited templates" msgstr "Show tests from inherited templates" -#: src/tables/part/PartTestTemplateTable.tsx:104 +#: src/tables/part/PartTestTemplateTable.tsx:109 msgid "Has Results" msgstr "Has Results" -#: src/tables/part/PartTestTemplateTable.tsx:105 +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" msgstr "Show tests which have recorded results" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" msgstr "Add Test Template" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" msgstr "Edit Test Template" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" msgstr "Delete Test Template" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" msgstr "This action cannot be reversed" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" msgstr "Any tests results associated with this template will be deleted" @@ -6268,7 +6325,7 @@ msgid "Task ID" msgstr "Task ID" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" msgstr "Started" @@ -6674,95 +6731,95 @@ msgstr "Delete stock" msgid "Delete stock items" msgstr "Delete stock items" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" msgstr "Test" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" msgstr "Test result for installed stock item" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" msgstr "Result" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" msgstr "No Result" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" msgstr "Attachment" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" msgstr "Test station" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" msgstr "Finished" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" msgstr "Add Test Result" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" msgstr "Test result added" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" msgstr "Edit Test Result" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" msgstr "Test result updated" -#: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 msgid "Delete Test Result" msgstr "Delete Test Result" -#: src/tables/stock/StockItemTestResultTable.tsx:289 +#: src/tables/stock/StockItemTestResultTable.tsx:273 msgid "Test result deleted" msgstr "Test result deleted" -#: src/tables/stock/StockItemTestResultTable.tsx:303 +#: src/tables/stock/StockItemTestResultTable.tsx:287 msgid "Test Passed" msgstr "Test Passed" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" msgstr "Test result has been recorded" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" msgstr "Failed to record test result" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" msgstr "Pass Test" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" msgstr "Show results for required tests" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" msgstr "Include Installed" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" msgstr "Show results for installed stock items" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" msgstr "Passed" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" msgstr "Show only passed tests" diff --git a/src/frontend/src/locales/es-mx/messages.po b/src/frontend/src/locales/es-mx/messages.po index 8144b1fe75..99387a29a2 100644 --- a/src/frontend/src/locales/es-mx/messages.po +++ b/src/frontend/src/locales/es-mx/messages.po @@ -43,18 +43,18 @@ msgstr "" #: src/components/buttons/PrintingActions.tsx:107 #: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 #: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 -#: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 +#: src/components/nav/SearchDrawer.tsx:427 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" msgstr "" @@ -116,15 +116,15 @@ msgstr "" msgid "No" msgstr "" -#: src/components/details/Details.tsx:303 +#: src/components/details/Details.tsx:305 msgid "No name defined" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copied" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copy" msgstr "" @@ -140,7 +140,7 @@ msgstr "" #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" msgstr "" @@ -202,9 +202,9 @@ msgstr "" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:686 +#: src/pages/part/PartDetail.tsx:691 msgid "Inactive" msgstr "" @@ -243,6 +243,35 @@ msgstr "" msgid "Virtual" msgstr "" +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "" + #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" msgstr "" @@ -329,11 +358,6 @@ msgstr "" msgid "Form Error" msgstr "" -#: src/components/forms/ApiForm.tsx:430 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "" - #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" #~ msgstr "" @@ -374,12 +398,12 @@ msgstr "" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." msgstr "" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" msgstr "" @@ -503,7 +527,7 @@ msgstr "" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:127 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -527,7 +551,6 @@ msgid "Add Host" msgstr "" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" msgstr "" @@ -555,20 +578,20 @@ msgstr "" msgid "State: <0>worker ({0}), <1>plugins{1}" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "" @@ -590,7 +613,7 @@ msgid "Thumbnail" msgstr "" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" msgstr "" @@ -835,7 +858,7 @@ msgid "Close modal" msgstr "" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" msgstr "" @@ -943,7 +966,7 @@ msgstr "" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:295 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" msgstr "" @@ -999,8 +1022,8 @@ msgid "About" msgstr "" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" @@ -1021,35 +1044,35 @@ msgstr "" msgid "Mark as read" msgstr "" -#: src/components/nav/SearchDrawer.tsx:77 +#: src/components/nav/SearchDrawer.tsx:78 msgid "results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:337 +#: src/components/nav/SearchDrawer.tsx:349 msgid "Enter search text" msgstr "" -#: src/components/nav/SearchDrawer.tsx:364 +#: src/components/nav/SearchDrawer.tsx:376 msgid "Search Options" msgstr "" -#: src/components/nav/SearchDrawer.tsx:367 +#: src/components/nav/SearchDrawer.tsx:379 msgid "Regex search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:377 +#: src/components/nav/SearchDrawer.tsx:389 msgid "Whole word search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:416 +#: src/components/nav/SearchDrawer.tsx:430 msgid "An error occurred during search query" msgstr "" -#: src/components/nav/SearchDrawer.tsx:427 +#: src/components/nav/SearchDrawer.tsx:441 msgid "No results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:430 +#: src/components/nav/SearchDrawer.tsx:444 msgid "No results available for search query" msgstr "" @@ -1068,7 +1091,7 @@ msgstr "" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:832 +#: src/pages/part/PartDetail.tsx:837 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" @@ -1077,11 +1100,11 @@ msgstr "" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:640 +#: src/pages/part/PartDetail.tsx:645 msgid "Parts" msgstr "" @@ -1104,7 +1127,7 @@ msgstr "" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "" @@ -1128,15 +1151,15 @@ msgid "Part Category" msgstr "" #: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 +#: src/pages/Index/Settings/SystemSettings.tsx:165 #: src/pages/part/CategoryDetail.tsx:249 #: src/pages/part/CategoryDetail.tsx:282 -#: src/pages/part/PartDetail.tsx:822 +#: src/pages/part/PartDetail.tsx:827 msgid "Part Categories" msgstr "" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:560 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "" @@ -1156,7 +1179,7 @@ msgstr "" #: src/components/render/ModelType.tsx:82 #: src/pages/stock/LocationDetail.tsx:185 #: src/pages/stock/LocationDetail.tsx:361 -#: src/pages/stock/StockDetail.tsx:552 +#: src/pages/stock/StockDetail.tsx:554 msgid "Stock Locations" msgstr "" @@ -1195,7 +1218,7 @@ msgid "Build Lines" msgstr "" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" msgstr "" @@ -1218,17 +1241,17 @@ msgid "Project Codes" msgstr "" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" msgstr "" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:573 +#: src/pages/part/PartDetail.tsx:579 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" msgstr "" @@ -1243,16 +1266,16 @@ msgstr "" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" msgstr "" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:579 +#: src/pages/part/PartDetail.tsx:586 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" msgstr "" @@ -1266,13 +1289,13 @@ msgid "Sales Order Shipments" msgstr "" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" msgstr "" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" @@ -1290,8 +1313,8 @@ msgstr "" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" msgstr "" @@ -1309,7 +1332,7 @@ msgid "Owners" msgstr "" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" msgstr "" @@ -1353,26 +1376,27 @@ msgstr "" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:493 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 #: src/pages/stock/LocationDetail.tsx:345 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" msgstr "" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:517 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" msgstr "" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:523 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 @@ -1808,16 +1832,12 @@ msgid "Getting started" msgstr "" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Failed to upload image" +#~ msgstr "" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "" +#~ msgid "Notes saved" +#~ msgstr "" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" @@ -1936,42 +1956,46 @@ msgid "Portuguese (Brazilian)" msgstr "" #: src/contexts/LanguageContext.tsx:43 -msgid "Russian" +msgid "Romanian" msgstr "" #: src/contexts/LanguageContext.tsx:44 -msgid "Slovak" +msgid "Russian" msgstr "" #: src/contexts/LanguageContext.tsx:45 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: src/contexts/LanguageContext.tsx:46 -msgid "Swedish" +msgid "Slovenian" msgstr "" #: src/contexts/LanguageContext.tsx:47 -msgid "Thai" +msgid "Swedish" msgstr "" #: src/contexts/LanguageContext.tsx:48 -msgid "Turkish" +msgid "Thai" msgstr "" #: src/contexts/LanguageContext.tsx:49 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: src/contexts/LanguageContext.tsx:50 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: src/contexts/LanguageContext.tsx:51 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: src/contexts/LanguageContext.tsx:52 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" msgstr "" @@ -1985,7 +2009,7 @@ msgstr "" #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" msgstr "" @@ -2116,10 +2140,10 @@ msgstr "" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" msgstr "" @@ -2127,15 +2151,15 @@ msgstr "" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" msgstr "" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" msgstr "" @@ -2356,7 +2380,7 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" @@ -2407,7 +2431,7 @@ msgstr "" #~ msgstr "" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" @@ -2429,8 +2453,8 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:207 -#: src/pages/part/PartDetail.tsx:656 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" msgstr "" @@ -2452,14 +2476,14 @@ msgid "Actions" msgstr "" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" msgstr "" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" msgstr "" @@ -2472,12 +2496,12 @@ msgid "Remove Stock" msgstr "" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:788 msgid "Transfer Stock" msgstr "" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:777 msgid "Count Stock" msgstr "" @@ -2513,23 +2537,14 @@ msgstr "" #~ msgid "You have been logged out" #~ msgstr "" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" msgstr "" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" msgstr "" -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "" - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "" - #: src/functions/auth.tsx:141 #~ msgid "Already logged in" #~ msgstr "" @@ -2542,11 +2557,20 @@ msgstr "" #~ msgid "Found an existing login - welcome back!" #~ msgstr "" -#: src/functions/auth.tsx:153 +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "" + +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "" + +#: src/functions/auth.tsx:195 msgid "Logged In" msgstr "" -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:196 msgid "Successfully logged in" msgstr "" @@ -2680,7 +2704,7 @@ msgstr "" msgid "Welcome to your Dashboard{0}" msgstr "" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." msgstr "" @@ -3134,15 +3158,15 @@ msgstr "" msgid "System settings" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" msgstr "" @@ -3154,50 +3178,50 @@ msgstr "" #~ msgid "Exchange Rates" #~ msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:591 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:527 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:298 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" msgstr "" @@ -3231,8 +3255,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3245,8 +3269,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" @@ -3257,10 +3281,10 @@ msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:134 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3293,10 +3317,10 @@ msgid "Issued By" msgstr "" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:322 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 @@ -3311,8 +3335,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" msgstr "" @@ -3350,7 +3374,7 @@ msgstr "" #~ msgstr "" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:535 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" msgstr "" @@ -3394,34 +3418,34 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:613 +#: src/pages/part/PartDetail.tsx:622 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" msgstr "" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:625 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" msgstr "" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" @@ -3432,17 +3456,17 @@ msgstr "" #~ msgstr "" #: src/pages/build/BuildDetail.tsx:374 -#~ msgid "Print build report" -#~ msgstr "" - -#: src/pages/build/BuildDetail.tsx:378 msgid "Build Order Actions" msgstr "" -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" msgstr "" @@ -3481,7 +3505,7 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" @@ -3489,10 +3513,10 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 @@ -3525,12 +3549,12 @@ msgstr "" msgid "Assigned Stock" msgstr "" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" msgstr "" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" msgstr "" @@ -3560,32 +3584,32 @@ msgid "Manufacturer Part Details" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:487 +#: src/pages/part/PartDetail.tsx:492 msgid "Parameters" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:560 +#: src/pages/part/PartDetail.tsx:566 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" msgstr "" @@ -3601,7 +3625,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" msgstr "" @@ -3635,7 +3659,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" msgstr "" @@ -3725,85 +3749,85 @@ msgstr "" msgid "Category Details" msgstr "" -#: src/pages/part/PartDetail.tsx:140 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" msgstr "" -#: src/pages/part/PartDetail.tsx:147 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" msgstr "" -#: src/pages/part/PartDetail.tsx:153 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:167 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" msgstr "" -#: src/pages/part/PartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" msgstr "" -#: src/pages/part/PartDetail.tsx:181 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" msgstr "" -#: src/pages/part/PartDetail.tsx:188 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" msgstr "" -#: src/pages/part/PartDetail.tsx:195 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" msgstr "" -#: src/pages/part/PartDetail.tsx:213 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:220 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" msgstr "" -#: src/pages/part/PartDetail.tsx:235 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:243 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:250 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" msgstr "" -#: src/pages/part/PartDetail.tsx:257 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" msgstr "" -#: src/pages/part/PartDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -3821,37 +3845,37 @@ msgstr "" msgid "Active" msgstr "" -#: src/pages/part/PartDetail.tsx:271 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" msgstr "" -#: src/pages/part/PartDetail.tsx:276 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" msgstr "" -#: src/pages/part/PartDetail.tsx:281 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" msgstr "" -#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:291 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:296 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" msgstr "" -#: src/pages/part/PartDetail.tsx:309 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" msgstr "" @@ -3860,7 +3884,7 @@ msgstr "" #~ msgid "Edit part" #~ msgstr "" -#: src/pages/part/PartDetail.tsx:314 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" msgstr "" @@ -3872,69 +3896,71 @@ msgstr "" #~ msgid "Delete part" #~ msgstr "" -#: src/pages/part/PartDetail.tsx:329 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" msgstr "" -#: src/pages/part/PartDetail.tsx:340 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" msgstr "" -#: src/pages/part/PartDetail.tsx:375 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" msgstr "" -#: src/pages/part/PartDetail.tsx:410 +#: src/pages/part/PartDetail.tsx:415 msgid "Stocktake By" msgstr "" -#: src/pages/part/PartDetail.tsx:481 +#: src/pages/part/PartDetail.tsx:486 msgid "Part Details" msgstr "" -#: src/pages/part/PartDetail.tsx:507 +#: src/pages/part/PartDetail.tsx:512 msgid "Variants" msgstr "" -#: src/pages/part/PartDetail.tsx:514 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" msgstr "" -#: src/pages/part/PartDetail.tsx:520 +#: src/pages/part/PartDetail.tsx:526 msgid "Bill of Materials" msgstr "" -#: src/pages/part/PartDetail.tsx:534 +#: src/pages/part/PartDetail.tsx:540 msgid "Used In" msgstr "" -#: src/pages/part/PartDetail.tsx:541 +#: src/pages/part/PartDetail.tsx:547 msgid "Part Pricing" msgstr "" -#: src/pages/part/PartDetail.tsx:547 +#: src/pages/part/PartDetail.tsx:553 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" msgstr "" -#: src/pages/part/PartDetail.tsx:586 +#: src/pages/part/PartDetail.tsx:593 msgid "Scheduling" msgstr "" -#: src/pages/part/PartDetail.tsx:596 +#: src/pages/part/PartDetail.tsx:605 msgid "Test Templates" msgstr "" -#: src/pages/part/PartDetail.tsx:607 +#: src/pages/part/PartDetail.tsx:616 msgid "Related Parts" msgstr "" -#: src/pages/part/PartDetail.tsx:662 -#: src/pages/stock/StockDetail.tsx:151 -#: src/pages/stock/StockDetail.tsx:529 +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 @@ -3942,55 +3968,55 @@ msgstr "" msgid "Available" msgstr "" -#: src/pages/part/PartDetail.tsx:668 +#: src/pages/part/PartDetail.tsx:673 msgid "No Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:674 +#: src/pages/part/PartDetail.tsx:679 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" msgstr "" -#: src/pages/part/PartDetail.tsx:680 -#: src/pages/stock/StockDetail.tsx:512 +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" msgstr "" -#: src/pages/part/PartDetail.tsx:699 +#: src/pages/part/PartDetail.tsx:704 msgid "Edit Part" msgstr "" -#: src/pages/part/PartDetail.tsx:706 +#: src/pages/part/PartDetail.tsx:711 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" msgstr "" -#: src/pages/part/PartDetail.tsx:718 +#: src/pages/part/PartDetail.tsx:723 msgid "Delete Part" msgstr "" -#: src/pages/part/PartDetail.tsx:727 +#: src/pages/part/PartDetail.tsx:732 msgid "Deleting this part cannot be reversed" msgstr "" -#: src/pages/part/PartDetail.tsx:765 +#: src/pages/part/PartDetail.tsx:770 #: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" msgstr "" -#: src/pages/part/PartDetail.tsx:773 +#: src/pages/part/PartDetail.tsx:778 msgid "Count part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:784 +#: src/pages/part/PartDetail.tsx:789 msgid "Transfer part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:793 +#: src/pages/part/PartDetail.tsx:798 msgid "Part Actions" msgstr "" @@ -3999,6 +4025,7 @@ msgid "No pricing data found for this part." msgstr "" #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" msgstr "" @@ -4007,54 +4034,32 @@ msgid "Purchase History" msgstr "" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "" - +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 @@ -4063,81 +4068,117 @@ msgstr "" msgid "Total Price" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:25 @@ -4156,33 +4197,33 @@ msgstr "" msgid "Loading pricing data" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "" @@ -4202,23 +4243,23 @@ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" msgstr "" @@ -4229,46 +4270,46 @@ msgstr "" #~ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" msgstr "" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" @@ -4278,17 +4319,17 @@ msgstr "" msgid "Customers" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" msgstr "" @@ -4351,11 +4392,11 @@ msgstr "" msgid "Location Actions" msgstr "" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" msgstr "" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" msgstr "" @@ -4367,15 +4408,15 @@ msgstr "" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" msgstr "" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" msgstr "" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" msgstr "" @@ -4388,31 +4429,31 @@ msgstr "" #~ msgid "Delete stock item" #~ msgstr "" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" msgstr "" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" msgstr "" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" msgstr "" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" msgstr "" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" msgstr "" @@ -4420,34 +4461,34 @@ msgstr "" #~ msgid "Duplicate stock item" #~ msgstr "" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" msgstr "" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" msgstr "" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "" @@ -4538,7 +4579,7 @@ msgstr "" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" msgstr "" @@ -4976,7 +5017,7 @@ msgid "Required Tests" msgstr "" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" msgstr "" @@ -5058,23 +5099,39 @@ msgstr "" msgid "File could not be uploaded" msgstr "" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" msgstr "" @@ -5082,11 +5139,11 @@ msgstr "" #~ msgid "Upload attachment" #~ msgstr "" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" msgstr "" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "" @@ -5468,75 +5525,75 @@ msgstr "" msgid "No Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 msgid "Required" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:80 +#: src/tables/part/PartTestTemplateTable.tsx:85 msgid "Show required tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:95 +#: src/tables/part/PartTestTemplateTable.tsx:100 msgid "Show tests that require an attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:99 +#: src/tables/part/PartTestTemplateTable.tsx:104 msgid "Include Inherited" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:100 +#: src/tables/part/PartTestTemplateTable.tsx:105 msgid "Show tests from inherited templates" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:104 +#: src/tables/part/PartTestTemplateTable.tsx:109 msgid "Has Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:105 +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" msgstr "" @@ -6025,7 +6082,7 @@ msgid "Task ID" msgstr "" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" msgstr "" @@ -6431,95 +6488,95 @@ msgstr "" msgid "Delete stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 msgid "Delete Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:289 +#: src/tables/stock/StockItemTestResultTable.tsx:273 msgid "Test result deleted" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:303 +#: src/tables/stock/StockItemTestResultTable.tsx:287 msgid "Test Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" msgstr "" diff --git a/src/frontend/src/locales/es/messages.po b/src/frontend/src/locales/es/messages.po index 6746d5075c..2fe33a67e8 100644 --- a/src/frontend/src/locales/es/messages.po +++ b/src/frontend/src/locales/es/messages.po @@ -5,22 +5,22 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: @lingui/cli\n" -"Language: es\n" +"Language: es_MX\n" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-05-31 12:29\n" +"PO-Revision-Date: 2024-06-19 04:50\n" "Last-Translator: \n" -"Language-Team: Spanish\n" +"Language-Team: Spanish, Mexico\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: inventree\n" "X-Crowdin-Project-ID: 452300\n" -"X-Crowdin-Language: es-ES\n" +"X-Crowdin-Language: es-MX\n" "X-Crowdin-File: /[inventree.InvenTree] l10/src/frontend/src/locales/en/messages.po\n" "X-Crowdin-File-ID: 205\n" #: src/components/Boundary.tsx:12 msgid "Error rendering component" -msgstr "Error al procesar el componente" +msgstr "Error al renderizar componente" #: src/components/Boundary.tsx:14 msgid "An error occurred while rendering this component. Refer to the console for more information." @@ -28,11 +28,11 @@ msgstr "Ocurrió un error mientras se renderizaba este componente. Consulte la c #: src/components/DashboardItemProxy.tsx:34 msgid "Title" -msgstr "Título" +msgstr "Titulo" #: src/components/buttons/AdminButton.tsx:83 msgid "Open in admin interface" -msgstr "Abrir en interfaz de administración" +msgstr "Abrir en interfaz de administrador" #: src/components/buttons/CopyButton.tsx:18 msgid "Copy to clipboard" @@ -44,22 +44,22 @@ msgstr "Imprimir etiqueta" #: src/components/buttons/PrintingActions.tsx:101 msgid "Label printing completed successfully" -msgstr "" +msgstr "Impresión de etiqueta completada con éxito" #: src/components/buttons/PrintingActions.tsx:107 #: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 #: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 -#: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 +#: src/components/nav/SearchDrawer.tsx:427 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" msgstr "Error" @@ -69,7 +69,7 @@ msgstr "La etiqueta no pudo ser generada" #: src/components/buttons/PrintingActions.tsx:123 msgid "Print Report" -msgstr "Imprimir un informe" +msgstr "Imprimir informe" #: src/components/buttons/PrintingActions.tsx:139 msgid "Report printing completed successfully" @@ -77,7 +77,7 @@ msgstr "Impresión de informe completada con éxito" #: src/components/buttons/PrintingActions.tsx:145 msgid "The report could not be generated" -msgstr "El informe no ha podido ser creado" +msgstr "El informe no pudo ser generada" #: src/components/buttons/PrintingActions.tsx:173 msgid "Printing Actions" @@ -89,7 +89,7 @@ msgstr "Imprimir etiquetas" #: src/components/buttons/PrintingActions.tsx:184 msgid "Print Reports" -msgstr "Imprimir reportes" +msgstr "Imprimir informes" #: src/components/buttons/ScanButton.tsx:15 msgid "Scan QR code" @@ -101,15 +101,15 @@ msgstr "Abrir escáner de código QR" #: src/components/buttons/SpotlightButton.tsx:14 msgid "Open spotlight" -msgstr "Abrir spotlight" +msgstr "" #: src/components/buttons/YesNoButton.tsx:16 msgid "Pass" -msgstr "" +msgstr "Aprobado" #: src/components/buttons/YesNoButton.tsx:17 msgid "Fail" -msgstr "Fallo" +msgstr "Falló" #: src/components/buttons/YesNoButton.tsx:32 #: src/tables/Filter.tsx:51 @@ -121,31 +121,31 @@ msgstr "Sí" msgid "No" msgstr "No" -#: src/components/details/Details.tsx:303 +#: src/components/details/Details.tsx:305 msgid "No name defined" msgstr "No hay nombre definido" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copied" msgstr "Copiado" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copy" msgstr "Copiar" #: src/components/details/DetailsImage.tsx:65 msgid "Remove Image" -msgstr "Eliminar imagen" +msgstr "Quitar imagen" #: src/components/details/DetailsImage.tsx:68 msgid "Remove the associated image from this item?" -msgstr "¿Eliminar la imagen asociada de este elemento?" +msgstr "¿Eliminar imagen asociada al artículo?" #: src/components/details/DetailsImage.tsx:71 #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" msgstr "Eliminar" @@ -164,7 +164,7 @@ msgstr "Cancelar" #: src/components/details/DetailsImage.tsx:97 msgid "Drag and drop to upload" -msgstr "Arrastrar y soltar para subir" +msgstr "Arrastra y suelta para subir" #: src/components/details/DetailsImage.tsx:100 msgid "Click to select file(s)" @@ -179,11 +179,11 @@ msgstr "Borrar" #: src/contexts/ThemeContext.tsx:43 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:56 msgid "Submit" -msgstr "Enviar" +msgstr "Aceptar" #: src/components/details/DetailsImage.tsx:267 msgid "Select from existing images" -msgstr "Seleccionar de imágenes existentes" +msgstr "Seleccionar desde imágenes existentes" #: src/components/details/DetailsImage.tsx:275 msgid "Select Image" @@ -191,66 +191,95 @@ msgstr "Seleccionar imagen" #: src/components/details/DetailsImage.tsx:287 msgid "Upload new image" -msgstr "Cargar nueva imagen" +msgstr "Subir nueva imagen" #: src/components/details/DetailsImage.tsx:294 msgid "Upload Image" -msgstr "Cargar Imagen" +msgstr "Subir Imagen" #: src/components/details/DetailsImage.tsx:307 msgid "Delete image" -msgstr "Borrar imagen" +msgstr "Eliminar imagen" #: src/components/details/PartIcons.tsx:28 msgid "Part is not active" -msgstr "Parte no está activa" +msgstr "La pieza no está activa" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:686 +#: src/pages/part/PartDetail.tsx:691 msgid "Inactive" msgstr "Inactivo" #: src/components/details/PartIcons.tsx:41 msgid "Part is a template part (variants can be made from this part)" -msgstr "La pieza es una pieza de plantilla (las variantes se pueden hacer a partir de esta pieza)" +msgstr "La pieza es una pieza de plantilla (se pueden hacer variantes de esta misma)" #: src/components/details/PartIcons.tsx:47 msgid "Part can be assembled from other parts" -msgstr "La parte puede ser ensamblada desde otras partes" +msgstr "Esta pieza se puede ensamblar utilizando otras partes" #: src/components/details/PartIcons.tsx:53 msgid "Part can be used in assemblies" -msgstr "La parte puede ser usada en ensamblajes" +msgstr "Esta pieza se puede usar en ensamblajes" #: src/components/details/PartIcons.tsx:59 msgid "Part stock is tracked by serial number" -msgstr "El stock de esta parte está rastreado por número de serie" +msgstr "Stock de pieza será rastreado con número de serie" #: src/components/details/PartIcons.tsx:65 msgid "Part can be purchased from external suppliers" -msgstr "La parte puede ser comprada de proveedores externos" +msgstr "" #: src/components/details/PartIcons.tsx:71 msgid "Part can be sold to customers" -msgstr "La parte puede ser vendida a clientes" +msgstr "" #: src/components/details/PartIcons.tsx:76 msgid "Part is virtual (not a physical part)" -msgstr "La parte es virtual (no una parte física)" +msgstr "" #: src/components/details/PartIcons.tsx:82 #: src/tables/part/PartTable.tsx:234 #: src/tables/part/PartTable.tsx:238 #: src/tables/part/PartVariantTable.tsx:25 msgid "Virtual" -msgstr "Virtual" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "" #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" -msgstr "Código" +msgstr "" #: src/components/editors/TemplateEditor/PdfPreview/PdfPreview.tsx:44 #~ msgid "Failed to parse error response from server." @@ -258,28 +287,28 @@ msgstr "Código" #: src/components/editors/TemplateEditor/PdfPreview/PdfPreview.tsx:81 msgid "Preview not available, click \"Reload Preview\"." -msgstr "Vista previa no disponible, haga clic en \"Recargar vista previa\"." +msgstr "" #: src/components/editors/TemplateEditor/PdfPreview/index.tsx:9 msgid "PDF Preview" -msgstr "Vista previa PDF" +msgstr "" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:104 msgid "Error loading template" -msgstr "Error al cargar la plantilla" +msgstr "" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:116 msgid "Error saving template" -msgstr "Error al guardar la plantilla" +msgstr "" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:146 #: src/components/editors/TemplateEditor/TemplateEditor.tsx:270 msgid "Save & Reload Preview" -msgstr "Guardar y recargar vista previa" +msgstr "" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:151 msgid "Are you sure you want to Save & Reload the preview?" -msgstr "¿Está seguro que desea guardar y recargar la vista previa?" +msgstr "" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:151 #~ msgid "Save & Reload preview?" @@ -287,27 +316,27 @@ msgstr "¿Está seguro que desea guardar y recargar la vista previa?" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:153 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?" -msgstr "Para renderizar la vista previa la plantilla actual necesita ser reemplazada en el servidor con sus modificaciones que pueden romper la etiqueta si está en uso activo. ¿Quieres continuar?" +msgstr "" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:157 msgid "Save & Reload" -msgstr "Guardar y recargar" +msgstr "" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:189 msgid "Preview updated" -msgstr "Actualizar vista previa" +msgstr "" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:190 msgid "The preview has been updated successfully." -msgstr "La vista previa se ha actualizado correctamente." +msgstr "" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:262 msgid "Reload preview" -msgstr "Recargar vista previa" +msgstr "" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:263 msgid "Use the currently stored template from the server" -msgstr "Usar la plantilla actualmente almacenada del servidor" +msgstr "" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:263 #~ msgid "Save & Reload preview" @@ -315,7 +344,7 @@ msgstr "Usar la plantilla actualmente almacenada del servidor" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:271 msgid "Save the current template and reload the preview" -msgstr "Guardar la plantilla actual y recargar la vista previa" +msgstr "" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:322 #~ msgid "to preview" @@ -323,21 +352,16 @@ msgstr "Guardar la plantilla actual y recargar la vista previa" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:329 msgid "Select instance to preview" -msgstr "Seleccione la instancia a previsualizar" +msgstr "" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:373 msgid "Error rendering template" -msgstr "Error al renderizar plantilla" +msgstr "" #: src/components/forms/ApiForm.tsx:149 #: src/functions/forms.tsx:259 msgid "Form Error" -msgstr "Error de formulario" - -#: src/components/forms/ApiForm.tsx:430 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "Completado" +msgstr "" #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" @@ -346,7 +370,7 @@ msgstr "Completado" #: src/components/forms/ApiForm.tsx:611 #: src/tables/plugin/PluginListTable.tsx:388 msgid "Update" -msgstr "Actualizar" +msgstr "" #: src/components/forms/ApiForm.tsx:631 #: src/components/items/ActionDropdown.tsx:210 @@ -358,7 +382,7 @@ msgstr "Actualizar" #: src/tables/RowActions.tsx:71 #: src/tables/plugin/PluginListTable.tsx:420 msgid "Delete" -msgstr "Eliminar" +msgstr "" #: src/components/forms/AuthenticationForm.tsx:48 #: src/components/forms/AuthenticationForm.tsx:74 @@ -368,11 +392,11 @@ msgstr "Eliminar" #: src/components/forms/AuthenticationForm.tsx:51 msgid "Login successful" -msgstr "Inicio de sesión correcto" +msgstr "Inicio de sesión exitoso" #: src/components/forms/AuthenticationForm.tsx:52 msgid "Logged in successfully" -msgstr "Se ha iniciado sesión con éxito" +msgstr "" #: src/components/forms/AuthenticationForm.tsx:52 #~ msgid "Welcome back!" @@ -384,12 +408,12 @@ msgstr "Se ha iniciado sesión con éxito" #: src/components/forms/AuthenticationForm.tsx:58 msgid "Login failed" -msgstr "" +msgstr "Error al iniciar sesión" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." msgstr "" @@ -399,13 +423,13 @@ msgstr "" #~ msgstr "Mail delivery successfull" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" -msgstr "" +msgstr "Envío de correo exitoso" #: src/components/forms/AuthenticationForm.tsx:71 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too." -msgstr "" +msgstr "Revisa tu bandeja de entrada para el enlace de inicio de sesión. Si tienes una cuenta, recibirás un enlace de inicio de sesión. Revisa también el correo no deseado." #: src/components/forms/AuthenticationForm.tsx:75 msgid "Mail delivery failed" @@ -423,7 +447,7 @@ msgstr "Nombre de usuario" #: src/components/forms/AuthenticationForm.tsx:107 #: src/components/forms/AuthenticationForm.tsx:228 msgid "Your username" -msgstr "Tu nombre de usuario" +msgstr "" #: src/components/forms/AuthenticationForm.tsx:112 #: src/components/forms/AuthenticationForm.tsx:240 @@ -456,7 +480,7 @@ msgstr "Correo electrónico" #: src/pages/Auth/Reset.tsx:32 #: src/pages/Auth/Set-Password.tsx:107 msgid "We will send you a link to login - if you are registered" -msgstr "" +msgstr "Te enviaremos un enlace para iniciar sesión - si estás registrado" #: src/components/forms/AuthenticationForm.tsx:136 #~ msgid "I will use username and password" @@ -464,7 +488,7 @@ msgstr "" #: src/components/forms/AuthenticationForm.tsx:151 msgid "Send me an email" -msgstr "" +msgstr "Envíame un correo electrónico" #: src/components/forms/AuthenticationForm.tsx:153 msgid "Use username and password" @@ -488,7 +512,7 @@ msgstr "" #: src/components/forms/AuthenticationForm.tsx:210 msgid "Input error" -msgstr "" +msgstr "Error de entrada" #: src/components/forms/AuthenticationForm.tsx:234 msgid "This will be used for a confirmation" @@ -527,7 +551,7 @@ msgstr "" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:127 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -540,24 +564,23 @@ msgstr "" #: src/tables/settings/PendingTasksTable.tsx:26 #: src/tables/stock/LocationTypesTable.tsx:60 msgid "Name" -msgstr "" +msgstr "Nombre" #: src/components/forms/HostOptionsForm.tsx:75 msgid "No one here..." -msgstr "" +msgstr "Nadie aquí..." #: src/components/forms/HostOptionsForm.tsx:86 msgid "Add Host" msgstr "" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" -msgstr "" +msgstr "Guardar" #: src/components/forms/InstanceOptions.tsx:43 msgid "Select destination instance" -msgstr "" +msgstr "Seleccionar instancia de destino" #: src/components/forms/InstanceOptions.tsx:71 msgid "Edit possible host options" @@ -565,34 +588,34 @@ msgstr "" #: src/components/forms/InstanceOptions.tsx:98 msgid "Version: {0}" -msgstr "" +msgstr "Versión: {0}" #: src/components/forms/InstanceOptions.tsx:100 msgid "API:{0}" -msgstr "" +msgstr "API:{0}" #: src/components/forms/InstanceOptions.tsx:102 msgid "Name: {0}" -msgstr "" +msgstr "Nombre: {0}" #: src/components/forms/InstanceOptions.tsx:104 msgid "State: <0>worker ({0}), <1>plugins{1}" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "" @@ -614,7 +637,7 @@ msgid "Thumbnail" msgstr "" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" msgstr "" @@ -859,7 +882,7 @@ msgid "Close modal" msgstr "" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" msgstr "" @@ -967,7 +990,7 @@ msgstr "" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:295 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" msgstr "" @@ -1031,8 +1054,8 @@ msgid "About" msgstr "" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" @@ -1053,35 +1076,35 @@ msgstr "" msgid "Mark as read" msgstr "" -#: src/components/nav/SearchDrawer.tsx:77 +#: src/components/nav/SearchDrawer.tsx:78 msgid "results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:337 +#: src/components/nav/SearchDrawer.tsx:349 msgid "Enter search text" msgstr "" -#: src/components/nav/SearchDrawer.tsx:364 +#: src/components/nav/SearchDrawer.tsx:376 msgid "Search Options" msgstr "" -#: src/components/nav/SearchDrawer.tsx:367 +#: src/components/nav/SearchDrawer.tsx:379 msgid "Regex search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:377 +#: src/components/nav/SearchDrawer.tsx:389 msgid "Whole word search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:416 +#: src/components/nav/SearchDrawer.tsx:430 msgid "An error occurred during search query" msgstr "" -#: src/components/nav/SearchDrawer.tsx:427 +#: src/components/nav/SearchDrawer.tsx:441 msgid "No results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:430 +#: src/components/nav/SearchDrawer.tsx:444 msgid "No results available for search query" msgstr "" @@ -1100,7 +1123,7 @@ msgstr "" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:832 +#: src/pages/part/PartDetail.tsx:837 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" @@ -1109,11 +1132,11 @@ msgstr "" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:640 +#: src/pages/part/PartDetail.tsx:645 msgid "Parts" msgstr "" @@ -1136,7 +1159,7 @@ msgstr "" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "" @@ -1160,15 +1183,15 @@ msgid "Part Category" msgstr "" #: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 +#: src/pages/Index/Settings/SystemSettings.tsx:165 #: src/pages/part/CategoryDetail.tsx:249 #: src/pages/part/CategoryDetail.tsx:282 -#: src/pages/part/PartDetail.tsx:822 +#: src/pages/part/PartDetail.tsx:827 msgid "Part Categories" msgstr "" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:560 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "" @@ -1188,7 +1211,7 @@ msgstr "" #: src/components/render/ModelType.tsx:82 #: src/pages/stock/LocationDetail.tsx:185 #: src/pages/stock/LocationDetail.tsx:361 -#: src/pages/stock/StockDetail.tsx:552 +#: src/pages/stock/StockDetail.tsx:554 msgid "Stock Locations" msgstr "" @@ -1227,7 +1250,7 @@ msgid "Build Lines" msgstr "" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" msgstr "" @@ -1250,20 +1273,20 @@ msgid "Project Codes" msgstr "" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" msgstr "" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:573 +#: src/pages/part/PartDetail.tsx:579 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" -msgstr "" +msgstr "Órdenes de compra" #: src/components/render/ModelType.tsx:142 msgid "Purchase Order Line" @@ -1275,16 +1298,16 @@ msgstr "" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" msgstr "" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:579 +#: src/pages/part/PartDetail.tsx:586 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" msgstr "" @@ -1298,17 +1321,17 @@ msgid "Sales Order Shipments" msgstr "" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" msgstr "" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" -msgstr "" +msgstr "Ordenes de devolución" #: src/components/render/ModelType.tsx:172 #: src/tables/company/AddressTable.tsx:47 @@ -1322,8 +1345,8 @@ msgstr "" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" msgstr "" @@ -1341,7 +1364,7 @@ msgid "Owners" msgstr "" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" msgstr "" @@ -1385,26 +1408,27 @@ msgstr "" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:493 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 #: src/pages/stock/LocationDetail.tsx:345 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" msgstr "" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:517 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" msgstr "" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:523 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 @@ -1844,16 +1868,12 @@ msgid "Getting started" msgstr "" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Failed to upload image" +#~ msgstr "Failed to upload image" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "" +#~ msgid "Notes saved" +#~ msgstr "Notes saved" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" @@ -1972,42 +1992,46 @@ msgid "Portuguese (Brazilian)" msgstr "" #: src/contexts/LanguageContext.tsx:43 -msgid "Russian" +msgid "Romanian" msgstr "" #: src/contexts/LanguageContext.tsx:44 -msgid "Slovak" +msgid "Russian" msgstr "" #: src/contexts/LanguageContext.tsx:45 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: src/contexts/LanguageContext.tsx:46 -msgid "Swedish" +msgid "Slovenian" msgstr "" #: src/contexts/LanguageContext.tsx:47 -msgid "Thai" +msgid "Swedish" msgstr "" #: src/contexts/LanguageContext.tsx:48 -msgid "Turkish" +msgid "Thai" msgstr "" #: src/contexts/LanguageContext.tsx:49 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: src/contexts/LanguageContext.tsx:50 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: src/contexts/LanguageContext.tsx:51 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: src/contexts/LanguageContext.tsx:52 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" msgstr "" @@ -2021,7 +2045,7 @@ msgstr "" #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" msgstr "" @@ -2147,7 +2171,7 @@ msgstr "" #: src/defaults/links.tsx:11 #: src/pages/company/CompanyDetail.tsx:92 msgid "Website" -msgstr "" +msgstr "Sitio web" #: src/defaults/links.tsx:16 msgid "GitHub" @@ -2160,10 +2184,10 @@ msgstr "" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" msgstr "" @@ -2171,15 +2195,15 @@ msgstr "" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" msgstr "" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" msgstr "" @@ -2464,7 +2488,7 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" @@ -2515,7 +2539,7 @@ msgstr "" #~ msgstr "Stock item updated" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" @@ -2537,11 +2561,11 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:207 -#: src/pages/part/PartDetail.tsx:656 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" -msgstr "" +msgstr "En Stock" #: src/forms/StockForms.tsx:449 msgid "Move" @@ -2560,14 +2584,14 @@ msgid "Actions" msgstr "" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" -msgstr "" +msgstr "Agregar" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" msgstr "" @@ -2580,12 +2604,12 @@ msgid "Remove Stock" msgstr "" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:788 msgid "Transfer Stock" msgstr "" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:777 msgid "Count Stock" msgstr "" @@ -2625,23 +2649,14 @@ msgstr "" #~ msgid "You have been logged out" #~ msgstr "You have been logged out" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" msgstr "" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" msgstr "" -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "" - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "" - #: src/functions/auth.tsx:141 #~ msgid "Already logged in" #~ msgstr "Already logged in" @@ -2654,11 +2669,20 @@ msgstr "" #~ msgid "Found an existing login - welcome back!" #~ msgstr "Found an existing login - welcome back!" -#: src/functions/auth.tsx:153 +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "" + +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "" + +#: src/functions/auth.tsx:195 msgid "Logged In" msgstr "" -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:196 msgid "Successfully logged in" msgstr "" @@ -2729,7 +2753,7 @@ msgstr "" #: src/pages/Auth/Login.tsx:87 msgid "Welcome, log in below" -msgstr "" +msgstr "Bienvenido, inicia sesión a continuación" #: src/pages/Auth/Login.tsx:89 msgid "Register below" @@ -2796,7 +2820,7 @@ msgstr "" msgid "Welcome to your Dashboard{0}" msgstr "" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." msgstr "" @@ -3112,7 +3136,7 @@ msgstr "" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:144 msgid "Primary" -msgstr "" +msgstr "Primario" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:149 msgid "Verified" @@ -3374,17 +3398,17 @@ msgstr "" msgid "System settings" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" -msgstr "" +msgstr "Ingresar" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" -msgstr "" +msgstr "Códigos de barras" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" -msgstr "" +msgstr "Precios" #: src/pages/Index/Settings/SystemSettings.tsx:118 #~ msgid "Physical Units" @@ -3394,50 +3418,50 @@ msgstr "" #~ msgid "Exchange Rates" #~ msgstr "Exchange Rates" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" -msgstr "" +msgstr "Etiquetas" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" -msgstr "" +msgstr "Informes" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:591 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:527 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" -msgstr "" +msgstr "Ordenes de Producción" -#: src/pages/Index/Settings/SystemSettings.tsx:298 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" -msgstr "" +msgstr "Cambiar a Configuración de Usuario" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" -msgstr "" +msgstr "Cuenta" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" -msgstr "" +msgstr "Seguridad" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" -msgstr "" +msgstr "Opciones de visualización" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" msgstr "" @@ -3451,7 +3475,7 @@ msgstr "" #: src/pages/NotFound.tsx:17 msgid "Not Found" -msgstr "" +msgstr "No encontrado" #: src/pages/NotFound.tsx:20 msgid "Sorry, this page is not known or was moved." @@ -3475,8 +3499,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3489,8 +3513,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" @@ -3501,10 +3525,10 @@ msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:134 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3537,10 +3561,10 @@ msgid "Issued By" msgstr "" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:322 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 @@ -3555,8 +3579,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" msgstr "" @@ -3594,7 +3618,7 @@ msgstr "" #~ msgstr "Unlink custom barcode from part" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:535 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" msgstr "" @@ -3638,34 +3662,34 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:613 +#: src/pages/part/PartDetail.tsx:622 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" msgstr "" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:625 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" msgstr "" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" @@ -3676,17 +3700,17 @@ msgstr "" #~ msgstr "Reporting Actions" #: src/pages/build/BuildDetail.tsx:374 -#~ msgid "Print build report" -#~ msgstr "Print build report" - -#: src/pages/build/BuildDetail.tsx:378 msgid "Build Order Actions" msgstr "" -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "Print build report" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" msgstr "" @@ -3720,12 +3744,12 @@ msgstr "" #: src/tables/purchasing/PurchaseOrderTable.tsx:88 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:36 msgid "Supplier" -msgstr "" +msgstr "Proveedor" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" @@ -3733,10 +3757,10 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 @@ -3747,7 +3771,7 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:168 #: src/tables/stock/StockTrackingTable.tsx:183 msgid "Details" -msgstr "" +msgstr "Detalles" #: src/pages/company/CompanyDetail.tsx:174 msgid "Manufactured Parts" @@ -3769,12 +3793,12 @@ msgstr "" msgid "Assigned Stock" msgstr "" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" msgstr "" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" msgstr "" @@ -3804,32 +3828,32 @@ msgid "Manufacturer Part Details" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:487 +#: src/pages/part/PartDetail.tsx:492 msgid "Parameters" -msgstr "" +msgstr "Parámetros" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:560 +#: src/pages/part/PartDetail.tsx:566 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" -msgstr "" +msgstr "Proveedores" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" msgstr "" @@ -3845,7 +3869,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" msgstr "" @@ -3879,7 +3903,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" msgstr "" @@ -3969,85 +3993,85 @@ msgstr "" msgid "Category Details" msgstr "" -#: src/pages/part/PartDetail.tsx:140 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" msgstr "" -#: src/pages/part/PartDetail.tsx:147 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" msgstr "" -#: src/pages/part/PartDetail.tsx:153 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:167 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" msgstr "" -#: src/pages/part/PartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" msgstr "" -#: src/pages/part/PartDetail.tsx:181 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" msgstr "" -#: src/pages/part/PartDetail.tsx:188 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" msgstr "" -#: src/pages/part/PartDetail.tsx:195 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" msgstr "" -#: src/pages/part/PartDetail.tsx:213 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:220 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" msgstr "" -#: src/pages/part/PartDetail.tsx:235 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:243 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:250 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" msgstr "" -#: src/pages/part/PartDetail.tsx:257 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" msgstr "" -#: src/pages/part/PartDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -4063,39 +4087,39 @@ msgstr "" #: src/tables/purchasing/SupplierPartTable.tsx:187 #: src/tables/stock/StockItemTable.tsx:254 msgid "Active" -msgstr "" +msgstr "Activo" -#: src/pages/part/PartDetail.tsx:271 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" msgstr "" -#: src/pages/part/PartDetail.tsx:276 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" msgstr "" -#: src/pages/part/PartDetail.tsx:281 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" msgstr "" -#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:291 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:296 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" msgstr "" -#: src/pages/part/PartDetail.tsx:309 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" msgstr "" @@ -4104,7 +4128,7 @@ msgstr "" #~ msgid "Edit part" #~ msgstr "Edit part" -#: src/pages/part/PartDetail.tsx:314 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" msgstr "" @@ -4116,69 +4140,71 @@ msgstr "" #~ msgid "Delete part" #~ msgstr "Delete part" -#: src/pages/part/PartDetail.tsx:329 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" msgstr "" -#: src/pages/part/PartDetail.tsx:340 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" msgstr "" -#: src/pages/part/PartDetail.tsx:375 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" msgstr "" -#: src/pages/part/PartDetail.tsx:410 +#: src/pages/part/PartDetail.tsx:415 msgid "Stocktake By" msgstr "" -#: src/pages/part/PartDetail.tsx:481 +#: src/pages/part/PartDetail.tsx:486 msgid "Part Details" msgstr "" -#: src/pages/part/PartDetail.tsx:507 +#: src/pages/part/PartDetail.tsx:512 msgid "Variants" msgstr "" -#: src/pages/part/PartDetail.tsx:514 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" msgstr "" -#: src/pages/part/PartDetail.tsx:520 +#: src/pages/part/PartDetail.tsx:526 msgid "Bill of Materials" msgstr "" -#: src/pages/part/PartDetail.tsx:534 +#: src/pages/part/PartDetail.tsx:540 msgid "Used In" msgstr "" -#: src/pages/part/PartDetail.tsx:541 +#: src/pages/part/PartDetail.tsx:547 msgid "Part Pricing" msgstr "" -#: src/pages/part/PartDetail.tsx:547 +#: src/pages/part/PartDetail.tsx:553 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" msgstr "" -#: src/pages/part/PartDetail.tsx:586 +#: src/pages/part/PartDetail.tsx:593 msgid "Scheduling" msgstr "" -#: src/pages/part/PartDetail.tsx:596 +#: src/pages/part/PartDetail.tsx:605 msgid "Test Templates" msgstr "" -#: src/pages/part/PartDetail.tsx:607 +#: src/pages/part/PartDetail.tsx:616 msgid "Related Parts" msgstr "" -#: src/pages/part/PartDetail.tsx:662 -#: src/pages/stock/StockDetail.tsx:151 -#: src/pages/stock/StockDetail.tsx:529 +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 @@ -4186,55 +4212,55 @@ msgstr "" msgid "Available" msgstr "" -#: src/pages/part/PartDetail.tsx:668 +#: src/pages/part/PartDetail.tsx:673 msgid "No Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:674 +#: src/pages/part/PartDetail.tsx:679 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" msgstr "" -#: src/pages/part/PartDetail.tsx:680 -#: src/pages/stock/StockDetail.tsx:512 +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" -msgstr "" +msgstr "En producción" -#: src/pages/part/PartDetail.tsx:699 +#: src/pages/part/PartDetail.tsx:704 msgid "Edit Part" msgstr "" -#: src/pages/part/PartDetail.tsx:706 +#: src/pages/part/PartDetail.tsx:711 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" msgstr "" -#: src/pages/part/PartDetail.tsx:718 +#: src/pages/part/PartDetail.tsx:723 msgid "Delete Part" msgstr "" -#: src/pages/part/PartDetail.tsx:727 +#: src/pages/part/PartDetail.tsx:732 msgid "Deleting this part cannot be reversed" msgstr "" -#: src/pages/part/PartDetail.tsx:765 +#: src/pages/part/PartDetail.tsx:770 #: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" msgstr "" -#: src/pages/part/PartDetail.tsx:773 +#: src/pages/part/PartDetail.tsx:778 msgid "Count part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:784 +#: src/pages/part/PartDetail.tsx:789 msgid "Transfer part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:793 +#: src/pages/part/PartDetail.tsx:798 msgid "Part Actions" msgstr "" @@ -4247,6 +4273,7 @@ msgid "No pricing data found for this part." msgstr "" #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" msgstr "" @@ -4255,54 +4282,32 @@ msgid "Purchase History" msgstr "" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "" - +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 @@ -4311,81 +4316,117 @@ msgstr "" msgid "Total Price" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "Minimum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "Maximum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:25 @@ -4404,33 +4445,33 @@ msgstr "" msgid "Loading pricing data" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "" @@ -4450,23 +4491,23 @@ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" msgstr "" @@ -4477,46 +4518,46 @@ msgstr "" #~ msgstr "Order Currency," #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" msgstr "" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" @@ -4526,17 +4567,17 @@ msgstr "" msgid "Customers" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" msgstr "" @@ -4599,11 +4640,11 @@ msgstr "" msgid "Location Actions" msgstr "" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" msgstr "" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" msgstr "" @@ -4615,15 +4656,15 @@ msgstr "" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "Unlink custom barcode from stock item" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" msgstr "" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" msgstr "" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" msgstr "" @@ -4636,31 +4677,31 @@ msgstr "" #~ msgid "Delete stock item" #~ msgstr "Delete stock item" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" msgstr "" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" msgstr "" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" msgstr "" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" msgstr "" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" msgstr "" @@ -4668,34 +4709,34 @@ msgstr "" #~ msgid "Duplicate stock item" #~ msgstr "Duplicate stock item" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" msgstr "" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" -msgstr "" +msgstr "Contar stock" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" -msgstr "" +msgstr "Agregar stock" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" -msgstr "" +msgstr "Remover stock" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" -msgstr "" +msgstr "Transferir" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" -msgstr "" +msgstr "Transferir stock" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "" @@ -4786,7 +4827,7 @@ msgstr "" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" msgstr "" @@ -5046,11 +5087,11 @@ msgstr "" #: src/tables/part/PartTable.tsx:192 #: src/tables/part/PartVariantTable.tsx:30 msgid "Trackable" -msgstr "" +msgstr "Rastreable" #: src/tables/bom/UsedInTable.tsx:79 msgid "Show trackable assemblies" -msgstr "" +msgstr "Mostrar ensamblajes rastreables" #: src/tables/build/BuildLineTable.tsx:31 #: src/tables/stock/StockItemTable.tsx:270 @@ -5105,14 +5146,14 @@ msgstr "" #: src/tables/build/BuildOrderTable.tsx:109 msgid "Show active orders" -msgstr "" +msgstr "Mostrar órdenes activas" #: src/tables/build/BuildOrderTable.tsx:114 #: src/tables/purchasing/PurchaseOrderTable.tsx:56 #: src/tables/sales/ReturnOrderTable.tsx:47 #: src/tables/sales/SalesOrderTable.tsx:53 msgid "Filter by order status" -msgstr "" +msgstr "Filtrar por estado de la orden" #: src/tables/build/BuildOrderTable.tsx:121 msgid "Show overdue status" @@ -5224,30 +5265,30 @@ msgid "Required Tests" msgstr "" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" msgstr "" #: src/tables/company/AddressTable.tsx:121 #: src/tables/company/AddressTable.tsx:185 msgid "Add Address" -msgstr "" +msgstr "Añadir Dirección" #: src/tables/company/AddressTable.tsx:126 msgid "Address created" -msgstr "" +msgstr "Dirección creada" #: src/tables/company/AddressTable.tsx:135 msgid "Edit Address" -msgstr "" +msgstr "Editar Dirección" #: src/tables/company/AddressTable.tsx:143 msgid "Delete Address" -msgstr "" +msgstr "Eliminar Dirección" #: src/tables/company/AddressTable.tsx:144 msgid "Are you sure you want to delete this address?" -msgstr "" +msgstr "¿Estás seguro de que deseas eliminar esta dirección?" #: src/tables/company/CompanyTable.tsx:71 #~ msgid "New Company" @@ -5276,7 +5317,7 @@ msgstr "" #: src/tables/company/ContactTable.tsx:71 msgid "Edit Contact" -msgstr "" +msgstr "Editar contacto" #: src/tables/company/ContactTable.tsx:78 msgid "Add Contact" @@ -5284,45 +5325,61 @@ msgstr "" #: src/tables/company/ContactTable.tsx:89 msgid "Delete Contact" -msgstr "" +msgstr "Eliminar contacto" #: src/tables/company/ContactTable.tsx:129 msgid "Add contact" -msgstr "" +msgstr "Agregar contacto" #: src/tables/general/AttachmentTable.tsx:130 msgid "File uploaded" -msgstr "" +msgstr "Archivo subido" #: src/tables/general/AttachmentTable.tsx:131 msgid "File {0} uploaded successfully" -msgstr "" +msgstr "Archivo {0} se subió correctamente" #: src/tables/general/AttachmentTable.tsx:142 msgid "Upload Error" -msgstr "" +msgstr "Error al subir" #: src/tables/general/AttachmentTable.tsx:143 msgid "File could not be uploaded" msgstr "" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" msgstr "" @@ -5330,11 +5387,11 @@ msgstr "" #~ msgid "Upload attachment" #~ msgstr "Upload attachment" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" msgstr "" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "" @@ -5625,7 +5682,7 @@ msgstr "" #: src/tables/part/PartTable.tsx:67 msgid "Minimum stock" -msgstr "" +msgstr "Stock mínimo" #: src/tables/part/PartTable.tsx:89 msgid "Build Order Allocations" @@ -5716,75 +5773,75 @@ msgstr "" msgid "No Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 msgid "Required" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:80 +#: src/tables/part/PartTestTemplateTable.tsx:85 msgid "Show required tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:95 +#: src/tables/part/PartTestTemplateTable.tsx:100 msgid "Show tests that require an attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:99 +#: src/tables/part/PartTestTemplateTable.tsx:104 msgid "Include Inherited" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:100 +#: src/tables/part/PartTestTemplateTable.tsx:105 msgid "Show tests from inherited templates" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:104 +#: src/tables/part/PartTestTemplateTable.tsx:109 msgid "Has Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:105 +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" msgstr "" @@ -6142,11 +6199,11 @@ msgstr "" #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:272 msgid "Add line item" -msgstr "" +msgstr "Añadir Artículo de Línea" #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:282 msgid "Receive items" -msgstr "" +msgstr "Recibir artículos" #: src/tables/purchasing/SupplierPartTable.tsx:93 msgid "MPN" @@ -6154,7 +6211,7 @@ msgstr "" #: src/tables/purchasing/SupplierPartTable.tsx:122 msgid "Base units" -msgstr "" +msgstr "Unidades base" #: src/tables/purchasing/SupplierPartTable.tsx:170 msgid "Supplier part created" @@ -6202,11 +6259,11 @@ msgstr "" #: src/tables/settings/CurrencyTable.tsx:28 msgid "Rate" -msgstr "" +msgstr "Tarifa" #: src/tables/settings/CurrencyTable.tsx:40 msgid "Exchange rates updated" -msgstr "" +msgstr "Tipos de cambio actualizados" #: src/tables/settings/CurrencyTable.tsx:46 msgid "Exchange rate update error" @@ -6273,7 +6330,7 @@ msgid "Task ID" msgstr "" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" msgstr "" @@ -6299,7 +6356,7 @@ msgstr "" #: src/tables/settings/GroupTable.tsx:126 msgid "Delete group" -msgstr "" +msgstr "Eliminar grupo" #: src/tables/settings/GroupTable.tsx:127 msgid "Group deleted" @@ -6312,11 +6369,11 @@ msgstr "" #: src/tables/settings/GroupTable.tsx:134 #: src/tables/settings/GroupTable.tsx:146 msgid "Add group" -msgstr "" +msgstr "Agregar grupo" #: src/tables/settings/GroupTable.tsx:158 msgid "Edit group" -msgstr "" +msgstr "Editar grupo" #: src/tables/settings/PendingTasksTable.tsx:36 msgid "Arguments" @@ -6336,7 +6393,7 @@ msgstr "" #: src/tables/settings/ProjectCodeTable.tsx:94 msgid "Add project code" -msgstr "" +msgstr "Agregar código de proyecto" #: src/tables/settings/ScheduledTasksTable.tsx:25 msgid "Last Run" @@ -6470,11 +6527,11 @@ msgstr "" #: src/tables/settings/UserTable.tsx:248 msgid "Added user" -msgstr "" +msgstr "Usuario agregado" #: src/tables/settings/UserTable.tsx:270 msgid "Edit user" -msgstr "" +msgstr "Editar usuario" #: src/tables/stock/LocationTypesTable.tsx:36 #: src/tables/stock/LocationTypesTable.tsx:105 @@ -6679,95 +6736,95 @@ msgstr "" msgid "Delete stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 msgid "Delete Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:289 +#: src/tables/stock/StockItemTestResultTable.tsx:273 msgid "Test result deleted" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:303 +#: src/tables/stock/StockItemTestResultTable.tsx:287 msgid "Test Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" msgstr "" @@ -6822,9 +6879,8 @@ msgstr "" #: src/views/MobileAppView.tsx:31 msgid "Read the docs" -msgstr "" +msgstr "Leer la documentación" #: src/views/MobileAppView.tsx:35 msgid "Ignore and continue to Desktop view" msgstr "" - diff --git a/src/frontend/src/locales/fa/messages.po b/src/frontend/src/locales/fa/messages.po index 9b7d897298..bdc7645960 100644 --- a/src/frontend/src/locales/fa/messages.po +++ b/src/frontend/src/locales/fa/messages.po @@ -8,7 +8,7 @@ msgstr "" "Language: fa\n" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-05-23 11:39\n" +"PO-Revision-Date: 2024-06-19 04:50\n" "Last-Translator: \n" "Language-Team: Persian\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -48,18 +48,18 @@ msgstr "" #: src/components/buttons/PrintingActions.tsx:107 #: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 #: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 -#: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 +#: src/components/nav/SearchDrawer.tsx:427 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" msgstr "" @@ -121,15 +121,15 @@ msgstr "" msgid "No" msgstr "" -#: src/components/details/Details.tsx:303 +#: src/components/details/Details.tsx:305 msgid "No name defined" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copied" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copy" msgstr "" @@ -145,7 +145,7 @@ msgstr "" #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" msgstr "" @@ -207,9 +207,9 @@ msgstr "" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:686 +#: src/pages/part/PartDetail.tsx:691 msgid "Inactive" msgstr "" @@ -248,6 +248,35 @@ msgstr "" msgid "Virtual" msgstr "" +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "" + #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" msgstr "" @@ -334,11 +363,6 @@ msgstr "" msgid "Form Error" msgstr "" -#: src/components/forms/ApiForm.tsx:430 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "" - #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" #~ msgstr "Form Errors Exist" @@ -389,7 +413,7 @@ msgstr "" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." msgstr "" @@ -399,7 +423,7 @@ msgstr "" #~ msgstr "Mail delivery successfull" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" msgstr "" @@ -527,7 +551,7 @@ msgstr "" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:127 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -551,7 +575,6 @@ msgid "Add Host" msgstr "" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" msgstr "" @@ -579,20 +602,20 @@ msgstr "" msgid "State: <0>worker ({0}), <1>plugins{1}" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "" @@ -614,7 +637,7 @@ msgid "Thumbnail" msgstr "" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" msgstr "" @@ -859,7 +882,7 @@ msgid "Close modal" msgstr "" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" msgstr "" @@ -967,7 +990,7 @@ msgstr "" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:295 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" msgstr "" @@ -1031,8 +1054,8 @@ msgid "About" msgstr "" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" @@ -1053,35 +1076,35 @@ msgstr "" msgid "Mark as read" msgstr "" -#: src/components/nav/SearchDrawer.tsx:77 +#: src/components/nav/SearchDrawer.tsx:78 msgid "results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:337 +#: src/components/nav/SearchDrawer.tsx:349 msgid "Enter search text" msgstr "" -#: src/components/nav/SearchDrawer.tsx:364 +#: src/components/nav/SearchDrawer.tsx:376 msgid "Search Options" msgstr "" -#: src/components/nav/SearchDrawer.tsx:367 +#: src/components/nav/SearchDrawer.tsx:379 msgid "Regex search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:377 +#: src/components/nav/SearchDrawer.tsx:389 msgid "Whole word search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:416 +#: src/components/nav/SearchDrawer.tsx:430 msgid "An error occurred during search query" msgstr "" -#: src/components/nav/SearchDrawer.tsx:427 +#: src/components/nav/SearchDrawer.tsx:441 msgid "No results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:430 +#: src/components/nav/SearchDrawer.tsx:444 msgid "No results available for search query" msgstr "" @@ -1100,7 +1123,7 @@ msgstr "" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:832 +#: src/pages/part/PartDetail.tsx:837 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" @@ -1109,11 +1132,11 @@ msgstr "" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:640 +#: src/pages/part/PartDetail.tsx:645 msgid "Parts" msgstr "" @@ -1136,7 +1159,7 @@ msgstr "" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "" @@ -1160,15 +1183,15 @@ msgid "Part Category" msgstr "" #: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 +#: src/pages/Index/Settings/SystemSettings.tsx:165 #: src/pages/part/CategoryDetail.tsx:249 #: src/pages/part/CategoryDetail.tsx:282 -#: src/pages/part/PartDetail.tsx:822 +#: src/pages/part/PartDetail.tsx:827 msgid "Part Categories" msgstr "" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:560 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "" @@ -1188,7 +1211,7 @@ msgstr "" #: src/components/render/ModelType.tsx:82 #: src/pages/stock/LocationDetail.tsx:185 #: src/pages/stock/LocationDetail.tsx:361 -#: src/pages/stock/StockDetail.tsx:552 +#: src/pages/stock/StockDetail.tsx:554 msgid "Stock Locations" msgstr "" @@ -1227,7 +1250,7 @@ msgid "Build Lines" msgstr "" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" msgstr "" @@ -1250,17 +1273,17 @@ msgid "Project Codes" msgstr "" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" msgstr "" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:573 +#: src/pages/part/PartDetail.tsx:579 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" msgstr "" @@ -1275,16 +1298,16 @@ msgstr "" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" msgstr "" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:579 +#: src/pages/part/PartDetail.tsx:586 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" msgstr "" @@ -1298,13 +1321,13 @@ msgid "Sales Order Shipments" msgstr "" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" msgstr "" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" @@ -1322,8 +1345,8 @@ msgstr "" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" msgstr "" @@ -1341,7 +1364,7 @@ msgid "Owners" msgstr "" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" msgstr "" @@ -1385,26 +1408,27 @@ msgstr "" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:493 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 #: src/pages/stock/LocationDetail.tsx:345 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" msgstr "" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:517 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" msgstr "" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:523 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 @@ -1844,16 +1868,12 @@ msgid "Getting started" msgstr "" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Failed to upload image" +#~ msgstr "Failed to upload image" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "" +#~ msgid "Notes saved" +#~ msgstr "Notes saved" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" @@ -1972,42 +1992,46 @@ msgid "Portuguese (Brazilian)" msgstr "" #: src/contexts/LanguageContext.tsx:43 -msgid "Russian" +msgid "Romanian" msgstr "" #: src/contexts/LanguageContext.tsx:44 -msgid "Slovak" +msgid "Russian" msgstr "" #: src/contexts/LanguageContext.tsx:45 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: src/contexts/LanguageContext.tsx:46 -msgid "Swedish" +msgid "Slovenian" msgstr "" #: src/contexts/LanguageContext.tsx:47 -msgid "Thai" +msgid "Swedish" msgstr "" #: src/contexts/LanguageContext.tsx:48 -msgid "Turkish" +msgid "Thai" msgstr "" #: src/contexts/LanguageContext.tsx:49 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: src/contexts/LanguageContext.tsx:50 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: src/contexts/LanguageContext.tsx:51 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: src/contexts/LanguageContext.tsx:52 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" msgstr "" @@ -2021,7 +2045,7 @@ msgstr "" #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" msgstr "" @@ -2160,10 +2184,10 @@ msgstr "" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" msgstr "" @@ -2171,15 +2195,15 @@ msgstr "" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" msgstr "" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" msgstr "" @@ -2464,7 +2488,7 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" @@ -2515,7 +2539,7 @@ msgstr "" #~ msgstr "Stock item updated" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" @@ -2537,8 +2561,8 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:207 -#: src/pages/part/PartDetail.tsx:656 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" msgstr "" @@ -2560,14 +2584,14 @@ msgid "Actions" msgstr "" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" msgstr "" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" msgstr "" @@ -2580,12 +2604,12 @@ msgid "Remove Stock" msgstr "" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:788 msgid "Transfer Stock" msgstr "" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:777 msgid "Count Stock" msgstr "" @@ -2625,23 +2649,14 @@ msgstr "" #~ msgid "You have been logged out" #~ msgstr "You have been logged out" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" msgstr "" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" msgstr "" -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "" - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "" - #: src/functions/auth.tsx:141 #~ msgid "Already logged in" #~ msgstr "Already logged in" @@ -2654,11 +2669,20 @@ msgstr "" #~ msgid "Found an existing login - welcome back!" #~ msgstr "Found an existing login - welcome back!" -#: src/functions/auth.tsx:153 +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "" + +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "" + +#: src/functions/auth.tsx:195 msgid "Logged In" msgstr "" -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:196 msgid "Successfully logged in" msgstr "" @@ -2796,7 +2820,7 @@ msgstr "" msgid "Welcome to your Dashboard{0}" msgstr "" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." msgstr "" @@ -3374,15 +3398,15 @@ msgstr "" msgid "System settings" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" msgstr "" @@ -3394,50 +3418,50 @@ msgstr "" #~ msgid "Exchange Rates" #~ msgstr "Exchange Rates" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:591 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:527 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:298 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" msgstr "" @@ -3475,8 +3499,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3489,8 +3513,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" @@ -3501,10 +3525,10 @@ msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:134 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3537,10 +3561,10 @@ msgid "Issued By" msgstr "" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:322 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 @@ -3555,8 +3579,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" msgstr "" @@ -3594,7 +3618,7 @@ msgstr "" #~ msgstr "Unlink custom barcode from part" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:535 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" msgstr "" @@ -3638,34 +3662,34 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:613 +#: src/pages/part/PartDetail.tsx:622 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" msgstr "" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:625 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" msgstr "" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" @@ -3676,17 +3700,17 @@ msgstr "" #~ msgstr "Reporting Actions" #: src/pages/build/BuildDetail.tsx:374 -#~ msgid "Print build report" -#~ msgstr "Print build report" - -#: src/pages/build/BuildDetail.tsx:378 msgid "Build Order Actions" msgstr "" -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "Print build report" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" msgstr "" @@ -3725,7 +3749,7 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" @@ -3733,10 +3757,10 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 @@ -3769,12 +3793,12 @@ msgstr "" msgid "Assigned Stock" msgstr "" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" msgstr "" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" msgstr "" @@ -3804,32 +3828,32 @@ msgid "Manufacturer Part Details" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:487 +#: src/pages/part/PartDetail.tsx:492 msgid "Parameters" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:560 +#: src/pages/part/PartDetail.tsx:566 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" msgstr "" @@ -3845,7 +3869,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" msgstr "" @@ -3879,7 +3903,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" msgstr "" @@ -3969,85 +3993,85 @@ msgstr "" msgid "Category Details" msgstr "" -#: src/pages/part/PartDetail.tsx:140 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" msgstr "" -#: src/pages/part/PartDetail.tsx:147 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" msgstr "" -#: src/pages/part/PartDetail.tsx:153 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:167 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" msgstr "" -#: src/pages/part/PartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" msgstr "" -#: src/pages/part/PartDetail.tsx:181 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" msgstr "" -#: src/pages/part/PartDetail.tsx:188 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" msgstr "" -#: src/pages/part/PartDetail.tsx:195 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" msgstr "" -#: src/pages/part/PartDetail.tsx:213 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:220 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" msgstr "" -#: src/pages/part/PartDetail.tsx:235 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:243 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:250 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" msgstr "" -#: src/pages/part/PartDetail.tsx:257 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" msgstr "" -#: src/pages/part/PartDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -4065,37 +4089,37 @@ msgstr "" msgid "Active" msgstr "" -#: src/pages/part/PartDetail.tsx:271 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" msgstr "" -#: src/pages/part/PartDetail.tsx:276 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" msgstr "" -#: src/pages/part/PartDetail.tsx:281 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" msgstr "" -#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:291 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:296 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" msgstr "" -#: src/pages/part/PartDetail.tsx:309 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" msgstr "" @@ -4104,7 +4128,7 @@ msgstr "" #~ msgid "Edit part" #~ msgstr "Edit part" -#: src/pages/part/PartDetail.tsx:314 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" msgstr "" @@ -4116,69 +4140,71 @@ msgstr "" #~ msgid "Delete part" #~ msgstr "Delete part" -#: src/pages/part/PartDetail.tsx:329 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" msgstr "" -#: src/pages/part/PartDetail.tsx:340 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" msgstr "" -#: src/pages/part/PartDetail.tsx:375 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" msgstr "" -#: src/pages/part/PartDetail.tsx:410 +#: src/pages/part/PartDetail.tsx:415 msgid "Stocktake By" msgstr "" -#: src/pages/part/PartDetail.tsx:481 +#: src/pages/part/PartDetail.tsx:486 msgid "Part Details" msgstr "" -#: src/pages/part/PartDetail.tsx:507 +#: src/pages/part/PartDetail.tsx:512 msgid "Variants" msgstr "" -#: src/pages/part/PartDetail.tsx:514 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" msgstr "" -#: src/pages/part/PartDetail.tsx:520 +#: src/pages/part/PartDetail.tsx:526 msgid "Bill of Materials" msgstr "" -#: src/pages/part/PartDetail.tsx:534 +#: src/pages/part/PartDetail.tsx:540 msgid "Used In" msgstr "" -#: src/pages/part/PartDetail.tsx:541 +#: src/pages/part/PartDetail.tsx:547 msgid "Part Pricing" msgstr "" -#: src/pages/part/PartDetail.tsx:547 +#: src/pages/part/PartDetail.tsx:553 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" msgstr "" -#: src/pages/part/PartDetail.tsx:586 +#: src/pages/part/PartDetail.tsx:593 msgid "Scheduling" msgstr "" -#: src/pages/part/PartDetail.tsx:596 +#: src/pages/part/PartDetail.tsx:605 msgid "Test Templates" msgstr "" -#: src/pages/part/PartDetail.tsx:607 +#: src/pages/part/PartDetail.tsx:616 msgid "Related Parts" msgstr "" -#: src/pages/part/PartDetail.tsx:662 -#: src/pages/stock/StockDetail.tsx:151 -#: src/pages/stock/StockDetail.tsx:529 +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 @@ -4186,55 +4212,55 @@ msgstr "" msgid "Available" msgstr "" -#: src/pages/part/PartDetail.tsx:668 +#: src/pages/part/PartDetail.tsx:673 msgid "No Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:674 +#: src/pages/part/PartDetail.tsx:679 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" msgstr "" -#: src/pages/part/PartDetail.tsx:680 -#: src/pages/stock/StockDetail.tsx:512 +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" msgstr "" -#: src/pages/part/PartDetail.tsx:699 +#: src/pages/part/PartDetail.tsx:704 msgid "Edit Part" msgstr "" -#: src/pages/part/PartDetail.tsx:706 +#: src/pages/part/PartDetail.tsx:711 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" msgstr "" -#: src/pages/part/PartDetail.tsx:718 +#: src/pages/part/PartDetail.tsx:723 msgid "Delete Part" msgstr "" -#: src/pages/part/PartDetail.tsx:727 +#: src/pages/part/PartDetail.tsx:732 msgid "Deleting this part cannot be reversed" msgstr "" -#: src/pages/part/PartDetail.tsx:765 +#: src/pages/part/PartDetail.tsx:770 #: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" msgstr "" -#: src/pages/part/PartDetail.tsx:773 +#: src/pages/part/PartDetail.tsx:778 msgid "Count part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:784 +#: src/pages/part/PartDetail.tsx:789 msgid "Transfer part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:793 +#: src/pages/part/PartDetail.tsx:798 msgid "Part Actions" msgstr "" @@ -4247,6 +4273,7 @@ msgid "No pricing data found for this part." msgstr "" #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" msgstr "" @@ -4255,54 +4282,32 @@ msgid "Purchase History" msgstr "" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "" - +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 @@ -4311,81 +4316,117 @@ msgstr "" msgid "Total Price" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "Minimum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "Maximum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:25 @@ -4404,33 +4445,33 @@ msgstr "" msgid "Loading pricing data" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "" @@ -4450,23 +4491,23 @@ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" msgstr "" @@ -4477,46 +4518,46 @@ msgstr "" #~ msgstr "Order Currency," #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" msgstr "" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" @@ -4526,17 +4567,17 @@ msgstr "" msgid "Customers" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" msgstr "" @@ -4599,11 +4640,11 @@ msgstr "" msgid "Location Actions" msgstr "" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" msgstr "" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" msgstr "" @@ -4615,15 +4656,15 @@ msgstr "" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "Unlink custom barcode from stock item" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" msgstr "" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" msgstr "" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" msgstr "" @@ -4636,31 +4677,31 @@ msgstr "" #~ msgid "Delete stock item" #~ msgstr "Delete stock item" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" msgstr "" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" msgstr "" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" msgstr "" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" msgstr "" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" msgstr "" @@ -4668,34 +4709,34 @@ msgstr "" #~ msgid "Duplicate stock item" #~ msgstr "Duplicate stock item" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" msgstr "" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" msgstr "" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "" @@ -4786,7 +4827,7 @@ msgstr "" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" msgstr "" @@ -5224,7 +5265,7 @@ msgid "Required Tests" msgstr "" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" msgstr "" @@ -5306,23 +5347,39 @@ msgstr "" msgid "File could not be uploaded" msgstr "" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" msgstr "" @@ -5330,11 +5387,11 @@ msgstr "" #~ msgid "Upload attachment" #~ msgstr "Upload attachment" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" msgstr "" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "" @@ -5716,75 +5773,75 @@ msgstr "" msgid "No Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 msgid "Required" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:80 +#: src/tables/part/PartTestTemplateTable.tsx:85 msgid "Show required tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:95 +#: src/tables/part/PartTestTemplateTable.tsx:100 msgid "Show tests that require an attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:99 +#: src/tables/part/PartTestTemplateTable.tsx:104 msgid "Include Inherited" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:100 +#: src/tables/part/PartTestTemplateTable.tsx:105 msgid "Show tests from inherited templates" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:104 +#: src/tables/part/PartTestTemplateTable.tsx:109 msgid "Has Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:105 +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" msgstr "" @@ -6273,7 +6330,7 @@ msgid "Task ID" msgstr "" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" msgstr "" @@ -6679,95 +6736,95 @@ msgstr "" msgid "Delete stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 msgid "Delete Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:289 +#: src/tables/stock/StockItemTestResultTable.tsx:273 msgid "Test result deleted" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:303 +#: src/tables/stock/StockItemTestResultTable.tsx:287 msgid "Test Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" msgstr "" diff --git a/src/frontend/src/locales/fi/messages.po b/src/frontend/src/locales/fi/messages.po index 3e31431bb3..980ee2ffd2 100644 --- a/src/frontend/src/locales/fi/messages.po +++ b/src/frontend/src/locales/fi/messages.po @@ -8,7 +8,7 @@ msgstr "" "Language: fi\n" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-05-23 11:38\n" +"PO-Revision-Date: 2024-06-19 04:49\n" "Last-Translator: \n" "Language-Team: Finnish\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -48,18 +48,18 @@ msgstr "" #: src/components/buttons/PrintingActions.tsx:107 #: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 #: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 -#: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 +#: src/components/nav/SearchDrawer.tsx:427 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" msgstr "" @@ -121,15 +121,15 @@ msgstr "" msgid "No" msgstr "" -#: src/components/details/Details.tsx:303 +#: src/components/details/Details.tsx:305 msgid "No name defined" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copied" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copy" msgstr "" @@ -145,7 +145,7 @@ msgstr "" #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" msgstr "" @@ -207,9 +207,9 @@ msgstr "" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:686 +#: src/pages/part/PartDetail.tsx:691 msgid "Inactive" msgstr "" @@ -248,6 +248,35 @@ msgstr "" msgid "Virtual" msgstr "" +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "" + #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" msgstr "" @@ -334,11 +363,6 @@ msgstr "" msgid "Form Error" msgstr "" -#: src/components/forms/ApiForm.tsx:430 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "" - #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" #~ msgstr "Form Errors Exist" @@ -389,7 +413,7 @@ msgstr "" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." msgstr "" @@ -399,7 +423,7 @@ msgstr "" #~ msgstr "Mail delivery successfull" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" msgstr "" @@ -527,7 +551,7 @@ msgstr "" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:127 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -551,7 +575,6 @@ msgid "Add Host" msgstr "" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" msgstr "" @@ -579,20 +602,20 @@ msgstr "" msgid "State: <0>worker ({0}), <1>plugins{1}" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "" @@ -614,7 +637,7 @@ msgid "Thumbnail" msgstr "" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" msgstr "" @@ -859,7 +882,7 @@ msgid "Close modal" msgstr "" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" msgstr "" @@ -967,7 +990,7 @@ msgstr "" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:295 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" msgstr "" @@ -1031,8 +1054,8 @@ msgid "About" msgstr "" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" @@ -1053,35 +1076,35 @@ msgstr "" msgid "Mark as read" msgstr "" -#: src/components/nav/SearchDrawer.tsx:77 +#: src/components/nav/SearchDrawer.tsx:78 msgid "results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:337 +#: src/components/nav/SearchDrawer.tsx:349 msgid "Enter search text" msgstr "" -#: src/components/nav/SearchDrawer.tsx:364 +#: src/components/nav/SearchDrawer.tsx:376 msgid "Search Options" msgstr "" -#: src/components/nav/SearchDrawer.tsx:367 +#: src/components/nav/SearchDrawer.tsx:379 msgid "Regex search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:377 +#: src/components/nav/SearchDrawer.tsx:389 msgid "Whole word search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:416 +#: src/components/nav/SearchDrawer.tsx:430 msgid "An error occurred during search query" msgstr "" -#: src/components/nav/SearchDrawer.tsx:427 +#: src/components/nav/SearchDrawer.tsx:441 msgid "No results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:430 +#: src/components/nav/SearchDrawer.tsx:444 msgid "No results available for search query" msgstr "" @@ -1100,7 +1123,7 @@ msgstr "" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:832 +#: src/pages/part/PartDetail.tsx:837 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" @@ -1109,11 +1132,11 @@ msgstr "" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:640 +#: src/pages/part/PartDetail.tsx:645 msgid "Parts" msgstr "" @@ -1136,7 +1159,7 @@ msgstr "" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "" @@ -1160,15 +1183,15 @@ msgid "Part Category" msgstr "" #: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 +#: src/pages/Index/Settings/SystemSettings.tsx:165 #: src/pages/part/CategoryDetail.tsx:249 #: src/pages/part/CategoryDetail.tsx:282 -#: src/pages/part/PartDetail.tsx:822 +#: src/pages/part/PartDetail.tsx:827 msgid "Part Categories" msgstr "" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:560 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "" @@ -1188,7 +1211,7 @@ msgstr "" #: src/components/render/ModelType.tsx:82 #: src/pages/stock/LocationDetail.tsx:185 #: src/pages/stock/LocationDetail.tsx:361 -#: src/pages/stock/StockDetail.tsx:552 +#: src/pages/stock/StockDetail.tsx:554 msgid "Stock Locations" msgstr "" @@ -1227,7 +1250,7 @@ msgid "Build Lines" msgstr "" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" msgstr "" @@ -1250,17 +1273,17 @@ msgid "Project Codes" msgstr "" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" msgstr "" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:573 +#: src/pages/part/PartDetail.tsx:579 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" msgstr "" @@ -1275,16 +1298,16 @@ msgstr "" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" msgstr "" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:579 +#: src/pages/part/PartDetail.tsx:586 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" msgstr "" @@ -1298,13 +1321,13 @@ msgid "Sales Order Shipments" msgstr "" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" msgstr "" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" @@ -1322,8 +1345,8 @@ msgstr "" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" msgstr "" @@ -1341,7 +1364,7 @@ msgid "Owners" msgstr "" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" msgstr "" @@ -1385,26 +1408,27 @@ msgstr "" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:493 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 #: src/pages/stock/LocationDetail.tsx:345 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" msgstr "" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:517 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" msgstr "" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:523 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 @@ -1844,16 +1868,12 @@ msgid "Getting started" msgstr "" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Failed to upload image" +#~ msgstr "Failed to upload image" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "" +#~ msgid "Notes saved" +#~ msgstr "Notes saved" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" @@ -1972,42 +1992,46 @@ msgid "Portuguese (Brazilian)" msgstr "" #: src/contexts/LanguageContext.tsx:43 -msgid "Russian" +msgid "Romanian" msgstr "" #: src/contexts/LanguageContext.tsx:44 -msgid "Slovak" +msgid "Russian" msgstr "" #: src/contexts/LanguageContext.tsx:45 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: src/contexts/LanguageContext.tsx:46 -msgid "Swedish" +msgid "Slovenian" msgstr "" #: src/contexts/LanguageContext.tsx:47 -msgid "Thai" +msgid "Swedish" msgstr "" #: src/contexts/LanguageContext.tsx:48 -msgid "Turkish" +msgid "Thai" msgstr "" #: src/contexts/LanguageContext.tsx:49 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: src/contexts/LanguageContext.tsx:50 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: src/contexts/LanguageContext.tsx:51 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: src/contexts/LanguageContext.tsx:52 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" msgstr "" @@ -2021,7 +2045,7 @@ msgstr "" #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" msgstr "" @@ -2160,10 +2184,10 @@ msgstr "" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" msgstr "" @@ -2171,15 +2195,15 @@ msgstr "" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" msgstr "" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" msgstr "" @@ -2464,7 +2488,7 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" @@ -2515,7 +2539,7 @@ msgstr "" #~ msgstr "Stock item updated" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" @@ -2537,8 +2561,8 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:207 -#: src/pages/part/PartDetail.tsx:656 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" msgstr "" @@ -2560,14 +2584,14 @@ msgid "Actions" msgstr "" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" msgstr "" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" msgstr "" @@ -2580,12 +2604,12 @@ msgid "Remove Stock" msgstr "" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:788 msgid "Transfer Stock" msgstr "" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:777 msgid "Count Stock" msgstr "" @@ -2625,23 +2649,14 @@ msgstr "" #~ msgid "You have been logged out" #~ msgstr "You have been logged out" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" msgstr "" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" msgstr "" -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "" - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "" - #: src/functions/auth.tsx:141 #~ msgid "Already logged in" #~ msgstr "Already logged in" @@ -2654,11 +2669,20 @@ msgstr "" #~ msgid "Found an existing login - welcome back!" #~ msgstr "Found an existing login - welcome back!" -#: src/functions/auth.tsx:153 +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "" + +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "" + +#: src/functions/auth.tsx:195 msgid "Logged In" msgstr "" -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:196 msgid "Successfully logged in" msgstr "" @@ -2796,7 +2820,7 @@ msgstr "" msgid "Welcome to your Dashboard{0}" msgstr "" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." msgstr "" @@ -3374,15 +3398,15 @@ msgstr "" msgid "System settings" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" msgstr "" @@ -3394,50 +3418,50 @@ msgstr "" #~ msgid "Exchange Rates" #~ msgstr "Exchange Rates" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:591 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:527 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:298 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" msgstr "" @@ -3475,8 +3499,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3489,8 +3513,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" @@ -3501,10 +3525,10 @@ msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:134 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3537,10 +3561,10 @@ msgid "Issued By" msgstr "" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:322 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 @@ -3555,8 +3579,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" msgstr "" @@ -3594,7 +3618,7 @@ msgstr "" #~ msgstr "Unlink custom barcode from part" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:535 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" msgstr "" @@ -3638,34 +3662,34 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:613 +#: src/pages/part/PartDetail.tsx:622 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" msgstr "" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:625 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" msgstr "" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" @@ -3676,17 +3700,17 @@ msgstr "" #~ msgstr "Reporting Actions" #: src/pages/build/BuildDetail.tsx:374 -#~ msgid "Print build report" -#~ msgstr "Print build report" - -#: src/pages/build/BuildDetail.tsx:378 msgid "Build Order Actions" msgstr "" -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "Print build report" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" msgstr "" @@ -3725,7 +3749,7 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" @@ -3733,10 +3757,10 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 @@ -3769,12 +3793,12 @@ msgstr "" msgid "Assigned Stock" msgstr "" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" msgstr "" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" msgstr "" @@ -3804,32 +3828,32 @@ msgid "Manufacturer Part Details" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:487 +#: src/pages/part/PartDetail.tsx:492 msgid "Parameters" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:560 +#: src/pages/part/PartDetail.tsx:566 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" msgstr "" @@ -3845,7 +3869,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" msgstr "" @@ -3879,7 +3903,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" msgstr "" @@ -3969,85 +3993,85 @@ msgstr "" msgid "Category Details" msgstr "" -#: src/pages/part/PartDetail.tsx:140 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" msgstr "" -#: src/pages/part/PartDetail.tsx:147 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" msgstr "" -#: src/pages/part/PartDetail.tsx:153 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:167 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" msgstr "" -#: src/pages/part/PartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" msgstr "" -#: src/pages/part/PartDetail.tsx:181 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" msgstr "" -#: src/pages/part/PartDetail.tsx:188 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" msgstr "" -#: src/pages/part/PartDetail.tsx:195 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" msgstr "" -#: src/pages/part/PartDetail.tsx:213 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:220 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" msgstr "" -#: src/pages/part/PartDetail.tsx:235 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:243 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:250 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" msgstr "" -#: src/pages/part/PartDetail.tsx:257 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" msgstr "" -#: src/pages/part/PartDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -4065,37 +4089,37 @@ msgstr "" msgid "Active" msgstr "" -#: src/pages/part/PartDetail.tsx:271 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" msgstr "" -#: src/pages/part/PartDetail.tsx:276 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" msgstr "" -#: src/pages/part/PartDetail.tsx:281 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" msgstr "" -#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:291 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:296 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" msgstr "" -#: src/pages/part/PartDetail.tsx:309 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" msgstr "" @@ -4104,7 +4128,7 @@ msgstr "" #~ msgid "Edit part" #~ msgstr "Edit part" -#: src/pages/part/PartDetail.tsx:314 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" msgstr "" @@ -4116,69 +4140,71 @@ msgstr "" #~ msgid "Delete part" #~ msgstr "Delete part" -#: src/pages/part/PartDetail.tsx:329 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" msgstr "" -#: src/pages/part/PartDetail.tsx:340 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" msgstr "" -#: src/pages/part/PartDetail.tsx:375 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" msgstr "" -#: src/pages/part/PartDetail.tsx:410 +#: src/pages/part/PartDetail.tsx:415 msgid "Stocktake By" msgstr "" -#: src/pages/part/PartDetail.tsx:481 +#: src/pages/part/PartDetail.tsx:486 msgid "Part Details" msgstr "" -#: src/pages/part/PartDetail.tsx:507 +#: src/pages/part/PartDetail.tsx:512 msgid "Variants" msgstr "" -#: src/pages/part/PartDetail.tsx:514 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" msgstr "" -#: src/pages/part/PartDetail.tsx:520 +#: src/pages/part/PartDetail.tsx:526 msgid "Bill of Materials" msgstr "" -#: src/pages/part/PartDetail.tsx:534 +#: src/pages/part/PartDetail.tsx:540 msgid "Used In" msgstr "" -#: src/pages/part/PartDetail.tsx:541 +#: src/pages/part/PartDetail.tsx:547 msgid "Part Pricing" msgstr "" -#: src/pages/part/PartDetail.tsx:547 +#: src/pages/part/PartDetail.tsx:553 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" msgstr "" -#: src/pages/part/PartDetail.tsx:586 +#: src/pages/part/PartDetail.tsx:593 msgid "Scheduling" msgstr "" -#: src/pages/part/PartDetail.tsx:596 +#: src/pages/part/PartDetail.tsx:605 msgid "Test Templates" msgstr "" -#: src/pages/part/PartDetail.tsx:607 +#: src/pages/part/PartDetail.tsx:616 msgid "Related Parts" msgstr "" -#: src/pages/part/PartDetail.tsx:662 -#: src/pages/stock/StockDetail.tsx:151 -#: src/pages/stock/StockDetail.tsx:529 +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 @@ -4186,55 +4212,55 @@ msgstr "" msgid "Available" msgstr "" -#: src/pages/part/PartDetail.tsx:668 +#: src/pages/part/PartDetail.tsx:673 msgid "No Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:674 +#: src/pages/part/PartDetail.tsx:679 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" msgstr "" -#: src/pages/part/PartDetail.tsx:680 -#: src/pages/stock/StockDetail.tsx:512 +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" msgstr "" -#: src/pages/part/PartDetail.tsx:699 +#: src/pages/part/PartDetail.tsx:704 msgid "Edit Part" msgstr "" -#: src/pages/part/PartDetail.tsx:706 +#: src/pages/part/PartDetail.tsx:711 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" msgstr "" -#: src/pages/part/PartDetail.tsx:718 +#: src/pages/part/PartDetail.tsx:723 msgid "Delete Part" msgstr "" -#: src/pages/part/PartDetail.tsx:727 +#: src/pages/part/PartDetail.tsx:732 msgid "Deleting this part cannot be reversed" msgstr "" -#: src/pages/part/PartDetail.tsx:765 +#: src/pages/part/PartDetail.tsx:770 #: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" msgstr "" -#: src/pages/part/PartDetail.tsx:773 +#: src/pages/part/PartDetail.tsx:778 msgid "Count part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:784 +#: src/pages/part/PartDetail.tsx:789 msgid "Transfer part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:793 +#: src/pages/part/PartDetail.tsx:798 msgid "Part Actions" msgstr "" @@ -4247,6 +4273,7 @@ msgid "No pricing data found for this part." msgstr "" #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" msgstr "" @@ -4255,54 +4282,32 @@ msgid "Purchase History" msgstr "" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "" - +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 @@ -4311,81 +4316,117 @@ msgstr "" msgid "Total Price" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "Minimum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "Maximum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:25 @@ -4404,33 +4445,33 @@ msgstr "" msgid "Loading pricing data" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "" @@ -4450,23 +4491,23 @@ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" msgstr "" @@ -4477,46 +4518,46 @@ msgstr "" #~ msgstr "Order Currency," #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" msgstr "" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" @@ -4526,17 +4567,17 @@ msgstr "" msgid "Customers" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" msgstr "" @@ -4599,11 +4640,11 @@ msgstr "" msgid "Location Actions" msgstr "" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" msgstr "" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" msgstr "" @@ -4615,15 +4656,15 @@ msgstr "" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "Unlink custom barcode from stock item" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" msgstr "" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" msgstr "" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" msgstr "" @@ -4636,31 +4677,31 @@ msgstr "" #~ msgid "Delete stock item" #~ msgstr "Delete stock item" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" msgstr "" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" msgstr "" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" msgstr "" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" msgstr "" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" msgstr "" @@ -4668,34 +4709,34 @@ msgstr "" #~ msgid "Duplicate stock item" #~ msgstr "Duplicate stock item" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" msgstr "" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" msgstr "" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "" @@ -4786,7 +4827,7 @@ msgstr "" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" msgstr "" @@ -5224,7 +5265,7 @@ msgid "Required Tests" msgstr "" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" msgstr "" @@ -5306,23 +5347,39 @@ msgstr "" msgid "File could not be uploaded" msgstr "" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" msgstr "" @@ -5330,11 +5387,11 @@ msgstr "" #~ msgid "Upload attachment" #~ msgstr "Upload attachment" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" msgstr "" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "" @@ -5716,75 +5773,75 @@ msgstr "" msgid "No Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 msgid "Required" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:80 +#: src/tables/part/PartTestTemplateTable.tsx:85 msgid "Show required tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:95 +#: src/tables/part/PartTestTemplateTable.tsx:100 msgid "Show tests that require an attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:99 +#: src/tables/part/PartTestTemplateTable.tsx:104 msgid "Include Inherited" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:100 +#: src/tables/part/PartTestTemplateTable.tsx:105 msgid "Show tests from inherited templates" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:104 +#: src/tables/part/PartTestTemplateTable.tsx:109 msgid "Has Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:105 +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" msgstr "" @@ -6273,7 +6330,7 @@ msgid "Task ID" msgstr "" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" msgstr "" @@ -6679,95 +6736,95 @@ msgstr "" msgid "Delete stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 msgid "Delete Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:289 +#: src/tables/stock/StockItemTestResultTable.tsx:273 msgid "Test result deleted" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:303 +#: src/tables/stock/StockItemTestResultTable.tsx:287 msgid "Test Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" msgstr "" diff --git a/src/frontend/src/locales/fr/messages.po b/src/frontend/src/locales/fr/messages.po index 9a876ad072..227a71f050 100644 --- a/src/frontend/src/locales/fr/messages.po +++ b/src/frontend/src/locales/fr/messages.po @@ -8,7 +8,7 @@ msgstr "" "Language: fr\n" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-05-23 11:38\n" +"PO-Revision-Date: 2024-06-19 04:49\n" "Last-Translator: \n" "Language-Team: French\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" @@ -20,11 +20,11 @@ msgstr "" #: src/components/Boundary.tsx:12 msgid "Error rendering component" -msgstr "" +msgstr "Erreur lors de l'affichage de l'application" #: src/components/Boundary.tsx:14 msgid "An error occurred while rendering this component. Refer to the console for more information." -msgstr "" +msgstr "Une erreur s'est produite lors du rendu de ce composant. Reportez-vous à la console pour plus d'informations." #: src/components/DashboardItemProxy.tsx:34 msgid "Title" @@ -32,7 +32,7 @@ msgstr "Titre" #: src/components/buttons/AdminButton.tsx:83 msgid "Open in admin interface" -msgstr "" +msgstr "Ouvrir dans l'interface d'administration" #: src/components/buttons/CopyButton.tsx:18 msgid "Copy to clipboard" @@ -40,56 +40,56 @@ msgstr "Copier dans le Presse-papier" #: src/components/buttons/PrintingActions.tsx:95 msgid "Print Label" -msgstr "" +msgstr "Imprimer l'étiquette" #: src/components/buttons/PrintingActions.tsx:101 msgid "Label printing completed successfully" -msgstr "" +msgstr "Impression terminée avec succès" #: src/components/buttons/PrintingActions.tsx:107 #: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 #: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 -#: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 +#: src/components/nav/SearchDrawer.tsx:427 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" msgstr "Erreur" #: src/components/buttons/PrintingActions.tsx:108 msgid "The label could not be generated" -msgstr "" +msgstr "L'étiquette n'a pas pu être générée" #: src/components/buttons/PrintingActions.tsx:123 msgid "Print Report" -msgstr "" +msgstr "Imprimer le rapport" #: src/components/buttons/PrintingActions.tsx:139 msgid "Report printing completed successfully" -msgstr "" +msgstr "Impression terminée avec succès" #: src/components/buttons/PrintingActions.tsx:145 msgid "The report could not be generated" -msgstr "" +msgstr "Le rapport n'a pas pu être généré" #: src/components/buttons/PrintingActions.tsx:173 msgid "Printing Actions" -msgstr "" +msgstr "Options d'impression" #: src/components/buttons/PrintingActions.tsx:178 msgid "Print Labels" -msgstr "" +msgstr "Imprimer les étiquettes" #: src/components/buttons/PrintingActions.tsx:184 msgid "Print Reports" -msgstr "" +msgstr "Imprimer les rapports" #: src/components/buttons/ScanButton.tsx:15 msgid "Scan QR code" @@ -97,19 +97,19 @@ msgstr "Scanner le QR code" #: src/components/buttons/ScanButton.tsx:20 msgid "Open QR code scanner" -msgstr "" +msgstr "Ouvrir le scanner de code QR" #: src/components/buttons/SpotlightButton.tsx:14 msgid "Open spotlight" -msgstr "" +msgstr "Ouvrir Spotlight" #: src/components/buttons/YesNoButton.tsx:16 msgid "Pass" -msgstr "" +msgstr "Réussi" #: src/components/buttons/YesNoButton.tsx:17 msgid "Fail" -msgstr "" +msgstr "Échec" #: src/components/buttons/YesNoButton.tsx:32 #: src/tables/Filter.tsx:51 @@ -121,17 +121,17 @@ msgstr "Oui" msgid "No" msgstr "Non" -#: src/components/details/Details.tsx:303 +#: src/components/details/Details.tsx:305 msgid "No name defined" -msgstr "" +msgstr "Aucun nom défini" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copied" -msgstr "" +msgstr "Copié" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copy" -msgstr "" +msgstr "Copier" #: src/components/details/DetailsImage.tsx:65 msgid "Remove Image" @@ -145,7 +145,7 @@ msgstr "Supprimer l'image associée de cet élément ?" #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" msgstr "Supprimer" @@ -187,7 +187,7 @@ msgstr "Sélectionner parmi les images existantes" #: src/components/details/DetailsImage.tsx:275 msgid "Select Image" -msgstr "" +msgstr "Sélectionner une Image" #: src/components/details/DetailsImage.tsx:287 msgid "Upload new image" @@ -203,15 +203,15 @@ msgstr "Supprimer l'image" #: src/components/details/PartIcons.tsx:28 msgid "Part is not active" -msgstr "" +msgstr "La pièce n'est pas active" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:686 +#: src/pages/part/PartDetail.tsx:691 msgid "Inactive" -msgstr "" +msgstr "Inactif" #: src/components/details/PartIcons.tsx:41 msgid "Part is a template part (variants can be made from this part)" @@ -246,11 +246,40 @@ msgstr "" #: src/tables/part/PartTable.tsx:238 #: src/tables/part/PartVariantTable.tsx:25 msgid "Virtual" +msgstr "Virtuel" + +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "Succès" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" msgstr "" #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" -msgstr "" +msgstr "Code" #: src/components/editors/TemplateEditor/PdfPreview/PdfPreview.tsx:44 #~ msgid "Failed to parse error response from server." @@ -258,28 +287,28 @@ msgstr "" #: src/components/editors/TemplateEditor/PdfPreview/PdfPreview.tsx:81 msgid "Preview not available, click \"Reload Preview\"." -msgstr "" +msgstr "Aperçu non disponible, cliquez sur \"Recharger l'aperçu\"." #: src/components/editors/TemplateEditor/PdfPreview/index.tsx:9 msgid "PDF Preview" -msgstr "" +msgstr "Prévisualisation PDF" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:104 msgid "Error loading template" -msgstr "" +msgstr "Erreur lors du chargement du modèle" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:116 msgid "Error saving template" -msgstr "" +msgstr "Erreur lors de l'enregistrement du modèle" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:146 #: src/components/editors/TemplateEditor/TemplateEditor.tsx:270 msgid "Save & Reload Preview" -msgstr "" +msgstr "Enregistrer & Recharger l'aperçu" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:151 msgid "Are you sure you want to Save & Reload the preview?" -msgstr "" +msgstr "Êtes-vous sûr de vouloir enregistrer et recharger l'aperçu ?" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:151 #~ msgid "Save & Reload preview?" @@ -299,11 +328,11 @@ msgstr "" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:190 msgid "The preview has been updated successfully." -msgstr "" +msgstr "L'aperçu a été mis à jour avec succès." #: src/components/editors/TemplateEditor/TemplateEditor.tsx:262 msgid "Reload preview" -msgstr "" +msgstr "Recharger l’aperçu" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:263 msgid "Use the currently stored template from the server" @@ -334,11 +363,6 @@ msgstr "" msgid "Form Error" msgstr "Erreur de formulaire" -#: src/components/forms/ApiForm.tsx:430 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "Succès" - #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" #~ msgstr "Form Errors Exist" @@ -389,7 +413,7 @@ msgstr "Login invalide" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." msgstr "Vérifiez votre saisie et réessayez." @@ -399,7 +423,7 @@ msgstr "Vérifiez votre saisie et réessayez." #~ msgstr "Mail delivery successfull" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" msgstr "Envoi du mail réussi" @@ -527,7 +551,7 @@ msgstr "Serveur" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:127 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -551,7 +575,6 @@ msgid "Add Host" msgstr "Ajouter un hôte" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" msgstr "Enregistrer" @@ -579,20 +602,20 @@ msgstr "Nom : {0}" msgid "State: <0>worker ({0}), <1>plugins{1}" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "Rechercher" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" msgstr "Chargement" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "Aucun résultat trouvé" @@ -614,7 +637,7 @@ msgid "Thumbnail" msgstr "Miniature" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" msgstr "Actions de code-barres" @@ -859,7 +882,7 @@ msgid "Close modal" msgstr "Fermer" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" msgstr "Serveur" @@ -967,7 +990,7 @@ msgstr "Paramètres du compte" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:295 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" msgstr "Les paramètres du système" @@ -1031,8 +1054,8 @@ msgid "About" msgstr "À propos" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" @@ -1053,35 +1076,35 @@ msgstr "Notification" msgid "Mark as read" msgstr "Marqué comme lu" -#: src/components/nav/SearchDrawer.tsx:77 +#: src/components/nav/SearchDrawer.tsx:78 msgid "results" msgstr "résultats" -#: src/components/nav/SearchDrawer.tsx:337 +#: src/components/nav/SearchDrawer.tsx:349 msgid "Enter search text" msgstr "Entrez un texte à rechercher" -#: src/components/nav/SearchDrawer.tsx:364 +#: src/components/nav/SearchDrawer.tsx:376 msgid "Search Options" msgstr "Options de recherche" -#: src/components/nav/SearchDrawer.tsx:367 +#: src/components/nav/SearchDrawer.tsx:379 msgid "Regex search" msgstr "Recherche par regex" -#: src/components/nav/SearchDrawer.tsx:377 +#: src/components/nav/SearchDrawer.tsx:389 msgid "Whole word search" msgstr "Recherche par mot entier" -#: src/components/nav/SearchDrawer.tsx:416 +#: src/components/nav/SearchDrawer.tsx:430 msgid "An error occurred during search query" msgstr "Une erreur s'est produite lors de la recherche" -#: src/components/nav/SearchDrawer.tsx:427 +#: src/components/nav/SearchDrawer.tsx:441 msgid "No results" msgstr "Aucun résultat" -#: src/components/nav/SearchDrawer.tsx:430 +#: src/components/nav/SearchDrawer.tsx:444 msgid "No results available for search query" msgstr "Aucun résultat disponible pour la requête" @@ -1100,7 +1123,7 @@ msgstr "Modèle inconnu : {model}" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:832 +#: src/pages/part/PartDetail.tsx:837 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" @@ -1109,11 +1132,11 @@ msgstr "Pièce" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:640 +#: src/pages/part/PartDetail.tsx:645 msgid "Parts" msgstr "Composants" @@ -1136,7 +1159,7 @@ msgstr "" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "Pièce fournisseur" @@ -1160,15 +1183,15 @@ msgid "Part Category" msgstr "Catégorie de composant" #: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 +#: src/pages/Index/Settings/SystemSettings.tsx:165 #: src/pages/part/CategoryDetail.tsx:249 #: src/pages/part/CategoryDetail.tsx:282 -#: src/pages/part/PartDetail.tsx:822 +#: src/pages/part/PartDetail.tsx:827 msgid "Part Categories" msgstr "Catégories de composants" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:560 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "Article en stock" @@ -1188,7 +1211,7 @@ msgstr "Emplacement du stock" #: src/components/render/ModelType.tsx:82 #: src/pages/stock/LocationDetail.tsx:185 #: src/pages/stock/LocationDetail.tsx:361 -#: src/pages/stock/StockDetail.tsx:552 +#: src/pages/stock/StockDetail.tsx:554 msgid "Stock Locations" msgstr "Emplacements de stock" @@ -1227,7 +1250,7 @@ msgid "Build Lines" msgstr "" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" msgstr "Société" @@ -1250,17 +1273,17 @@ msgid "Project Codes" msgstr "Codes du projet" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" msgstr "Commande d’achat" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:573 +#: src/pages/part/PartDetail.tsx:579 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" msgstr "Ordres d'achat" @@ -1275,16 +1298,16 @@ msgstr "Lignes de commande d'achat" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" msgstr "Ventes" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:579 +#: src/pages/part/PartDetail.tsx:586 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" msgstr "Ordres de vente" @@ -1298,13 +1321,13 @@ msgid "Sales Order Shipments" msgstr "Expéditions de la commande" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" msgstr "Retour de commande" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" @@ -1322,8 +1345,8 @@ msgstr "Adresses" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" msgstr "Contact" @@ -1341,7 +1364,7 @@ msgid "Owners" msgstr "" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" msgstr "Utilisateur" @@ -1385,26 +1408,27 @@ msgstr "" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:493 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 #: src/pages/stock/LocationDetail.tsx:345 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" msgstr "" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:517 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" msgstr "" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:523 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 @@ -1844,16 +1868,12 @@ msgid "Getting started" msgstr "" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Failed to upload image" +#~ msgstr "Failed to upload image" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "" +#~ msgid "Notes saved" +#~ msgstr "Notes saved" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" @@ -1972,42 +1992,46 @@ msgid "Portuguese (Brazilian)" msgstr "" #: src/contexts/LanguageContext.tsx:43 -msgid "Russian" +msgid "Romanian" msgstr "" #: src/contexts/LanguageContext.tsx:44 -msgid "Slovak" +msgid "Russian" msgstr "" #: src/contexts/LanguageContext.tsx:45 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: src/contexts/LanguageContext.tsx:46 -msgid "Swedish" +msgid "Slovenian" msgstr "" #: src/contexts/LanguageContext.tsx:47 -msgid "Thai" +msgid "Swedish" msgstr "" #: src/contexts/LanguageContext.tsx:48 +msgid "Thai" +msgstr "" + +#: src/contexts/LanguageContext.tsx:49 msgid "Turkish" msgstr "Turc" -#: src/contexts/LanguageContext.tsx:49 +#: src/contexts/LanguageContext.tsx:50 msgid "Ukrainian" msgstr "" -#: src/contexts/LanguageContext.tsx:50 +#: src/contexts/LanguageContext.tsx:51 msgid "Vietnamese" msgstr "Vietnamien" -#: src/contexts/LanguageContext.tsx:51 +#: src/contexts/LanguageContext.tsx:52 msgid "Chinese (Simplified)" msgstr "Chinois (Simplifié)" -#: src/contexts/LanguageContext.tsx:52 +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" msgstr "Chinois (Traditionnel)" @@ -2021,7 +2045,7 @@ msgstr "Page d’accueil" #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" msgstr "Tableau de bord" @@ -2160,10 +2184,10 @@ msgstr "Démo" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" msgstr "Achat en cours" @@ -2171,15 +2195,15 @@ msgstr "Achat en cours" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" msgstr "Ventes" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" msgstr "Le terrain de jeux" @@ -2464,7 +2488,7 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" @@ -2515,7 +2539,7 @@ msgstr "Entrez les numéros de série pour le nouveau stock (ou laisser vide)" #~ msgstr "Stock item updated" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" @@ -2537,8 +2561,8 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:207 -#: src/pages/part/PartDetail.tsx:656 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" msgstr "" @@ -2560,14 +2584,14 @@ msgid "Actions" msgstr "Actions" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" msgstr "" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" msgstr "" @@ -2580,12 +2604,12 @@ msgid "Remove Stock" msgstr "" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:788 msgid "Transfer Stock" msgstr "" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:777 msgid "Count Stock" msgstr "" @@ -2625,23 +2649,14 @@ msgstr "" #~ msgid "You have been logged out" #~ msgstr "You have been logged out" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" msgstr "" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" msgstr "" -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "Vérifiez votre boîte de réception pour un lien de réinitialisation. Cela ne fonctionne que si vous avez un compte. Vérifiez également dans le spam." - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "Échec de la réinitialisation" - #: src/functions/auth.tsx:141 #~ msgid "Already logged in" #~ msgstr "Already logged in" @@ -2654,11 +2669,20 @@ msgstr "Échec de la réinitialisation" #~ msgid "Found an existing login - welcome back!" #~ msgstr "Found an existing login - welcome back!" -#: src/functions/auth.tsx:153 +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "Vérifiez votre boîte de réception pour un lien de réinitialisation. Cela ne fonctionne que si vous avez un compte. Vérifiez également dans le spam." + +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "Échec de la réinitialisation" + +#: src/functions/auth.tsx:195 msgid "Logged In" msgstr "" -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:196 msgid "Successfully logged in" msgstr "" @@ -2796,7 +2820,7 @@ msgstr "" msgid "Welcome to your Dashboard{0}" msgstr "" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." msgstr "" @@ -3374,15 +3398,15 @@ msgstr "" msgid "System settings" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" msgstr "" @@ -3394,50 +3418,50 @@ msgstr "" #~ msgid "Exchange Rates" #~ msgstr "Exchange Rates" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:591 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:527 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" msgstr "Ordres de fabrication" -#: src/pages/Index/Settings/SystemSettings.tsx:298 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" msgstr "" @@ -3475,8 +3499,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3489,8 +3513,8 @@ msgstr "Status" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" @@ -3501,10 +3525,10 @@ msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:134 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3537,10 +3561,10 @@ msgid "Issued By" msgstr "" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:322 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 @@ -3555,8 +3579,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" msgstr "Date cible" @@ -3594,7 +3618,7 @@ msgstr "" #~ msgstr "Unlink custom barcode from part" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:535 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" msgstr "" @@ -3638,34 +3662,34 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:613 +#: src/pages/part/PartDetail.tsx:622 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" msgstr "" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:625 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" msgstr "" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" @@ -3676,17 +3700,17 @@ msgstr "" #~ msgstr "Reporting Actions" #: src/pages/build/BuildDetail.tsx:374 -#~ msgid "Print build report" -#~ msgstr "Print build report" - -#: src/pages/build/BuildDetail.tsx:378 msgid "Build Order Actions" msgstr "" -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "Print build report" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" msgstr "" @@ -3725,7 +3749,7 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" @@ -3733,10 +3757,10 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 @@ -3769,12 +3793,12 @@ msgstr "" msgid "Assigned Stock" msgstr "" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" msgstr "" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" msgstr "" @@ -3804,32 +3828,32 @@ msgid "Manufacturer Part Details" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:487 +#: src/pages/part/PartDetail.tsx:492 msgid "Parameters" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:560 +#: src/pages/part/PartDetail.tsx:566 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" msgstr "" @@ -3845,7 +3869,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" msgstr "" @@ -3879,7 +3903,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" msgstr "" @@ -3969,85 +3993,85 @@ msgstr "" msgid "Category Details" msgstr "" -#: src/pages/part/PartDetail.tsx:140 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" msgstr "" -#: src/pages/part/PartDetail.tsx:147 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" msgstr "Catégorie" -#: src/pages/part/PartDetail.tsx:153 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" msgstr "Emplacement par défaut" -#: src/pages/part/PartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:167 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" msgstr "" -#: src/pages/part/PartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" msgstr "Révision" -#: src/pages/part/PartDetail.tsx:181 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" msgstr "Unités" -#: src/pages/part/PartDetail.tsx:188 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" msgstr "Mots-clés" -#: src/pages/part/PartDetail.tsx:195 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" msgstr "Lien" -#: src/pages/part/PartDetail.tsx:213 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:220 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" msgstr "Stock Minimum" -#: src/pages/part/PartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" msgstr "Sur commande" -#: src/pages/part/PartDetail.tsx:235 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" msgstr "Alloué à l'ordre de construction" -#: src/pages/part/PartDetail.tsx:243 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" msgstr "Alloué aux ordres de ventes" -#: src/pages/part/PartDetail.tsx:250 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" msgstr "Peut être construit" -#: src/pages/part/PartDetail.tsx:257 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" msgstr "Construire" -#: src/pages/part/PartDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -4065,37 +4089,37 @@ msgstr "Construire" msgid "Active" msgstr "" -#: src/pages/part/PartDetail.tsx:271 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" msgstr "" -#: src/pages/part/PartDetail.tsx:276 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" msgstr "" -#: src/pages/part/PartDetail.tsx:281 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" msgstr "" -#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:291 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:296 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" msgstr "" -#: src/pages/part/PartDetail.tsx:309 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" msgstr "Date de création" @@ -4104,7 +4128,7 @@ msgstr "Date de création" #~ msgid "Edit part" #~ msgstr "Edit part" -#: src/pages/part/PartDetail.tsx:314 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" msgstr "" @@ -4116,69 +4140,71 @@ msgstr "" #~ msgid "Delete part" #~ msgstr "Delete part" -#: src/pages/part/PartDetail.tsx:329 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" msgstr "Fournisseur par Défaut" -#: src/pages/part/PartDetail.tsx:340 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" msgstr "Échelle des prix" -#: src/pages/part/PartDetail.tsx:375 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" msgstr "Dernier inventaire" -#: src/pages/part/PartDetail.tsx:410 +#: src/pages/part/PartDetail.tsx:415 msgid "Stocktake By" msgstr "" -#: src/pages/part/PartDetail.tsx:481 +#: src/pages/part/PartDetail.tsx:486 msgid "Part Details" msgstr "" -#: src/pages/part/PartDetail.tsx:507 +#: src/pages/part/PartDetail.tsx:512 msgid "Variants" msgstr "Variants" -#: src/pages/part/PartDetail.tsx:514 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" msgstr "Allocations" -#: src/pages/part/PartDetail.tsx:520 +#: src/pages/part/PartDetail.tsx:526 msgid "Bill of Materials" msgstr "" -#: src/pages/part/PartDetail.tsx:534 +#: src/pages/part/PartDetail.tsx:540 msgid "Used In" msgstr "" -#: src/pages/part/PartDetail.tsx:541 +#: src/pages/part/PartDetail.tsx:547 msgid "Part Pricing" msgstr "" -#: src/pages/part/PartDetail.tsx:547 +#: src/pages/part/PartDetail.tsx:553 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" msgstr "" -#: src/pages/part/PartDetail.tsx:586 +#: src/pages/part/PartDetail.tsx:593 msgid "Scheduling" msgstr "" -#: src/pages/part/PartDetail.tsx:596 +#: src/pages/part/PartDetail.tsx:605 msgid "Test Templates" msgstr "" -#: src/pages/part/PartDetail.tsx:607 +#: src/pages/part/PartDetail.tsx:616 msgid "Related Parts" msgstr "" -#: src/pages/part/PartDetail.tsx:662 -#: src/pages/stock/StockDetail.tsx:151 -#: src/pages/stock/StockDetail.tsx:529 +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 @@ -4186,55 +4212,55 @@ msgstr "" msgid "Available" msgstr "Disponible" -#: src/pages/part/PartDetail.tsx:668 +#: src/pages/part/PartDetail.tsx:673 msgid "No Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:674 +#: src/pages/part/PartDetail.tsx:679 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" msgstr "" -#: src/pages/part/PartDetail.tsx:680 -#: src/pages/stock/StockDetail.tsx:512 +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" msgstr "" -#: src/pages/part/PartDetail.tsx:699 +#: src/pages/part/PartDetail.tsx:704 msgid "Edit Part" msgstr "" -#: src/pages/part/PartDetail.tsx:706 +#: src/pages/part/PartDetail.tsx:711 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" msgstr "" -#: src/pages/part/PartDetail.tsx:718 +#: src/pages/part/PartDetail.tsx:723 msgid "Delete Part" msgstr "" -#: src/pages/part/PartDetail.tsx:727 +#: src/pages/part/PartDetail.tsx:732 msgid "Deleting this part cannot be reversed" msgstr "" -#: src/pages/part/PartDetail.tsx:765 +#: src/pages/part/PartDetail.tsx:770 #: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" msgstr "" -#: src/pages/part/PartDetail.tsx:773 +#: src/pages/part/PartDetail.tsx:778 msgid "Count part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:784 +#: src/pages/part/PartDetail.tsx:789 msgid "Transfer part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:793 +#: src/pages/part/PartDetail.tsx:798 msgid "Part Actions" msgstr "" @@ -4247,6 +4273,7 @@ msgid "No pricing data found for this part." msgstr "" #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" msgstr "" @@ -4255,54 +4282,32 @@ msgid "Purchase History" msgstr "" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "" - +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 @@ -4311,81 +4316,117 @@ msgstr "" msgid "Total Price" msgstr "Prix total" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "Minimum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "Maximum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:25 @@ -4404,33 +4445,33 @@ msgstr "" msgid "Loading pricing data" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "" @@ -4450,23 +4491,23 @@ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" msgstr "" @@ -4477,46 +4518,46 @@ msgstr "" #~ msgstr "Order Currency," #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" msgstr "" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" @@ -4526,17 +4567,17 @@ msgstr "" msgid "Customers" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" msgstr "" @@ -4599,11 +4640,11 @@ msgstr "" msgid "Location Actions" msgstr "" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" msgstr "" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" msgstr "" @@ -4615,15 +4656,15 @@ msgstr "" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "Unlink custom barcode from stock item" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" msgstr "" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" msgstr "" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" msgstr "" @@ -4636,31 +4677,31 @@ msgstr "" #~ msgid "Delete stock item" #~ msgstr "Delete stock item" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" msgstr "" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" msgstr "" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" msgstr "" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" msgstr "" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" msgstr "" @@ -4668,34 +4709,34 @@ msgstr "" #~ msgid "Duplicate stock item" #~ msgstr "Duplicate stock item" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" msgstr "" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" msgstr "" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "" @@ -4786,7 +4827,7 @@ msgstr "Filtrer" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" msgstr "Valeur" @@ -5224,7 +5265,7 @@ msgid "Required Tests" msgstr "" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" msgstr "" @@ -5306,23 +5347,39 @@ msgstr "" msgid "File could not be uploaded" msgstr "" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" msgstr "Supprimer la pièce jointe" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" msgstr "" @@ -5330,11 +5387,11 @@ msgstr "" #~ msgid "Upload attachment" #~ msgstr "Upload attachment" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" msgstr "" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "" @@ -5716,75 +5773,75 @@ msgstr "" msgid "No Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 msgid "Required" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:80 +#: src/tables/part/PartTestTemplateTable.tsx:85 msgid "Show required tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:95 +#: src/tables/part/PartTestTemplateTable.tsx:100 msgid "Show tests that require an attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:99 +#: src/tables/part/PartTestTemplateTable.tsx:104 msgid "Include Inherited" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:100 +#: src/tables/part/PartTestTemplateTable.tsx:105 msgid "Show tests from inherited templates" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:104 +#: src/tables/part/PartTestTemplateTable.tsx:109 msgid "Has Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:105 +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" msgstr "" @@ -6273,7 +6330,7 @@ msgid "Task ID" msgstr "" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" msgstr "" @@ -6679,95 +6736,95 @@ msgstr "" msgid "Delete stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 msgid "Delete Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:289 +#: src/tables/stock/StockItemTestResultTable.tsx:273 msgid "Test result deleted" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:303 +#: src/tables/stock/StockItemTestResultTable.tsx:287 msgid "Test Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" msgstr "" diff --git a/src/frontend/src/locales/he/messages.po b/src/frontend/src/locales/he/messages.po index 87247d8c22..aee0e6d1cd 100644 --- a/src/frontend/src/locales/he/messages.po +++ b/src/frontend/src/locales/he/messages.po @@ -8,7 +8,7 @@ msgstr "" "Language: he\n" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-05-23 11:38\n" +"PO-Revision-Date: 2024-06-19 04:49\n" "Last-Translator: \n" "Language-Team: Hebrew\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" @@ -48,18 +48,18 @@ msgstr "" #: src/components/buttons/PrintingActions.tsx:107 #: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 #: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 -#: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 +#: src/components/nav/SearchDrawer.tsx:427 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" msgstr "" @@ -121,15 +121,15 @@ msgstr "" msgid "No" msgstr "" -#: src/components/details/Details.tsx:303 +#: src/components/details/Details.tsx:305 msgid "No name defined" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copied" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copy" msgstr "" @@ -145,7 +145,7 @@ msgstr "" #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" msgstr "" @@ -207,9 +207,9 @@ msgstr "" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:686 +#: src/pages/part/PartDetail.tsx:691 msgid "Inactive" msgstr "" @@ -248,6 +248,35 @@ msgstr "" msgid "Virtual" msgstr "" +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "" + #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" msgstr "" @@ -334,11 +363,6 @@ msgstr "" msgid "Form Error" msgstr "" -#: src/components/forms/ApiForm.tsx:430 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "" - #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" #~ msgstr "Form Errors Exist" @@ -389,7 +413,7 @@ msgstr "" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." msgstr "" @@ -399,7 +423,7 @@ msgstr "" #~ msgstr "Mail delivery successfull" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" msgstr "" @@ -527,7 +551,7 @@ msgstr "" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:127 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -551,7 +575,6 @@ msgid "Add Host" msgstr "" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" msgstr "" @@ -579,20 +602,20 @@ msgstr "" msgid "State: <0>worker ({0}), <1>plugins{1}" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "" @@ -614,7 +637,7 @@ msgid "Thumbnail" msgstr "" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" msgstr "" @@ -859,7 +882,7 @@ msgid "Close modal" msgstr "" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" msgstr "" @@ -967,7 +990,7 @@ msgstr "" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:295 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" msgstr "" @@ -1031,8 +1054,8 @@ msgid "About" msgstr "" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" @@ -1053,35 +1076,35 @@ msgstr "" msgid "Mark as read" msgstr "" -#: src/components/nav/SearchDrawer.tsx:77 +#: src/components/nav/SearchDrawer.tsx:78 msgid "results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:337 +#: src/components/nav/SearchDrawer.tsx:349 msgid "Enter search text" msgstr "" -#: src/components/nav/SearchDrawer.tsx:364 +#: src/components/nav/SearchDrawer.tsx:376 msgid "Search Options" msgstr "" -#: src/components/nav/SearchDrawer.tsx:367 +#: src/components/nav/SearchDrawer.tsx:379 msgid "Regex search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:377 +#: src/components/nav/SearchDrawer.tsx:389 msgid "Whole word search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:416 +#: src/components/nav/SearchDrawer.tsx:430 msgid "An error occurred during search query" msgstr "" -#: src/components/nav/SearchDrawer.tsx:427 +#: src/components/nav/SearchDrawer.tsx:441 msgid "No results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:430 +#: src/components/nav/SearchDrawer.tsx:444 msgid "No results available for search query" msgstr "" @@ -1100,7 +1123,7 @@ msgstr "" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:832 +#: src/pages/part/PartDetail.tsx:837 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" @@ -1109,11 +1132,11 @@ msgstr "" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:640 +#: src/pages/part/PartDetail.tsx:645 msgid "Parts" msgstr "" @@ -1136,7 +1159,7 @@ msgstr "" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "" @@ -1160,15 +1183,15 @@ msgid "Part Category" msgstr "" #: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 +#: src/pages/Index/Settings/SystemSettings.tsx:165 #: src/pages/part/CategoryDetail.tsx:249 #: src/pages/part/CategoryDetail.tsx:282 -#: src/pages/part/PartDetail.tsx:822 +#: src/pages/part/PartDetail.tsx:827 msgid "Part Categories" msgstr "" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:560 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "" @@ -1188,7 +1211,7 @@ msgstr "" #: src/components/render/ModelType.tsx:82 #: src/pages/stock/LocationDetail.tsx:185 #: src/pages/stock/LocationDetail.tsx:361 -#: src/pages/stock/StockDetail.tsx:552 +#: src/pages/stock/StockDetail.tsx:554 msgid "Stock Locations" msgstr "" @@ -1227,7 +1250,7 @@ msgid "Build Lines" msgstr "" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" msgstr "" @@ -1250,17 +1273,17 @@ msgid "Project Codes" msgstr "" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" msgstr "" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:573 +#: src/pages/part/PartDetail.tsx:579 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" msgstr "" @@ -1275,16 +1298,16 @@ msgstr "" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" msgstr "" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:579 +#: src/pages/part/PartDetail.tsx:586 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" msgstr "" @@ -1298,13 +1321,13 @@ msgid "Sales Order Shipments" msgstr "" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" msgstr "" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" @@ -1322,8 +1345,8 @@ msgstr "" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" msgstr "" @@ -1341,7 +1364,7 @@ msgid "Owners" msgstr "" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" msgstr "" @@ -1385,26 +1408,27 @@ msgstr "" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:493 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 #: src/pages/stock/LocationDetail.tsx:345 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" msgstr "" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:517 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" msgstr "" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:523 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 @@ -1844,16 +1868,12 @@ msgid "Getting started" msgstr "" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Failed to upload image" +#~ msgstr "Failed to upload image" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "" +#~ msgid "Notes saved" +#~ msgstr "Notes saved" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" @@ -1972,42 +1992,46 @@ msgid "Portuguese (Brazilian)" msgstr "" #: src/contexts/LanguageContext.tsx:43 -msgid "Russian" +msgid "Romanian" msgstr "" #: src/contexts/LanguageContext.tsx:44 -msgid "Slovak" +msgid "Russian" msgstr "" #: src/contexts/LanguageContext.tsx:45 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: src/contexts/LanguageContext.tsx:46 -msgid "Swedish" +msgid "Slovenian" msgstr "" #: src/contexts/LanguageContext.tsx:47 -msgid "Thai" +msgid "Swedish" msgstr "" #: src/contexts/LanguageContext.tsx:48 -msgid "Turkish" +msgid "Thai" msgstr "" #: src/contexts/LanguageContext.tsx:49 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: src/contexts/LanguageContext.tsx:50 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: src/contexts/LanguageContext.tsx:51 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: src/contexts/LanguageContext.tsx:52 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" msgstr "" @@ -2021,7 +2045,7 @@ msgstr "" #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" msgstr "" @@ -2160,10 +2184,10 @@ msgstr "" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" msgstr "" @@ -2171,15 +2195,15 @@ msgstr "" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" msgstr "" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" msgstr "" @@ -2464,7 +2488,7 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" @@ -2515,7 +2539,7 @@ msgstr "" #~ msgstr "Stock item updated" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" @@ -2537,8 +2561,8 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:207 -#: src/pages/part/PartDetail.tsx:656 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" msgstr "" @@ -2560,14 +2584,14 @@ msgid "Actions" msgstr "" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" msgstr "" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" msgstr "" @@ -2580,12 +2604,12 @@ msgid "Remove Stock" msgstr "" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:788 msgid "Transfer Stock" msgstr "" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:777 msgid "Count Stock" msgstr "" @@ -2625,23 +2649,14 @@ msgstr "" #~ msgid "You have been logged out" #~ msgstr "You have been logged out" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" msgstr "" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" msgstr "" -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "" - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "" - #: src/functions/auth.tsx:141 #~ msgid "Already logged in" #~ msgstr "Already logged in" @@ -2654,11 +2669,20 @@ msgstr "" #~ msgid "Found an existing login - welcome back!" #~ msgstr "Found an existing login - welcome back!" -#: src/functions/auth.tsx:153 +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "" + +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "" + +#: src/functions/auth.tsx:195 msgid "Logged In" msgstr "" -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:196 msgid "Successfully logged in" msgstr "" @@ -2796,7 +2820,7 @@ msgstr "" msgid "Welcome to your Dashboard{0}" msgstr "" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." msgstr "" @@ -3374,15 +3398,15 @@ msgstr "" msgid "System settings" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" msgstr "" @@ -3394,50 +3418,50 @@ msgstr "" #~ msgid "Exchange Rates" #~ msgstr "Exchange Rates" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:591 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:527 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:298 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" msgstr "" @@ -3475,8 +3499,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3489,8 +3513,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" @@ -3501,10 +3525,10 @@ msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:134 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3537,10 +3561,10 @@ msgid "Issued By" msgstr "" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:322 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 @@ -3555,8 +3579,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" msgstr "" @@ -3594,7 +3618,7 @@ msgstr "" #~ msgstr "Unlink custom barcode from part" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:535 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" msgstr "" @@ -3638,34 +3662,34 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:613 +#: src/pages/part/PartDetail.tsx:622 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" msgstr "" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:625 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" msgstr "" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" @@ -3676,17 +3700,17 @@ msgstr "" #~ msgstr "Reporting Actions" #: src/pages/build/BuildDetail.tsx:374 -#~ msgid "Print build report" -#~ msgstr "Print build report" - -#: src/pages/build/BuildDetail.tsx:378 msgid "Build Order Actions" msgstr "" -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "Print build report" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" msgstr "" @@ -3725,7 +3749,7 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" @@ -3733,10 +3757,10 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 @@ -3769,12 +3793,12 @@ msgstr "" msgid "Assigned Stock" msgstr "" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" msgstr "" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" msgstr "" @@ -3804,32 +3828,32 @@ msgid "Manufacturer Part Details" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:487 +#: src/pages/part/PartDetail.tsx:492 msgid "Parameters" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:560 +#: src/pages/part/PartDetail.tsx:566 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" msgstr "" @@ -3845,7 +3869,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" msgstr "" @@ -3879,7 +3903,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" msgstr "" @@ -3969,85 +3993,85 @@ msgstr "" msgid "Category Details" msgstr "" -#: src/pages/part/PartDetail.tsx:140 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" msgstr "" -#: src/pages/part/PartDetail.tsx:147 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" msgstr "" -#: src/pages/part/PartDetail.tsx:153 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:167 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" msgstr "" -#: src/pages/part/PartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" msgstr "" -#: src/pages/part/PartDetail.tsx:181 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" msgstr "" -#: src/pages/part/PartDetail.tsx:188 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" msgstr "" -#: src/pages/part/PartDetail.tsx:195 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" msgstr "" -#: src/pages/part/PartDetail.tsx:213 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:220 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" msgstr "" -#: src/pages/part/PartDetail.tsx:235 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:243 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:250 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" msgstr "" -#: src/pages/part/PartDetail.tsx:257 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" msgstr "" -#: src/pages/part/PartDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -4065,37 +4089,37 @@ msgstr "" msgid "Active" msgstr "" -#: src/pages/part/PartDetail.tsx:271 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" msgstr "" -#: src/pages/part/PartDetail.tsx:276 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" msgstr "" -#: src/pages/part/PartDetail.tsx:281 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" msgstr "" -#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:291 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:296 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" msgstr "" -#: src/pages/part/PartDetail.tsx:309 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" msgstr "" @@ -4104,7 +4128,7 @@ msgstr "" #~ msgid "Edit part" #~ msgstr "Edit part" -#: src/pages/part/PartDetail.tsx:314 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" msgstr "" @@ -4116,69 +4140,71 @@ msgstr "" #~ msgid "Delete part" #~ msgstr "Delete part" -#: src/pages/part/PartDetail.tsx:329 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" msgstr "" -#: src/pages/part/PartDetail.tsx:340 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" msgstr "" -#: src/pages/part/PartDetail.tsx:375 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" msgstr "" -#: src/pages/part/PartDetail.tsx:410 +#: src/pages/part/PartDetail.tsx:415 msgid "Stocktake By" msgstr "" -#: src/pages/part/PartDetail.tsx:481 +#: src/pages/part/PartDetail.tsx:486 msgid "Part Details" msgstr "" -#: src/pages/part/PartDetail.tsx:507 +#: src/pages/part/PartDetail.tsx:512 msgid "Variants" msgstr "" -#: src/pages/part/PartDetail.tsx:514 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" msgstr "" -#: src/pages/part/PartDetail.tsx:520 +#: src/pages/part/PartDetail.tsx:526 msgid "Bill of Materials" msgstr "" -#: src/pages/part/PartDetail.tsx:534 +#: src/pages/part/PartDetail.tsx:540 msgid "Used In" msgstr "" -#: src/pages/part/PartDetail.tsx:541 +#: src/pages/part/PartDetail.tsx:547 msgid "Part Pricing" msgstr "" -#: src/pages/part/PartDetail.tsx:547 +#: src/pages/part/PartDetail.tsx:553 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" msgstr "" -#: src/pages/part/PartDetail.tsx:586 +#: src/pages/part/PartDetail.tsx:593 msgid "Scheduling" msgstr "" -#: src/pages/part/PartDetail.tsx:596 +#: src/pages/part/PartDetail.tsx:605 msgid "Test Templates" msgstr "" -#: src/pages/part/PartDetail.tsx:607 +#: src/pages/part/PartDetail.tsx:616 msgid "Related Parts" msgstr "" -#: src/pages/part/PartDetail.tsx:662 -#: src/pages/stock/StockDetail.tsx:151 -#: src/pages/stock/StockDetail.tsx:529 +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 @@ -4186,55 +4212,55 @@ msgstr "" msgid "Available" msgstr "" -#: src/pages/part/PartDetail.tsx:668 +#: src/pages/part/PartDetail.tsx:673 msgid "No Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:674 +#: src/pages/part/PartDetail.tsx:679 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" msgstr "" -#: src/pages/part/PartDetail.tsx:680 -#: src/pages/stock/StockDetail.tsx:512 +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" msgstr "" -#: src/pages/part/PartDetail.tsx:699 +#: src/pages/part/PartDetail.tsx:704 msgid "Edit Part" msgstr "" -#: src/pages/part/PartDetail.tsx:706 +#: src/pages/part/PartDetail.tsx:711 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" msgstr "" -#: src/pages/part/PartDetail.tsx:718 +#: src/pages/part/PartDetail.tsx:723 msgid "Delete Part" msgstr "" -#: src/pages/part/PartDetail.tsx:727 +#: src/pages/part/PartDetail.tsx:732 msgid "Deleting this part cannot be reversed" msgstr "" -#: src/pages/part/PartDetail.tsx:765 +#: src/pages/part/PartDetail.tsx:770 #: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" msgstr "" -#: src/pages/part/PartDetail.tsx:773 +#: src/pages/part/PartDetail.tsx:778 msgid "Count part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:784 +#: src/pages/part/PartDetail.tsx:789 msgid "Transfer part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:793 +#: src/pages/part/PartDetail.tsx:798 msgid "Part Actions" msgstr "" @@ -4247,6 +4273,7 @@ msgid "No pricing data found for this part." msgstr "" #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" msgstr "" @@ -4255,54 +4282,32 @@ msgid "Purchase History" msgstr "" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "" - +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 @@ -4311,81 +4316,117 @@ msgstr "" msgid "Total Price" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "Minimum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "Maximum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:25 @@ -4404,33 +4445,33 @@ msgstr "" msgid "Loading pricing data" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "" @@ -4450,23 +4491,23 @@ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" msgstr "" @@ -4477,46 +4518,46 @@ msgstr "" #~ msgstr "Order Currency," #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" msgstr "" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" @@ -4526,17 +4567,17 @@ msgstr "" msgid "Customers" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" msgstr "" @@ -4599,11 +4640,11 @@ msgstr "" msgid "Location Actions" msgstr "" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" msgstr "" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" msgstr "" @@ -4615,15 +4656,15 @@ msgstr "" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "Unlink custom barcode from stock item" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" msgstr "" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" msgstr "" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" msgstr "" @@ -4636,31 +4677,31 @@ msgstr "" #~ msgid "Delete stock item" #~ msgstr "Delete stock item" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" msgstr "" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" msgstr "" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" msgstr "" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" msgstr "" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" msgstr "" @@ -4668,34 +4709,34 @@ msgstr "" #~ msgid "Duplicate stock item" #~ msgstr "Duplicate stock item" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" msgstr "" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" msgstr "" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "" @@ -4786,7 +4827,7 @@ msgstr "" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" msgstr "" @@ -5224,7 +5265,7 @@ msgid "Required Tests" msgstr "" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" msgstr "" @@ -5306,23 +5347,39 @@ msgstr "" msgid "File could not be uploaded" msgstr "" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" msgstr "" @@ -5330,11 +5387,11 @@ msgstr "" #~ msgid "Upload attachment" #~ msgstr "Upload attachment" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" msgstr "" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "" @@ -5716,75 +5773,75 @@ msgstr "" msgid "No Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 msgid "Required" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:80 +#: src/tables/part/PartTestTemplateTable.tsx:85 msgid "Show required tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:95 +#: src/tables/part/PartTestTemplateTable.tsx:100 msgid "Show tests that require an attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:99 +#: src/tables/part/PartTestTemplateTable.tsx:104 msgid "Include Inherited" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:100 +#: src/tables/part/PartTestTemplateTable.tsx:105 msgid "Show tests from inherited templates" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:104 +#: src/tables/part/PartTestTemplateTable.tsx:109 msgid "Has Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:105 +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" msgstr "" @@ -6273,7 +6330,7 @@ msgid "Task ID" msgstr "" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" msgstr "" @@ -6679,95 +6736,95 @@ msgstr "" msgid "Delete stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 msgid "Delete Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:289 +#: src/tables/stock/StockItemTestResultTable.tsx:273 msgid "Test result deleted" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:303 +#: src/tables/stock/StockItemTestResultTable.tsx:287 msgid "Test Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" msgstr "" diff --git a/src/frontend/src/locales/hi/messages.po b/src/frontend/src/locales/hi/messages.po index 3068c92a79..2f96ec03f3 100644 --- a/src/frontend/src/locales/hi/messages.po +++ b/src/frontend/src/locales/hi/messages.po @@ -8,7 +8,7 @@ msgstr "" "Language: hi\n" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-05-23 11:39\n" +"PO-Revision-Date: 2024-06-19 04:50\n" "Last-Translator: \n" "Language-Team: Hindi\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -48,18 +48,18 @@ msgstr "" #: src/components/buttons/PrintingActions.tsx:107 #: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 #: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 -#: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 +#: src/components/nav/SearchDrawer.tsx:427 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" msgstr "" @@ -121,15 +121,15 @@ msgstr "हाँ" msgid "No" msgstr "" -#: src/components/details/Details.tsx:303 +#: src/components/details/Details.tsx:305 msgid "No name defined" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copied" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copy" msgstr "" @@ -145,7 +145,7 @@ msgstr "" #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" msgstr "" @@ -207,9 +207,9 @@ msgstr "" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:686 +#: src/pages/part/PartDetail.tsx:691 msgid "Inactive" msgstr "" @@ -248,6 +248,35 @@ msgstr "" msgid "Virtual" msgstr "" +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "" + #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" msgstr "" @@ -334,11 +363,6 @@ msgstr "" msgid "Form Error" msgstr "" -#: src/components/forms/ApiForm.tsx:430 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "" - #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" #~ msgstr "Form Errors Exist" @@ -389,7 +413,7 @@ msgstr "लॉगिन असफल" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." msgstr "" @@ -399,7 +423,7 @@ msgstr "" #~ msgstr "Mail delivery successfull" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" msgstr "" @@ -527,7 +551,7 @@ msgstr "" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:127 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -551,7 +575,6 @@ msgid "Add Host" msgstr "" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" msgstr "सुरक्षित करें" @@ -579,20 +602,20 @@ msgstr "" msgid "State: <0>worker ({0}), <1>plugins{1}" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "" @@ -614,7 +637,7 @@ msgid "Thumbnail" msgstr "" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" msgstr "" @@ -859,7 +882,7 @@ msgid "Close modal" msgstr "" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" msgstr "" @@ -967,7 +990,7 @@ msgstr "" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:295 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" msgstr "" @@ -1031,8 +1054,8 @@ msgid "About" msgstr "" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" @@ -1053,35 +1076,35 @@ msgstr "" msgid "Mark as read" msgstr "" -#: src/components/nav/SearchDrawer.tsx:77 +#: src/components/nav/SearchDrawer.tsx:78 msgid "results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:337 +#: src/components/nav/SearchDrawer.tsx:349 msgid "Enter search text" msgstr "" -#: src/components/nav/SearchDrawer.tsx:364 +#: src/components/nav/SearchDrawer.tsx:376 msgid "Search Options" msgstr "" -#: src/components/nav/SearchDrawer.tsx:367 +#: src/components/nav/SearchDrawer.tsx:379 msgid "Regex search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:377 +#: src/components/nav/SearchDrawer.tsx:389 msgid "Whole word search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:416 +#: src/components/nav/SearchDrawer.tsx:430 msgid "An error occurred during search query" msgstr "" -#: src/components/nav/SearchDrawer.tsx:427 +#: src/components/nav/SearchDrawer.tsx:441 msgid "No results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:430 +#: src/components/nav/SearchDrawer.tsx:444 msgid "No results available for search query" msgstr "" @@ -1100,7 +1123,7 @@ msgstr "" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:832 +#: src/pages/part/PartDetail.tsx:837 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" @@ -1109,11 +1132,11 @@ msgstr "" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:640 +#: src/pages/part/PartDetail.tsx:645 msgid "Parts" msgstr "" @@ -1136,7 +1159,7 @@ msgstr "" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "" @@ -1160,15 +1183,15 @@ msgid "Part Category" msgstr "" #: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 +#: src/pages/Index/Settings/SystemSettings.tsx:165 #: src/pages/part/CategoryDetail.tsx:249 #: src/pages/part/CategoryDetail.tsx:282 -#: src/pages/part/PartDetail.tsx:822 +#: src/pages/part/PartDetail.tsx:827 msgid "Part Categories" msgstr "" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:560 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "" @@ -1188,7 +1211,7 @@ msgstr "" #: src/components/render/ModelType.tsx:82 #: src/pages/stock/LocationDetail.tsx:185 #: src/pages/stock/LocationDetail.tsx:361 -#: src/pages/stock/StockDetail.tsx:552 +#: src/pages/stock/StockDetail.tsx:554 msgid "Stock Locations" msgstr "" @@ -1227,7 +1250,7 @@ msgid "Build Lines" msgstr "" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" msgstr "" @@ -1250,17 +1273,17 @@ msgid "Project Codes" msgstr "" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" msgstr "" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:573 +#: src/pages/part/PartDetail.tsx:579 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" msgstr "" @@ -1275,16 +1298,16 @@ msgstr "" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" msgstr "" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:579 +#: src/pages/part/PartDetail.tsx:586 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" msgstr "" @@ -1298,13 +1321,13 @@ msgid "Sales Order Shipments" msgstr "" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" msgstr "" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" @@ -1322,8 +1345,8 @@ msgstr "" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" msgstr "" @@ -1341,7 +1364,7 @@ msgid "Owners" msgstr "" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" msgstr "" @@ -1385,26 +1408,27 @@ msgstr "" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:493 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 #: src/pages/stock/LocationDetail.tsx:345 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" msgstr "" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:517 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" msgstr "" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:523 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 @@ -1844,16 +1868,12 @@ msgid "Getting started" msgstr "" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Failed to upload image" +#~ msgstr "Failed to upload image" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "" +#~ msgid "Notes saved" +#~ msgstr "Notes saved" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" @@ -1972,42 +1992,46 @@ msgid "Portuguese (Brazilian)" msgstr "" #: src/contexts/LanguageContext.tsx:43 -msgid "Russian" +msgid "Romanian" msgstr "" #: src/contexts/LanguageContext.tsx:44 -msgid "Slovak" +msgid "Russian" msgstr "" #: src/contexts/LanguageContext.tsx:45 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: src/contexts/LanguageContext.tsx:46 -msgid "Swedish" +msgid "Slovenian" msgstr "" #: src/contexts/LanguageContext.tsx:47 -msgid "Thai" +msgid "Swedish" msgstr "" #: src/contexts/LanguageContext.tsx:48 -msgid "Turkish" +msgid "Thai" msgstr "" #: src/contexts/LanguageContext.tsx:49 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: src/contexts/LanguageContext.tsx:50 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: src/contexts/LanguageContext.tsx:51 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: src/contexts/LanguageContext.tsx:52 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" msgstr "" @@ -2021,7 +2045,7 @@ msgstr "" #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" msgstr "" @@ -2160,10 +2184,10 @@ msgstr "" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" msgstr "" @@ -2171,15 +2195,15 @@ msgstr "" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" msgstr "" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" msgstr "" @@ -2464,7 +2488,7 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" @@ -2515,7 +2539,7 @@ msgstr "" #~ msgstr "Stock item updated" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" @@ -2537,8 +2561,8 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:207 -#: src/pages/part/PartDetail.tsx:656 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" msgstr "" @@ -2560,14 +2584,14 @@ msgid "Actions" msgstr "" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" msgstr "" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" msgstr "" @@ -2580,12 +2604,12 @@ msgid "Remove Stock" msgstr "" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:788 msgid "Transfer Stock" msgstr "" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:777 msgid "Count Stock" msgstr "" @@ -2625,23 +2649,14 @@ msgstr "" #~ msgid "You have been logged out" #~ msgstr "You have been logged out" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" msgstr "" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" msgstr "" -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "" - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "" - #: src/functions/auth.tsx:141 #~ msgid "Already logged in" #~ msgstr "Already logged in" @@ -2654,11 +2669,20 @@ msgstr "" #~ msgid "Found an existing login - welcome back!" #~ msgstr "Found an existing login - welcome back!" -#: src/functions/auth.tsx:153 +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "" + +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "" + +#: src/functions/auth.tsx:195 msgid "Logged In" msgstr "" -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:196 msgid "Successfully logged in" msgstr "" @@ -2796,7 +2820,7 @@ msgstr "" msgid "Welcome to your Dashboard{0}" msgstr "" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." msgstr "" @@ -3374,15 +3398,15 @@ msgstr "" msgid "System settings" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" msgstr "" @@ -3394,50 +3418,50 @@ msgstr "" #~ msgid "Exchange Rates" #~ msgstr "Exchange Rates" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:591 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:527 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:298 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" msgstr "" @@ -3475,8 +3499,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3489,8 +3513,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" @@ -3501,10 +3525,10 @@ msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:134 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3537,10 +3561,10 @@ msgid "Issued By" msgstr "" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:322 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 @@ -3555,8 +3579,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" msgstr "" @@ -3594,7 +3618,7 @@ msgstr "" #~ msgstr "Unlink custom barcode from part" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:535 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" msgstr "" @@ -3638,34 +3662,34 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:613 +#: src/pages/part/PartDetail.tsx:622 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" msgstr "" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:625 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" msgstr "" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" @@ -3676,17 +3700,17 @@ msgstr "" #~ msgstr "Reporting Actions" #: src/pages/build/BuildDetail.tsx:374 -#~ msgid "Print build report" -#~ msgstr "Print build report" - -#: src/pages/build/BuildDetail.tsx:378 msgid "Build Order Actions" msgstr "" -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "Print build report" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" msgstr "" @@ -3725,7 +3749,7 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" @@ -3733,10 +3757,10 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 @@ -3769,12 +3793,12 @@ msgstr "" msgid "Assigned Stock" msgstr "" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" msgstr "" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" msgstr "" @@ -3804,32 +3828,32 @@ msgid "Manufacturer Part Details" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:487 +#: src/pages/part/PartDetail.tsx:492 msgid "Parameters" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:560 +#: src/pages/part/PartDetail.tsx:566 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" msgstr "" @@ -3845,7 +3869,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" msgstr "" @@ -3879,7 +3903,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" msgstr "" @@ -3969,85 +3993,85 @@ msgstr "" msgid "Category Details" msgstr "" -#: src/pages/part/PartDetail.tsx:140 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" msgstr "" -#: src/pages/part/PartDetail.tsx:147 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" msgstr "" -#: src/pages/part/PartDetail.tsx:153 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:167 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" msgstr "" -#: src/pages/part/PartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" msgstr "" -#: src/pages/part/PartDetail.tsx:181 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" msgstr "" -#: src/pages/part/PartDetail.tsx:188 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" msgstr "" -#: src/pages/part/PartDetail.tsx:195 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" msgstr "" -#: src/pages/part/PartDetail.tsx:213 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:220 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" msgstr "" -#: src/pages/part/PartDetail.tsx:235 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:243 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:250 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" msgstr "" -#: src/pages/part/PartDetail.tsx:257 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" msgstr "" -#: src/pages/part/PartDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -4065,37 +4089,37 @@ msgstr "" msgid "Active" msgstr "" -#: src/pages/part/PartDetail.tsx:271 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" msgstr "" -#: src/pages/part/PartDetail.tsx:276 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" msgstr "" -#: src/pages/part/PartDetail.tsx:281 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" msgstr "" -#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:291 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:296 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" msgstr "" -#: src/pages/part/PartDetail.tsx:309 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" msgstr "" @@ -4104,7 +4128,7 @@ msgstr "" #~ msgid "Edit part" #~ msgstr "Edit part" -#: src/pages/part/PartDetail.tsx:314 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" msgstr "" @@ -4116,69 +4140,71 @@ msgstr "" #~ msgid "Delete part" #~ msgstr "Delete part" -#: src/pages/part/PartDetail.tsx:329 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" msgstr "" -#: src/pages/part/PartDetail.tsx:340 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" msgstr "" -#: src/pages/part/PartDetail.tsx:375 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" msgstr "" -#: src/pages/part/PartDetail.tsx:410 +#: src/pages/part/PartDetail.tsx:415 msgid "Stocktake By" msgstr "" -#: src/pages/part/PartDetail.tsx:481 +#: src/pages/part/PartDetail.tsx:486 msgid "Part Details" msgstr "" -#: src/pages/part/PartDetail.tsx:507 +#: src/pages/part/PartDetail.tsx:512 msgid "Variants" msgstr "" -#: src/pages/part/PartDetail.tsx:514 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" msgstr "" -#: src/pages/part/PartDetail.tsx:520 +#: src/pages/part/PartDetail.tsx:526 msgid "Bill of Materials" msgstr "" -#: src/pages/part/PartDetail.tsx:534 +#: src/pages/part/PartDetail.tsx:540 msgid "Used In" msgstr "" -#: src/pages/part/PartDetail.tsx:541 +#: src/pages/part/PartDetail.tsx:547 msgid "Part Pricing" msgstr "" -#: src/pages/part/PartDetail.tsx:547 +#: src/pages/part/PartDetail.tsx:553 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" msgstr "" -#: src/pages/part/PartDetail.tsx:586 +#: src/pages/part/PartDetail.tsx:593 msgid "Scheduling" msgstr "" -#: src/pages/part/PartDetail.tsx:596 +#: src/pages/part/PartDetail.tsx:605 msgid "Test Templates" msgstr "" -#: src/pages/part/PartDetail.tsx:607 +#: src/pages/part/PartDetail.tsx:616 msgid "Related Parts" msgstr "" -#: src/pages/part/PartDetail.tsx:662 -#: src/pages/stock/StockDetail.tsx:151 -#: src/pages/stock/StockDetail.tsx:529 +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 @@ -4186,55 +4212,55 @@ msgstr "" msgid "Available" msgstr "" -#: src/pages/part/PartDetail.tsx:668 +#: src/pages/part/PartDetail.tsx:673 msgid "No Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:674 +#: src/pages/part/PartDetail.tsx:679 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" msgstr "" -#: src/pages/part/PartDetail.tsx:680 -#: src/pages/stock/StockDetail.tsx:512 +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" msgstr "" -#: src/pages/part/PartDetail.tsx:699 +#: src/pages/part/PartDetail.tsx:704 msgid "Edit Part" msgstr "" -#: src/pages/part/PartDetail.tsx:706 +#: src/pages/part/PartDetail.tsx:711 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" msgstr "" -#: src/pages/part/PartDetail.tsx:718 +#: src/pages/part/PartDetail.tsx:723 msgid "Delete Part" msgstr "" -#: src/pages/part/PartDetail.tsx:727 +#: src/pages/part/PartDetail.tsx:732 msgid "Deleting this part cannot be reversed" msgstr "" -#: src/pages/part/PartDetail.tsx:765 +#: src/pages/part/PartDetail.tsx:770 #: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" msgstr "" -#: src/pages/part/PartDetail.tsx:773 +#: src/pages/part/PartDetail.tsx:778 msgid "Count part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:784 +#: src/pages/part/PartDetail.tsx:789 msgid "Transfer part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:793 +#: src/pages/part/PartDetail.tsx:798 msgid "Part Actions" msgstr "" @@ -4247,6 +4273,7 @@ msgid "No pricing data found for this part." msgstr "" #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" msgstr "" @@ -4255,54 +4282,32 @@ msgid "Purchase History" msgstr "" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "" - +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 @@ -4311,81 +4316,117 @@ msgstr "" msgid "Total Price" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "Minimum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "Maximum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:25 @@ -4404,33 +4445,33 @@ msgstr "" msgid "Loading pricing data" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "" @@ -4450,23 +4491,23 @@ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" msgstr "" @@ -4477,46 +4518,46 @@ msgstr "" #~ msgstr "Order Currency," #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" msgstr "" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" @@ -4526,17 +4567,17 @@ msgstr "" msgid "Customers" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" msgstr "" @@ -4599,11 +4640,11 @@ msgstr "" msgid "Location Actions" msgstr "" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" msgstr "" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" msgstr "" @@ -4615,15 +4656,15 @@ msgstr "" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "Unlink custom barcode from stock item" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" msgstr "" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" msgstr "" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" msgstr "" @@ -4636,31 +4677,31 @@ msgstr "" #~ msgid "Delete stock item" #~ msgstr "Delete stock item" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" msgstr "" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" msgstr "" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" msgstr "" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" msgstr "" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" msgstr "" @@ -4668,34 +4709,34 @@ msgstr "" #~ msgid "Duplicate stock item" #~ msgstr "Duplicate stock item" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" msgstr "" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" msgstr "" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "" @@ -4786,7 +4827,7 @@ msgstr "" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" msgstr "" @@ -5224,7 +5265,7 @@ msgid "Required Tests" msgstr "" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" msgstr "" @@ -5306,23 +5347,39 @@ msgstr "" msgid "File could not be uploaded" msgstr "" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" msgstr "" @@ -5330,11 +5387,11 @@ msgstr "" #~ msgid "Upload attachment" #~ msgstr "Upload attachment" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" msgstr "" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "" @@ -5716,75 +5773,75 @@ msgstr "" msgid "No Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 msgid "Required" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:80 +#: src/tables/part/PartTestTemplateTable.tsx:85 msgid "Show required tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:95 +#: src/tables/part/PartTestTemplateTable.tsx:100 msgid "Show tests that require an attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:99 +#: src/tables/part/PartTestTemplateTable.tsx:104 msgid "Include Inherited" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:100 +#: src/tables/part/PartTestTemplateTable.tsx:105 msgid "Show tests from inherited templates" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:104 +#: src/tables/part/PartTestTemplateTable.tsx:109 msgid "Has Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:105 +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" msgstr "" @@ -6273,7 +6330,7 @@ msgid "Task ID" msgstr "" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" msgstr "" @@ -6679,95 +6736,95 @@ msgstr "" msgid "Delete stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 msgid "Delete Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:289 +#: src/tables/stock/StockItemTestResultTable.tsx:273 msgid "Test result deleted" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:303 +#: src/tables/stock/StockItemTestResultTable.tsx:287 msgid "Test Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" msgstr "" diff --git a/src/frontend/src/locales/hu/messages.po b/src/frontend/src/locales/hu/messages.po index 1a19686ad1..f7844360e4 100644 --- a/src/frontend/src/locales/hu/messages.po +++ b/src/frontend/src/locales/hu/messages.po @@ -8,7 +8,7 @@ msgstr "" "Language: hu\n" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-05-23 11:38\n" +"PO-Revision-Date: 2024-06-19 04:49\n" "Last-Translator: \n" "Language-Team: Hungarian\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -48,18 +48,18 @@ msgstr "" #: src/components/buttons/PrintingActions.tsx:107 #: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 #: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 -#: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 +#: src/components/nav/SearchDrawer.tsx:427 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" msgstr "Hiba" @@ -121,15 +121,15 @@ msgstr "Igen" msgid "No" msgstr "Nem" -#: src/components/details/Details.tsx:303 +#: src/components/details/Details.tsx:305 msgid "No name defined" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copied" msgstr "Másolva" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copy" msgstr "Másolás" @@ -145,7 +145,7 @@ msgstr "Tételhez rendelt kép eltávolítása?" #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" msgstr "Eltávolítás" @@ -207,9 +207,9 @@ msgstr "Az alkatrész nem aktív" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:686 +#: src/pages/part/PartDetail.tsx:691 msgid "Inactive" msgstr "Inaktív" @@ -248,6 +248,35 @@ msgstr "Virtuális (nem kézzelfogható alkatrész)" msgid "Virtual" msgstr "Virtuális" +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "Siker" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "Megjegyzések mentése nem sikerült" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "" + #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" msgstr "Kód" @@ -334,11 +363,6 @@ msgstr "Hiba a sablon megjelenítésekor" msgid "Form Error" msgstr "Form hiba" -#: src/components/forms/ApiForm.tsx:430 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "Siker" - #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" #~ msgstr "Form Errors Exist" @@ -389,7 +413,7 @@ msgstr "Belépés sikertelen" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." msgstr "Ellenőrizd amit beírtál és próbáld újra." @@ -399,7 +423,7 @@ msgstr "Ellenőrizd amit beírtál és próbáld újra." #~ msgstr "Mail delivery successfull" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" msgstr "Levél kézbesítése sikeres" @@ -527,7 +551,7 @@ msgstr "Kiszolgáló" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:127 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -551,7 +575,6 @@ msgid "Add Host" msgstr "Kiszolgáló hozzáadása" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" msgstr "Mentés" @@ -579,20 +602,20 @@ msgstr "Név: {0}" msgid "State: <0>worker ({0}), <1>plugins{1}" msgstr "Státusz: <0>worker ({0}), <1>plugins{1}" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "Keresés" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" msgstr "Betöltés" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "Nincs találat" @@ -614,7 +637,7 @@ msgid "Thumbnail" msgstr "Bélyegkép" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" msgstr "Vonalkód műveletek" @@ -859,7 +882,7 @@ msgid "Close modal" msgstr "Felugró ablak bezárása" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" msgstr "Szerver" @@ -967,7 +990,7 @@ msgstr "Fiókbeállítások" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:295 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" msgstr "Rendszerbeállítások" @@ -1031,8 +1054,8 @@ msgid "About" msgstr "Névjegy" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" @@ -1053,35 +1076,35 @@ msgstr "Értesítés" msgid "Mark as read" msgstr "Megjelölés olvasottként" -#: src/components/nav/SearchDrawer.tsx:77 +#: src/components/nav/SearchDrawer.tsx:78 msgid "results" msgstr "eredmények" -#: src/components/nav/SearchDrawer.tsx:337 +#: src/components/nav/SearchDrawer.tsx:349 msgid "Enter search text" msgstr "Írd be a keresett szöveget" -#: src/components/nav/SearchDrawer.tsx:364 +#: src/components/nav/SearchDrawer.tsx:376 msgid "Search Options" msgstr "Keresési opciók" -#: src/components/nav/SearchDrawer.tsx:367 +#: src/components/nav/SearchDrawer.tsx:379 msgid "Regex search" msgstr "Regex keresés" -#: src/components/nav/SearchDrawer.tsx:377 +#: src/components/nav/SearchDrawer.tsx:389 msgid "Whole word search" msgstr "Teljes szó keresés" -#: src/components/nav/SearchDrawer.tsx:416 +#: src/components/nav/SearchDrawer.tsx:430 msgid "An error occurred during search query" msgstr "Hiba történt a keresés közben" -#: src/components/nav/SearchDrawer.tsx:427 +#: src/components/nav/SearchDrawer.tsx:441 msgid "No results" msgstr "Nincs találat" -#: src/components/nav/SearchDrawer.tsx:430 +#: src/components/nav/SearchDrawer.tsx:444 msgid "No results available for search query" msgstr "Nincs találat a keresésre" @@ -1100,7 +1123,7 @@ msgstr "Ismeretlen model: {model}" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:832 +#: src/pages/part/PartDetail.tsx:837 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" @@ -1109,11 +1132,11 @@ msgstr "Alkatrész" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:640 +#: src/pages/part/PartDetail.tsx:645 msgid "Parts" msgstr "Alkatrészek" @@ -1136,7 +1159,7 @@ msgstr "" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "Beszállítói alkatrész" @@ -1160,15 +1183,15 @@ msgid "Part Category" msgstr "Alkatrész kategória" #: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 +#: src/pages/Index/Settings/SystemSettings.tsx:165 #: src/pages/part/CategoryDetail.tsx:249 #: src/pages/part/CategoryDetail.tsx:282 -#: src/pages/part/PartDetail.tsx:822 +#: src/pages/part/PartDetail.tsx:827 msgid "Part Categories" msgstr "Alkatrész kategóriák" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:560 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "Készlet tétel" @@ -1188,7 +1211,7 @@ msgstr "Készlet hely" #: src/components/render/ModelType.tsx:82 #: src/pages/stock/LocationDetail.tsx:185 #: src/pages/stock/LocationDetail.tsx:361 -#: src/pages/stock/StockDetail.tsx:552 +#: src/pages/stock/StockDetail.tsx:554 msgid "Stock Locations" msgstr "Készlethelyek" @@ -1227,7 +1250,7 @@ msgid "Build Lines" msgstr "" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" msgstr "Cég" @@ -1250,17 +1273,17 @@ msgid "Project Codes" msgstr "Projektszámok" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" msgstr "Beszerzési rendelés" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:573 +#: src/pages/part/PartDetail.tsx:579 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" msgstr "Beszerzési rendelések" @@ -1275,16 +1298,16 @@ msgstr "Beszerzési rendelés tételei" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" msgstr "Vevői rendelés" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:579 +#: src/pages/part/PartDetail.tsx:586 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" msgstr "Vevői rendelések" @@ -1298,13 +1321,13 @@ msgid "Sales Order Shipments" msgstr "Vevői rendelés szállítmányok" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" msgstr "Visszavétel" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" @@ -1322,8 +1345,8 @@ msgstr "Címek" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" msgstr "Kapcsolat" @@ -1341,7 +1364,7 @@ msgid "Owners" msgstr "Tulajdonosok" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" msgstr "Felhasználó" @@ -1385,26 +1408,27 @@ msgstr "Szállítmány" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:493 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 #: src/pages/stock/LocationDetail.tsx:345 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" msgstr "Készlet" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:517 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" msgstr "Sorozatszám" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:523 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 @@ -1844,16 +1868,12 @@ msgid "Getting started" msgstr "Első lépések" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "Nem sikerült a kép feltöltése" +#~ msgid "Failed to upload image" +#~ msgstr "Failed to upload image" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "Megjegyzések elmentve" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "Megjegyzések mentése nem sikerült" +#~ msgid "Notes saved" +#~ msgstr "Notes saved" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" @@ -1972,42 +1992,46 @@ msgid "Portuguese (Brazilian)" msgstr "Portugál (Brazíliai)" #: src/contexts/LanguageContext.tsx:43 +msgid "Romanian" +msgstr "" + +#: src/contexts/LanguageContext.tsx:44 msgid "Russian" msgstr "Orosz" -#: src/contexts/LanguageContext.tsx:44 +#: src/contexts/LanguageContext.tsx:45 msgid "Slovak" msgstr "" -#: src/contexts/LanguageContext.tsx:45 +#: src/contexts/LanguageContext.tsx:46 msgid "Slovenian" msgstr "Szlovén" -#: src/contexts/LanguageContext.tsx:46 +#: src/contexts/LanguageContext.tsx:47 msgid "Swedish" msgstr "Svéd" -#: src/contexts/LanguageContext.tsx:47 +#: src/contexts/LanguageContext.tsx:48 msgid "Thai" msgstr "Tháj" -#: src/contexts/LanguageContext.tsx:48 +#: src/contexts/LanguageContext.tsx:49 msgid "Turkish" msgstr "Török" -#: src/contexts/LanguageContext.tsx:49 +#: src/contexts/LanguageContext.tsx:50 msgid "Ukrainian" msgstr "" -#: src/contexts/LanguageContext.tsx:50 +#: src/contexts/LanguageContext.tsx:51 msgid "Vietnamese" msgstr "Vietnámi" -#: src/contexts/LanguageContext.tsx:51 +#: src/contexts/LanguageContext.tsx:52 msgid "Chinese (Simplified)" msgstr "Kínai (egyszerűsített)" -#: src/contexts/LanguageContext.tsx:52 +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" msgstr "Kínai (Hagyományos)" @@ -2021,7 +2045,7 @@ msgstr "Főoldal" #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" msgstr "Irányítópult" @@ -2160,10 +2184,10 @@ msgstr "Demó" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" msgstr "Beszerzés" @@ -2171,15 +2195,15 @@ msgstr "Beszerzés" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" msgstr "Eladás" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" msgstr "Játszótér" @@ -2464,7 +2488,7 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" @@ -2515,7 +2539,7 @@ msgstr "Add meg az új készlet tételhez tartozó sorozatszámokat (vagy hagyd #~ msgstr "Stock item updated" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" @@ -2537,8 +2561,8 @@ msgstr "Mozgatás az alapértelmezett helyre" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:207 -#: src/pages/part/PartDetail.tsx:656 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" msgstr "Készleten" @@ -2560,14 +2584,14 @@ msgid "Actions" msgstr "Műveletek" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" msgstr "Hozzáadás" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" msgstr "Mennyiség" @@ -2580,12 +2604,12 @@ msgid "Remove Stock" msgstr "Készlet csökkentése" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:788 msgid "Transfer Stock" msgstr "Készlet áthelyezése" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:777 msgid "Count Stock" msgstr "Leltározás" @@ -2625,23 +2649,14 @@ msgstr "Szülő készlet hely" #~ msgid "You have been logged out" #~ msgstr "You have been logged out" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" msgstr "Kijelentkezve" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" msgstr "Sikeresen kijelentkeztél" -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "Nézd meg a beérkező levelek mappájában a visszaállítási linket. Ez csak akkor működik, ha van fiókod. Ellenőrizd a spameket is." - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "Visszaállítás sikertelen" - #: src/functions/auth.tsx:141 #~ msgid "Already logged in" #~ msgstr "Already logged in" @@ -2654,11 +2669,20 @@ msgstr "Visszaállítás sikertelen" #~ msgid "Found an existing login - welcome back!" #~ msgstr "Found an existing login - welcome back!" -#: src/functions/auth.tsx:153 +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "Nézd meg a beérkező levelek mappájában a visszaállítási linket. Ez csak akkor működik, ha van fiókod. Ellenőrizd a spameket is." + +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "Visszaállítás sikertelen" + +#: src/functions/auth.tsx:195 msgid "Logged In" msgstr "Bejelentkezve" -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:196 msgid "Successfully logged in" msgstr "Sikeres bejelentkezés" @@ -2796,7 +2820,7 @@ msgstr "Ez az oldal helyettesíti a régi kezdőoldalt, ugyanazokkal az informá msgid "Welcome to your Dashboard{0}" msgstr "Irányítópult: {0}" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." msgstr "Ez az oldal a Platform UI lehetőségeit mutatja be." @@ -3374,15 +3398,15 @@ msgstr "Válassza ki a felhasználói életciklusre vonatkozó beállításokat. msgid "System settings" msgstr "Rendszerbeállítások" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" msgstr "Bejelentkezés" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" msgstr "Vonalkódok" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" msgstr "Árazás" @@ -3394,50 +3418,50 @@ msgstr "Árazás" #~ msgid "Exchange Rates" #~ msgstr "Exchange Rates" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" msgstr "Címkék" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" msgstr "Riportolás" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:591 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" msgstr "Leltár" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:527 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" msgstr "Gyártási utasítások" -#: src/pages/Index/Settings/SystemSettings.tsx:298 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" msgstr "Felhasználói beállításra váltás" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" msgstr "Fiók" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" msgstr "Biztonság" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" msgstr "Megjelenítési beállítások" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" msgstr "Fiókbeállítások" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" msgstr "Rendszer beállításra váltás" @@ -3475,8 +3499,8 @@ msgstr "Megjelölés olvasatlanként" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3489,8 +3513,8 @@ msgstr "Állapot" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" @@ -3501,10 +3525,10 @@ msgstr "Hivatkozás" #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:134 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3537,10 +3561,10 @@ msgid "Issued By" msgstr "" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:322 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 @@ -3555,8 +3579,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" msgstr "Cél dátum" @@ -3594,7 +3618,7 @@ msgstr "" #~ msgstr "Unlink custom barcode from part" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:535 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" msgstr "" @@ -3638,34 +3662,34 @@ msgstr "Alárendelt gyártások" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:613 +#: src/pages/part/PartDetail.tsx:622 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" msgstr "Mellékletek" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:625 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" msgstr "Megjegyzések" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" msgstr "Gyártási utasítás szerkesztése" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" @@ -3676,17 +3700,17 @@ msgstr "Gyártási utasítás létrehozása" #~ msgstr "Reporting Actions" #: src/pages/build/BuildDetail.tsx:374 -#~ msgid "Print build report" -#~ msgstr "Print build report" - -#: src/pages/build/BuildDetail.tsx:378 msgid "Build Order Actions" msgstr "Gyártáshoz foglalások" -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "Print build report" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" msgstr "" @@ -3725,7 +3749,7 @@ msgstr "Beszállító" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" @@ -3733,10 +3757,10 @@ msgstr "Gyártó" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 @@ -3769,12 +3793,12 @@ msgstr "Szállított alkatrészek" msgid "Assigned Stock" msgstr "Hozzárendelt készlet" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" msgstr "Cég szerkesztése" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" msgstr "Cég műveletek" @@ -3804,32 +3828,32 @@ msgid "Manufacturer Part Details" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:487 +#: src/pages/part/PartDetail.tsx:492 msgid "Parameters" msgstr "Paraméterek" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:560 +#: src/pages/part/PartDetail.tsx:566 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" msgstr "Beszállítók" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" msgstr "" @@ -3845,7 +3869,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" msgstr "" @@ -3879,7 +3903,7 @@ msgstr "Beérkezett készlet" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" msgstr "" @@ -3969,85 +3993,85 @@ msgstr "" msgid "Category Details" msgstr "" -#: src/pages/part/PartDetail.tsx:140 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" msgstr "" -#: src/pages/part/PartDetail.tsx:147 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" msgstr "Kategória" -#: src/pages/part/PartDetail.tsx:153 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:167 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" msgstr "IPN" -#: src/pages/part/PartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" msgstr "" -#: src/pages/part/PartDetail.tsx:181 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" msgstr "Mértékegységek" -#: src/pages/part/PartDetail.tsx:188 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" msgstr "" -#: src/pages/part/PartDetail.tsx:195 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" msgstr "Link" -#: src/pages/part/PartDetail.tsx:213 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:220 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" msgstr "Rendelve" -#: src/pages/part/PartDetail.tsx:235 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:243 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:250 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" msgstr "Gyártható" -#: src/pages/part/PartDetail.tsx:257 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" msgstr "Gyártásban" -#: src/pages/part/PartDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -4065,37 +4089,37 @@ msgstr "Gyártásban" msgid "Active" msgstr "Aktív" -#: src/pages/part/PartDetail.tsx:271 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" msgstr "" -#: src/pages/part/PartDetail.tsx:276 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" msgstr "Gyártmány alkatrész" -#: src/pages/part/PartDetail.tsx:281 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" msgstr "" -#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:291 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:296 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" msgstr "" -#: src/pages/part/PartDetail.tsx:309 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" msgstr "Létrehozás dátuma" @@ -4104,7 +4128,7 @@ msgstr "Létrehozás dátuma" #~ msgid "Edit part" #~ msgstr "Edit part" -#: src/pages/part/PartDetail.tsx:314 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" msgstr "Készítette" @@ -4116,69 +4140,71 @@ msgstr "Készítette" #~ msgid "Delete part" #~ msgstr "Delete part" -#: src/pages/part/PartDetail.tsx:329 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" msgstr "Alapértelmezett beszállító" -#: src/pages/part/PartDetail.tsx:340 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" msgstr "Ártartomány" -#: src/pages/part/PartDetail.tsx:375 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" msgstr "Utolsó leltár" -#: src/pages/part/PartDetail.tsx:410 +#: src/pages/part/PartDetail.tsx:415 msgid "Stocktake By" msgstr "Leltárazta" -#: src/pages/part/PartDetail.tsx:481 +#: src/pages/part/PartDetail.tsx:486 msgid "Part Details" msgstr "Alkatrész részletei" -#: src/pages/part/PartDetail.tsx:507 +#: src/pages/part/PartDetail.tsx:512 msgid "Variants" msgstr "Változatok" -#: src/pages/part/PartDetail.tsx:514 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" msgstr "Foglalások" -#: src/pages/part/PartDetail.tsx:520 +#: src/pages/part/PartDetail.tsx:526 msgid "Bill of Materials" msgstr "Alkatrészjegyzék" -#: src/pages/part/PartDetail.tsx:534 +#: src/pages/part/PartDetail.tsx:540 msgid "Used In" msgstr "Felhasználva ebben" -#: src/pages/part/PartDetail.tsx:541 +#: src/pages/part/PartDetail.tsx:547 msgid "Part Pricing" msgstr "Alkatrész árak" -#: src/pages/part/PartDetail.tsx:547 +#: src/pages/part/PartDetail.tsx:553 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" msgstr "Gyártók" -#: src/pages/part/PartDetail.tsx:586 +#: src/pages/part/PartDetail.tsx:593 msgid "Scheduling" msgstr "Ütemezés" -#: src/pages/part/PartDetail.tsx:596 +#: src/pages/part/PartDetail.tsx:605 msgid "Test Templates" msgstr "Teszt sablonok" -#: src/pages/part/PartDetail.tsx:607 +#: src/pages/part/PartDetail.tsx:616 msgid "Related Parts" msgstr "Kapcsolódó alkatrészek" -#: src/pages/part/PartDetail.tsx:662 -#: src/pages/stock/StockDetail.tsx:151 -#: src/pages/stock/StockDetail.tsx:529 +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 @@ -4186,55 +4212,55 @@ msgstr "Kapcsolódó alkatrészek" msgid "Available" msgstr "Elérhető" -#: src/pages/part/PartDetail.tsx:668 +#: src/pages/part/PartDetail.tsx:673 msgid "No Stock" msgstr "Nincs készlet" -#: src/pages/part/PartDetail.tsx:674 +#: src/pages/part/PartDetail.tsx:679 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" msgstr "Rendelve" -#: src/pages/part/PartDetail.tsx:680 -#: src/pages/stock/StockDetail.tsx:512 +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" msgstr "Gyártásban" -#: src/pages/part/PartDetail.tsx:699 +#: src/pages/part/PartDetail.tsx:704 msgid "Edit Part" msgstr "Alkatrész szerkesztése" -#: src/pages/part/PartDetail.tsx:706 +#: src/pages/part/PartDetail.tsx:711 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" msgstr "Alkatrész hozzáadása" -#: src/pages/part/PartDetail.tsx:718 +#: src/pages/part/PartDetail.tsx:723 msgid "Delete Part" msgstr "" -#: src/pages/part/PartDetail.tsx:727 +#: src/pages/part/PartDetail.tsx:732 msgid "Deleting this part cannot be reversed" msgstr "" -#: src/pages/part/PartDetail.tsx:765 +#: src/pages/part/PartDetail.tsx:770 #: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" msgstr "Készlet műveletek" -#: src/pages/part/PartDetail.tsx:773 +#: src/pages/part/PartDetail.tsx:778 msgid "Count part stock" msgstr "Készlet számolása" -#: src/pages/part/PartDetail.tsx:784 +#: src/pages/part/PartDetail.tsx:789 msgid "Transfer part stock" msgstr "Készlet áthelyezése" -#: src/pages/part/PartDetail.tsx:793 +#: src/pages/part/PartDetail.tsx:798 msgid "Part Actions" msgstr "Alkatrész műveletek" @@ -4247,6 +4273,7 @@ msgid "No pricing data found for this part." msgstr "Nincs árazási információ ehhez az alkatrészhez." #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" msgstr "Árazás áttekintés" @@ -4255,54 +4282,32 @@ msgid "Purchase History" msgstr "Beszerzési előzmények" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" msgstr "Belső árazás" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" msgstr "Alkatrészjegyzék árazás" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" msgstr "Alkatrészváltozat árazás" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" msgstr "Eladási ár" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" msgstr "Eladási előzmények" -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "Minimum teljes ár" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "Maximum teljes ár" - +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "Összetevő" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "Egységár" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 @@ -4311,82 +4316,118 @@ msgstr "Egységár" msgid "Total Price" msgstr "Teljes ár" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "Összetevő" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "Minimum ár" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "Maximum ár" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "Minimum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "Maximum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "Egységár" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" msgstr "Frissítve" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" msgstr "Kördiagram" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" msgstr "Oszlopdiagram" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" msgstr "Ársáv hozzáadása" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "Ársáv szerkesztése" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "Ársáv törlése" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "Árlépcső" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "Árkategória" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "Minimum" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "Maximum" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" msgstr "Beszerzési ár" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "Alkatrész árazás felülbírálása" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "Általános árazás" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" msgstr "Legutóbb frissítve" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" -msgstr "Minimum ár" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" +msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" -msgstr "Maximum ár" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" +msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:25 msgid "No data available" @@ -4404,33 +4445,33 @@ msgstr "Ár adatok nem elérhetőek" msgid "Loading pricing data" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" msgstr "Dátum" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "Beszerzési ár" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "Megrendelések" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "Eladási ár" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "Beszállítói ár" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "Alkatrészváltozat" @@ -4450,23 +4491,23 @@ msgstr "Beszállítói azonosító" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" msgstr "Sortételek" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" msgstr "Kész sortételek" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" msgstr "Kész szállítmányok" @@ -4477,46 +4518,46 @@ msgstr "Kész szállítmányok" #~ msgstr "Order Currency," #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" msgstr "Teljes költség" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" msgstr "Létrehozva" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" msgstr "Rendelés részletei" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" msgstr "Rendelés műveletek" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" msgstr "Vevői azonosító" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" @@ -4526,17 +4567,17 @@ msgstr "" msgid "Customers" msgstr "Vevők" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" msgstr "Függő szállítmányok" @@ -4599,11 +4640,11 @@ msgstr "" msgid "Location Actions" msgstr "" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" msgstr "Kiindulási alkatrész" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" msgstr "" @@ -4615,15 +4656,15 @@ msgstr "" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "Unlink custom barcode from stock item" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" msgstr "" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" msgstr "" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" msgstr "" @@ -4636,31 +4677,31 @@ msgstr "" #~ msgid "Delete stock item" #~ msgstr "Delete stock item" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" msgstr "" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" msgstr "Készlettörténet" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" msgstr "Teszt adatok" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" msgstr "Beépített tételek" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" msgstr "Gyermek tételek" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" msgstr "Készlet tétel szerkesztése" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" msgstr "" @@ -4668,34 +4709,34 @@ msgstr "" #~ msgid "Duplicate stock item" #~ msgstr "Duplicate stock item" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" msgstr "Készlet műveletek" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" msgstr "Leltározás" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" msgstr "Készlethez ad" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" msgstr "Készlet csökkentése" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" msgstr "Áthelyezés" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" msgstr "Készlet áthelyezése" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "" @@ -4786,7 +4827,7 @@ msgstr "Szűrő" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" msgstr "Érték" @@ -5224,7 +5265,7 @@ msgid "Required Tests" msgstr "Szükséges tesztek" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" msgstr "Teszt eredmények" @@ -5306,23 +5347,39 @@ msgstr "Feltöltési Hiba" msgid "File could not be uploaded" msgstr "A fájlt nem sikerült feltölteni" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" msgstr "Melléklet törlése" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" msgstr "Melléklet hozzáadása" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" msgstr "Külső hivatkozás hozzáadása" @@ -5330,11 +5387,11 @@ msgstr "Külső hivatkozás hozzáadása" #~ msgid "Upload attachment" #~ msgstr "Upload attachment" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" msgstr "Nem találhatók mellékletek" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "" @@ -5716,75 +5773,75 @@ msgstr "Eredmények" msgid "No Results" msgstr "Nincs találat" -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 msgid "Required" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:80 +#: src/tables/part/PartTestTemplateTable.tsx:85 msgid "Show required tests" msgstr "Szükséges tesztek megjelenítése" -#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" msgstr "Engedélyezett tesztek megjelenítése" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" msgstr "Kötelező adatos tesztek megjelenítése" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:95 +#: src/tables/part/PartTestTemplateTable.tsx:100 msgid "Show tests that require an attachment" msgstr "Kötelező mellékletes tesztek megjelenítése" -#: src/tables/part/PartTestTemplateTable.tsx:99 +#: src/tables/part/PartTestTemplateTable.tsx:104 msgid "Include Inherited" msgstr "Örököltekkel együtt" -#: src/tables/part/PartTestTemplateTable.tsx:100 +#: src/tables/part/PartTestTemplateTable.tsx:105 msgid "Show tests from inherited templates" msgstr "Örökölt sablonos tesztek megjelenítése" -#: src/tables/part/PartTestTemplateTable.tsx:104 +#: src/tables/part/PartTestTemplateTable.tsx:109 msgid "Has Results" msgstr "Van eredmény" -#: src/tables/part/PartTestTemplateTable.tsx:105 +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" msgstr "Rögzített eredményes tesztek megjelenítése" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" msgstr "Teszt sablon hozzáadása" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" msgstr "Teszt sablon szerkesztése" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" msgstr "Teszt sablon törlése" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" msgstr "Ez a művelet nem vonható vissza" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" msgstr "Minden teszt eredmény amit ehhez a sablonhoz rögzítettek elvész" @@ -6273,7 +6330,7 @@ msgid "Task ID" msgstr "" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" msgstr "" @@ -6679,95 +6736,95 @@ msgstr "" msgid "Delete stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 msgid "Delete Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:289 +#: src/tables/stock/StockItemTestResultTable.tsx:273 msgid "Test result deleted" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:303 +#: src/tables/stock/StockItemTestResultTable.tsx:287 msgid "Test Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" msgstr "" diff --git a/src/frontend/src/locales/id/messages.po b/src/frontend/src/locales/id/messages.po index 1b1d1f31ce..c1963c686d 100644 --- a/src/frontend/src/locales/id/messages.po +++ b/src/frontend/src/locales/id/messages.po @@ -8,7 +8,7 @@ msgstr "" "Language: id\n" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-05-23 11:39\n" +"PO-Revision-Date: 2024-06-19 04:50\n" "Last-Translator: \n" "Language-Team: Indonesian\n" "Plural-Forms: nplurals=1; plural=0;\n" @@ -46,48 +46,48 @@ msgstr "" msgid "Label printing completed successfully" msgstr "" -#: src/components/buttons/PrintingActions.tsx:106 -#: src/components/buttons/PrintingActions.tsx:143 -#: src/components/forms/ApiForm.tsx:504 +#: src/components/buttons/PrintingActions.tsx:107 +#: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 +#: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 #: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" msgstr "" -#: src/components/buttons/PrintingActions.tsx:107 +#: src/components/buttons/PrintingActions.tsx:108 msgid "The label could not be generated" msgstr "" -#: src/components/buttons/PrintingActions.tsx:122 +#: src/components/buttons/PrintingActions.tsx:123 msgid "Print Report" msgstr "" -#: src/components/buttons/PrintingActions.tsx:138 +#: src/components/buttons/PrintingActions.tsx:139 msgid "Report printing completed successfully" msgstr "" -#: src/components/buttons/PrintingActions.tsx:144 +#: src/components/buttons/PrintingActions.tsx:145 msgid "The report could not be generated" msgstr "" -#: src/components/buttons/PrintingActions.tsx:171 +#: src/components/buttons/PrintingActions.tsx:173 msgid "Printing Actions" msgstr "" -#: src/components/buttons/PrintingActions.tsx:176 +#: src/components/buttons/PrintingActions.tsx:178 msgid "Print Labels" msgstr "" -#: src/components/buttons/PrintingActions.tsx:182 +#: src/components/buttons/PrintingActions.tsx:184 msgid "Print Reports" msgstr "" @@ -145,7 +145,7 @@ msgstr "" #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" msgstr "" @@ -175,7 +175,7 @@ msgid "Clear" msgstr "" #: src/components/details/DetailsImage.tsx:227 -#: src/components/forms/ApiForm.tsx:571 +#: src/components/forms/ApiForm.tsx:573 #: src/contexts/ThemeContext.tsx:43 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:56 msgid "Submit" @@ -207,9 +207,9 @@ msgstr "" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:685 +#: src/pages/part/PartDetail.tsx:687 msgid "Inactive" msgstr "" @@ -248,6 +248,35 @@ msgstr "" msgid "Virtual" msgstr "" +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "" + #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" msgstr "" @@ -329,26 +358,21 @@ msgstr "" msgid "Error rendering template" msgstr "" -#: src/components/forms/ApiForm.tsx:148 +#: src/components/forms/ApiForm.tsx:149 #: src/functions/forms.tsx:259 msgid "Form Error" msgstr "" -#: src/components/forms/ApiForm.tsx:428 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "" - #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" #~ msgstr "Form Errors Exist" -#: src/components/forms/ApiForm.tsx:609 +#: src/components/forms/ApiForm.tsx:611 #: src/tables/plugin/PluginListTable.tsx:388 msgid "Update" msgstr "" -#: src/components/forms/ApiForm.tsx:629 +#: src/components/forms/ApiForm.tsx:631 #: src/components/items/ActionDropdown.tsx:210 #: src/functions/forms.tsx:299 #: src/hooks/UseForm.tsx:122 @@ -527,7 +551,7 @@ msgstr "" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:126 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -551,7 +575,6 @@ msgid "Add Host" msgstr "" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" msgstr "" @@ -579,20 +602,20 @@ msgstr "" msgid "State: <0>worker ({0}), <1>plugins{1}" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "" @@ -614,7 +637,7 @@ msgid "Thumbnail" msgstr "" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" msgstr "" @@ -859,7 +882,7 @@ msgid "Close modal" msgstr "" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" msgstr "" @@ -967,7 +990,7 @@ msgstr "" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:294 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" msgstr "" @@ -1031,8 +1054,8 @@ msgid "About" msgstr "" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" @@ -1053,13 +1076,6 @@ msgstr "" msgid "Mark as read" msgstr "" -#: src/components/nav/PartCategoryTree.tsx:158 -#: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 -#: src/pages/part/CategoryDetail.tsx:249 -msgid "Part Categories" -msgstr "" - #: src/components/nav/SearchDrawer.tsx:77 msgid "results" msgstr "" @@ -1092,12 +1108,6 @@ msgstr "" msgid "No results available for search query" msgstr "" -#: src/components/nav/StockLocationTree.tsx:93 -#: src/components/render/ModelType.tsx:82 -#: src/pages/stock/LocationDetail.tsx:185 -msgid "Stock Locations" -msgstr "" - #: src/components/render/Instance.tsx:166 msgid "Unknown model: {model}" msgstr "" @@ -1113,7 +1123,7 @@ msgstr "" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:828 +#: src/pages/part/PartDetail.tsx:833 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" @@ -1122,11 +1132,11 @@ msgstr "" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:639 +#: src/pages/part/PartDetail.tsx:641 msgid "Parts" msgstr "" @@ -1149,7 +1159,7 @@ msgstr "" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "" @@ -1168,12 +1178,20 @@ msgid "Manufacturer Parts" msgstr "" #: src/components/render/ModelType.tsx:63 -#: src/pages/part/CategoryDetail.tsx:288 +#: src/pages/part/CategoryDetail.tsx:291 msgid "Part Category" msgstr "" +#: src/components/render/ModelType.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:165 +#: src/pages/part/CategoryDetail.tsx:249 +#: src/pages/part/CategoryDetail.tsx:282 +#: src/pages/part/PartDetail.tsx:823 +msgid "Part Categories" +msgstr "" + #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:548 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "" @@ -1182,7 +1200,7 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:199 #: src/pages/stock/LocationDetail.tsx:118 #: src/pages/stock/LocationDetail.tsx:171 -#: src/pages/stock/LocationDetail.tsx:365 +#: src/pages/stock/LocationDetail.tsx:369 msgid "Stock Items" msgstr "" @@ -1190,6 +1208,13 @@ msgstr "" msgid "Stock Location" msgstr "" +#: src/components/render/ModelType.tsx:82 +#: src/pages/stock/LocationDetail.tsx:185 +#: src/pages/stock/LocationDetail.tsx:361 +#: src/pages/stock/StockDetail.tsx:554 +msgid "Stock Locations" +msgstr "" + #: src/components/render/ModelType.tsx:90 msgid "Stock Location Type" msgstr "" @@ -1225,7 +1250,7 @@ msgid "Build Lines" msgstr "" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" msgstr "" @@ -1248,17 +1273,17 @@ msgid "Project Codes" msgstr "" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" msgstr "" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:572 +#: src/pages/part/PartDetail.tsx:575 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" msgstr "" @@ -1273,16 +1298,16 @@ msgstr "" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" msgstr "" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:578 +#: src/pages/part/PartDetail.tsx:582 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" msgstr "" @@ -1296,13 +1321,13 @@ msgid "Sales Order Shipments" msgstr "" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" msgstr "" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:273 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" @@ -1320,8 +1345,8 @@ msgstr "" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" msgstr "" @@ -1339,7 +1364,7 @@ msgid "Owners" msgstr "" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" msgstr "" @@ -1383,26 +1408,27 @@ msgstr "" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:492 -#: src/pages/stock/LocationDetail.tsx:344 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:494 +#: src/pages/stock/LocationDetail.tsx:345 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" msgstr "" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:514 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" msgstr "" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:520 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 @@ -1842,16 +1868,12 @@ msgid "Getting started" msgstr "" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Failed to upload image" +#~ msgstr "Failed to upload image" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "" +#~ msgid "Notes saved" +#~ msgstr "Notes saved" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" @@ -1970,42 +1992,46 @@ msgid "Portuguese (Brazilian)" msgstr "" #: src/contexts/LanguageContext.tsx:43 -msgid "Russian" +msgid "Romanian" msgstr "" #: src/contexts/LanguageContext.tsx:44 -msgid "Slovak" +msgid "Russian" msgstr "" #: src/contexts/LanguageContext.tsx:45 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: src/contexts/LanguageContext.tsx:46 -msgid "Swedish" +msgid "Slovenian" msgstr "" #: src/contexts/LanguageContext.tsx:47 -msgid "Thai" +msgid "Swedish" msgstr "" #: src/contexts/LanguageContext.tsx:48 -msgid "Turkish" +msgid "Thai" msgstr "" #: src/contexts/LanguageContext.tsx:49 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: src/contexts/LanguageContext.tsx:50 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: src/contexts/LanguageContext.tsx:51 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: src/contexts/LanguageContext.tsx:52 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" msgstr "" @@ -2019,7 +2045,7 @@ msgstr "" #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" msgstr "" @@ -2158,10 +2184,10 @@ msgstr "" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" msgstr "" @@ -2169,15 +2195,15 @@ msgstr "" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" msgstr "" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" msgstr "" @@ -2462,7 +2488,7 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" @@ -2513,7 +2539,7 @@ msgstr "" #~ msgstr "Stock item updated" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" @@ -2535,8 +2561,8 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:206 -#: src/pages/part/PartDetail.tsx:655 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:657 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" msgstr "" @@ -2558,14 +2584,14 @@ msgid "Actions" msgstr "" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" msgstr "" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" msgstr "" @@ -2578,12 +2604,12 @@ msgid "Remove Stock" msgstr "" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:782 +#: src/pages/part/PartDetail.tsx:784 msgid "Transfer Stock" msgstr "" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:771 +#: src/pages/part/PartDetail.tsx:773 msgid "Count Stock" msgstr "" @@ -2794,7 +2820,7 @@ msgstr "" msgid "Welcome to your Dashboard{0}" msgstr "" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." msgstr "" @@ -3372,15 +3398,15 @@ msgstr "" msgid "System settings" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" msgstr "" @@ -3392,50 +3418,50 @@ msgstr "" #~ msgid "Exchange Rates" #~ msgstr "Exchange Rates" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:590 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:595 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:526 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:529 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:297 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" msgstr "" @@ -3473,8 +3499,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3487,8 +3513,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" @@ -3499,10 +3525,10 @@ msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:133 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3535,10 +3561,10 @@ msgid "Issued By" msgstr "" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:321 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 @@ -3553,8 +3579,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" msgstr "" @@ -3592,7 +3618,7 @@ msgstr "" #~ msgstr "Unlink custom barcode from part" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:526 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" msgstr "" @@ -3636,34 +3662,34 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:612 +#: src/pages/part/PartDetail.tsx:618 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" msgstr "" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:624 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:626 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" msgstr "" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" @@ -3674,17 +3700,17 @@ msgstr "" #~ msgstr "Reporting Actions" #: src/pages/build/BuildDetail.tsx:374 -#~ msgid "Print build report" -#~ msgstr "Print build report" - -#: src/pages/build/BuildDetail.tsx:378 msgid "Build Order Actions" msgstr "" -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "Print build report" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" msgstr "" @@ -3723,7 +3749,7 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" @@ -3731,10 +3757,10 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 @@ -3767,12 +3793,12 @@ msgstr "" msgid "Assigned Stock" msgstr "" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" msgstr "" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" msgstr "" @@ -3802,32 +3828,32 @@ msgid "Manufacturer Part Details" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:486 +#: src/pages/part/PartDetail.tsx:488 msgid "Parameters" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:559 +#: src/pages/part/PartDetail.tsx:562 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" msgstr "" @@ -3843,7 +3869,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" msgstr "" @@ -3877,7 +3903,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" msgstr "" @@ -3967,85 +3993,85 @@ msgstr "" msgid "Category Details" msgstr "" -#: src/pages/part/PartDetail.tsx:139 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" msgstr "" -#: src/pages/part/PartDetail.tsx:146 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" msgstr "" -#: src/pages/part/PartDetail.tsx:152 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:159 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:166 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" msgstr "" -#: src/pages/part/PartDetail.tsx:173 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" msgstr "" -#: src/pages/part/PartDetail.tsx:180 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" msgstr "" -#: src/pages/part/PartDetail.tsx:187 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" msgstr "" -#: src/pages/part/PartDetail.tsx:194 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" msgstr "" -#: src/pages/part/PartDetail.tsx:212 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:219 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:225 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" msgstr "" -#: src/pages/part/PartDetail.tsx:234 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:242 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:249 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" msgstr "" -#: src/pages/part/PartDetail.tsx:256 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" msgstr "" -#: src/pages/part/PartDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -4063,37 +4089,37 @@ msgstr "" msgid "Active" msgstr "" -#: src/pages/part/PartDetail.tsx:270 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" msgstr "" -#: src/pages/part/PartDetail.tsx:275 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" msgstr "" -#: src/pages/part/PartDetail.tsx:280 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" msgstr "" -#: src/pages/part/PartDetail.tsx:285 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:290 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:295 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:300 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" msgstr "" -#: src/pages/part/PartDetail.tsx:308 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" msgstr "" @@ -4102,7 +4128,7 @@ msgstr "" #~ msgid "Edit part" #~ msgstr "Edit part" -#: src/pages/part/PartDetail.tsx:313 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" msgstr "" @@ -4114,68 +4140,71 @@ msgstr "" #~ msgid "Delete part" #~ msgstr "Delete part" -#: src/pages/part/PartDetail.tsx:328 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" msgstr "" -#: src/pages/part/PartDetail.tsx:339 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" msgstr "" -#: src/pages/part/PartDetail.tsx:374 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:376 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" msgstr "" -#: src/pages/part/PartDetail.tsx:409 +#: src/pages/part/PartDetail.tsx:411 msgid "Stocktake By" msgstr "" -#: src/pages/part/PartDetail.tsx:480 +#: src/pages/part/PartDetail.tsx:482 msgid "Part Details" msgstr "" -#: src/pages/part/PartDetail.tsx:506 +#: src/pages/part/PartDetail.tsx:508 msgid "Variants" msgstr "" -#: src/pages/part/PartDetail.tsx:513 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:515 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" msgstr "" -#: src/pages/part/PartDetail.tsx:519 +#: src/pages/part/PartDetail.tsx:522 msgid "Bill of Materials" msgstr "" -#: src/pages/part/PartDetail.tsx:533 +#: src/pages/part/PartDetail.tsx:536 msgid "Used In" msgstr "" -#: src/pages/part/PartDetail.tsx:540 +#: src/pages/part/PartDetail.tsx:543 msgid "Part Pricing" msgstr "" -#: src/pages/part/PartDetail.tsx:546 +#: src/pages/part/PartDetail.tsx:549 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" msgstr "" -#: src/pages/part/PartDetail.tsx:585 +#: src/pages/part/PartDetail.tsx:589 msgid "Scheduling" msgstr "" -#: src/pages/part/PartDetail.tsx:595 +#: src/pages/part/PartDetail.tsx:601 msgid "Test Templates" msgstr "" -#: src/pages/part/PartDetail.tsx:606 +#: src/pages/part/PartDetail.tsx:612 msgid "Related Parts" msgstr "" -#: src/pages/part/PartDetail.tsx:661 -#: src/pages/stock/StockDetail.tsx:151 +#: src/pages/part/PartDetail.tsx:663 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 @@ -4183,55 +4212,55 @@ msgstr "" msgid "Available" msgstr "" -#: src/pages/part/PartDetail.tsx:667 +#: src/pages/part/PartDetail.tsx:669 msgid "No Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:673 +#: src/pages/part/PartDetail.tsx:675 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" msgstr "" -#: src/pages/part/PartDetail.tsx:679 -#: src/pages/stock/StockDetail.tsx:509 +#: src/pages/part/PartDetail.tsx:681 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" msgstr "" -#: src/pages/part/PartDetail.tsx:698 +#: src/pages/part/PartDetail.tsx:700 msgid "Edit Part" msgstr "" -#: src/pages/part/PartDetail.tsx:705 +#: src/pages/part/PartDetail.tsx:707 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" msgstr "" -#: src/pages/part/PartDetail.tsx:717 +#: src/pages/part/PartDetail.tsx:719 msgid "Delete Part" msgstr "" -#: src/pages/part/PartDetail.tsx:726 +#: src/pages/part/PartDetail.tsx:728 msgid "Deleting this part cannot be reversed" msgstr "" -#: src/pages/part/PartDetail.tsx:764 -#: src/pages/stock/LocationDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:766 +#: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" msgstr "" -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:774 msgid "Count part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:785 msgid "Transfer part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:792 +#: src/pages/part/PartDetail.tsx:794 msgid "Part Actions" msgstr "" @@ -4244,6 +4273,7 @@ msgid "No pricing data found for this part." msgstr "" #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" msgstr "" @@ -4252,54 +4282,32 @@ msgid "Purchase History" msgstr "" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "" - +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 @@ -4308,81 +4316,117 @@ msgstr "" msgid "Total Price" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "Minimum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "Maximum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:25 @@ -4401,33 +4445,33 @@ msgstr "" msgid "Loading pricing data" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "" @@ -4447,23 +4491,23 @@ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" msgstr "" @@ -4474,46 +4518,46 @@ msgstr "" #~ msgstr "Order Currency," #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" msgstr "" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" @@ -4523,17 +4567,17 @@ msgstr "" msgid "Customers" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" msgstr "" @@ -4566,13 +4610,13 @@ msgid "Default Parts" msgstr "" #: src/pages/stock/LocationDetail.tsx:210 -#: src/pages/stock/LocationDetail.tsx:328 +#: src/pages/stock/LocationDetail.tsx:329 #: src/tables/stock/StockLocationTable.tsx:100 msgid "Edit Stock Location" msgstr "" #: src/pages/stock/LocationDetail.tsx:231 -#: src/pages/stock/LocationDetail.tsx:333 +#: src/pages/stock/LocationDetail.tsx:334 msgid "Delete Stock Location" msgstr "" @@ -4592,15 +4636,15 @@ msgstr "" msgid "Action for child locations in this location" msgstr "" -#: src/pages/stock/LocationDetail.tsx:323 +#: src/pages/stock/LocationDetail.tsx:324 msgid "Location Actions" msgstr "" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" msgstr "" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" msgstr "" @@ -4612,15 +4656,15 @@ msgstr "" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "Unlink custom barcode from stock item" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" msgstr "" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" msgstr "" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" msgstr "" @@ -4633,31 +4677,31 @@ msgstr "" #~ msgid "Delete stock item" #~ msgstr "Delete stock item" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" msgstr "" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" msgstr "" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" msgstr "" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" msgstr "" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" msgstr "" @@ -4665,34 +4709,34 @@ msgstr "" #~ msgid "Duplicate stock item" #~ msgstr "Duplicate stock item" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" msgstr "" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" msgstr "" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "" @@ -4783,7 +4827,7 @@ msgstr "" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" msgstr "" @@ -5221,7 +5265,7 @@ msgid "Required Tests" msgstr "" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" msgstr "" @@ -5303,23 +5347,39 @@ msgstr "" msgid "File could not be uploaded" msgstr "" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" msgstr "" @@ -5327,11 +5387,11 @@ msgstr "" #~ msgid "Upload attachment" #~ msgstr "Upload attachment" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" msgstr "" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "" @@ -5500,20 +5560,20 @@ msgstr "" msgid "Message" msgstr "" -#: src/tables/part/ParametricPartTable.tsx:75 +#: src/tables/part/ParametricPartTable.tsx:76 #: src/tables/part/PartParameterTable.tsx:88 msgid "Internal Units" msgstr "" -#: src/tables/part/ParametricPartTable.tsx:80 +#: src/tables/part/ParametricPartTable.tsx:81 msgid "Edit parameter" msgstr "" -#: src/tables/part/ParametricPartTable.tsx:133 +#: src/tables/part/ParametricPartTable.tsx:124 msgid "Add Part Parameter" msgstr "" -#: src/tables/part/ParametricPartTable.tsx:147 +#: src/tables/part/ParametricPartTable.tsx:138 #: src/tables/part/PartParameterTable.tsx:121 #: src/tables/part/PartParameterTable.tsx:144 msgid "Edit Part Parameter" @@ -5713,75 +5773,75 @@ msgstr "" msgid "No Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 msgid "Required" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:80 +#: src/tables/part/PartTestTemplateTable.tsx:85 msgid "Show required tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:95 +#: src/tables/part/PartTestTemplateTable.tsx:100 msgid "Show tests that require an attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:99 +#: src/tables/part/PartTestTemplateTable.tsx:104 msgid "Include Inherited" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:100 +#: src/tables/part/PartTestTemplateTable.tsx:105 msgid "Show tests from inherited templates" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:104 +#: src/tables/part/PartTestTemplateTable.tsx:109 msgid "Has Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:105 +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" msgstr "" @@ -6270,7 +6330,7 @@ msgid "Task ID" msgstr "" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" msgstr "" @@ -6676,95 +6736,95 @@ msgstr "" msgid "Delete stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 msgid "Delete Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:289 +#: src/tables/stock/StockItemTestResultTable.tsx:273 msgid "Test result deleted" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:303 +#: src/tables/stock/StockItemTestResultTable.tsx:287 msgid "Test Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" msgstr "" diff --git a/src/frontend/src/locales/it/messages.po b/src/frontend/src/locales/it/messages.po index 80038bff3f..f77ecda403 100644 --- a/src/frontend/src/locales/it/messages.po +++ b/src/frontend/src/locales/it/messages.po @@ -8,7 +8,7 @@ msgstr "" "Language: it\n" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-05-23 11:38\n" +"PO-Revision-Date: 2024-06-19 04:49\n" "Last-Translator: \n" "Language-Team: Italian\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -48,18 +48,18 @@ msgstr "" #: src/components/buttons/PrintingActions.tsx:107 #: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 #: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 -#: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 +#: src/components/nav/SearchDrawer.tsx:427 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" msgstr "" @@ -121,15 +121,15 @@ msgstr "" msgid "No" msgstr "" -#: src/components/details/Details.tsx:303 +#: src/components/details/Details.tsx:305 msgid "No name defined" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copied" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copy" msgstr "" @@ -145,7 +145,7 @@ msgstr "" #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" msgstr "" @@ -207,9 +207,9 @@ msgstr "" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:686 +#: src/pages/part/PartDetail.tsx:691 msgid "Inactive" msgstr "" @@ -248,6 +248,35 @@ msgstr "L'Articolo è virtuale (non è un articolo fisico)" msgid "Virtual" msgstr "Virtuale" +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "" + #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" msgstr "Codice" @@ -334,11 +363,6 @@ msgstr "" msgid "Form Error" msgstr "" -#: src/components/forms/ApiForm.tsx:430 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "" - #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" #~ msgstr "Form Errors Exist" @@ -389,7 +413,7 @@ msgstr "" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." msgstr "" @@ -399,7 +423,7 @@ msgstr "" #~ msgstr "Mail delivery successfull" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" msgstr "" @@ -527,7 +551,7 @@ msgstr "" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:127 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -551,7 +575,6 @@ msgid "Add Host" msgstr "" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" msgstr "" @@ -579,20 +602,20 @@ msgstr "" msgid "State: <0>worker ({0}), <1>plugins{1}" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "" @@ -614,7 +637,7 @@ msgid "Thumbnail" msgstr "" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" msgstr "" @@ -859,7 +882,7 @@ msgid "Close modal" msgstr "" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" msgstr "" @@ -967,7 +990,7 @@ msgstr "" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:295 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" msgstr "" @@ -1031,8 +1054,8 @@ msgid "About" msgstr "" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" @@ -1053,35 +1076,35 @@ msgstr "" msgid "Mark as read" msgstr "" -#: src/components/nav/SearchDrawer.tsx:77 +#: src/components/nav/SearchDrawer.tsx:78 msgid "results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:337 +#: src/components/nav/SearchDrawer.tsx:349 msgid "Enter search text" msgstr "" -#: src/components/nav/SearchDrawer.tsx:364 +#: src/components/nav/SearchDrawer.tsx:376 msgid "Search Options" msgstr "" -#: src/components/nav/SearchDrawer.tsx:367 +#: src/components/nav/SearchDrawer.tsx:379 msgid "Regex search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:377 +#: src/components/nav/SearchDrawer.tsx:389 msgid "Whole word search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:416 +#: src/components/nav/SearchDrawer.tsx:430 msgid "An error occurred during search query" msgstr "" -#: src/components/nav/SearchDrawer.tsx:427 +#: src/components/nav/SearchDrawer.tsx:441 msgid "No results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:430 +#: src/components/nav/SearchDrawer.tsx:444 msgid "No results available for search query" msgstr "" @@ -1100,7 +1123,7 @@ msgstr "" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:832 +#: src/pages/part/PartDetail.tsx:837 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" @@ -1109,11 +1132,11 @@ msgstr "" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:640 +#: src/pages/part/PartDetail.tsx:645 msgid "Parts" msgstr "" @@ -1136,7 +1159,7 @@ msgstr "" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "" @@ -1160,15 +1183,15 @@ msgid "Part Category" msgstr "" #: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 +#: src/pages/Index/Settings/SystemSettings.tsx:165 #: src/pages/part/CategoryDetail.tsx:249 #: src/pages/part/CategoryDetail.tsx:282 -#: src/pages/part/PartDetail.tsx:822 +#: src/pages/part/PartDetail.tsx:827 msgid "Part Categories" msgstr "" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:560 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "" @@ -1188,7 +1211,7 @@ msgstr "" #: src/components/render/ModelType.tsx:82 #: src/pages/stock/LocationDetail.tsx:185 #: src/pages/stock/LocationDetail.tsx:361 -#: src/pages/stock/StockDetail.tsx:552 +#: src/pages/stock/StockDetail.tsx:554 msgid "Stock Locations" msgstr "" @@ -1227,7 +1250,7 @@ msgid "Build Lines" msgstr "" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" msgstr "" @@ -1250,17 +1273,17 @@ msgid "Project Codes" msgstr "" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" msgstr "" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:573 +#: src/pages/part/PartDetail.tsx:579 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" msgstr "" @@ -1275,16 +1298,16 @@ msgstr "" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" msgstr "" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:579 +#: src/pages/part/PartDetail.tsx:586 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" msgstr "" @@ -1298,13 +1321,13 @@ msgid "Sales Order Shipments" msgstr "" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" msgstr "" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" @@ -1322,8 +1345,8 @@ msgstr "" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" msgstr "" @@ -1341,7 +1364,7 @@ msgid "Owners" msgstr "" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" msgstr "" @@ -1385,26 +1408,27 @@ msgstr "" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:493 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 #: src/pages/stock/LocationDetail.tsx:345 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" msgstr "" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:517 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" msgstr "" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:523 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 @@ -1844,16 +1868,12 @@ msgid "Getting started" msgstr "" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Failed to upload image" +#~ msgstr "Failed to upload image" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "" +#~ msgid "Notes saved" +#~ msgstr "Notes saved" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" @@ -1972,42 +1992,46 @@ msgid "Portuguese (Brazilian)" msgstr "" #: src/contexts/LanguageContext.tsx:43 -msgid "Russian" +msgid "Romanian" msgstr "" #: src/contexts/LanguageContext.tsx:44 -msgid "Slovak" +msgid "Russian" msgstr "" #: src/contexts/LanguageContext.tsx:45 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: src/contexts/LanguageContext.tsx:46 -msgid "Swedish" +msgid "Slovenian" msgstr "" #: src/contexts/LanguageContext.tsx:47 -msgid "Thai" +msgid "Swedish" msgstr "" #: src/contexts/LanguageContext.tsx:48 -msgid "Turkish" +msgid "Thai" msgstr "" #: src/contexts/LanguageContext.tsx:49 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: src/contexts/LanguageContext.tsx:50 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: src/contexts/LanguageContext.tsx:51 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: src/contexts/LanguageContext.tsx:52 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" msgstr "" @@ -2021,7 +2045,7 @@ msgstr "" #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" msgstr "" @@ -2160,10 +2184,10 @@ msgstr "" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" msgstr "" @@ -2171,15 +2195,15 @@ msgstr "" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" msgstr "" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" msgstr "" @@ -2464,7 +2488,7 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" @@ -2515,7 +2539,7 @@ msgstr "" #~ msgstr "Stock item updated" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" @@ -2537,8 +2561,8 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:207 -#: src/pages/part/PartDetail.tsx:656 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" msgstr "" @@ -2560,14 +2584,14 @@ msgid "Actions" msgstr "" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" msgstr "" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" msgstr "" @@ -2580,12 +2604,12 @@ msgid "Remove Stock" msgstr "" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:788 msgid "Transfer Stock" msgstr "" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:777 msgid "Count Stock" msgstr "" @@ -2625,23 +2649,14 @@ msgstr "" #~ msgid "You have been logged out" #~ msgstr "You have been logged out" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" msgstr "" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" msgstr "" -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "" - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "" - #: src/functions/auth.tsx:141 #~ msgid "Already logged in" #~ msgstr "Already logged in" @@ -2654,11 +2669,20 @@ msgstr "" #~ msgid "Found an existing login - welcome back!" #~ msgstr "Found an existing login - welcome back!" -#: src/functions/auth.tsx:153 +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "" + +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "" + +#: src/functions/auth.tsx:195 msgid "Logged In" msgstr "" -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:196 msgid "Successfully logged in" msgstr "" @@ -2796,7 +2820,7 @@ msgstr "" msgid "Welcome to your Dashboard{0}" msgstr "" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." msgstr "" @@ -3374,15 +3398,15 @@ msgstr "" msgid "System settings" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" msgstr "" @@ -3394,50 +3418,50 @@ msgstr "" #~ msgid "Exchange Rates" #~ msgstr "Exchange Rates" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:591 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:527 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:298 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" msgstr "" @@ -3475,8 +3499,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3489,8 +3513,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" @@ -3501,10 +3525,10 @@ msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:134 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3537,10 +3561,10 @@ msgid "Issued By" msgstr "" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:322 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 @@ -3555,8 +3579,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" msgstr "" @@ -3594,7 +3618,7 @@ msgstr "" #~ msgstr "Unlink custom barcode from part" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:535 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" msgstr "" @@ -3638,34 +3662,34 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:613 +#: src/pages/part/PartDetail.tsx:622 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" msgstr "" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:625 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" msgstr "" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" @@ -3676,17 +3700,17 @@ msgstr "" #~ msgstr "Reporting Actions" #: src/pages/build/BuildDetail.tsx:374 -#~ msgid "Print build report" -#~ msgstr "Print build report" - -#: src/pages/build/BuildDetail.tsx:378 msgid "Build Order Actions" msgstr "" -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "Print build report" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" msgstr "" @@ -3725,7 +3749,7 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" @@ -3733,10 +3757,10 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 @@ -3769,12 +3793,12 @@ msgstr "" msgid "Assigned Stock" msgstr "" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" msgstr "" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" msgstr "" @@ -3804,32 +3828,32 @@ msgid "Manufacturer Part Details" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:487 +#: src/pages/part/PartDetail.tsx:492 msgid "Parameters" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:560 +#: src/pages/part/PartDetail.tsx:566 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" msgstr "" @@ -3845,7 +3869,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" msgstr "" @@ -3879,7 +3903,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" msgstr "" @@ -3969,85 +3993,85 @@ msgstr "" msgid "Category Details" msgstr "" -#: src/pages/part/PartDetail.tsx:140 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" msgstr "" -#: src/pages/part/PartDetail.tsx:147 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" msgstr "" -#: src/pages/part/PartDetail.tsx:153 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:167 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" msgstr "" -#: src/pages/part/PartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" msgstr "" -#: src/pages/part/PartDetail.tsx:181 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" msgstr "" -#: src/pages/part/PartDetail.tsx:188 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" msgstr "" -#: src/pages/part/PartDetail.tsx:195 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" msgstr "" -#: src/pages/part/PartDetail.tsx:213 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:220 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" msgstr "" -#: src/pages/part/PartDetail.tsx:235 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:243 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:250 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" msgstr "" -#: src/pages/part/PartDetail.tsx:257 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" msgstr "" -#: src/pages/part/PartDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -4065,37 +4089,37 @@ msgstr "" msgid "Active" msgstr "" -#: src/pages/part/PartDetail.tsx:271 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" msgstr "" -#: src/pages/part/PartDetail.tsx:276 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" msgstr "" -#: src/pages/part/PartDetail.tsx:281 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" msgstr "" -#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:291 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:296 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" msgstr "" -#: src/pages/part/PartDetail.tsx:309 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" msgstr "" @@ -4104,7 +4128,7 @@ msgstr "" #~ msgid "Edit part" #~ msgstr "Edit part" -#: src/pages/part/PartDetail.tsx:314 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" msgstr "" @@ -4116,69 +4140,71 @@ msgstr "" #~ msgid "Delete part" #~ msgstr "Delete part" -#: src/pages/part/PartDetail.tsx:329 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" msgstr "" -#: src/pages/part/PartDetail.tsx:340 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" msgstr "" -#: src/pages/part/PartDetail.tsx:375 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" msgstr "" -#: src/pages/part/PartDetail.tsx:410 +#: src/pages/part/PartDetail.tsx:415 msgid "Stocktake By" msgstr "" -#: src/pages/part/PartDetail.tsx:481 +#: src/pages/part/PartDetail.tsx:486 msgid "Part Details" msgstr "" -#: src/pages/part/PartDetail.tsx:507 +#: src/pages/part/PartDetail.tsx:512 msgid "Variants" msgstr "" -#: src/pages/part/PartDetail.tsx:514 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" msgstr "" -#: src/pages/part/PartDetail.tsx:520 +#: src/pages/part/PartDetail.tsx:526 msgid "Bill of Materials" msgstr "" -#: src/pages/part/PartDetail.tsx:534 +#: src/pages/part/PartDetail.tsx:540 msgid "Used In" msgstr "" -#: src/pages/part/PartDetail.tsx:541 +#: src/pages/part/PartDetail.tsx:547 msgid "Part Pricing" msgstr "" -#: src/pages/part/PartDetail.tsx:547 +#: src/pages/part/PartDetail.tsx:553 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" msgstr "" -#: src/pages/part/PartDetail.tsx:586 +#: src/pages/part/PartDetail.tsx:593 msgid "Scheduling" msgstr "" -#: src/pages/part/PartDetail.tsx:596 +#: src/pages/part/PartDetail.tsx:605 msgid "Test Templates" msgstr "" -#: src/pages/part/PartDetail.tsx:607 +#: src/pages/part/PartDetail.tsx:616 msgid "Related Parts" msgstr "" -#: src/pages/part/PartDetail.tsx:662 -#: src/pages/stock/StockDetail.tsx:151 -#: src/pages/stock/StockDetail.tsx:529 +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 @@ -4186,55 +4212,55 @@ msgstr "" msgid "Available" msgstr "" -#: src/pages/part/PartDetail.tsx:668 +#: src/pages/part/PartDetail.tsx:673 msgid "No Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:674 +#: src/pages/part/PartDetail.tsx:679 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" msgstr "" -#: src/pages/part/PartDetail.tsx:680 -#: src/pages/stock/StockDetail.tsx:512 +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" msgstr "" -#: src/pages/part/PartDetail.tsx:699 +#: src/pages/part/PartDetail.tsx:704 msgid "Edit Part" msgstr "" -#: src/pages/part/PartDetail.tsx:706 +#: src/pages/part/PartDetail.tsx:711 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" msgstr "" -#: src/pages/part/PartDetail.tsx:718 +#: src/pages/part/PartDetail.tsx:723 msgid "Delete Part" msgstr "" -#: src/pages/part/PartDetail.tsx:727 +#: src/pages/part/PartDetail.tsx:732 msgid "Deleting this part cannot be reversed" msgstr "" -#: src/pages/part/PartDetail.tsx:765 +#: src/pages/part/PartDetail.tsx:770 #: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" msgstr "" -#: src/pages/part/PartDetail.tsx:773 +#: src/pages/part/PartDetail.tsx:778 msgid "Count part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:784 +#: src/pages/part/PartDetail.tsx:789 msgid "Transfer part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:793 +#: src/pages/part/PartDetail.tsx:798 msgid "Part Actions" msgstr "" @@ -4247,6 +4273,7 @@ msgid "No pricing data found for this part." msgstr "" #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" msgstr "" @@ -4255,54 +4282,32 @@ msgid "Purchase History" msgstr "" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "" - +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 @@ -4311,81 +4316,117 @@ msgstr "" msgid "Total Price" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "Minimum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "Maximum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:25 @@ -4404,33 +4445,33 @@ msgstr "" msgid "Loading pricing data" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "" @@ -4450,23 +4491,23 @@ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" msgstr "" @@ -4477,46 +4518,46 @@ msgstr "" #~ msgstr "Order Currency," #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" msgstr "" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" @@ -4526,17 +4567,17 @@ msgstr "" msgid "Customers" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" msgstr "" @@ -4599,11 +4640,11 @@ msgstr "" msgid "Location Actions" msgstr "" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" msgstr "" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" msgstr "" @@ -4615,15 +4656,15 @@ msgstr "" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "Unlink custom barcode from stock item" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" msgstr "" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" msgstr "" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" msgstr "" @@ -4636,31 +4677,31 @@ msgstr "" #~ msgid "Delete stock item" #~ msgstr "Delete stock item" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" msgstr "" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" msgstr "" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" msgstr "" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" msgstr "" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" msgstr "" @@ -4668,34 +4709,34 @@ msgstr "" #~ msgid "Duplicate stock item" #~ msgstr "Duplicate stock item" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" msgstr "" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" msgstr "" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "" @@ -4786,7 +4827,7 @@ msgstr "" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" msgstr "" @@ -5224,7 +5265,7 @@ msgid "Required Tests" msgstr "" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" msgstr "" @@ -5306,23 +5347,39 @@ msgstr "" msgid "File could not be uploaded" msgstr "" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" msgstr "" @@ -5330,11 +5387,11 @@ msgstr "" #~ msgid "Upload attachment" #~ msgstr "Upload attachment" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" msgstr "" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "" @@ -5716,75 +5773,75 @@ msgstr "" msgid "No Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 msgid "Required" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:80 +#: src/tables/part/PartTestTemplateTable.tsx:85 msgid "Show required tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:95 +#: src/tables/part/PartTestTemplateTable.tsx:100 msgid "Show tests that require an attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:99 +#: src/tables/part/PartTestTemplateTable.tsx:104 msgid "Include Inherited" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:100 +#: src/tables/part/PartTestTemplateTable.tsx:105 msgid "Show tests from inherited templates" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:104 +#: src/tables/part/PartTestTemplateTable.tsx:109 msgid "Has Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:105 +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" msgstr "" @@ -6273,7 +6330,7 @@ msgid "Task ID" msgstr "" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" msgstr "" @@ -6679,95 +6736,95 @@ msgstr "" msgid "Delete stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 msgid "Delete Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:289 +#: src/tables/stock/StockItemTestResultTable.tsx:273 msgid "Test result deleted" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:303 +#: src/tables/stock/StockItemTestResultTable.tsx:287 msgid "Test Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" msgstr "" diff --git a/src/frontend/src/locales/ja/messages.po b/src/frontend/src/locales/ja/messages.po index 56228aa92d..f930c60b08 100644 --- a/src/frontend/src/locales/ja/messages.po +++ b/src/frontend/src/locales/ja/messages.po @@ -8,7 +8,7 @@ msgstr "" "Language: ja\n" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-05-23 11:38\n" +"PO-Revision-Date: 2024-06-19 04:49\n" "Last-Translator: \n" "Language-Team: Japanese\n" "Plural-Forms: nplurals=1; plural=0;\n" @@ -48,18 +48,18 @@ msgstr "" #: src/components/buttons/PrintingActions.tsx:107 #: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 #: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 -#: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 +#: src/components/nav/SearchDrawer.tsx:427 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" msgstr "エラー" @@ -121,15 +121,15 @@ msgstr "" msgid "No" msgstr "" -#: src/components/details/Details.tsx:303 +#: src/components/details/Details.tsx:305 msgid "No name defined" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copied" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copy" msgstr "" @@ -145,7 +145,7 @@ msgstr "" #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" msgstr "" @@ -207,9 +207,9 @@ msgstr "" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:686 +#: src/pages/part/PartDetail.tsx:691 msgid "Inactive" msgstr "" @@ -248,6 +248,35 @@ msgstr "" msgid "Virtual" msgstr "仮想部品" +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "" + #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" msgstr "" @@ -334,11 +363,6 @@ msgstr "" msgid "Form Error" msgstr "" -#: src/components/forms/ApiForm.tsx:430 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "" - #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" #~ msgstr "Form Errors Exist" @@ -389,7 +413,7 @@ msgstr "" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." msgstr "" @@ -399,7 +423,7 @@ msgstr "" #~ msgstr "Mail delivery successfull" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" msgstr "" @@ -527,7 +551,7 @@ msgstr "" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:127 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -551,7 +575,6 @@ msgid "Add Host" msgstr "ホストを追加" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" msgstr "保存" @@ -579,20 +602,20 @@ msgstr "" msgid "State: <0>worker ({0}), <1>plugins{1}" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" msgstr "読み込み中" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "" @@ -614,7 +637,7 @@ msgid "Thumbnail" msgstr "サムネイル" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" msgstr "" @@ -859,7 +882,7 @@ msgid "Close modal" msgstr "" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" msgstr "" @@ -967,7 +990,7 @@ msgstr "" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:295 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" msgstr "" @@ -1031,8 +1054,8 @@ msgid "About" msgstr "" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" @@ -1053,35 +1076,35 @@ msgstr "" msgid "Mark as read" msgstr "既読にする" -#: src/components/nav/SearchDrawer.tsx:77 +#: src/components/nav/SearchDrawer.tsx:78 msgid "results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:337 +#: src/components/nav/SearchDrawer.tsx:349 msgid "Enter search text" msgstr "" -#: src/components/nav/SearchDrawer.tsx:364 +#: src/components/nav/SearchDrawer.tsx:376 msgid "Search Options" msgstr "" -#: src/components/nav/SearchDrawer.tsx:367 +#: src/components/nav/SearchDrawer.tsx:379 msgid "Regex search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:377 +#: src/components/nav/SearchDrawer.tsx:389 msgid "Whole word search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:416 +#: src/components/nav/SearchDrawer.tsx:430 msgid "An error occurred during search query" msgstr "" -#: src/components/nav/SearchDrawer.tsx:427 +#: src/components/nav/SearchDrawer.tsx:441 msgid "No results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:430 +#: src/components/nav/SearchDrawer.tsx:444 msgid "No results available for search query" msgstr "" @@ -1100,7 +1123,7 @@ msgstr "" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:832 +#: src/pages/part/PartDetail.tsx:837 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" @@ -1109,11 +1132,11 @@ msgstr "パーツ" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:640 +#: src/pages/part/PartDetail.tsx:645 msgid "Parts" msgstr "パーツ" @@ -1136,7 +1159,7 @@ msgstr "" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "" @@ -1160,15 +1183,15 @@ msgid "Part Category" msgstr "" #: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 +#: src/pages/Index/Settings/SystemSettings.tsx:165 #: src/pages/part/CategoryDetail.tsx:249 #: src/pages/part/CategoryDetail.tsx:282 -#: src/pages/part/PartDetail.tsx:822 +#: src/pages/part/PartDetail.tsx:827 msgid "Part Categories" msgstr "" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:560 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "在庫商品" @@ -1188,7 +1211,7 @@ msgstr "在庫場所" #: src/components/render/ModelType.tsx:82 #: src/pages/stock/LocationDetail.tsx:185 #: src/pages/stock/LocationDetail.tsx:361 -#: src/pages/stock/StockDetail.tsx:552 +#: src/pages/stock/StockDetail.tsx:554 msgid "Stock Locations" msgstr "在庫場所" @@ -1227,7 +1250,7 @@ msgid "Build Lines" msgstr "" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" msgstr "" @@ -1250,17 +1273,17 @@ msgid "Project Codes" msgstr "" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" msgstr "" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:573 +#: src/pages/part/PartDetail.tsx:579 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" msgstr "" @@ -1275,16 +1298,16 @@ msgstr "" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" msgstr "" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:579 +#: src/pages/part/PartDetail.tsx:586 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" msgstr "" @@ -1298,13 +1321,13 @@ msgid "Sales Order Shipments" msgstr "" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" msgstr "" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" @@ -1322,8 +1345,8 @@ msgstr "" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" msgstr "" @@ -1341,7 +1364,7 @@ msgid "Owners" msgstr "" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" msgstr "ユーザー" @@ -1385,26 +1408,27 @@ msgstr "" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:493 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 #: src/pages/stock/LocationDetail.tsx:345 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" msgstr "在庫" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:517 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" msgstr "" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:523 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 @@ -1844,16 +1868,12 @@ msgid "Getting started" msgstr "" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Failed to upload image" +#~ msgstr "Failed to upload image" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "メモを保存しました" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "" +#~ msgid "Notes saved" +#~ msgstr "Notes saved" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" @@ -1972,42 +1992,46 @@ msgid "Portuguese (Brazilian)" msgstr "" #: src/contexts/LanguageContext.tsx:43 -msgid "Russian" +msgid "Romanian" msgstr "" #: src/contexts/LanguageContext.tsx:44 -msgid "Slovak" +msgid "Russian" msgstr "" #: src/contexts/LanguageContext.tsx:45 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: src/contexts/LanguageContext.tsx:46 -msgid "Swedish" +msgid "Slovenian" msgstr "" #: src/contexts/LanguageContext.tsx:47 -msgid "Thai" +msgid "Swedish" msgstr "" #: src/contexts/LanguageContext.tsx:48 -msgid "Turkish" +msgid "Thai" msgstr "" #: src/contexts/LanguageContext.tsx:49 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: src/contexts/LanguageContext.tsx:50 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: src/contexts/LanguageContext.tsx:51 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: src/contexts/LanguageContext.tsx:52 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" msgstr "" @@ -2021,7 +2045,7 @@ msgstr "" #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" msgstr "" @@ -2160,10 +2184,10 @@ msgstr "" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" msgstr "" @@ -2171,15 +2195,15 @@ msgstr "" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" msgstr "" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" msgstr "" @@ -2464,7 +2488,7 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" @@ -2515,7 +2539,7 @@ msgstr "" #~ msgstr "Stock item updated" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" @@ -2537,8 +2561,8 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:207 -#: src/pages/part/PartDetail.tsx:656 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" msgstr "" @@ -2560,14 +2584,14 @@ msgid "Actions" msgstr "" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" msgstr "" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" msgstr "" @@ -2580,12 +2604,12 @@ msgid "Remove Stock" msgstr "" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:788 msgid "Transfer Stock" msgstr "" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:777 msgid "Count Stock" msgstr "" @@ -2625,23 +2649,14 @@ msgstr "" #~ msgid "You have been logged out" #~ msgstr "You have been logged out" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" msgstr "" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" msgstr "" -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "" - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "" - #: src/functions/auth.tsx:141 #~ msgid "Already logged in" #~ msgstr "Already logged in" @@ -2654,11 +2669,20 @@ msgstr "" #~ msgid "Found an existing login - welcome back!" #~ msgstr "Found an existing login - welcome back!" -#: src/functions/auth.tsx:153 +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "" + +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "" + +#: src/functions/auth.tsx:195 msgid "Logged In" msgstr "" -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:196 msgid "Successfully logged in" msgstr "" @@ -2796,7 +2820,7 @@ msgstr "" msgid "Welcome to your Dashboard{0}" msgstr "" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." msgstr "" @@ -3374,15 +3398,15 @@ msgstr "" msgid "System settings" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" msgstr "価格" @@ -3394,50 +3418,50 @@ msgstr "価格" #~ msgid "Exchange Rates" #~ msgstr "Exchange Rates" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:591 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:527 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:298 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" msgstr "" @@ -3475,8 +3499,8 @@ msgstr "未読にする" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3489,8 +3513,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" @@ -3501,10 +3525,10 @@ msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:134 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3537,10 +3561,10 @@ msgid "Issued By" msgstr "" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:322 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 @@ -3555,8 +3579,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" msgstr "" @@ -3594,7 +3618,7 @@ msgstr "" #~ msgstr "Unlink custom barcode from part" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:535 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" msgstr "" @@ -3638,34 +3662,34 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:613 +#: src/pages/part/PartDetail.tsx:622 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" msgstr "添付ファイル" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:625 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" msgstr "メモ" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" @@ -3676,17 +3700,17 @@ msgstr "" #~ msgstr "Reporting Actions" #: src/pages/build/BuildDetail.tsx:374 -#~ msgid "Print build report" -#~ msgstr "Print build report" - -#: src/pages/build/BuildDetail.tsx:378 msgid "Build Order Actions" msgstr "" -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "Print build report" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" msgstr "" @@ -3725,7 +3749,7 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" @@ -3733,10 +3757,10 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 @@ -3769,12 +3793,12 @@ msgstr "" msgid "Assigned Stock" msgstr "" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" msgstr "" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" msgstr "" @@ -3804,32 +3828,32 @@ msgid "Manufacturer Part Details" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:487 +#: src/pages/part/PartDetail.tsx:492 msgid "Parameters" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:560 +#: src/pages/part/PartDetail.tsx:566 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" msgstr "" @@ -3845,7 +3869,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" msgstr "" @@ -3879,7 +3903,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" msgstr "" @@ -3969,85 +3993,85 @@ msgstr "" msgid "Category Details" msgstr "" -#: src/pages/part/PartDetail.tsx:140 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" msgstr "" -#: src/pages/part/PartDetail.tsx:147 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" msgstr "" -#: src/pages/part/PartDetail.tsx:153 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:167 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" msgstr "" -#: src/pages/part/PartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" msgstr "" -#: src/pages/part/PartDetail.tsx:181 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" msgstr "" -#: src/pages/part/PartDetail.tsx:188 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" msgstr "" -#: src/pages/part/PartDetail.tsx:195 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" msgstr "" -#: src/pages/part/PartDetail.tsx:213 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:220 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" msgstr "" -#: src/pages/part/PartDetail.tsx:235 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:243 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:250 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" msgstr "" -#: src/pages/part/PartDetail.tsx:257 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" msgstr "" -#: src/pages/part/PartDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -4065,37 +4089,37 @@ msgstr "" msgid "Active" msgstr "" -#: src/pages/part/PartDetail.tsx:271 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" msgstr "" -#: src/pages/part/PartDetail.tsx:276 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" msgstr "" -#: src/pages/part/PartDetail.tsx:281 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" msgstr "" -#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:291 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:296 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" msgstr "" -#: src/pages/part/PartDetail.tsx:309 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" msgstr "" @@ -4104,7 +4128,7 @@ msgstr "" #~ msgid "Edit part" #~ msgstr "Edit part" -#: src/pages/part/PartDetail.tsx:314 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" msgstr "" @@ -4116,69 +4140,71 @@ msgstr "" #~ msgid "Delete part" #~ msgstr "Delete part" -#: src/pages/part/PartDetail.tsx:329 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" msgstr "" -#: src/pages/part/PartDetail.tsx:340 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" msgstr "" -#: src/pages/part/PartDetail.tsx:375 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" msgstr "" -#: src/pages/part/PartDetail.tsx:410 +#: src/pages/part/PartDetail.tsx:415 msgid "Stocktake By" msgstr "" -#: src/pages/part/PartDetail.tsx:481 +#: src/pages/part/PartDetail.tsx:486 msgid "Part Details" msgstr "" -#: src/pages/part/PartDetail.tsx:507 +#: src/pages/part/PartDetail.tsx:512 msgid "Variants" msgstr "" -#: src/pages/part/PartDetail.tsx:514 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" msgstr "" -#: src/pages/part/PartDetail.tsx:520 +#: src/pages/part/PartDetail.tsx:526 msgid "Bill of Materials" msgstr "" -#: src/pages/part/PartDetail.tsx:534 +#: src/pages/part/PartDetail.tsx:540 msgid "Used In" msgstr "" -#: src/pages/part/PartDetail.tsx:541 +#: src/pages/part/PartDetail.tsx:547 msgid "Part Pricing" msgstr "" -#: src/pages/part/PartDetail.tsx:547 +#: src/pages/part/PartDetail.tsx:553 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" msgstr "" -#: src/pages/part/PartDetail.tsx:586 +#: src/pages/part/PartDetail.tsx:593 msgid "Scheduling" msgstr "" -#: src/pages/part/PartDetail.tsx:596 +#: src/pages/part/PartDetail.tsx:605 msgid "Test Templates" msgstr "" -#: src/pages/part/PartDetail.tsx:607 +#: src/pages/part/PartDetail.tsx:616 msgid "Related Parts" msgstr "" -#: src/pages/part/PartDetail.tsx:662 -#: src/pages/stock/StockDetail.tsx:151 -#: src/pages/stock/StockDetail.tsx:529 +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 @@ -4186,55 +4212,55 @@ msgstr "" msgid "Available" msgstr "" -#: src/pages/part/PartDetail.tsx:668 +#: src/pages/part/PartDetail.tsx:673 msgid "No Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:674 +#: src/pages/part/PartDetail.tsx:679 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" msgstr "" -#: src/pages/part/PartDetail.tsx:680 -#: src/pages/stock/StockDetail.tsx:512 +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" msgstr "" -#: src/pages/part/PartDetail.tsx:699 +#: src/pages/part/PartDetail.tsx:704 msgid "Edit Part" msgstr "" -#: src/pages/part/PartDetail.tsx:706 +#: src/pages/part/PartDetail.tsx:711 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" msgstr "" -#: src/pages/part/PartDetail.tsx:718 +#: src/pages/part/PartDetail.tsx:723 msgid "Delete Part" msgstr "" -#: src/pages/part/PartDetail.tsx:727 +#: src/pages/part/PartDetail.tsx:732 msgid "Deleting this part cannot be reversed" msgstr "" -#: src/pages/part/PartDetail.tsx:765 +#: src/pages/part/PartDetail.tsx:770 #: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" msgstr "" -#: src/pages/part/PartDetail.tsx:773 +#: src/pages/part/PartDetail.tsx:778 msgid "Count part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:784 +#: src/pages/part/PartDetail.tsx:789 msgid "Transfer part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:793 +#: src/pages/part/PartDetail.tsx:798 msgid "Part Actions" msgstr "" @@ -4247,6 +4273,7 @@ msgid "No pricing data found for this part." msgstr "" #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" msgstr "" @@ -4255,54 +4282,32 @@ msgid "Purchase History" msgstr "" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "" - +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 @@ -4311,81 +4316,117 @@ msgstr "" msgid "Total Price" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "Minimum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "Maximum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:25 @@ -4404,33 +4445,33 @@ msgstr "" msgid "Loading pricing data" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "" @@ -4450,23 +4491,23 @@ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" msgstr "" @@ -4477,46 +4518,46 @@ msgstr "" #~ msgstr "Order Currency," #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" msgstr "" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" @@ -4526,17 +4567,17 @@ msgstr "" msgid "Customers" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" msgstr "" @@ -4599,11 +4640,11 @@ msgstr "" msgid "Location Actions" msgstr "" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" msgstr "" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" msgstr "" @@ -4615,15 +4656,15 @@ msgstr "" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "Unlink custom barcode from stock item" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" msgstr "" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" msgstr "" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" msgstr "" @@ -4636,31 +4677,31 @@ msgstr "" #~ msgid "Delete stock item" #~ msgstr "Delete stock item" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" msgstr "" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" msgstr "" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" msgstr "" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" msgstr "在庫商品を編集" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" msgstr "" @@ -4668,34 +4709,34 @@ msgstr "" #~ msgid "Duplicate stock item" #~ msgstr "Duplicate stock item" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" msgstr "" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" msgstr "" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "" @@ -4786,7 +4827,7 @@ msgstr "フィルタ" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" msgstr "値" @@ -5224,7 +5265,7 @@ msgid "Required Tests" msgstr "" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" msgstr "" @@ -5306,23 +5347,39 @@ msgstr "" msgid "File could not be uploaded" msgstr "" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" msgstr "" @@ -5330,11 +5387,11 @@ msgstr "" #~ msgid "Upload attachment" #~ msgstr "Upload attachment" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" msgstr "" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "" @@ -5716,75 +5773,75 @@ msgstr "" msgid "No Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 msgid "Required" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:80 +#: src/tables/part/PartTestTemplateTable.tsx:85 msgid "Show required tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:95 +#: src/tables/part/PartTestTemplateTable.tsx:100 msgid "Show tests that require an attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:99 +#: src/tables/part/PartTestTemplateTable.tsx:104 msgid "Include Inherited" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:100 +#: src/tables/part/PartTestTemplateTable.tsx:105 msgid "Show tests from inherited templates" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:104 +#: src/tables/part/PartTestTemplateTable.tsx:109 msgid "Has Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:105 +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" msgstr "" @@ -6273,7 +6330,7 @@ msgid "Task ID" msgstr "" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" msgstr "" @@ -6679,95 +6736,95 @@ msgstr "" msgid "Delete stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 msgid "Delete Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:289 +#: src/tables/stock/StockItemTestResultTable.tsx:273 msgid "Test result deleted" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:303 +#: src/tables/stock/StockItemTestResultTable.tsx:287 msgid "Test Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" msgstr "" diff --git a/src/frontend/src/locales/ko/messages.po b/src/frontend/src/locales/ko/messages.po index 60b1e56ebc..9595420143 100644 --- a/src/frontend/src/locales/ko/messages.po +++ b/src/frontend/src/locales/ko/messages.po @@ -8,7 +8,7 @@ msgstr "" "Language: ko\n" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-05-23 11:38\n" +"PO-Revision-Date: 2024-06-19 04:49\n" "Last-Translator: \n" "Language-Team: Korean\n" "Plural-Forms: nplurals=1; plural=0;\n" @@ -48,18 +48,18 @@ msgstr "" #: src/components/buttons/PrintingActions.tsx:107 #: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 #: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 -#: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 +#: src/components/nav/SearchDrawer.tsx:427 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" msgstr "" @@ -121,15 +121,15 @@ msgstr "" msgid "No" msgstr "" -#: src/components/details/Details.tsx:303 +#: src/components/details/Details.tsx:305 msgid "No name defined" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copied" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copy" msgstr "" @@ -145,7 +145,7 @@ msgstr "" #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" msgstr "" @@ -207,9 +207,9 @@ msgstr "" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:686 +#: src/pages/part/PartDetail.tsx:691 msgid "Inactive" msgstr "" @@ -248,6 +248,35 @@ msgstr "" msgid "Virtual" msgstr "" +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "" + #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" msgstr "" @@ -334,11 +363,6 @@ msgstr "" msgid "Form Error" msgstr "" -#: src/components/forms/ApiForm.tsx:430 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "" - #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" #~ msgstr "Form Errors Exist" @@ -389,7 +413,7 @@ msgstr "" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." msgstr "" @@ -399,7 +423,7 @@ msgstr "" #~ msgstr "Mail delivery successfull" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" msgstr "" @@ -527,7 +551,7 @@ msgstr "" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:127 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -551,7 +575,6 @@ msgid "Add Host" msgstr "" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" msgstr "" @@ -579,20 +602,20 @@ msgstr "" msgid "State: <0>worker ({0}), <1>plugins{1}" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "" @@ -614,7 +637,7 @@ msgid "Thumbnail" msgstr "" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" msgstr "" @@ -859,7 +882,7 @@ msgid "Close modal" msgstr "" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" msgstr "" @@ -967,7 +990,7 @@ msgstr "" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:295 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" msgstr "" @@ -1031,8 +1054,8 @@ msgid "About" msgstr "" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" @@ -1053,35 +1076,35 @@ msgstr "" msgid "Mark as read" msgstr "" -#: src/components/nav/SearchDrawer.tsx:77 +#: src/components/nav/SearchDrawer.tsx:78 msgid "results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:337 +#: src/components/nav/SearchDrawer.tsx:349 msgid "Enter search text" msgstr "" -#: src/components/nav/SearchDrawer.tsx:364 +#: src/components/nav/SearchDrawer.tsx:376 msgid "Search Options" msgstr "" -#: src/components/nav/SearchDrawer.tsx:367 +#: src/components/nav/SearchDrawer.tsx:379 msgid "Regex search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:377 +#: src/components/nav/SearchDrawer.tsx:389 msgid "Whole word search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:416 +#: src/components/nav/SearchDrawer.tsx:430 msgid "An error occurred during search query" msgstr "" -#: src/components/nav/SearchDrawer.tsx:427 +#: src/components/nav/SearchDrawer.tsx:441 msgid "No results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:430 +#: src/components/nav/SearchDrawer.tsx:444 msgid "No results available for search query" msgstr "" @@ -1100,7 +1123,7 @@ msgstr "" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:832 +#: src/pages/part/PartDetail.tsx:837 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" @@ -1109,11 +1132,11 @@ msgstr "" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:640 +#: src/pages/part/PartDetail.tsx:645 msgid "Parts" msgstr "" @@ -1136,7 +1159,7 @@ msgstr "" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "" @@ -1160,15 +1183,15 @@ msgid "Part Category" msgstr "" #: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 +#: src/pages/Index/Settings/SystemSettings.tsx:165 #: src/pages/part/CategoryDetail.tsx:249 #: src/pages/part/CategoryDetail.tsx:282 -#: src/pages/part/PartDetail.tsx:822 +#: src/pages/part/PartDetail.tsx:827 msgid "Part Categories" msgstr "" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:560 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "" @@ -1188,7 +1211,7 @@ msgstr "" #: src/components/render/ModelType.tsx:82 #: src/pages/stock/LocationDetail.tsx:185 #: src/pages/stock/LocationDetail.tsx:361 -#: src/pages/stock/StockDetail.tsx:552 +#: src/pages/stock/StockDetail.tsx:554 msgid "Stock Locations" msgstr "" @@ -1227,7 +1250,7 @@ msgid "Build Lines" msgstr "" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" msgstr "" @@ -1250,17 +1273,17 @@ msgid "Project Codes" msgstr "" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" msgstr "" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:573 +#: src/pages/part/PartDetail.tsx:579 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" msgstr "" @@ -1275,16 +1298,16 @@ msgstr "" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" msgstr "" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:579 +#: src/pages/part/PartDetail.tsx:586 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" msgstr "" @@ -1298,13 +1321,13 @@ msgid "Sales Order Shipments" msgstr "" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" msgstr "" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" @@ -1322,8 +1345,8 @@ msgstr "" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" msgstr "" @@ -1341,7 +1364,7 @@ msgid "Owners" msgstr "" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" msgstr "" @@ -1385,26 +1408,27 @@ msgstr "" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:493 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 #: src/pages/stock/LocationDetail.tsx:345 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" msgstr "" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:517 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" msgstr "" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:523 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 @@ -1844,16 +1868,12 @@ msgid "Getting started" msgstr "" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Failed to upload image" +#~ msgstr "Failed to upload image" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "" +#~ msgid "Notes saved" +#~ msgstr "Notes saved" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" @@ -1972,42 +1992,46 @@ msgid "Portuguese (Brazilian)" msgstr "" #: src/contexts/LanguageContext.tsx:43 -msgid "Russian" +msgid "Romanian" msgstr "" #: src/contexts/LanguageContext.tsx:44 -msgid "Slovak" +msgid "Russian" msgstr "" #: src/contexts/LanguageContext.tsx:45 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: src/contexts/LanguageContext.tsx:46 -msgid "Swedish" +msgid "Slovenian" msgstr "" #: src/contexts/LanguageContext.tsx:47 -msgid "Thai" +msgid "Swedish" msgstr "" #: src/contexts/LanguageContext.tsx:48 -msgid "Turkish" +msgid "Thai" msgstr "" #: src/contexts/LanguageContext.tsx:49 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: src/contexts/LanguageContext.tsx:50 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: src/contexts/LanguageContext.tsx:51 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: src/contexts/LanguageContext.tsx:52 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" msgstr "" @@ -2021,7 +2045,7 @@ msgstr "" #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" msgstr "" @@ -2160,10 +2184,10 @@ msgstr "" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" msgstr "" @@ -2171,15 +2195,15 @@ msgstr "" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" msgstr "" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" msgstr "" @@ -2464,7 +2488,7 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" @@ -2515,7 +2539,7 @@ msgstr "" #~ msgstr "Stock item updated" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" @@ -2537,8 +2561,8 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:207 -#: src/pages/part/PartDetail.tsx:656 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" msgstr "" @@ -2560,14 +2584,14 @@ msgid "Actions" msgstr "" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" msgstr "" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" msgstr "" @@ -2580,12 +2604,12 @@ msgid "Remove Stock" msgstr "" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:788 msgid "Transfer Stock" msgstr "" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:777 msgid "Count Stock" msgstr "" @@ -2625,23 +2649,14 @@ msgstr "" #~ msgid "You have been logged out" #~ msgstr "You have been logged out" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" msgstr "" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" msgstr "" -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "" - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "" - #: src/functions/auth.tsx:141 #~ msgid "Already logged in" #~ msgstr "Already logged in" @@ -2654,11 +2669,20 @@ msgstr "" #~ msgid "Found an existing login - welcome back!" #~ msgstr "Found an existing login - welcome back!" -#: src/functions/auth.tsx:153 +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "" + +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "" + +#: src/functions/auth.tsx:195 msgid "Logged In" msgstr "" -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:196 msgid "Successfully logged in" msgstr "" @@ -2796,7 +2820,7 @@ msgstr "" msgid "Welcome to your Dashboard{0}" msgstr "" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." msgstr "" @@ -3374,15 +3398,15 @@ msgstr "" msgid "System settings" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" msgstr "" @@ -3394,50 +3418,50 @@ msgstr "" #~ msgid "Exchange Rates" #~ msgstr "Exchange Rates" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:591 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:527 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:298 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" msgstr "" @@ -3475,8 +3499,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3489,8 +3513,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" @@ -3501,10 +3525,10 @@ msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:134 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3537,10 +3561,10 @@ msgid "Issued By" msgstr "" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:322 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 @@ -3555,8 +3579,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" msgstr "" @@ -3594,7 +3618,7 @@ msgstr "" #~ msgstr "Unlink custom barcode from part" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:535 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" msgstr "" @@ -3638,34 +3662,34 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:613 +#: src/pages/part/PartDetail.tsx:622 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" msgstr "" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:625 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" msgstr "" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" @@ -3676,17 +3700,17 @@ msgstr "" #~ msgstr "Reporting Actions" #: src/pages/build/BuildDetail.tsx:374 -#~ msgid "Print build report" -#~ msgstr "Print build report" - -#: src/pages/build/BuildDetail.tsx:378 msgid "Build Order Actions" msgstr "" -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "Print build report" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" msgstr "" @@ -3725,7 +3749,7 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" @@ -3733,10 +3757,10 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 @@ -3769,12 +3793,12 @@ msgstr "" msgid "Assigned Stock" msgstr "" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" msgstr "" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" msgstr "" @@ -3804,32 +3828,32 @@ msgid "Manufacturer Part Details" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:487 +#: src/pages/part/PartDetail.tsx:492 msgid "Parameters" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:560 +#: src/pages/part/PartDetail.tsx:566 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" msgstr "" @@ -3845,7 +3869,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" msgstr "" @@ -3879,7 +3903,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" msgstr "" @@ -3969,85 +3993,85 @@ msgstr "" msgid "Category Details" msgstr "" -#: src/pages/part/PartDetail.tsx:140 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" msgstr "" -#: src/pages/part/PartDetail.tsx:147 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" msgstr "" -#: src/pages/part/PartDetail.tsx:153 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:167 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" msgstr "" -#: src/pages/part/PartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" msgstr "" -#: src/pages/part/PartDetail.tsx:181 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" msgstr "" -#: src/pages/part/PartDetail.tsx:188 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" msgstr "" -#: src/pages/part/PartDetail.tsx:195 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" msgstr "" -#: src/pages/part/PartDetail.tsx:213 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:220 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" msgstr "" -#: src/pages/part/PartDetail.tsx:235 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:243 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:250 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" msgstr "" -#: src/pages/part/PartDetail.tsx:257 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" msgstr "" -#: src/pages/part/PartDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -4065,37 +4089,37 @@ msgstr "" msgid "Active" msgstr "" -#: src/pages/part/PartDetail.tsx:271 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" msgstr "" -#: src/pages/part/PartDetail.tsx:276 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" msgstr "" -#: src/pages/part/PartDetail.tsx:281 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" msgstr "" -#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:291 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:296 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" msgstr "" -#: src/pages/part/PartDetail.tsx:309 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" msgstr "" @@ -4104,7 +4128,7 @@ msgstr "" #~ msgid "Edit part" #~ msgstr "Edit part" -#: src/pages/part/PartDetail.tsx:314 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" msgstr "" @@ -4116,69 +4140,71 @@ msgstr "" #~ msgid "Delete part" #~ msgstr "Delete part" -#: src/pages/part/PartDetail.tsx:329 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" msgstr "" -#: src/pages/part/PartDetail.tsx:340 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" msgstr "" -#: src/pages/part/PartDetail.tsx:375 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" msgstr "" -#: src/pages/part/PartDetail.tsx:410 +#: src/pages/part/PartDetail.tsx:415 msgid "Stocktake By" msgstr "" -#: src/pages/part/PartDetail.tsx:481 +#: src/pages/part/PartDetail.tsx:486 msgid "Part Details" msgstr "" -#: src/pages/part/PartDetail.tsx:507 +#: src/pages/part/PartDetail.tsx:512 msgid "Variants" msgstr "" -#: src/pages/part/PartDetail.tsx:514 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" msgstr "" -#: src/pages/part/PartDetail.tsx:520 +#: src/pages/part/PartDetail.tsx:526 msgid "Bill of Materials" msgstr "" -#: src/pages/part/PartDetail.tsx:534 +#: src/pages/part/PartDetail.tsx:540 msgid "Used In" msgstr "" -#: src/pages/part/PartDetail.tsx:541 +#: src/pages/part/PartDetail.tsx:547 msgid "Part Pricing" msgstr "" -#: src/pages/part/PartDetail.tsx:547 +#: src/pages/part/PartDetail.tsx:553 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" msgstr "" -#: src/pages/part/PartDetail.tsx:586 +#: src/pages/part/PartDetail.tsx:593 msgid "Scheduling" msgstr "" -#: src/pages/part/PartDetail.tsx:596 +#: src/pages/part/PartDetail.tsx:605 msgid "Test Templates" msgstr "" -#: src/pages/part/PartDetail.tsx:607 +#: src/pages/part/PartDetail.tsx:616 msgid "Related Parts" msgstr "" -#: src/pages/part/PartDetail.tsx:662 -#: src/pages/stock/StockDetail.tsx:151 -#: src/pages/stock/StockDetail.tsx:529 +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 @@ -4186,55 +4212,55 @@ msgstr "" msgid "Available" msgstr "" -#: src/pages/part/PartDetail.tsx:668 +#: src/pages/part/PartDetail.tsx:673 msgid "No Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:674 +#: src/pages/part/PartDetail.tsx:679 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" msgstr "" -#: src/pages/part/PartDetail.tsx:680 -#: src/pages/stock/StockDetail.tsx:512 +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" msgstr "" -#: src/pages/part/PartDetail.tsx:699 +#: src/pages/part/PartDetail.tsx:704 msgid "Edit Part" msgstr "" -#: src/pages/part/PartDetail.tsx:706 +#: src/pages/part/PartDetail.tsx:711 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" msgstr "" -#: src/pages/part/PartDetail.tsx:718 +#: src/pages/part/PartDetail.tsx:723 msgid "Delete Part" msgstr "" -#: src/pages/part/PartDetail.tsx:727 +#: src/pages/part/PartDetail.tsx:732 msgid "Deleting this part cannot be reversed" msgstr "" -#: src/pages/part/PartDetail.tsx:765 +#: src/pages/part/PartDetail.tsx:770 #: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" msgstr "" -#: src/pages/part/PartDetail.tsx:773 +#: src/pages/part/PartDetail.tsx:778 msgid "Count part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:784 +#: src/pages/part/PartDetail.tsx:789 msgid "Transfer part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:793 +#: src/pages/part/PartDetail.tsx:798 msgid "Part Actions" msgstr "" @@ -4247,6 +4273,7 @@ msgid "No pricing data found for this part." msgstr "" #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" msgstr "" @@ -4255,54 +4282,32 @@ msgid "Purchase History" msgstr "" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "" - +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 @@ -4311,81 +4316,117 @@ msgstr "" msgid "Total Price" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "Minimum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "Maximum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:25 @@ -4404,33 +4445,33 @@ msgstr "" msgid "Loading pricing data" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "" @@ -4450,23 +4491,23 @@ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" msgstr "" @@ -4477,46 +4518,46 @@ msgstr "" #~ msgstr "Order Currency," #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" msgstr "" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" @@ -4526,17 +4567,17 @@ msgstr "" msgid "Customers" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" msgstr "" @@ -4599,11 +4640,11 @@ msgstr "" msgid "Location Actions" msgstr "" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" msgstr "" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" msgstr "" @@ -4615,15 +4656,15 @@ msgstr "" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "Unlink custom barcode from stock item" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" msgstr "" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" msgstr "" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" msgstr "" @@ -4636,31 +4677,31 @@ msgstr "" #~ msgid "Delete stock item" #~ msgstr "Delete stock item" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" msgstr "" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" msgstr "" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" msgstr "" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" msgstr "" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" msgstr "" @@ -4668,34 +4709,34 @@ msgstr "" #~ msgid "Duplicate stock item" #~ msgstr "Duplicate stock item" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" msgstr "" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" msgstr "" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "" @@ -4786,7 +4827,7 @@ msgstr "" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" msgstr "" @@ -5224,7 +5265,7 @@ msgid "Required Tests" msgstr "" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" msgstr "" @@ -5306,23 +5347,39 @@ msgstr "" msgid "File could not be uploaded" msgstr "" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" msgstr "" @@ -5330,11 +5387,11 @@ msgstr "" #~ msgid "Upload attachment" #~ msgstr "Upload attachment" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" msgstr "" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "" @@ -5716,75 +5773,75 @@ msgstr "" msgid "No Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 msgid "Required" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:80 +#: src/tables/part/PartTestTemplateTable.tsx:85 msgid "Show required tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:95 +#: src/tables/part/PartTestTemplateTable.tsx:100 msgid "Show tests that require an attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:99 +#: src/tables/part/PartTestTemplateTable.tsx:104 msgid "Include Inherited" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:100 +#: src/tables/part/PartTestTemplateTable.tsx:105 msgid "Show tests from inherited templates" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:104 +#: src/tables/part/PartTestTemplateTable.tsx:109 msgid "Has Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:105 +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" msgstr "" @@ -6273,7 +6330,7 @@ msgid "Task ID" msgstr "" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" msgstr "" @@ -6679,95 +6736,95 @@ msgstr "" msgid "Delete stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 msgid "Delete Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:289 +#: src/tables/stock/StockItemTestResultTable.tsx:273 msgid "Test result deleted" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:303 +#: src/tables/stock/StockItemTestResultTable.tsx:287 msgid "Test Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" msgstr "" diff --git a/src/frontend/src/locales/lv/messages.po b/src/frontend/src/locales/lv/messages.po index 414c91c262..2b549a8f5a 100644 --- a/src/frontend/src/locales/lv/messages.po +++ b/src/frontend/src/locales/lv/messages.po @@ -8,7 +8,7 @@ msgstr "" "Language: lv\n" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-05-23 11:39\n" +"PO-Revision-Date: 2024-06-19 04:50\n" "Last-Translator: \n" "Language-Team: Latvian\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;\n" @@ -48,18 +48,18 @@ msgstr "" #: src/components/buttons/PrintingActions.tsx:107 #: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 #: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 -#: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 +#: src/components/nav/SearchDrawer.tsx:427 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" msgstr "" @@ -121,15 +121,15 @@ msgstr "" msgid "No" msgstr "" -#: src/components/details/Details.tsx:303 +#: src/components/details/Details.tsx:305 msgid "No name defined" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copied" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copy" msgstr "" @@ -145,7 +145,7 @@ msgstr "" #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" msgstr "" @@ -207,9 +207,9 @@ msgstr "" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:686 +#: src/pages/part/PartDetail.tsx:691 msgid "Inactive" msgstr "" @@ -248,6 +248,35 @@ msgstr "" msgid "Virtual" msgstr "" +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "" + #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" msgstr "" @@ -334,11 +363,6 @@ msgstr "" msgid "Form Error" msgstr "" -#: src/components/forms/ApiForm.tsx:430 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "" - #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" #~ msgstr "Form Errors Exist" @@ -389,7 +413,7 @@ msgstr "" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." msgstr "" @@ -399,7 +423,7 @@ msgstr "" #~ msgstr "Mail delivery successfull" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" msgstr "" @@ -527,7 +551,7 @@ msgstr "" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:127 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -551,7 +575,6 @@ msgid "Add Host" msgstr "" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" msgstr "" @@ -579,20 +602,20 @@ msgstr "" msgid "State: <0>worker ({0}), <1>plugins{1}" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "" @@ -614,7 +637,7 @@ msgid "Thumbnail" msgstr "" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" msgstr "" @@ -859,7 +882,7 @@ msgid "Close modal" msgstr "" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" msgstr "" @@ -967,7 +990,7 @@ msgstr "" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:295 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" msgstr "" @@ -1031,8 +1054,8 @@ msgid "About" msgstr "" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" @@ -1053,35 +1076,35 @@ msgstr "" msgid "Mark as read" msgstr "" -#: src/components/nav/SearchDrawer.tsx:77 +#: src/components/nav/SearchDrawer.tsx:78 msgid "results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:337 +#: src/components/nav/SearchDrawer.tsx:349 msgid "Enter search text" msgstr "" -#: src/components/nav/SearchDrawer.tsx:364 +#: src/components/nav/SearchDrawer.tsx:376 msgid "Search Options" msgstr "" -#: src/components/nav/SearchDrawer.tsx:367 +#: src/components/nav/SearchDrawer.tsx:379 msgid "Regex search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:377 +#: src/components/nav/SearchDrawer.tsx:389 msgid "Whole word search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:416 +#: src/components/nav/SearchDrawer.tsx:430 msgid "An error occurred during search query" msgstr "" -#: src/components/nav/SearchDrawer.tsx:427 +#: src/components/nav/SearchDrawer.tsx:441 msgid "No results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:430 +#: src/components/nav/SearchDrawer.tsx:444 msgid "No results available for search query" msgstr "" @@ -1100,7 +1123,7 @@ msgstr "" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:832 +#: src/pages/part/PartDetail.tsx:837 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" @@ -1109,11 +1132,11 @@ msgstr "" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:640 +#: src/pages/part/PartDetail.tsx:645 msgid "Parts" msgstr "" @@ -1136,7 +1159,7 @@ msgstr "" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "" @@ -1160,15 +1183,15 @@ msgid "Part Category" msgstr "" #: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 +#: src/pages/Index/Settings/SystemSettings.tsx:165 #: src/pages/part/CategoryDetail.tsx:249 #: src/pages/part/CategoryDetail.tsx:282 -#: src/pages/part/PartDetail.tsx:822 +#: src/pages/part/PartDetail.tsx:827 msgid "Part Categories" msgstr "" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:560 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "" @@ -1188,7 +1211,7 @@ msgstr "" #: src/components/render/ModelType.tsx:82 #: src/pages/stock/LocationDetail.tsx:185 #: src/pages/stock/LocationDetail.tsx:361 -#: src/pages/stock/StockDetail.tsx:552 +#: src/pages/stock/StockDetail.tsx:554 msgid "Stock Locations" msgstr "" @@ -1227,7 +1250,7 @@ msgid "Build Lines" msgstr "" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" msgstr "" @@ -1250,17 +1273,17 @@ msgid "Project Codes" msgstr "" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" msgstr "" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:573 +#: src/pages/part/PartDetail.tsx:579 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" msgstr "" @@ -1275,16 +1298,16 @@ msgstr "" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" msgstr "" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:579 +#: src/pages/part/PartDetail.tsx:586 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" msgstr "" @@ -1298,13 +1321,13 @@ msgid "Sales Order Shipments" msgstr "" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" msgstr "" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" @@ -1322,8 +1345,8 @@ msgstr "" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" msgstr "" @@ -1341,7 +1364,7 @@ msgid "Owners" msgstr "" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" msgstr "" @@ -1385,26 +1408,27 @@ msgstr "" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:493 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 #: src/pages/stock/LocationDetail.tsx:345 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" msgstr "" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:517 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" msgstr "" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:523 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 @@ -1844,16 +1868,12 @@ msgid "Getting started" msgstr "" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Failed to upload image" +#~ msgstr "Failed to upload image" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "" +#~ msgid "Notes saved" +#~ msgstr "Notes saved" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" @@ -1972,42 +1992,46 @@ msgid "Portuguese (Brazilian)" msgstr "" #: src/contexts/LanguageContext.tsx:43 -msgid "Russian" +msgid "Romanian" msgstr "" #: src/contexts/LanguageContext.tsx:44 -msgid "Slovak" +msgid "Russian" msgstr "" #: src/contexts/LanguageContext.tsx:45 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: src/contexts/LanguageContext.tsx:46 -msgid "Swedish" +msgid "Slovenian" msgstr "" #: src/contexts/LanguageContext.tsx:47 -msgid "Thai" +msgid "Swedish" msgstr "" #: src/contexts/LanguageContext.tsx:48 -msgid "Turkish" +msgid "Thai" msgstr "" #: src/contexts/LanguageContext.tsx:49 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: src/contexts/LanguageContext.tsx:50 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: src/contexts/LanguageContext.tsx:51 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: src/contexts/LanguageContext.tsx:52 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" msgstr "" @@ -2021,7 +2045,7 @@ msgstr "" #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" msgstr "" @@ -2160,10 +2184,10 @@ msgstr "" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" msgstr "" @@ -2171,15 +2195,15 @@ msgstr "" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" msgstr "" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" msgstr "" @@ -2464,7 +2488,7 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" @@ -2515,7 +2539,7 @@ msgstr "" #~ msgstr "Stock item updated" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" @@ -2537,8 +2561,8 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:207 -#: src/pages/part/PartDetail.tsx:656 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" msgstr "" @@ -2560,14 +2584,14 @@ msgid "Actions" msgstr "" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" msgstr "" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" msgstr "" @@ -2580,12 +2604,12 @@ msgid "Remove Stock" msgstr "" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:788 msgid "Transfer Stock" msgstr "" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:777 msgid "Count Stock" msgstr "" @@ -2625,23 +2649,14 @@ msgstr "" #~ msgid "You have been logged out" #~ msgstr "You have been logged out" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" msgstr "" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" msgstr "" -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "" - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "" - #: src/functions/auth.tsx:141 #~ msgid "Already logged in" #~ msgstr "Already logged in" @@ -2654,11 +2669,20 @@ msgstr "" #~ msgid "Found an existing login - welcome back!" #~ msgstr "Found an existing login - welcome back!" -#: src/functions/auth.tsx:153 +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "" + +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "" + +#: src/functions/auth.tsx:195 msgid "Logged In" msgstr "" -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:196 msgid "Successfully logged in" msgstr "" @@ -2796,7 +2820,7 @@ msgstr "" msgid "Welcome to your Dashboard{0}" msgstr "" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." msgstr "" @@ -3374,15 +3398,15 @@ msgstr "" msgid "System settings" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" msgstr "" @@ -3394,50 +3418,50 @@ msgstr "" #~ msgid "Exchange Rates" #~ msgstr "Exchange Rates" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:591 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:527 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:298 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" msgstr "" @@ -3475,8 +3499,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3489,8 +3513,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" @@ -3501,10 +3525,10 @@ msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:134 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3537,10 +3561,10 @@ msgid "Issued By" msgstr "" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:322 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 @@ -3555,8 +3579,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" msgstr "" @@ -3594,7 +3618,7 @@ msgstr "" #~ msgstr "Unlink custom barcode from part" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:535 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" msgstr "" @@ -3638,34 +3662,34 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:613 +#: src/pages/part/PartDetail.tsx:622 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" msgstr "" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:625 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" msgstr "" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" @@ -3676,17 +3700,17 @@ msgstr "" #~ msgstr "Reporting Actions" #: src/pages/build/BuildDetail.tsx:374 -#~ msgid "Print build report" -#~ msgstr "Print build report" - -#: src/pages/build/BuildDetail.tsx:378 msgid "Build Order Actions" msgstr "" -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "Print build report" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" msgstr "" @@ -3725,7 +3749,7 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" @@ -3733,10 +3757,10 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 @@ -3769,12 +3793,12 @@ msgstr "" msgid "Assigned Stock" msgstr "" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" msgstr "" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" msgstr "" @@ -3804,32 +3828,32 @@ msgid "Manufacturer Part Details" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:487 +#: src/pages/part/PartDetail.tsx:492 msgid "Parameters" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:560 +#: src/pages/part/PartDetail.tsx:566 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" msgstr "" @@ -3845,7 +3869,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" msgstr "" @@ -3879,7 +3903,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" msgstr "" @@ -3969,85 +3993,85 @@ msgstr "" msgid "Category Details" msgstr "" -#: src/pages/part/PartDetail.tsx:140 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" msgstr "" -#: src/pages/part/PartDetail.tsx:147 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" msgstr "" -#: src/pages/part/PartDetail.tsx:153 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:167 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" msgstr "" -#: src/pages/part/PartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" msgstr "" -#: src/pages/part/PartDetail.tsx:181 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" msgstr "" -#: src/pages/part/PartDetail.tsx:188 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" msgstr "" -#: src/pages/part/PartDetail.tsx:195 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" msgstr "" -#: src/pages/part/PartDetail.tsx:213 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:220 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" msgstr "" -#: src/pages/part/PartDetail.tsx:235 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:243 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:250 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" msgstr "" -#: src/pages/part/PartDetail.tsx:257 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" msgstr "" -#: src/pages/part/PartDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -4065,37 +4089,37 @@ msgstr "" msgid "Active" msgstr "" -#: src/pages/part/PartDetail.tsx:271 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" msgstr "" -#: src/pages/part/PartDetail.tsx:276 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" msgstr "" -#: src/pages/part/PartDetail.tsx:281 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" msgstr "" -#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:291 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:296 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" msgstr "" -#: src/pages/part/PartDetail.tsx:309 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" msgstr "" @@ -4104,7 +4128,7 @@ msgstr "" #~ msgid "Edit part" #~ msgstr "Edit part" -#: src/pages/part/PartDetail.tsx:314 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" msgstr "" @@ -4116,69 +4140,71 @@ msgstr "" #~ msgid "Delete part" #~ msgstr "Delete part" -#: src/pages/part/PartDetail.tsx:329 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" msgstr "" -#: src/pages/part/PartDetail.tsx:340 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" msgstr "" -#: src/pages/part/PartDetail.tsx:375 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" msgstr "" -#: src/pages/part/PartDetail.tsx:410 +#: src/pages/part/PartDetail.tsx:415 msgid "Stocktake By" msgstr "" -#: src/pages/part/PartDetail.tsx:481 +#: src/pages/part/PartDetail.tsx:486 msgid "Part Details" msgstr "" -#: src/pages/part/PartDetail.tsx:507 +#: src/pages/part/PartDetail.tsx:512 msgid "Variants" msgstr "" -#: src/pages/part/PartDetail.tsx:514 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" msgstr "" -#: src/pages/part/PartDetail.tsx:520 +#: src/pages/part/PartDetail.tsx:526 msgid "Bill of Materials" msgstr "" -#: src/pages/part/PartDetail.tsx:534 +#: src/pages/part/PartDetail.tsx:540 msgid "Used In" msgstr "" -#: src/pages/part/PartDetail.tsx:541 +#: src/pages/part/PartDetail.tsx:547 msgid "Part Pricing" msgstr "" -#: src/pages/part/PartDetail.tsx:547 +#: src/pages/part/PartDetail.tsx:553 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" msgstr "" -#: src/pages/part/PartDetail.tsx:586 +#: src/pages/part/PartDetail.tsx:593 msgid "Scheduling" msgstr "" -#: src/pages/part/PartDetail.tsx:596 +#: src/pages/part/PartDetail.tsx:605 msgid "Test Templates" msgstr "" -#: src/pages/part/PartDetail.tsx:607 +#: src/pages/part/PartDetail.tsx:616 msgid "Related Parts" msgstr "" -#: src/pages/part/PartDetail.tsx:662 -#: src/pages/stock/StockDetail.tsx:151 -#: src/pages/stock/StockDetail.tsx:529 +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 @@ -4186,55 +4212,55 @@ msgstr "" msgid "Available" msgstr "" -#: src/pages/part/PartDetail.tsx:668 +#: src/pages/part/PartDetail.tsx:673 msgid "No Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:674 +#: src/pages/part/PartDetail.tsx:679 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" msgstr "" -#: src/pages/part/PartDetail.tsx:680 -#: src/pages/stock/StockDetail.tsx:512 +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" msgstr "" -#: src/pages/part/PartDetail.tsx:699 +#: src/pages/part/PartDetail.tsx:704 msgid "Edit Part" msgstr "" -#: src/pages/part/PartDetail.tsx:706 +#: src/pages/part/PartDetail.tsx:711 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" msgstr "" -#: src/pages/part/PartDetail.tsx:718 +#: src/pages/part/PartDetail.tsx:723 msgid "Delete Part" msgstr "" -#: src/pages/part/PartDetail.tsx:727 +#: src/pages/part/PartDetail.tsx:732 msgid "Deleting this part cannot be reversed" msgstr "" -#: src/pages/part/PartDetail.tsx:765 +#: src/pages/part/PartDetail.tsx:770 #: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" msgstr "" -#: src/pages/part/PartDetail.tsx:773 +#: src/pages/part/PartDetail.tsx:778 msgid "Count part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:784 +#: src/pages/part/PartDetail.tsx:789 msgid "Transfer part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:793 +#: src/pages/part/PartDetail.tsx:798 msgid "Part Actions" msgstr "" @@ -4247,6 +4273,7 @@ msgid "No pricing data found for this part." msgstr "" #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" msgstr "" @@ -4255,54 +4282,32 @@ msgid "Purchase History" msgstr "" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "" - +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 @@ -4311,81 +4316,117 @@ msgstr "" msgid "Total Price" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "Minimum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "Maximum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:25 @@ -4404,33 +4445,33 @@ msgstr "" msgid "Loading pricing data" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "" @@ -4450,23 +4491,23 @@ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" msgstr "" @@ -4477,46 +4518,46 @@ msgstr "" #~ msgstr "Order Currency," #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" msgstr "" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" @@ -4526,17 +4567,17 @@ msgstr "" msgid "Customers" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" msgstr "" @@ -4599,11 +4640,11 @@ msgstr "" msgid "Location Actions" msgstr "" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" msgstr "" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" msgstr "" @@ -4615,15 +4656,15 @@ msgstr "" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "Unlink custom barcode from stock item" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" msgstr "" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" msgstr "" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" msgstr "" @@ -4636,31 +4677,31 @@ msgstr "" #~ msgid "Delete stock item" #~ msgstr "Delete stock item" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" msgstr "" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" msgstr "" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" msgstr "" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" msgstr "" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" msgstr "" @@ -4668,34 +4709,34 @@ msgstr "" #~ msgid "Duplicate stock item" #~ msgstr "Duplicate stock item" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" msgstr "" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" msgstr "" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "" @@ -4786,7 +4827,7 @@ msgstr "" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" msgstr "" @@ -5224,7 +5265,7 @@ msgid "Required Tests" msgstr "" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" msgstr "" @@ -5306,23 +5347,39 @@ msgstr "" msgid "File could not be uploaded" msgstr "" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" msgstr "" @@ -5330,11 +5387,11 @@ msgstr "" #~ msgid "Upload attachment" #~ msgstr "Upload attachment" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" msgstr "" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "" @@ -5716,75 +5773,75 @@ msgstr "" msgid "No Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 msgid "Required" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:80 +#: src/tables/part/PartTestTemplateTable.tsx:85 msgid "Show required tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:95 +#: src/tables/part/PartTestTemplateTable.tsx:100 msgid "Show tests that require an attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:99 +#: src/tables/part/PartTestTemplateTable.tsx:104 msgid "Include Inherited" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:100 +#: src/tables/part/PartTestTemplateTable.tsx:105 msgid "Show tests from inherited templates" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:104 +#: src/tables/part/PartTestTemplateTable.tsx:109 msgid "Has Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:105 +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" msgstr "" @@ -6273,7 +6330,7 @@ msgid "Task ID" msgstr "" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" msgstr "" @@ -6679,95 +6736,95 @@ msgstr "" msgid "Delete stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 msgid "Delete Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:289 +#: src/tables/stock/StockItemTestResultTable.tsx:273 msgid "Test result deleted" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:303 +#: src/tables/stock/StockItemTestResultTable.tsx:287 msgid "Test Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" msgstr "" diff --git a/src/frontend/src/locales/nl/messages.po b/src/frontend/src/locales/nl/messages.po index 9ff26dcc7e..4aa0f5a470 100644 --- a/src/frontend/src/locales/nl/messages.po +++ b/src/frontend/src/locales/nl/messages.po @@ -8,7 +8,7 @@ msgstr "" "Language: nl\n" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-05-23 11:39\n" +"PO-Revision-Date: 2024-06-19 04:49\n" "Last-Translator: \n" "Language-Team: Dutch\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -48,18 +48,18 @@ msgstr "" #: src/components/buttons/PrintingActions.tsx:107 #: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 #: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 -#: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 +#: src/components/nav/SearchDrawer.tsx:427 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" msgstr "" @@ -121,15 +121,15 @@ msgstr "Ja" msgid "No" msgstr "Nee" -#: src/components/details/Details.tsx:303 +#: src/components/details/Details.tsx:305 msgid "No name defined" msgstr "Geen naam gedefinieerd" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copied" msgstr "Gekopieerd" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copy" msgstr "Kopieer" @@ -145,7 +145,7 @@ msgstr "De bijbehorende afbeelding van dit item verwijderen?" #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" msgstr "Verwijderen" @@ -207,9 +207,9 @@ msgstr "Onderdeel is niet actief" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:686 +#: src/pages/part/PartDetail.tsx:691 msgid "Inactive" msgstr "Inactief" @@ -248,6 +248,35 @@ msgstr "Onderdeel is virtueel (geen fysiek onderdeel)" msgid "Virtual" msgstr "Virtueel" +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "" + #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" msgstr "Code" @@ -334,11 +363,6 @@ msgstr "" msgid "Form Error" msgstr "" -#: src/components/forms/ApiForm.tsx:430 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "" - #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" #~ msgstr "Form Errors Exist" @@ -389,7 +413,7 @@ msgstr "" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." msgstr "" @@ -399,7 +423,7 @@ msgstr "" #~ msgstr "Mail delivery successfull" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" msgstr "" @@ -527,7 +551,7 @@ msgstr "" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:127 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -551,7 +575,6 @@ msgid "Add Host" msgstr "" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" msgstr "" @@ -579,20 +602,20 @@ msgstr "" msgid "State: <0>worker ({0}), <1>plugins{1}" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "" @@ -614,7 +637,7 @@ msgid "Thumbnail" msgstr "" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" msgstr "" @@ -859,7 +882,7 @@ msgid "Close modal" msgstr "" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" msgstr "" @@ -967,7 +990,7 @@ msgstr "" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:295 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" msgstr "" @@ -1031,8 +1054,8 @@ msgid "About" msgstr "" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" @@ -1053,35 +1076,35 @@ msgstr "" msgid "Mark as read" msgstr "" -#: src/components/nav/SearchDrawer.tsx:77 +#: src/components/nav/SearchDrawer.tsx:78 msgid "results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:337 +#: src/components/nav/SearchDrawer.tsx:349 msgid "Enter search text" msgstr "" -#: src/components/nav/SearchDrawer.tsx:364 +#: src/components/nav/SearchDrawer.tsx:376 msgid "Search Options" msgstr "" -#: src/components/nav/SearchDrawer.tsx:367 +#: src/components/nav/SearchDrawer.tsx:379 msgid "Regex search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:377 +#: src/components/nav/SearchDrawer.tsx:389 msgid "Whole word search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:416 +#: src/components/nav/SearchDrawer.tsx:430 msgid "An error occurred during search query" msgstr "" -#: src/components/nav/SearchDrawer.tsx:427 +#: src/components/nav/SearchDrawer.tsx:441 msgid "No results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:430 +#: src/components/nav/SearchDrawer.tsx:444 msgid "No results available for search query" msgstr "" @@ -1100,7 +1123,7 @@ msgstr "" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:832 +#: src/pages/part/PartDetail.tsx:837 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" @@ -1109,11 +1132,11 @@ msgstr "" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:640 +#: src/pages/part/PartDetail.tsx:645 msgid "Parts" msgstr "" @@ -1136,7 +1159,7 @@ msgstr "" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "" @@ -1160,15 +1183,15 @@ msgid "Part Category" msgstr "" #: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 +#: src/pages/Index/Settings/SystemSettings.tsx:165 #: src/pages/part/CategoryDetail.tsx:249 #: src/pages/part/CategoryDetail.tsx:282 -#: src/pages/part/PartDetail.tsx:822 +#: src/pages/part/PartDetail.tsx:827 msgid "Part Categories" msgstr "" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:560 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "" @@ -1188,7 +1211,7 @@ msgstr "" #: src/components/render/ModelType.tsx:82 #: src/pages/stock/LocationDetail.tsx:185 #: src/pages/stock/LocationDetail.tsx:361 -#: src/pages/stock/StockDetail.tsx:552 +#: src/pages/stock/StockDetail.tsx:554 msgid "Stock Locations" msgstr "" @@ -1227,7 +1250,7 @@ msgid "Build Lines" msgstr "" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" msgstr "" @@ -1250,17 +1273,17 @@ msgid "Project Codes" msgstr "" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" msgstr "" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:573 +#: src/pages/part/PartDetail.tsx:579 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" msgstr "" @@ -1275,16 +1298,16 @@ msgstr "" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" msgstr "Verkooporder" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:579 +#: src/pages/part/PartDetail.tsx:586 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" msgstr "Verkooporders" @@ -1298,13 +1321,13 @@ msgid "Sales Order Shipments" msgstr "Verzendingen verkooporders" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" msgstr "Retourorder" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" @@ -1322,8 +1345,8 @@ msgstr "" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" msgstr "" @@ -1341,7 +1364,7 @@ msgid "Owners" msgstr "" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" msgstr "" @@ -1385,26 +1408,27 @@ msgstr "" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:493 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 #: src/pages/stock/LocationDetail.tsx:345 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" msgstr "" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:517 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" msgstr "" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:523 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 @@ -1844,16 +1868,12 @@ msgid "Getting started" msgstr "" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Failed to upload image" +#~ msgstr "Failed to upload image" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "" +#~ msgid "Notes saved" +#~ msgstr "Notes saved" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" @@ -1972,42 +1992,46 @@ msgid "Portuguese (Brazilian)" msgstr "" #: src/contexts/LanguageContext.tsx:43 -msgid "Russian" +msgid "Romanian" msgstr "" #: src/contexts/LanguageContext.tsx:44 -msgid "Slovak" +msgid "Russian" msgstr "" #: src/contexts/LanguageContext.tsx:45 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: src/contexts/LanguageContext.tsx:46 -msgid "Swedish" +msgid "Slovenian" msgstr "" #: src/contexts/LanguageContext.tsx:47 -msgid "Thai" +msgid "Swedish" msgstr "" #: src/contexts/LanguageContext.tsx:48 -msgid "Turkish" +msgid "Thai" msgstr "" #: src/contexts/LanguageContext.tsx:49 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: src/contexts/LanguageContext.tsx:50 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: src/contexts/LanguageContext.tsx:51 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: src/contexts/LanguageContext.tsx:52 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" msgstr "" @@ -2021,7 +2045,7 @@ msgstr "" #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" msgstr "" @@ -2160,10 +2184,10 @@ msgstr "" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" msgstr "" @@ -2171,15 +2195,15 @@ msgstr "" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" msgstr "Verkoop" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" msgstr "" @@ -2464,7 +2488,7 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" @@ -2515,7 +2539,7 @@ msgstr "" #~ msgstr "Stock item updated" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" @@ -2537,8 +2561,8 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:207 -#: src/pages/part/PartDetail.tsx:656 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" msgstr "" @@ -2560,14 +2584,14 @@ msgid "Actions" msgstr "" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" msgstr "" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" msgstr "" @@ -2580,12 +2604,12 @@ msgid "Remove Stock" msgstr "" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:788 msgid "Transfer Stock" msgstr "" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:777 msgid "Count Stock" msgstr "" @@ -2625,23 +2649,14 @@ msgstr "" #~ msgid "You have been logged out" #~ msgstr "You have been logged out" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" msgstr "" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" msgstr "" -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "" - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "" - #: src/functions/auth.tsx:141 #~ msgid "Already logged in" #~ msgstr "Already logged in" @@ -2654,11 +2669,20 @@ msgstr "" #~ msgid "Found an existing login - welcome back!" #~ msgstr "Found an existing login - welcome back!" -#: src/functions/auth.tsx:153 +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "" + +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "" + +#: src/functions/auth.tsx:195 msgid "Logged In" msgstr "" -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:196 msgid "Successfully logged in" msgstr "" @@ -2796,7 +2820,7 @@ msgstr "" msgid "Welcome to your Dashboard{0}" msgstr "" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." msgstr "" @@ -3374,15 +3398,15 @@ msgstr "" msgid "System settings" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" msgstr "" @@ -3394,50 +3418,50 @@ msgstr "" #~ msgid "Exchange Rates" #~ msgstr "Exchange Rates" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:591 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:527 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" msgstr "Productieorders" -#: src/pages/Index/Settings/SystemSettings.tsx:298 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" msgstr "" @@ -3475,8 +3499,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3489,8 +3513,8 @@ msgstr "Status" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" @@ -3501,10 +3525,10 @@ msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:134 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3537,10 +3561,10 @@ msgid "Issued By" msgstr "" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:322 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 @@ -3555,8 +3579,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" msgstr "" @@ -3594,7 +3618,7 @@ msgstr "" #~ msgstr "Unlink custom barcode from part" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:535 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" msgstr "" @@ -3638,34 +3662,34 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:613 +#: src/pages/part/PartDetail.tsx:622 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" msgstr "Bijlagen" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:625 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" msgstr "Opmerkingen" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" @@ -3676,17 +3700,17 @@ msgstr "" #~ msgstr "Reporting Actions" #: src/pages/build/BuildDetail.tsx:374 -#~ msgid "Print build report" -#~ msgstr "Print build report" - -#: src/pages/build/BuildDetail.tsx:378 msgid "Build Order Actions" msgstr "" -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "Print build report" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" msgstr "" @@ -3725,7 +3749,7 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" @@ -3733,10 +3757,10 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 @@ -3769,12 +3793,12 @@ msgstr "" msgid "Assigned Stock" msgstr "" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" msgstr "" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" msgstr "" @@ -3804,32 +3828,32 @@ msgid "Manufacturer Part Details" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:487 +#: src/pages/part/PartDetail.tsx:492 msgid "Parameters" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:560 +#: src/pages/part/PartDetail.tsx:566 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" msgstr "" @@ -3845,7 +3869,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" msgstr "" @@ -3879,7 +3903,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" msgstr "" @@ -3969,85 +3993,85 @@ msgstr "" msgid "Category Details" msgstr "" -#: src/pages/part/PartDetail.tsx:140 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" msgstr "" -#: src/pages/part/PartDetail.tsx:147 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" msgstr "" -#: src/pages/part/PartDetail.tsx:153 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:167 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" msgstr "" -#: src/pages/part/PartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" msgstr "" -#: src/pages/part/PartDetail.tsx:181 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" msgstr "" -#: src/pages/part/PartDetail.tsx:188 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" msgstr "" -#: src/pages/part/PartDetail.tsx:195 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" msgstr "" -#: src/pages/part/PartDetail.tsx:213 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:220 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" msgstr "" -#: src/pages/part/PartDetail.tsx:235 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:243 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:250 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" msgstr "" -#: src/pages/part/PartDetail.tsx:257 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" msgstr "" -#: src/pages/part/PartDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -4065,37 +4089,37 @@ msgstr "" msgid "Active" msgstr "" -#: src/pages/part/PartDetail.tsx:271 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" msgstr "" -#: src/pages/part/PartDetail.tsx:276 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" msgstr "" -#: src/pages/part/PartDetail.tsx:281 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" msgstr "" -#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:291 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:296 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" msgstr "" -#: src/pages/part/PartDetail.tsx:309 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" msgstr "" @@ -4104,7 +4128,7 @@ msgstr "" #~ msgid "Edit part" #~ msgstr "Edit part" -#: src/pages/part/PartDetail.tsx:314 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" msgstr "" @@ -4116,69 +4140,71 @@ msgstr "" #~ msgid "Delete part" #~ msgstr "Delete part" -#: src/pages/part/PartDetail.tsx:329 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" msgstr "" -#: src/pages/part/PartDetail.tsx:340 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" msgstr "" -#: src/pages/part/PartDetail.tsx:375 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" msgstr "" -#: src/pages/part/PartDetail.tsx:410 +#: src/pages/part/PartDetail.tsx:415 msgid "Stocktake By" msgstr "" -#: src/pages/part/PartDetail.tsx:481 +#: src/pages/part/PartDetail.tsx:486 msgid "Part Details" msgstr "" -#: src/pages/part/PartDetail.tsx:507 +#: src/pages/part/PartDetail.tsx:512 msgid "Variants" msgstr "" -#: src/pages/part/PartDetail.tsx:514 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" msgstr "" -#: src/pages/part/PartDetail.tsx:520 +#: src/pages/part/PartDetail.tsx:526 msgid "Bill of Materials" msgstr "" -#: src/pages/part/PartDetail.tsx:534 +#: src/pages/part/PartDetail.tsx:540 msgid "Used In" msgstr "" -#: src/pages/part/PartDetail.tsx:541 +#: src/pages/part/PartDetail.tsx:547 msgid "Part Pricing" msgstr "" -#: src/pages/part/PartDetail.tsx:547 +#: src/pages/part/PartDetail.tsx:553 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" msgstr "" -#: src/pages/part/PartDetail.tsx:586 +#: src/pages/part/PartDetail.tsx:593 msgid "Scheduling" msgstr "" -#: src/pages/part/PartDetail.tsx:596 +#: src/pages/part/PartDetail.tsx:605 msgid "Test Templates" msgstr "" -#: src/pages/part/PartDetail.tsx:607 +#: src/pages/part/PartDetail.tsx:616 msgid "Related Parts" msgstr "" -#: src/pages/part/PartDetail.tsx:662 -#: src/pages/stock/StockDetail.tsx:151 -#: src/pages/stock/StockDetail.tsx:529 +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 @@ -4186,55 +4212,55 @@ msgstr "" msgid "Available" msgstr "" -#: src/pages/part/PartDetail.tsx:668 +#: src/pages/part/PartDetail.tsx:673 msgid "No Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:674 +#: src/pages/part/PartDetail.tsx:679 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" msgstr "" -#: src/pages/part/PartDetail.tsx:680 -#: src/pages/stock/StockDetail.tsx:512 +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" msgstr "" -#: src/pages/part/PartDetail.tsx:699 +#: src/pages/part/PartDetail.tsx:704 msgid "Edit Part" msgstr "" -#: src/pages/part/PartDetail.tsx:706 +#: src/pages/part/PartDetail.tsx:711 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" msgstr "" -#: src/pages/part/PartDetail.tsx:718 +#: src/pages/part/PartDetail.tsx:723 msgid "Delete Part" msgstr "" -#: src/pages/part/PartDetail.tsx:727 +#: src/pages/part/PartDetail.tsx:732 msgid "Deleting this part cannot be reversed" msgstr "" -#: src/pages/part/PartDetail.tsx:765 +#: src/pages/part/PartDetail.tsx:770 #: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" msgstr "" -#: src/pages/part/PartDetail.tsx:773 +#: src/pages/part/PartDetail.tsx:778 msgid "Count part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:784 +#: src/pages/part/PartDetail.tsx:789 msgid "Transfer part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:793 +#: src/pages/part/PartDetail.tsx:798 msgid "Part Actions" msgstr "" @@ -4247,6 +4273,7 @@ msgid "No pricing data found for this part." msgstr "" #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" msgstr "" @@ -4255,54 +4282,32 @@ msgid "Purchase History" msgstr "" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "" - +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 @@ -4311,81 +4316,117 @@ msgstr "" msgid "Total Price" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "Minimum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "Maximum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:25 @@ -4404,33 +4445,33 @@ msgstr "" msgid "Loading pricing data" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "" @@ -4450,23 +4491,23 @@ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" msgstr "Regelitems" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" msgstr "Voltooide Verzendingen" @@ -4477,46 +4518,46 @@ msgstr "Voltooide Verzendingen" #~ msgstr "Order Currency," #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" msgstr "Order Details" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" msgstr "Klantreferentie" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" @@ -4526,17 +4567,17 @@ msgstr "Retourorder toevoegen" msgid "Customers" msgstr "Klanten" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" msgstr "Voeg Verkooporder toe" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" msgstr "In afwachting van verzending" @@ -4599,11 +4640,11 @@ msgstr "" msgid "Location Actions" msgstr "" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" msgstr "" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" msgstr "" @@ -4615,15 +4656,15 @@ msgstr "" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "Unlink custom barcode from stock item" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" msgstr "" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" msgstr "" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" msgstr "" @@ -4636,31 +4677,31 @@ msgstr "" #~ msgid "Delete stock item" #~ msgstr "Delete stock item" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" msgstr "" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" msgstr "" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" msgstr "" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" msgstr "" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" msgstr "" @@ -4668,34 +4709,34 @@ msgstr "" #~ msgid "Duplicate stock item" #~ msgstr "Duplicate stock item" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" msgstr "" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" msgstr "" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "" @@ -4786,7 +4827,7 @@ msgstr "" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" msgstr "" @@ -5224,7 +5265,7 @@ msgid "Required Tests" msgstr "" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" msgstr "" @@ -5306,23 +5347,39 @@ msgstr "" msgid "File could not be uploaded" msgstr "" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" msgstr "" @@ -5330,11 +5387,11 @@ msgstr "" #~ msgid "Upload attachment" #~ msgstr "Upload attachment" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" msgstr "" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "" @@ -5716,75 +5773,75 @@ msgstr "" msgid "No Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 msgid "Required" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:80 +#: src/tables/part/PartTestTemplateTable.tsx:85 msgid "Show required tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:95 +#: src/tables/part/PartTestTemplateTable.tsx:100 msgid "Show tests that require an attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:99 +#: src/tables/part/PartTestTemplateTable.tsx:104 msgid "Include Inherited" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:100 +#: src/tables/part/PartTestTemplateTable.tsx:105 msgid "Show tests from inherited templates" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:104 +#: src/tables/part/PartTestTemplateTable.tsx:109 msgid "Has Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:105 +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" msgstr "" @@ -6273,7 +6330,7 @@ msgid "Task ID" msgstr "" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" msgstr "" @@ -6679,95 +6736,95 @@ msgstr "" msgid "Delete stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 msgid "Delete Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:289 +#: src/tables/stock/StockItemTestResultTable.tsx:273 msgid "Test result deleted" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:303 +#: src/tables/stock/StockItemTestResultTable.tsx:287 msgid "Test Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" msgstr "" diff --git a/src/frontend/src/locales/no/messages.po b/src/frontend/src/locales/no/messages.po index eddcbda376..10eedb7632 100644 --- a/src/frontend/src/locales/no/messages.po +++ b/src/frontend/src/locales/no/messages.po @@ -8,7 +8,7 @@ msgstr "" "Language: no\n" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-05-23 11:39\n" +"PO-Revision-Date: 2024-06-19 04:49\n" "Last-Translator: \n" "Language-Team: Norwegian\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -48,18 +48,18 @@ msgstr "" #: src/components/buttons/PrintingActions.tsx:107 #: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 #: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 -#: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 +#: src/components/nav/SearchDrawer.tsx:427 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" msgstr "Feil" @@ -121,15 +121,15 @@ msgstr "Ja" msgid "No" msgstr "Nei" -#: src/components/details/Details.tsx:303 +#: src/components/details/Details.tsx:305 msgid "No name defined" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copied" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copy" msgstr "" @@ -145,7 +145,7 @@ msgstr "" #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" msgstr "Fjern" @@ -207,9 +207,9 @@ msgstr "" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:686 +#: src/pages/part/PartDetail.tsx:691 msgid "Inactive" msgstr "" @@ -248,6 +248,35 @@ msgstr "" msgid "Virtual" msgstr "Virtuell" +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "Suksess" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "Kunne ikke lagre notater" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "" + #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" msgstr "" @@ -334,11 +363,6 @@ msgstr "" msgid "Form Error" msgstr "Skjemafeil" -#: src/components/forms/ApiForm.tsx:430 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "Suksess" - #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" #~ msgstr "Form Errors Exist" @@ -389,7 +413,7 @@ msgstr "Innloggingen mislyktes" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." msgstr "Kontroller inndataene og prøv igjen." @@ -399,7 +423,7 @@ msgstr "Kontroller inndataene og prøv igjen." #~ msgstr "Mail delivery successfull" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" msgstr "Levering av e-post vellykket" @@ -527,7 +551,7 @@ msgstr "Vert" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:127 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -551,7 +575,6 @@ msgid "Add Host" msgstr "Legg til vert" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" msgstr "Lagre" @@ -579,20 +602,20 @@ msgstr "Navn: {0}" msgid "State: <0>worker ({0}), <1>plugins{1}" msgstr "Status: <0>arbeider ({0}), <1>utvidelser{1}" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "Søk" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" msgstr "Laster" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "Ingen resultater funnet" @@ -614,7 +637,7 @@ msgid "Thumbnail" msgstr "Miniatyrbilde" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" msgstr "Strekkodehandlinger" @@ -859,7 +882,7 @@ msgid "Close modal" msgstr "Lukk modal" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" msgstr "Server" @@ -967,7 +990,7 @@ msgstr "Kontoinnstillinger" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:295 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" msgstr "Systeminnstillinger" @@ -1031,8 +1054,8 @@ msgid "About" msgstr "Om" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" @@ -1053,35 +1076,35 @@ msgstr "Varsel" msgid "Mark as read" msgstr "Merk som lest" -#: src/components/nav/SearchDrawer.tsx:77 +#: src/components/nav/SearchDrawer.tsx:78 msgid "results" msgstr "resultater" -#: src/components/nav/SearchDrawer.tsx:337 +#: src/components/nav/SearchDrawer.tsx:349 msgid "Enter search text" msgstr "Skriv inn søketekst" -#: src/components/nav/SearchDrawer.tsx:364 +#: src/components/nav/SearchDrawer.tsx:376 msgid "Search Options" msgstr "Alternativer for søk" -#: src/components/nav/SearchDrawer.tsx:367 +#: src/components/nav/SearchDrawer.tsx:379 msgid "Regex search" msgstr "Regex-søk" -#: src/components/nav/SearchDrawer.tsx:377 +#: src/components/nav/SearchDrawer.tsx:389 msgid "Whole word search" msgstr "Helordsøk" -#: src/components/nav/SearchDrawer.tsx:416 +#: src/components/nav/SearchDrawer.tsx:430 msgid "An error occurred during search query" msgstr "Det oppstod en feil under søk" -#: src/components/nav/SearchDrawer.tsx:427 +#: src/components/nav/SearchDrawer.tsx:441 msgid "No results" msgstr "Ingen resultater" -#: src/components/nav/SearchDrawer.tsx:430 +#: src/components/nav/SearchDrawer.tsx:444 msgid "No results available for search query" msgstr "Ingen resultater tilgjengelig for søk" @@ -1100,7 +1123,7 @@ msgstr "Ukjent modell: {model}" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:832 +#: src/pages/part/PartDetail.tsx:837 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" @@ -1109,11 +1132,11 @@ msgstr "Del" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:640 +#: src/pages/part/PartDetail.tsx:645 msgid "Parts" msgstr "Deler" @@ -1136,7 +1159,7 @@ msgstr "" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "Leverandørdel" @@ -1160,15 +1183,15 @@ msgid "Part Category" msgstr "Delkategori" #: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 +#: src/pages/Index/Settings/SystemSettings.tsx:165 #: src/pages/part/CategoryDetail.tsx:249 #: src/pages/part/CategoryDetail.tsx:282 -#: src/pages/part/PartDetail.tsx:822 +#: src/pages/part/PartDetail.tsx:827 msgid "Part Categories" msgstr "Delkategorier" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:560 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "Lagervare" @@ -1188,7 +1211,7 @@ msgstr "Lagerplassering" #: src/components/render/ModelType.tsx:82 #: src/pages/stock/LocationDetail.tsx:185 #: src/pages/stock/LocationDetail.tsx:361 -#: src/pages/stock/StockDetail.tsx:552 +#: src/pages/stock/StockDetail.tsx:554 msgid "Stock Locations" msgstr "Lagerplasseringer" @@ -1227,7 +1250,7 @@ msgid "Build Lines" msgstr "" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" msgstr "Firma" @@ -1250,17 +1273,17 @@ msgid "Project Codes" msgstr "Prosjektkoder" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" msgstr "Innkjøpsordre" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:573 +#: src/pages/part/PartDetail.tsx:579 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" msgstr "Innkjøpsordrer" @@ -1275,16 +1298,16 @@ msgstr "Ordrelinjer for innkjøpsordre" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" msgstr "Salgsordre" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:579 +#: src/pages/part/PartDetail.tsx:586 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" msgstr "Salgsordrer" @@ -1298,13 +1321,13 @@ msgid "Sales Order Shipments" msgstr "Salgsordreforsendelser" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" msgstr "Returordre" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" @@ -1322,8 +1345,8 @@ msgstr "Adresser" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" msgstr "Kontakt" @@ -1341,7 +1364,7 @@ msgid "Owners" msgstr "Eiere" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" msgstr "Bruker" @@ -1385,26 +1408,27 @@ msgstr "Forsendelse" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:493 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 #: src/pages/stock/LocationDetail.tsx:345 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" msgstr "Lagerbeholdning" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:517 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" msgstr "Serienummer" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:523 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 @@ -1844,16 +1868,12 @@ msgid "Getting started" msgstr "Komme i gang" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "Opplasting av bilde mislyktes" +#~ msgid "Failed to upload image" +#~ msgstr "Failed to upload image" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "Notater lagret" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "Kunne ikke lagre notater" +#~ msgid "Notes saved" +#~ msgstr "Notes saved" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" @@ -1972,42 +1992,46 @@ msgid "Portuguese (Brazilian)" msgstr "Portugisisk (Brasil)" #: src/contexts/LanguageContext.tsx:43 +msgid "Romanian" +msgstr "" + +#: src/contexts/LanguageContext.tsx:44 msgid "Russian" msgstr "Russisk" -#: src/contexts/LanguageContext.tsx:44 +#: src/contexts/LanguageContext.tsx:45 msgid "Slovak" msgstr "" -#: src/contexts/LanguageContext.tsx:45 +#: src/contexts/LanguageContext.tsx:46 msgid "Slovenian" msgstr "Slovensk" -#: src/contexts/LanguageContext.tsx:46 +#: src/contexts/LanguageContext.tsx:47 msgid "Swedish" msgstr "Svensk" -#: src/contexts/LanguageContext.tsx:47 +#: src/contexts/LanguageContext.tsx:48 msgid "Thai" msgstr "Thailandsk" -#: src/contexts/LanguageContext.tsx:48 +#: src/contexts/LanguageContext.tsx:49 msgid "Turkish" msgstr "Tyrkisk" -#: src/contexts/LanguageContext.tsx:49 +#: src/contexts/LanguageContext.tsx:50 msgid "Ukrainian" msgstr "" -#: src/contexts/LanguageContext.tsx:50 +#: src/contexts/LanguageContext.tsx:51 msgid "Vietnamese" msgstr "Vietnamesisk" -#: src/contexts/LanguageContext.tsx:51 +#: src/contexts/LanguageContext.tsx:52 msgid "Chinese (Simplified)" msgstr "Kinesisk (forenklet)" -#: src/contexts/LanguageContext.tsx:52 +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" msgstr "Kinesisk (tradisjonell)" @@ -2021,7 +2045,7 @@ msgstr "Hjem" #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" msgstr "Dashbord" @@ -2160,10 +2184,10 @@ msgstr "Demo" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" msgstr "Innkjøp" @@ -2171,15 +2195,15 @@ msgstr "Innkjøp" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" msgstr "Salg" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" msgstr "Lekeplass" @@ -2464,7 +2488,7 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" @@ -2515,7 +2539,7 @@ msgstr "Angi serienumre for ny lagerbeholdning (eller la stå tom)" #~ msgstr "Stock item updated" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" @@ -2537,8 +2561,8 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:207 -#: src/pages/part/PartDetail.tsx:656 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" msgstr "På lager" @@ -2560,14 +2584,14 @@ msgid "Actions" msgstr "Handlinger" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" msgstr "Legg til" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" msgstr "Tell" @@ -2580,12 +2604,12 @@ msgid "Remove Stock" msgstr "" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:788 msgid "Transfer Stock" msgstr "Overfør lager" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:777 msgid "Count Stock" msgstr "Tell beholdning" @@ -2625,23 +2649,14 @@ msgstr "" #~ msgid "You have been logged out" #~ msgstr "You have been logged out" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" msgstr "" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" msgstr "" -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "Sjekk innboksen for en nullstillingslenke. Dette fungerer bare hvis du har en konto. Sjekk også i spam." - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "Tilbakestilling feilet" - #: src/functions/auth.tsx:141 #~ msgid "Already logged in" #~ msgstr "Already logged in" @@ -2654,11 +2669,20 @@ msgstr "Tilbakestilling feilet" #~ msgid "Found an existing login - welcome back!" #~ msgstr "Found an existing login - welcome back!" -#: src/functions/auth.tsx:153 +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "Sjekk innboksen for en nullstillingslenke. Dette fungerer bare hvis du har en konto. Sjekk også i spam." + +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "Tilbakestilling feilet" + +#: src/functions/auth.tsx:195 msgid "Logged In" msgstr "" -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:196 msgid "Successfully logged in" msgstr "" @@ -2796,7 +2820,7 @@ msgstr "Denne siden er erstatning for den gamle startsiden med samme informasjon msgid "Welcome to your Dashboard{0}" msgstr "Velkommen til dashbordet ditt{0}" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." msgstr "Denne siden er et utstillingsvindu for Platform UI." @@ -3374,15 +3398,15 @@ msgstr "Velg innstillinger som er relevante for brukerens livssyklus. Mer tilgje msgid "System settings" msgstr "Systeminnstillinger" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" msgstr "Innlogging" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" msgstr "Strekkoder" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" msgstr "Prising" @@ -3394,50 +3418,50 @@ msgstr "Prising" #~ msgid "Exchange Rates" #~ msgstr "Exchange Rates" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" msgstr "Etiketter" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" msgstr "Rapportering" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:591 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" msgstr "Lagertelling" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:527 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" msgstr "Produksjonsordrer" -#: src/pages/Index/Settings/SystemSettings.tsx:298 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" msgstr "Bytt til brukerinnstilling" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" msgstr "Konto" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" msgstr "Sikkerhet" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" msgstr "Visningsvalg" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" msgstr "Kontoinnstillinger" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" msgstr "Bytt til systeminnstilling" @@ -3475,8 +3499,8 @@ msgstr "Marker som ulest" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3489,8 +3513,8 @@ msgstr "Status" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" @@ -3501,10 +3525,10 @@ msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:134 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3537,10 +3561,10 @@ msgid "Issued By" msgstr "" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:322 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 @@ -3555,8 +3579,8 @@ msgstr "Opprettet" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" msgstr "Måldato" @@ -3594,7 +3618,7 @@ msgstr "" #~ msgstr "Unlink custom barcode from part" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:535 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" msgstr "" @@ -3638,34 +3662,34 @@ msgstr "Underordnede Produksjonsordrer" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:613 +#: src/pages/part/PartDetail.tsx:622 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" msgstr "Vedlegg" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:625 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" msgstr "Notater" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" msgstr "Rediger produksjonsordre" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" @@ -3676,17 +3700,17 @@ msgstr "Legg til produksjonsordre" #~ msgstr "Reporting Actions" #: src/pages/build/BuildDetail.tsx:374 -#~ msgid "Print build report" -#~ msgstr "Print build report" - -#: src/pages/build/BuildDetail.tsx:378 msgid "Build Order Actions" msgstr "Produksjonsordre-handlinger" -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "Print build report" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" msgstr "" @@ -3725,7 +3749,7 @@ msgstr "Leverandør" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" @@ -3733,10 +3757,10 @@ msgstr "Produsent" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 @@ -3769,12 +3793,12 @@ msgstr "Leverte Deler" msgid "Assigned Stock" msgstr "Tildelt lagerbeholdning" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" msgstr "Rediger Bedrift" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" msgstr "Bedriftshandlinger" @@ -3804,32 +3828,32 @@ msgid "Manufacturer Part Details" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:487 +#: src/pages/part/PartDetail.tsx:492 msgid "Parameters" msgstr "Parametere" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:560 +#: src/pages/part/PartDetail.tsx:566 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" msgstr "Leverandører" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" msgstr "Rediger produsentdel" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" msgstr "" @@ -3845,7 +3869,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" msgstr "" @@ -3879,7 +3903,7 @@ msgstr "Mottatt lagerbeholdning" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" msgstr "" @@ -3969,85 +3993,85 @@ msgstr "" msgid "Category Details" msgstr "" -#: src/pages/part/PartDetail.tsx:140 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" msgstr "" -#: src/pages/part/PartDetail.tsx:147 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" msgstr "Kategori" -#: src/pages/part/PartDetail.tsx:153 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:167 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" msgstr "IPN" -#: src/pages/part/PartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" msgstr "" -#: src/pages/part/PartDetail.tsx:181 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" msgstr "Enheter" -#: src/pages/part/PartDetail.tsx:188 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" msgstr "Nøkkelord" -#: src/pages/part/PartDetail.tsx:195 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" msgstr "Lenke" -#: src/pages/part/PartDetail.tsx:213 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:220 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" msgstr "I bestilling" -#: src/pages/part/PartDetail.tsx:235 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:243 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:250 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" msgstr "Kan Produsere" -#: src/pages/part/PartDetail.tsx:257 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" msgstr "Produseres" -#: src/pages/part/PartDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -4065,37 +4089,37 @@ msgstr "Produseres" msgid "Active" msgstr "Aktiv" -#: src/pages/part/PartDetail.tsx:271 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" msgstr "" -#: src/pages/part/PartDetail.tsx:276 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" msgstr "Sammenstilt del" -#: src/pages/part/PartDetail.tsx:281 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" msgstr "" -#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" msgstr "Sporbar del" -#: src/pages/part/PartDetail.tsx:291 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:296 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" msgstr "" -#: src/pages/part/PartDetail.tsx:309 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" msgstr "Opprettelsesdato" @@ -4104,7 +4128,7 @@ msgstr "Opprettelsesdato" #~ msgid "Edit part" #~ msgstr "Edit part" -#: src/pages/part/PartDetail.tsx:314 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" msgstr "" @@ -4116,69 +4140,71 @@ msgstr "" #~ msgid "Delete part" #~ msgstr "Delete part" -#: src/pages/part/PartDetail.tsx:329 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" msgstr "" -#: src/pages/part/PartDetail.tsx:340 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" msgstr "Prisområde" -#: src/pages/part/PartDetail.tsx:375 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" msgstr "" -#: src/pages/part/PartDetail.tsx:410 +#: src/pages/part/PartDetail.tsx:415 msgid "Stocktake By" msgstr "" -#: src/pages/part/PartDetail.tsx:481 +#: src/pages/part/PartDetail.tsx:486 msgid "Part Details" msgstr "" -#: src/pages/part/PartDetail.tsx:507 +#: src/pages/part/PartDetail.tsx:512 msgid "Variants" msgstr "Varianter" -#: src/pages/part/PartDetail.tsx:514 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" msgstr "Tildelinger" -#: src/pages/part/PartDetail.tsx:520 +#: src/pages/part/PartDetail.tsx:526 msgid "Bill of Materials" msgstr "Stykkliste (BOM)" -#: src/pages/part/PartDetail.tsx:534 +#: src/pages/part/PartDetail.tsx:540 msgid "Used In" msgstr "Brukt i" -#: src/pages/part/PartDetail.tsx:541 +#: src/pages/part/PartDetail.tsx:547 msgid "Part Pricing" msgstr "" -#: src/pages/part/PartDetail.tsx:547 +#: src/pages/part/PartDetail.tsx:553 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" msgstr "Produsenter" -#: src/pages/part/PartDetail.tsx:586 +#: src/pages/part/PartDetail.tsx:593 msgid "Scheduling" msgstr "Planlegging" -#: src/pages/part/PartDetail.tsx:596 +#: src/pages/part/PartDetail.tsx:605 msgid "Test Templates" msgstr "Testmaler" -#: src/pages/part/PartDetail.tsx:607 +#: src/pages/part/PartDetail.tsx:616 msgid "Related Parts" msgstr "Relaterte Deler" -#: src/pages/part/PartDetail.tsx:662 -#: src/pages/stock/StockDetail.tsx:151 -#: src/pages/stock/StockDetail.tsx:529 +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 @@ -4186,55 +4212,55 @@ msgstr "Relaterte Deler" msgid "Available" msgstr "Tilgjengelig" -#: src/pages/part/PartDetail.tsx:668 +#: src/pages/part/PartDetail.tsx:673 msgid "No Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:674 +#: src/pages/part/PartDetail.tsx:679 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" msgstr "I bestilling" -#: src/pages/part/PartDetail.tsx:680 -#: src/pages/stock/StockDetail.tsx:512 +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" msgstr "Under produksjon" -#: src/pages/part/PartDetail.tsx:699 +#: src/pages/part/PartDetail.tsx:704 msgid "Edit Part" msgstr "Rediger del" -#: src/pages/part/PartDetail.tsx:706 +#: src/pages/part/PartDetail.tsx:711 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" msgstr "" -#: src/pages/part/PartDetail.tsx:718 +#: src/pages/part/PartDetail.tsx:723 msgid "Delete Part" msgstr "" -#: src/pages/part/PartDetail.tsx:727 +#: src/pages/part/PartDetail.tsx:732 msgid "Deleting this part cannot be reversed" msgstr "" -#: src/pages/part/PartDetail.tsx:765 +#: src/pages/part/PartDetail.tsx:770 #: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" msgstr "Lagerhandlinger" -#: src/pages/part/PartDetail.tsx:773 +#: src/pages/part/PartDetail.tsx:778 msgid "Count part stock" msgstr "Tell delbeholdning" -#: src/pages/part/PartDetail.tsx:784 +#: src/pages/part/PartDetail.tsx:789 msgid "Transfer part stock" msgstr "Overfør delbeholdning" -#: src/pages/part/PartDetail.tsx:793 +#: src/pages/part/PartDetail.tsx:798 msgid "Part Actions" msgstr "Delhandlinger" @@ -4247,6 +4273,7 @@ msgid "No pricing data found for this part." msgstr "" #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" msgstr "" @@ -4255,54 +4282,32 @@ msgid "Purchase History" msgstr "" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "" - +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "Komponent" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "Enhetspris" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 @@ -4311,81 +4316,117 @@ msgstr "Enhetspris" msgid "Total Price" msgstr "Total pris" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "Komponent" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "Minimum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "Maximum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "Enhetspris" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" msgstr "Oppdatert" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:25 @@ -4404,33 +4445,33 @@ msgstr "" msgid "Loading pricing data" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" msgstr "Dato" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "" @@ -4450,23 +4491,23 @@ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" msgstr "Ordrelinjer" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" msgstr "Fullførte forsendelser" @@ -4477,46 +4518,46 @@ msgstr "Fullførte forsendelser" #~ msgstr "Order Currency," #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" msgstr "Ordredetaljer" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" msgstr "Ordrehandlinger" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" msgstr "Kundereferanse" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" @@ -4526,17 +4567,17 @@ msgstr "" msgid "Customers" msgstr "Kunder" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" msgstr "Ventende forsendelser" @@ -4599,11 +4640,11 @@ msgstr "" msgid "Location Actions" msgstr "" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" msgstr "Basisdel" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" msgstr "" @@ -4615,15 +4656,15 @@ msgstr "" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "Unlink custom barcode from stock item" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" msgstr "" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" msgstr "" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" msgstr "" @@ -4636,31 +4677,31 @@ msgstr "" #~ msgid "Delete stock item" #~ msgstr "Delete stock item" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" msgstr "" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" msgstr "Sporing av lager" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" msgstr "Testdata" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" msgstr "Installerte artikler" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" msgstr "Underordnede artikler" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" msgstr "Rediger lagervare" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" msgstr "" @@ -4668,34 +4709,34 @@ msgstr "" #~ msgid "Duplicate stock item" #~ msgstr "Duplicate stock item" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" msgstr "Lagerhandlinger" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" msgstr "Tell beholdning" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" msgstr "Legg til lager" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" msgstr "Fjern lager" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" msgstr "Overfør" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" msgstr "Overfør lager" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "" @@ -4786,7 +4827,7 @@ msgstr "Filter" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" msgstr "Verdi" @@ -5224,7 +5265,7 @@ msgid "Required Tests" msgstr "" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" msgstr "" @@ -5306,23 +5347,39 @@ msgstr "Opplastningsfeil" msgid "File could not be uploaded" msgstr "Kunne ikke laste opp filen" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" msgstr "Slett vedlegg" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" msgstr "Legg til vedlegg" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" msgstr "Ny ekstern lenke" @@ -5330,11 +5387,11 @@ msgstr "Ny ekstern lenke" #~ msgid "Upload attachment" #~ msgstr "Upload attachment" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" msgstr "Ingen vedlegg funnet" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "" @@ -5716,75 +5773,75 @@ msgstr "" msgid "No Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 msgid "Required" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:80 +#: src/tables/part/PartTestTemplateTable.tsx:85 msgid "Show required tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:95 +#: src/tables/part/PartTestTemplateTable.tsx:100 msgid "Show tests that require an attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:99 +#: src/tables/part/PartTestTemplateTable.tsx:104 msgid "Include Inherited" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:100 +#: src/tables/part/PartTestTemplateTable.tsx:105 msgid "Show tests from inherited templates" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:104 +#: src/tables/part/PartTestTemplateTable.tsx:109 msgid "Has Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:105 +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" msgstr "" @@ -6273,7 +6330,7 @@ msgid "Task ID" msgstr "Oppgave-ID" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" msgstr "Startet" @@ -6679,95 +6736,95 @@ msgstr "" msgid "Delete stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 msgid "Delete Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:289 +#: src/tables/stock/StockItemTestResultTable.tsx:273 msgid "Test result deleted" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:303 +#: src/tables/stock/StockItemTestResultTable.tsx:287 msgid "Test Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" msgstr "" diff --git a/src/frontend/src/locales/pl/messages.po b/src/frontend/src/locales/pl/messages.po index 348cd697ae..4d321fdee6 100644 --- a/src/frontend/src/locales/pl/messages.po +++ b/src/frontend/src/locales/pl/messages.po @@ -8,7 +8,7 @@ msgstr "" "Language: pl\n" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-05-23 11:39\n" +"PO-Revision-Date: 2024-06-21 04:59\n" "Last-Translator: \n" "Language-Team: Polish\n" "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" @@ -20,7 +20,7 @@ msgstr "" #: src/components/Boundary.tsx:12 msgid "Error rendering component" -msgstr "" +msgstr "Błąd renderowania komponentu" #: src/components/Boundary.tsx:14 msgid "An error occurred while rendering this component. Refer to the console for more information." @@ -32,72 +32,72 @@ msgstr "Tytuł" #: src/components/buttons/AdminButton.tsx:83 msgid "Open in admin interface" -msgstr "" +msgstr "Otwórz w interfejsie administratora" #: src/components/buttons/CopyButton.tsx:18 msgid "Copy to clipboard" -msgstr "" +msgstr "Skopiuj do schowka" #: src/components/buttons/PrintingActions.tsx:95 msgid "Print Label" -msgstr "" +msgstr "Drukuj etykietę" #: src/components/buttons/PrintingActions.tsx:101 msgid "Label printing completed successfully" -msgstr "" +msgstr "Drukowanie etykiety zakończone powodzeniem" #: src/components/buttons/PrintingActions.tsx:107 #: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 #: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 -#: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 +#: src/components/nav/SearchDrawer.tsx:427 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" -msgstr "" +msgstr "Błąd" #: src/components/buttons/PrintingActions.tsx:108 msgid "The label could not be generated" -msgstr "" +msgstr "Etykieta nie może zostać wygenerowana" #: src/components/buttons/PrintingActions.tsx:123 msgid "Print Report" -msgstr "" +msgstr "Drukuj raport" #: src/components/buttons/PrintingActions.tsx:139 msgid "Report printing completed successfully" -msgstr "" +msgstr "Drukowanie raportu zakończone pomyślnie" #: src/components/buttons/PrintingActions.tsx:145 msgid "The report could not be generated" -msgstr "" +msgstr "Raport nie mógł zostać wygenerowany" #: src/components/buttons/PrintingActions.tsx:173 msgid "Printing Actions" -msgstr "" +msgstr "Akcje druku" #: src/components/buttons/PrintingActions.tsx:178 msgid "Print Labels" -msgstr "" +msgstr "Drukuj etykiety" #: src/components/buttons/PrintingActions.tsx:184 msgid "Print Reports" -msgstr "" +msgstr "Drukuj raporty" #: src/components/buttons/ScanButton.tsx:15 msgid "Scan QR code" -msgstr "" +msgstr "Skanuj kod QR" #: src/components/buttons/ScanButton.tsx:20 msgid "Open QR code scanner" -msgstr "" +msgstr "Otwórz skaner kodów QR" #: src/components/buttons/SpotlightButton.tsx:14 msgid "Open spotlight" @@ -105,49 +105,49 @@ msgstr "" #: src/components/buttons/YesNoButton.tsx:16 msgid "Pass" -msgstr "" +msgstr "Zaliczone" #: src/components/buttons/YesNoButton.tsx:17 msgid "Fail" -msgstr "" +msgstr "Niezaliczone" #: src/components/buttons/YesNoButton.tsx:32 #: src/tables/Filter.tsx:51 msgid "Yes" -msgstr "" +msgstr "Tak" #: src/components/buttons/YesNoButton.tsx:32 #: src/tables/Filter.tsx:52 msgid "No" -msgstr "" +msgstr "Nie" -#: src/components/details/Details.tsx:303 +#: src/components/details/Details.tsx:305 msgid "No name defined" -msgstr "" +msgstr "Nie zdefiniowano nazwy" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copied" -msgstr "" +msgstr "Skopiowano" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copy" -msgstr "" +msgstr "Kopiuj" #: src/components/details/DetailsImage.tsx:65 msgid "Remove Image" -msgstr "" +msgstr "Usuń obraz" #: src/components/details/DetailsImage.tsx:68 msgid "Remove the associated image from this item?" -msgstr "" +msgstr "Usunąć powiązany obrazek z tego elementu?" #: src/components/details/DetailsImage.tsx:71 #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" -msgstr "" +msgstr "Usuń" #: src/components/details/DetailsImage.tsx:71 #: src/components/editors/TemplateEditor/TemplateEditor.tsx:158 @@ -160,58 +160,58 @@ msgstr "" #: src/tables/InvenTreeTable.tsx:499 #: src/tables/build/BuildOutputTable.tsx:225 msgid "Cancel" -msgstr "" +msgstr "Anuluj" #: src/components/details/DetailsImage.tsx:97 msgid "Drag and drop to upload" -msgstr "" +msgstr "Przeciągnij i upuść, aby przesłać" #: src/components/details/DetailsImage.tsx:100 msgid "Click to select file(s)" -msgstr "" +msgstr "Kliknij, aby wybrać plik(i)" #: src/components/details/DetailsImage.tsx:224 msgid "Clear" -msgstr "" +msgstr "Wyczyść" #: src/components/details/DetailsImage.tsx:227 #: src/components/forms/ApiForm.tsx:573 #: src/contexts/ThemeContext.tsx:43 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:56 msgid "Submit" -msgstr "" +msgstr "Zatwierdź" #: src/components/details/DetailsImage.tsx:267 msgid "Select from existing images" -msgstr "" +msgstr "Wybierz z istniejących obrazów" #: src/components/details/DetailsImage.tsx:275 msgid "Select Image" -msgstr "" +msgstr "Wybierz obraz" #: src/components/details/DetailsImage.tsx:287 msgid "Upload new image" -msgstr "" +msgstr "Prześlij nowy obraz" #: src/components/details/DetailsImage.tsx:294 msgid "Upload Image" -msgstr "" +msgstr "Prześlij obrazek" #: src/components/details/DetailsImage.tsx:307 msgid "Delete image" -msgstr "" +msgstr "Usuń obraz" #: src/components/details/PartIcons.tsx:28 msgid "Part is not active" -msgstr "" +msgstr "Część nie jest aktywna" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:686 +#: src/pages/part/PartDetail.tsx:691 msgid "Inactive" -msgstr "" +msgstr "Nieaktywny" #: src/components/details/PartIcons.tsx:41 msgid "Part is a template part (variants can be made from this part)" @@ -219,7 +219,7 @@ msgstr "" #: src/components/details/PartIcons.tsx:47 msgid "Part can be assembled from other parts" -msgstr "" +msgstr "Część może być zmontowana z innych części" #: src/components/details/PartIcons.tsx:53 msgid "Part can be used in assemblies" @@ -227,30 +227,59 @@ msgstr "" #: src/components/details/PartIcons.tsx:59 msgid "Part stock is tracked by serial number" -msgstr "" +msgstr "Zapasy części są śledzone przez numer seryjny" #: src/components/details/PartIcons.tsx:65 msgid "Part can be purchased from external suppliers" -msgstr "" +msgstr "Część może być zakupiona od zewnętrznych dostawców" #: src/components/details/PartIcons.tsx:71 msgid "Part can be sold to customers" -msgstr "" +msgstr "Część może zostać sprzedana klientom" #: src/components/details/PartIcons.tsx:76 msgid "Part is virtual (not a physical part)" -msgstr "" +msgstr "Część jest wirtualna (nie fizyczna)" #: src/components/details/PartIcons.tsx:82 #: src/tables/part/PartTable.tsx:234 #: src/tables/part/PartTable.tsx:238 #: src/tables/part/PartVariantTable.tsx:25 msgid "Virtual" +msgstr "Wirtualny" + +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "Przesłanie obrazu nie powiodło się" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "Sukces" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "Notatki zapisane pomyślnie" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" msgstr "" +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "Podgląd notatek" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "Edytuj notatki" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "Zapisz notatki" + #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" -msgstr "" +msgstr "Kod" #: src/components/editors/TemplateEditor/PdfPreview/PdfPreview.tsx:44 #~ msgid "Failed to parse error response from server." @@ -258,28 +287,28 @@ msgstr "" #: src/components/editors/TemplateEditor/PdfPreview/PdfPreview.tsx:81 msgid "Preview not available, click \"Reload Preview\"." -msgstr "" +msgstr "Podgląd niedostępny, kliknij \"Odśwież podgląd\"." #: src/components/editors/TemplateEditor/PdfPreview/index.tsx:9 msgid "PDF Preview" -msgstr "" +msgstr "Podgląd PDF" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:104 msgid "Error loading template" -msgstr "" +msgstr "Błąd ładowania szablonu" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:116 msgid "Error saving template" -msgstr "" +msgstr "Wystąpił błąd zapisywania szablonu" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:146 #: src/components/editors/TemplateEditor/TemplateEditor.tsx:270 msgid "Save & Reload Preview" -msgstr "" +msgstr "Zapisz i odśwież podgląd" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:151 msgid "Are you sure you want to Save & Reload the preview?" -msgstr "" +msgstr "Czy na pewno chcesz zapisać i przeładować podgląd?" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:151 #~ msgid "Save & Reload preview?" @@ -291,19 +320,19 @@ msgstr "" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:157 msgid "Save & Reload" -msgstr "" +msgstr "Zapisz i odśwież" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:189 msgid "Preview updated" -msgstr "" +msgstr "Podgląd zaktualizowany" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:190 msgid "The preview has been updated successfully." -msgstr "" +msgstr "Podgląd został pomyślnie zaktualizowany." #: src/components/editors/TemplateEditor/TemplateEditor.tsx:262 msgid "Reload preview" -msgstr "" +msgstr "Odśwież podgląd" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:263 msgid "Use the currently stored template from the server" @@ -332,12 +361,7 @@ msgstr "" #: src/components/forms/ApiForm.tsx:149 #: src/functions/forms.tsx:259 msgid "Form Error" -msgstr "" - -#: src/components/forms/ApiForm.tsx:430 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "" +msgstr "Błąd formularza" #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" @@ -346,7 +370,7 @@ msgstr "" #: src/components/forms/ApiForm.tsx:611 #: src/tables/plugin/PluginListTable.tsx:388 msgid "Update" -msgstr "" +msgstr "Aktualizuj" #: src/components/forms/ApiForm.tsx:631 #: src/components/items/ActionDropdown.tsx:210 @@ -358,7 +382,7 @@ msgstr "" #: src/tables/RowActions.tsx:71 #: src/tables/plugin/PluginListTable.tsx:420 msgid "Delete" -msgstr "" +msgstr "Usuń" #: src/components/forms/AuthenticationForm.tsx:48 #: src/components/forms/AuthenticationForm.tsx:74 @@ -372,7 +396,7 @@ msgstr "Zalogowano pomyślnie" #: src/components/forms/AuthenticationForm.tsx:52 msgid "Logged in successfully" -msgstr "" +msgstr "Zalogowano pomyślnie" #: src/components/forms/AuthenticationForm.tsx:52 #~ msgid "Welcome back!" @@ -384,12 +408,12 @@ msgstr "" #: src/components/forms/AuthenticationForm.tsx:58 msgid "Login failed" -msgstr "" +msgstr "Logowanie nie powiodło się" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." msgstr "" @@ -399,7 +423,7 @@ msgstr "" #~ msgstr "Mail delivery successfull" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" msgstr "Wiadomość dostarczona" @@ -409,37 +433,37 @@ msgstr "" #: src/components/forms/AuthenticationForm.tsx:75 msgid "Mail delivery failed" -msgstr "" +msgstr "Dostawa poczty nie powiodła się" #: src/components/forms/AuthenticationForm.tsx:95 msgid "Or continue with other methods" -msgstr "" +msgstr "Lub kontynuuj za pomocą innych metod" #: src/components/forms/AuthenticationForm.tsx:106 #: src/components/forms/AuthenticationForm.tsx:227 msgid "Username" -msgstr "" +msgstr "Nazwa użytkownika" #: src/components/forms/AuthenticationForm.tsx:107 #: src/components/forms/AuthenticationForm.tsx:228 msgid "Your username" -msgstr "" +msgstr "Twoja nazwa użytkownika" #: src/components/forms/AuthenticationForm.tsx:112 #: src/components/forms/AuthenticationForm.tsx:240 #: src/pages/Auth/Set-Password.tsx:106 msgid "Password" -msgstr "" +msgstr "Hasło" #: src/components/forms/AuthenticationForm.tsx:113 #: src/components/forms/AuthenticationForm.tsx:241 msgid "Your password" -msgstr "" +msgstr "Twoje hasło" #: src/components/forms/AuthenticationForm.tsx:125 #: src/pages/Auth/Reset.tsx:26 msgid "Reset password" -msgstr "" +msgstr "Resetuj hasło" #: src/components/forms/AuthenticationForm.tsx:131 #~ msgid "Log in" @@ -450,13 +474,13 @@ msgstr "" #: src/pages/Auth/Reset.tsx:31 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49 msgid "Email" -msgstr "" +msgstr "Adres E-Mail" #: src/components/forms/AuthenticationForm.tsx:135 #: src/pages/Auth/Reset.tsx:32 #: src/pages/Auth/Set-Password.tsx:107 msgid "We will send you a link to login - if you are registered" -msgstr "" +msgstr "Wyślemy Ci link do logowania - jeśli jesteś zarejestrowany" #: src/components/forms/AuthenticationForm.tsx:136 #~ msgid "I will use username and password" @@ -464,35 +488,35 @@ msgstr "" #: src/components/forms/AuthenticationForm.tsx:151 msgid "Send me an email" -msgstr "" +msgstr "Wyślij mi e-mail" #: src/components/forms/AuthenticationForm.tsx:153 msgid "Use username and password" -msgstr "" +msgstr "Użyj nazwy użytkownika i hasła" #: src/components/forms/AuthenticationForm.tsx:162 msgid "Log In" -msgstr "" +msgstr "Zaloguj się" #: src/components/forms/AuthenticationForm.tsx:164 msgid "Send Email" -msgstr "" +msgstr "Wyślij e-mail" #: src/components/forms/AuthenticationForm.tsx:193 msgid "Registration successful" -msgstr "" +msgstr "Rejestracja powiodła się" #: src/components/forms/AuthenticationForm.tsx:194 msgid "Please confirm your email address to complete the registration" -msgstr "" +msgstr "Proszę potwierdzić swój adres e-mail, aby zakończyć rejestrację" #: src/components/forms/AuthenticationForm.tsx:210 msgid "Input error" -msgstr "" +msgstr "Błąd danych wejściowych" #: src/components/forms/AuthenticationForm.tsx:234 msgid "This will be used for a confirmation" -msgstr "" +msgstr "To będzie używane do potwierdzenia" #: src/components/forms/AuthenticationForm.tsx:246 msgid "Password repeat" @@ -527,7 +551,7 @@ msgstr "" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:127 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -551,7 +575,6 @@ msgid "Add Host" msgstr "" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" msgstr "" @@ -579,20 +602,20 @@ msgstr "" msgid "State: <0>worker ({0}), <1>plugins{1}" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "" @@ -614,7 +637,7 @@ msgid "Thumbnail" msgstr "" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" msgstr "" @@ -680,16 +703,16 @@ msgstr "" #: src/components/items/InfoItem.tsx:27 msgid "None" -msgstr "" +msgstr "Brak" #: src/components/items/InvenTreeLogo.tsx:23 msgid "InvenTree Logo" -msgstr "" +msgstr "Logo InvenTree" #: src/components/items/OnlyStaff.tsx:9 #: src/components/modals/AboutInvenTreeModal.tsx:44 msgid "This information is only available for staff users" -msgstr "" +msgstr "Ta informacja jest dostępna tylko dla użytkowników personelu" #: src/components/items/Placeholder.tsx:14 msgid "This feature/button/site is a placeholder for a feature that is not implemented, only partial or intended for testing." @@ -705,27 +728,27 @@ msgstr "" #: src/components/modals/AboutInvenTreeModal.tsx:99 msgid "Version Information" -msgstr "" +msgstr "Informacje o wersji" #: src/components/modals/AboutInvenTreeModal.tsx:103 msgid "Your InvenTree version status is" -msgstr "" +msgstr "Twój status wersji InvenTree to" #: src/components/modals/AboutInvenTreeModal.tsx:107 msgid "Development Version" -msgstr "" +msgstr "Wersja rozwojowa" #: src/components/modals/AboutInvenTreeModal.tsx:111 msgid "Up to Date" -msgstr "" +msgstr "Aktualna" #: src/components/modals/AboutInvenTreeModal.tsx:115 msgid "Update Available" -msgstr "" +msgstr "Dostępna aktualizacja" #: src/components/modals/AboutInvenTreeModal.tsx:125 msgid "InvenTree Version" -msgstr "" +msgstr "Wersja InvenTree" #: src/components/modals/AboutInvenTreeModal.tsx:131 msgid "Commit Hash" @@ -742,72 +765,72 @@ msgstr "" #: src/components/modals/AboutInvenTreeModal.tsx:146 #: src/components/modals/ServerInfoModal.tsx:133 msgid "API Version" -msgstr "" +msgstr "Wersja API" #: src/components/modals/AboutInvenTreeModal.tsx:149 msgid "Python Version" -msgstr "" +msgstr "Wersja Pythona" #: src/components/modals/AboutInvenTreeModal.tsx:152 msgid "Django Version" -msgstr "" +msgstr "Wersja Django" #: src/components/modals/AboutInvenTreeModal.tsx:162 msgid "Links" -msgstr "" +msgstr "Linki" #: src/components/modals/AboutInvenTreeModal.tsx:168 msgid "InvenTree Documentation" -msgstr "" +msgstr "Dokumentacja InvenTree" #: src/components/modals/AboutInvenTreeModal.tsx:169 msgid "View Code on GitHub" -msgstr "" +msgstr "Zobacz kod na GitHub" #: src/components/modals/AboutInvenTreeModal.tsx:170 msgid "Credits" -msgstr "" +msgstr "Autorzy" #: src/components/modals/AboutInvenTreeModal.tsx:171 msgid "Mobile App" -msgstr "" +msgstr "Aplikacja mobilna" #: src/components/modals/AboutInvenTreeModal.tsx:172 msgid "Submit Bug Report" -msgstr "" +msgstr "Prześlij raport o błędzie" #: src/components/modals/AboutInvenTreeModal.tsx:183 msgid "Copy version information" -msgstr "" +msgstr "Kopiuj informacje o wersji" #: src/components/modals/AboutInvenTreeModal.tsx:192 #: src/components/modals/ServerInfoModal.tsx:147 msgid "Dismiss" -msgstr "" +msgstr "Odrzuć" #: src/components/modals/LicenseModal.tsx:39 msgid "No license text available" -msgstr "" +msgstr "Brak dostępnego tekstu licencji" #: src/components/modals/LicenseModal.tsx:46 msgid "No Information provided - this is likely a server issue" -msgstr "" +msgstr "Brak informacji - to prawdopodobnie problem z serwerem" #: src/components/modals/LicenseModal.tsx:71 msgid "Loading license information" -msgstr "" +msgstr "Wczytywanie informacji o licencji" #: src/components/modals/LicenseModal.tsx:77 msgid "Failed to fetch license information" -msgstr "" +msgstr "Nie udało się pobrać danych dotyczących licencji" #: src/components/modals/LicenseModal.tsx:85 msgid "{key} Packages" -msgstr "" +msgstr "Pakiety: {key}" #: src/components/modals/QrCodeModal.tsx:72 msgid "Unknown response" -msgstr "" +msgstr "Nieznana odpowiedź" #: src/components/modals/QrCodeModal.tsx:102 #: src/pages/Index/Scan.tsx:636 @@ -817,59 +840,59 @@ msgstr "" #: src/components/modals/QrCodeModal.tsx:125 #: src/pages/Index/Scan.tsx:659 msgid "Error while scanning" -msgstr "" +msgstr "Błąd podczas skanowania" #: src/components/modals/QrCodeModal.tsx:139 #: src/pages/Index/Scan.tsx:673 msgid "Error while stopping" -msgstr "" +msgstr "Błąd podczas zatrzymywania" #: src/components/modals/QrCodeModal.tsx:154 #: src/defaults/menuItems.tsx:21 #: src/pages/Index/Scan.tsx:746 msgid "Scanning" -msgstr "" +msgstr "Skanowanie" #: src/components/modals/QrCodeModal.tsx:154 #: src/pages/Index/Scan.tsx:746 msgid "Not scanning" -msgstr "" +msgstr "Nie skanuje" #: src/components/modals/QrCodeModal.tsx:159 #: src/pages/Index/Scan.tsx:752 msgid "Select Camera" -msgstr "" +msgstr "Wybierz kamerę" #: src/components/modals/QrCodeModal.tsx:169 #: src/pages/Index/Scan.tsx:737 msgid "Start scanning" -msgstr "" +msgstr "Rozpocznij skanowanie" #: src/components/modals/QrCodeModal.tsx:176 #: src/pages/Index/Scan.tsx:729 msgid "Stop scanning" -msgstr "" +msgstr "Zatrzymaj skanowanie" #: src/components/modals/QrCodeModal.tsx:181 msgid "No scans yet!" -msgstr "" +msgstr "Brak skanów!" #: src/components/modals/QrCodeModal.tsx:201 msgid "Close modal" msgstr "" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" -msgstr "" +msgstr "Serwer" #: src/components/modals/ServerInfoModal.tsx:32 msgid "Instance Name" -msgstr "" +msgstr "Nazwa instancji" #: src/components/modals/ServerInfoModal.tsx:38 msgid "Database" -msgstr "" +msgstr "Baza danych" #: src/components/modals/ServerInfoModal.tsx:38 #~ msgid "Bebug Mode" @@ -877,74 +900,74 @@ msgstr "" #: src/components/modals/ServerInfoModal.tsx:47 msgid "Debug Mode" -msgstr "" +msgstr "Tryb Debugowania" #: src/components/modals/ServerInfoModal.tsx:50 msgid "Server is running in debug mode" -msgstr "" +msgstr "Serwer jest uruchomiony w trybie debugowania" #: src/components/modals/ServerInfoModal.tsx:57 msgid "Docker Mode" -msgstr "" +msgstr "Tryb Dockera" #: src/components/modals/ServerInfoModal.tsx:60 msgid "Server is deployed using docker" -msgstr "" +msgstr "Serwer jest wdrożony z użyciem Dockera" #: src/components/modals/ServerInfoModal.tsx:66 msgid "Plugin Support" -msgstr "" +msgstr "Obsługa wtyczek" #: src/components/modals/ServerInfoModal.tsx:71 msgid "Plugin support enabled" -msgstr "" +msgstr "Obsługa wtyczek włączona" #: src/components/modals/ServerInfoModal.tsx:73 msgid "Plugin support disabled" -msgstr "" +msgstr "Obsługa wtyczek wyłączona" #: src/components/modals/ServerInfoModal.tsx:80 msgid "Server status" -msgstr "" +msgstr "Status serwera" #: src/components/modals/ServerInfoModal.tsx:86 msgid "Healthy" -msgstr "" +msgstr "Zdrowy" #: src/components/modals/ServerInfoModal.tsx:88 msgid "Issues detected" -msgstr "" +msgstr "Wykryto problemy" #: src/components/modals/ServerInfoModal.tsx:97 msgid "Background Worker" -msgstr "" +msgstr "Proces w tle" #: src/components/modals/ServerInfoModal.tsx:101 msgid "Background worker not running" -msgstr "" +msgstr "Proces w tle nie jest uruchomiony" #: src/components/modals/ServerInfoModal.tsx:109 msgid "Email Settings" -msgstr "" +msgstr "Ustawienia poczty e-mail" #: src/components/modals/ServerInfoModal.tsx:113 msgid "Email settings not configured" -msgstr "" +msgstr "Ustawienia e-mail nie zostały skonfigurowane" #: src/components/modals/ServerInfoModal.tsx:121 #: src/tables/plugin/PluginListTable.tsx:144 #: src/tables/plugin/PluginListTable.tsx:294 msgid "Version" -msgstr "" +msgstr "Wersja" #: src/components/modals/ServerInfoModal.tsx:127 msgid "Server Version" -msgstr "" +msgstr "Wersja serwera" #: src/components/nav/Layout.tsx:70 #: src/tables/part/PartThumbTable.tsx:194 msgid "Search..." -msgstr "" +msgstr "Szukaj..." #: src/components/nav/Layout.tsx:73 msgid "Nothing found..." @@ -958,24 +981,24 @@ msgstr "" #: src/components/nav/MainMenu.tsx:42 #: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:26 msgid "Settings" -msgstr "" +msgstr "Ustawienia" #: src/components/nav/MainMenu.tsx:49 #: src/defaults/menuItems.tsx:15 msgid "Account settings" -msgstr "" +msgstr "Ustawienia konta" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:295 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" -msgstr "" +msgstr "Ustawienia systemowe" #: src/components/nav/MainMenu.tsx:67 #: src/defaults/menuItems.tsx:63 #: src/pages/Index/Settings/AdminCenter/Index.tsx:192 msgid "Admin Center" -msgstr "" +msgstr "Centrum Admina" #: src/components/nav/MainMenu.tsx:68 #~ msgid "Current language {locale}" @@ -987,21 +1010,21 @@ msgstr "" #: src/components/nav/MainMenu.tsx:77 msgid "Logout" -msgstr "" +msgstr "Wyloguj się" #: src/components/nav/NavHoverMenu.tsx:65 #: src/defaults/actions.tsx:58 msgid "Open Navigation" -msgstr "" +msgstr "Otwórz nawigację" #: src/components/nav/NavHoverMenu.tsx:84 msgid "View all" -msgstr "" +msgstr "Pokaż wszystkie" #: src/components/nav/NavHoverMenu.tsx:100 #: src/components/nav/NavHoverMenu.tsx:110 msgid "Get started" -msgstr "" +msgstr "Pierwsze kroki" #: src/components/nav/NavHoverMenu.tsx:103 msgid "Overview over high-level objects, functions and possible usecases." @@ -1009,34 +1032,34 @@ msgstr "" #: src/components/nav/NavigationDrawer.tsx:57 msgid "Navigation" -msgstr "" +msgstr "Nawigacja" #: src/components/nav/NavigationDrawer.tsx:60 msgid "Pages" -msgstr "" +msgstr "Strony" #: src/components/nav/NavigationDrawer.tsx:65 #: src/pages/Index/Settings/AdminCenter/Index.tsx:153 #: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:41 msgid "Plugins" -msgstr "" +msgstr "Wtyczki" #: src/components/nav/NavigationDrawer.tsx:75 #: src/defaults/actions.tsx:30 msgid "Documentation" -msgstr "" +msgstr "Dokumentacja" #: src/components/nav/NavigationDrawer.tsx:78 msgid "About" -msgstr "" +msgstr "O nas" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" -msgstr "" +msgstr "Powiadomienia" #: src/components/nav/NotificationDrawer.tsx:95 msgid "You have no unread notifications." @@ -1046,48 +1069,48 @@ msgstr "" #: src/components/nav/NotificationDrawer.tsx:117 #: src/tables/notifications/NotificationsTable.tsx:36 msgid "Notification" -msgstr "" +msgstr "Powiadomienie" #: src/components/nav/NotificationDrawer.tsx:140 #: src/pages/Notifications.tsx:73 msgid "Mark as read" -msgstr "" +msgstr "Oznacz jako przeczytane" -#: src/components/nav/SearchDrawer.tsx:77 +#: src/components/nav/SearchDrawer.tsx:78 msgid "results" -msgstr "" +msgstr "wyniki" -#: src/components/nav/SearchDrawer.tsx:337 +#: src/components/nav/SearchDrawer.tsx:349 msgid "Enter search text" -msgstr "" +msgstr "Wpisz frazę, którą chcesz wyszukać" -#: src/components/nav/SearchDrawer.tsx:364 +#: src/components/nav/SearchDrawer.tsx:376 msgid "Search Options" -msgstr "" +msgstr "Opcje wyszukiwania" -#: src/components/nav/SearchDrawer.tsx:367 +#: src/components/nav/SearchDrawer.tsx:379 msgid "Regex search" -msgstr "" +msgstr "Wyszukiwanie Regex" -#: src/components/nav/SearchDrawer.tsx:377 +#: src/components/nav/SearchDrawer.tsx:389 msgid "Whole word search" -msgstr "" - -#: src/components/nav/SearchDrawer.tsx:416 -msgid "An error occurred during search query" -msgstr "" - -#: src/components/nav/SearchDrawer.tsx:427 -msgid "No results" -msgstr "" +msgstr "Wyszukiwanie całych słów" #: src/components/nav/SearchDrawer.tsx:430 +msgid "An error occurred during search query" +msgstr "Wystąpił błąd podczas wyszukiwania" + +#: src/components/nav/SearchDrawer.tsx:441 +msgid "No results" +msgstr "Brak wyników" + +#: src/components/nav/SearchDrawer.tsx:444 msgid "No results available for search query" -msgstr "" +msgstr "Brak dostępnych wyników wyszukiwania" #: src/components/render/Instance.tsx:166 msgid "Unknown model: {model}" -msgstr "" +msgstr "Nieznany model: {model}" #: src/components/render/ModelType.tsx:22 #: src/forms/BuildForms.tsx:201 @@ -1100,22 +1123,22 @@ msgstr "" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:832 +#: src/pages/part/PartDetail.tsx:837 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" -msgstr "" +msgstr "Komponent" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:640 +#: src/pages/part/PartDetail.tsx:645 msgid "Parts" -msgstr "" +msgstr "Komponenty" #: src/components/render/ModelType.tsx:31 msgid "Part Parameter Template" @@ -1136,7 +1159,7 @@ msgstr "" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "" @@ -1160,15 +1183,15 @@ msgid "Part Category" msgstr "" #: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 +#: src/pages/Index/Settings/SystemSettings.tsx:165 #: src/pages/part/CategoryDetail.tsx:249 #: src/pages/part/CategoryDetail.tsx:282 -#: src/pages/part/PartDetail.tsx:822 +#: src/pages/part/PartDetail.tsx:827 msgid "Part Categories" msgstr "" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:560 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "" @@ -1188,7 +1211,7 @@ msgstr "" #: src/components/render/ModelType.tsx:82 #: src/pages/stock/LocationDetail.tsx:185 #: src/pages/stock/LocationDetail.tsx:361 -#: src/pages/stock/StockDetail.tsx:552 +#: src/pages/stock/StockDetail.tsx:554 msgid "Stock Locations" msgstr "" @@ -1227,7 +1250,7 @@ msgid "Build Lines" msgstr "" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" msgstr "" @@ -1250,17 +1273,17 @@ msgid "Project Codes" msgstr "" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" msgstr "" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:573 +#: src/pages/part/PartDetail.tsx:579 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" msgstr "" @@ -1275,16 +1298,16 @@ msgstr "" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" msgstr "" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:579 +#: src/pages/part/PartDetail.tsx:586 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" msgstr "" @@ -1298,13 +1321,13 @@ msgid "Sales Order Shipments" msgstr "" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" msgstr "" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" @@ -1322,95 +1345,96 @@ msgstr "" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" msgstr "" #: src/components/render/ModelType.tsx:180 #: src/pages/company/CompanyDetail.tsx:243 msgid "Contacts" -msgstr "" +msgstr "Kontakty" #: src/components/render/ModelType.tsx:186 msgid "Owner" -msgstr "" +msgstr "Właściciel" #: src/components/render/ModelType.tsx:187 msgid "Owners" -msgstr "" +msgstr "Właściciele" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" -msgstr "" +msgstr "Użytkownik" #: src/components/render/ModelType.tsx:194 #: src/pages/Index/Settings/AdminCenter/Index.tsx:81 #: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:13 msgid "Users" -msgstr "" +msgstr "Użytkownicy" #: src/components/render/ModelType.tsx:200 msgid "Label Template" -msgstr "" +msgstr "Szablon etykiety" #: src/components/render/ModelType.tsx:201 #: src/pages/Index/Settings/AdminCenter/Index.tsx:135 msgid "Label Templates" -msgstr "" +msgstr "Szablony etykiet" #: src/components/render/ModelType.tsx:207 msgid "Report Template" -msgstr "" +msgstr "Szablon Raportu" #: src/components/render/ModelType.tsx:208 #: src/pages/Index/Settings/AdminCenter/Index.tsx:141 msgid "Report Templates" -msgstr "" +msgstr "Szablony raportów" #: src/components/render/ModelType.tsx:214 msgid "Plugin Configuration" -msgstr "" +msgstr "Konfiguracja wtyczki" #: src/components/render/ModelType.tsx:215 msgid "Plugin Configurations" -msgstr "" +msgstr "Konfiguracje wtyczki" #: src/components/render/Order.tsx:104 msgid "Shipment" -msgstr "" +msgstr "Wysyłka" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:493 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 #: src/pages/stock/LocationDetail.tsx:345 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" -msgstr "" +msgstr "Stan" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:517 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" -msgstr "" +msgstr "Numer seryjny" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:523 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 #: src/tables/stock/StockTrackingTable.tsx:59 msgid "Quantity" -msgstr "" +msgstr "Ilość" #: src/components/settings/SettingItem.tsx:47 #: src/components/settings/SettingItem.tsx:100 @@ -1419,20 +1443,20 @@ msgstr "" #: src/components/settings/SettingList.tsx:67 msgid "Edit Setting" -msgstr "" +msgstr "Zmień ustawienia" #: src/components/settings/SettingList.tsx:78 #: src/components/settings/SettingList.tsx:108 msgid "Setting {0} updated successfully" -msgstr "" +msgstr "Ustawienie {0} zaktualizowane pomyślnie" #: src/components/settings/SettingList.tsx:107 msgid "Setting updated" -msgstr "" +msgstr "Ustawienie zostało zaktualizowane" #: src/components/settings/SettingList.tsx:117 msgid "Error editing setting" -msgstr "" +msgstr "Błąd edycji ustawień" #: src/components/settings/SettingList.tsx:158 msgid "No settings specified" @@ -1815,21 +1839,21 @@ msgstr "" #: src/components/widgets/DisplayWidget.tsx:11 #: src/pages/Index/Settings/AccountSettings/DisplaySettingsPanel.tsx:17 msgid "Display Settings" -msgstr "" +msgstr "Ustawienia wyświetlania" #: src/components/widgets/DisplayWidget.tsx:15 #: src/pages/Index/Settings/AccountSettings/DisplaySettingsPanel.tsx:23 msgid "Color Mode" -msgstr "" +msgstr "Tryb kolorów" #: src/components/widgets/DisplayWidget.tsx:21 #: src/pages/Index/Settings/AccountSettings/DisplaySettingsPanel.tsx:33 msgid "Language" -msgstr "" +msgstr "Język" #: src/components/widgets/FeedbackWidget.tsx:19 msgid "Something is new: Platform UI" -msgstr "" +msgstr "Coś nowego: Platforma UI" #: src/components/widgets/FeedbackWidget.tsx:21 msgid "We are building a new UI with a modern stack. What you currently see is not fixed and will be redesigned but demonstrates the UI/UX possibilities we will have going forward." @@ -1837,43 +1861,39 @@ msgstr "" #: src/components/widgets/FeedbackWidget.tsx:32 msgid "Provide Feedback" -msgstr "" +msgstr "Prześlij opinię" #: src/components/widgets/GetStartedWidget.tsx:11 msgid "Getting started" -msgstr "" +msgstr "Pierwsze kroki" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Failed to upload image" +#~ msgstr "Failed to upload image" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "" +#~ msgid "Notes saved" +#~ msgstr "Notes saved" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" -msgstr "" +msgstr "Układ" #: src/components/widgets/WidgetLayout.tsx:172 msgid "Reset Layout" -msgstr "" +msgstr "Resetuj układ" #: src/components/widgets/WidgetLayout.tsx:185 msgid "Stop Edit" -msgstr "" +msgstr "Zatrzymaj edycję" #: src/components/widgets/WidgetLayout.tsx:185 msgid "Edit Layout" -msgstr "" +msgstr "Edytuj układ" #: src/components/widgets/WidgetLayout.tsx:191 msgid "Appearance" -msgstr "" +msgstr "Wygląd" #: src/components/widgets/WidgetLayout.tsx:203 msgid "Show Boxes" @@ -1881,182 +1901,186 @@ msgstr "" #: src/contexts/LanguageContext.tsx:20 msgid "Bulgarian" -msgstr "" +msgstr "Bułgarski" #: src/contexts/LanguageContext.tsx:21 msgid "Czech" -msgstr "" +msgstr "Czeski" #: src/contexts/LanguageContext.tsx:22 msgid "Danish" -msgstr "" +msgstr "Duński" #: src/contexts/LanguageContext.tsx:23 msgid "German" -msgstr "" +msgstr "Niemiecki" #: src/contexts/LanguageContext.tsx:24 msgid "Greek" -msgstr "" +msgstr "Grecki" #: src/contexts/LanguageContext.tsx:25 msgid "English" -msgstr "" +msgstr "Angielski" #: src/contexts/LanguageContext.tsx:26 msgid "Spanish" -msgstr "" +msgstr "Hiszpański" #: src/contexts/LanguageContext.tsx:27 msgid "Spanish (Mexican)" -msgstr "" +msgstr "Hiszpański (Meksykański)" #: src/contexts/LanguageContext.tsx:28 msgid "Farsi / Persian" -msgstr "" +msgstr "Farsi / Perski" #: src/contexts/LanguageContext.tsx:29 msgid "Finnish" -msgstr "" +msgstr "Fiński" #: src/contexts/LanguageContext.tsx:30 msgid "French" -msgstr "" +msgstr "Francuski" #: src/contexts/LanguageContext.tsx:31 msgid "Hebrew" -msgstr "" +msgstr "Hebrajski" #: src/contexts/LanguageContext.tsx:32 msgid "Hindi" -msgstr "" +msgstr "Hinduski" #: src/contexts/LanguageContext.tsx:33 msgid "Hungarian" -msgstr "" +msgstr "Węgierski" #: src/contexts/LanguageContext.tsx:34 msgid "Italian" -msgstr "" +msgstr "Włoski" #: src/contexts/LanguageContext.tsx:35 msgid "Japanese" -msgstr "" +msgstr "Japoński" #: src/contexts/LanguageContext.tsx:36 msgid "Korean" -msgstr "" +msgstr "Koreański" #: src/contexts/LanguageContext.tsx:37 msgid "Latvian" -msgstr "" +msgstr "Łotewski" #: src/contexts/LanguageContext.tsx:38 msgid "Dutch" -msgstr "" +msgstr "Holenderski" #: src/contexts/LanguageContext.tsx:39 msgid "Norwegian" -msgstr "" +msgstr "Norweski" #: src/contexts/LanguageContext.tsx:40 msgid "Polish" -msgstr "" +msgstr "Polski" #: src/contexts/LanguageContext.tsx:41 msgid "Portuguese" -msgstr "" +msgstr "Portugalski" #: src/contexts/LanguageContext.tsx:42 msgid "Portuguese (Brazilian)" -msgstr "" +msgstr "Portugalski (Brazylijski)" #: src/contexts/LanguageContext.tsx:43 -msgid "Russian" -msgstr "" +msgid "Romanian" +msgstr "Rumuński" #: src/contexts/LanguageContext.tsx:44 -msgid "Slovak" -msgstr "" +msgid "Russian" +msgstr "Rosyjski" #: src/contexts/LanguageContext.tsx:45 -msgid "Slovenian" -msgstr "" +msgid "Slovak" +msgstr "Słowacki" #: src/contexts/LanguageContext.tsx:46 -msgid "Swedish" -msgstr "" +msgid "Slovenian" +msgstr "Słoweński" #: src/contexts/LanguageContext.tsx:47 -msgid "Thai" -msgstr "" +msgid "Swedish" +msgstr "Szwedzki" #: src/contexts/LanguageContext.tsx:48 -msgid "Turkish" -msgstr "" +msgid "Thai" +msgstr "Tajski" #: src/contexts/LanguageContext.tsx:49 -msgid "Ukrainian" -msgstr "" +msgid "Turkish" +msgstr "Turecki" #: src/contexts/LanguageContext.tsx:50 -msgid "Vietnamese" -msgstr "" +msgid "Ukrainian" +msgstr "Ukraiński" #: src/contexts/LanguageContext.tsx:51 -msgid "Chinese (Simplified)" -msgstr "" +msgid "Vietnamese" +msgstr "Wietnamski" #: src/contexts/LanguageContext.tsx:52 +msgid "Chinese (Simplified)" +msgstr "Chiński (uproszczony)" + +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" -msgstr "" +msgstr "Chiński (tradycyjny)" #: src/defaults/actions.tsx:16 #: src/defaults/links.tsx:26 #: src/defaults/menuItems.tsx:9 msgid "Home" -msgstr "" +msgstr "Strona główna" #: src/defaults/actions.tsx:23 #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" -msgstr "" +msgstr "Kokpit" #: src/defaults/actions.tsx:24 msgid "Go to the InvenTree dashboard" -msgstr "" +msgstr "Przejdź do kokpitu InvenTree" #: src/defaults/actions.tsx:31 msgid "Visit the documentation to learn more about InvenTree" -msgstr "" +msgstr "Odwiedź dokumentację, aby dowiedzieć się więcej o InvenTree" #: src/defaults/actions.tsx:37 #: src/defaults/links.tsx:92 #: src/defaults/links.tsx:122 msgid "About InvenTree" -msgstr "" +msgstr "O InvenTree" #: src/defaults/actions.tsx:38 #: src/defaults/links.tsx:123 msgid "About the InvenTree org" -msgstr "" +msgstr "O InvenTree.org" #: src/defaults/actions.tsx:44 msgid "Server Information" -msgstr "" +msgstr "Informacje o serwerze" #: src/defaults/actions.tsx:45 #: src/defaults/links.tsx:117 msgid "About this Inventree instance" -msgstr "" +msgstr "O tej instancji Inventree" #: src/defaults/actions.tsx:51 #: src/defaults/links.tsx:105 msgid "License Information" -msgstr "" +msgstr "Informacje o licencji" #: src/defaults/actions.tsx:52 #: src/defaults/links.tsx:129 @@ -2069,15 +2093,15 @@ msgstr "" #: src/defaults/dashboardItems.tsx:15 msgid "Subscribed Parts" -msgstr "" +msgstr "Obserwowane komponenty" #: src/defaults/dashboardItems.tsx:22 msgid "Subscribed Categories" -msgstr "" +msgstr "Obserwowane kategorie" #: src/defaults/dashboardItems.tsx:29 msgid "Latest Parts" -msgstr "" +msgstr "Najnowsze komponenty" #: src/defaults/dashboardItems.tsx:36 msgid "BOM Waiting Validation" @@ -2090,11 +2114,11 @@ msgstr "" #: src/defaults/dashboardItems.tsx:50 #: src/tables/part/PartTable.tsx:216 msgid "Low Stock" -msgstr "" +msgstr "Mała ilość w magazynie" #: src/defaults/dashboardItems.tsx:57 msgid "Depleted Stock" -msgstr "" +msgstr "Wyczerpane stany magazynowe" #: src/defaults/dashboardItems.tsx:64 msgid "Required for Build Orders" @@ -2102,7 +2126,7 @@ msgstr "" #: src/defaults/dashboardItems.tsx:71 msgid "Expired Stock" -msgstr "" +msgstr "Zapasy wygasły" #: src/defaults/dashboardItems.tsx:78 msgid "Stale Stock" @@ -2147,39 +2171,39 @@ msgstr "" #: src/defaults/links.tsx:11 #: src/pages/company/CompanyDetail.tsx:92 msgid "Website" -msgstr "" +msgstr "Strona internetowa" #: src/defaults/links.tsx:16 msgid "GitHub" -msgstr "" +msgstr "GitHub" #: src/defaults/links.tsx:21 msgid "Demo" -msgstr "" +msgstr "Demo" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" -msgstr "" +msgstr "Zakupy" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" msgstr "" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" msgstr "" @@ -2464,11 +2488,11 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" -msgstr "" +msgstr "Lokalizacja" #: src/forms/PurchaseOrderForms.tsx:448 msgid "Store at default location" @@ -2515,7 +2539,7 @@ msgstr "" #~ msgstr "Stock item updated" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" @@ -2523,7 +2547,7 @@ msgstr "" #: src/forms/StockForms.tsx:339 msgid "Loading..." -msgstr "" +msgstr "Ładowanie..." #: src/forms/StockForms.tsx:381 msgid "Move to default location" @@ -2537,15 +2561,15 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:207 -#: src/pages/part/PartDetail.tsx:656 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" msgstr "" #: src/forms/StockForms.tsx:449 msgid "Move" -msgstr "" +msgstr "Przenieś" #: src/forms/StockForms.tsx:449 #: src/forms/StockForms.tsx:483 @@ -2557,17 +2581,17 @@ msgstr "" #: src/forms/StockForms.tsx:684 #: src/tables/RowActions.tsx:149 msgid "Actions" -msgstr "" +msgstr "Akcje" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" -msgstr "" +msgstr "Dodaj" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" msgstr "" @@ -2580,12 +2604,12 @@ msgid "Remove Stock" msgstr "" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:788 msgid "Transfer Stock" msgstr "" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:777 msgid "Count Stock" msgstr "" @@ -2625,23 +2649,14 @@ msgstr "" #~ msgid "You have been logged out" #~ msgstr "You have been logged out" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" -msgstr "" +msgstr "Wylogowano" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" msgstr "" -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "" - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "" - #: src/functions/auth.tsx:141 #~ msgid "Already logged in" #~ msgstr "Already logged in" @@ -2654,11 +2669,20 @@ msgstr "" #~ msgid "Found an existing login - welcome back!" #~ msgstr "Found an existing login - welcome back!" -#: src/functions/auth.tsx:153 -msgid "Logged In" +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." msgstr "" -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "" + +#: src/functions/auth.tsx:195 +msgid "Logged In" +msgstr "Zalogowano" + +#: src/functions/auth.tsx:196 msgid "Successfully logged in" msgstr "" @@ -2680,7 +2704,7 @@ msgstr "" #: src/functions/notifications.tsx:10 msgid "Not implemented" -msgstr "" +msgstr "Nie zaimplementowano" #: src/functions/notifications.tsx:11 msgid "This feature is not yet implemented" @@ -2688,52 +2712,52 @@ msgstr "" #: src/functions/notifications.tsx:21 msgid "Permission denied" -msgstr "" +msgstr "Brak dostępu" #: src/functions/notifications.tsx:22 msgid "You do not have permission to perform this action" -msgstr "" +msgstr "Nie masz uprawnień do wykonania tej czynności" #: src/functions/notifications.tsx:33 msgid "Invalid Return Code" -msgstr "" +msgstr "Nieprawidłowy kod odpowiedzi" #: src/functions/notifications.tsx:34 msgid "Server returned status {returnCode}" -msgstr "" +msgstr "Serwer zwrócił status {returnCode}" #: src/hooks/UseForm.tsx:88 msgid "Item Created" -msgstr "" +msgstr "Element utworzony" #: src/hooks/UseForm.tsx:105 msgid "Item Updated" -msgstr "" +msgstr "Element zaktualizowany" #: src/hooks/UseForm.tsx:124 msgid "Item Deleted" -msgstr "" +msgstr "Element został usunięty" #: src/hooks/UseForm.tsx:128 msgid "Are you sure you want to delete this item?" -msgstr "" +msgstr "Czy na pewno chcesz usunąć ten element?" #: src/pages/Auth/Logged-In.tsx:23 msgid "Checking if you are already logged in" -msgstr "" +msgstr "Sprawdzanie, czy jesteś już zalogowany" #: src/pages/Auth/Login.tsx:31 #: src/pages/Index/Scan.tsx:329 msgid "No selection" -msgstr "" +msgstr "Brak wyboru" #: src/pages/Auth/Login.tsx:87 msgid "Welcome, log in below" -msgstr "" +msgstr "Witaj, zaloguj się poniżej" #: src/pages/Auth/Login.tsx:89 msgid "Register below" -msgstr "" +msgstr "Rejestracja poniżej" #: src/pages/Auth/Login.tsx:121 #~ msgid "Edit host options" @@ -2741,62 +2765,62 @@ msgstr "" #: src/pages/Auth/Logout.tsx:23 msgid "Logging out" -msgstr "" +msgstr "Wylogowywanie" #: src/pages/Auth/Reset.tsx:41 #: src/pages/Auth/Set-Password.tsx:112 msgid "Send mail" -msgstr "" +msgstr "Wyślij maila" #: src/pages/Auth/Set-Password.tsx:30 msgid "Token invalid" -msgstr "" +msgstr "Token jest nieprawidłowy" #: src/pages/Auth/Set-Password.tsx:31 msgid "You need to provide a valid token to set a new password. Check your inbox for a reset link." -msgstr "" +msgstr "Musisz podać poprawny token aby ustawić nowe hasło. Sprawdź swoją skrzynkę odbiorczą aby uzyskać link do zresetowania." #: src/pages/Auth/Set-Password.tsx:49 msgid "No token provided" -msgstr "" +msgstr "Nie podano tokenu" #: src/pages/Auth/Set-Password.tsx:50 msgid "You need to provide a token to set a new password. Check your inbox for a reset link." -msgstr "" +msgstr "Musisz podać token, aby ustawić nowe hasło. Sprawdź swoją skrzynkę odbiorczą, aby uzyskać link do zresetowania." #: src/pages/Auth/Set-Password.tsx:73 msgid "Password set" -msgstr "" +msgstr "Hasło ustawione" #: src/pages/Auth/Set-Password.tsx:74 msgid "The password was set successfully. You can now login with your new password" -msgstr "" +msgstr "Hasło zostało ustawione pomyślnie. Możesz teraz zalogować się przy użyciu nowego hasła" #: src/pages/Auth/Set-Password.tsx:101 msgid "Set new password" -msgstr "" +msgstr "Ustaw nowe hasło" #: src/pages/ErrorPage.tsx:17 msgid "Error: {0}" -msgstr "" +msgstr "Błąd: {0}" #: src/pages/ErrorPage.tsx:28 msgid "Sorry, an unexpected error has occurred." -msgstr "" +msgstr "Przepraszamy, wystąpił nieoczekiwany błąd" #: src/pages/Index/Dashboard.tsx:22 msgid "Autoupdate" -msgstr "" +msgstr "Aktualizacja automatyczna" #: src/pages/Index/Dashboard.tsx:26 msgid "This page is a replacement for the old start page with the same information. This page will be deprecated and replaced by the home page." -msgstr "" +msgstr "Ta strona jest zamiennikiem starej strony startowej z tymi samymi informacjami. Ta strona zostanie przestarzała i zastąpiona przez stronę główną." #: src/pages/Index/Home.tsx:58 msgid "Welcome to your Dashboard{0}" -msgstr "" +msgstr "Witaj w Panelu{0}" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." msgstr "" @@ -3019,31 +3043,31 @@ msgstr "" #: src/pages/Index/Scan.tsx:378 #: src/pages/Notifications.tsx:100 msgid "History" -msgstr "" +msgstr "Historia" #: src/pages/Index/Scan.tsx:384 msgid "Delete History" -msgstr "" +msgstr "Usuń historię" #: src/pages/Index/Scan.tsx:449 msgid "No history" -msgstr "" +msgstr "Brak historii" #: src/pages/Index/Scan.tsx:467 msgid "Item" -msgstr "" +msgstr "Komponent" #: src/pages/Index/Scan.tsx:470 msgid "Type" -msgstr "" +msgstr "Typ" #: src/pages/Index/Scan.tsx:473 msgid "Source" -msgstr "" +msgstr "Źródło" #: src/pages/Index/Scan.tsx:476 msgid "Scanned at" -msgstr "" +msgstr "Zeskanowano w" #: src/pages/Index/Scan.tsx:528 msgid "Enter item serial or data" @@ -3055,15 +3079,15 @@ msgstr "" #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:37 msgid "Account Details" -msgstr "" +msgstr "Szczegóły konta" #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:46 msgid "First name" -msgstr "" +msgstr "Imię" #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51 msgid "Last name" -msgstr "" +msgstr "Nazwisko" #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:58 #~ msgid "First name: {0}" @@ -3075,11 +3099,11 @@ msgstr "" #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:63 msgid "First name:" -msgstr "" +msgstr "Imię:" #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:67 msgid "Last name:" -msgstr "" +msgstr "Nazwisko:" #: src/pages/Index/Settings/AccountSettings/DisplaySettingsPanel.tsx:41 msgid "Use pseudo language" @@ -3092,7 +3116,7 @@ msgstr "" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:60 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:78 msgid "Not enabled" -msgstr "" +msgstr "Wyłączone" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:63 msgid "Single Sign On is not enabled for this server" @@ -3172,27 +3196,27 @@ msgstr "" #: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:67 msgid "dots" -msgstr "" +msgstr "kropki" #: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:81 msgid "Theme" -msgstr "" +msgstr "Motyw" #: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:87 msgid "Primary color" -msgstr "" +msgstr "Kolor podstawowy" #: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:100 msgid "White color" -msgstr "" +msgstr "Kolor biały" #: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:108 msgid "Black color" -msgstr "" +msgstr "Kolor czarny" #: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:116 msgid "Border Radius" -msgstr "" +msgstr "Promień obramowania" #: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:132 msgid "Loader" @@ -3208,24 +3232,24 @@ msgstr "" #: src/pages/Index/Settings/AdminCenter/Index.tsx:87 msgid "Background Tasks" -msgstr "" +msgstr "Zadania w tle" #: src/pages/Index/Settings/AdminCenter/Index.tsx:93 msgid "Error Reports" -msgstr "" +msgstr "Raporty o błędach" #: src/pages/Index/Settings/AdminCenter/Index.tsx:99 msgid "Currencies" -msgstr "" +msgstr "Waluty" #: src/pages/Index/Settings/AdminCenter/Index.tsx:117 msgid "Custom Units" -msgstr "" +msgstr "Jednostki niestandardowe" #: src/pages/Index/Settings/AdminCenter/Index.tsx:123 #: src/pages/part/CategoryDetail.tsx:255 msgid "Part Parameters" -msgstr "" +msgstr "Parametry części" #: src/pages/Index/Settings/AdminCenter/Index.tsx:127 #~ msgid "Templates" @@ -3233,32 +3257,32 @@ msgstr "" #: src/pages/Index/Settings/AdminCenter/Index.tsx:129 msgid "Category Parameters" -msgstr "" +msgstr "Parametry kategorii" #: src/pages/Index/Settings/AdminCenter/Index.tsx:147 msgid "Location types" -msgstr "" +msgstr "Typy lokalizacji" #: src/pages/Index/Settings/AdminCenter/Index.tsx:159 #: src/tables/machine/MachineTypeTable.tsx:287 msgid "Machines" -msgstr "" +msgstr "Maszyny" #: src/pages/Index/Settings/AdminCenter/Index.tsx:169 msgid "Quick Actions" -msgstr "" +msgstr "Szybkie akcje" #: src/pages/Index/Settings/AdminCenter/Index.tsx:174 msgid "Add a new user" -msgstr "" +msgstr "Dodaj nowego użytkownika" #: src/pages/Index/Settings/AdminCenter/Index.tsx:193 msgid "Advanced Options" -msgstr "" +msgstr "Opcje zaawansowane" #: src/pages/Index/Settings/AdminCenter/MachineManagementPanel.tsx:43 msgid "Machine types" -msgstr "" +msgstr "Typy maszyn" #: src/pages/Index/Settings/AdminCenter/MachineManagementPanel.tsx:53 msgid "Machine Error Stack" @@ -3271,7 +3295,7 @@ msgstr "" #: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:28 #: src/tables/settings/UserTable.tsx:116 msgid "Info" -msgstr "" +msgstr "Info" #: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:32 msgid "External plugins are not enabled for this InvenTree installation." @@ -3291,11 +3315,11 @@ msgstr "" #: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:50 msgid "Plugin Errors" -msgstr "" +msgstr "Błędy wtyczek" #: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:59 msgid "Plugin Settings" -msgstr "" +msgstr "Ustawienia wtyczki" #: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:53 msgid "Background Worker Not Running" @@ -3308,17 +3332,17 @@ msgstr "" #: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:60 #: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:76 msgid "Pending Tasks" -msgstr "" +msgstr "Oczekujce zadania" #: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:64 #: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:84 msgid "Scheduled Tasks" -msgstr "" +msgstr "Zaplanowane zadania" #: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:68 #: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:92 msgid "Failed Tasks" -msgstr "" +msgstr "Zadania zakończone błędem" #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:39 #~ msgid "Label" @@ -3364,7 +3388,7 @@ msgstr "" #: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:18 #: src/tables/settings/UserTable.tsx:135 msgid "Groups" -msgstr "" +msgstr "Grupy" #: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:30 msgid "Select settings relevant for user lifecycle. More available in" @@ -3374,17 +3398,17 @@ msgstr "" msgid "System settings" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" -msgstr "" +msgstr "Zaloguj się" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" -msgstr "" +msgstr "Kody kreskowe" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" -msgstr "" +msgstr "Cennik" #: src/pages/Index/Settings/SystemSettings.tsx:118 #~ msgid "Physical Units" @@ -3394,52 +3418,52 @@ msgstr "" #~ msgid "Exchange Rates" #~ msgstr "Exchange Rates" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" -msgstr "" +msgstr "Etykiety" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" -msgstr "" +msgstr "Raportowanie" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:591 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:527 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" -msgstr "" +msgstr "Zlecenia wykonania" -#: src/pages/Index/Settings/SystemSettings.tsx:298 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" -msgstr "" +msgstr "Przełącz na ustawienie użytkownika" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" -msgstr "" +msgstr "Konto" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" -msgstr "" +msgstr "Bezpieczeństwo" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" -msgstr "" +msgstr "Wyświetl opcje" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" -msgstr "" +msgstr "Ustawienia konta" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" -msgstr "" +msgstr "Przełącz na ustawienia systemowe" #: src/pages/Index/UserSettings.tsx:103 #~ msgid "User Settings" @@ -3451,11 +3475,11 @@ msgstr "" #: src/pages/NotFound.tsx:17 msgid "Not Found" -msgstr "" +msgstr "Nie znaleziono" #: src/pages/NotFound.tsx:20 msgid "Sorry, this page is not known or was moved." -msgstr "" +msgstr "Przepraszamy, ta strona nie jest znana lub została przeniesiona." #: src/pages/NotFound.tsx:27 msgid "Go to the start page" @@ -3475,8 +3499,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3489,8 +3513,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" @@ -3501,10 +3525,10 @@ msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:134 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3537,10 +3561,10 @@ msgid "Issued By" msgstr "" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:322 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 @@ -3555,8 +3579,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" msgstr "" @@ -3594,7 +3618,7 @@ msgstr "" #~ msgstr "Unlink custom barcode from part" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:535 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" msgstr "" @@ -3638,34 +3662,34 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:613 +#: src/pages/part/PartDetail.tsx:622 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" msgstr "" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:625 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" msgstr "" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" @@ -3676,17 +3700,17 @@ msgstr "" #~ msgstr "Reporting Actions" #: src/pages/build/BuildDetail.tsx:374 -#~ msgid "Print build report" -#~ msgstr "Print build report" - -#: src/pages/build/BuildDetail.tsx:378 msgid "Build Order Actions" msgstr "" -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "Print build report" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" msgstr "" @@ -3725,7 +3749,7 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" @@ -3733,10 +3757,10 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 @@ -3769,12 +3793,12 @@ msgstr "" msgid "Assigned Stock" msgstr "" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" msgstr "" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" msgstr "" @@ -3804,32 +3828,32 @@ msgid "Manufacturer Part Details" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:487 +#: src/pages/part/PartDetail.tsx:492 msgid "Parameters" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:560 +#: src/pages/part/PartDetail.tsx:566 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" msgstr "" @@ -3845,7 +3869,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" msgstr "" @@ -3879,7 +3903,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" msgstr "" @@ -3969,85 +3993,85 @@ msgstr "" msgid "Category Details" msgstr "" -#: src/pages/part/PartDetail.tsx:140 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" msgstr "" -#: src/pages/part/PartDetail.tsx:147 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" msgstr "" -#: src/pages/part/PartDetail.tsx:153 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:167 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" msgstr "" -#: src/pages/part/PartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" msgstr "" -#: src/pages/part/PartDetail.tsx:181 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" msgstr "" -#: src/pages/part/PartDetail.tsx:188 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" msgstr "" -#: src/pages/part/PartDetail.tsx:195 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" msgstr "" -#: src/pages/part/PartDetail.tsx:213 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:220 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" msgstr "" -#: src/pages/part/PartDetail.tsx:235 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:243 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:250 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" msgstr "" -#: src/pages/part/PartDetail.tsx:257 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" msgstr "" -#: src/pages/part/PartDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -4065,37 +4089,37 @@ msgstr "" msgid "Active" msgstr "" -#: src/pages/part/PartDetail.tsx:271 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" msgstr "" -#: src/pages/part/PartDetail.tsx:276 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" msgstr "" -#: src/pages/part/PartDetail.tsx:281 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" msgstr "" -#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:291 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:296 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" msgstr "" -#: src/pages/part/PartDetail.tsx:309 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" msgstr "" @@ -4104,7 +4128,7 @@ msgstr "" #~ msgid "Edit part" #~ msgstr "Edit part" -#: src/pages/part/PartDetail.tsx:314 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" msgstr "" @@ -4116,69 +4140,71 @@ msgstr "" #~ msgid "Delete part" #~ msgstr "Delete part" -#: src/pages/part/PartDetail.tsx:329 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" msgstr "" -#: src/pages/part/PartDetail.tsx:340 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" msgstr "" -#: src/pages/part/PartDetail.tsx:375 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" msgstr "" -#: src/pages/part/PartDetail.tsx:410 +#: src/pages/part/PartDetail.tsx:415 msgid "Stocktake By" msgstr "" -#: src/pages/part/PartDetail.tsx:481 +#: src/pages/part/PartDetail.tsx:486 msgid "Part Details" msgstr "" -#: src/pages/part/PartDetail.tsx:507 +#: src/pages/part/PartDetail.tsx:512 msgid "Variants" msgstr "" -#: src/pages/part/PartDetail.tsx:514 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" msgstr "" -#: src/pages/part/PartDetail.tsx:520 +#: src/pages/part/PartDetail.tsx:526 msgid "Bill of Materials" msgstr "" -#: src/pages/part/PartDetail.tsx:534 +#: src/pages/part/PartDetail.tsx:540 msgid "Used In" msgstr "" -#: src/pages/part/PartDetail.tsx:541 +#: src/pages/part/PartDetail.tsx:547 msgid "Part Pricing" msgstr "" -#: src/pages/part/PartDetail.tsx:547 +#: src/pages/part/PartDetail.tsx:553 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" msgstr "" -#: src/pages/part/PartDetail.tsx:586 +#: src/pages/part/PartDetail.tsx:593 msgid "Scheduling" msgstr "" -#: src/pages/part/PartDetail.tsx:596 +#: src/pages/part/PartDetail.tsx:605 msgid "Test Templates" msgstr "" -#: src/pages/part/PartDetail.tsx:607 +#: src/pages/part/PartDetail.tsx:616 msgid "Related Parts" msgstr "" -#: src/pages/part/PartDetail.tsx:662 -#: src/pages/stock/StockDetail.tsx:151 -#: src/pages/stock/StockDetail.tsx:529 +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 @@ -4186,55 +4212,55 @@ msgstr "" msgid "Available" msgstr "" -#: src/pages/part/PartDetail.tsx:668 +#: src/pages/part/PartDetail.tsx:673 msgid "No Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:674 +#: src/pages/part/PartDetail.tsx:679 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" msgstr "" -#: src/pages/part/PartDetail.tsx:680 -#: src/pages/stock/StockDetail.tsx:512 +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" msgstr "" -#: src/pages/part/PartDetail.tsx:699 +#: src/pages/part/PartDetail.tsx:704 msgid "Edit Part" msgstr "" -#: src/pages/part/PartDetail.tsx:706 +#: src/pages/part/PartDetail.tsx:711 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" msgstr "" -#: src/pages/part/PartDetail.tsx:718 +#: src/pages/part/PartDetail.tsx:723 msgid "Delete Part" msgstr "" -#: src/pages/part/PartDetail.tsx:727 +#: src/pages/part/PartDetail.tsx:732 msgid "Deleting this part cannot be reversed" msgstr "" -#: src/pages/part/PartDetail.tsx:765 +#: src/pages/part/PartDetail.tsx:770 #: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" msgstr "" -#: src/pages/part/PartDetail.tsx:773 +#: src/pages/part/PartDetail.tsx:778 msgid "Count part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:784 +#: src/pages/part/PartDetail.tsx:789 msgid "Transfer part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:793 +#: src/pages/part/PartDetail.tsx:798 msgid "Part Actions" msgstr "" @@ -4247,6 +4273,7 @@ msgid "No pricing data found for this part." msgstr "" #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" msgstr "" @@ -4255,54 +4282,32 @@ msgid "Purchase History" msgstr "" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "" - +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 @@ -4311,81 +4316,117 @@ msgstr "" msgid "Total Price" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "Minimum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "Maximum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:25 @@ -4404,33 +4445,33 @@ msgstr "" msgid "Loading pricing data" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "" @@ -4450,23 +4491,23 @@ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" msgstr "" @@ -4477,46 +4518,46 @@ msgstr "" #~ msgstr "Order Currency," #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" msgstr "" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" @@ -4526,17 +4567,17 @@ msgstr "" msgid "Customers" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" msgstr "" @@ -4599,11 +4640,11 @@ msgstr "" msgid "Location Actions" msgstr "" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" msgstr "" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" msgstr "" @@ -4615,15 +4656,15 @@ msgstr "" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "Unlink custom barcode from stock item" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" msgstr "" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" msgstr "" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" msgstr "" @@ -4636,31 +4677,31 @@ msgstr "" #~ msgid "Delete stock item" #~ msgstr "Delete stock item" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" msgstr "" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" msgstr "" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" msgstr "" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" msgstr "" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" msgstr "" @@ -4668,34 +4709,34 @@ msgstr "" #~ msgid "Duplicate stock item" #~ msgstr "Duplicate stock item" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" msgstr "" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" msgstr "" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "" @@ -4786,7 +4827,7 @@ msgstr "" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" msgstr "" @@ -5224,7 +5265,7 @@ msgid "Required Tests" msgstr "" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" msgstr "" @@ -5306,23 +5347,39 @@ msgstr "" msgid "File could not be uploaded" msgstr "" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" msgstr "" @@ -5330,11 +5387,11 @@ msgstr "" #~ msgid "Upload attachment" #~ msgstr "Upload attachment" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" msgstr "" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "" @@ -5716,75 +5773,75 @@ msgstr "" msgid "No Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 msgid "Required" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:80 +#: src/tables/part/PartTestTemplateTable.tsx:85 msgid "Show required tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:95 +#: src/tables/part/PartTestTemplateTable.tsx:100 msgid "Show tests that require an attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:99 +#: src/tables/part/PartTestTemplateTable.tsx:104 msgid "Include Inherited" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:100 +#: src/tables/part/PartTestTemplateTable.tsx:105 msgid "Show tests from inherited templates" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:104 +#: src/tables/part/PartTestTemplateTable.tsx:109 msgid "Has Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:105 +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" msgstr "" @@ -6273,7 +6330,7 @@ msgid "Task ID" msgstr "" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" msgstr "" @@ -6679,95 +6736,95 @@ msgstr "" msgid "Delete stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 msgid "Delete Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:289 +#: src/tables/stock/StockItemTestResultTable.tsx:273 msgid "Test result deleted" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:303 +#: src/tables/stock/StockItemTestResultTable.tsx:287 msgid "Test Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" msgstr "" diff --git a/src/frontend/src/locales/pseudo-LOCALE/messages.po b/src/frontend/src/locales/pseudo-LOCALE/messages.po index 65df48ca91..068c697cf2 100644 --- a/src/frontend/src/locales/pseudo-LOCALE/messages.po +++ b/src/frontend/src/locales/pseudo-LOCALE/messages.po @@ -83,18 +83,18 @@ msgstr "" #: src/components/buttons/PrintingActions.tsx:107 #: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 #: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 -#: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 +#: src/components/nav/SearchDrawer.tsx:427 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" msgstr "" @@ -156,15 +156,15 @@ msgstr "" msgid "No" msgstr "" -#: src/components/details/Details.tsx:303 +#: src/components/details/Details.tsx:305 msgid "No name defined" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copied" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copy" msgstr "" @@ -180,7 +180,7 @@ msgstr "" #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" msgstr "" @@ -242,9 +242,9 @@ msgstr "" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:686 +#: src/pages/part/PartDetail.tsx:691 msgid "Inactive" msgstr "" @@ -283,6 +283,35 @@ msgstr "" msgid "Virtual" msgstr "" +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "" + #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" msgstr "" @@ -369,11 +398,6 @@ msgstr "" msgid "Form Error" msgstr "" -#: src/components/forms/ApiForm.tsx:430 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "" - #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" #~ msgstr "" @@ -424,7 +448,7 @@ msgstr "" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." msgstr "" @@ -434,7 +458,7 @@ msgstr "" #~ msgstr "" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" msgstr "" @@ -562,7 +586,7 @@ msgstr "" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:127 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -586,7 +610,6 @@ msgid "Add Host" msgstr "" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" msgstr "" @@ -614,20 +637,20 @@ msgstr "" msgid "State: <0>worker ({0}), <1>plugins{1}" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "" @@ -649,7 +672,7 @@ msgid "Thumbnail" msgstr "" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" msgstr "" @@ -898,7 +921,7 @@ msgid "Close modal" msgstr "" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" msgstr "" @@ -1006,7 +1029,7 @@ msgstr "" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:295 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" msgstr "" @@ -1070,8 +1093,8 @@ msgid "About" msgstr "" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" @@ -1092,35 +1115,35 @@ msgstr "" msgid "Mark as read" msgstr "" -#: src/components/nav/SearchDrawer.tsx:77 +#: src/components/nav/SearchDrawer.tsx:78 msgid "results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:337 +#: src/components/nav/SearchDrawer.tsx:349 msgid "Enter search text" msgstr "" -#: src/components/nav/SearchDrawer.tsx:364 +#: src/components/nav/SearchDrawer.tsx:376 msgid "Search Options" msgstr "" -#: src/components/nav/SearchDrawer.tsx:367 +#: src/components/nav/SearchDrawer.tsx:379 msgid "Regex search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:377 +#: src/components/nav/SearchDrawer.tsx:389 msgid "Whole word search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:416 +#: src/components/nav/SearchDrawer.tsx:430 msgid "An error occurred during search query" msgstr "" -#: src/components/nav/SearchDrawer.tsx:427 +#: src/components/nav/SearchDrawer.tsx:441 msgid "No results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:430 +#: src/components/nav/SearchDrawer.tsx:444 msgid "No results available for search query" msgstr "" @@ -1139,7 +1162,7 @@ msgstr "" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:832 +#: src/pages/part/PartDetail.tsx:837 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" @@ -1148,11 +1171,11 @@ msgstr "" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:640 +#: src/pages/part/PartDetail.tsx:645 msgid "Parts" msgstr "" @@ -1175,7 +1198,7 @@ msgstr "" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "" @@ -1199,15 +1222,15 @@ msgid "Part Category" msgstr "" #: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 +#: src/pages/Index/Settings/SystemSettings.tsx:165 #: src/pages/part/CategoryDetail.tsx:249 #: src/pages/part/CategoryDetail.tsx:282 -#: src/pages/part/PartDetail.tsx:822 +#: src/pages/part/PartDetail.tsx:827 msgid "Part Categories" msgstr "" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:560 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "" @@ -1227,7 +1250,7 @@ msgstr "" #: src/components/render/ModelType.tsx:82 #: src/pages/stock/LocationDetail.tsx:185 #: src/pages/stock/LocationDetail.tsx:361 -#: src/pages/stock/StockDetail.tsx:552 +#: src/pages/stock/StockDetail.tsx:554 msgid "Stock Locations" msgstr "" @@ -1266,7 +1289,7 @@ msgid "Build Lines" msgstr "" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" msgstr "" @@ -1289,17 +1312,17 @@ msgid "Project Codes" msgstr "" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" msgstr "" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:573 +#: src/pages/part/PartDetail.tsx:579 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" msgstr "" @@ -1314,16 +1337,16 @@ msgstr "" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" msgstr "" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:579 +#: src/pages/part/PartDetail.tsx:586 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" msgstr "" @@ -1337,13 +1360,13 @@ msgid "Sales Order Shipments" msgstr "" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" msgstr "" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" @@ -1361,8 +1384,8 @@ msgstr "" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" msgstr "" @@ -1380,7 +1403,7 @@ msgid "Owners" msgstr "" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" msgstr "" @@ -1424,26 +1447,27 @@ msgstr "" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:493 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 #: src/pages/stock/LocationDetail.tsx:345 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" msgstr "" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:517 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" msgstr "" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:523 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 @@ -1883,16 +1907,12 @@ msgid "Getting started" msgstr "" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Failed to upload image" +#~ msgstr "" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "" +#~ msgid "Notes saved" +#~ msgstr "" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" @@ -2011,42 +2031,46 @@ msgid "Portuguese (Brazilian)" msgstr "" #: src/contexts/LanguageContext.tsx:43 -msgid "Russian" +msgid "Romanian" msgstr "" #: src/contexts/LanguageContext.tsx:44 -msgid "Slovak" +msgid "Russian" msgstr "" #: src/contexts/LanguageContext.tsx:45 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: src/contexts/LanguageContext.tsx:46 -msgid "Swedish" +msgid "Slovenian" msgstr "" #: src/contexts/LanguageContext.tsx:47 -msgid "Thai" +msgid "Swedish" msgstr "" #: src/contexts/LanguageContext.tsx:48 -msgid "Turkish" +msgid "Thai" msgstr "" #: src/contexts/LanguageContext.tsx:49 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: src/contexts/LanguageContext.tsx:50 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: src/contexts/LanguageContext.tsx:51 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: src/contexts/LanguageContext.tsx:52 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" msgstr "" @@ -2060,7 +2084,7 @@ msgstr "" #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" msgstr "" @@ -2199,10 +2223,10 @@ msgstr "" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" msgstr "" @@ -2210,15 +2234,15 @@ msgstr "" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" msgstr "" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" msgstr "" @@ -2503,7 +2527,7 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" @@ -2554,7 +2578,7 @@ msgstr "" #~ msgstr "" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" @@ -2576,8 +2600,8 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:207 -#: src/pages/part/PartDetail.tsx:656 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" msgstr "" @@ -2599,14 +2623,14 @@ msgid "Actions" msgstr "" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" msgstr "" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" msgstr "" @@ -2619,12 +2643,12 @@ msgid "Remove Stock" msgstr "" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:788 msgid "Transfer Stock" msgstr "" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:777 msgid "Count Stock" msgstr "" @@ -2664,23 +2688,14 @@ msgstr "" #~ msgid "You have been logged out" #~ msgstr "" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" msgstr "" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" msgstr "" -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "" - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "" - #: src/functions/auth.tsx:141 #~ msgid "Already logged in" #~ msgstr "" @@ -2693,11 +2708,20 @@ msgstr "" #~ msgid "Found an existing login - welcome back!" #~ msgstr "" -#: src/functions/auth.tsx:153 +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "" + +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "" + +#: src/functions/auth.tsx:195 msgid "Logged In" msgstr "" -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:196 msgid "Successfully logged in" msgstr "" @@ -2835,7 +2859,7 @@ msgstr "" msgid "Welcome to your Dashboard{0}" msgstr "" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." msgstr "" @@ -3413,15 +3437,15 @@ msgstr "" msgid "System settings" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" msgstr "" @@ -3433,50 +3457,50 @@ msgstr "" #~ msgid "Exchange Rates" #~ msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:591 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:527 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:298 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" msgstr "" @@ -3514,8 +3538,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3528,8 +3552,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" @@ -3540,10 +3564,10 @@ msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:134 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3576,10 +3600,10 @@ msgid "Issued By" msgstr "" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:322 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 @@ -3594,8 +3618,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" msgstr "" @@ -3633,7 +3657,7 @@ msgstr "" #~ msgstr "" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:535 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" msgstr "" @@ -3677,34 +3701,34 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:613 +#: src/pages/part/PartDetail.tsx:622 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" msgstr "" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:625 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" msgstr "" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" @@ -3715,17 +3739,17 @@ msgstr "" #~ msgstr "" #: src/pages/build/BuildDetail.tsx:374 -#~ msgid "Print build report" -#~ msgstr "" - -#: src/pages/build/BuildDetail.tsx:378 msgid "Build Order Actions" msgstr "" -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" msgstr "" @@ -3764,7 +3788,7 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" @@ -3772,10 +3796,10 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 @@ -3808,12 +3832,12 @@ msgstr "" msgid "Assigned Stock" msgstr "" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" msgstr "" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" msgstr "" @@ -3843,32 +3867,32 @@ msgid "Manufacturer Part Details" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:487 +#: src/pages/part/PartDetail.tsx:492 msgid "Parameters" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:560 +#: src/pages/part/PartDetail.tsx:566 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" msgstr "" @@ -3884,7 +3908,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" msgstr "" @@ -3918,7 +3942,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" msgstr "" @@ -4008,85 +4032,85 @@ msgstr "" msgid "Category Details" msgstr "" -#: src/pages/part/PartDetail.tsx:140 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" msgstr "" -#: src/pages/part/PartDetail.tsx:147 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" msgstr "" -#: src/pages/part/PartDetail.tsx:153 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:167 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" msgstr "" -#: src/pages/part/PartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" msgstr "" -#: src/pages/part/PartDetail.tsx:181 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" msgstr "" -#: src/pages/part/PartDetail.tsx:188 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" msgstr "" -#: src/pages/part/PartDetail.tsx:195 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" msgstr "" -#: src/pages/part/PartDetail.tsx:213 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:220 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" msgstr "" -#: src/pages/part/PartDetail.tsx:235 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:243 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:250 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" msgstr "" -#: src/pages/part/PartDetail.tsx:257 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" msgstr "" -#: src/pages/part/PartDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -4104,37 +4128,37 @@ msgstr "" msgid "Active" msgstr "" -#: src/pages/part/PartDetail.tsx:271 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" msgstr "" -#: src/pages/part/PartDetail.tsx:276 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" msgstr "" -#: src/pages/part/PartDetail.tsx:281 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" msgstr "" -#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:291 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:296 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" msgstr "" -#: src/pages/part/PartDetail.tsx:309 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" msgstr "" @@ -4143,7 +4167,7 @@ msgstr "" #~ msgid "Edit part" #~ msgstr "" -#: src/pages/part/PartDetail.tsx:314 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" msgstr "" @@ -4155,69 +4179,71 @@ msgstr "" #~ msgid "Delete part" #~ msgstr "" -#: src/pages/part/PartDetail.tsx:329 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" msgstr "" -#: src/pages/part/PartDetail.tsx:340 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" msgstr "" -#: src/pages/part/PartDetail.tsx:375 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" msgstr "" -#: src/pages/part/PartDetail.tsx:410 +#: src/pages/part/PartDetail.tsx:415 msgid "Stocktake By" msgstr "" -#: src/pages/part/PartDetail.tsx:481 +#: src/pages/part/PartDetail.tsx:486 msgid "Part Details" msgstr "" -#: src/pages/part/PartDetail.tsx:507 +#: src/pages/part/PartDetail.tsx:512 msgid "Variants" msgstr "" -#: src/pages/part/PartDetail.tsx:514 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" msgstr "" -#: src/pages/part/PartDetail.tsx:520 +#: src/pages/part/PartDetail.tsx:526 msgid "Bill of Materials" msgstr "" -#: src/pages/part/PartDetail.tsx:534 +#: src/pages/part/PartDetail.tsx:540 msgid "Used In" msgstr "" -#: src/pages/part/PartDetail.tsx:541 +#: src/pages/part/PartDetail.tsx:547 msgid "Part Pricing" msgstr "" -#: src/pages/part/PartDetail.tsx:547 +#: src/pages/part/PartDetail.tsx:553 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" msgstr "" -#: src/pages/part/PartDetail.tsx:586 +#: src/pages/part/PartDetail.tsx:593 msgid "Scheduling" msgstr "" -#: src/pages/part/PartDetail.tsx:596 +#: src/pages/part/PartDetail.tsx:605 msgid "Test Templates" msgstr "" -#: src/pages/part/PartDetail.tsx:607 +#: src/pages/part/PartDetail.tsx:616 msgid "Related Parts" msgstr "" -#: src/pages/part/PartDetail.tsx:662 -#: src/pages/stock/StockDetail.tsx:151 -#: src/pages/stock/StockDetail.tsx:529 +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 @@ -4225,55 +4251,55 @@ msgstr "" msgid "Available" msgstr "" -#: src/pages/part/PartDetail.tsx:668 +#: src/pages/part/PartDetail.tsx:673 msgid "No Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:674 +#: src/pages/part/PartDetail.tsx:679 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" msgstr "" -#: src/pages/part/PartDetail.tsx:680 -#: src/pages/stock/StockDetail.tsx:512 +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" msgstr "" -#: src/pages/part/PartDetail.tsx:699 +#: src/pages/part/PartDetail.tsx:704 msgid "Edit Part" msgstr "" -#: src/pages/part/PartDetail.tsx:706 +#: src/pages/part/PartDetail.tsx:711 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" msgstr "" -#: src/pages/part/PartDetail.tsx:718 +#: src/pages/part/PartDetail.tsx:723 msgid "Delete Part" msgstr "" -#: src/pages/part/PartDetail.tsx:727 +#: src/pages/part/PartDetail.tsx:732 msgid "Deleting this part cannot be reversed" msgstr "" -#: src/pages/part/PartDetail.tsx:765 +#: src/pages/part/PartDetail.tsx:770 #: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" msgstr "" -#: src/pages/part/PartDetail.tsx:773 +#: src/pages/part/PartDetail.tsx:778 msgid "Count part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:784 +#: src/pages/part/PartDetail.tsx:789 msgid "Transfer part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:793 +#: src/pages/part/PartDetail.tsx:798 msgid "Part Actions" msgstr "" @@ -4286,6 +4312,7 @@ msgid "No pricing data found for this part." msgstr "" #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" msgstr "" @@ -4294,54 +4321,32 @@ msgid "Purchase History" msgstr "" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "" - +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 @@ -4350,81 +4355,117 @@ msgstr "" msgid "Total Price" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:25 @@ -4443,33 +4484,33 @@ msgstr "" msgid "Loading pricing data" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "" @@ -4489,23 +4530,23 @@ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" msgstr "" @@ -4516,46 +4557,46 @@ msgstr "" #~ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" msgstr "" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" @@ -4565,17 +4606,17 @@ msgstr "" msgid "Customers" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" msgstr "" @@ -4638,11 +4679,11 @@ msgstr "" msgid "Location Actions" msgstr "" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" msgstr "" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" msgstr "" @@ -4654,15 +4695,15 @@ msgstr "" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" msgstr "" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" msgstr "" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" msgstr "" @@ -4675,31 +4716,31 @@ msgstr "" #~ msgid "Delete stock item" #~ msgstr "" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" msgstr "" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" msgstr "" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" msgstr "" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" msgstr "" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" msgstr "" @@ -4707,34 +4748,34 @@ msgstr "" #~ msgid "Duplicate stock item" #~ msgstr "" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" msgstr "" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" msgstr "" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "" @@ -4825,7 +4866,7 @@ msgstr "" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" msgstr "" @@ -5263,7 +5304,7 @@ msgid "Required Tests" msgstr "" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" msgstr "" @@ -5345,23 +5386,39 @@ msgstr "" msgid "File could not be uploaded" msgstr "" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" msgstr "" @@ -5369,11 +5426,11 @@ msgstr "" #~ msgid "Upload attachment" #~ msgstr "" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" msgstr "" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "" @@ -5755,75 +5812,75 @@ msgstr "" msgid "No Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 msgid "Required" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:80 +#: src/tables/part/PartTestTemplateTable.tsx:85 msgid "Show required tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:95 +#: src/tables/part/PartTestTemplateTable.tsx:100 msgid "Show tests that require an attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:99 +#: src/tables/part/PartTestTemplateTable.tsx:104 msgid "Include Inherited" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:100 +#: src/tables/part/PartTestTemplateTable.tsx:105 msgid "Show tests from inherited templates" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:104 +#: src/tables/part/PartTestTemplateTable.tsx:109 msgid "Has Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:105 +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" msgstr "" @@ -6312,7 +6369,7 @@ msgid "Task ID" msgstr "" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" msgstr "" @@ -6718,95 +6775,95 @@ msgstr "" msgid "Delete stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 msgid "Delete Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:289 +#: src/tables/stock/StockItemTestResultTable.tsx:273 msgid "Test result deleted" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:303 +#: src/tables/stock/StockItemTestResultTable.tsx:287 msgid "Test Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" msgstr "" diff --git a/src/frontend/src/locales/pt-br/messages.po b/src/frontend/src/locales/pt-br/messages.po index 9b0a9e7e48..5d3fc229f1 100644 --- a/src/frontend/src/locales/pt-br/messages.po +++ b/src/frontend/src/locales/pt-br/messages.po @@ -43,18 +43,18 @@ msgstr "" #: src/components/buttons/PrintingActions.tsx:107 #: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 #: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 -#: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 +#: src/components/nav/SearchDrawer.tsx:427 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" msgstr "" @@ -116,15 +116,15 @@ msgstr "" msgid "No" msgstr "" -#: src/components/details/Details.tsx:303 +#: src/components/details/Details.tsx:305 msgid "No name defined" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copied" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copy" msgstr "" @@ -140,7 +140,7 @@ msgstr "" #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" msgstr "" @@ -202,9 +202,9 @@ msgstr "" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:686 +#: src/pages/part/PartDetail.tsx:691 msgid "Inactive" msgstr "" @@ -243,6 +243,35 @@ msgstr "" msgid "Virtual" msgstr "" +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "" + #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" msgstr "" @@ -329,11 +358,6 @@ msgstr "" msgid "Form Error" msgstr "" -#: src/components/forms/ApiForm.tsx:430 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "" - #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" #~ msgstr "" @@ -374,12 +398,12 @@ msgstr "" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." msgstr "" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" msgstr "" @@ -503,7 +527,7 @@ msgstr "" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:127 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -527,7 +551,6 @@ msgid "Add Host" msgstr "" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" msgstr "" @@ -555,20 +578,20 @@ msgstr "" msgid "State: <0>worker ({0}), <1>plugins{1}" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "" @@ -590,7 +613,7 @@ msgid "Thumbnail" msgstr "" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" msgstr "" @@ -835,7 +858,7 @@ msgid "Close modal" msgstr "" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" msgstr "" @@ -943,7 +966,7 @@ msgstr "" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:295 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" msgstr "" @@ -999,8 +1022,8 @@ msgid "About" msgstr "" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" @@ -1021,35 +1044,35 @@ msgstr "" msgid "Mark as read" msgstr "" -#: src/components/nav/SearchDrawer.tsx:77 +#: src/components/nav/SearchDrawer.tsx:78 msgid "results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:337 +#: src/components/nav/SearchDrawer.tsx:349 msgid "Enter search text" msgstr "" -#: src/components/nav/SearchDrawer.tsx:364 +#: src/components/nav/SearchDrawer.tsx:376 msgid "Search Options" msgstr "" -#: src/components/nav/SearchDrawer.tsx:367 +#: src/components/nav/SearchDrawer.tsx:379 msgid "Regex search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:377 +#: src/components/nav/SearchDrawer.tsx:389 msgid "Whole word search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:416 +#: src/components/nav/SearchDrawer.tsx:430 msgid "An error occurred during search query" msgstr "" -#: src/components/nav/SearchDrawer.tsx:427 +#: src/components/nav/SearchDrawer.tsx:441 msgid "No results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:430 +#: src/components/nav/SearchDrawer.tsx:444 msgid "No results available for search query" msgstr "" @@ -1068,7 +1091,7 @@ msgstr "" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:832 +#: src/pages/part/PartDetail.tsx:837 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" @@ -1077,11 +1100,11 @@ msgstr "" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:640 +#: src/pages/part/PartDetail.tsx:645 msgid "Parts" msgstr "" @@ -1104,7 +1127,7 @@ msgstr "" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "" @@ -1128,15 +1151,15 @@ msgid "Part Category" msgstr "" #: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 +#: src/pages/Index/Settings/SystemSettings.tsx:165 #: src/pages/part/CategoryDetail.tsx:249 #: src/pages/part/CategoryDetail.tsx:282 -#: src/pages/part/PartDetail.tsx:822 +#: src/pages/part/PartDetail.tsx:827 msgid "Part Categories" msgstr "" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:560 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "" @@ -1156,7 +1179,7 @@ msgstr "" #: src/components/render/ModelType.tsx:82 #: src/pages/stock/LocationDetail.tsx:185 #: src/pages/stock/LocationDetail.tsx:361 -#: src/pages/stock/StockDetail.tsx:552 +#: src/pages/stock/StockDetail.tsx:554 msgid "Stock Locations" msgstr "" @@ -1195,7 +1218,7 @@ msgid "Build Lines" msgstr "" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" msgstr "" @@ -1218,17 +1241,17 @@ msgid "Project Codes" msgstr "" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" msgstr "" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:573 +#: src/pages/part/PartDetail.tsx:579 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" msgstr "" @@ -1243,16 +1266,16 @@ msgstr "" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" msgstr "" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:579 +#: src/pages/part/PartDetail.tsx:586 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" msgstr "" @@ -1266,13 +1289,13 @@ msgid "Sales Order Shipments" msgstr "" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" msgstr "" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" @@ -1290,8 +1313,8 @@ msgstr "" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" msgstr "" @@ -1309,7 +1332,7 @@ msgid "Owners" msgstr "" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" msgstr "" @@ -1353,26 +1376,27 @@ msgstr "" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:493 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 #: src/pages/stock/LocationDetail.tsx:345 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" msgstr "" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:517 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" msgstr "" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:523 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 @@ -1808,16 +1832,12 @@ msgid "Getting started" msgstr "" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Failed to upload image" +#~ msgstr "" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "" +#~ msgid "Notes saved" +#~ msgstr "" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" @@ -1936,42 +1956,46 @@ msgid "Portuguese (Brazilian)" msgstr "" #: src/contexts/LanguageContext.tsx:43 -msgid "Russian" +msgid "Romanian" msgstr "" #: src/contexts/LanguageContext.tsx:44 -msgid "Slovak" +msgid "Russian" msgstr "" #: src/contexts/LanguageContext.tsx:45 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: src/contexts/LanguageContext.tsx:46 -msgid "Swedish" +msgid "Slovenian" msgstr "" #: src/contexts/LanguageContext.tsx:47 -msgid "Thai" +msgid "Swedish" msgstr "" #: src/contexts/LanguageContext.tsx:48 -msgid "Turkish" +msgid "Thai" msgstr "" #: src/contexts/LanguageContext.tsx:49 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: src/contexts/LanguageContext.tsx:50 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: src/contexts/LanguageContext.tsx:51 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: src/contexts/LanguageContext.tsx:52 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" msgstr "" @@ -1985,7 +2009,7 @@ msgstr "" #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" msgstr "" @@ -2116,10 +2140,10 @@ msgstr "" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" msgstr "" @@ -2127,15 +2151,15 @@ msgstr "" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" msgstr "" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" msgstr "" @@ -2356,7 +2380,7 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" @@ -2407,7 +2431,7 @@ msgstr "" #~ msgstr "" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" @@ -2429,8 +2453,8 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:207 -#: src/pages/part/PartDetail.tsx:656 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" msgstr "" @@ -2452,14 +2476,14 @@ msgid "Actions" msgstr "" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" msgstr "" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" msgstr "" @@ -2472,12 +2496,12 @@ msgid "Remove Stock" msgstr "" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:788 msgid "Transfer Stock" msgstr "" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:777 msgid "Count Stock" msgstr "" @@ -2513,23 +2537,14 @@ msgstr "" #~ msgid "You have been logged out" #~ msgstr "" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" msgstr "" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" msgstr "" -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "" - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "" - #: src/functions/auth.tsx:141 #~ msgid "Already logged in" #~ msgstr "" @@ -2542,11 +2557,20 @@ msgstr "" #~ msgid "Found an existing login - welcome back!" #~ msgstr "" -#: src/functions/auth.tsx:153 +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "" + +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "" + +#: src/functions/auth.tsx:195 msgid "Logged In" msgstr "" -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:196 msgid "Successfully logged in" msgstr "" @@ -2680,7 +2704,7 @@ msgstr "" msgid "Welcome to your Dashboard{0}" msgstr "" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." msgstr "" @@ -3134,15 +3158,15 @@ msgstr "" msgid "System settings" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" msgstr "" @@ -3154,50 +3178,50 @@ msgstr "" #~ msgid "Exchange Rates" #~ msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:591 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:527 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:298 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" msgstr "" @@ -3231,8 +3255,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3245,8 +3269,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" @@ -3257,10 +3281,10 @@ msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:134 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3293,10 +3317,10 @@ msgid "Issued By" msgstr "" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:322 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 @@ -3311,8 +3335,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" msgstr "" @@ -3350,7 +3374,7 @@ msgstr "" #~ msgstr "" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:535 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" msgstr "" @@ -3394,34 +3418,34 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:613 +#: src/pages/part/PartDetail.tsx:622 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" msgstr "" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:625 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" msgstr "" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" @@ -3432,17 +3456,17 @@ msgstr "" #~ msgstr "" #: src/pages/build/BuildDetail.tsx:374 -#~ msgid "Print build report" -#~ msgstr "" - -#: src/pages/build/BuildDetail.tsx:378 msgid "Build Order Actions" msgstr "" -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" msgstr "" @@ -3481,7 +3505,7 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" @@ -3489,10 +3513,10 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 @@ -3525,12 +3549,12 @@ msgstr "" msgid "Assigned Stock" msgstr "" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" msgstr "" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" msgstr "" @@ -3560,32 +3584,32 @@ msgid "Manufacturer Part Details" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:487 +#: src/pages/part/PartDetail.tsx:492 msgid "Parameters" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:560 +#: src/pages/part/PartDetail.tsx:566 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" msgstr "" @@ -3601,7 +3625,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" msgstr "" @@ -3635,7 +3659,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" msgstr "" @@ -3725,85 +3749,85 @@ msgstr "" msgid "Category Details" msgstr "" -#: src/pages/part/PartDetail.tsx:140 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" msgstr "" -#: src/pages/part/PartDetail.tsx:147 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" msgstr "" -#: src/pages/part/PartDetail.tsx:153 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:167 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" msgstr "" -#: src/pages/part/PartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" msgstr "" -#: src/pages/part/PartDetail.tsx:181 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" msgstr "" -#: src/pages/part/PartDetail.tsx:188 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" msgstr "" -#: src/pages/part/PartDetail.tsx:195 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" msgstr "" -#: src/pages/part/PartDetail.tsx:213 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:220 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" msgstr "" -#: src/pages/part/PartDetail.tsx:235 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:243 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:250 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" msgstr "" -#: src/pages/part/PartDetail.tsx:257 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" msgstr "" -#: src/pages/part/PartDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -3821,37 +3845,37 @@ msgstr "" msgid "Active" msgstr "" -#: src/pages/part/PartDetail.tsx:271 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" msgstr "" -#: src/pages/part/PartDetail.tsx:276 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" msgstr "" -#: src/pages/part/PartDetail.tsx:281 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" msgstr "" -#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:291 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:296 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" msgstr "" -#: src/pages/part/PartDetail.tsx:309 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" msgstr "" @@ -3860,7 +3884,7 @@ msgstr "" #~ msgid "Edit part" #~ msgstr "" -#: src/pages/part/PartDetail.tsx:314 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" msgstr "" @@ -3872,69 +3896,71 @@ msgstr "" #~ msgid "Delete part" #~ msgstr "" -#: src/pages/part/PartDetail.tsx:329 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" msgstr "" -#: src/pages/part/PartDetail.tsx:340 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" msgstr "" -#: src/pages/part/PartDetail.tsx:375 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" msgstr "" -#: src/pages/part/PartDetail.tsx:410 +#: src/pages/part/PartDetail.tsx:415 msgid "Stocktake By" msgstr "" -#: src/pages/part/PartDetail.tsx:481 +#: src/pages/part/PartDetail.tsx:486 msgid "Part Details" msgstr "" -#: src/pages/part/PartDetail.tsx:507 +#: src/pages/part/PartDetail.tsx:512 msgid "Variants" msgstr "" -#: src/pages/part/PartDetail.tsx:514 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" msgstr "" -#: src/pages/part/PartDetail.tsx:520 +#: src/pages/part/PartDetail.tsx:526 msgid "Bill of Materials" msgstr "" -#: src/pages/part/PartDetail.tsx:534 +#: src/pages/part/PartDetail.tsx:540 msgid "Used In" msgstr "" -#: src/pages/part/PartDetail.tsx:541 +#: src/pages/part/PartDetail.tsx:547 msgid "Part Pricing" msgstr "" -#: src/pages/part/PartDetail.tsx:547 +#: src/pages/part/PartDetail.tsx:553 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" msgstr "" -#: src/pages/part/PartDetail.tsx:586 +#: src/pages/part/PartDetail.tsx:593 msgid "Scheduling" msgstr "" -#: src/pages/part/PartDetail.tsx:596 +#: src/pages/part/PartDetail.tsx:605 msgid "Test Templates" msgstr "" -#: src/pages/part/PartDetail.tsx:607 +#: src/pages/part/PartDetail.tsx:616 msgid "Related Parts" msgstr "" -#: src/pages/part/PartDetail.tsx:662 -#: src/pages/stock/StockDetail.tsx:151 -#: src/pages/stock/StockDetail.tsx:529 +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 @@ -3942,55 +3968,55 @@ msgstr "" msgid "Available" msgstr "" -#: src/pages/part/PartDetail.tsx:668 +#: src/pages/part/PartDetail.tsx:673 msgid "No Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:674 +#: src/pages/part/PartDetail.tsx:679 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" msgstr "" -#: src/pages/part/PartDetail.tsx:680 -#: src/pages/stock/StockDetail.tsx:512 +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" msgstr "" -#: src/pages/part/PartDetail.tsx:699 +#: src/pages/part/PartDetail.tsx:704 msgid "Edit Part" msgstr "" -#: src/pages/part/PartDetail.tsx:706 +#: src/pages/part/PartDetail.tsx:711 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" msgstr "" -#: src/pages/part/PartDetail.tsx:718 +#: src/pages/part/PartDetail.tsx:723 msgid "Delete Part" msgstr "" -#: src/pages/part/PartDetail.tsx:727 +#: src/pages/part/PartDetail.tsx:732 msgid "Deleting this part cannot be reversed" msgstr "" -#: src/pages/part/PartDetail.tsx:765 +#: src/pages/part/PartDetail.tsx:770 #: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" msgstr "" -#: src/pages/part/PartDetail.tsx:773 +#: src/pages/part/PartDetail.tsx:778 msgid "Count part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:784 +#: src/pages/part/PartDetail.tsx:789 msgid "Transfer part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:793 +#: src/pages/part/PartDetail.tsx:798 msgid "Part Actions" msgstr "" @@ -3999,6 +4025,7 @@ msgid "No pricing data found for this part." msgstr "" #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" msgstr "" @@ -4007,54 +4034,32 @@ msgid "Purchase History" msgstr "" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "" - +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 @@ -4063,81 +4068,117 @@ msgstr "" msgid "Total Price" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:25 @@ -4156,33 +4197,33 @@ msgstr "" msgid "Loading pricing data" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "" @@ -4202,23 +4243,23 @@ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" msgstr "" @@ -4229,46 +4270,46 @@ msgstr "" #~ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" msgstr "" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" @@ -4278,17 +4319,17 @@ msgstr "" msgid "Customers" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" msgstr "" @@ -4351,11 +4392,11 @@ msgstr "" msgid "Location Actions" msgstr "" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" msgstr "" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" msgstr "" @@ -4367,15 +4408,15 @@ msgstr "" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" msgstr "" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" msgstr "" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" msgstr "" @@ -4388,31 +4429,31 @@ msgstr "" #~ msgid "Delete stock item" #~ msgstr "" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" msgstr "" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" msgstr "" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" msgstr "" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" msgstr "" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" msgstr "" @@ -4420,34 +4461,34 @@ msgstr "" #~ msgid "Duplicate stock item" #~ msgstr "" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" msgstr "" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" msgstr "" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "" @@ -4538,7 +4579,7 @@ msgstr "" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" msgstr "" @@ -4976,7 +5017,7 @@ msgid "Required Tests" msgstr "" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" msgstr "" @@ -5058,23 +5099,39 @@ msgstr "" msgid "File could not be uploaded" msgstr "" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" msgstr "" @@ -5082,11 +5139,11 @@ msgstr "" #~ msgid "Upload attachment" #~ msgstr "" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" msgstr "" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "" @@ -5468,75 +5525,75 @@ msgstr "" msgid "No Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 msgid "Required" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:80 +#: src/tables/part/PartTestTemplateTable.tsx:85 msgid "Show required tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:95 +#: src/tables/part/PartTestTemplateTable.tsx:100 msgid "Show tests that require an attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:99 +#: src/tables/part/PartTestTemplateTable.tsx:104 msgid "Include Inherited" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:100 +#: src/tables/part/PartTestTemplateTable.tsx:105 msgid "Show tests from inherited templates" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:104 +#: src/tables/part/PartTestTemplateTable.tsx:109 msgid "Has Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:105 +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" msgstr "" @@ -6025,7 +6082,7 @@ msgid "Task ID" msgstr "" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" msgstr "" @@ -6431,95 +6488,95 @@ msgstr "" msgid "Delete stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 msgid "Delete Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:289 +#: src/tables/stock/StockItemTestResultTable.tsx:273 msgid "Test result deleted" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:303 +#: src/tables/stock/StockItemTestResultTable.tsx:287 msgid "Test Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" msgstr "" diff --git a/src/frontend/src/locales/pt/messages.po b/src/frontend/src/locales/pt/messages.po index 7097778d5a..04a8e0d7ec 100644 --- a/src/frontend/src/locales/pt/messages.po +++ b/src/frontend/src/locales/pt/messages.po @@ -8,7 +8,7 @@ msgstr "" "Language: pt\n" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-06-01 12:35\n" +"PO-Revision-Date: 2024-06-20 04:52\n" "Last-Translator: \n" "Language-Team: Portuguese\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -44,22 +44,22 @@ msgstr "Imprimir Etiqueta" #: src/components/buttons/PrintingActions.tsx:101 msgid "Label printing completed successfully" -msgstr "Impressão de etiquetas concluída com sucesso" +msgstr "Impressão da etiqueta concluída com sucesso" #: src/components/buttons/PrintingActions.tsx:107 #: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 #: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 -#: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 +#: src/components/nav/SearchDrawer.tsx:427 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" msgstr "Erro" @@ -121,15 +121,15 @@ msgstr "Sim" msgid "No" msgstr "Não" -#: src/components/details/Details.tsx:303 +#: src/components/details/Details.tsx:305 msgid "No name defined" msgstr "Nenhum nome definido" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copied" msgstr "Copiado" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copy" msgstr "Copiar" @@ -145,7 +145,7 @@ msgstr "Remover a imagem associada a este item?" #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" msgstr "Eliminar" @@ -207,9 +207,9 @@ msgstr "A peça não está ativa" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:686 +#: src/pages/part/PartDetail.tsx:691 msgid "Inactive" msgstr "Inativo" @@ -248,6 +248,35 @@ msgstr "A peça é virtual (não é uma peça física)" msgid "Virtual" msgstr "Virtual" +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "Falha no carregamento da imagem" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "Sucesso" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "Notas guardadas com sucesso" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "Falha ao guardar notas" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "Pré-visualizar notas" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "Editar notas" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "Gravar notas" + #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" msgstr "Código" @@ -287,7 +316,8 @@ msgstr "Tem certeza de que deseja Guardar & Recarregar a pré-visualização?" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:153 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?" -msgstr "Para ver esta pré-visualização o modelo atual precisa ser substituído no servidor com as suas modificações, o que pode fazer com que \n" +msgstr "" +"Para ver esta pré-visualização o modelo atual precisa ser substituído no servidor com as suas modificações, o que pode fazer com que \n" "o modelo atual deixe de funcionar. Deseja continuar?" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:157 @@ -335,11 +365,6 @@ msgstr "Erro ao renderizar modelo" msgid "Form Error" msgstr "Erro de formulário" -#: src/components/forms/ApiForm.tsx:430 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "Sucesso" - #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" #~ msgstr "Form Errors Exist" @@ -390,7 +415,7 @@ msgstr "Não foi possível iniciar a sessão" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." msgstr "Verifique suas informações e tente novamente." @@ -400,7 +425,7 @@ msgstr "Verifique suas informações e tente novamente." #~ msgstr "Mail delivery successfull" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" msgstr "Envio bem sucedido" @@ -514,7 +539,9 @@ msgstr "Ou use SSO" #: src/components/forms/AuthenticationForm.tsx:296 msgid "Don't have an account?" -msgstr "Não possui conta?\n" +msgstr "" +"Não possui conta?\n" +"" #: src/components/forms/AuthenticationForm.tsx:315 msgid "Go back to login" @@ -528,7 +555,7 @@ msgstr "Servidor" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:127 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -552,7 +579,6 @@ msgid "Add Host" msgstr "Adicionar Servidor" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" msgstr "Salvar" @@ -580,26 +606,26 @@ msgstr "Nome: {0}" msgid "State: <0>worker ({0}), <1>plugins{1}" msgstr "Estado: <0>funcionário ({0}), <1>plugins{1}" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "Buscar" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" msgstr "A carregar" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "Nenhum resultado encontrado" #: src/components/forms/fields/TableField.tsx:50 msgid "modelRenderer entry required for tables" -msgstr "" +msgstr "entrada do modelRenderer necessária para tabelas" #: src/components/forms/fields/TableField.tsx:74 msgid "No entries available" @@ -615,7 +641,7 @@ msgid "Thumbnail" msgstr "Miniatura" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" msgstr "Ações de código de barras" @@ -860,7 +886,7 @@ msgid "Close modal" msgstr "Fechar diálogo" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" msgstr "Servidor" @@ -968,7 +994,7 @@ msgstr "Configurações da conta" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:295 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" msgstr "Definições de Sistema" @@ -1032,8 +1058,8 @@ msgid "About" msgstr "Sobre" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" @@ -1054,35 +1080,35 @@ msgstr "Notificação" msgid "Mark as read" msgstr "Marcar como lida" -#: src/components/nav/SearchDrawer.tsx:77 +#: src/components/nav/SearchDrawer.tsx:78 msgid "results" msgstr "resultados" -#: src/components/nav/SearchDrawer.tsx:337 +#: src/components/nav/SearchDrawer.tsx:349 msgid "Enter search text" msgstr "Introduzir texto de pesquisa" -#: src/components/nav/SearchDrawer.tsx:364 +#: src/components/nav/SearchDrawer.tsx:376 msgid "Search Options" msgstr "Opções de Pesquisa" -#: src/components/nav/SearchDrawer.tsx:367 +#: src/components/nav/SearchDrawer.tsx:379 msgid "Regex search" msgstr "Busca por Regex" -#: src/components/nav/SearchDrawer.tsx:377 +#: src/components/nav/SearchDrawer.tsx:389 msgid "Whole word search" msgstr "Pesquisar palavras inteiras" -#: src/components/nav/SearchDrawer.tsx:416 +#: src/components/nav/SearchDrawer.tsx:430 msgid "An error occurred during search query" msgstr "Ocorreu um erro durante a busca" -#: src/components/nav/SearchDrawer.tsx:427 +#: src/components/nav/SearchDrawer.tsx:441 msgid "No results" msgstr "Sem resultados" -#: src/components/nav/SearchDrawer.tsx:430 +#: src/components/nav/SearchDrawer.tsx:444 msgid "No results available for search query" msgstr "Não há resultados disponíveis para a pesquisa" @@ -1101,7 +1127,7 @@ msgstr "Modelo desconhecido: {model}" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:832 +#: src/pages/part/PartDetail.tsx:837 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" @@ -1110,11 +1136,11 @@ msgstr "Peça" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:640 +#: src/pages/part/PartDetail.tsx:645 msgid "Parts" msgstr "Peças" @@ -1137,7 +1163,7 @@ msgstr "Modelos de Teste da Peça" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "Fornecedor da Peça" @@ -1161,15 +1187,15 @@ msgid "Part Category" msgstr "Categoria da peça" #: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 +#: src/pages/Index/Settings/SystemSettings.tsx:165 #: src/pages/part/CategoryDetail.tsx:249 #: src/pages/part/CategoryDetail.tsx:282 -#: src/pages/part/PartDetail.tsx:822 +#: src/pages/part/PartDetail.tsx:827 msgid "Part Categories" msgstr "Categorias da Peça" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:560 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "Item de Estoque" @@ -1189,7 +1215,7 @@ msgstr "Localização de Stock" #: src/components/render/ModelType.tsx:82 #: src/pages/stock/LocationDetail.tsx:185 #: src/pages/stock/LocationDetail.tsx:361 -#: src/pages/stock/StockDetail.tsx:552 +#: src/pages/stock/StockDetail.tsx:554 msgid "Stock Locations" msgstr "Localizações de Stock" @@ -1199,42 +1225,42 @@ msgstr "Tipo de Local de Estoque" #: src/components/render/ModelType.tsx:91 msgid "Stock Location Types" -msgstr "" +msgstr "Tipo de Local de Estoque" #: src/components/render/ModelType.tsx:95 msgid "Stock History" -msgstr "" +msgstr "Histórico de Estoque" #: src/components/render/ModelType.tsx:96 msgid "Stock Histories" -msgstr "" +msgstr "Histórico de Estoque" #: src/components/render/ModelType.tsx:100 #: src/defaults/links.tsx:30 #: src/defaults/menuItems.tsx:43 msgid "Build" -msgstr "" +msgstr "Produção" #: src/components/render/ModelType.tsx:101 msgid "Builds" -msgstr "" +msgstr "Produções" #: src/components/render/ModelType.tsx:109 msgid "Build Line" -msgstr "" +msgstr "Linha de produção" #: src/components/render/ModelType.tsx:110 msgid "Build Lines" -msgstr "" +msgstr "Linhas de produção" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" -msgstr "" +msgstr "Empresa" #: src/components/render/ModelType.tsx:118 msgid "Companies" -msgstr "" +msgstr "Empresas" #: src/components/render/ModelType.tsx:126 #: src/tables/TableHoverCard.tsx:58 @@ -1243,175 +1269,176 @@ msgstr "" #: src/tables/sales/ReturnOrderTable.tsx:55 #: src/tables/sales/SalesOrderTable.tsx:61 msgid "Project Code" -msgstr "" +msgstr "Código do projeto" #: src/components/render/ModelType.tsx:127 #: src/pages/Index/Settings/AdminCenter/Index.tsx:105 msgid "Project Codes" -msgstr "" +msgstr "Códigos do Projeto" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" -msgstr "" +msgstr "Pedido de Compra" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:573 +#: src/pages/part/PartDetail.tsx:579 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" -msgstr "" +msgstr "Pedidos de compra" #: src/components/render/ModelType.tsx:142 msgid "Purchase Order Line" -msgstr "" +msgstr "Pedido de compra da linha" #: src/components/render/ModelType.tsx:143 msgid "Purchase Order Lines" -msgstr "" +msgstr "Pedido de compra das linhas" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" -msgstr "" +msgstr "Pedido de Venda" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:579 +#: src/pages/part/PartDetail.tsx:586 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" -msgstr "" +msgstr "Pedidos de vendas" #: src/components/render/ModelType.tsx:156 msgid "Sales Order Shipment" -msgstr "" +msgstr "Envio do Pedido de Venda" #: src/components/render/ModelType.tsx:157 msgid "Sales Order Shipments" -msgstr "" +msgstr "Envios dos Pedidos de Vendas" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" -msgstr "" +msgstr "Pedido de Devolução" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" -msgstr "" +msgstr "Pedidos de Devolução" #: src/components/render/ModelType.tsx:172 #: src/tables/company/AddressTable.tsx:47 msgid "Address" -msgstr "" +msgstr "Endereço" #: src/components/render/ModelType.tsx:173 #: src/pages/company/CompanyDetail.tsx:249 msgid "Addresses" -msgstr "" +msgstr "Endereços" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" -msgstr "" +msgstr "Contato" #: src/components/render/ModelType.tsx:180 #: src/pages/company/CompanyDetail.tsx:243 msgid "Contacts" -msgstr "" +msgstr "Contatos" #: src/components/render/ModelType.tsx:186 msgid "Owner" -msgstr "" +msgstr "Proprietário" #: src/components/render/ModelType.tsx:187 msgid "Owners" -msgstr "" +msgstr "Proprietários" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" -msgstr "" +msgstr "Utilizador" #: src/components/render/ModelType.tsx:194 #: src/pages/Index/Settings/AdminCenter/Index.tsx:81 #: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:13 msgid "Users" -msgstr "" +msgstr "Utilizadores" #: src/components/render/ModelType.tsx:200 msgid "Label Template" -msgstr "" +msgstr "Modelo de Etiqueta" #: src/components/render/ModelType.tsx:201 #: src/pages/Index/Settings/AdminCenter/Index.tsx:135 msgid "Label Templates" -msgstr "" +msgstr "Modelos de Etiqueta" #: src/components/render/ModelType.tsx:207 msgid "Report Template" -msgstr "" +msgstr "Modelo de relatório" #: src/components/render/ModelType.tsx:208 #: src/pages/Index/Settings/AdminCenter/Index.tsx:141 msgid "Report Templates" -msgstr "" +msgstr "Modelos de relatório" #: src/components/render/ModelType.tsx:214 msgid "Plugin Configuration" -msgstr "" +msgstr "Configuração de Extensão" #: src/components/render/ModelType.tsx:215 msgid "Plugin Configurations" -msgstr "" +msgstr "Configurações de Extensões" #: src/components/render/Order.tsx:104 msgid "Shipment" -msgstr "" +msgstr "Envios" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:493 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 #: src/pages/stock/LocationDetail.tsx:345 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" -msgstr "" +msgstr "Estoque" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:517 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" -msgstr "" +msgstr "Número de Série" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:523 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 #: src/tables/stock/StockTrackingTable.tsx:59 msgid "Quantity" -msgstr "" +msgstr "Quantidade" #: src/components/settings/SettingItem.tsx:47 #: src/components/settings/SettingItem.tsx:100 @@ -1420,24 +1447,24 @@ msgstr "" #: src/components/settings/SettingList.tsx:67 msgid "Edit Setting" -msgstr "" +msgstr "Editar Configurações" #: src/components/settings/SettingList.tsx:78 #: src/components/settings/SettingList.tsx:108 msgid "Setting {0} updated successfully" -msgstr "" +msgstr "Definição {0} atualizada com sucesso" #: src/components/settings/SettingList.tsx:107 msgid "Setting updated" -msgstr "" +msgstr "Definição atualizada" #: src/components/settings/SettingList.tsx:117 msgid "Error editing setting" -msgstr "" +msgstr "Erro ao editar configuração" #: src/components/settings/SettingList.tsx:158 msgid "No settings specified" -msgstr "" +msgstr "Nenhuma configuração especificada" #: src/components/tables/FilterGroup.tsx:29 #~ msgid "Add table filter" @@ -1816,25 +1843,25 @@ msgstr "" #: src/components/widgets/DisplayWidget.tsx:11 #: src/pages/Index/Settings/AccountSettings/DisplaySettingsPanel.tsx:17 msgid "Display Settings" -msgstr "" +msgstr "Definições de Exibição" #: src/components/widgets/DisplayWidget.tsx:15 #: src/pages/Index/Settings/AccountSettings/DisplaySettingsPanel.tsx:23 msgid "Color Mode" -msgstr "" +msgstr "Modo de Cor" #: src/components/widgets/DisplayWidget.tsx:21 #: src/pages/Index/Settings/AccountSettings/DisplaySettingsPanel.tsx:33 msgid "Language" -msgstr "" +msgstr "Idioma" #: src/components/widgets/FeedbackWidget.tsx:19 msgid "Something is new: Platform UI" -msgstr "" +msgstr "Algo é novo: Interface de Plataforma" #: src/components/widgets/FeedbackWidget.tsx:21 msgid "We are building a new UI with a modern stack. What you currently see is not fixed and will be redesigned but demonstrates the UI/UX possibilities we will have going forward." -msgstr "" +msgstr "Estamos construindo uma nova interface do usuário mais moderno. O que você vê atualmente não está completo e será redesenhado, mas demonstra as possibilidades de UI/UX que teremos adiante." #: src/components/widgets/FeedbackWidget.tsx:32 msgid "Provide Feedback" @@ -1845,16 +1872,12 @@ msgid "Getting started" msgstr "Introdução" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "Falha ao carregar imagem" +#~ msgid "Failed to upload image" +#~ msgstr "Failed to upload image" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "Notas guardadas" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "Falha ao guardar notas" +#~ msgid "Notes saved" +#~ msgstr "Notes saved" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" @@ -1973,42 +1996,46 @@ msgid "Portuguese (Brazilian)" msgstr "Português (Brasileiro)" #: src/contexts/LanguageContext.tsx:43 +msgid "Romanian" +msgstr "Romeno" + +#: src/contexts/LanguageContext.tsx:44 msgid "Russian" msgstr "Russo" -#: src/contexts/LanguageContext.tsx:44 +#: src/contexts/LanguageContext.tsx:45 msgid "Slovak" msgstr "Eslovaco" -#: src/contexts/LanguageContext.tsx:45 +#: src/contexts/LanguageContext.tsx:46 msgid "Slovenian" msgstr "Esloveno" -#: src/contexts/LanguageContext.tsx:46 +#: src/contexts/LanguageContext.tsx:47 msgid "Swedish" msgstr "Sueco" -#: src/contexts/LanguageContext.tsx:47 +#: src/contexts/LanguageContext.tsx:48 msgid "Thai" msgstr "Tailandês" -#: src/contexts/LanguageContext.tsx:48 +#: src/contexts/LanguageContext.tsx:49 msgid "Turkish" msgstr "Turco" -#: src/contexts/LanguageContext.tsx:49 +#: src/contexts/LanguageContext.tsx:50 msgid "Ukrainian" msgstr "Ucraniano" -#: src/contexts/LanguageContext.tsx:50 +#: src/contexts/LanguageContext.tsx:51 msgid "Vietnamese" msgstr "Vietnamita" -#: src/contexts/LanguageContext.tsx:51 +#: src/contexts/LanguageContext.tsx:52 msgid "Chinese (Simplified)" msgstr "Chinês (Simplificado)" -#: src/contexts/LanguageContext.tsx:52 +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" msgstr "Chinês (Tradicional)" @@ -2022,7 +2049,7 @@ msgstr "Início" #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" msgstr "Painel de controlo" @@ -2047,95 +2074,95 @@ msgstr "Sobre a organização InvenTree" #: src/defaults/actions.tsx:44 msgid "Server Information" -msgstr "" +msgstr "Informações do Servidor" #: src/defaults/actions.tsx:45 #: src/defaults/links.tsx:117 msgid "About this Inventree instance" -msgstr "" +msgstr "Sobre esta instância do Inventree" #: src/defaults/actions.tsx:51 #: src/defaults/links.tsx:105 msgid "License Information" -msgstr "" +msgstr "Informações de licença" #: src/defaults/actions.tsx:52 #: src/defaults/links.tsx:129 msgid "Licenses for dependencies of the service" -msgstr "" +msgstr "Licenças para as dependências do serviço" #: src/defaults/actions.tsx:59 msgid "Open the main navigation menu" -msgstr "" +msgstr "Abrir o menu de navegação principal" #: src/defaults/dashboardItems.tsx:15 msgid "Subscribed Parts" -msgstr "" +msgstr "Peças Subscritas" #: src/defaults/dashboardItems.tsx:22 msgid "Subscribed Categories" -msgstr "" +msgstr "Categorias Subscritas" #: src/defaults/dashboardItems.tsx:29 msgid "Latest Parts" -msgstr "" +msgstr "Peças Recentes" #: src/defaults/dashboardItems.tsx:36 msgid "BOM Waiting Validation" -msgstr "" +msgstr "BOM Aguardando Validação" #: src/defaults/dashboardItems.tsx:43 msgid "Recently Updated" -msgstr "" +msgstr "Atualizado Recentemente" #: src/defaults/dashboardItems.tsx:50 #: src/tables/part/PartTable.tsx:216 msgid "Low Stock" -msgstr "" +msgstr "Estoque Baixo" #: src/defaults/dashboardItems.tsx:57 msgid "Depleted Stock" -msgstr "" +msgstr "Estoque Esgotado" #: src/defaults/dashboardItems.tsx:64 msgid "Required for Build Orders" -msgstr "" +msgstr "Necessário para pedidos de produção" #: src/defaults/dashboardItems.tsx:71 msgid "Expired Stock" -msgstr "" +msgstr "Estoque Expirado" #: src/defaults/dashboardItems.tsx:78 msgid "Stale Stock" -msgstr "" +msgstr "Estoque Parado" #: src/defaults/dashboardItems.tsx:85 msgid "Build Orders In Progress" -msgstr "" +msgstr "Pedido de Produção em Progresso" #: src/defaults/dashboardItems.tsx:92 msgid "Overdue Build Orders" -msgstr "" +msgstr "Pedidos de Produção Vencidos" #: src/defaults/dashboardItems.tsx:99 msgid "Outstanding Purchase Orders" -msgstr "" +msgstr "Pedidos de Compra Pendentes" #: src/defaults/dashboardItems.tsx:106 msgid "Overdue Purchase Orders" -msgstr "" +msgstr "Pedidos de Compra Pendentes" #: src/defaults/dashboardItems.tsx:113 msgid "Outstanding Sales Orders" -msgstr "" +msgstr "Pedidos de Venda Pendentes" #: src/defaults/dashboardItems.tsx:120 msgid "Overdue Sales Orders" -msgstr "" +msgstr "Pedidos de Venda Vencidos" #: src/defaults/dashboardItems.tsx:127 msgid "Current News" -msgstr "" +msgstr "Notícias Atuais" #: src/defaults/defaultHostList.tsx:8 #~ msgid "InvenTree Demo" @@ -2148,73 +2175,73 @@ msgstr "" #: src/defaults/links.tsx:11 #: src/pages/company/CompanyDetail.tsx:92 msgid "Website" -msgstr "" +msgstr "Site" #: src/defaults/links.tsx:16 msgid "GitHub" -msgstr "" +msgstr "GitHub" #: src/defaults/links.tsx:21 msgid "Demo" -msgstr "" +msgstr "Demonstração" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" -msgstr "" +msgstr "Comprando" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" -msgstr "" +msgstr "Vendas" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" -msgstr "" +msgstr "Parquinho" #: src/defaults/links.tsx:49 msgid "Getting Started" -msgstr "" +msgstr "Guia de Introdução" #: src/defaults/links.tsx:50 msgid "Getting started with InvenTree" -msgstr "" +msgstr "Primeiros passos com InvenTree" #: src/defaults/links.tsx:56 msgid "API" -msgstr "" +msgstr "API" #: src/defaults/links.tsx:57 msgid "InvenTree API documentation" -msgstr "" +msgstr "Documentação da API InvenTree" #: src/defaults/links.tsx:62 msgid "Developer Manual" -msgstr "" +msgstr "Manual do Desenvolvedor" #: src/defaults/links.tsx:63 msgid "InvenTree developer manual" -msgstr "" +msgstr "Manual do Desenvolvedor InvenTree" #: src/defaults/links.tsx:68 msgid "FAQ" -msgstr "" +msgstr "Perguntas Frequentes" #: src/defaults/links.tsx:69 msgid "Frequently asked questions" -msgstr "" +msgstr "Perguntas Frequentes" #: src/defaults/links.tsx:76 #~ msgid "Instance" @@ -2223,7 +2250,7 @@ msgstr "" #: src/defaults/links.tsx:79 #: src/defaults/links.tsx:116 msgid "System Information" -msgstr "" +msgstr "Informação do Sistema" #: src/defaults/links.tsx:83 #~ msgid "InvenTree" @@ -2235,7 +2262,7 @@ msgstr "" #: src/defaults/links.tsx:128 msgid "Licenses" -msgstr "" +msgstr "Licenças" #: src/defaults/menuItems.tsx:7 #~ msgid "Open sourcea" @@ -2263,7 +2290,7 @@ msgstr "" #: src/defaults/menuItems.tsx:17 msgid "User attributes and design settings." -msgstr "" +msgstr "Atributos do usuário e configurações de design." #: src/defaults/menuItems.tsx:21 #~ msgid "Free for everyone" @@ -2275,7 +2302,7 @@ msgstr "" #: src/defaults/menuItems.tsx:23 msgid "View for interactive scanning and multiple actions." -msgstr "" +msgstr "Visualização para varredura interativa e múltiplas ações." #: src/defaults/menuItems.tsx:24 #~ msgid "The fluid of Smeargle’s tail secretions changes in the intensity" @@ -2355,44 +2382,44 @@ msgstr "" #: src/forms/BuildForms.tsx:146 msgid "Next serial number" -msgstr "" +msgstr "Próximo número de série" #: src/forms/BuildForms.tsx:150 msgid "Latest serial number" -msgstr "" +msgstr "Número de Série mais recente" #: src/forms/BuildForms.tsx:222 msgid "Remove output" -msgstr "" +msgstr "Remover Saída" #: src/forms/BuildForms.tsx:304 msgid "Complete Build Outputs" -msgstr "" +msgstr "Concluir Saídas de Produção" #: src/forms/BuildForms.tsx:308 msgid "Build outputs have been completed" -msgstr "" +msgstr "O Pedido de produção foi concluído" #: src/forms/BuildForms.tsx:377 msgid "Scrap Build Outputs" -msgstr "" +msgstr "Cancelar Saída de Produção" #: src/forms/BuildForms.tsx:381 msgid "Build outputs have been scrapped" -msgstr "" +msgstr "Os Pedidos de produção foram cancelados" #: src/forms/BuildForms.tsx:413 #: src/forms/BuildForms.tsx:437 msgid "Cancel Build Outputs" -msgstr "" +msgstr "Cancelar Saída de Produção" #: src/forms/BuildForms.tsx:414 msgid "Selected build outputs will be deleted" -msgstr "" +msgstr "Saídas de produção selecionadas serão apagadas" #: src/forms/BuildForms.tsx:441 msgid "Build outputs have been cancelled" -msgstr "" +msgstr "Os Pedidos de produção foram cancelados" #: src/forms/CompanyForms.tsx:150 #~ msgid "Company updated" @@ -2400,7 +2427,7 @@ msgstr "" #: src/forms/PartForms.tsx:100 msgid "Parent part category" -msgstr "" +msgstr "Categoria parente da peça" #: src/forms/PartForms.tsx:106 #~ msgid "Create Part" @@ -2416,45 +2443,45 @@ msgstr "" #: src/forms/PurchaseOrderForms.tsx:279 msgid "Choose Location" -msgstr "" +msgstr "Escolher Localização" #: src/forms/PurchaseOrderForms.tsx:287 msgid "Item Destination selected" -msgstr "" +msgstr "Destino do item selecionado" #: src/forms/PurchaseOrderForms.tsx:296 msgid "Part category default location selected" -msgstr "" +msgstr "Localização padrão da categoria de peça selecionada" #: src/forms/PurchaseOrderForms.tsx:306 msgid "Received stock location selected" -msgstr "" +msgstr "Localização do estoque recebido selecionada" #: src/forms/PurchaseOrderForms.tsx:311 msgid "Default location selected" -msgstr "" +msgstr "Localização padrão selecionada" #: src/forms/PurchaseOrderForms.tsx:322 #: src/forms/PurchaseOrderForms.tsx:398 msgid "Scan Barcode" -msgstr "" +msgstr "Ler Código de Barras" #: src/forms/PurchaseOrderForms.tsx:366 msgid "Set Location" -msgstr "" +msgstr "Definir localização" #: src/forms/PurchaseOrderForms.tsx:373 msgid "Assign Batch Code{0}" -msgstr "" +msgstr "Atribuir Código em Lote{0}" #: src/forms/PurchaseOrderForms.tsx:382 msgid "Change Status" -msgstr "" +msgstr "Alterar Estado" #: src/forms/PurchaseOrderForms.tsx:407 #: src/forms/StockForms.tsx:392 msgid "Remove item from list" -msgstr "" +msgstr "Remover item da lista" #: src/forms/PurchaseOrderForms.tsx:432 #: src/forms/StockForms.tsx:449 @@ -2465,27 +2492,27 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" -msgstr "" +msgstr "Localização" #: src/forms/PurchaseOrderForms.tsx:448 msgid "Store at default location" -msgstr "" +msgstr "Armazenar no local padrão" #: src/forms/PurchaseOrderForms.tsx:461 msgid "Store at line item destination" -msgstr "" +msgstr "Armazenar no destino do item de linha" #: src/forms/PurchaseOrderForms.tsx:471 msgid "Store with already received stock" -msgstr "" +msgstr "Armazenar com estoque já recebido" #: src/forms/PurchaseOrderForms.tsx:627 msgid "Receive Line Items" -msgstr "" +msgstr "Receber item de linha" #: src/forms/PurchaseOrderForms.tsx:658 #~ msgid "Receive line items" @@ -2493,7 +2520,7 @@ msgstr "" #: src/forms/StockForms.tsx:101 msgid "Add given quantity as packs instead of individual items" -msgstr "" +msgstr "Adicionar quantidade dada como pacotes em vez de itens individuais" #: src/forms/StockForms.tsx:110 #~ msgid "Create Stock Item" @@ -2501,34 +2528,34 @@ msgstr "" #: src/forms/StockForms.tsx:114 msgid "Enter initial quantity for this stock item" -msgstr "" +msgstr "Digite a quantidade inicial para este item de estoque" #: src/forms/StockForms.tsx:121 msgid "Serial Numbers" -msgstr "" +msgstr "Números de Série" #: src/forms/StockForms.tsx:122 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)" #: src/forms/StockForms.tsx:158 #~ msgid "Stock item updated" #~ msgstr "Stock item updated" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" -msgstr "" +msgstr "Adicionar item de Estoque" #: src/forms/StockForms.tsx:339 msgid "Loading..." -msgstr "" +msgstr "A carregar..." #: src/forms/StockForms.tsx:381 msgid "Move to default location" -msgstr "" +msgstr "Mover para o local padrão" #: src/forms/StockForms.tsx:449 #: src/forms/StockForms.tsx:483 @@ -2538,15 +2565,15 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:207 -#: src/pages/part/PartDetail.tsx:656 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" -msgstr "" +msgstr "Em Estoque" #: src/forms/StockForms.tsx:449 msgid "Move" -msgstr "" +msgstr "Mover" #: src/forms/StockForms.tsx:449 #: src/forms/StockForms.tsx:483 @@ -2558,53 +2585,53 @@ msgstr "" #: src/forms/StockForms.tsx:684 #: src/tables/RowActions.tsx:149 msgid "Actions" -msgstr "" +msgstr "Ações" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" -msgstr "" +msgstr "Adicionar" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" -msgstr "" +msgstr "Contar" #: src/forms/StockForms.tsx:785 msgid "Add Stock" -msgstr "" +msgstr "Adicionar Estoque" #: src/forms/StockForms.tsx:794 msgid "Remove Stock" -msgstr "" +msgstr "Remover Estoque" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:788 msgid "Transfer Stock" -msgstr "" +msgstr "Transferir Estoque" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:777 msgid "Count Stock" -msgstr "" +msgstr "Contar Estoque" #: src/forms/StockForms.tsx:821 msgid "Change Stock Status" -msgstr "" +msgstr "Alterar estado do Estoque" #: src/forms/StockForms.tsx:830 msgid "Merge Stock" -msgstr "" +msgstr "Mesclar Estoque" #: src/forms/StockForms.tsx:849 msgid "Delete Stock Items" -msgstr "" +msgstr "Excluir Itens de Estoque" #: src/forms/StockForms.tsx:856 msgid "Parent stock location" -msgstr "" +msgstr "Localização parente de Estoque" #: src/functions/auth.tsx:34 #~ msgid "Error fetching token from server." @@ -2626,22 +2653,13 @@ msgstr "" #~ msgid "You have been logged out" #~ msgstr "You have been logged out" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" -msgstr "" +msgstr "Sessão terminada" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" -msgstr "" - -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "" - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "" +msgstr "Sessão terminada com sucesso" #: src/functions/auth.tsx:141 #~ msgid "Already logged in" @@ -2655,13 +2673,22 @@ msgstr "" #~ msgid "Found an existing login - welcome back!" #~ msgstr "Found an existing login - welcome back!" -#: src/functions/auth.tsx:153 -msgid "Logged In" -msgstr "" +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "Verifique a sua caixa de entrada com um link para redefinir. Isso só funciona se você já tiver uma conta. Cheque no também no spam." -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "Falha ao redefinir" + +#: src/functions/auth.tsx:195 +msgid "Logged In" +msgstr "Sessão Iniciada" + +#: src/functions/auth.tsx:196 msgid "Successfully logged in" -msgstr "" +msgstr "Sessão iniciada com êxito" #: src/functions/forms.tsx:50 #~ msgid "Form method not provided" @@ -2673,68 +2700,68 @@ msgstr "" #: src/functions/forms.tsx:182 msgid "Invalid Form" -msgstr "" +msgstr "Formulário inválido" #: src/functions/forms.tsx:183 msgid "method parameter not supplied" -msgstr "" +msgstr "parâmetro do método não fornecido" #: src/functions/notifications.tsx:10 msgid "Not implemented" -msgstr "" +msgstr "Não implementado" #: src/functions/notifications.tsx:11 msgid "This feature is not yet implemented" -msgstr "" +msgstr "Este recurso ainda não foi implementado" #: src/functions/notifications.tsx:21 msgid "Permission denied" -msgstr "" +msgstr "Permissão recusada" #: src/functions/notifications.tsx:22 msgid "You do not have permission to perform this action" -msgstr "" +msgstr "Não tem permissões para efetuar esta ação" #: src/functions/notifications.tsx:33 msgid "Invalid Return Code" -msgstr "" +msgstr "Código de retorno inválido" #: src/functions/notifications.tsx:34 msgid "Server returned status {returnCode}" -msgstr "" +msgstr "O servidor retornou o status {returnCode}" #: src/hooks/UseForm.tsx:88 msgid "Item Created" -msgstr "" +msgstr "Item Criado" #: src/hooks/UseForm.tsx:105 msgid "Item Updated" -msgstr "" +msgstr "Item Atualizado" #: src/hooks/UseForm.tsx:124 msgid "Item Deleted" -msgstr "" +msgstr "Item Eliminado" #: src/hooks/UseForm.tsx:128 msgid "Are you sure you want to delete this item?" -msgstr "" +msgstr "Tem certeza de que deseja excluir este item?" #: src/pages/Auth/Logged-In.tsx:23 msgid "Checking if you are already logged in" -msgstr "" +msgstr "Verificando se você já fez login" #: src/pages/Auth/Login.tsx:31 #: src/pages/Index/Scan.tsx:329 msgid "No selection" -msgstr "" +msgstr "Nenhuma seleção" #: src/pages/Auth/Login.tsx:87 msgid "Welcome, log in below" -msgstr "" +msgstr "Bem-vindo, faça o login abaixo" #: src/pages/Auth/Login.tsx:89 msgid "Register below" -msgstr "" +msgstr "Registrar abaixo" #: src/pages/Auth/Login.tsx:121 #~ msgid "Edit host options" @@ -2742,64 +2769,64 @@ msgstr "" #: src/pages/Auth/Logout.tsx:23 msgid "Logging out" -msgstr "" +msgstr "Terminando a sessão" #: src/pages/Auth/Reset.tsx:41 #: src/pages/Auth/Set-Password.tsx:112 msgid "Send mail" -msgstr "" +msgstr "Enviar Mensagem" #: src/pages/Auth/Set-Password.tsx:30 msgid "Token invalid" -msgstr "" +msgstr "Token inválido" #: src/pages/Auth/Set-Password.tsx:31 msgid "You need to provide a valid token to set a new password. Check your inbox for a reset link." -msgstr "" +msgstr "Você precisa fornecer um token válido para definir uma nova senha. Verifique sua caixa de entrada para um link de redefinição." #: src/pages/Auth/Set-Password.tsx:49 msgid "No token provided" -msgstr "" +msgstr "Nenhum Token fornecido" #: src/pages/Auth/Set-Password.tsx:50 msgid "You need to provide a token to set a new password. Check your inbox for a reset link." -msgstr "" +msgstr "Você precisa fornecer um Token válido para definir uma nova senha. Verifique a sua caixa de entrada para um link de redefinição." #: src/pages/Auth/Set-Password.tsx:73 msgid "Password set" -msgstr "" +msgstr "Palavra-passe definida" #: src/pages/Auth/Set-Password.tsx:74 msgid "The password was set successfully. You can now login with your new password" -msgstr "" +msgstr "A senha foi definida com sucesso. Você agora pode fazer login com sua nova senha" #: src/pages/Auth/Set-Password.tsx:101 msgid "Set new password" -msgstr "" +msgstr "Definir nova palavra-passe" #: src/pages/ErrorPage.tsx:17 msgid "Error: {0}" -msgstr "" +msgstr "Erro: {0}" #: src/pages/ErrorPage.tsx:28 msgid "Sorry, an unexpected error has occurred." -msgstr "" +msgstr "Desculpe, ocorreu um erro inesperado." #: src/pages/Index/Dashboard.tsx:22 msgid "Autoupdate" -msgstr "" +msgstr "Atualização automática" #: src/pages/Index/Dashboard.tsx:26 msgid "This page is a replacement for the old start page with the same information. This page will be deprecated and replaced by the home page." -msgstr "" +msgstr "Esta página é uma substituição para a página inicial antiga com as mesmas informações. Esta página será descontinuada e substituída pela página inicial." #: src/pages/Index/Home.tsx:58 msgid "Welcome to your Dashboard{0}" -msgstr "" +msgstr "Bem-vindo ao seu Painel{0}" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." -msgstr "" +msgstr "Esta página é uma demonstração para as possibilidades da interface da plataforma." #: src/pages/Index/Profile/Profile.tsx:30 #: src/pages/Index/Profile/Profile.tsx:141 @@ -2939,132 +2966,132 @@ msgstr "" #: src/pages/Index/Scan.tsx:216 msgid "Manual input" -msgstr "" +msgstr "Entrada Manual" #: src/pages/Index/Scan.tsx:217 msgid "Image Barcode" -msgstr "" +msgstr "Imagem do Código de Barras" #: src/pages/Index/Scan.tsx:247 msgid "Selected elements are not known" -msgstr "" +msgstr "Elementos selecionados não são conhecidos" #: src/pages/Index/Scan.tsx:254 msgid "Multiple object types selected" -msgstr "" +msgstr "Vários tipos de objeto selecionados" #: src/pages/Index/Scan.tsx:261 msgid "Actions for {0}" -msgstr "" +msgstr "Ações para {0}" #: src/pages/Index/Scan.tsx:282 msgid "Scan Page" -msgstr "" +msgstr "Escanear Página" #: src/pages/Index/Scan.tsx:285 msgid "This page can be used for continuously scanning items and taking actions on them." -msgstr "" +msgstr "Esta página pode ser usada para escanear itens continuamente e tomar ações sobre eles." #: src/pages/Index/Scan.tsx:292 msgid "Toggle Fullscreen" -msgstr "" +msgstr "Modo Ecrã Inteiro" #: src/pages/Index/Scan.tsx:305 msgid "Select the input method you want to use to scan items." -msgstr "" +msgstr "Selecione o método de entrada que você deseja usar para escanear itens." #: src/pages/Index/Scan.tsx:307 msgid "Input" -msgstr "" +msgstr "Entrada" #: src/pages/Index/Scan.tsx:314 msgid "Select input method" -msgstr "" +msgstr "Selecionar método de entrada" #: src/pages/Index/Scan.tsx:315 msgid "Nothing found" -msgstr "" +msgstr "Nada encontrado" #: src/pages/Index/Scan.tsx:323 msgid "Depending on the selected parts actions will be shown here. Not all barcode types are supported currently." -msgstr "" +msgstr "Dependendo das ações das peças selecionadas serão mostradas aqui. Nem todos os tipos de código de barras são suportados atualmente." #: src/pages/Index/Scan.tsx:325 msgid "Action" -msgstr "" +msgstr "Ação" #: src/pages/Index/Scan.tsx:334 msgid "{0} items selected" -msgstr "" +msgstr "{0} itens selecionados" #: src/pages/Index/Scan.tsx:337 msgid "General Actions" -msgstr "" +msgstr "Ações Gerais" #: src/pages/Index/Scan.tsx:351 msgid "Lookup part" -msgstr "" +msgstr "Pesquisar Peça" #: src/pages/Index/Scan.tsx:359 msgid "Open Link" -msgstr "" +msgstr "Abrir Ligação" #: src/pages/Index/Scan.tsx:375 msgid "History is locally kept in this browser." -msgstr "" +msgstr "O histórico é mantido localmente neste navegador." #: src/pages/Index/Scan.tsx:376 msgid "The history is kept in this browser's local storage. So it won't be shared with other users or other devices but is persistent through reloads. You can select items in the history to perform actions on them. To add items, scan/enter them in the Input area." -msgstr "" +msgstr "O histórico é mantido no armazenamento local deste navegador. Por isso, ele não será compartilhado com outros usuários ou dispositivos, mas será persistente através de recarregamentos. Você pode selecionar itens no histórico para executar ações neles. Para adicionar itens, digitalize-os na área de entrada." #: src/pages/Index/Scan.tsx:378 #: src/pages/Notifications.tsx:100 msgid "History" -msgstr "" +msgstr "Histórico" #: src/pages/Index/Scan.tsx:384 msgid "Delete History" -msgstr "" +msgstr "Apagar Histórico" #: src/pages/Index/Scan.tsx:449 msgid "No history" -msgstr "" +msgstr "Nenhum histórico" #: src/pages/Index/Scan.tsx:467 msgid "Item" -msgstr "" +msgstr "Item" #: src/pages/Index/Scan.tsx:470 msgid "Type" -msgstr "" +msgstr "Tipo" #: src/pages/Index/Scan.tsx:473 msgid "Source" -msgstr "" +msgstr "Origem" #: src/pages/Index/Scan.tsx:476 msgid "Scanned at" -msgstr "" +msgstr "Escaneado em" #: src/pages/Index/Scan.tsx:528 msgid "Enter item serial or data" -msgstr "" +msgstr "Inserir número de série ou dados do item" #: src/pages/Index/Scan.tsx:540 msgid "Add dummy item" -msgstr "" +msgstr "Adicionar item fictício" #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:37 msgid "Account Details" -msgstr "" +msgstr "Detalhes da Conta" #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:46 msgid "First name" -msgstr "" +msgstr "Primeiro Nome" #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51 msgid "Last name" -msgstr "" +msgstr "Apelido" #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:58 #~ msgid "First name: {0}" @@ -3076,128 +3103,128 @@ msgstr "" #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:63 msgid "First name:" -msgstr "" +msgstr "Primeiro Nome:" #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:67 msgid "Last name:" -msgstr "" +msgstr "Apelido:" #: src/pages/Index/Settings/AccountSettings/DisplaySettingsPanel.tsx:41 msgid "Use pseudo language" -msgstr "" +msgstr "Usar pseudo-idioma" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:53 msgid "Single Sign On Accounts" -msgstr "" +msgstr "Contas de Login Único" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:60 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:78 msgid "Not enabled" -msgstr "" +msgstr "Não habilitado" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:63 msgid "Single Sign On is not enabled for this server" -msgstr "" +msgstr "Acesso único não está habilitado para este servidor" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:67 msgid "Multifactor" -msgstr "" +msgstr "Multifator" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:81 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" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:132 msgid "The following email addresses are associated with your account:" -msgstr "" +msgstr "Os seguintes endereços de e-mail estão associados à sua conta:" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:144 msgid "Primary" -msgstr "" +msgstr "Primário" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:149 msgid "Verified" -msgstr "" +msgstr "Verificado" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:153 msgid "Unverified" -msgstr "" +msgstr "Não verificado" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:166 msgid "Add Email Address" -msgstr "" +msgstr "Adicionar Endereço de Email" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:169 msgid "E-Mail" -msgstr "" +msgstr "E-mail" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:170 msgid "E-Mail address" -msgstr "" +msgstr "Endereço de E-mail" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:182 msgid "Make Primary" -msgstr "" +msgstr "Tornar Primária" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:187 msgid "Re-send Verification" -msgstr "" +msgstr "Reenviar Verificação" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:198 msgid "Add Email" -msgstr "" +msgstr "Adicionar Email" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:263 msgid "Provider has not been configured" -msgstr "" +msgstr "O provedor não foi configurado" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:273 msgid "Not configured" -msgstr "" +msgstr "Não configurado" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:276 msgid "There are no social network accounts connected to this account." -msgstr "" +msgstr "Não há nenhuma rede social conectada a essa conta." #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:286 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" #: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:65 msgid "bars" -msgstr "" +msgstr "barras" #: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:66 msgid "oval" -msgstr "" +msgstr "oval" #: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:67 msgid "dots" -msgstr "" +msgstr "pontos" #: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:81 msgid "Theme" -msgstr "" +msgstr "Tema" #: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:87 msgid "Primary color" -msgstr "" +msgstr "Cor primária" #: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:100 msgid "White color" -msgstr "" +msgstr "Cor branca" #: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:108 msgid "Black color" -msgstr "" +msgstr "Cor preta" #: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:116 msgid "Border Radius" -msgstr "" +msgstr "Raio da Margem" #: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:132 msgid "Loader" -msgstr "" +msgstr "Carregador" #: src/pages/Index/Settings/AdminCenter.tsx:30 #~ msgid "User Management" @@ -3209,24 +3236,24 @@ msgstr "" #: src/pages/Index/Settings/AdminCenter/Index.tsx:87 msgid "Background Tasks" -msgstr "" +msgstr "Tarefas em segundo plano" #: src/pages/Index/Settings/AdminCenter/Index.tsx:93 msgid "Error Reports" -msgstr "" +msgstr "Relatórios de Erros" #: src/pages/Index/Settings/AdminCenter/Index.tsx:99 msgid "Currencies" -msgstr "" +msgstr "Moedas" #: src/pages/Index/Settings/AdminCenter/Index.tsx:117 msgid "Custom Units" -msgstr "" +msgstr "Unidades Personalizadas" #: src/pages/Index/Settings/AdminCenter/Index.tsx:123 #: src/pages/part/CategoryDetail.tsx:255 msgid "Part Parameters" -msgstr "" +msgstr "Parâmetros da Peça" #: src/pages/Index/Settings/AdminCenter/Index.tsx:127 #~ msgid "Templates" @@ -3234,49 +3261,49 @@ msgstr "" #: src/pages/Index/Settings/AdminCenter/Index.tsx:129 msgid "Category Parameters" -msgstr "" +msgstr "Parâmetros de Categoria" #: src/pages/Index/Settings/AdminCenter/Index.tsx:147 msgid "Location types" -msgstr "" +msgstr "Tipos de Localização" #: src/pages/Index/Settings/AdminCenter/Index.tsx:159 #: src/tables/machine/MachineTypeTable.tsx:287 msgid "Machines" -msgstr "" +msgstr "Máquinas" #: src/pages/Index/Settings/AdminCenter/Index.tsx:169 msgid "Quick Actions" -msgstr "" +msgstr "Ações Rápidas" #: src/pages/Index/Settings/AdminCenter/Index.tsx:174 msgid "Add a new user" -msgstr "" +msgstr "Adicionar um novo utilizador" #: src/pages/Index/Settings/AdminCenter/Index.tsx:193 msgid "Advanced Options" -msgstr "" +msgstr "Opções Avançadas" #: src/pages/Index/Settings/AdminCenter/MachineManagementPanel.tsx:43 msgid "Machine types" -msgstr "" +msgstr "Tipo de máquina" #: src/pages/Index/Settings/AdminCenter/MachineManagementPanel.tsx:53 msgid "Machine Error Stack" -msgstr "" +msgstr "Erro de máquina na Stack" #: src/pages/Index/Settings/AdminCenter/MachineManagementPanel.tsx:62 msgid "There are no machine registry errors." -msgstr "" +msgstr "Não há erros de registro da máquina." #: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:28 #: src/tables/settings/UserTable.tsx:116 msgid "Info" -msgstr "" +msgstr "Informação" #: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:32 msgid "External plugins are not enabled for this InvenTree installation." -msgstr "" +msgstr "Extensões externas não estão ativados para esta instalação do InvenTree." #: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:33 #~ msgid "Plugin Error Stack" @@ -3292,34 +3319,34 @@ msgstr "" #: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:50 msgid "Plugin Errors" -msgstr "" +msgstr "Erros de Extensão" #: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:59 msgid "Plugin Settings" -msgstr "" +msgstr "Configurações da Extensão" #: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:53 msgid "Background Worker Not Running" -msgstr "" +msgstr "Trabalhador de fundo não está em execução" #: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:54 msgid "The background task manager service is not running. Contact your system administrator." -msgstr "" +msgstr "O serviço de gerenciador de tarefas em segundo plano não está em execução. Entre em contato com o administrador do sistema." #: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:60 #: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:76 msgid "Pending Tasks" -msgstr "" +msgstr "Tarefas Pendentes" #: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:64 #: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:84 msgid "Scheduled Tasks" -msgstr "" +msgstr "Tarefas Agendadas" #: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:68 #: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:92 msgid "Failed Tasks" -msgstr "" +msgstr "Tarefas que falharam" #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:39 #~ msgid "Label" @@ -3365,27 +3392,27 @@ msgstr "" #: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:18 #: src/tables/settings/UserTable.tsx:135 msgid "Groups" -msgstr "" +msgstr "Grupos" #: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:30 msgid "Select settings relevant for user lifecycle. More available in" -msgstr "" +msgstr "Selecione as configurações relevantes para o ciclo de vida dos usuários. Mais informações disponíveis em" #: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:35 msgid "System settings" -msgstr "" +msgstr "Definições de Sistema" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" -msgstr "" +msgstr "Iniciar sessão" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" -msgstr "" +msgstr "Códigos de barras" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" -msgstr "" +msgstr "Preços" #: src/pages/Index/Settings/SystemSettings.tsx:118 #~ msgid "Physical Units" @@ -3395,52 +3422,52 @@ msgstr "" #~ msgid "Exchange Rates" #~ msgstr "Exchange Rates" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" -msgstr "" +msgstr "Etiquetas" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" -msgstr "" +msgstr "Relatórios" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:591 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" -msgstr "" +msgstr "Balanço" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:527 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" -msgstr "" +msgstr "Ordens de Produções" -#: src/pages/Index/Settings/SystemSettings.tsx:298 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" -msgstr "" +msgstr "Mudar para Configuração de Usuário" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" -msgstr "" +msgstr "Conta" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" -msgstr "" +msgstr "Segurança" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" -msgstr "" +msgstr "Opções de Exibição" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" -msgstr "" +msgstr "Definições da Conta" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" -msgstr "" +msgstr "Mudar para Configuração do Sistema" #: src/pages/Index/UserSettings.tsx:103 #~ msgid "User Settings" @@ -3452,23 +3479,23 @@ msgstr "" #: src/pages/NotFound.tsx:17 msgid "Not Found" -msgstr "" +msgstr "Não Encontrado" #: src/pages/NotFound.tsx:20 msgid "Sorry, this page is not known or was moved." -msgstr "" +msgstr "Desculpe, esta página não é conhecida ou foi movida." #: src/pages/NotFound.tsx:27 msgid "Go to the start page" -msgstr "" +msgstr "Ir para a página inicial" #: src/pages/Notifications.tsx:43 msgid "Delete Notifications" -msgstr "" +msgstr "Eliminar notificações" #: src/pages/Notifications.tsx:108 msgid "Mark as unread" -msgstr "" +msgstr "Marcar como não lido" #: src/pages/build/BuildDetail.tsx:80 #~ msgid "Build Status" @@ -3476,8 +3503,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3486,26 +3513,26 @@ msgstr "" #: src/tables/stock/StockItemTable.tsx:259 #: src/tables/stock/StockTrackingTable.tsx:52 msgid "Status" -msgstr "" +msgstr "Estado" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" -msgstr "" +msgstr "Referência" #: src/pages/build/BuildDetail.tsx:100 #: src/pages/company/CompanyDetail.tsx:86 #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:134 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3517,62 +3544,62 @@ msgstr "" #: src/tables/plugin/PluginListTable.tsx:276 #: src/tables/stock/LocationTypesTable.tsx:65 msgid "Description" -msgstr "" +msgstr "Descrição" #: src/pages/build/BuildDetail.tsx:107 msgid "Parent Build" -msgstr "" +msgstr "Produção Parente" #: src/pages/build/BuildDetail.tsx:118 msgid "Build Quantity" -msgstr "" +msgstr "Quantidade de Produção" #: src/pages/build/BuildDetail.tsx:126 #: src/pages/build/BuildDetail.tsx:256 msgid "Completed Outputs" -msgstr "" +msgstr "Saídas Concluídas" #: src/pages/build/BuildDetail.tsx:143 #: src/tables/build/BuildOrderTable.tsx:142 msgid "Issued By" -msgstr "" +msgstr "Emitido por" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:322 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 #: src/tables/sales/SalesOrderTable.tsx:72 msgid "Responsible" -msgstr "" +msgstr "Responsável" #: src/pages/build/BuildDetail.tsx:157 #: src/tables/settings/PendingTasksTable.tsx:30 msgid "Created" -msgstr "" +msgstr "Criado" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" -msgstr "" +msgstr "Data alvo" #: src/pages/build/BuildDetail.tsx:171 msgid "Completed" -msgstr "" +msgstr "Concluído" #: src/pages/build/BuildDetail.tsx:183 msgid "Source Location" -msgstr "" +msgstr "Localização de Origem" #: src/pages/build/BuildDetail.tsx:184 msgid "Any location" -msgstr "" +msgstr "Qualquer localização" #: src/pages/build/BuildDetail.tsx:185 #: src/pages/part/PartDetail.tsx:269 @@ -3587,7 +3614,7 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:191 msgid "Destination Location" -msgstr "" +msgstr "Local de Destino" #: src/pages/build/BuildDetail.tsx:196 #: src/pages/part/PartDetail.tsx:280 @@ -3595,9 +3622,9 @@ msgstr "" #~ msgstr "Unlink custom barcode from part" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:535 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" -msgstr "" +msgstr "Código de Lote" #: src/pages/build/BuildDetail.tsx:202 #~ msgid "Build Order updated" @@ -3613,7 +3640,7 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:229 msgid "Build Details" -msgstr "" +msgstr "Detalhes da Produção" #: src/pages/build/BuildDetail.tsx:231 #~ msgid "Delete build order" @@ -3622,74 +3649,74 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:235 #: src/tables/build/BuildLineTable.tsx:225 msgid "Allocate Stock" -msgstr "" +msgstr "Alocar estoque" #: src/pages/build/BuildDetail.tsx:249 msgid "Incomplete Outputs" -msgstr "" +msgstr "Saídas Incompletas" #: src/pages/build/BuildDetail.tsx:271 msgid "Consumed Stock" -msgstr "" +msgstr "Estoque Consumido" #: src/pages/build/BuildDetail.tsx:285 msgid "Child Build Orders" -msgstr "" +msgstr "Pedido de Produção Filho" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:613 +#: src/pages/part/PartDetail.tsx:622 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" -msgstr "" +msgstr "Anexos" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:625 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" -msgstr "" +msgstr "Anotações" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" -msgstr "" +msgstr "Editar Pedido de Produção" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" -msgstr "" +msgstr "Cancelar Pedido de Produção" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" -msgstr "" +msgstr "Novo Pedido de Produção" #: src/pages/build/BuildDetail.tsx:368 #~ msgid "Reporting Actions" #~ msgstr "Reporting Actions" +#: src/pages/build/BuildDetail.tsx:374 +msgid "Build Order Actions" +msgstr "Ações do Pedido de Produção" + #: src/pages/build/BuildDetail.tsx:374 #~ msgid "Print build report" #~ msgstr "Print build report" -#: src/pages/build/BuildDetail.tsx:378 -msgid "Build Order Actions" -msgstr "" - -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" -msgstr "" +msgstr "Cancelar pedido" #: src/pages/build/BuildIndex.tsx:23 #~ msgid "Build order created" @@ -3701,15 +3728,15 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:100 msgid "Phone Number" -msgstr "" +msgstr "Número de Telefone" #: src/pages/company/CompanyDetail.tsx:107 msgid "Email Address" -msgstr "" +msgstr "Endereço de Email" #: src/pages/company/CompanyDetail.tsx:117 msgid "Default Currency" -msgstr "" +msgstr "Moeda Padrão" #: src/pages/company/CompanyDetail.tsx:122 #: src/pages/company/SupplierDetail.tsx:8 @@ -3721,38 +3748,38 @@ msgstr "" #: src/tables/purchasing/PurchaseOrderTable.tsx:88 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:36 msgid "Supplier" -msgstr "" +msgstr "Fornecedor" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" -msgstr "" +msgstr "Fabricante" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 #: src/tables/stock/StockTrackingTable.tsx:140 msgid "Customer" -msgstr "" +msgstr "Cliente" #: src/pages/company/CompanyDetail.tsx:168 #: src/tables/stock/StockTrackingTable.tsx:183 msgid "Details" -msgstr "" +msgstr "Detalhes" #: src/pages/company/CompanyDetail.tsx:174 msgid "Manufactured Parts" -msgstr "" +msgstr "Peças Fabricadas" #: src/pages/company/CompanyDetail.tsx:175 #~ msgid "Edit company" @@ -3760,7 +3787,7 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:183 msgid "Supplied Parts" -msgstr "" +msgstr "Peças fornecidas" #: src/pages/company/CompanyDetail.tsx:189 #~ msgid "Delete company" @@ -3768,287 +3795,287 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:228 msgid "Assigned Stock" -msgstr "" +msgstr "Estoque Atribuído" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" -msgstr "" +msgstr "Editar Empresa" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" -msgstr "" +msgstr "Ações da Empresa" #: src/pages/company/ManufacturerPartDetail.tsx:69 #: src/pages/company/SupplierPartDetail.tsx:76 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:72 msgid "Internal Part" -msgstr "" +msgstr "Peça Interna" #: src/pages/company/ManufacturerPartDetail.tsx:84 #: src/pages/company/SupplierPartDetail.tsx:90 msgid "External Link" -msgstr "" +msgstr "Link Externo" #: src/pages/company/ManufacturerPartDetail.tsx:102 #: src/pages/company/SupplierPartDetail.tsx:131 #: src/tables/purchasing/ManufacturerPartTable.tsx:56 msgid "Manufacturer Part Number" -msgstr "" +msgstr "Número da Peça do Fabricante" #: src/pages/company/ManufacturerPartDetail.tsx:131 msgid "Manufacturer Details" -msgstr "" +msgstr "Detalhes do Fabricante" #: src/pages/company/ManufacturerPartDetail.tsx:140 msgid "Manufacturer Part Details" -msgstr "" +msgstr "Detalhes da Peça do Fabricante" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:487 +#: src/pages/part/PartDetail.tsx:492 msgid "Parameters" -msgstr "" +msgstr "Parâmetros" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:560 +#: src/pages/part/PartDetail.tsx:566 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" -msgstr "" +msgstr "Fornecedores" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" -msgstr "" +msgstr "Editar Peça do Fabricante" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" -msgstr "" +msgstr "Adicionar Peça do Fabricante" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" -msgstr "" +msgstr "Ações da Peça do Fabricante" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" -msgstr "" +msgstr "Peça do Fabricante" #: src/pages/company/SupplierPartDetail.tsx:97 #: src/tables/ColumnRenderers.tsx:117 msgid "Note" -msgstr "" +msgstr "Nota" #: src/pages/company/SupplierPartDetail.tsx:115 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:57 msgid "SKU" -msgstr "" +msgstr "SKU" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" -msgstr "" +msgstr "Embalagem" #: src/pages/company/SupplierPartDetail.tsx:150 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:107 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:143 #: src/tables/purchasing/SupplierPartTable.tsx:131 msgid "Pack Quantity" -msgstr "" +msgstr "Quantidade embalada" #: src/pages/company/SupplierPartDetail.tsx:161 msgid "Supplier Availability" -msgstr "" +msgstr "Disponibilidade do Fornecedor" #: src/pages/company/SupplierPartDetail.tsx:168 msgid "Availability Updated" -msgstr "" +msgstr "Disponibilidade Atualizada" #: src/pages/company/SupplierPartDetail.tsx:195 msgid "Availability" -msgstr "" +msgstr "Disponibilidade" #: src/pages/company/SupplierPartDetail.tsx:204 msgid "Supplier Part Details" -msgstr "" +msgstr "Detalhes da Peça do Fornecedor" #: src/pages/company/SupplierPartDetail.tsx:210 #: src/pages/purchasing/PurchaseOrderDetail.tsx:265 msgid "Received Stock" -msgstr "" +msgstr "Estoque Recebido" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" -msgstr "" +msgstr "Preço do Fornecedor" #: src/pages/company/SupplierPartDetail.tsx:249 msgid "Supplier Part Actions" -msgstr "" +msgstr "Ações do Fornecedor da Peça" #: src/pages/company/SupplierPartDetail.tsx:273 #: src/tables/purchasing/SupplierPartTable.tsx:210 msgid "Edit Supplier Part" -msgstr "" +msgstr "Editar Fornecedor da Peça" #: src/pages/company/SupplierPartDetail.tsx:280 #: src/tables/purchasing/SupplierPartTable.tsx:163 msgid "Add Supplier Part" -msgstr "" +msgstr "Adicionar Fornecedor da Peça" #: src/pages/part/CategoryDetail.tsx:84 #: src/pages/stock/LocationDetail.tsx:91 #: src/tables/settings/ErrorTable.tsx:34 msgid "Path" -msgstr "" +msgstr "Caminho" #: src/pages/part/CategoryDetail.tsx:100 msgid "Parent Category" -msgstr "" +msgstr "Categoria Parente" #: src/pages/part/CategoryDetail.tsx:117 msgid "Subcategories" -msgstr "" +msgstr "Sub-categorias" #: src/pages/part/CategoryDetail.tsx:124 #: src/pages/stock/LocationDetail.tsx:131 #: src/tables/part/PartCategoryTable.tsx:65 msgid "Structural" -msgstr "" +msgstr "Estrutural" #: src/pages/part/CategoryDetail.tsx:130 msgid "Parent default location" -msgstr "" +msgstr "Armazenar na localização Parente" #: src/pages/part/CategoryDetail.tsx:137 msgid "Default location" -msgstr "" +msgstr "Localização predefinida" #: src/pages/part/CategoryDetail.tsx:148 msgid "Top level part category" -msgstr "" +msgstr "Categoria da peça de nível superior" #: src/pages/part/CategoryDetail.tsx:158 #: src/pages/part/CategoryDetail.tsx:212 #: src/tables/part/PartCategoryTable.tsx:88 msgid "Edit Part Category" -msgstr "" +msgstr "Editar Categoria da Peça" #: src/pages/part/CategoryDetail.tsx:171 #: src/pages/stock/LocationDetail.tsx:223 msgid "Delete items" -msgstr "" +msgstr "Eliminar itens" #: src/pages/part/CategoryDetail.tsx:179 #: src/pages/part/CategoryDetail.tsx:217 msgid "Delete Part Category" -msgstr "" +msgstr "Definir Categoria da Peça" #: src/pages/part/CategoryDetail.tsx:182 msgid "Parts Action" -msgstr "" +msgstr "Ações da peça" #: src/pages/part/CategoryDetail.tsx:183 msgid "Action for parts in this category" -msgstr "" +msgstr "Ações para peças nesta categoria" #: src/pages/part/CategoryDetail.tsx:188 msgid "Child Categories Action" -msgstr "" +msgstr "Ações para Categorias Filhas" #: src/pages/part/CategoryDetail.tsx:189 msgid "Action for child categories in this category" -msgstr "" +msgstr "Ações para Caregorias Filhas nesta Categoria" #: src/pages/part/CategoryDetail.tsx:207 msgid "Category Actions" -msgstr "" +msgstr "Ações da Categoria" #: src/pages/part/CategoryDetail.tsx:229 msgid "Category Details" -msgstr "" +msgstr "Detalhes da Categoria" -#: src/pages/part/PartDetail.tsx:140 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" -msgstr "" +msgstr "Variante de" -#: src/pages/part/PartDetail.tsx:147 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" -msgstr "" +msgstr "Categoria" -#: src/pages/part/PartDetail.tsx:153 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" -msgstr "" +msgstr "Localização Padrão" -#: src/pages/part/PartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" -msgstr "" +msgstr "Localização padrão da Categoria" -#: src/pages/part/PartDetail.tsx:167 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" -msgstr "" +msgstr "IPN" -#: src/pages/part/PartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" -msgstr "" +msgstr "Revisão" -#: src/pages/part/PartDetail.tsx:181 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" -msgstr "" +msgstr "Unidades" -#: src/pages/part/PartDetail.tsx:188 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" -msgstr "" +msgstr "Palavras-chave" -#: src/pages/part/PartDetail.tsx:195 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" -msgstr "" +msgstr "Ligação" -#: src/pages/part/PartDetail.tsx:213 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" -msgstr "" +msgstr "Estoque Disponível" -#: src/pages/part/PartDetail.tsx:220 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" -msgstr "" +msgstr "Estoque Mínimo" -#: src/pages/part/PartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" -msgstr "" +msgstr "Na ordem" -#: src/pages/part/PartDetail.tsx:235 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" -msgstr "" +msgstr "Alocado para Pedidos de Produção" -#: src/pages/part/PartDetail.tsx:243 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" -msgstr "" +msgstr "Alocado para Pedidos de Venda" -#: src/pages/part/PartDetail.tsx:250 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" -msgstr "" +msgstr "Pode Produzir" -#: src/pages/part/PartDetail.tsx:257 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" -msgstr "" +msgstr "Produzindo" -#: src/pages/part/PartDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -4064,50 +4091,50 @@ msgstr "" #: src/tables/purchasing/SupplierPartTable.tsx:187 #: src/tables/stock/StockItemTable.tsx:254 msgid "Active" -msgstr "" +msgstr "Ativo" -#: src/pages/part/PartDetail.tsx:271 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" -msgstr "" +msgstr "Peça Modelo" -#: src/pages/part/PartDetail.tsx:276 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" -msgstr "" +msgstr "Peça montada" -#: src/pages/part/PartDetail.tsx:281 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" -msgstr "" +msgstr "Peça do componente" -#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" -msgstr "" +msgstr "Peça rastreável" -#: src/pages/part/PartDetail.tsx:291 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" -msgstr "" +msgstr "Peça comprável" -#: src/pages/part/PartDetail.tsx:296 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" -msgstr "" +msgstr "Peça vendível" -#: src/pages/part/PartDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" -msgstr "" +msgstr "Peça virtual" -#: src/pages/part/PartDetail.tsx:309 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" -msgstr "" +msgstr "Data de Criação" #: src/pages/part/PartDetail.tsx:310 #~ msgid "Edit part" #~ msgstr "Edit part" -#: src/pages/part/PartDetail.tsx:314 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" -msgstr "" +msgstr "Criado por" #: src/pages/part/PartDetail.tsx:322 #~ msgid "Duplicate part" @@ -4117,127 +4144,129 @@ msgstr "" #~ msgid "Delete part" #~ msgstr "Delete part" -#: src/pages/part/PartDetail.tsx:329 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" -msgstr "" +msgstr "Fornecedor Padrão" -#: src/pages/part/PartDetail.tsx:340 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" -msgstr "" +msgstr "Intervalo de Preço" -#: src/pages/part/PartDetail.tsx:375 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" -msgstr "" +msgstr "Último Balanço" -#: src/pages/part/PartDetail.tsx:410 +#: src/pages/part/PartDetail.tsx:415 msgid "Stocktake By" -msgstr "" +msgstr "Balanço por" -#: src/pages/part/PartDetail.tsx:481 +#: src/pages/part/PartDetail.tsx:486 msgid "Part Details" -msgstr "" +msgstr "Detalhes da Peça" -#: src/pages/part/PartDetail.tsx:507 +#: src/pages/part/PartDetail.tsx:512 msgid "Variants" -msgstr "" +msgstr "Variantes" -#: src/pages/part/PartDetail.tsx:514 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" -msgstr "" +msgstr "Alocações" -#: src/pages/part/PartDetail.tsx:520 +#: src/pages/part/PartDetail.tsx:526 msgid "Bill of Materials" -msgstr "" +msgstr "Lista de Materiais" -#: src/pages/part/PartDetail.tsx:534 +#: src/pages/part/PartDetail.tsx:540 msgid "Used In" -msgstr "" - -#: src/pages/part/PartDetail.tsx:541 -msgid "Part Pricing" -msgstr "" +msgstr "Utilizado em" #: src/pages/part/PartDetail.tsx:547 +msgid "Part Pricing" +msgstr "Preço da Peça" + +#: src/pages/part/PartDetail.tsx:553 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" -msgstr "" +msgstr "Fabricantes" -#: src/pages/part/PartDetail.tsx:586 +#: src/pages/part/PartDetail.tsx:593 msgid "Scheduling" -msgstr "" +msgstr "Agendamento" -#: src/pages/part/PartDetail.tsx:596 +#: src/pages/part/PartDetail.tsx:605 msgid "Test Templates" -msgstr "" +msgstr "Modelos de Teste" -#: src/pages/part/PartDetail.tsx:607 +#: src/pages/part/PartDetail.tsx:616 msgid "Related Parts" -msgstr "" +msgstr "Peças Relacionadas" -#: src/pages/part/PartDetail.tsx:662 -#: src/pages/stock/StockDetail.tsx:151 -#: src/pages/stock/StockDetail.tsx:529 +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 #: src/tables/stock/StockItemTable.tsx:275 msgid "Available" -msgstr "" +msgstr "Disponível" -#: src/pages/part/PartDetail.tsx:668 +#: src/pages/part/PartDetail.tsx:673 msgid "No Stock" -msgstr "" +msgstr "Sem Estoque" -#: src/pages/part/PartDetail.tsx:674 +#: src/pages/part/PartDetail.tsx:679 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" -msgstr "" +msgstr "No Pedido" -#: src/pages/part/PartDetail.tsx:680 -#: src/pages/stock/StockDetail.tsx:512 +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" -msgstr "" +msgstr "Em Produção" -#: src/pages/part/PartDetail.tsx:699 +#: src/pages/part/PartDetail.tsx:704 msgid "Edit Part" -msgstr "" +msgstr "Editar Peça" -#: src/pages/part/PartDetail.tsx:706 +#: src/pages/part/PartDetail.tsx:711 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" -msgstr "" +msgstr "Adicionar Peça" -#: src/pages/part/PartDetail.tsx:718 +#: src/pages/part/PartDetail.tsx:723 msgid "Delete Part" -msgstr "" +msgstr "Excluir Peça" -#: src/pages/part/PartDetail.tsx:727 +#: src/pages/part/PartDetail.tsx:732 msgid "Deleting this part cannot be reversed" -msgstr "" +msgstr "A exclusão desta parte não pode ser revertida" -#: src/pages/part/PartDetail.tsx:765 +#: src/pages/part/PartDetail.tsx:770 #: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" -msgstr "" +msgstr "Ações de Estoque" -#: src/pages/part/PartDetail.tsx:773 +#: src/pages/part/PartDetail.tsx:778 msgid "Count part stock" -msgstr "" +msgstr "Contagem do estoque" -#: src/pages/part/PartDetail.tsx:784 +#: src/pages/part/PartDetail.tsx:789 msgid "Transfer part stock" -msgstr "" +msgstr "Transferir peça do estoque" -#: src/pages/part/PartDetail.tsx:793 +#: src/pages/part/PartDetail.tsx:798 msgid "Part Actions" -msgstr "" +msgstr "Ações da Peça" #: src/pages/part/PartIndex.tsx:29 #~ msgid "Categories" @@ -4245,231 +4274,246 @@ msgstr "" #: src/pages/part/PartPricingPanel.tsx:72 msgid "No pricing data found for this part." -msgstr "" +msgstr "Nenhum dado de preço foi encontrado para esta parte." #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" -msgstr "" +msgstr "Resumo de Preços" #: src/pages/part/PartPricingPanel.tsx:92 msgid "Purchase History" -msgstr "" +msgstr "Histórico de Compras" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" -msgstr "" +msgstr "Preço Interno" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" -msgstr "" +msgstr "Preço da BOM" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" -msgstr "" +msgstr "Preço Variável" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" -msgstr "" +msgstr "Preço de Venda" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "" +msgstr "Histórico de Venda" +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 #: src/tables/sales/ReturnOrderTable.tsx:104 #: src/tables/sales/SalesOrderTable.tsx:134 msgid "Total Price" -msgstr "" +msgstr "Preço Total" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "Componente" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "Preço Mínimo" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "Preço Máximo" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "Minimum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "Maximum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "Preço Unitário" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" -msgstr "" +msgstr "Atualizado" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" -msgstr "" +msgstr "Gráfico circular" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" -msgstr "" +msgstr "Gráfico de Barras" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" -msgstr "" +msgstr "Editar Quebra de Preço" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" -msgstr "" +msgstr "Editar Quebra de Preço" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" -msgstr "" +msgstr "Excluir quebra de preço" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" -msgstr "" +msgstr "Quebra de Preço" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "Preço" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" -msgstr "" +msgstr "Categoria de Preços" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" -msgstr "" +msgstr "Mínimo" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" -msgstr "" +msgstr "Máximo" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" -msgstr "" +msgstr "Preço de Compra" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" -msgstr "" +msgstr "Alterar Preços" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" -msgstr "" +msgstr "Preços Gerais" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" -msgstr "" +msgstr "Última Atualização" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" -msgstr "" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" +msgstr "Valor Mínimo" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" -msgstr "" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" +msgstr "Valor Máximo" #: src/pages/part/pricing/PricingPanel.tsx:25 msgid "No data available" -msgstr "" +msgstr "Dados indisponíveis" #: src/pages/part/pricing/PricingPanel.tsx:66 msgid "No Data" -msgstr "" +msgstr "Sem Dados" #: src/pages/part/pricing/PricingPanel.tsx:67 msgid "No pricing data available" -msgstr "" +msgstr "Não há dados de preços disponíveis" #: src/pages/part/pricing/PricingPanel.tsx:78 msgid "Loading pricing data" -msgstr "" +msgstr "Carregando dados de preços" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" -msgstr "" +msgstr "Data" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" -msgstr "" +msgstr "Preço de Compra" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" -msgstr "" +msgstr "Ordem de Venda" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" -msgstr "" +msgstr "Preço de Venda" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" -msgstr "" +msgstr "Preço do fornecedor" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" -msgstr "" +msgstr "Peça Variante" #: src/pages/purchasing/PurchaseOrderDetail.tsx:75 msgid "Edit Purchase Order" -msgstr "" +msgstr "Editar ordem de compra" #: src/pages/purchasing/PurchaseOrderDetail.tsx:84 #: src/tables/purchasing/PurchaseOrderTable.tsx:128 #: src/tables/purchasing/PurchaseOrderTable.tsx:140 msgid "Add Purchase Order" -msgstr "" +msgstr "Adicionar Ordem de Compra" #: src/pages/purchasing/PurchaseOrderDetail.tsx:109 msgid "Supplier Reference" -msgstr "" +msgstr "Referencia do fornecedor" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" -msgstr "" +msgstr "Itens de linha" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" -msgstr "" +msgstr "Itens de Linha Concluídos" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" -msgstr "" +msgstr "Envios concluídos" #: src/pages/purchasing/PurchaseOrderDetail.tsx:159 #: src/pages/sales/ReturnOrderDetail.tsx:126 @@ -4478,135 +4522,135 @@ msgstr "" #~ msgstr "Order Currency," #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" -msgstr "" +msgstr "Moeda do pedido" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" -msgstr "" +msgstr "Custo Total" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" -msgstr "" +msgstr "Criado em" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" -msgstr "" +msgstr "Detalhes do pedido" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" -msgstr "" +msgstr "Ações do Pedido" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" -msgstr "" +msgstr "Referência do Cliente" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" -msgstr "" +msgstr "Editar Pedido de Devolução" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" -msgstr "" +msgstr "Novo Pedido de Devolução" #: src/pages/sales/SalesIndex.tsx:33 msgid "Customers" -msgstr "" +msgstr "Clientes" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" -msgstr "" +msgstr "Editar Pedido de Venda" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" -msgstr "" +msgstr "Novo Pedido de Venda" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" -msgstr "" +msgstr "Envios Pendentes" #: src/pages/stock/LocationDetail.tsx:107 msgid "Parent Location" -msgstr "" +msgstr "Localização Parente" #: src/pages/stock/LocationDetail.tsx:125 msgid "Sublocations" -msgstr "" +msgstr "Sub-locais" #: src/pages/stock/LocationDetail.tsx:137 msgid "External" -msgstr "" +msgstr "Externos" #: src/pages/stock/LocationDetail.tsx:143 msgid "Location Type" -msgstr "" +msgstr "Tipo de Localização" #: src/pages/stock/LocationDetail.tsx:154 msgid "Top level stock location" -msgstr "" +msgstr "Local de estoque de alto nível" #: src/pages/stock/LocationDetail.tsx:165 msgid "Location Details" -msgstr "" +msgstr "Detalhes da localização" #: src/pages/stock/LocationDetail.tsx:191 msgid "Default Parts" -msgstr "" +msgstr "Peças padrão" #: src/pages/stock/LocationDetail.tsx:210 #: src/pages/stock/LocationDetail.tsx:329 #: src/tables/stock/StockLocationTable.tsx:100 msgid "Edit Stock Location" -msgstr "" +msgstr "Editar Local de Estoque" #: src/pages/stock/LocationDetail.tsx:231 #: src/pages/stock/LocationDetail.tsx:334 msgid "Delete Stock Location" -msgstr "" +msgstr "Editar Local de Estoque" #: src/pages/stock/LocationDetail.tsx:234 msgid "Items Action" -msgstr "" +msgstr "Ações do item" #: src/pages/stock/LocationDetail.tsx:235 msgid "Action for stock items in this location" -msgstr "" +msgstr "Ações para itens de estoque nesta localização" #: src/pages/stock/LocationDetail.tsx:240 msgid "Child Locations Action" -msgstr "" +msgstr "Ações para localizações Filhas" #: src/pages/stock/LocationDetail.tsx:241 msgid "Action for child locations in this location" -msgstr "" +msgstr "Ação para locais filhos nesta localização" #: src/pages/stock/LocationDetail.tsx:324 msgid "Location Actions" -msgstr "" +msgstr "Ações de localização" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" -msgstr "" +msgstr "Peça Base" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" -msgstr "" +msgstr "Estado do Estoque" #: src/pages/stock/StockDetail.tsx:155 #~ msgid "Link custom barcode to stock item" @@ -4616,18 +4660,18 @@ msgstr "" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "Unlink custom barcode from stock item" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" -msgstr "" +msgstr "Instalado em" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" -msgstr "" +msgstr "Consumido por" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" -msgstr "" +msgstr "Ordem de Produção" #: src/pages/stock/StockDetail.tsx:205 #~ msgid "Edit stock item" @@ -4637,86 +4681,86 @@ msgstr "" #~ msgid "Delete stock item" #~ msgstr "Delete stock item" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" -msgstr "" +msgstr "Detalhes de Estoque" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" -msgstr "" +msgstr "Rastreamento de Estoque" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" -msgstr "" +msgstr "Dados de teste" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" -msgstr "" +msgstr "Itens instalados" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" -msgstr "" +msgstr "Itens Filhos" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" -msgstr "" +msgstr "Editar Item do Estoque" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" -msgstr "" +msgstr "Excluir Item de Estoque" #: src/pages/stock/StockDetail.tsx:433 #~ msgid "Duplicate stock item" #~ msgstr "Duplicate stock item" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" -msgstr "" +msgstr "Operações de Stock" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" -msgstr "" +msgstr "Contar Estoque" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" -msgstr "" +msgstr "Adicionar estoque" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" -msgstr "" +msgstr "Remover Estoque" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" -msgstr "" +msgstr "Transferir" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" -msgstr "" +msgstr "Transferir Estoque" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" -msgstr "" +msgstr "Ações do Item do Estoque" #: src/tables/ColumnRenderers.tsx:42 msgid "No location set" -msgstr "" +msgstr "Nenhum local definido" #: src/tables/ColumnRenderers.tsx:207 msgid "Shipment Date" -msgstr "" +msgstr "Data de Envio" #: src/tables/ColumnRenderers.tsx:227 #: src/tables/settings/CurrencyTable.tsx:23 msgid "Currency" -msgstr "" +msgstr "Moeda" #: src/tables/ColumnSelect.tsx:16 #: src/tables/ColumnSelect.tsx:23 msgid "Select Columns" -msgstr "" +msgstr "Selecionar Colunas" #: src/tables/DownloadAction.tsx:13 #~ msgid "Excel" @@ -4728,135 +4772,135 @@ msgstr "" #: src/tables/DownloadAction.tsx:22 msgid "CSV" -msgstr "" +msgstr "CSV" #: src/tables/DownloadAction.tsx:23 msgid "TSV" -msgstr "" +msgstr "TSV" #: src/tables/DownloadAction.tsx:24 msgid "Excel (.xls)" -msgstr "" +msgstr "Excel (.xls)" #: src/tables/DownloadAction.tsx:25 msgid "Excel (.xlsx)" -msgstr "" +msgstr "Excel (.xlsx)" #: src/tables/DownloadAction.tsx:39 msgid "Download Data" -msgstr "" +msgstr "Descarregar dados" #: src/tables/Filter.tsx:88 #: src/tables/build/BuildOrderTable.tsx:126 msgid "Assigned to me" -msgstr "" +msgstr "Atribuído a mim" #: src/tables/Filter.tsx:89 #: src/tables/build/BuildOrderTable.tsx:127 msgid "Show orders assigned to me" -msgstr "" +msgstr "Mostrar pedidos atribuídos a mim" #: src/tables/Filter.tsx:96 msgid "Outstanding" -msgstr "" +msgstr "Pendente" #: src/tables/Filter.tsx:97 msgid "Show outstanding orders" -msgstr "" +msgstr "Mostrar pedidos pendentes" #: src/tables/Filter.tsx:104 #: src/tables/build/BuildOrderTable.tsx:119 msgid "Overdue" -msgstr "" +msgstr "Em atraso" #: src/tables/Filter.tsx:105 msgid "Show overdue orders" -msgstr "" +msgstr "Mostrar pedidos atrasados" #: src/tables/FilterSelectDrawer.tsx:51 msgid "Remove filter" -msgstr "" +msgstr "Remover filtro" #: src/tables/FilterSelectDrawer.tsx:136 msgid "Select filter" -msgstr "" +msgstr "Selecionar filtro" #: src/tables/FilterSelectDrawer.tsx:137 msgid "Filter" -msgstr "" +msgstr "Filtro" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" -msgstr "" +msgstr "Valor" #: src/tables/FilterSelectDrawer.tsx:145 msgid "Select filter value" -msgstr "" +msgstr "Selecionar valor do filtro" #: src/tables/FilterSelectDrawer.tsx:185 msgid "Table Filters" -msgstr "" +msgstr "Filtros de tabela" #: src/tables/FilterSelectDrawer.tsx:217 msgid "Add Filter" -msgstr "" +msgstr "Adicionar Filtro" #: src/tables/FilterSelectDrawer.tsx:226 msgid "Clear Filters" -msgstr "" +msgstr "Limpar Filtros" #: src/tables/InvenTreeTable.tsx:119 #: src/tables/InvenTreeTable.tsx:390 #: src/tables/InvenTreeTable.tsx:411 msgid "No records found" -msgstr "" +msgstr "Nenhum registo encontrado" #: src/tables/InvenTreeTable.tsx:422 msgid "Server returned incorrect data type" -msgstr "" +msgstr "O servidor retornou dados incorretos" #: src/tables/InvenTreeTable.tsx:430 msgid "Bad request" -msgstr "" +msgstr "Pedido inválido" #: src/tables/InvenTreeTable.tsx:433 msgid "Unauthorized" -msgstr "" +msgstr "Não autorizado" #: src/tables/InvenTreeTable.tsx:436 msgid "Forbidden" -msgstr "" +msgstr "Proibido" #: src/tables/InvenTreeTable.tsx:439 msgid "Not found" -msgstr "" +msgstr "Não encontrado" #: src/tables/InvenTreeTable.tsx:488 #: src/tables/InvenTreeTable.tsx:611 msgid "Delete selected records" -msgstr "" +msgstr "Remover registos selecionados" #: src/tables/InvenTreeTable.tsx:492 msgid "Are you sure you want to delete the selected records?" -msgstr "" +msgstr "Tem certeza de que deseja excluir os registos selecionados?" #: src/tables/InvenTreeTable.tsx:494 msgid "This action cannot be undone!" -msgstr "" +msgstr "Esta ação não pode ser desfeita!" #: src/tables/InvenTreeTable.tsx:522 msgid "Deleted records" -msgstr "" +msgstr "Registos eliminados" #: src/tables/InvenTreeTable.tsx:523 msgid "Records were deleted successfully" -msgstr "" +msgstr "Registos excluídos com sucesso" #: src/tables/InvenTreeTable.tsx:532 msgid "Failed to delete records" -msgstr "" +msgstr "Falha ao excluir registos" #: src/tables/InvenTreeTable.tsx:594 #: src/tables/InvenTreeTable.tsx:595 @@ -4866,113 +4910,113 @@ msgstr "" #: src/tables/InvenTreeTable.tsx:601 #: src/tables/InvenTreeTable.tsx:602 msgid "Barcode actions" -msgstr "" +msgstr "Ações de código de barras" #: src/tables/InvenTreeTable.tsx:630 msgid "Refresh data" -msgstr "" +msgstr "Atualizar dados" #: src/tables/InvenTreeTable.tsx:648 msgid "Table filters" -msgstr "" +msgstr "Filtros de tabela" #: src/tables/bom/BomTable.tsx:78 msgid "This BOM item is defined for a different parent" -msgstr "" +msgstr "Este item BOM é definido para uma peça parental diferente" #: src/tables/bom/BomTable.tsx:93 msgid "Part Information" -msgstr "" +msgstr "Informação da Peça" #: src/tables/bom/BomTable.tsx:179 #: src/tables/part/PartTable.tsx:124 msgid "No stock" -msgstr "" +msgstr "Sem Estoque" #: src/tables/bom/BomTable.tsx:187 #: src/tables/build/BuildLineTable.tsx:104 #: src/tables/part/PartTable.tsx:115 msgid "External stock" -msgstr "" +msgstr "Estoque externo" #: src/tables/bom/BomTable.tsx:195 #: src/tables/build/BuildLineTable.tsx:67 msgid "Includes substitute stock" -msgstr "" +msgstr "Inclui substitutos de estoque" #: src/tables/bom/BomTable.tsx:204 #: src/tables/build/BuildLineTable.tsx:77 msgid "Includes variant stock" -msgstr "" +msgstr "Inclui estoque variante" #: src/tables/bom/BomTable.tsx:229 #: src/tables/part/PartTable.tsx:143 #: src/tables/stock/StockItemTable.tsx:205 msgid "Stock Information" -msgstr "" +msgstr "Informação do Estoque" #: src/tables/bom/BomTable.tsx:241 #: src/tables/build/BuildLineTable.tsx:195 msgid "Consumable item" -msgstr "" +msgstr "Item Consumível" #: src/tables/bom/BomTable.tsx:262 msgid "Show trackable items" -msgstr "" +msgstr "Mostrar partes rastreáveis" #: src/tables/bom/BomTable.tsx:267 msgid "Show asssmbled items" -msgstr "" +msgstr "Mostrar partes montadas" #: src/tables/bom/BomTable.tsx:272 msgid "Show items with available stock" -msgstr "" +msgstr "Mostrar itens com estoque disponível" #: src/tables/bom/BomTable.tsx:277 msgid "Show items on order" -msgstr "" +msgstr "Mostrar itens no pedido" #: src/tables/bom/BomTable.tsx:281 msgid "Validated" -msgstr "" +msgstr "Validado" #: src/tables/bom/BomTable.tsx:282 msgid "Show validated items" -msgstr "" +msgstr "Mostrar itens validados" #: src/tables/bom/BomTable.tsx:286 #: src/tables/bom/UsedInTable.tsx:63 msgid "Inherited" -msgstr "" +msgstr "Herdado" #: src/tables/bom/BomTable.tsx:287 #: src/tables/bom/UsedInTable.tsx:64 msgid "Show inherited items" -msgstr "" +msgstr "Mostrar itens herdados" #: src/tables/bom/BomTable.tsx:291 #: src/tables/bom/UsedInTable.tsx:68 #: src/tables/build/BuildLineTable.tsx:46 msgid "Optional" -msgstr "" +msgstr "Opcional" #: src/tables/bom/BomTable.tsx:292 #: src/tables/bom/UsedInTable.tsx:69 msgid "Show optional items" -msgstr "" +msgstr "Mostrar itens opcionais" #: src/tables/bom/BomTable.tsx:296 #: src/tables/build/BuildLineTable.tsx:41 msgid "Consumable" -msgstr "" +msgstr "Consumível" #: src/tables/bom/BomTable.tsx:297 msgid "Show consumable items" -msgstr "" +msgstr "Mostrar itens consumíveis" #: src/tables/bom/BomTable.tsx:301 msgid "Has Pricing" -msgstr "" +msgstr "Tem Preço" #: src/tables/bom/BomTable.tsx:301 #~ msgid "Create BOM Item" @@ -4980,24 +5024,24 @@ msgstr "" #: src/tables/bom/BomTable.tsx:302 msgid "Show items with pricing" -msgstr "" +msgstr "Exibir itens com preço" #: src/tables/bom/BomTable.tsx:311 #: src/tables/bom/BomTable.tsx:399 msgid "Add BOM Item" -msgstr "" +msgstr "Adicionar Item na BOM" #: src/tables/bom/BomTable.tsx:316 msgid "BOM item created" -msgstr "" +msgstr "Item BOM criado" #: src/tables/bom/BomTable.tsx:323 msgid "Edit BOM Item" -msgstr "" +msgstr "Editar Item da BOM" #: src/tables/bom/BomTable.tsx:325 msgid "BOM item updated" -msgstr "" +msgstr "Item da BOM atualizado" #: src/tables/bom/BomTable.tsx:331 #~ msgid "Edit Bom Item" @@ -5005,11 +5049,11 @@ msgstr "" #: src/tables/bom/BomTable.tsx:332 msgid "Delete BOM Item" -msgstr "" +msgstr "Apagar Item da BOM" #: src/tables/bom/BomTable.tsx:333 msgid "BOM item deleted" -msgstr "" +msgstr "Item da BOM excluído" #: src/tables/bom/BomTable.tsx:333 #~ msgid "Bom item updated" @@ -5017,7 +5061,7 @@ msgstr "" #: src/tables/bom/BomTable.tsx:343 msgid "View BOM" -msgstr "" +msgstr "Visualizar BOM" #: src/tables/bom/BomTable.tsx:348 #~ msgid "Delete Bom Item" @@ -5033,132 +5077,132 @@ msgstr "" #: src/tables/bom/BomTable.tsx:354 msgid "Validate BOM line" -msgstr "" +msgstr "Validar linha da BOM" #: src/tables/bom/BomTable.tsx:362 msgid "Edit Substitutes" -msgstr "" +msgstr "Editar peças substitutas" #: src/tables/bom/UsedInTable.tsx:74 msgid "Show active assemblies" -msgstr "" +msgstr "Mostrar montagens ativas" #: src/tables/bom/UsedInTable.tsx:78 #: src/tables/part/PartTable.tsx:192 #: src/tables/part/PartVariantTable.tsx:30 msgid "Trackable" -msgstr "" +msgstr "Rastreável" #: src/tables/bom/UsedInTable.tsx:79 msgid "Show trackable assemblies" -msgstr "" +msgstr "Mostrar montagens rastreáveis" #: src/tables/build/BuildLineTable.tsx:31 #: src/tables/stock/StockItemTable.tsx:270 msgid "Allocated" -msgstr "" +msgstr "Alocado" #: src/tables/build/BuildLineTable.tsx:32 msgid "Show allocated lines" -msgstr "" +msgstr "Exibir linhas alocadas" #: src/tables/build/BuildLineTable.tsx:37 msgid "Show lines with available stock" -msgstr "" +msgstr "Exibir linhas com estoque disponível" #: src/tables/build/BuildLineTable.tsx:42 msgid "Show consumable lines" -msgstr "" +msgstr "Mostrar linhas de consumíveis" #: src/tables/build/BuildLineTable.tsx:47 msgid "Show optional lines" -msgstr "" +msgstr "Mostrar itens opcionais" #: src/tables/build/BuildLineTable.tsx:51 #: src/tables/stock/StockItemTable.tsx:329 msgid "Tracked" -msgstr "" +msgstr "Rastreado" #: src/tables/build/BuildLineTable.tsx:52 msgid "Show tracked lines" -msgstr "" +msgstr "Mostrar linhas rastreadas" #: src/tables/build/BuildLineTable.tsx:86 msgid "In production" -msgstr "" +msgstr "Em produção" #: src/tables/build/BuildLineTable.tsx:118 #: src/tables/stock/StockItemTable.tsx:175 msgid "No stock available" -msgstr "" +msgstr "Nenhum estoque disponível" #: src/tables/build/BuildLineTable.tsx:157 msgid "Unit Quantity" -msgstr "" +msgstr "Quantidade Unitária" #: src/tables/build/BuildLineTable.tsx:231 msgid "Order Stock" -msgstr "" +msgstr "Encomendar Estoque" #: src/tables/build/BuildLineTable.tsx:237 msgid "Build Stock" -msgstr "" +msgstr "Produzir Estoque" #: src/tables/build/BuildOrderTable.tsx:109 msgid "Show active orders" -msgstr "" +msgstr "Mostrar encomendas ativas" #: src/tables/build/BuildOrderTable.tsx:114 #: src/tables/purchasing/PurchaseOrderTable.tsx:56 #: src/tables/sales/ReturnOrderTable.tsx:47 #: src/tables/sales/SalesOrderTable.tsx:53 msgid "Filter by order status" -msgstr "" +msgstr "Filtrar por estado do pedido" #: src/tables/build/BuildOrderTable.tsx:121 msgid "Show overdue status" -msgstr "" +msgstr "Mostrar estados atrasados" #: src/tables/build/BuildOrderTable.tsx:132 #: src/tables/purchasing/PurchaseOrderTable.tsx:65 #: src/tables/sales/ReturnOrderTable.tsx:56 #: src/tables/sales/SalesOrderTable.tsx:62 msgid "Filter by project code" -msgstr "" +msgstr "Filtrar por código de projeto" #: src/tables/build/BuildOrderTable.tsx:137 #: src/tables/purchasing/PurchaseOrderTable.tsx:70 #: src/tables/sales/ReturnOrderTable.tsx:61 #: src/tables/sales/SalesOrderTable.tsx:67 msgid "Has Project Code" -msgstr "" +msgstr "Possui Código do Projeto" #: src/tables/build/BuildOrderTable.tsx:138 #: src/tables/purchasing/PurchaseOrderTable.tsx:71 #: src/tables/sales/ReturnOrderTable.tsx:62 #: src/tables/sales/SalesOrderTable.tsx:68 msgid "Filter by whether the purchase order has a project code" -msgstr "" +msgstr "Filtrar por se a ordem de compra tem um código de projeto" #: src/tables/build/BuildOrderTable.tsx:143 msgid "Filter by user who issued this order" -msgstr "" +msgstr "Filtrar por usuário que emitiu esta ordem" #: src/tables/build/BuildOrderTable.tsx:149 #: src/tables/purchasing/PurchaseOrderTable.tsx:76 #: src/tables/sales/ReturnOrderTable.tsx:67 #: src/tables/sales/SalesOrderTable.tsx:73 msgid "Filter by responsible owner" -msgstr "" +msgstr "Filtrar pelo proprietário responsável" #: src/tables/build/BuildOutputTable.tsx:114 #: src/tables/build/BuildOutputTable.tsx:152 msgid "Add Build Output" -msgstr "" +msgstr "Nova saída de produção" #: src/tables/build/BuildOutputTable.tsx:157 msgid "Complete selected outputs" -msgstr "" +msgstr "Concluir saídas selecionadas" #: src/tables/build/BuildOutputTable.tsx:161 #~ msgid "Delete build output" @@ -5166,89 +5210,89 @@ msgstr "" #: src/tables/build/BuildOutputTable.tsx:167 msgid "Scrap selected outputs" -msgstr "" +msgstr "Remover saídas selecionadas" #: src/tables/build/BuildOutputTable.tsx:177 msgid "Cancel selected outputs" -msgstr "" +msgstr "Cancelar saídas selecionadas" #: src/tables/build/BuildOutputTable.tsx:193 msgid "Allocate" -msgstr "" +msgstr "Atribuir" #: src/tables/build/BuildOutputTable.tsx:194 msgid "Allocate stock to build output" -msgstr "" +msgstr "Atribuir estoque para a produção" #: src/tables/build/BuildOutputTable.tsx:199 msgid "Deallocate" -msgstr "" +msgstr "Desalocar" #: src/tables/build/BuildOutputTable.tsx:200 msgid "Deallocate stock from build output" -msgstr "" +msgstr "Desalocar estoque da produção" #: src/tables/build/BuildOutputTable.tsx:205 msgid "Complete" -msgstr "" +msgstr "Completo" #: src/tables/build/BuildOutputTable.tsx:206 msgid "Complete build output" -msgstr "" +msgstr "Concluir Produção" #: src/tables/build/BuildOutputTable.tsx:215 msgid "Scrap" -msgstr "" +msgstr "Sucata" #: src/tables/build/BuildOutputTable.tsx:216 msgid "Scrap build output" -msgstr "" +msgstr "Cancelar Saída de Produção" #: src/tables/build/BuildOutputTable.tsx:226 msgid "Cancel build output" -msgstr "" +msgstr "Cancelar Saída de Produção" #: src/tables/build/BuildOutputTable.tsx:253 msgid "Build Output" -msgstr "" +msgstr "Saída da Produção" #: src/tables/build/BuildOutputTable.tsx:266 msgid "Batch" -msgstr "" +msgstr "Lote" #: src/tables/build/BuildOutputTable.tsx:280 msgid "Allocated Items" -msgstr "" +msgstr "Itens Alocadas" #: src/tables/build/BuildOutputTable.tsx:290 msgid "Required Tests" -msgstr "" +msgstr "Testes Obrigatórios" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" -msgstr "" +msgstr "Resultados do teste" #: src/tables/company/AddressTable.tsx:121 #: src/tables/company/AddressTable.tsx:185 msgid "Add Address" -msgstr "" +msgstr "Adicionar endereço" #: src/tables/company/AddressTable.tsx:126 msgid "Address created" -msgstr "" +msgstr "Endereço criado" #: src/tables/company/AddressTable.tsx:135 msgid "Edit Address" -msgstr "" +msgstr "Editar Morada" #: src/tables/company/AddressTable.tsx:143 msgid "Delete Address" -msgstr "" +msgstr "Apagar Morada" #: src/tables/company/AddressTable.tsx:144 msgid "Are you sure you want to delete this address?" -msgstr "" +msgstr "Tem a certeza que deseja apagar esta morada?" #: src/tables/company/CompanyTable.tsx:71 #~ msgid "New Company" @@ -5257,165 +5301,181 @@ msgstr "" #: src/tables/company/CompanyTable.tsx:74 #: src/tables/company/CompanyTable.tsx:123 msgid "Add Company" -msgstr "" +msgstr "Adicionar Empresa" #: src/tables/company/CompanyTable.tsx:96 msgid "Show active companies" -msgstr "" +msgstr "Mostrar Empresas ativas" #: src/tables/company/CompanyTable.tsx:101 msgid "Show companies which are suppliers" -msgstr "" +msgstr "Mostrar Empresas que são fornecedores" #: src/tables/company/CompanyTable.tsx:106 msgid "Show companies which are manufacturers" -msgstr "" +msgstr "Mostrar Empresas que são fabricantes" #: src/tables/company/CompanyTable.tsx:111 msgid "Show companies which are customers" -msgstr "" +msgstr "Mostrar Empresas que são clientes" #: src/tables/company/ContactTable.tsx:71 msgid "Edit Contact" -msgstr "" +msgstr "Editar Contato" #: src/tables/company/ContactTable.tsx:78 msgid "Add Contact" -msgstr "" +msgstr "Adicionar Contato" #: src/tables/company/ContactTable.tsx:89 msgid "Delete Contact" -msgstr "" +msgstr "Apagar Contato" #: src/tables/company/ContactTable.tsx:129 msgid "Add contact" -msgstr "" +msgstr "Adicionar contacto" #: src/tables/general/AttachmentTable.tsx:130 msgid "File uploaded" -msgstr "" +msgstr "Ficheiro enviado" #: src/tables/general/AttachmentTable.tsx:131 msgid "File {0} uploaded successfully" -msgstr "" +msgstr "Arquivo {0} enviado com sucesso" #: src/tables/general/AttachmentTable.tsx:142 msgid "Upload Error" -msgstr "" +msgstr "Erro ao enviar" #: src/tables/general/AttachmentTable.tsx:143 msgid "File could not be uploaded" -msgstr "" +msgstr "Não foi possível fazer o upload do arquivo" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" -msgstr "" +msgstr "Carregar anexo" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" -msgstr "" +msgstr "Editar Anexo" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" -msgstr "" +msgstr "Eliminar Anexo" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "É um link" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "Mostrar anexos dos links" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "É um arquivo" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "Mostrar arquivos anexados" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" -msgstr "" +msgstr "Adicionar anexo" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" -msgstr "" +msgstr "Adicionar ligação externa" #: src/tables/general/AttachmentTable.tsx:254 #~ msgid "Upload attachment" #~ msgstr "Upload attachment" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" -msgstr "" +msgstr "Nenhum anexo encontrado" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" -msgstr "" +msgstr "Arraste o arquivo de anexo aqui para enviar" #: src/tables/machine/MachineListTable.tsx:199 msgid "Machine restarted" -msgstr "" +msgstr "Máquina reiniciada" #: src/tables/machine/MachineListTable.tsx:221 #: src/tables/machine/MachineListTable.tsx:423 msgid "Restart required" -msgstr "" +msgstr "É necessário reiniciar" #: src/tables/machine/MachineListTable.tsx:225 msgid "Machine Actions" -msgstr "" +msgstr "Ações da máquina" #: src/tables/machine/MachineListTable.tsx:229 #: src/tables/machine/MachineListTable.tsx:232 msgid "Edit machine" -msgstr "" +msgstr "Editar Máquina" #: src/tables/machine/MachineListTable.tsx:244 #: src/tables/machine/MachineListTable.tsx:247 msgid "Delete machine" -msgstr "" +msgstr "Remover máquina" #: src/tables/machine/MachineListTable.tsx:248 msgid "Machine successfully deleted." -msgstr "" +msgstr "Máquina excluída com sucesso." #: src/tables/machine/MachineListTable.tsx:252 msgid "Are you sure you want to remove the machine \"{0}\"?" -msgstr "" +msgstr "Tem certeza de que deseja remover a máquina \"{0}\"?" #: src/tables/machine/MachineListTable.tsx:263 msgid "Restart" -msgstr "" +msgstr "Reiniciar" #: src/tables/machine/MachineListTable.tsx:265 msgid "Restart machine" -msgstr "" +msgstr "Reiniciar a máquina" #: src/tables/machine/MachineListTable.tsx:267 msgid "manual restart required" -msgstr "" +msgstr "Requer reinicialização manual" #: src/tables/machine/MachineListTable.tsx:283 msgid "Machine information" -msgstr "" +msgstr "Informações da máquina" #: src/tables/machine/MachineListTable.tsx:294 #: src/tables/machine/MachineListTable.tsx:590 msgid "Machine Type" -msgstr "" +msgstr "Tipo de Máquina" #: src/tables/machine/MachineListTable.tsx:307 msgid "Machine Driver" -msgstr "" +msgstr "Controlador da Máquina" #: src/tables/machine/MachineListTable.tsx:320 msgid "Initialized" -msgstr "" +msgstr "Inicializado" #: src/tables/machine/MachineListTable.tsx:341 #: src/tables/machine/MachineTypeTable.tsx:261 msgid "Errors" -msgstr "" +msgstr "Erros" #: src/tables/machine/MachineListTable.tsx:349 #: src/tables/machine/MachineTypeTable.tsx:269 msgid "No errors reported" -msgstr "" +msgstr "Não há erros relatados" #: src/tables/machine/MachineListTable.tsx:369 msgid "Machine Settings" -msgstr "" +msgstr "Definições da Máquina" #: src/tables/machine/MachineListTable.tsx:380 msgid "Driver Settings" -msgstr "" +msgstr "Configurações do controlador" #: src/tables/machine/MachineListTable.tsx:494 #~ msgid "Create machine" @@ -5423,143 +5483,143 @@ msgstr "" #: src/tables/machine/MachineListTable.tsx:497 msgid "Add machine" -msgstr "" +msgstr "Adicionar máquina" #: src/tables/machine/MachineListTable.tsx:552 msgid "Machine detail" -msgstr "" +msgstr "Detalhes da Máquina" #: src/tables/machine/MachineListTable.tsx:599 msgid "Driver" -msgstr "" +msgstr "Controlador" #: src/tables/machine/MachineTypeTable.tsx:73 msgid "Builtin driver" -msgstr "" +msgstr "Controlador embutido" #: src/tables/machine/MachineTypeTable.tsx:89 msgid "Machine type not found." -msgstr "" +msgstr "Tipo de máquina não encontrado." #: src/tables/machine/MachineTypeTable.tsx:97 msgid "Machine type information" -msgstr "" +msgstr "Informação do tipo máquina" #: src/tables/machine/MachineTypeTable.tsx:110 #: src/tables/machine/MachineTypeTable.tsx:217 msgid "Slug" -msgstr "" +msgstr "Lesma" #: src/tables/machine/MachineTypeTable.tsx:118 #: src/tables/machine/MachineTypeTable.tsx:238 msgid "Provider plugin" -msgstr "" +msgstr "Extensão do Provedor" #: src/tables/machine/MachineTypeTable.tsx:130 #: src/tables/machine/MachineTypeTable.tsx:250 msgid "Provider file" -msgstr "" +msgstr "Arquivo do Provedor" #: src/tables/machine/MachineTypeTable.tsx:135 #: src/tables/machine/MachineTypeTable.tsx:255 #: src/tables/plugin/PluginListTable.tsx:180 #: src/tables/plugin/PluginListTable.tsx:568 msgid "Builtin" -msgstr "" +msgstr "Embutido" #: src/tables/machine/MachineTypeTable.tsx:146 msgid "Available drivers" -msgstr "" +msgstr "Controladores Disponíveis" #: src/tables/machine/MachineTypeTable.tsx:196 msgid "Machine driver not found." -msgstr "" +msgstr "Controlador da máquina não encontrado." #: src/tables/machine/MachineTypeTable.tsx:204 msgid "Machine driver information" -msgstr "" +msgstr "Informação do controlador da máquina" #: src/tables/machine/MachineTypeTable.tsx:224 msgid "Machine type" -msgstr "" +msgstr "Tipo de Máquina" #: src/tables/machine/MachineTypeTable.tsx:327 msgid "Builtin type" -msgstr "" +msgstr "Tipo embutido" #: src/tables/machine/MachineTypeTable.tsx:336 msgid "Machine type detail" -msgstr "" +msgstr "Detalhes do tipo de Máquina" #: src/tables/machine/MachineTypeTable.tsx:346 msgid "Machine driver detail" -msgstr "" +msgstr "Detalhes do controlador da Máquina" #: src/tables/notifications/NotificationsTable.tsx:26 msgid "Age" -msgstr "" +msgstr "Idade" #: src/tables/notifications/NotificationsTable.tsx:40 #: src/tables/plugin/PluginErrorTable.tsx:37 msgid "Message" -msgstr "" +msgstr "Mensagem" #: src/tables/part/ParametricPartTable.tsx:76 #: src/tables/part/PartParameterTable.tsx:88 msgid "Internal Units" -msgstr "" +msgstr "Unidades Internas" #: src/tables/part/ParametricPartTable.tsx:81 msgid "Edit parameter" -msgstr "" +msgstr "Editar parâmetro" #: src/tables/part/ParametricPartTable.tsx:124 msgid "Add Part Parameter" -msgstr "" +msgstr "Adicionar Parâmetro da Peça" #: src/tables/part/ParametricPartTable.tsx:138 #: src/tables/part/PartParameterTable.tsx:121 #: src/tables/part/PartParameterTable.tsx:144 msgid "Edit Part Parameter" -msgstr "" +msgstr "Editar Parâmetro da Peça" #: src/tables/part/PartCategoryTable.tsx:60 #: src/tables/part/PartTable.tsx:180 msgid "Include Subcategories" -msgstr "" +msgstr "Incluir Subcategorias" #: src/tables/part/PartCategoryTable.tsx:61 msgid "Include subcategories in results" -msgstr "" +msgstr "Incluir subcategorias nos resultados" #: src/tables/part/PartCategoryTable.tsx:66 msgid "Show structural categories" -msgstr "" +msgstr "Mostrar categorias estruturais" #: src/tables/part/PartCategoryTable.tsx:73 msgid "New Part Category" -msgstr "" +msgstr "Nova Categoria de Peça" #: src/tables/part/PartCategoryTable.tsx:98 msgid "Add Part Category" -msgstr "" +msgstr "Adicionar Categoria de Peça" #: src/tables/part/PartCategoryTemplateTable.tsx:38 #: src/tables/part/PartCategoryTemplateTable.tsx:131 msgid "Add Category Parameter" -msgstr "" +msgstr "Adicionar Parâmetro da Categoria" #: src/tables/part/PartCategoryTemplateTable.tsx:46 msgid "Edit Category Parameter" -msgstr "" +msgstr "Editar Parâmetro da Categoria" #: src/tables/part/PartCategoryTemplateTable.tsx:54 msgid "Delete Category Parameter" -msgstr "" +msgstr "Excluir Parâmetro da Categoria" #: src/tables/part/PartCategoryTemplateTable.tsx:76 msgid "Parameter Template" -msgstr "" +msgstr "Modelo do Parâmetro" #: src/tables/part/PartCategoryTemplateTable.tsx:93 #~ msgid "[{0}]" @@ -5567,227 +5627,227 @@ msgstr "" #: src/tables/part/PartParameterTable.tsx:105 msgid "New Part Parameter" -msgstr "" +msgstr "Novo Parâmetro da Peça" #: src/tables/part/PartParameterTable.tsx:130 #: src/tables/part/PartParameterTable.tsx:152 msgid "Delete Part Parameter" -msgstr "" +msgstr "Excluir Parâmetro da Peça" #: src/tables/part/PartParameterTable.tsx:170 msgid "Add parameter" -msgstr "" +msgstr "Adicionar parâmetro" #: src/tables/part/PartParameterTable.tsx:191 #: src/tables/stock/StockItemTable.tsx:300 msgid "Include Variants" -msgstr "" +msgstr "Incluir variantes" #: src/tables/part/PartParameterTemplateTable.tsx:31 msgid "Checkbox" -msgstr "" +msgstr "Caixa de seleção" #: src/tables/part/PartParameterTemplateTable.tsx:32 msgid "Show checkbox templates" -msgstr "" +msgstr "Mostrar modelos da caixa de seleção" #: src/tables/part/PartParameterTemplateTable.tsx:36 msgid "Has choices" -msgstr "" +msgstr "Possui escolhas" #: src/tables/part/PartParameterTemplateTable.tsx:37 msgid "Show templates with choices" -msgstr "" +msgstr "Mostrar modelos com escolhas" #: src/tables/part/PartParameterTemplateTable.tsx:41 #: src/tables/part/PartTable.tsx:198 msgid "Has Units" -msgstr "" +msgstr "Possui unidades" #: src/tables/part/PartParameterTemplateTable.tsx:42 msgid "Show templates with units" -msgstr "" +msgstr "Mostrar modelos com escolhas" #: src/tables/part/PartParameterTemplateTable.tsx:85 msgid "Add Parameter Template" -msgstr "" +msgstr "Adicionar modelo de Parâmetro" #: src/tables/part/PartParameterTemplateTable.tsx:100 msgid "Edit Parameter Template" -msgstr "" +msgstr "Editar Modelo de Parâmetro" #: src/tables/part/PartParameterTemplateTable.tsx:111 msgid "Delete Parameter Template" -msgstr "" +msgstr "Excluir Modelo de Parâmetro" #: src/tables/part/PartParameterTemplateTable.tsx:141 msgid "Add parameter template" -msgstr "" +msgstr "Adicionar modelo de parâmetro" #: src/tables/part/PartTable.tsx:67 msgid "Minimum stock" -msgstr "" +msgstr "Stock mínimo" #: src/tables/part/PartTable.tsx:89 msgid "Build Order Allocations" -msgstr "" +msgstr "Alocações de Pedido de Produção" #: src/tables/part/PartTable.tsx:98 msgid "Sales Order Allocations" -msgstr "" +msgstr "Alocações do Pedido de Vendas" #: src/tables/part/PartTable.tsx:169 msgid "Filter by part active status" -msgstr "" +msgstr "Filtrar por estado ativo da peça" #: src/tables/part/PartTable.tsx:174 #: src/tables/stock/StockItemTable.tsx:265 msgid "Assembly" -msgstr "" +msgstr "Montagem" #: src/tables/part/PartTable.tsx:175 msgid "Filter by assembly attribute" -msgstr "" +msgstr "Filtrar por atributo de montagem" #: src/tables/part/PartTable.tsx:181 msgid "Include parts in subcategories" -msgstr "" +msgstr "Incluir peças nas subcategorias" #: src/tables/part/PartTable.tsx:187 msgid "Filter by component attribute" -msgstr "" +msgstr "Filtrar por atributo do componente" #: src/tables/part/PartTable.tsx:193 msgid "Filter by trackable attribute" -msgstr "" +msgstr "Filtrar por atributo rastreável" #: src/tables/part/PartTable.tsx:199 msgid "Filter by parts which have units" -msgstr "" +msgstr "Filtrar por peças que têm unidades" #: src/tables/part/PartTable.tsx:204 msgid "Has IPN" -msgstr "" +msgstr "Possui IPN" #: src/tables/part/PartTable.tsx:205 msgid "Filter by parts which have an internal part number" -msgstr "" +msgstr "Filtrar por peças que tenham um IPN" #: src/tables/part/PartTable.tsx:210 msgid "Has Stock" -msgstr "" +msgstr "Possui estoque" #: src/tables/part/PartTable.tsx:211 msgid "Filter by parts which have stock" -msgstr "" +msgstr "Mostrar peças que têm estoque" #: src/tables/part/PartTable.tsx:217 msgid "Filter by parts which have low stock" -msgstr "" +msgstr "Filtrar po peças que têm estoque baixo" #: src/tables/part/PartTable.tsx:222 msgid "Purchaseable" -msgstr "" +msgstr "Adquirível" #: src/tables/part/PartTable.tsx:223 msgid "Filter by parts which are purchaseable" -msgstr "" +msgstr "Filtrar por peças que são adquiríveis" #: src/tables/part/PartTable.tsx:228 msgid "Salable" -msgstr "" +msgstr "Vendível" #: src/tables/part/PartTable.tsx:229 msgid "Filter by parts which are salable" -msgstr "" +msgstr "Filtrar por peças que são vendíveis" #: src/tables/part/PartTable.tsx:235 msgid "Filter by parts which are virtual" -msgstr "" +msgstr "Filtrar por peças que são virtuais" #: src/tables/part/PartTable.tsx:239 msgid "Not Virtual" -msgstr "" +msgstr "Não é Virtual" #: src/tables/part/PartTestTemplateTable.tsx:52 msgid "Results" -msgstr "" +msgstr "Resultados" #: src/tables/part/PartTestTemplateTable.tsx:54 msgid "No Results" -msgstr "" - -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 -msgid "Required" -msgstr "" - -#: src/tables/part/PartTestTemplateTable.tsx:80 -msgid "Show required tests" -msgstr "" +msgstr "Sem Resultados" #: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 +msgid "Required" +msgstr "Obrigatório" + +#: src/tables/part/PartTestTemplateTable.tsx:85 +msgid "Show required tests" +msgstr "Exibir testes obrigatórios" + +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" -msgstr "" - -#: src/tables/part/PartTestTemplateTable.tsx:85 -msgid "Show enabled tests" -msgstr "" - -#: src/tables/part/PartTestTemplateTable.tsx:89 -msgid "Requires Value" -msgstr "" +msgstr "Habilitado" #: src/tables/part/PartTestTemplateTable.tsx:90 -msgid "Show tests that require a value" -msgstr "" +msgid "Show enabled tests" +msgstr "Exibir testes habilitados" #: src/tables/part/PartTestTemplateTable.tsx:94 -msgid "Requires Attachment" -msgstr "" +msgid "Requires Value" +msgstr "Valor obrigatório" #: src/tables/part/PartTestTemplateTable.tsx:95 -msgid "Show tests that require an attachment" -msgstr "" +msgid "Show tests that require a value" +msgstr "Mostrar testes que requerem um valor" #: src/tables/part/PartTestTemplateTable.tsx:99 -msgid "Include Inherited" -msgstr "" +msgid "Requires Attachment" +msgstr "Anexo obrigatório" #: src/tables/part/PartTestTemplateTable.tsx:100 -msgid "Show tests from inherited templates" -msgstr "" +msgid "Show tests that require an attachment" +msgstr "Mostrar testes que requerem um anexo" #: src/tables/part/PartTestTemplateTable.tsx:104 -msgid "Has Results" -msgstr "" +msgid "Include Inherited" +msgstr "Incluir Herdados" #: src/tables/part/PartTestTemplateTable.tsx:105 +msgid "Show tests from inherited templates" +msgstr "Mostrar testes de modelos herdados" + +#: src/tables/part/PartTestTemplateTable.tsx:109 +msgid "Has Results" +msgstr "Possui Resultados" + +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" -msgstr "" +msgstr "Mostrar testes que tenham resultados gravados" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" -msgstr "" +msgstr "Adicionar Modelo de Teste" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" -msgstr "" +msgstr "Editar Modelo de Teste" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" -msgstr "" +msgstr "Excluir Modelo de Teste" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" -msgstr "" +msgstr "Esta acção não pode ser revertida" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" -msgstr "" +msgstr "Quaisquer resultados de testes associados a este modelo serão excluídos" #: src/tables/part/PartThumbTable.tsx:203 msgid "Select" @@ -5795,47 +5855,47 @@ msgstr "Selecionar" #: src/tables/part/PartVariantTable.tsx:16 msgid "Show active variants" -msgstr "" +msgstr "Mostrar variantes ativas" #: src/tables/part/PartVariantTable.tsx:20 msgid "Template" -msgstr "" +msgstr "Modelo" #: src/tables/part/PartVariantTable.tsx:21 msgid "Show template variants" -msgstr "" +msgstr "Mostrar variantes do modelo" #: src/tables/part/PartVariantTable.tsx:26 msgid "Show virtual variants" -msgstr "" +msgstr "Mostrar variantes virtuais" #: src/tables/part/PartVariantTable.tsx:31 msgid "Show trackable variants" -msgstr "" +msgstr "Mostrar variantes rastreáveis" #: src/tables/part/RelatedPartTable.tsx:84 msgid "Add Related Part" -msgstr "" +msgstr "Adicionar Peça Relacionada" #: src/tables/part/RelatedPartTable.tsx:99 msgid "Delete Related Part" -msgstr "" +msgstr "Excluir Peça Relacionada" #: src/tables/part/RelatedPartTable.tsx:106 msgid "Add related part" -msgstr "" +msgstr "Adicionar peça relacionada" #: src/tables/plugin/PluginErrorTable.tsx:29 msgid "Stage" -msgstr "" +msgstr "Etapa" #: src/tables/plugin/PluginListTable.tsx:95 msgid "Plugin with key {pluginKey} not found" -msgstr "" +msgstr "Extensão com a chave {pluginKey} não encontrado" #: src/tables/plugin/PluginListTable.tsx:97 msgid "An error occurred while fetching plugin details" -msgstr "" +msgstr "Ocorreu um erro ao obter detalhes da extensão" #: src/tables/plugin/PluginListTable.tsx:113 #~ msgid "Plugin with id {id} not found" @@ -5843,11 +5903,11 @@ msgstr "" #: src/tables/plugin/PluginListTable.tsx:122 msgid "Plugin information" -msgstr "" +msgstr "Informações da extensão" #: src/tables/plugin/PluginListTable.tsx:134 msgid "Author" -msgstr "" +msgstr "Autor" #: src/tables/plugin/PluginListTable.tsx:134 #~ msgid "Plugin Actions" @@ -5865,67 +5925,67 @@ msgstr "" #: src/tables/plugin/PluginListTable.tsx:154 msgid "Plugin is not active" -msgstr "" +msgstr "A Extensão não está ativa" #: src/tables/plugin/PluginListTable.tsx:163 msgid "Package information" -msgstr "" +msgstr "Informações do pacote" #: src/tables/plugin/PluginListTable.tsx:169 msgid "Package Name" -msgstr "" +msgstr "Nome do Pacote" #: src/tables/plugin/PluginListTable.tsx:175 msgid "Installation Path" -msgstr "" +msgstr "Caminho de Instalação" #: src/tables/plugin/PluginListTable.tsx:185 msgid "Package" -msgstr "" +msgstr "Pacote" #: src/tables/plugin/PluginListTable.tsx:197 msgid "Plugin settings" -msgstr "" +msgstr "Definições da Extensão" #: src/tables/plugin/PluginListTable.tsx:214 msgid "Plugin is active" -msgstr "" +msgstr "A Extensão está ativa" #: src/tables/plugin/PluginListTable.tsx:220 msgid "Plugin is inactive" -msgstr "" +msgstr "A Extensão não está ativa" #: src/tables/plugin/PluginListTable.tsx:227 msgid "Plugin is not installed" -msgstr "" +msgstr "Extensão não está instalada" #: src/tables/plugin/PluginListTable.tsx:253 msgid "Plugin" -msgstr "" +msgstr "Extensão" #: src/tables/plugin/PluginListTable.tsx:287 msgid "Description not available" -msgstr "" +msgstr "Descrição não está disponível" #: src/tables/plugin/PluginListTable.tsx:319 msgid "Confirm plugin activation" -msgstr "" +msgstr "Confirmar a ativação da extensão" #: src/tables/plugin/PluginListTable.tsx:320 msgid "Confirm plugin deactivation" -msgstr "" +msgstr "Confirmar desativação da extensão" #: src/tables/plugin/PluginListTable.tsx:325 msgid "The selected plugin will be activated" -msgstr "" +msgstr "A extensão selecionada será ativada" #: src/tables/plugin/PluginListTable.tsx:326 msgid "The selected plugin will be deactivated" -msgstr "" +msgstr "A extensão selecionada será desativada" #: src/tables/plugin/PluginListTable.tsx:334 msgid "Activate Plugin" -msgstr "" +msgstr "Ativar Extensão" #: src/tables/plugin/PluginListTable.tsx:338 #~ msgid "Deactivate Plugin" @@ -5941,7 +6001,7 @@ msgstr "" #: src/tables/plugin/PluginListTable.tsx:362 msgid "Deactivate" -msgstr "" +msgstr "Desativar" #: src/tables/plugin/PluginListTable.tsx:366 #~ msgid "Confirm" @@ -5949,7 +6009,7 @@ msgstr "" #: src/tables/plugin/PluginListTable.tsx:373 msgid "Activate" -msgstr "" +msgstr "Ativar" #: src/tables/plugin/PluginListTable.tsx:376 #~ msgid "Activating plugin" @@ -5977,76 +6037,76 @@ msgstr "" #: src/tables/plugin/PluginListTable.tsx:406 msgid "Uninstall" -msgstr "" +msgstr "Desinstalar" #: src/tables/plugin/PluginListTable.tsx:438 msgid "Install plugin" -msgstr "" +msgstr "Instalar extensão" #: src/tables/plugin/PluginListTable.tsx:451 msgid "Install" -msgstr "" +msgstr "Instalar" #: src/tables/plugin/PluginListTable.tsx:452 msgid "Plugin installed successfully" -msgstr "" +msgstr "A extensão foi instalada com sucesso." #: src/tables/plugin/PluginListTable.tsx:457 msgid "Uninstall Plugin" -msgstr "" +msgstr "Desintalar extensão" #: src/tables/plugin/PluginListTable.tsx:469 msgid "Confirm plugin uninstall" -msgstr "" +msgstr "Confirmar instalação da extensão" #: src/tables/plugin/PluginListTable.tsx:472 msgid "The selected plugin will be uninstalled." -msgstr "" +msgstr "A extensão selecionada será desinstalada." #: src/tables/plugin/PluginListTable.tsx:473 msgid "This action cannot be undone." -msgstr "" +msgstr "Esta ação não pode ser desfeita." #: src/tables/plugin/PluginListTable.tsx:477 msgid "Plugin uninstalled successfully" -msgstr "" +msgstr "A extensão foi desinstalada com sucesso" #: src/tables/plugin/PluginListTable.tsx:484 msgid "Delete Plugin" -msgstr "" +msgstr "Excluir Extensão" #: src/tables/plugin/PluginListTable.tsx:485 msgid "Deleting this plugin configuration will remove all associated settings and data. Are you sure you want to delete this plugin?" -msgstr "" +msgstr "Ao excluir esta extensão, todas as configurações e informações da extensão serão removidas. Tem a certeza que deseja excluir está extensão?" #: src/tables/plugin/PluginListTable.tsx:498 msgid "Plugins reloaded" -msgstr "" +msgstr "Extensões recarregadas" #: src/tables/plugin/PluginListTable.tsx:499 msgid "Plugins were reloaded successfully" -msgstr "" +msgstr "As Extensões foram recarregadas com sucesso" #: src/tables/plugin/PluginListTable.tsx:515 msgid "Reload Plugins" -msgstr "" +msgstr "Recarregar extensões" #: src/tables/plugin/PluginListTable.tsx:524 msgid "Install Plugin" -msgstr "" +msgstr "Instalar Extensão" #: src/tables/plugin/PluginListTable.tsx:544 msgid "Plugin Detail" -msgstr "" +msgstr "Detalhe da Extensão" #: src/tables/plugin/PluginListTable.tsx:573 msgid "Sample" -msgstr "" +msgstr "Amostra" #: src/tables/plugin/PluginListTable.tsx:578 #: src/tables/stock/StockItemTable.tsx:305 msgid "Installed" -msgstr "" +msgstr "Instalado" #: src/tables/plugin/PluginListTable.tsx:615 #~ msgid "Plugin detail" @@ -6055,7 +6115,7 @@ msgstr "" #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:59 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:108 msgid "Add Parameter" -msgstr "" +msgstr "Adicionar Parâmetro" #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:60 #~ msgid "Parameter updated" @@ -6063,7 +6123,7 @@ msgstr "" #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:70 msgid "Edit Parameter" -msgstr "" +msgstr "Editar Parâmetro" #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:73 #~ msgid "Parameter deleted" @@ -6075,7 +6135,7 @@ msgstr "" #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:78 msgid "Delete Parameter" -msgstr "" +msgstr "Excluir Parâmetro" #: src/tables/purchasing/ManufacturerPartTable.tsx:63 #~ msgid "Create Manufacturer Part" @@ -6083,7 +6143,7 @@ msgstr "" #: src/tables/purchasing/ManufacturerPartTable.tsx:92 msgid "Delete Manufacturer Part" -msgstr "" +msgstr "Excluir Peça do Fabricante" #: src/tables/purchasing/ManufacturerPartTable.tsx:100 #~ msgid "Manufacturer part updated" @@ -6099,83 +6159,83 @@ msgstr "" #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:86 msgid "Part Description" -msgstr "" +msgstr "Descrição da Peça" #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:113 msgid "Total Quantity" -msgstr "" +msgstr "Quantidade Total" #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:129 msgid "Received" -msgstr "" +msgstr "Recebido" #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:148 msgid "Supplier Code" -msgstr "" +msgstr "Código do Fornecedor" #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:155 msgid "Supplier Link" -msgstr "" +msgstr "Ligação do Fornecedor" #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:162 msgid "Manufacturer Code" -msgstr "" +msgstr "Código do Fabricante" #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:176 msgid "Destination" -msgstr "" +msgstr "Destino" #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:198 msgid "Add Line Item" -msgstr "" +msgstr "Adicionar item de linha" #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:215 msgid "Edit Line Item" -msgstr "" +msgstr "Editar item de linha" #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:223 msgid "Delete Line Item" -msgstr "" +msgstr "Excluir Item da Linha" #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:234 msgid "Receive line item" -msgstr "" +msgstr "Receber item de linha" #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:272 msgid "Add line item" -msgstr "" +msgstr "Adicionar item de linha" #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:282 msgid "Receive items" -msgstr "" +msgstr "Receber itens" #: src/tables/purchasing/SupplierPartTable.tsx:93 msgid "MPN" -msgstr "" +msgstr "MPN" #: src/tables/purchasing/SupplierPartTable.tsx:122 msgid "Base units" -msgstr "" +msgstr "Unidade Base" #: src/tables/purchasing/SupplierPartTable.tsx:170 msgid "Supplier part created" -msgstr "" +msgstr "Fornecedor da Peça criado" #: src/tables/purchasing/SupplierPartTable.tsx:176 msgid "Add supplier part" -msgstr "" +msgstr "Adicionar Fornecedor da Peça" #: src/tables/purchasing/SupplierPartTable.tsx:188 msgid "Show active supplier parts" -msgstr "" +msgstr "Mostrar peças do fornecedor ativas" #: src/tables/purchasing/SupplierPartTable.tsx:192 msgid "Active Part" -msgstr "" +msgstr "Peça Ativa" #: src/tables/purchasing/SupplierPartTable.tsx:193 msgid "Show active internal parts" -msgstr "" +msgstr "Mostrar partes internas ativas" #: src/tables/purchasing/SupplierPartTable.tsx:193 #~ msgid "Supplier part updated" @@ -6183,11 +6243,11 @@ msgstr "" #: src/tables/purchasing/SupplierPartTable.tsx:197 msgid "Active Supplier" -msgstr "" +msgstr "Fornecedor Ativo" #: src/tables/purchasing/SupplierPartTable.tsx:198 msgid "Show active suppliers" -msgstr "" +msgstr "Mostrar Fornecedores ativos" #: src/tables/purchasing/SupplierPartTable.tsx:205 #~ msgid "Supplier part deleted" @@ -6199,51 +6259,51 @@ msgstr "" #: src/tables/purchasing/SupplierPartTable.tsx:218 msgid "Delete Supplier Part" -msgstr "" +msgstr "Excluir Fornecedor da Peça" #: src/tables/settings/CurrencyTable.tsx:28 msgid "Rate" -msgstr "" +msgstr "Taxa" #: src/tables/settings/CurrencyTable.tsx:40 msgid "Exchange rates updated" -msgstr "" +msgstr "Taxas de câmbio atualizadas" #: src/tables/settings/CurrencyTable.tsx:46 msgid "Exchange rate update error" -msgstr "" +msgstr "Ocorreu um erro ao atualizar as Taxas de câmbio" #: src/tables/settings/CurrencyTable.tsx:57 msgid "Refresh currency exchange rates" -msgstr "" +msgstr "Atualizar taxas de câmbio" #: src/tables/settings/CustomUnitsTable.tsx:50 msgid "Add Custom Unit" -msgstr "" +msgstr "Adicionar Unidade Personalizada" #: src/tables/settings/CustomUnitsTable.tsx:60 msgid "Edit Custom Unit" -msgstr "" +msgstr "Editar Unidade Personalizada" #: src/tables/settings/CustomUnitsTable.tsx:68 msgid "Delete Custom Unit" -msgstr "" +msgstr "Excluir Unidade Personalizada" #: src/tables/settings/CustomUnitsTable.tsx:100 msgid "Add custom unit" -msgstr "" +msgstr "Adicionar unidade personalizada" #: src/tables/settings/ErrorTable.tsx:29 msgid "When" -msgstr "" +msgstr "Quando" #: src/tables/settings/ErrorTable.tsx:39 msgid "Error Information" -msgstr "" +msgstr "Informações do erro" #: src/tables/settings/ErrorTable.tsx:51 msgid "Delete Error Report" -msgstr "" +msgstr "Excluir Relatório de Erro" #: src/tables/settings/ErrorTable.tsx:51 #~ msgid "Delete error report" @@ -6251,109 +6311,109 @@ msgstr "" #: src/tables/settings/ErrorTable.tsx:53 msgid "Are you sure you want to delete this error report?" -msgstr "" +msgstr "Tem a certeza de que pretende excluir este relatório de erro?" #: src/tables/settings/ErrorTable.tsx:55 msgid "Error report deleted" -msgstr "" +msgstr "Relatório de erro excluído" #: src/tables/settings/ErrorTable.tsx:77 #: src/tables/settings/FailedTasksTable.tsx:57 msgid "Error Details" -msgstr "" +msgstr "Detalhes do Erro" #: src/tables/settings/FailedTasksTable.tsx:24 #: src/tables/settings/PendingTasksTable.tsx:17 #: src/tables/settings/ScheduledTasksTable.tsx:19 msgid "Task" -msgstr "" +msgstr "Tarefa" #: src/tables/settings/FailedTasksTable.tsx:30 #: src/tables/settings/PendingTasksTable.tsx:22 msgid "Task ID" -msgstr "" +msgstr "ID da Tarefa" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" -msgstr "" +msgstr "Iniciado" #: src/tables/settings/FailedTasksTable.tsx:40 msgid "Stopped" -msgstr "" +msgstr "Parado" #: src/tables/settings/FailedTasksTable.tsx:46 msgid "Attempts" -msgstr "" +msgstr "Tentativas" #: src/tables/settings/GroupTable.tsx:51 msgid "Group with id {id} not found" -msgstr "" +msgstr "Grupo com o ID {id} não encontrado" #: src/tables/settings/GroupTable.tsx:53 msgid "An error occurred while fetching group details" -msgstr "" +msgstr "Ocorreu um erro ao obter detalhes do grupo" #: src/tables/settings/GroupTable.tsx:77 msgid "Permission set" -msgstr "" +msgstr "Permissão definida" #: src/tables/settings/GroupTable.tsx:126 msgid "Delete group" -msgstr "" +msgstr "Excluir grupo" #: src/tables/settings/GroupTable.tsx:127 msgid "Group deleted" -msgstr "" +msgstr "Grupo excluído" #: src/tables/settings/GroupTable.tsx:129 msgid "Are you sure you want to delete this group?" -msgstr "" +msgstr "Tem a certeza de que pretende excluir este grupo?" #: src/tables/settings/GroupTable.tsx:134 #: src/tables/settings/GroupTable.tsx:146 msgid "Add group" -msgstr "" +msgstr "Adicionar grupo" #: src/tables/settings/GroupTable.tsx:158 msgid "Edit group" -msgstr "" +msgstr "Editar grupo" #: src/tables/settings/PendingTasksTable.tsx:36 msgid "Arguments" -msgstr "" +msgstr "Argumentos" #: src/tables/settings/ProjectCodeTable.tsx:42 msgid "Add Project Code" -msgstr "" +msgstr "Adicionar Código do Projeto" #: src/tables/settings/ProjectCodeTable.tsx:54 msgid "Edit Project Code" -msgstr "" +msgstr "Editar Código do Projeto" #: src/tables/settings/ProjectCodeTable.tsx:62 msgid "Delete Project Code" -msgstr "" +msgstr "Excluir Código do Projeto" #: src/tables/settings/ProjectCodeTable.tsx:94 msgid "Add project code" -msgstr "" +msgstr "Adicionar código do projeto" #: src/tables/settings/ScheduledTasksTable.tsx:25 msgid "Last Run" -msgstr "" +msgstr "Última Execução" #: src/tables/settings/ScheduledTasksTable.tsx:47 msgid "Next Run" -msgstr "" +msgstr "Próxima Execução" #: src/tables/settings/TemplateTable.tsx:82 msgid "Template not found" -msgstr "" +msgstr "Modelo não encontrado" #: src/tables/settings/TemplateTable.tsx:84 msgid "An error occurred while fetching template details" -msgstr "" +msgstr "Ocorreu um erro ao obter detalhes do modelo" #: src/tables/settings/TemplateTable.tsx:120 #~ msgid "{templateTypeTranslation} with id {id} not found" @@ -6369,24 +6429,24 @@ msgstr "" #: src/tables/settings/TemplateTable.tsx:170 msgid "Modify" -msgstr "" +msgstr "Modificar" #: src/tables/settings/TemplateTable.tsx:171 msgid "Modify template file" -msgstr "" +msgstr "Modificar ficheiro do modelo" #: src/tables/settings/TemplateTable.tsx:222 #: src/tables/settings/TemplateTable.tsx:289 msgid "Edit Template" -msgstr "" +msgstr "Editar Modelo" #: src/tables/settings/TemplateTable.tsx:230 msgid "Delete template" -msgstr "" +msgstr "Eliminar modelo" #: src/tables/settings/TemplateTable.tsx:236 msgid "Add Template" -msgstr "" +msgstr "Adicionar Modelo" #: src/tables/settings/TemplateTable.tsx:243 #~ msgid "Add new" @@ -6398,434 +6458,433 @@ msgstr "" #: src/tables/settings/TemplateTable.tsx:249 msgid "Add template" -msgstr "" +msgstr "Adicionar modelo" #: src/tables/settings/TemplateTable.tsx:271 msgid "Filter by enabled status" -msgstr "" +msgstr "Filtrar por estado ativo" #: src/tables/settings/TemplateTable.tsx:276 msgid "Model Type" -msgstr "" +msgstr "Tipo de Modelo" #: src/tables/settings/TemplateTable.tsx:277 msgid "Filter by target model type" -msgstr "" +msgstr "Filtrar pelo destino do tipo de modelo" #: src/tables/settings/UserTable.tsx:79 msgid "User with id {id} not found" -msgstr "" +msgstr "Usuário com ID {id} não encontrado" #: src/tables/settings/UserTable.tsx:81 msgid "An error occurred while fetching user details" -msgstr "" +msgstr "Ocorreu um erro ao obter detalhes do usuário" #: src/tables/settings/UserTable.tsx:99 msgid "Is Active" -msgstr "" +msgstr "Está Ativo" #: src/tables/settings/UserTable.tsx:100 msgid "Designates whether this user should be treated as active. Unselect this instead of deleting accounts." -msgstr "" +msgstr "Designa se este usuário deve ser tratado como ativo. Desmarque isso em vez de excluir contas." #: src/tables/settings/UserTable.tsx:104 msgid "Is Staff" -msgstr "" +msgstr "É Funcionário" #: src/tables/settings/UserTable.tsx:105 msgid "Designates whether the user can log into the django admin site." -msgstr "" +msgstr "Designa se o usuário pode fazer login no site administrativo DJANGO." #: src/tables/settings/UserTable.tsx:109 msgid "Is Superuser" -msgstr "" +msgstr "É um Super-utilizador" #: src/tables/settings/UserTable.tsx:110 msgid "Designates that this user has all permissions without explicitly assigning them." -msgstr "" +msgstr "Indica que este usuário tem todas as permissões sem atribuí-las explicitamente." #: src/tables/settings/UserTable.tsx:120 msgid "You cannot edit the rights for the currently logged-in user." -msgstr "" +msgstr "Você não pode editar os direitos para o usuário conectado no momento." #: src/tables/settings/UserTable.tsx:151 msgid "No groups" -msgstr "" +msgstr "Nenhum grupo" #: src/tables/settings/UserTable.tsx:231 msgid "Delete user" -msgstr "" +msgstr "Excluir utilizador" #: src/tables/settings/UserTable.tsx:232 msgid "User deleted" -msgstr "" +msgstr "Utilizador excluido" #: src/tables/settings/UserTable.tsx:234 msgid "Are you sure you want to delete this user?" -msgstr "" +msgstr "Tem a certeza de que quer excluir este utilizador?" #: src/tables/settings/UserTable.tsx:240 #: src/tables/settings/UserTable.tsx:258 msgid "Add user" -msgstr "" +msgstr "Adicionar utilizador" #: src/tables/settings/UserTable.tsx:248 msgid "Added user" -msgstr "" +msgstr "Usuário adicionado" #: src/tables/settings/UserTable.tsx:270 msgid "Edit user" -msgstr "" +msgstr "Editar usuário" #: src/tables/stock/LocationTypesTable.tsx:36 #: src/tables/stock/LocationTypesTable.tsx:105 msgid "Add Location Type" -msgstr "" +msgstr "Adicionar Tipo de Localização" #: src/tables/stock/LocationTypesTable.tsx:44 msgid "Edit Location Type" -msgstr "" +msgstr "Editar Tipo de Localização" #: src/tables/stock/LocationTypesTable.tsx:52 msgid "Delete Location Type" -msgstr "" +msgstr "Apagar Tipo de Localização" #: src/tables/stock/LocationTypesTable.tsx:69 msgid "Icon" -msgstr "" +msgstr "Ícone" #: src/tables/stock/StockItemTable.tsx:90 msgid "This stock item is in production" -msgstr "" +msgstr "Este item de estoque está em produção" #: src/tables/stock/StockItemTable.tsx:99 msgid "This stock item has been assigned to a sales order" -msgstr "" +msgstr "Este item de estoque foi reservado para uma ordem de venda" #: src/tables/stock/StockItemTable.tsx:108 msgid "This stock item has been assigned to a customer" -msgstr "" +msgstr "Este item em estoque foi reservado para um cliente" #: src/tables/stock/StockItemTable.tsx:117 msgid "This stock item is installed in another stock item" -msgstr "" +msgstr "Este item em estoque está instalado em outro item de estoque" #: src/tables/stock/StockItemTable.tsx:126 msgid "This stock item has been consumed by a build order" -msgstr "" +msgstr "Este item de estoque foi consumido por uma ordem de produção" #: src/tables/stock/StockItemTable.tsx:135 msgid "This stock item has expired" -msgstr "" +msgstr "Este item de estoque expirou" #: src/tables/stock/StockItemTable.tsx:139 msgid "This stock item is stale" -msgstr "" +msgstr "Este item de estoque está obsoleto" #: src/tables/stock/StockItemTable.tsx:150 msgid "This stock item is fully allocated" -msgstr "" +msgstr "Este item de estoque está totalmente alocado" #: src/tables/stock/StockItemTable.tsx:157 msgid "This stock item is partially allocated" -msgstr "" +msgstr "Este item de estoque está parcialmente alocado" #: src/tables/stock/StockItemTable.tsx:185 msgid "This stock item has been depleted" -msgstr "" +msgstr "Este item de estoque está esgotado" #: src/tables/stock/StockItemTable.tsx:255 msgid "Show stock for active parts" -msgstr "" +msgstr "Mostrar estoque de peças ativas" #: src/tables/stock/StockItemTable.tsx:260 msgid "Filter by stock status" -msgstr "" +msgstr "Filtrar por estado do estoque" #: src/tables/stock/StockItemTable.tsx:266 msgid "Show stock for assmebled parts" -msgstr "" +msgstr "Mostrar estoque de peças montadas" #: src/tables/stock/StockItemTable.tsx:271 msgid "Show items which have been allocated" -msgstr "" +msgstr "Mostrar itens que foram alocados" #: src/tables/stock/StockItemTable.tsx:276 msgid "Show items which are available" -msgstr "" +msgstr "Mostrar itens que estão disponíveis" #: src/tables/stock/StockItemTable.tsx:280 #: src/tables/stock/StockLocationTable.tsx:33 msgid "Include Sublocations" -msgstr "" +msgstr "Incluir sublocações" #: src/tables/stock/StockItemTable.tsx:281 msgid "Include stock in sublocations" -msgstr "" +msgstr "Incluir estoque em sublocalizações" #: src/tables/stock/StockItemTable.tsx:285 msgid "Depleted" -msgstr "" +msgstr "Esgotado" #: src/tables/stock/StockItemTable.tsx:286 msgid "Show depleted stock items" -msgstr "" +msgstr "Mostrar itens de estoque esgotados" #: src/tables/stock/StockItemTable.tsx:291 msgid "Show items which are in stock" -msgstr "" +msgstr "Mostrar itens que estão disponíveis em estoque" #: src/tables/stock/StockItemTable.tsx:296 msgid "Show items which are in production" -msgstr "" +msgstr "Mostrar itens que estão em produção" #: src/tables/stock/StockItemTable.tsx:301 msgid "Include stock items for variant parts" -msgstr "" +msgstr "Incluir itens de estoque com peças variantes" #: src/tables/stock/StockItemTable.tsx:306 msgid "Show stock items which are installed in other items" -msgstr "" +msgstr "Mostrar itens de estoque que estão instalados em outros itens" #: src/tables/stock/StockItemTable.tsx:310 msgid "Sent to Customer" -msgstr "" +msgstr "Enviar para o Cliente" #: src/tables/stock/StockItemTable.tsx:311 msgid "Show items which have been sent to a customer" -msgstr "" +msgstr "Mostrar itens que foram enviados para um cliente" #: src/tables/stock/StockItemTable.tsx:315 msgid "Is Serialized" -msgstr "" +msgstr "É Serializado" #: src/tables/stock/StockItemTable.tsx:316 msgid "Show items which have a serial number" -msgstr "" +msgstr "Mostrar itens que têm um número de série" #: src/tables/stock/StockItemTable.tsx:323 msgid "Has Batch Code" -msgstr "" +msgstr "Tem Código de Lote" #: src/tables/stock/StockItemTable.tsx:324 msgid "Show items which have a batch code" -msgstr "" +msgstr "Mostrar itens que tenham um código de lote" #: src/tables/stock/StockItemTable.tsx:330 msgid "Show tracked items" -msgstr "" +msgstr "Mostrar itens rastreáveis" #: src/tables/stock/StockItemTable.tsx:334 msgid "Has Purchase Price" -msgstr "" +msgstr "Possui Preço de Compra" #: src/tables/stock/StockItemTable.tsx:335 msgid "Show items which have a purchase price" -msgstr "" +msgstr "Mostrar itens que possuem um preço de compra" #: src/tables/stock/StockItemTable.tsx:343 msgid "External Location" -msgstr "" +msgstr "Localização Externa" #: src/tables/stock/StockItemTable.tsx:344 msgid "Show items in an external location" -msgstr "" +msgstr "Mostrar itens em uma localização externa" #: src/tables/stock/StockItemTable.tsx:416 msgid "Add a new stock item" -msgstr "" +msgstr "Adicionar um novo item de estoque" #: src/tables/stock/StockItemTable.tsx:425 msgid "Remove some quantity from a stock item" -msgstr "" +msgstr "Remover alguma quantidade de um item de estoque" #: src/tables/stock/StockItemTable.tsx:447 msgid "Move Stock items to new locations" -msgstr "" +msgstr "Mover Itens de Estoque para novos locais" #: src/tables/stock/StockItemTable.tsx:454 msgid "Change stock status" -msgstr "" +msgstr "Mudar estado do Estoque" #: src/tables/stock/StockItemTable.tsx:456 msgid "Change the status of stock items" -msgstr "" +msgstr "Alterar o estado dos itens de estoque" #: src/tables/stock/StockItemTable.tsx:463 msgid "Merge stock" -msgstr "" +msgstr "Mesclar estoque" #: src/tables/stock/StockItemTable.tsx:465 msgid "Merge stock items" -msgstr "" +msgstr "Mesclar itens de estoque" #: src/tables/stock/StockItemTable.tsx:472 msgid "Order stock" -msgstr "" +msgstr "Encomendar Estoque" #: src/tables/stock/StockItemTable.tsx:474 #: src/tables/stock/StockItemTable.tsx:480 msgid "Order new stock" -msgstr "" +msgstr "Encomendar novo Estoque" #: src/tables/stock/StockItemTable.tsx:478 msgid "Assign to customer" -msgstr "" +msgstr "Atribuir ao cliente" #: src/tables/stock/StockItemTable.tsx:487 msgid "Delete stock" -msgstr "" +msgstr "Excluir estoque" #: src/tables/stock/StockItemTable.tsx:489 msgid "Delete stock items" -msgstr "" +msgstr "Excluir itens de estoque" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" -msgstr "" +msgstr "Teste" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" -msgstr "" +msgstr "Resultado do teste para o item de estoque instalado" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" -msgstr "" +msgstr "Resultado" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" -msgstr "" +msgstr "Sem Resultado" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" -msgstr "" +msgstr "Anexo" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" -msgstr "" +msgstr "Estação de teste" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" -msgstr "" +msgstr "Concluído" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" -msgstr "" +msgstr "Adicionar Resultado de Teste" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" -msgstr "" +msgstr "Resultado do teste adicionado" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" -msgstr "" +msgstr "Editar Resultado do Teste" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" -msgstr "" +msgstr "Resultado do teste atualizado" + +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 +msgid "Delete Test Result" +msgstr "Excluir Resultado do Teste" + +#: src/tables/stock/StockItemTestResultTable.tsx:273 +msgid "Test result deleted" +msgstr "Resultado do teste excluído" #: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 -msgid "Delete Test Result" -msgstr "" - -#: src/tables/stock/StockItemTestResultTable.tsx:289 -msgid "Test result deleted" -msgstr "" - -#: src/tables/stock/StockItemTestResultTable.tsx:303 msgid "Test Passed" -msgstr "" +msgstr "Teste Aprovado" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" -msgstr "" +msgstr "O resultado do teste foi gravado" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" -msgstr "" +msgstr "Falha ao gravar resultado do teste" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" -msgstr "" +msgstr "Passou no teste" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" -msgstr "" +msgstr "Mostrar resultados para testes necessários" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" -msgstr "" +msgstr "Incluir Instalados" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" -msgstr "" +msgstr "Mostrar resultados para itens de estoque instalados" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" -msgstr "" +msgstr "Aprovado" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" -msgstr "" +msgstr "Mostrar apenas testes aprovados" #: src/tables/stock/StockLocationTable.tsx:34 msgid "Include sublocations in results" -msgstr "" +msgstr "Incluir sublocações nos resultados" #: src/tables/stock/StockLocationTable.tsx:38 msgid "structural" -msgstr "" +msgstr "estrutural" #: src/tables/stock/StockLocationTable.tsx:39 msgid "Show structural locations" -msgstr "" +msgstr "Mostrar localizações estruturais" #: src/tables/stock/StockLocationTable.tsx:43 msgid "external" -msgstr "" +msgstr "externo" #: src/tables/stock/StockLocationTable.tsx:44 msgid "Show external locations" -msgstr "" +msgstr "Mostrar localizações externas" #: src/tables/stock/StockLocationTable.tsx:48 msgid "Has location type" -msgstr "" +msgstr "Possui tipo de localização" #: src/tables/stock/StockLocationTable.tsx:85 #: src/tables/stock/StockLocationTable.tsx:110 msgid "Add Stock Location" -msgstr "" +msgstr "Adicionar Local de Estoque" #: src/tables/stock/StockTrackingTable.tsx:64 msgid "Added" -msgstr "" +msgstr "Adicionado" #: src/tables/stock/StockTrackingTable.tsx:69 msgid "Removed" -msgstr "" +msgstr "Excluido" #: src/tables/stock/StockTrackingTable.tsx:198 msgid "No user information" -msgstr "" +msgstr "Sem informações de usuário" #: src/views/MobileAppView.tsx:22 msgid "Mobile viewport detected" -msgstr "" +msgstr "Visualização móvel detectada" #: src/views/MobileAppView.tsx:25 msgid "Platform UI is optimized for Tablets and Desktops, you can use the official app for a mobile experience." -msgstr "" +msgstr "A interface de utilizador da plataforma é otimizada para Tablets e Desktops, mas poderá usar o aplicativo oficial para uma experiência melhor no telemóvel." #: src/views/MobileAppView.tsx:31 msgid "Read the docs" -msgstr "" +msgstr "Ler os documentos" #: src/views/MobileAppView.tsx:35 msgid "Ignore and continue to Desktop view" -msgstr "" - +msgstr "Ignorar e continuar para a visualização de Desktop" diff --git a/src/frontend/src/locales/ro/messages.po b/src/frontend/src/locales/ro/messages.po new file mode 100644 index 0000000000..17c3e75607 --- /dev/null +++ b/src/frontend/src/locales/ro/messages.po @@ -0,0 +1,6886 @@ +msgid "" +msgstr "" +"POT-Creation-Date: 2023-06-09 22:10+0200\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: @lingui/cli\n" +"Language: ro\n" +"Project-Id-Version: inventree\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-06-19 04:50\n" +"Last-Translator: \n" +"Language-Team: Romanian\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" +"X-Crowdin-Project: inventree\n" +"X-Crowdin-Project-ID: 452300\n" +"X-Crowdin-Language: ro\n" +"X-Crowdin-File: /[inventree.InvenTree] l10/src/frontend/src/locales/en/messages.po\n" +"X-Crowdin-File-ID: 205\n" + +#: src/components/Boundary.tsx:12 +msgid "Error rendering component" +msgstr "" + +#: src/components/Boundary.tsx:14 +msgid "An error occurred while rendering this component. Refer to the console for more information." +msgstr "" + +#: src/components/DashboardItemProxy.tsx:34 +msgid "Title" +msgstr "" + +#: src/components/buttons/AdminButton.tsx:83 +msgid "Open in admin interface" +msgstr "" + +#: src/components/buttons/CopyButton.tsx:18 +msgid "Copy to clipboard" +msgstr "" + +#: src/components/buttons/PrintingActions.tsx:95 +msgid "Print Label" +msgstr "" + +#: src/components/buttons/PrintingActions.tsx:101 +msgid "Label printing completed successfully" +msgstr "" + +#: src/components/buttons/PrintingActions.tsx:107 +#: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 +#: src/components/forms/ApiForm.tsx:506 +#: src/components/forms/fields/ApiFormField.tsx:295 +#: src/components/modals/LicenseModal.tsx:75 +#: src/components/nav/SearchDrawer.tsx:427 +#: src/pages/ErrorPage.tsx:12 +#: src/pages/ErrorPage.tsx:25 +#: src/pages/part/PartPricingPanel.tsx:71 +#: src/tables/InvenTreeTable.tsx:451 +#: src/tables/InvenTreeTable.tsx:531 +#: src/tables/stock/StockItemTestResultTable.tsx:294 +msgid "Error" +msgstr "" + +#: src/components/buttons/PrintingActions.tsx:108 +msgid "The label could not be generated" +msgstr "" + +#: src/components/buttons/PrintingActions.tsx:123 +msgid "Print Report" +msgstr "" + +#: src/components/buttons/PrintingActions.tsx:139 +msgid "Report printing completed successfully" +msgstr "" + +#: src/components/buttons/PrintingActions.tsx:145 +msgid "The report could not be generated" +msgstr "" + +#: src/components/buttons/PrintingActions.tsx:173 +msgid "Printing Actions" +msgstr "" + +#: src/components/buttons/PrintingActions.tsx:178 +msgid "Print Labels" +msgstr "" + +#: src/components/buttons/PrintingActions.tsx:184 +msgid "Print Reports" +msgstr "" + +#: src/components/buttons/ScanButton.tsx:15 +msgid "Scan QR code" +msgstr "" + +#: src/components/buttons/ScanButton.tsx:20 +msgid "Open QR code scanner" +msgstr "" + +#: src/components/buttons/SpotlightButton.tsx:14 +msgid "Open spotlight" +msgstr "" + +#: src/components/buttons/YesNoButton.tsx:16 +msgid "Pass" +msgstr "" + +#: src/components/buttons/YesNoButton.tsx:17 +msgid "Fail" +msgstr "" + +#: src/components/buttons/YesNoButton.tsx:32 +#: src/tables/Filter.tsx:51 +msgid "Yes" +msgstr "" + +#: src/components/buttons/YesNoButton.tsx:32 +#: src/tables/Filter.tsx:52 +msgid "No" +msgstr "" + +#: src/components/details/Details.tsx:305 +msgid "No name defined" +msgstr "" + +#: src/components/details/Details.tsx:342 +msgid "Copied" +msgstr "" + +#: src/components/details/Details.tsx:342 +msgid "Copy" +msgstr "" + +#: src/components/details/DetailsImage.tsx:65 +msgid "Remove Image" +msgstr "" + +#: src/components/details/DetailsImage.tsx:68 +msgid "Remove the associated image from this item?" +msgstr "" + +#: src/components/details/DetailsImage.tsx:71 +#: src/forms/StockForms.tsx:483 +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 +#: src/pages/stock/StockDetail.tsx:464 +msgid "Remove" +msgstr "" + +#: src/components/details/DetailsImage.tsx:71 +#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158 +#: src/components/items/ActionDropdown.tsx:229 +#: src/components/items/ActionDropdown.tsx:230 +#: src/contexts/ThemeContext.tsx:43 +#: src/functions/forms.tsx:196 +#: src/hooks/UseForm.tsx:40 +#: src/tables/FilterSelectDrawer.tsx:207 +#: src/tables/InvenTreeTable.tsx:499 +#: src/tables/build/BuildOutputTable.tsx:225 +msgid "Cancel" +msgstr "" + +#: src/components/details/DetailsImage.tsx:97 +msgid "Drag and drop to upload" +msgstr "" + +#: src/components/details/DetailsImage.tsx:100 +msgid "Click to select file(s)" +msgstr "" + +#: src/components/details/DetailsImage.tsx:224 +msgid "Clear" +msgstr "" + +#: src/components/details/DetailsImage.tsx:227 +#: src/components/forms/ApiForm.tsx:573 +#: src/contexts/ThemeContext.tsx:43 +#: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:56 +msgid "Submit" +msgstr "" + +#: src/components/details/DetailsImage.tsx:267 +msgid "Select from existing images" +msgstr "" + +#: src/components/details/DetailsImage.tsx:275 +msgid "Select Image" +msgstr "" + +#: src/components/details/DetailsImage.tsx:287 +msgid "Upload new image" +msgstr "" + +#: src/components/details/DetailsImage.tsx:294 +msgid "Upload Image" +msgstr "" + +#: src/components/details/DetailsImage.tsx:307 +msgid "Delete image" +msgstr "" + +#: src/components/details/PartIcons.tsx:28 +msgid "Part is not active" +msgstr "" + +#: src/components/details/PartIcons.tsx:34 +#: src/components/render/Plugin.tsx:17 +#: src/pages/company/CompanyDetail.tsx:313 +#: src/pages/company/SupplierPartDetail.tsx:305 +#: src/pages/part/PartDetail.tsx:691 +msgid "Inactive" +msgstr "" + +#: src/components/details/PartIcons.tsx:41 +msgid "Part is a template part (variants can be made from this part)" +msgstr "" + +#: src/components/details/PartIcons.tsx:47 +msgid "Part can be assembled from other parts" +msgstr "" + +#: src/components/details/PartIcons.tsx:53 +msgid "Part can be used in assemblies" +msgstr "" + +#: src/components/details/PartIcons.tsx:59 +msgid "Part stock is tracked by serial number" +msgstr "" + +#: src/components/details/PartIcons.tsx:65 +msgid "Part can be purchased from external suppliers" +msgstr "" + +#: src/components/details/PartIcons.tsx:71 +msgid "Part can be sold to customers" +msgstr "" + +#: src/components/details/PartIcons.tsx:76 +msgid "Part is virtual (not a physical part)" +msgstr "" + +#: src/components/details/PartIcons.tsx:82 +#: src/tables/part/PartTable.tsx:234 +#: src/tables/part/PartTable.tsx:238 +#: src/tables/part/PartVariantTable.tsx:25 +msgid "Virtual" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "" + +#: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 +msgid "Code" +msgstr "" + +#: src/components/editors/TemplateEditor/PdfPreview/PdfPreview.tsx:44 +#~ msgid "Failed to parse error response from server." +#~ msgstr "Failed to parse error response from server." + +#: src/components/editors/TemplateEditor/PdfPreview/PdfPreview.tsx:81 +msgid "Preview not available, click \"Reload Preview\"." +msgstr "" + +#: src/components/editors/TemplateEditor/PdfPreview/index.tsx:9 +msgid "PDF Preview" +msgstr "" + +#: src/components/editors/TemplateEditor/TemplateEditor.tsx:104 +msgid "Error loading template" +msgstr "" + +#: src/components/editors/TemplateEditor/TemplateEditor.tsx:116 +msgid "Error saving template" +msgstr "" + +#: src/components/editors/TemplateEditor/TemplateEditor.tsx:146 +#: src/components/editors/TemplateEditor/TemplateEditor.tsx:270 +msgid "Save & Reload Preview" +msgstr "" + +#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151 +msgid "Are you sure you want to Save & Reload the preview?" +msgstr "" + +#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151 +#~ msgid "Save & Reload preview?" +#~ msgstr "Save & Reload preview?" + +#: src/components/editors/TemplateEditor/TemplateEditor.tsx:153 +msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?" +msgstr "" + +#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157 +msgid "Save & Reload" +msgstr "" + +#: src/components/editors/TemplateEditor/TemplateEditor.tsx:189 +msgid "Preview updated" +msgstr "" + +#: src/components/editors/TemplateEditor/TemplateEditor.tsx:190 +msgid "The preview has been updated successfully." +msgstr "" + +#: src/components/editors/TemplateEditor/TemplateEditor.tsx:262 +msgid "Reload preview" +msgstr "" + +#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263 +msgid "Use the currently stored template from the server" +msgstr "" + +#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263 +#~ msgid "Save & Reload preview" +#~ msgstr "Save & Reload preview" + +#: src/components/editors/TemplateEditor/TemplateEditor.tsx:271 +msgid "Save the current template and reload the preview" +msgstr "" + +#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322 +#~ msgid "to preview" +#~ msgstr "to preview" + +#: src/components/editors/TemplateEditor/TemplateEditor.tsx:329 +msgid "Select instance to preview" +msgstr "" + +#: src/components/editors/TemplateEditor/TemplateEditor.tsx:373 +msgid "Error rendering template" +msgstr "" + +#: src/components/forms/ApiForm.tsx:149 +#: src/functions/forms.tsx:259 +msgid "Form Error" +msgstr "" + +#: src/components/forms/ApiForm.tsx:487 +#~ msgid "Form Errors Exist" +#~ msgstr "Form Errors Exist" + +#: src/components/forms/ApiForm.tsx:611 +#: src/tables/plugin/PluginListTable.tsx:388 +msgid "Update" +msgstr "" + +#: src/components/forms/ApiForm.tsx:631 +#: src/components/items/ActionDropdown.tsx:210 +#: src/functions/forms.tsx:299 +#: src/hooks/UseForm.tsx:122 +#: src/pages/Index/Scan.tsx:343 +#: src/pages/Notifications.tsx:123 +#: src/tables/InvenTreeTable.tsx:498 +#: src/tables/RowActions.tsx:71 +#: src/tables/plugin/PluginListTable.tsx:420 +msgid "Delete" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:48 +#: src/components/forms/AuthenticationForm.tsx:74 +#: src/functions/auth.tsx:83 +#~ msgid "Check your your input and try again." +#~ msgstr "Check your your input and try again." + +#: src/components/forms/AuthenticationForm.tsx:51 +msgid "Login successful" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:52 +msgid "Logged in successfully" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:52 +#~ msgid "Welcome back!" +#~ msgstr "Welcome back!" + +#: src/components/forms/AuthenticationForm.tsx:53 +#~ msgid "Login successfull" +#~ msgstr "Login successfull" + +#: src/components/forms/AuthenticationForm.tsx:58 +msgid "Login failed" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:59 +#: src/components/forms/AuthenticationForm.tsx:76 +#: src/components/forms/AuthenticationForm.tsx:211 +#: src/functions/auth.tsx:165 +msgid "Check your input and try again." +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:65 +#: src/functions/auth.tsx:74 +#~ msgid "Mail delivery successfull" +#~ msgstr "Mail delivery successfull" + +#: src/components/forms/AuthenticationForm.tsx:70 +#: src/functions/auth.tsx:156 +msgid "Mail delivery successful" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:71 +msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too." +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:75 +msgid "Mail delivery failed" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:95 +msgid "Or continue with other methods" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:106 +#: src/components/forms/AuthenticationForm.tsx:227 +msgid "Username" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:107 +#: src/components/forms/AuthenticationForm.tsx:228 +msgid "Your username" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:112 +#: src/components/forms/AuthenticationForm.tsx:240 +#: src/pages/Auth/Set-Password.tsx:106 +msgid "Password" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:113 +#: src/components/forms/AuthenticationForm.tsx:241 +msgid "Your password" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:125 +#: src/pages/Auth/Reset.tsx:26 +msgid "Reset password" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:131 +#~ msgid "Log in" +#~ msgstr "Log in" + +#: src/components/forms/AuthenticationForm.tsx:134 +#: src/components/forms/AuthenticationForm.tsx:233 +#: src/pages/Auth/Reset.tsx:31 +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49 +msgid "Email" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:135 +#: src/pages/Auth/Reset.tsx:32 +#: src/pages/Auth/Set-Password.tsx:107 +msgid "We will send you a link to login - if you are registered" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:136 +#~ msgid "I will use username and password" +#~ msgstr "I will use username and password" + +#: src/components/forms/AuthenticationForm.tsx:151 +msgid "Send me an email" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:153 +msgid "Use username and password" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:162 +msgid "Log In" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:164 +msgid "Send Email" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:193 +msgid "Registration successful" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:194 +msgid "Please confirm your email address to complete the registration" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:210 +msgid "Input error" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:234 +msgid "This will be used for a confirmation" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:246 +msgid "Password repeat" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:247 +msgid "Repeat password" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:259 +#: src/components/forms/AuthenticationForm.tsx:304 +msgid "Register" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:265 +msgid "Or use SSO" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:296 +msgid "Don't have an account?" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:315 +msgid "Go back to login" +msgstr "" + +#: src/components/forms/HostOptionsForm.tsx:36 +#: src/components/forms/HostOptionsForm.tsx:67 +msgid "Host" +msgstr "" + +#: src/components/forms/HostOptionsForm.tsx:42 +#: src/components/forms/HostOptionsForm.tsx:70 +#: src/pages/part/CategoryDetail.tsx:78 +#: src/pages/part/PartDetail.tsx:128 +#: src/pages/stock/LocationDetail.tsx:85 +#: src/tables/machine/MachineTypeTable.tsx:65 +#: src/tables/machine/MachineTypeTable.tsx:109 +#: src/tables/machine/MachineTypeTable.tsx:216 +#: src/tables/machine/MachineTypeTable.tsx:319 +#: src/tables/plugin/PluginErrorTable.tsx:33 +#: src/tables/plugin/PluginListTable.tsx:126 +#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:32 +#: src/tables/settings/GroupTable.tsx:103 +#: src/tables/settings/PendingTasksTable.tsx:26 +#: src/tables/stock/LocationTypesTable.tsx:60 +msgid "Name" +msgstr "" + +#: src/components/forms/HostOptionsForm.tsx:75 +msgid "No one here..." +msgstr "" + +#: src/components/forms/HostOptionsForm.tsx:86 +msgid "Add Host" +msgstr "" + +#: src/components/forms/HostOptionsForm.tsx:90 +msgid "Save" +msgstr "" + +#: src/components/forms/InstanceOptions.tsx:43 +msgid "Select destination instance" +msgstr "" + +#: src/components/forms/InstanceOptions.tsx:71 +msgid "Edit possible host options" +msgstr "" + +#: src/components/forms/InstanceOptions.tsx:98 +msgid "Version: {0}" +msgstr "" + +#: src/components/forms/InstanceOptions.tsx:100 +msgid "API:{0}" +msgstr "" + +#: src/components/forms/InstanceOptions.tsx:102 +msgid "Name: {0}" +msgstr "" + +#: src/components/forms/InstanceOptions.tsx:104 +msgid "State: <0>worker ({0}), <1>plugins{1}" +msgstr "" + +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 +#: src/tables/Search.tsx:23 +msgid "Search" +msgstr "" + +#: src/components/forms/fields/RelatedModelField.tsx:321 +#: src/components/modals/AboutInvenTreeModal.tsx:81 +#: src/components/widgets/WidgetLayout.tsx:120 +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 +msgid "Loading" +msgstr "" + +#: src/components/forms/fields/RelatedModelField.tsx:323 +msgid "No results found" +msgstr "" + +#: src/components/forms/fields/TableField.tsx:50 +msgid "modelRenderer entry required for tables" +msgstr "" + +#: src/components/forms/fields/TableField.tsx:74 +msgid "No entries available" +msgstr "" + +#: src/components/images/DetailsImage.tsx:252 +#~ msgid "Select image" +#~ msgstr "Select image" + +#: src/components/images/Thumbnail.tsx:12 +#: src/components/images/Thumbnail.tsx:58 +msgid "Thumbnail" +msgstr "" + +#: src/components/items/ActionDropdown.tsx:119 +#: src/pages/build/BuildDetail.tsx:356 +msgid "Barcode Actions" +msgstr "" + +#: src/components/items/ActionDropdown.tsx:136 +msgid "View" +msgstr "" + +#: src/components/items/ActionDropdown.tsx:137 +msgid "View barcode" +msgstr "" + +#: src/components/items/ActionDropdown.tsx:153 +msgid "Link Barcode" +msgstr "" + +#: src/components/items/ActionDropdown.tsx:154 +msgid "Link custom barcode" +msgstr "" + +#: src/components/items/ActionDropdown.tsx:170 +#: src/forms/PurchaseOrderForms.tsx:389 +msgid "Unlink Barcode" +msgstr "" + +#: src/components/items/ActionDropdown.tsx:171 +msgid "Unlink custom barcode" +msgstr "" + +#: src/components/items/ActionDropdown.tsx:189 +#: src/tables/RowActions.tsx:51 +msgid "Edit" +msgstr "" + +#: src/components/items/ActionDropdown.tsx:211 +msgid "Delete item" +msgstr "" + +#: src/components/items/ActionDropdown.tsx:248 +#: src/tables/RowActions.tsx:31 +msgid "Duplicate" +msgstr "" + +#: src/components/items/ActionDropdown.tsx:249 +msgid "Duplicate item" +msgstr "" + +#: src/components/items/DocTooltip.tsx:92 +msgid "Read More" +msgstr "" + +#: src/components/items/ErrorItem.tsx:5 +#: src/tables/InvenTreeTable.tsx:443 +msgid "Unknown error" +msgstr "" + +#: src/components/items/ErrorItem.tsx:10 +msgid "An error occurred:" +msgstr "" + +#: src/components/items/GettingStartedCarousel.tsx:27 +msgid "Read more" +msgstr "" + +#: src/components/items/InfoItem.tsx:27 +msgid "None" +msgstr "" + +#: src/components/items/InvenTreeLogo.tsx:23 +msgid "InvenTree Logo" +msgstr "" + +#: src/components/items/OnlyStaff.tsx:9 +#: src/components/modals/AboutInvenTreeModal.tsx:44 +msgid "This information is only available for staff users" +msgstr "" + +#: src/components/items/Placeholder.tsx:14 +msgid "This feature/button/site is a placeholder for a feature that is not implemented, only partial or intended for testing." +msgstr "" + +#: src/components/items/Placeholder.tsx:17 +msgid "PLH" +msgstr "" + +#: src/components/items/Placeholder.tsx:31 +msgid "This panel is a placeholder." +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:99 +msgid "Version Information" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:103 +msgid "Your InvenTree version status is" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:107 +msgid "Development Version" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:111 +msgid "Up to Date" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:115 +msgid "Update Available" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:125 +msgid "InvenTree Version" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:131 +msgid "Commit Hash" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:136 +msgid "Commit Date" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:141 +msgid "Commit Branch" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:146 +#: src/components/modals/ServerInfoModal.tsx:133 +msgid "API Version" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:149 +msgid "Python Version" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:152 +msgid "Django Version" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:162 +msgid "Links" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:168 +msgid "InvenTree Documentation" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:169 +msgid "View Code on GitHub" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:170 +msgid "Credits" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:171 +msgid "Mobile App" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:172 +msgid "Submit Bug Report" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:183 +msgid "Copy version information" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:192 +#: src/components/modals/ServerInfoModal.tsx:147 +msgid "Dismiss" +msgstr "" + +#: src/components/modals/LicenseModal.tsx:39 +msgid "No license text available" +msgstr "" + +#: src/components/modals/LicenseModal.tsx:46 +msgid "No Information provided - this is likely a server issue" +msgstr "" + +#: src/components/modals/LicenseModal.tsx:71 +msgid "Loading license information" +msgstr "" + +#: src/components/modals/LicenseModal.tsx:77 +msgid "Failed to fetch license information" +msgstr "" + +#: src/components/modals/LicenseModal.tsx:85 +msgid "{key} Packages" +msgstr "" + +#: src/components/modals/QrCodeModal.tsx:72 +msgid "Unknown response" +msgstr "" + +#: src/components/modals/QrCodeModal.tsx:102 +#: src/pages/Index/Scan.tsx:636 +msgid "Error while getting camera" +msgstr "" + +#: src/components/modals/QrCodeModal.tsx:125 +#: src/pages/Index/Scan.tsx:659 +msgid "Error while scanning" +msgstr "" + +#: src/components/modals/QrCodeModal.tsx:139 +#: src/pages/Index/Scan.tsx:673 +msgid "Error while stopping" +msgstr "" + +#: src/components/modals/QrCodeModal.tsx:154 +#: src/defaults/menuItems.tsx:21 +#: src/pages/Index/Scan.tsx:746 +msgid "Scanning" +msgstr "" + +#: src/components/modals/QrCodeModal.tsx:154 +#: src/pages/Index/Scan.tsx:746 +msgid "Not scanning" +msgstr "" + +#: src/components/modals/QrCodeModal.tsx:159 +#: src/pages/Index/Scan.tsx:752 +msgid "Select Camera" +msgstr "" + +#: src/components/modals/QrCodeModal.tsx:169 +#: src/pages/Index/Scan.tsx:737 +msgid "Start scanning" +msgstr "" + +#: src/components/modals/QrCodeModal.tsx:176 +#: src/pages/Index/Scan.tsx:729 +msgid "Stop scanning" +msgstr "" + +#: src/components/modals/QrCodeModal.tsx:181 +msgid "No scans yet!" +msgstr "" + +#: src/components/modals/QrCodeModal.tsx:201 +msgid "Close modal" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:26 +#: src/pages/Index/Settings/SystemSettings.tsx:36 +msgid "Server" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:32 +msgid "Instance Name" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:38 +msgid "Database" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:38 +#~ msgid "Bebug Mode" +#~ msgstr "Bebug Mode" + +#: src/components/modals/ServerInfoModal.tsx:47 +msgid "Debug Mode" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:50 +msgid "Server is running in debug mode" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:57 +msgid "Docker Mode" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:60 +msgid "Server is deployed using docker" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:66 +msgid "Plugin Support" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:71 +msgid "Plugin support enabled" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:73 +msgid "Plugin support disabled" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:80 +msgid "Server status" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:86 +msgid "Healthy" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:88 +msgid "Issues detected" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:97 +msgid "Background Worker" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:101 +msgid "Background worker not running" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:109 +msgid "Email Settings" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:113 +msgid "Email settings not configured" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:121 +#: src/tables/plugin/PluginListTable.tsx:144 +#: src/tables/plugin/PluginListTable.tsx:294 +msgid "Version" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:127 +msgid "Server Version" +msgstr "" + +#: src/components/nav/Layout.tsx:70 +#: src/tables/part/PartThumbTable.tsx:194 +msgid "Search..." +msgstr "" + +#: src/components/nav/Layout.tsx:73 +msgid "Nothing found..." +msgstr "" + +#: src/components/nav/MainMenu.tsx:40 +#: src/pages/Index/Profile/Profile.tsx:15 +#~ msgid "Profile" +#~ msgstr "Profile" + +#: src/components/nav/MainMenu.tsx:42 +#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:26 +msgid "Settings" +msgstr "" + +#: src/components/nav/MainMenu.tsx:49 +#: src/defaults/menuItems.tsx:15 +msgid "Account settings" +msgstr "" + +#: src/components/nav/MainMenu.tsx:57 +#: src/defaults/menuItems.tsx:58 +#: src/pages/Index/Settings/SystemSettings.tsx:300 +msgid "System Settings" +msgstr "" + +#: src/components/nav/MainMenu.tsx:67 +#: src/defaults/menuItems.tsx:63 +#: src/pages/Index/Settings/AdminCenter/Index.tsx:192 +msgid "Admin Center" +msgstr "" + +#: src/components/nav/MainMenu.tsx:68 +#~ msgid "Current language {locale}" +#~ msgstr "Current language {locale}" + +#: src/components/nav/MainMenu.tsx:71 +#~ msgid "Switch to pseudo language" +#~ msgstr "Switch to pseudo language" + +#: src/components/nav/MainMenu.tsx:77 +msgid "Logout" +msgstr "" + +#: src/components/nav/NavHoverMenu.tsx:65 +#: src/defaults/actions.tsx:58 +msgid "Open Navigation" +msgstr "" + +#: src/components/nav/NavHoverMenu.tsx:84 +msgid "View all" +msgstr "" + +#: src/components/nav/NavHoverMenu.tsx:100 +#: src/components/nav/NavHoverMenu.tsx:110 +msgid "Get started" +msgstr "" + +#: src/components/nav/NavHoverMenu.tsx:103 +msgid "Overview over high-level objects, functions and possible usecases." +msgstr "" + +#: src/components/nav/NavigationDrawer.tsx:57 +msgid "Navigation" +msgstr "" + +#: src/components/nav/NavigationDrawer.tsx:60 +msgid "Pages" +msgstr "" + +#: src/components/nav/NavigationDrawer.tsx:65 +#: src/pages/Index/Settings/AdminCenter/Index.tsx:153 +#: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:41 +msgid "Plugins" +msgstr "" + +#: src/components/nav/NavigationDrawer.tsx:75 +#: src/defaults/actions.tsx:30 +msgid "Documentation" +msgstr "" + +#: src/components/nav/NavigationDrawer.tsx:78 +msgid "About" +msgstr "" + +#: src/components/nav/NotificationDrawer.tsx:78 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 +#: src/pages/Notifications.tsx:65 +#: src/pages/Notifications.tsx:152 +msgid "Notifications" +msgstr "" + +#: src/components/nav/NotificationDrawer.tsx:95 +msgid "You have no unread notifications." +msgstr "" + +#: src/components/nav/NotificationDrawer.tsx:111 +#: src/components/nav/NotificationDrawer.tsx:117 +#: src/tables/notifications/NotificationsTable.tsx:36 +msgid "Notification" +msgstr "" + +#: src/components/nav/NotificationDrawer.tsx:140 +#: src/pages/Notifications.tsx:73 +msgid "Mark as read" +msgstr "" + +#: src/components/nav/SearchDrawer.tsx:78 +msgid "results" +msgstr "" + +#: src/components/nav/SearchDrawer.tsx:349 +msgid "Enter search text" +msgstr "" + +#: src/components/nav/SearchDrawer.tsx:376 +msgid "Search Options" +msgstr "" + +#: src/components/nav/SearchDrawer.tsx:379 +msgid "Regex search" +msgstr "" + +#: src/components/nav/SearchDrawer.tsx:389 +msgid "Whole word search" +msgstr "" + +#: src/components/nav/SearchDrawer.tsx:430 +msgid "An error occurred during search query" +msgstr "" + +#: src/components/nav/SearchDrawer.tsx:441 +msgid "No results" +msgstr "" + +#: src/components/nav/SearchDrawer.tsx:444 +msgid "No results available for search query" +msgstr "" + +#: src/components/render/Instance.tsx:166 +msgid "Unknown model: {model}" +msgstr "" + +#: src/components/render/ModelType.tsx:22 +#: src/forms/BuildForms.tsx:201 +#: src/forms/StockForms.tsx:449 +#: src/forms/StockForms.tsx:483 +#: src/forms/StockForms.tsx:512 +#: src/forms/StockForms.tsx:540 +#: src/forms/StockForms.tsx:571 +#: src/forms/StockForms.tsx:606 +#: src/forms/StockForms.tsx:648 +#: src/forms/StockForms.tsx:684 +#: src/pages/build/BuildDetail.tsx:83 +#: src/pages/part/PartDetail.tsx:837 +#: src/tables/part/RelatedPartTable.tsx:45 +#: src/tables/stock/StockTrackingTable.tsx:74 +msgid "Part" +msgstr "" + +#: src/components/render/ModelType.tsx:23 +#: src/defaults/links.tsx:28 +#: src/defaults/menuItems.tsx:33 +#: src/pages/Index/Settings/SystemSettings.tsx:171 +#: src/pages/part/CategoryDetail.tsx:110 +#: src/pages/part/CategoryDetail.tsx:235 +#: src/pages/part/CategoryDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:645 +msgid "Parts" +msgstr "" + +#: src/components/render/ModelType.tsx:31 +msgid "Part Parameter Template" +msgstr "" + +#: src/components/render/ModelType.tsx:32 +msgid "Part Parameter Templates" +msgstr "" + +#: src/components/render/ModelType.tsx:38 +msgid "Part Test Template" +msgstr "" + +#: src/components/render/ModelType.tsx:39 +msgid "Part Test Templates" +msgstr "" + +#: src/components/render/ModelType.tsx:45 +#: src/pages/company/SupplierPartDetail.tsx:190 +#: src/pages/company/SupplierPartDetail.tsx:318 +#: src/pages/stock/StockDetail.tsx:163 +#: src/tables/purchasing/SupplierPartTable.tsx:68 +msgid "Supplier Part" +msgstr "" + +#: src/components/render/ModelType.tsx:46 +msgid "Supplier Parts" +msgstr "" + +#: src/components/render/ModelType.tsx:54 +#: src/pages/company/ManufacturerPartDetail.tsx:125 +msgid "Manufacturer Part" +msgstr "" + +#: src/components/render/ModelType.tsx:55 +msgid "Manufacturer Parts" +msgstr "" + +#: src/components/render/ModelType.tsx:63 +#: src/pages/part/CategoryDetail.tsx:291 +msgid "Part Category" +msgstr "" + +#: src/components/render/ModelType.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:165 +#: src/pages/part/CategoryDetail.tsx:249 +#: src/pages/part/CategoryDetail.tsx:282 +#: src/pages/part/PartDetail.tsx:827 +msgid "Part Categories" +msgstr "" + +#: src/components/render/ModelType.tsx:72 +#: src/pages/stock/StockDetail.tsx:562 +#: src/tables/stock/StockTrackingTable.tsx:45 +msgid "Stock Item" +msgstr "" + +#: src/components/render/ModelType.tsx:73 +#: src/pages/company/CompanyDetail.tsx:199 +#: src/pages/stock/LocationDetail.tsx:118 +#: src/pages/stock/LocationDetail.tsx:171 +#: src/pages/stock/LocationDetail.tsx:369 +msgid "Stock Items" +msgstr "" + +#: src/components/render/ModelType.tsx:81 +msgid "Stock Location" +msgstr "" + +#: src/components/render/ModelType.tsx:82 +#: src/pages/stock/LocationDetail.tsx:185 +#: src/pages/stock/LocationDetail.tsx:361 +#: src/pages/stock/StockDetail.tsx:554 +msgid "Stock Locations" +msgstr "" + +#: src/components/render/ModelType.tsx:90 +msgid "Stock Location Type" +msgstr "" + +#: src/components/render/ModelType.tsx:91 +msgid "Stock Location Types" +msgstr "" + +#: src/components/render/ModelType.tsx:95 +msgid "Stock History" +msgstr "" + +#: src/components/render/ModelType.tsx:96 +msgid "Stock Histories" +msgstr "" + +#: src/components/render/ModelType.tsx:100 +#: src/defaults/links.tsx:30 +#: src/defaults/menuItems.tsx:43 +msgid "Build" +msgstr "" + +#: src/components/render/ModelType.tsx:101 +msgid "Builds" +msgstr "" + +#: src/components/render/ModelType.tsx:109 +msgid "Build Line" +msgstr "" + +#: src/components/render/ModelType.tsx:110 +msgid "Build Lines" +msgstr "" + +#: src/components/render/ModelType.tsx:117 +#: src/pages/company/CompanyDetail.tsx:326 +msgid "Company" +msgstr "" + +#: src/components/render/ModelType.tsx:118 +msgid "Companies" +msgstr "" + +#: src/components/render/ModelType.tsx:126 +#: src/tables/TableHoverCard.tsx:58 +#: src/tables/build/BuildOrderTable.tsx:131 +#: src/tables/purchasing/PurchaseOrderTable.tsx:64 +#: src/tables/sales/ReturnOrderTable.tsx:55 +#: src/tables/sales/SalesOrderTable.tsx:61 +msgid "Project Code" +msgstr "" + +#: src/components/render/ModelType.tsx:127 +#: src/pages/Index/Settings/AdminCenter/Index.tsx:105 +msgid "Project Codes" +msgstr "" + +#: src/components/render/ModelType.tsx:133 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 +#: src/tables/stock/StockTrackingTable.tsx:107 +msgid "Purchase Order" +msgstr "" + +#: src/components/render/ModelType.tsx:134 +#: src/pages/Index/Settings/SystemSettings.tsx:248 +#: src/pages/company/CompanyDetail.tsx:192 +#: src/pages/company/SupplierPartDetail.tsx:224 +#: src/pages/part/PartDetail.tsx:579 +#: src/pages/purchasing/PurchasingIndex.tsx:20 +msgid "Purchase Orders" +msgstr "" + +#: src/components/render/ModelType.tsx:142 +msgid "Purchase Order Line" +msgstr "" + +#: src/components/render/ModelType.tsx:143 +msgid "Purchase Order Lines" +msgstr "" + +#: src/components/render/ModelType.tsx:147 +#: src/pages/build/BuildDetail.tsx:131 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 +#: src/tables/stock/StockTrackingTable.tsx:118 +msgid "Sales Order" +msgstr "" + +#: src/components/render/ModelType.tsx:148 +#: src/pages/Index/Settings/SystemSettings.tsx:263 +#: src/pages/company/CompanyDetail.tsx:212 +#: src/pages/part/PartDetail.tsx:586 +#: src/pages/sales/SalesIndex.tsx:21 +msgid "Sales Orders" +msgstr "" + +#: src/components/render/ModelType.tsx:156 +msgid "Sales Order Shipment" +msgstr "" + +#: src/components/render/ModelType.tsx:157 +msgid "Sales Order Shipments" +msgstr "" + +#: src/components/render/ModelType.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:326 +#: src/tables/stock/StockTrackingTable.tsx:129 +msgid "Return Order" +msgstr "" + +#: src/components/render/ModelType.tsx:164 +#: src/pages/Index/Settings/SystemSettings.tsx:279 +#: src/pages/company/CompanyDetail.tsx:219 +#: src/pages/sales/SalesIndex.tsx:27 +msgid "Return Orders" +msgstr "" + +#: src/components/render/ModelType.tsx:172 +#: src/tables/company/AddressTable.tsx:47 +msgid "Address" +msgstr "" + +#: src/components/render/ModelType.tsx:173 +#: src/pages/company/CompanyDetail.tsx:249 +msgid "Addresses" +msgstr "" + +#: src/components/render/ModelType.tsx:179 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:191 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 +msgid "Contact" +msgstr "" + +#: src/components/render/ModelType.tsx:180 +#: src/pages/company/CompanyDetail.tsx:243 +msgid "Contacts" +msgstr "" + +#: src/components/render/ModelType.tsx:186 +msgid "Owner" +msgstr "" + +#: src/components/render/ModelType.tsx:187 +msgid "Owners" +msgstr "" + +#: src/components/render/ModelType.tsx:193 +#: src/tables/stock/StockItemTestResultTable.tsx:193 +#: src/tables/stock/StockTrackingTable.tsx:195 +msgid "User" +msgstr "" + +#: src/components/render/ModelType.tsx:194 +#: src/pages/Index/Settings/AdminCenter/Index.tsx:81 +#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:13 +msgid "Users" +msgstr "" + +#: src/components/render/ModelType.tsx:200 +msgid "Label Template" +msgstr "" + +#: src/components/render/ModelType.tsx:201 +#: src/pages/Index/Settings/AdminCenter/Index.tsx:135 +msgid "Label Templates" +msgstr "" + +#: src/components/render/ModelType.tsx:207 +msgid "Report Template" +msgstr "" + +#: src/components/render/ModelType.tsx:208 +#: src/pages/Index/Settings/AdminCenter/Index.tsx:141 +msgid "Report Templates" +msgstr "" + +#: src/components/render/ModelType.tsx:214 +msgid "Plugin Configuration" +msgstr "" + +#: src/components/render/ModelType.tsx:215 +msgid "Plugin Configurations" +msgstr "" + +#: src/components/render/Order.tsx:104 +msgid "Shipment" +msgstr "" + +#: src/components/render/Part.tsx:15 +#: src/defaults/links.tsx:29 +#: src/defaults/menuItems.tsx:38 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 +#: src/pages/stock/LocationDetail.tsx:345 +#: src/pages/stock/StockDetail.tsx:354 +#: src/tables/stock/StockItemTable.tsx:57 +msgid "Stock" +msgstr "" + +#: src/components/render/Stock.tsx:52 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 +msgid "Serial Number" +msgstr "" + +#: src/components/render/Stock.tsx:54 +#: src/forms/BuildForms.tsx:206 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 +#: src/tables/stock/StockTrackingTable.tsx:59 +msgid "Quantity" +msgstr "" + +#: src/components/settings/SettingItem.tsx:47 +#: src/components/settings/SettingItem.tsx:100 +#~ msgid "{0} updated successfully" +#~ msgstr "{0} updated successfully" + +#: src/components/settings/SettingList.tsx:67 +msgid "Edit Setting" +msgstr "" + +#: src/components/settings/SettingList.tsx:78 +#: src/components/settings/SettingList.tsx:108 +msgid "Setting {0} updated successfully" +msgstr "" + +#: src/components/settings/SettingList.tsx:107 +msgid "Setting updated" +msgstr "" + +#: src/components/settings/SettingList.tsx:117 +msgid "Error editing setting" +msgstr "" + +#: src/components/settings/SettingList.tsx:158 +msgid "No settings specified" +msgstr "" + +#: src/components/tables/FilterGroup.tsx:29 +#~ msgid "Add table filter" +#~ msgstr "Add table filter" + +#: src/components/tables/FilterGroup.tsx:44 +#~ msgid "Clear all filters" +#~ msgstr "Clear all filters" + +#: src/components/tables/FilterGroup.tsx:51 +#~ msgid "Add filter" +#~ msgstr "Add filter" + +#: src/components/tables/FilterSelectModal.tsx:56 +#~ msgid "True" +#~ msgstr "True" + +#: src/components/tables/FilterSelectModal.tsx:57 +#~ msgid "False" +#~ msgstr "False" + +#: src/components/tables/FilterSelectModal.tsx:143 +#~ msgid "Add Table Filter" +#~ msgstr "Add Table Filter" + +#: src/components/tables/FilterSelectModal.tsx:145 +#~ msgid "Select from the available filters" +#~ msgstr "Select from the available filters" + +#: src/components/tables/bom/BomTable.tsx:113 +#~ msgid "Substitutes" +#~ msgstr "Substitutes" + +#: src/components/tables/bom/BomTable.tsx:135 +#~ msgid "Allow Variants" +#~ msgstr "Allow Variants" + +#: src/components/tables/bom/BomTable.tsx:139 +#: src/components/tables/bom/BomTable.tsx:265 +#: src/components/tables/bom/UsedInTable.tsx:64 +#~ msgid "Gets Inherited" +#~ msgstr "Gets Inherited" + +#: src/components/tables/bom/BomTable.tsx:200 +#~ msgid "Validate" +#~ msgstr "Validate" + +#: src/components/tables/bom/BomTable.tsx:250 +#~ msgid "Has Available Stock" +#~ msgstr "Has Available Stock" + +#: src/components/tables/bom/UsedInTable.tsx:40 +#~ msgid "Required Part" +#~ msgstr "Required Part" + +#: src/components/tables/build/BuildLineTable.tsx:152 +#~ msgid "Required Quantity" +#~ msgstr "Required Quantity" + +#: src/components/tables/build/BuildOrderTable.tsx:52 +#~ msgid "Progress" +#~ msgstr "Progress" + +#: src/components/tables/build/BuildOrderTable.tsx:65 +#~ msgid "Priority" +#~ msgstr "Priority" + +#: src/components/tables/company/AddressTable.tsx:68 +#~ msgid "Postal Code" +#~ msgstr "Postal Code" + +#: src/components/tables/company/AddressTable.tsx:74 +#~ msgid "City" +#~ msgstr "City" + +#: src/components/tables/company/AddressTable.tsx:80 +#~ msgid "State / Province" +#~ msgstr "State / Province" + +#: src/components/tables/company/AddressTable.tsx:86 +#~ msgid "Country" +#~ msgstr "Country" + +#: src/components/tables/company/AddressTable.tsx:92 +#~ msgid "Courier Notes" +#~ msgstr "Courier Notes" + +#: src/components/tables/company/AddressTable.tsx:98 +#~ msgid "Internal Notes" +#~ msgstr "Internal Notes" + +#: src/components/tables/company/AddressTable.tsx:130 +#~ msgid "Address updated" +#~ msgstr "Address updated" + +#: src/components/tables/company/AddressTable.tsx:142 +#~ msgid "Address deleted" +#~ msgstr "Address deleted" + +#: src/components/tables/company/CompanyTable.tsx:32 +#~ msgid "Company Name" +#~ msgstr "Company Name" + +#: src/components/tables/company/ContactTable.tsx:41 +#~ msgid "Phone" +#~ msgstr "Phone" + +#: src/components/tables/company/ContactTable.tsx:53 +#~ msgid "Role" +#~ msgstr "Role" + +#: src/components/tables/company/ContactTable.tsx:78 +#~ msgid "Contact updated" +#~ msgstr "Contact updated" + +#: src/components/tables/company/ContactTable.tsx:90 +#~ msgid "Contact deleted" +#~ msgstr "Contact deleted" + +#: src/components/tables/company/ContactTable.tsx:92 +#~ msgid "Are you sure you want to delete this contact?" +#~ msgstr "Are you sure you want to delete this contact?" + +#: src/components/tables/company/ContactTable.tsx:108 +#~ msgid "Create Contact" +#~ msgstr "Create Contact" + +#: src/components/tables/company/ContactTable.tsx:110 +#~ msgid "Contact created" +#~ msgstr "Contact created" + +#: src/components/tables/general/AttachmentTable.tsx:47 +#~ msgid "Comment" +#~ msgstr "Comment" + +#: src/components/tables/general/AttachmentTable.tsx:56 +#~ msgid "Uploaded" +#~ msgstr "Uploaded" + +#: src/components/tables/part/PartCategoryTable.tsx:122 +#~ msgid "Part category updated" +#~ msgstr "Part category updated" + +#: src/components/tables/part/PartParameterTable.tsx:41 +#~ msgid "Parameter" +#~ msgstr "Parameter" + +#: src/components/tables/part/PartParameterTable.tsx:114 +#~ msgid "Part parameter updated" +#~ msgstr "Part parameter updated" + +#: src/components/tables/part/PartParameterTable.tsx:130 +#~ msgid "Part parameter deleted" +#~ msgstr "Part parameter deleted" + +#: src/components/tables/part/PartParameterTable.tsx:132 +#~ msgid "Are you sure you want to remove this parameter?" +#~ msgstr "Are you sure you want to remove this parameter?" + +#: src/components/tables/part/PartParameterTable.tsx:159 +#~ msgid "Part parameter added" +#~ msgstr "Part parameter added" + +#: src/components/tables/part/PartParameterTemplateTable.tsx:67 +#~ msgid "Choices" +#~ msgstr "Choices" + +#: src/components/tables/part/PartParameterTemplateTable.tsx:83 +#~ msgid "Remove parameter template" +#~ msgstr "Remove parameter template" + +#: src/components/tables/part/PartParameterTemplateTable.tsx:84 +#~ msgid "Parameter template updated" +#~ msgstr "Parameter template updated" + +#: src/components/tables/part/PartParameterTemplateTable.tsx:96 +#~ msgid "Parameter template deleted" +#~ msgstr "Parameter template deleted" + +#: src/components/tables/part/PartParameterTemplateTable.tsx:98 +#~ msgid "Are you sure you want to remove this parameter template?" +#~ msgstr "Are you sure you want to remove this parameter template?" + +#: src/components/tables/part/PartParameterTemplateTable.tsx:110 +#~ msgid "Create Parameter Template" +#~ msgstr "Create Parameter Template" + +#: src/components/tables/part/PartParameterTemplateTable.tsx:112 +#~ msgid "Parameter template created" +#~ msgstr "Parameter template created" + +#: src/components/tables/part/PartTable.tsx:211 +#~ msgid "Detail" +#~ msgstr "Detail" + +#: src/components/tables/part/PartTestTemplateTable.tsx:30 +#~ msgid "Test Name" +#~ msgstr "Test Name" + +#: src/components/tables/part/PartTestTemplateTable.tsx:86 +#~ msgid "Template updated" +#~ msgstr "Template updated" + +#: src/components/tables/part/PartTestTemplateTable.tsx:98 +#~ msgid "Test Template deleted" +#~ msgstr "Test Template deleted" + +#: src/components/tables/part/PartTestTemplateTable.tsx:115 +#~ msgid "Create Test Template" +#~ msgstr "Create Test Template" + +#: src/components/tables/part/PartTestTemplateTable.tsx:117 +#~ msgid "Template created" +#~ msgstr "Template created" + +#: src/components/tables/part/RelatedPartTable.tsx:79 +#~ msgid "Related Part" +#~ msgstr "Related Part" + +#: src/components/tables/part/RelatedPartTable.tsx:82 +#~ msgid "Related part added" +#~ msgstr "Related part added" + +#: src/components/tables/part/RelatedPartTable.tsx:114 +#~ msgid "Related part deleted" +#~ msgstr "Related part deleted" + +#: src/components/tables/part/RelatedPartTable.tsx:115 +#~ msgid "Are you sure you want to remove this relationship?" +#~ msgstr "Are you sure you want to remove this relationship?" + +#: src/components/tables/plugin/PluginListTable.tsx:191 +#~ msgid "Installation path" +#~ msgstr "Installation path" + +#: src/components/tables/purchasing/PurchaseOrderLineItemTable.tsx:55 +#~ msgid "Receive" +#~ msgstr "Receive" + +#: src/components/tables/purchasing/PurchaseOrderLineItemTable.tsx:81 +#~ msgid "Line item updated" +#~ msgstr "Line item updated" + +#: src/components/tables/purchasing/PurchaseOrderLineItemTable.tsx:232 +#~ msgid "Line item added" +#~ msgstr "Line item added" + +#: src/components/tables/settings/CustomUnitsTable.tsx:37 +#~ msgid "Definition" +#~ msgstr "Definition" + +#: src/components/tables/settings/CustomUnitsTable.tsx:43 +#~ msgid "Symbol" +#~ msgstr "Symbol" + +#: src/components/tables/settings/CustomUnitsTable.tsx:59 +#~ msgid "Edit custom unit" +#~ msgstr "Edit custom unit" + +#: src/components/tables/settings/CustomUnitsTable.tsx:66 +#~ msgid "Custom unit updated" +#~ msgstr "Custom unit updated" + +#: src/components/tables/settings/CustomUnitsTable.tsx:76 +#~ msgid "Delete custom unit" +#~ msgstr "Delete custom unit" + +#: src/components/tables/settings/CustomUnitsTable.tsx:77 +#~ msgid "Custom unit deleted" +#~ msgstr "Custom unit deleted" + +#: src/components/tables/settings/CustomUnitsTable.tsx:79 +#~ msgid "Are you sure you want to remove this custom unit?" +#~ msgstr "Are you sure you want to remove this custom unit?" + +#: src/components/tables/settings/CustomUnitsTable.tsx:97 +#~ msgid "Custom unit created" +#~ msgstr "Custom unit created" + +#: src/components/tables/settings/GroupTable.tsx:45 +#~ msgid "Group updated" +#~ msgstr "Group updated" + +#: src/components/tables/settings/GroupTable.tsx:131 +#~ msgid "Added group" +#~ msgstr "Added group" + +#: src/components/tables/settings/ProjectCodeTable.tsx:49 +#~ msgid "Edit project code" +#~ msgstr "Edit project code" + +#: src/components/tables/settings/ProjectCodeTable.tsx:56 +#~ msgid "Project code updated" +#~ msgstr "Project code updated" + +#: src/components/tables/settings/ProjectCodeTable.tsx:66 +#~ msgid "Delete project code" +#~ msgstr "Delete project code" + +#: src/components/tables/settings/ProjectCodeTable.tsx:67 +#~ msgid "Project code deleted" +#~ msgstr "Project code deleted" + +#: src/components/tables/settings/ProjectCodeTable.tsx:69 +#~ msgid "Are you sure you want to remove this project code?" +#~ msgstr "Are you sure you want to remove this project code?" + +#: src/components/tables/settings/ProjectCodeTable.tsx:88 +#~ msgid "Added project code" +#~ msgstr "Added project code" + +#: src/components/tables/settings/UserDrawer.tsx:92 +#~ msgid "User permission changed successfully" +#~ msgstr "User permission changed successfully" + +#: src/components/tables/settings/UserDrawer.tsx:93 +#~ msgid "Some changes might only take effect after the user refreshes their login." +#~ msgstr "Some changes might only take effect after the user refreshes their login." + +#: src/components/tables/settings/UserDrawer.tsx:118 +#~ msgid "Changed user active status successfully" +#~ msgstr "Changed user active status successfully" + +#: src/components/tables/settings/UserDrawer.tsx:119 +#~ msgid "Set to {active}" +#~ msgstr "Set to {active}" + +#: src/components/tables/settings/UserDrawer.tsx:142 +#~ msgid "User details for {0}" +#~ msgstr "User details for {0}" + +#: src/components/tables/settings/UserDrawer.tsx:176 +#~ msgid "Rights" +#~ msgstr "Rights" + +#: src/components/tables/settings/UserTable.tsx:106 +#~ msgid "User updated" +#~ msgstr "User updated" + +#: src/components/tables/settings/UserTable.tsx:117 +#~ msgid "user deleted" +#~ msgstr "user deleted" + +#: src/components/tables/settings/UserTable.tsx:168 +#~ msgid "First Name" +#~ msgstr "First Name" + +#: src/components/tables/settings/UserTable.tsx:173 +#~ msgid "Last Name" +#~ msgstr "Last Name" + +#: src/components/tables/settings/UserTable.tsx:186 +#~ msgid "Staff" +#~ msgstr "Staff" + +#: src/components/tables/settings/UserTable.tsx:190 +#~ msgid "Superuser" +#~ msgstr "Superuser" + +#: src/components/tables/stock/StockItemTable.tsx:198 +#~ msgid "Expiry Date" +#~ msgstr "Expiry Date" + +#: src/components/tables/stock/StockItemTable.tsx:247 +#~ msgid "Test Filter" +#~ msgstr "Test Filter" + +#: src/components/tables/stock/StockItemTable.tsx:248 +#~ msgid "This is a test filter" +#~ msgstr "This is a test filter" + +#: src/components/tables/stock/StockLocationTable.tsx:145 +#~ msgid "Stock location updated" +#~ msgstr "Stock location updated" + +#: src/components/widgets/DisplayWidget.tsx:11 +#: src/pages/Index/Settings/AccountSettings/DisplaySettingsPanel.tsx:17 +msgid "Display Settings" +msgstr "" + +#: src/components/widgets/DisplayWidget.tsx:15 +#: src/pages/Index/Settings/AccountSettings/DisplaySettingsPanel.tsx:23 +msgid "Color Mode" +msgstr "" + +#: src/components/widgets/DisplayWidget.tsx:21 +#: src/pages/Index/Settings/AccountSettings/DisplaySettingsPanel.tsx:33 +msgid "Language" +msgstr "" + +#: src/components/widgets/FeedbackWidget.tsx:19 +msgid "Something is new: Platform UI" +msgstr "" + +#: src/components/widgets/FeedbackWidget.tsx:21 +msgid "We are building a new UI with a modern stack. What you currently see is not fixed and will be redesigned but demonstrates the UI/UX possibilities we will have going forward." +msgstr "" + +#: src/components/widgets/FeedbackWidget.tsx:32 +msgid "Provide Feedback" +msgstr "" + +#: src/components/widgets/GetStartedWidget.tsx:11 +msgid "Getting started" +msgstr "" + +#: src/components/widgets/MarkdownEditor.tsx:108 +#~ msgid "Failed to upload image" +#~ msgstr "Failed to upload image" + +#: src/components/widgets/MarkdownEditor.tsx:146 +#~ msgid "Notes saved" +#~ msgstr "Notes saved" + +#: src/components/widgets/WidgetLayout.tsx:166 +msgid "Layout" +msgstr "" + +#: src/components/widgets/WidgetLayout.tsx:172 +msgid "Reset Layout" +msgstr "" + +#: src/components/widgets/WidgetLayout.tsx:185 +msgid "Stop Edit" +msgstr "" + +#: src/components/widgets/WidgetLayout.tsx:185 +msgid "Edit Layout" +msgstr "" + +#: src/components/widgets/WidgetLayout.tsx:191 +msgid "Appearance" +msgstr "" + +#: src/components/widgets/WidgetLayout.tsx:203 +msgid "Show Boxes" +msgstr "" + +#: src/contexts/LanguageContext.tsx:20 +msgid "Bulgarian" +msgstr "" + +#: src/contexts/LanguageContext.tsx:21 +msgid "Czech" +msgstr "" + +#: src/contexts/LanguageContext.tsx:22 +msgid "Danish" +msgstr "" + +#: src/contexts/LanguageContext.tsx:23 +msgid "German" +msgstr "" + +#: src/contexts/LanguageContext.tsx:24 +msgid "Greek" +msgstr "" + +#: src/contexts/LanguageContext.tsx:25 +msgid "English" +msgstr "" + +#: src/contexts/LanguageContext.tsx:26 +msgid "Spanish" +msgstr "" + +#: src/contexts/LanguageContext.tsx:27 +msgid "Spanish (Mexican)" +msgstr "" + +#: src/contexts/LanguageContext.tsx:28 +msgid "Farsi / Persian" +msgstr "" + +#: src/contexts/LanguageContext.tsx:29 +msgid "Finnish" +msgstr "" + +#: src/contexts/LanguageContext.tsx:30 +msgid "French" +msgstr "" + +#: src/contexts/LanguageContext.tsx:31 +msgid "Hebrew" +msgstr "" + +#: src/contexts/LanguageContext.tsx:32 +msgid "Hindi" +msgstr "" + +#: src/contexts/LanguageContext.tsx:33 +msgid "Hungarian" +msgstr "" + +#: src/contexts/LanguageContext.tsx:34 +msgid "Italian" +msgstr "" + +#: src/contexts/LanguageContext.tsx:35 +msgid "Japanese" +msgstr "" + +#: src/contexts/LanguageContext.tsx:36 +msgid "Korean" +msgstr "" + +#: src/contexts/LanguageContext.tsx:37 +msgid "Latvian" +msgstr "" + +#: src/contexts/LanguageContext.tsx:38 +msgid "Dutch" +msgstr "" + +#: src/contexts/LanguageContext.tsx:39 +msgid "Norwegian" +msgstr "" + +#: src/contexts/LanguageContext.tsx:40 +msgid "Polish" +msgstr "" + +#: src/contexts/LanguageContext.tsx:41 +msgid "Portuguese" +msgstr "" + +#: src/contexts/LanguageContext.tsx:42 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: src/contexts/LanguageContext.tsx:43 +msgid "Romanian" +msgstr "" + +#: src/contexts/LanguageContext.tsx:44 +msgid "Russian" +msgstr "" + +#: src/contexts/LanguageContext.tsx:45 +msgid "Slovak" +msgstr "" + +#: src/contexts/LanguageContext.tsx:46 +msgid "Slovenian" +msgstr "" + +#: src/contexts/LanguageContext.tsx:47 +msgid "Swedish" +msgstr "" + +#: src/contexts/LanguageContext.tsx:48 +msgid "Thai" +msgstr "" + +#: src/contexts/LanguageContext.tsx:49 +msgid "Turkish" +msgstr "" + +#: src/contexts/LanguageContext.tsx:50 +msgid "Ukrainian" +msgstr "" + +#: src/contexts/LanguageContext.tsx:51 +msgid "Vietnamese" +msgstr "" + +#: src/contexts/LanguageContext.tsx:52 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/contexts/LanguageContext.tsx:53 +msgid "Chinese (Traditional)" +msgstr "" + +#: src/defaults/actions.tsx:16 +#: src/defaults/links.tsx:26 +#: src/defaults/menuItems.tsx:9 +msgid "Home" +msgstr "" + +#: src/defaults/actions.tsx:23 +#: src/defaults/links.tsx:27 +#: src/defaults/menuItems.tsx:28 +#: src/pages/Index/Dashboard.tsx:19 +#: src/pages/Index/Settings/UserSettings.tsx:42 +msgid "Dashboard" +msgstr "" + +#: src/defaults/actions.tsx:24 +msgid "Go to the InvenTree dashboard" +msgstr "" + +#: src/defaults/actions.tsx:31 +msgid "Visit the documentation to learn more about InvenTree" +msgstr "" + +#: src/defaults/actions.tsx:37 +#: src/defaults/links.tsx:92 +#: src/defaults/links.tsx:122 +msgid "About InvenTree" +msgstr "" + +#: src/defaults/actions.tsx:38 +#: src/defaults/links.tsx:123 +msgid "About the InvenTree org" +msgstr "" + +#: src/defaults/actions.tsx:44 +msgid "Server Information" +msgstr "" + +#: src/defaults/actions.tsx:45 +#: src/defaults/links.tsx:117 +msgid "About this Inventree instance" +msgstr "" + +#: src/defaults/actions.tsx:51 +#: src/defaults/links.tsx:105 +msgid "License Information" +msgstr "" + +#: src/defaults/actions.tsx:52 +#: src/defaults/links.tsx:129 +msgid "Licenses for dependencies of the service" +msgstr "" + +#: src/defaults/actions.tsx:59 +msgid "Open the main navigation menu" +msgstr "" + +#: src/defaults/dashboardItems.tsx:15 +msgid "Subscribed Parts" +msgstr "" + +#: src/defaults/dashboardItems.tsx:22 +msgid "Subscribed Categories" +msgstr "" + +#: src/defaults/dashboardItems.tsx:29 +msgid "Latest Parts" +msgstr "" + +#: src/defaults/dashboardItems.tsx:36 +msgid "BOM Waiting Validation" +msgstr "" + +#: src/defaults/dashboardItems.tsx:43 +msgid "Recently Updated" +msgstr "" + +#: src/defaults/dashboardItems.tsx:50 +#: src/tables/part/PartTable.tsx:216 +msgid "Low Stock" +msgstr "" + +#: src/defaults/dashboardItems.tsx:57 +msgid "Depleted Stock" +msgstr "" + +#: src/defaults/dashboardItems.tsx:64 +msgid "Required for Build Orders" +msgstr "" + +#: src/defaults/dashboardItems.tsx:71 +msgid "Expired Stock" +msgstr "" + +#: src/defaults/dashboardItems.tsx:78 +msgid "Stale Stock" +msgstr "" + +#: src/defaults/dashboardItems.tsx:85 +msgid "Build Orders In Progress" +msgstr "" + +#: src/defaults/dashboardItems.tsx:92 +msgid "Overdue Build Orders" +msgstr "" + +#: src/defaults/dashboardItems.tsx:99 +msgid "Outstanding Purchase Orders" +msgstr "" + +#: src/defaults/dashboardItems.tsx:106 +msgid "Overdue Purchase Orders" +msgstr "" + +#: src/defaults/dashboardItems.tsx:113 +msgid "Outstanding Sales Orders" +msgstr "" + +#: src/defaults/dashboardItems.tsx:120 +msgid "Overdue Sales Orders" +msgstr "" + +#: src/defaults/dashboardItems.tsx:127 +msgid "Current News" +msgstr "" + +#: src/defaults/defaultHostList.tsx:8 +#~ msgid "InvenTree Demo" +#~ msgstr "InvenTree Demo" + +#: src/defaults/defaultHostList.tsx:16 +#~ msgid "Local Server" +#~ msgstr "Local Server" + +#: src/defaults/links.tsx:11 +#: src/pages/company/CompanyDetail.tsx:92 +msgid "Website" +msgstr "" + +#: src/defaults/links.tsx:16 +msgid "GitHub" +msgstr "" + +#: src/defaults/links.tsx:21 +msgid "Demo" +msgstr "" + +#: src/defaults/links.tsx:31 +#: src/defaults/menuItems.tsx:48 +#: src/pages/company/ManufacturerDetail.tsx:9 +#: src/pages/company/ManufacturerPartDetail.tsx:234 +#: src/pages/company/SupplierDetail.tsx:9 +#: src/pages/company/SupplierPartDetail.tsx:292 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 +#: src/pages/purchasing/PurchasingIndex.tsx:52 +msgid "Purchasing" +msgstr "" + +#: src/defaults/links.tsx:32 +#: src/defaults/menuItems.tsx:53 +#: src/pages/company/CustomerDetail.tsx:9 +#: src/pages/sales/ReturnOrderDetail.tsx:331 +#: src/pages/sales/SalesIndex.tsx:45 +#: src/pages/sales/SalesOrderDetail.tsx:355 +msgid "Sales" +msgstr "" + +#: src/defaults/links.tsx:35 +#: src/defaults/menuItems.tsx:71 +#: src/pages/Index/Playground.tsx:221 +msgid "Playground" +msgstr "" + +#: src/defaults/links.tsx:49 +msgid "Getting Started" +msgstr "" + +#: src/defaults/links.tsx:50 +msgid "Getting started with InvenTree" +msgstr "" + +#: src/defaults/links.tsx:56 +msgid "API" +msgstr "" + +#: src/defaults/links.tsx:57 +msgid "InvenTree API documentation" +msgstr "" + +#: src/defaults/links.tsx:62 +msgid "Developer Manual" +msgstr "" + +#: src/defaults/links.tsx:63 +msgid "InvenTree developer manual" +msgstr "" + +#: src/defaults/links.tsx:68 +msgid "FAQ" +msgstr "" + +#: src/defaults/links.tsx:69 +msgid "Frequently asked questions" +msgstr "" + +#: src/defaults/links.tsx:76 +#~ msgid "Instance" +#~ msgstr "Instance" + +#: src/defaults/links.tsx:79 +#: src/defaults/links.tsx:116 +msgid "System Information" +msgstr "" + +#: src/defaults/links.tsx:83 +#~ msgid "InvenTree" +#~ msgstr "InvenTree" + +#: src/defaults/links.tsx:117 +#~ msgid "Licenses for packages used by InvenTree" +#~ msgstr "Licenses for packages used by InvenTree" + +#: src/defaults/links.tsx:128 +msgid "Licenses" +msgstr "" + +#: src/defaults/menuItems.tsx:7 +#~ msgid "Open sourcea" +#~ msgstr "Open sourcea" + +#: src/defaults/menuItems.tsx:9 +#~ msgid "Open source" +#~ msgstr "Open source" + +#: src/defaults/menuItems.tsx:10 +#~ msgid "Start page of your instance." +#~ msgstr "Start page of your instance." + +#: src/defaults/menuItems.tsx:10 +#~ msgid "This Pokémon’s cry is very loud and distracting" +#~ msgstr "This Pokémon’s cry is very loud and distracting" + +#: src/defaults/menuItems.tsx:12 +#~ msgid "This Pokémon’s cry is very loud and distracting and more and more and more" +#~ msgstr "This Pokémon’s cry is very loud and distracting and more and more and more" + +#: src/defaults/menuItems.tsx:15 +#~ msgid "Profile page" +#~ msgstr "Profile page" + +#: src/defaults/menuItems.tsx:17 +msgid "User attributes and design settings." +msgstr "" + +#: src/defaults/menuItems.tsx:21 +#~ msgid "Free for everyone" +#~ msgstr "Free for everyone" + +#: src/defaults/menuItems.tsx:22 +#~ msgid "The fluid of Smeargle’s tail secretions changes" +#~ msgstr "The fluid of Smeargle’s tail secretions changes" + +#: src/defaults/menuItems.tsx:23 +msgid "View for interactive scanning and multiple actions." +msgstr "" + +#: src/defaults/menuItems.tsx:24 +#~ msgid "The fluid of Smeargle’s tail secretions changes in the intensity" +#~ msgstr "The fluid of Smeargle’s tail secretions changes in the intensity" + +#: src/defaults/menuItems.tsx:32 +#~ msgid "abc" +#~ msgstr "abc" + +#: src/defaults/menuItems.tsx:37 +#~ msgid "Random image" +#~ msgstr "Random image" + +#: src/defaults/menuItems.tsx:40 +#~ msgid "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore the feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore the feugait nulla facilisi. Name liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assume. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor" +#~ msgstr "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore the feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore the feugait nulla facilisi. Name liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assume. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor" + +#: src/defaults/menuItems.tsx:105 +#~ msgid "Yanma is capable of seeing 360 degrees without" +#~ msgstr "Yanma is capable of seeing 360 degrees without" + +#: src/defaults/menuItems.tsx:111 +#~ msgid "The shell’s rounded shape and the grooves on its." +#~ msgstr "The shell’s rounded shape and the grooves on its." + +#: src/defaults/menuItems.tsx:116 +#~ msgid "Analytics" +#~ msgstr "Analytics" + +#: src/defaults/menuItems.tsx:118 +#~ msgid "This Pokémon uses its flying ability to quickly chase" +#~ msgstr "This Pokémon uses its flying ability to quickly chase" + +#: src/defaults/menuItems.tsx:125 +#~ msgid "Combusken battles with the intensely hot flames it spews" +#~ msgstr "Combusken battles with the intensely hot flames it spews" + +#: src/forms/AttachmentForms.tsx:57 +#~ msgid "Add File" +#~ msgstr "Add File" + +#: src/forms/AttachmentForms.tsx:57 +#~ msgid "Add Link" +#~ msgstr "Add Link" + +#: src/forms/AttachmentForms.tsx:58 +#~ msgid "File added" +#~ msgstr "File added" + +#: src/forms/AttachmentForms.tsx:58 +#~ msgid "Link added" +#~ msgstr "Link added" + +#: src/forms/AttachmentForms.tsx:99 +#~ msgid "Edit File" +#~ msgstr "Edit File" + +#: src/forms/AttachmentForms.tsx:99 +#~ msgid "Edit Link" +#~ msgstr "Edit Link" + +#: src/forms/AttachmentForms.tsx:100 +#~ msgid "File updated" +#~ msgstr "File updated" + +#: src/forms/AttachmentForms.tsx:100 +#~ msgid "Link updated" +#~ msgstr "Link updated" + +#: src/forms/AttachmentForms.tsx:125 +#~ msgid "Attachment deleted" +#~ msgstr "Attachment deleted" + +#: src/forms/AttachmentForms.tsx:128 +#~ msgid "Are you sure you want to delete this attachment?" +#~ msgstr "Are you sure you want to delete this attachment?" + +#: src/forms/BuildForms.tsx:146 +msgid "Next serial number" +msgstr "" + +#: src/forms/BuildForms.tsx:150 +msgid "Latest serial number" +msgstr "" + +#: src/forms/BuildForms.tsx:222 +msgid "Remove output" +msgstr "" + +#: src/forms/BuildForms.tsx:304 +msgid "Complete Build Outputs" +msgstr "" + +#: src/forms/BuildForms.tsx:308 +msgid "Build outputs have been completed" +msgstr "" + +#: src/forms/BuildForms.tsx:377 +msgid "Scrap Build Outputs" +msgstr "" + +#: src/forms/BuildForms.tsx:381 +msgid "Build outputs have been scrapped" +msgstr "" + +#: src/forms/BuildForms.tsx:413 +#: src/forms/BuildForms.tsx:437 +msgid "Cancel Build Outputs" +msgstr "" + +#: src/forms/BuildForms.tsx:414 +msgid "Selected build outputs will be deleted" +msgstr "" + +#: src/forms/BuildForms.tsx:441 +msgid "Build outputs have been cancelled" +msgstr "" + +#: src/forms/CompanyForms.tsx:150 +#~ msgid "Company updated" +#~ msgstr "Company updated" + +#: src/forms/PartForms.tsx:100 +msgid "Parent part category" +msgstr "" + +#: src/forms/PartForms.tsx:106 +#~ msgid "Create Part" +#~ msgstr "Create Part" + +#: src/forms/PartForms.tsx:108 +#~ msgid "Part created" +#~ msgstr "Part created" + +#: src/forms/PartForms.tsx:129 +#~ msgid "Part updated" +#~ msgstr "Part updated" + +#: src/forms/PurchaseOrderForms.tsx:279 +msgid "Choose Location" +msgstr "" + +#: src/forms/PurchaseOrderForms.tsx:287 +msgid "Item Destination selected" +msgstr "" + +#: src/forms/PurchaseOrderForms.tsx:296 +msgid "Part category default location selected" +msgstr "" + +#: src/forms/PurchaseOrderForms.tsx:306 +msgid "Received stock location selected" +msgstr "" + +#: src/forms/PurchaseOrderForms.tsx:311 +msgid "Default location selected" +msgstr "" + +#: src/forms/PurchaseOrderForms.tsx:322 +#: src/forms/PurchaseOrderForms.tsx:398 +msgid "Scan Barcode" +msgstr "" + +#: src/forms/PurchaseOrderForms.tsx:366 +msgid "Set Location" +msgstr "" + +#: src/forms/PurchaseOrderForms.tsx:373 +msgid "Assign Batch Code{0}" +msgstr "" + +#: src/forms/PurchaseOrderForms.tsx:382 +msgid "Change Status" +msgstr "" + +#: src/forms/PurchaseOrderForms.tsx:407 +#: src/forms/StockForms.tsx:392 +msgid "Remove item from list" +msgstr "" + +#: src/forms/PurchaseOrderForms.tsx:432 +#: src/forms/StockForms.tsx:449 +#: src/forms/StockForms.tsx:483 +#: src/forms/StockForms.tsx:512 +#: src/forms/StockForms.tsx:540 +#: src/forms/StockForms.tsx:571 +#: src/forms/StockForms.tsx:606 +#: src/forms/StockForms.tsx:648 +#: src/forms/StockForms.tsx:684 +#: src/pages/stock/StockDetail.tsx:171 +#: src/tables/ColumnRenderers.tsx:34 +#: src/tables/stock/StockTrackingTable.tsx:85 +msgid "Location" +msgstr "" + +#: src/forms/PurchaseOrderForms.tsx:448 +msgid "Store at default location" +msgstr "" + +#: src/forms/PurchaseOrderForms.tsx:461 +msgid "Store at line item destination" +msgstr "" + +#: src/forms/PurchaseOrderForms.tsx:471 +msgid "Store with already received stock" +msgstr "" + +#: src/forms/PurchaseOrderForms.tsx:627 +msgid "Receive Line Items" +msgstr "" + +#: src/forms/PurchaseOrderForms.tsx:658 +#~ msgid "Receive line items" +#~ msgstr "Receive line items" + +#: src/forms/StockForms.tsx:101 +msgid "Add given quantity as packs instead of individual items" +msgstr "" + +#: src/forms/StockForms.tsx:110 +#~ msgid "Create Stock Item" +#~ msgstr "Create Stock Item" + +#: src/forms/StockForms.tsx:114 +msgid "Enter initial quantity for this stock item" +msgstr "" + +#: src/forms/StockForms.tsx:121 +msgid "Serial Numbers" +msgstr "" + +#: src/forms/StockForms.tsx:122 +msgid "Enter serial numbers for new stock (or leave blank)" +msgstr "" + +#: src/forms/StockForms.tsx:158 +#~ msgid "Stock item updated" +#~ msgstr "Stock item updated" + +#: src/forms/StockForms.tsx:176 +#: src/pages/stock/StockDetail.tsx:377 +#: src/tables/stock/StockItemTable.tsx:382 +#: src/tables/stock/StockItemTable.tsx:499 +msgid "Add Stock Item" +msgstr "" + +#: src/forms/StockForms.tsx:339 +msgid "Loading..." +msgstr "" + +#: src/forms/StockForms.tsx:381 +msgid "Move to default location" +msgstr "" + +#: src/forms/StockForms.tsx:449 +#: src/forms/StockForms.tsx:483 +#: src/forms/StockForms.tsx:512 +#: src/forms/StockForms.tsx:540 +#: src/forms/StockForms.tsx:571 +#: src/forms/StockForms.tsx:606 +#: src/forms/StockForms.tsx:648 +#: src/forms/StockForms.tsx:684 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 +#: src/tables/stock/StockItemTable.tsx:290 +msgid "In Stock" +msgstr "" + +#: src/forms/StockForms.tsx:449 +msgid "Move" +msgstr "" + +#: src/forms/StockForms.tsx:449 +#: src/forms/StockForms.tsx:483 +#: src/forms/StockForms.tsx:512 +#: src/forms/StockForms.tsx:540 +#: src/forms/StockForms.tsx:571 +#: src/forms/StockForms.tsx:606 +#: src/forms/StockForms.tsx:648 +#: src/forms/StockForms.tsx:684 +#: src/tables/RowActions.tsx:149 +msgid "Actions" +msgstr "" + +#: src/forms/StockForms.tsx:512 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 +msgid "Add" +msgstr "" + +#: src/forms/StockForms.tsx:540 +#: src/pages/Index/Scan.tsx:266 +#: src/pages/stock/StockDetail.tsx:446 +msgid "Count" +msgstr "" + +#: src/forms/StockForms.tsx:785 +msgid "Add Stock" +msgstr "" + +#: src/forms/StockForms.tsx:794 +msgid "Remove Stock" +msgstr "" + +#: src/forms/StockForms.tsx:803 +#: src/pages/part/PartDetail.tsx:788 +msgid "Transfer Stock" +msgstr "" + +#: src/forms/StockForms.tsx:812 +#: src/pages/part/PartDetail.tsx:777 +msgid "Count Stock" +msgstr "" + +#: src/forms/StockForms.tsx:821 +msgid "Change Stock Status" +msgstr "" + +#: src/forms/StockForms.tsx:830 +msgid "Merge Stock" +msgstr "" + +#: src/forms/StockForms.tsx:849 +msgid "Delete Stock Items" +msgstr "" + +#: src/forms/StockForms.tsx:856 +msgid "Parent stock location" +msgstr "" + +#: src/functions/auth.tsx:34 +#~ msgid "Error fetching token from server." +#~ msgstr "Error fetching token from server." + +#: src/functions/auth.tsx:36 +#~ msgid "Logout successfull" +#~ msgstr "Logout successfull" + +#: src/functions/auth.tsx:60 +#~ msgid "See you soon." +#~ msgstr "See you soon." + +#: src/functions/auth.tsx:70 +#~ msgid "Logout successful" +#~ msgstr "Logout successful" + +#: src/functions/auth.tsx:71 +#~ msgid "You have been logged out" +#~ msgstr "You have been logged out" + +#: src/functions/auth.tsx:118 +msgid "Logged Out" +msgstr "" + +#: src/functions/auth.tsx:119 +msgid "Successfully logged out" +msgstr "" + +#: src/functions/auth.tsx:141 +#~ msgid "Already logged in" +#~ msgstr "Already logged in" + +#: src/functions/auth.tsx:142 +#~ msgid "Found an existing login - using it to log you in." +#~ msgstr "Found an existing login - using it to log you in." + +#: src/functions/auth.tsx:143 +#~ msgid "Found an existing login - welcome back!" +#~ msgstr "Found an existing login - welcome back!" + +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "" + +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "" + +#: src/functions/auth.tsx:195 +msgid "Logged In" +msgstr "" + +#: src/functions/auth.tsx:196 +msgid "Successfully logged in" +msgstr "" + +#: src/functions/forms.tsx:50 +#~ msgid "Form method not provided" +#~ msgstr "Form method not provided" + +#: src/functions/forms.tsx:59 +#~ msgid "Response did not contain action data" +#~ msgstr "Response did not contain action data" + +#: src/functions/forms.tsx:182 +msgid "Invalid Form" +msgstr "" + +#: src/functions/forms.tsx:183 +msgid "method parameter not supplied" +msgstr "" + +#: src/functions/notifications.tsx:10 +msgid "Not implemented" +msgstr "" + +#: src/functions/notifications.tsx:11 +msgid "This feature is not yet implemented" +msgstr "" + +#: src/functions/notifications.tsx:21 +msgid "Permission denied" +msgstr "" + +#: src/functions/notifications.tsx:22 +msgid "You do not have permission to perform this action" +msgstr "" + +#: src/functions/notifications.tsx:33 +msgid "Invalid Return Code" +msgstr "" + +#: src/functions/notifications.tsx:34 +msgid "Server returned status {returnCode}" +msgstr "" + +#: src/hooks/UseForm.tsx:88 +msgid "Item Created" +msgstr "" + +#: src/hooks/UseForm.tsx:105 +msgid "Item Updated" +msgstr "" + +#: src/hooks/UseForm.tsx:124 +msgid "Item Deleted" +msgstr "" + +#: src/hooks/UseForm.tsx:128 +msgid "Are you sure you want to delete this item?" +msgstr "" + +#: src/pages/Auth/Logged-In.tsx:23 +msgid "Checking if you are already logged in" +msgstr "" + +#: src/pages/Auth/Login.tsx:31 +#: src/pages/Index/Scan.tsx:329 +msgid "No selection" +msgstr "" + +#: src/pages/Auth/Login.tsx:87 +msgid "Welcome, log in below" +msgstr "" + +#: src/pages/Auth/Login.tsx:89 +msgid "Register below" +msgstr "" + +#: src/pages/Auth/Login.tsx:121 +#~ msgid "Edit host options" +#~ msgstr "Edit host options" + +#: src/pages/Auth/Logout.tsx:23 +msgid "Logging out" +msgstr "" + +#: src/pages/Auth/Reset.tsx:41 +#: src/pages/Auth/Set-Password.tsx:112 +msgid "Send mail" +msgstr "" + +#: src/pages/Auth/Set-Password.tsx:30 +msgid "Token invalid" +msgstr "" + +#: src/pages/Auth/Set-Password.tsx:31 +msgid "You need to provide a valid token to set a new password. Check your inbox for a reset link." +msgstr "" + +#: src/pages/Auth/Set-Password.tsx:49 +msgid "No token provided" +msgstr "" + +#: src/pages/Auth/Set-Password.tsx:50 +msgid "You need to provide a token to set a new password. Check your inbox for a reset link." +msgstr "" + +#: src/pages/Auth/Set-Password.tsx:73 +msgid "Password set" +msgstr "" + +#: src/pages/Auth/Set-Password.tsx:74 +msgid "The password was set successfully. You can now login with your new password" +msgstr "" + +#: src/pages/Auth/Set-Password.tsx:101 +msgid "Set new password" +msgstr "" + +#: src/pages/ErrorPage.tsx:17 +msgid "Error: {0}" +msgstr "" + +#: src/pages/ErrorPage.tsx:28 +msgid "Sorry, an unexpected error has occurred." +msgstr "" + +#: src/pages/Index/Dashboard.tsx:22 +msgid "Autoupdate" +msgstr "" + +#: src/pages/Index/Dashboard.tsx:26 +msgid "This page is a replacement for the old start page with the same information. This page will be deprecated and replaced by the home page." +msgstr "" + +#: src/pages/Index/Home.tsx:58 +msgid "Welcome to your Dashboard{0}" +msgstr "" + +#: src/pages/Index/Playground.tsx:226 +msgid "This page is a showcase for the possibilities of Platform UI." +msgstr "" + +#: src/pages/Index/Profile/Profile.tsx:30 +#: src/pages/Index/Profile/Profile.tsx:141 +#~ msgid "Notification Settings" +#~ msgstr "Notification Settings" + +#: src/pages/Index/Profile/Profile.tsx:33 +#~ msgid "Global Settings" +#~ msgstr "Global Settings" + +#: src/pages/Index/Profile/Profile.tsx:47 +#~ msgid "Settings for the current user" +#~ msgstr "Settings for the current user" + +#: src/pages/Index/Profile/Profile.tsx:51 +#~ msgid "Home Page Settings" +#~ msgstr "Home Page Settings" + +#: src/pages/Index/Profile/Profile.tsx:76 +#~ msgid "Search Settings" +#~ msgstr "Search Settings" + +#: src/pages/Index/Profile/Profile.tsx:115 +#: src/pages/Index/Profile/Profile.tsx:211 +#~ msgid "Label Settings" +#~ msgstr "Label Settings" + +#: src/pages/Index/Profile/Profile.tsx:120 +#: src/pages/Index/Profile/Profile.tsx:219 +#~ msgid "Report Settings" +#~ msgstr "Report Settings" + +#: src/pages/Index/Profile/Profile.tsx:142 +#~ msgid "Settings for the notifications" +#~ msgstr "Settings for the notifications" + +#: src/pages/Index/Profile/Profile.tsx:148 +#~ msgid "Global Server Settings" +#~ msgstr "Global Server Settings" + +#: src/pages/Index/Profile/Profile.tsx:149 +#~ msgid "Global Settings for this instance" +#~ msgstr "Global Settings for this instance" + +#: src/pages/Index/Profile/Profile.tsx:153 +#~ msgid "Server Settings" +#~ msgstr "Server Settings" + +#: src/pages/Index/Profile/Profile.tsx:187 +#~ msgid "Login Settings" +#~ msgstr "Login Settings" + +#: src/pages/Index/Profile/Profile.tsx:202 +#~ msgid "Barcode Settings" +#~ msgstr "Barcode Settings" + +#: src/pages/Index/Profile/Profile.tsx:230 +#~ msgid "Part Settings" +#~ msgstr "Part Settings" + +#: src/pages/Index/Profile/Profile.tsx:255 +#~ msgid "Pricing Settings" +#~ msgstr "Pricing Settings" + +#: src/pages/Index/Profile/Profile.tsx:270 +#~ msgid "Stock Settings" +#~ msgstr "Stock Settings" + +#: src/pages/Index/Profile/Profile.tsx:284 +#~ msgid "Build Order Settings" +#~ msgstr "Build Order Settings" + +#: src/pages/Index/Profile/Profile.tsx:289 +#~ msgid "Purchase Order Settings" +#~ msgstr "Purchase Order Settings" + +#: src/pages/Index/Profile/Profile.tsx:300 +#~ msgid "Sales Order Settings" +#~ msgstr "Sales Order Settings" + +#: src/pages/Index/Profile/Profile.tsx:330 +#~ msgid "Plugin Settings for this instance" +#~ msgstr "Plugin Settings for this instance" + +#: src/pages/Index/Profile/SettingsPanel.tsx:27 +#~ msgid "Data is current beeing loaded" +#~ msgstr "Data is current beeing loaded" + +#: src/pages/Index/Profile/SettingsPanel.tsx:69 +#: src/pages/Index/Profile/SettingsPanel.tsx:76 +#~ msgid "Failed to load" +#~ msgstr "Failed to load" + +#: src/pages/Index/Profile/SettingsPanel.tsx:100 +#~ msgid "Show internal names" +#~ msgstr "Show internal names" + +#: src/pages/Index/Profile/SettingsPanel.tsx:148 +#~ msgid "Input {0} is not known" +#~ msgstr "Input {0} is not known" + +#: src/pages/Index/Profile/SettingsPanel.tsx:161 +#~ msgid "Saved changes {0}" +#~ msgstr "Saved changes {0}" + +#: src/pages/Index/Profile/SettingsPanel.tsx:162 +#~ msgid "Changed to {0}" +#~ msgstr "Changed to {0}" + +#: src/pages/Index/Profile/SettingsPanel.tsx:176 +#~ msgid "Error while saving {0}" +#~ msgstr "Error while saving {0}" + +#: src/pages/Index/Profile/SettingsPanel.tsx:177 +#~ msgid "Error was {err}" +#~ msgstr "Error was {err}" + +#: src/pages/Index/Profile/SettingsPanel.tsx:257 +#~ msgid "Plugin: {0}" +#~ msgstr "Plugin: {0}" + +#: src/pages/Index/Profile/SettingsPanel.tsx:262 +#~ msgid "Method: {0}" +#~ msgstr "Method: {0}" + +#: src/pages/Index/Profile/UserPanel.tsx:85 +#~ msgid "Userinfo" +#~ msgstr "Userinfo" + +#: src/pages/Index/Profile/UserPanel.tsx:122 +#~ msgid "Username: {0}" +#~ msgstr "Username: {0}" + +#: src/pages/Index/Profile/UserTheme.tsx:83 +#~ msgid "Design <0/>" +#~ msgstr "Design <0/>" + +#: src/pages/Index/Scan.tsx:216 +msgid "Manual input" +msgstr "" + +#: src/pages/Index/Scan.tsx:217 +msgid "Image Barcode" +msgstr "" + +#: src/pages/Index/Scan.tsx:247 +msgid "Selected elements are not known" +msgstr "" + +#: src/pages/Index/Scan.tsx:254 +msgid "Multiple object types selected" +msgstr "" + +#: src/pages/Index/Scan.tsx:261 +msgid "Actions for {0}" +msgstr "" + +#: src/pages/Index/Scan.tsx:282 +msgid "Scan Page" +msgstr "" + +#: src/pages/Index/Scan.tsx:285 +msgid "This page can be used for continuously scanning items and taking actions on them." +msgstr "" + +#: src/pages/Index/Scan.tsx:292 +msgid "Toggle Fullscreen" +msgstr "" + +#: src/pages/Index/Scan.tsx:305 +msgid "Select the input method you want to use to scan items." +msgstr "" + +#: src/pages/Index/Scan.tsx:307 +msgid "Input" +msgstr "" + +#: src/pages/Index/Scan.tsx:314 +msgid "Select input method" +msgstr "" + +#: src/pages/Index/Scan.tsx:315 +msgid "Nothing found" +msgstr "" + +#: src/pages/Index/Scan.tsx:323 +msgid "Depending on the selected parts actions will be shown here. Not all barcode types are supported currently." +msgstr "" + +#: src/pages/Index/Scan.tsx:325 +msgid "Action" +msgstr "" + +#: src/pages/Index/Scan.tsx:334 +msgid "{0} items selected" +msgstr "" + +#: src/pages/Index/Scan.tsx:337 +msgid "General Actions" +msgstr "" + +#: src/pages/Index/Scan.tsx:351 +msgid "Lookup part" +msgstr "" + +#: src/pages/Index/Scan.tsx:359 +msgid "Open Link" +msgstr "" + +#: src/pages/Index/Scan.tsx:375 +msgid "History is locally kept in this browser." +msgstr "" + +#: src/pages/Index/Scan.tsx:376 +msgid "The history is kept in this browser's local storage. So it won't be shared with other users or other devices but is persistent through reloads. You can select items in the history to perform actions on them. To add items, scan/enter them in the Input area." +msgstr "" + +#: src/pages/Index/Scan.tsx:378 +#: src/pages/Notifications.tsx:100 +msgid "History" +msgstr "" + +#: src/pages/Index/Scan.tsx:384 +msgid "Delete History" +msgstr "" + +#: src/pages/Index/Scan.tsx:449 +msgid "No history" +msgstr "" + +#: src/pages/Index/Scan.tsx:467 +msgid "Item" +msgstr "" + +#: src/pages/Index/Scan.tsx:470 +msgid "Type" +msgstr "" + +#: src/pages/Index/Scan.tsx:473 +msgid "Source" +msgstr "" + +#: src/pages/Index/Scan.tsx:476 +msgid "Scanned at" +msgstr "" + +#: src/pages/Index/Scan.tsx:528 +msgid "Enter item serial or data" +msgstr "" + +#: src/pages/Index/Scan.tsx:540 +msgid "Add dummy item" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:37 +msgid "Account Details" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:46 +msgid "First name" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51 +msgid "Last name" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:58 +#~ msgid "First name: {0}" +#~ msgstr "First name: {0}" + +#: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:61 +#~ msgid "Last name: {0}" +#~ msgstr "Last name: {0}" + +#: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:63 +msgid "First name:" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:67 +msgid "Last name:" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/DisplaySettingsPanel.tsx:41 +msgid "Use pseudo language" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:53 +msgid "Single Sign On Accounts" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:60 +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:78 +msgid "Not enabled" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:63 +msgid "Single Sign On is not enabled for this server" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:67 +msgid "Multifactor" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:81 +msgid "Multifactor authentication is not configured for your account" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:132 +msgid "The following email addresses are associated with your account:" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:144 +msgid "Primary" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:149 +msgid "Verified" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:153 +msgid "Unverified" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:166 +msgid "Add Email Address" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:169 +msgid "E-Mail" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:170 +msgid "E-Mail address" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:182 +msgid "Make Primary" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:187 +msgid "Re-send Verification" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:198 +msgid "Add Email" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:263 +msgid "Provider has not been configured" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:273 +msgid "Not configured" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:276 +msgid "There are no social network accounts connected to this account." +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:286 +msgid "You can sign in to your account using any of the following third party accounts" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:65 +msgid "bars" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:66 +msgid "oval" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:67 +msgid "dots" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:81 +msgid "Theme" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:87 +msgid "Primary color" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:100 +msgid "White color" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:108 +msgid "Black color" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:116 +msgid "Border Radius" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:132 +msgid "Loader" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter.tsx:30 +#~ msgid "User Management" +#~ msgstr "User Management" + +#: src/pages/Index/Settings/AdminCenter.tsx:91 +#~ msgid "Advanced Amininistrative Options for InvenTree" +#~ msgstr "Advanced Amininistrative Options for InvenTree" + +#: src/pages/Index/Settings/AdminCenter/Index.tsx:87 +msgid "Background Tasks" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/Index.tsx:93 +msgid "Error Reports" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/Index.tsx:99 +msgid "Currencies" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/Index.tsx:117 +msgid "Custom Units" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/Index.tsx:123 +#: src/pages/part/CategoryDetail.tsx:255 +msgid "Part Parameters" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/Index.tsx:127 +#~ msgid "Templates" +#~ msgstr "Templates" + +#: src/pages/Index/Settings/AdminCenter/Index.tsx:129 +msgid "Category Parameters" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/Index.tsx:147 +msgid "Location types" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/Index.tsx:159 +#: src/tables/machine/MachineTypeTable.tsx:287 +msgid "Machines" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/Index.tsx:169 +msgid "Quick Actions" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/Index.tsx:174 +msgid "Add a new user" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/Index.tsx:193 +msgid "Advanced Options" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/MachineManagementPanel.tsx:43 +msgid "Machine types" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/MachineManagementPanel.tsx:53 +msgid "Machine Error Stack" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/MachineManagementPanel.tsx:62 +msgid "There are no machine registry errors." +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:28 +#: src/tables/settings/UserTable.tsx:116 +msgid "Info" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:32 +msgid "External plugins are not enabled for this InvenTree installation." +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:33 +#~ msgid "Plugin Error Stack" +#~ msgstr "Plugin Error Stack" + +#: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:45 +#~ msgid "Warning" +#~ msgstr "Warning" + +#: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:47 +#~ msgid "Changing the settings below require you to immediately restart the server. Do not change this while under active usage." +#~ msgstr "Changing the settings below require you to immediately restart the server. Do not change this while under active usage." + +#: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:50 +msgid "Plugin Errors" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:59 +msgid "Plugin Settings" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:53 +msgid "Background Worker Not Running" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:54 +msgid "The background task manager service is not running. Contact your system administrator." +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:60 +#: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:76 +msgid "Pending Tasks" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:64 +#: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:84 +msgid "Scheduled Tasks" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:68 +#: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:92 +msgid "Failed Tasks" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:39 +#~ msgid "Label" +#~ msgstr "Label" + +#: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67 +#~ msgid "Stock item" +#~ msgstr "Stock item" + +#: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:76 +#~ msgid "Build line" +#~ msgstr "Build line" + +#: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:88 +#~ msgid "Reports" +#~ msgstr "Reports" + +#: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:89 +#: src/pages/build/BuildDetail.tsx:373 +#~ msgid "Report" +#~ msgstr "Report" + +#: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:99 +#~ msgid "Purchase order" +#~ msgstr "Purchase order" + +#: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108 +#~ msgid "Sales order" +#~ msgstr "Sales order" + +#: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:117 +#~ msgid "Return order" +#~ msgstr "Return order" + +#: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:145 +#~ msgid "Tests" +#~ msgstr "Tests" + +#: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:154 +#~ msgid "Stock location" +#~ msgstr "Stock location" + +#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:18 +#: src/tables/settings/UserTable.tsx:135 +msgid "Groups" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:30 +msgid "Select settings relevant for user lifecycle. More available in" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:35 +msgid "System settings" +msgstr "" + +#: src/pages/Index/Settings/SystemSettings.tsx:65 +msgid "Login" +msgstr "" + +#: src/pages/Index/Settings/SystemSettings.tsx:87 +msgid "Barcodes" +msgstr "" + +#: src/pages/Index/Settings/SystemSettings.tsx:107 +msgid "Pricing" +msgstr "" + +#: src/pages/Index/Settings/SystemSettings.tsx:118 +#~ msgid "Physical Units" +#~ msgstr "Physical Units" + +#: src/pages/Index/Settings/SystemSettings.tsx:135 +#~ msgid "Exchange Rates" +#~ msgstr "Exchange Rates" + +#: src/pages/Index/Settings/SystemSettings.tsx:142 +msgid "Labels" +msgstr "" + +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 +msgid "Reporting" +msgstr "" + +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 +#: src/tables/stock/StockItemTable.tsx:221 +msgid "Stocktake" +msgstr "" + +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 +#: src/pages/build/BuildIndex.tsx:14 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 +msgid "Build Orders" +msgstr "" + +#: src/pages/Index/Settings/SystemSettings.tsx:303 +msgid "Switch to User Setting" +msgstr "" + +#: src/pages/Index/Settings/UserSettings.tsx:30 +msgid "Account" +msgstr "" + +#: src/pages/Index/Settings/UserSettings.tsx:36 +msgid "Security" +msgstr "" + +#: src/pages/Index/Settings/UserSettings.tsx:48 +msgid "Display Options" +msgstr "" + +#: src/pages/Index/Settings/UserSettings.tsx:118 +msgid "Account Settings" +msgstr "" + +#: src/pages/Index/Settings/UserSettings.tsx:122 +msgid "Switch to System Setting" +msgstr "" + +#: src/pages/Index/UserSettings.tsx:103 +#~ msgid "User Settings" +#~ msgstr "User Settings" + +#: src/pages/Logged-In.tsx:24 +#~ msgid "Found an exsisting login - using it to log you in." +#~ msgstr "Found an exsisting login - using it to log you in." + +#: src/pages/NotFound.tsx:17 +msgid "Not Found" +msgstr "" + +#: src/pages/NotFound.tsx:20 +msgid "Sorry, this page is not known or was moved." +msgstr "" + +#: src/pages/NotFound.tsx:27 +msgid "Go to the start page" +msgstr "" + +#: src/pages/Notifications.tsx:43 +msgid "Delete Notifications" +msgstr "" + +#: src/pages/Notifications.tsx:108 +msgid "Mark as unread" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:80 +#~ msgid "Build Status" +#~ msgstr "Build Status" + +#: src/pages/build/BuildDetail.tsx:89 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:130 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 +#: src/tables/build/BuildOrderTable.tsx:113 +#: src/tables/machine/MachineListTable.tsx:326 +#: src/tables/purchasing/PurchaseOrderTable.tsx:55 +#: src/tables/sales/ReturnOrderTable.tsx:46 +#: src/tables/sales/SalesOrderTable.tsx:52 +#: src/tables/stock/StockItemTable.tsx:259 +#: src/tables/stock/StockTrackingTable.tsx:52 +msgid "Status" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:95 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:103 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 +#: src/tables/ColumnRenderers.tsx:106 +#: src/tables/build/BuildLineTable.tsx:140 +msgid "Reference" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:100 +#: src/pages/company/CompanyDetail.tsx:86 +#: src/pages/company/ManufacturerPartDetail.tsx:76 +#: src/pages/company/SupplierPartDetail.tsx:83 +#: src/pages/part/CategoryDetail.tsx:92 +#: src/pages/part/PartDetail.tsx:135 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:124 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 +#: src/pages/stock/LocationDetail.tsx:99 +#: src/tables/ColumnRenderers.tsx:66 +#: src/tables/machine/MachineTypeTable.tsx:69 +#: src/tables/machine/MachineTypeTable.tsx:112 +#: src/tables/machine/MachineTypeTable.tsx:219 +#: src/tables/machine/MachineTypeTable.tsx:323 +#: src/tables/part/RelatedPartTable.tsx:64 +#: src/tables/plugin/PluginListTable.tsx:129 +#: src/tables/plugin/PluginListTable.tsx:276 +#: src/tables/stock/LocationTypesTable.tsx:65 +msgid "Description" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:107 +msgid "Parent Build" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:118 +msgid "Build Quantity" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:126 +#: src/pages/build/BuildDetail.tsx:256 +msgid "Completed Outputs" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:143 +#: src/tables/build/BuildOrderTable.tsx:142 +msgid "Issued By" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:150 +#: src/pages/part/PartDetail.tsx:323 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:216 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 +#: src/tables/build/BuildOrderTable.tsx:148 +#: src/tables/purchasing/PurchaseOrderTable.tsx:75 +#: src/tables/sales/ReturnOrderTable.tsx:66 +#: src/tables/sales/SalesOrderTable.tsx:72 +msgid "Responsible" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:157 +#: src/tables/settings/PendingTasksTable.tsx:30 +msgid "Created" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:164 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:209 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 +#: src/tables/ColumnRenderers.tsx:191 +msgid "Target Date" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:171 +msgid "Completed" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:183 +msgid "Source Location" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:184 +msgid "Any location" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:185 +#: src/pages/part/PartDetail.tsx:269 +#: src/pages/stock/StockDetail.tsx:150 +#~ msgid "View part barcode" +#~ msgstr "View part barcode" + +#: src/pages/build/BuildDetail.tsx:190 +#: src/pages/part/PartDetail.tsx:274 +#~ msgid "Link custom barcode to part" +#~ msgstr "Link custom barcode to part" + +#: src/pages/build/BuildDetail.tsx:191 +msgid "Destination Location" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:196 +#: src/pages/part/PartDetail.tsx:280 +#~ msgid "Unlink custom barcode from part" +#~ msgstr "Unlink custom barcode from part" + +#: src/pages/build/BuildDetail.tsx:197 +#: src/pages/stock/StockDetail.tsx:537 +msgid "Batch Code" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:202 +#~ msgid "Build Order updated" +#~ msgstr "Build Order updated" + +#: src/pages/build/BuildDetail.tsx:221 +#~ msgid "Edit build order" +#~ msgstr "Edit build order" + +#: src/pages/build/BuildDetail.tsx:226 +#~ msgid "Duplicate build order" +#~ msgstr "Duplicate build order" + +#: src/pages/build/BuildDetail.tsx:229 +msgid "Build Details" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:231 +#~ msgid "Delete build order" +#~ msgstr "Delete build order" + +#: src/pages/build/BuildDetail.tsx:235 +#: src/tables/build/BuildLineTable.tsx:225 +msgid "Allocate Stock" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:249 +msgid "Incomplete Outputs" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:271 +msgid "Consumed Stock" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:285 +msgid "Child Build Orders" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:295 +#: src/pages/company/CompanyDetail.tsx:255 +#: src/pages/company/ManufacturerPartDetail.tsx:172 +#: src/pages/part/PartDetail.tsx:622 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 +msgid "Attachments" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 +#: src/tables/stock/StockTrackingTable.tsx:189 +msgid "Notes" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:321 +msgid "Edit Build Order" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:330 +msgid "Cancel Build Order" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:342 +#: src/tables/build/BuildOrderTable.tsx:167 +#: src/tables/build/BuildOrderTable.tsx:182 +msgid "Add Build Order" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:368 +#~ msgid "Reporting Actions" +#~ msgstr "Reporting Actions" + +#: src/pages/build/BuildDetail.tsx:374 +msgid "Build Order Actions" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "Print build report" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 +msgid "Cancel order" +msgstr "" + +#: src/pages/build/BuildIndex.tsx:23 +#~ msgid "Build order created" +#~ msgstr "Build order created" + +#: src/pages/build/BuildIndex.tsx:39 +#~ msgid "New Build Order" +#~ msgstr "New Build Order" + +#: src/pages/company/CompanyDetail.tsx:100 +msgid "Phone Number" +msgstr "" + +#: src/pages/company/CompanyDetail.tsx:107 +msgid "Email Address" +msgstr "" + +#: src/pages/company/CompanyDetail.tsx:117 +msgid "Default Currency" +msgstr "" + +#: src/pages/company/CompanyDetail.tsx:122 +#: src/pages/company/SupplierDetail.tsx:8 +#: src/pages/company/SupplierPartDetail.tsx:107 +#: src/pages/company/SupplierPartDetail.tsx:193 +#: src/pages/company/SupplierPartDetail.tsx:296 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:118 +#: src/tables/company/CompanyTable.tsx:100 +#: src/tables/purchasing/PurchaseOrderTable.tsx:88 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:36 +msgid "Supplier" +msgstr "" + +#: src/pages/company/CompanyDetail.tsx:128 +#: src/pages/company/ManufacturerDetail.tsx:8 +#: src/pages/company/ManufacturerPartDetail.tsx:94 +#: src/pages/company/ManufacturerPartDetail.tsx:238 +#: src/pages/company/SupplierPartDetail.tsx:122 +#: src/tables/company/CompanyTable.tsx:105 +msgid "Manufacturer" +msgstr "" + +#: src/pages/company/CompanyDetail.tsx:134 +#: src/pages/company/CustomerDetail.tsx:8 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 +#: src/tables/company/CompanyTable.tsx:110 +#: src/tables/sales/ReturnOrderTable.tsx:78 +#: src/tables/sales/SalesOrderTable.tsx:107 +#: src/tables/stock/StockTrackingTable.tsx:140 +msgid "Customer" +msgstr "" + +#: src/pages/company/CompanyDetail.tsx:168 +#: src/tables/stock/StockTrackingTable.tsx:183 +msgid "Details" +msgstr "" + +#: src/pages/company/CompanyDetail.tsx:174 +msgid "Manufactured Parts" +msgstr "" + +#: src/pages/company/CompanyDetail.tsx:175 +#~ msgid "Edit company" +#~ msgstr "Edit company" + +#: src/pages/company/CompanyDetail.tsx:183 +msgid "Supplied Parts" +msgstr "" + +#: src/pages/company/CompanyDetail.tsx:189 +#~ msgid "Delete company" +#~ msgstr "Delete company" + +#: src/pages/company/CompanyDetail.tsx:228 +msgid "Assigned Stock" +msgstr "" + +#: src/pages/company/CompanyDetail.tsx:286 +#: src/tables/company/CompanyTable.tsx:86 +msgid "Edit Company" +msgstr "" + +#: src/pages/company/CompanyDetail.tsx:295 +msgid "Company Actions" +msgstr "" + +#: src/pages/company/ManufacturerPartDetail.tsx:69 +#: src/pages/company/SupplierPartDetail.tsx:76 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:72 +msgid "Internal Part" +msgstr "" + +#: src/pages/company/ManufacturerPartDetail.tsx:84 +#: src/pages/company/SupplierPartDetail.tsx:90 +msgid "External Link" +msgstr "" + +#: src/pages/company/ManufacturerPartDetail.tsx:102 +#: src/pages/company/SupplierPartDetail.tsx:131 +#: src/tables/purchasing/ManufacturerPartTable.tsx:56 +msgid "Manufacturer Part Number" +msgstr "" + +#: src/pages/company/ManufacturerPartDetail.tsx:131 +msgid "Manufacturer Details" +msgstr "" + +#: src/pages/company/ManufacturerPartDetail.tsx:140 +msgid "Manufacturer Part Details" +msgstr "" + +#: src/pages/company/ManufacturerPartDetail.tsx:146 +#: src/pages/part/PartDetail.tsx:492 +msgid "Parameters" +msgstr "" + +#: src/pages/company/ManufacturerPartDetail.tsx:158 +#: src/pages/part/PartDetail.tsx:566 +#: src/pages/purchasing/PurchasingIndex.tsx:26 +msgid "Suppliers" +msgstr "" + +#: src/pages/company/ManufacturerPartDetail.tsx:189 +#: src/tables/purchasing/ManufacturerPartTable.tsx:84 +msgid "Edit Manufacturer Part" +msgstr "" + +#: src/pages/company/ManufacturerPartDetail.tsx:196 +#: src/tables/purchasing/ManufacturerPartTable.tsx:72 +#: src/tables/purchasing/ManufacturerPartTable.tsx:103 +msgid "Add Manufacturer Part" +msgstr "" + +#: src/pages/company/ManufacturerPartDetail.tsx:212 +msgid "Manufacturer Part Actions" +msgstr "" + +#: src/pages/company/ManufacturerPartDetail.tsx:250 +msgid "ManufacturerPart" +msgstr "" + +#: src/pages/company/SupplierPartDetail.tsx:97 +#: src/tables/ColumnRenderers.tsx:117 +msgid "Note" +msgstr "" + +#: src/pages/company/SupplierPartDetail.tsx:115 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:57 +msgid "SKU" +msgstr "" + +#: src/pages/company/SupplierPartDetail.tsx:143 +#: src/pages/company/SupplierPartDetail.tsx:194 +#: src/pages/stock/StockDetail.tsx:234 +msgid "Packaging" +msgstr "" + +#: src/pages/company/SupplierPartDetail.tsx:150 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:107 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:143 +#: src/tables/purchasing/SupplierPartTable.tsx:131 +msgid "Pack Quantity" +msgstr "" + +#: src/pages/company/SupplierPartDetail.tsx:161 +msgid "Supplier Availability" +msgstr "" + +#: src/pages/company/SupplierPartDetail.tsx:168 +msgid "Availability Updated" +msgstr "" + +#: src/pages/company/SupplierPartDetail.tsx:195 +msgid "Availability" +msgstr "" + +#: src/pages/company/SupplierPartDetail.tsx:204 +msgid "Supplier Part Details" +msgstr "" + +#: src/pages/company/SupplierPartDetail.tsx:210 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:265 +msgid "Received Stock" +msgstr "" + +#: src/pages/company/SupplierPartDetail.tsx:234 +#: src/pages/part/PartPricingPanel.tsx:115 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 +msgid "Supplier Pricing" +msgstr "" + +#: src/pages/company/SupplierPartDetail.tsx:249 +msgid "Supplier Part Actions" +msgstr "" + +#: src/pages/company/SupplierPartDetail.tsx:273 +#: src/tables/purchasing/SupplierPartTable.tsx:210 +msgid "Edit Supplier Part" +msgstr "" + +#: src/pages/company/SupplierPartDetail.tsx:280 +#: src/tables/purchasing/SupplierPartTable.tsx:163 +msgid "Add Supplier Part" +msgstr "" + +#: src/pages/part/CategoryDetail.tsx:84 +#: src/pages/stock/LocationDetail.tsx:91 +#: src/tables/settings/ErrorTable.tsx:34 +msgid "Path" +msgstr "" + +#: src/pages/part/CategoryDetail.tsx:100 +msgid "Parent Category" +msgstr "" + +#: src/pages/part/CategoryDetail.tsx:117 +msgid "Subcategories" +msgstr "" + +#: src/pages/part/CategoryDetail.tsx:124 +#: src/pages/stock/LocationDetail.tsx:131 +#: src/tables/part/PartCategoryTable.tsx:65 +msgid "Structural" +msgstr "" + +#: src/pages/part/CategoryDetail.tsx:130 +msgid "Parent default location" +msgstr "" + +#: src/pages/part/CategoryDetail.tsx:137 +msgid "Default location" +msgstr "" + +#: src/pages/part/CategoryDetail.tsx:148 +msgid "Top level part category" +msgstr "" + +#: src/pages/part/CategoryDetail.tsx:158 +#: src/pages/part/CategoryDetail.tsx:212 +#: src/tables/part/PartCategoryTable.tsx:88 +msgid "Edit Part Category" +msgstr "" + +#: src/pages/part/CategoryDetail.tsx:171 +#: src/pages/stock/LocationDetail.tsx:223 +msgid "Delete items" +msgstr "" + +#: src/pages/part/CategoryDetail.tsx:179 +#: src/pages/part/CategoryDetail.tsx:217 +msgid "Delete Part Category" +msgstr "" + +#: src/pages/part/CategoryDetail.tsx:182 +msgid "Parts Action" +msgstr "" + +#: src/pages/part/CategoryDetail.tsx:183 +msgid "Action for parts in this category" +msgstr "" + +#: src/pages/part/CategoryDetail.tsx:188 +msgid "Child Categories Action" +msgstr "" + +#: src/pages/part/CategoryDetail.tsx:189 +msgid "Action for child categories in this category" +msgstr "" + +#: src/pages/part/CategoryDetail.tsx:207 +msgid "Category Actions" +msgstr "" + +#: src/pages/part/CategoryDetail.tsx:229 +msgid "Category Details" +msgstr "" + +#: src/pages/part/PartDetail.tsx:141 +msgid "Variant of" +msgstr "" + +#: src/pages/part/PartDetail.tsx:148 +#: src/tables/notifications/NotificationsTable.tsx:31 +#: src/tables/part/PartCategoryTemplateTable.tsx:67 +msgid "Category" +msgstr "" + +#: src/pages/part/PartDetail.tsx:154 +msgid "Default Location" +msgstr "" + +#: src/pages/part/PartDetail.tsx:161 +msgid "Category Default Location" +msgstr "" + +#: src/pages/part/PartDetail.tsx:168 +msgid "IPN" +msgstr "" + +#: src/pages/part/PartDetail.tsx:175 +msgid "Revision" +msgstr "" + +#: src/pages/part/PartDetail.tsx:182 +#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 +msgid "Units" +msgstr "" + +#: src/pages/part/PartDetail.tsx:189 +#: src/tables/settings/PendingTasksTable.tsx:40 +msgid "Keywords" +msgstr "" + +#: src/pages/part/PartDetail.tsx:196 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:182 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 +msgid "Link" +msgstr "" + +#: src/pages/part/PartDetail.tsx:214 +#: src/tables/bom/BomTable.tsx:271 +#: src/tables/build/BuildLineTable.tsx:121 +msgid "Available Stock" +msgstr "" + +#: src/pages/part/PartDetail.tsx:221 +msgid "Minimum Stock" +msgstr "" + +#: src/pages/part/PartDetail.tsx:227 +#: src/tables/bom/BomTable.tsx:212 +#: src/tables/build/BuildLineTable.tsx:95 +msgid "On order" +msgstr "" + +#: src/pages/part/PartDetail.tsx:236 +msgid "Allocated to Build Orders" +msgstr "" + +#: src/pages/part/PartDetail.tsx:244 +msgid "Allocated to Sales Orders" +msgstr "" + +#: src/pages/part/PartDetail.tsx:251 +#: src/tables/bom/BomTable.tsx:236 +msgid "Can Build" +msgstr "" + +#: src/pages/part/PartDetail.tsx:258 +#: src/tables/bom/BomTable.tsx:220 +#: src/tables/part/PartTable.tsx:82 +msgid "Building" +msgstr "" + +#: src/pages/part/PartDetail.tsx:267 +#: src/tables/bom/UsedInTable.tsx:73 +#: src/tables/build/BuildOrderTable.tsx:108 +#: src/tables/company/CompanyTable.tsx:61 +#: src/tables/company/CompanyTable.tsx:95 +#: src/tables/machine/MachineListTable.tsx:323 +#: src/tables/machine/MachineListTable.tsx:585 +#: src/tables/part/PartTable.tsx:168 +#: src/tables/part/PartVariantTable.tsx:15 +#: src/tables/plugin/PluginListTable.tsx:149 +#: src/tables/plugin/PluginListTable.tsx:271 +#: src/tables/plugin/PluginListTable.tsx:563 +#: src/tables/purchasing/SupplierPartTable.tsx:98 +#: src/tables/purchasing/SupplierPartTable.tsx:187 +#: src/tables/stock/StockItemTable.tsx:254 +msgid "Active" +msgstr "" + +#: src/pages/part/PartDetail.tsx:272 +msgid "Template Part" +msgstr "" + +#: src/pages/part/PartDetail.tsx:277 +#: src/tables/bom/BomTable.tsx:266 +msgid "Assembled Part" +msgstr "" + +#: src/pages/part/PartDetail.tsx:282 +msgid "Component Part" +msgstr "" + +#: src/pages/part/PartDetail.tsx:287 +#: src/tables/bom/BomTable.tsx:261 +msgid "Trackable Part" +msgstr "" + +#: src/pages/part/PartDetail.tsx:292 +msgid "Purchaseable Part" +msgstr "" + +#: src/pages/part/PartDetail.tsx:297 +msgid "Saleable Part" +msgstr "" + +#: src/pages/part/PartDetail.tsx:302 +msgid "Virtual Part" +msgstr "" + +#: src/pages/part/PartDetail.tsx:310 +#: src/tables/ColumnRenderers.tsx:199 +msgid "Creation Date" +msgstr "" + +#: src/pages/part/PartDetail.tsx:310 +#~ msgid "Edit part" +#~ msgstr "Edit part" + +#: src/pages/part/PartDetail.tsx:315 +msgid "Created By" +msgstr "" + +#: src/pages/part/PartDetail.tsx:322 +#~ msgid "Duplicate part" +#~ msgstr "Duplicate part" + +#: src/pages/part/PartDetail.tsx:327 +#~ msgid "Delete part" +#~ msgstr "Delete part" + +#: src/pages/part/PartDetail.tsx:330 +msgid "Default Supplier" +msgstr "" + +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 +#: src/tables/part/PartTable.tsx:151 +msgid "Price Range" +msgstr "" + +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 +msgid "Last Stocktake" +msgstr "" + +#: src/pages/part/PartDetail.tsx:415 +msgid "Stocktake By" +msgstr "" + +#: src/pages/part/PartDetail.tsx:486 +msgid "Part Details" +msgstr "" + +#: src/pages/part/PartDetail.tsx:512 +msgid "Variants" +msgstr "" + +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 +msgid "Allocations" +msgstr "" + +#: src/pages/part/PartDetail.tsx:526 +msgid "Bill of Materials" +msgstr "" + +#: src/pages/part/PartDetail.tsx:540 +msgid "Used In" +msgstr "" + +#: src/pages/part/PartDetail.tsx:547 +msgid "Part Pricing" +msgstr "" + +#: src/pages/part/PartDetail.tsx:553 +#: src/pages/purchasing/PurchasingIndex.tsx:37 +msgid "Manufacturers" +msgstr "" + +#: src/pages/part/PartDetail.tsx:593 +msgid "Scheduling" +msgstr "" + +#: src/pages/part/PartDetail.tsx:605 +msgid "Test Templates" +msgstr "" + +#: src/pages/part/PartDetail.tsx:616 +msgid "Related Parts" +msgstr "" + +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 +#: src/tables/build/BuildLineTable.tsx:36 +#: src/tables/part/PartTable.tsx:107 +#: src/tables/stock/StockItemTable.tsx:166 +#: src/tables/stock/StockItemTable.tsx:275 +msgid "Available" +msgstr "" + +#: src/pages/part/PartDetail.tsx:673 +msgid "No Stock" +msgstr "" + +#: src/pages/part/PartDetail.tsx:679 +#: src/tables/bom/BomTable.tsx:276 +#: src/tables/part/PartTable.tsx:76 +msgid "On Order" +msgstr "" + +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 +#: src/tables/stock/StockItemTable.tsx:295 +msgid "In Production" +msgstr "" + +#: src/pages/part/PartDetail.tsx:704 +msgid "Edit Part" +msgstr "" + +#: src/pages/part/PartDetail.tsx:711 +#: src/tables/part/PartTable.tsx:266 +#: src/tables/part/PartTable.tsx:279 +msgid "Add Part" +msgstr "" + +#: src/pages/part/PartDetail.tsx:723 +msgid "Delete Part" +msgstr "" + +#: src/pages/part/PartDetail.tsx:732 +msgid "Deleting this part cannot be reversed" +msgstr "" + +#: src/pages/part/PartDetail.tsx:770 +#: src/pages/stock/LocationDetail.tsx:302 +#: src/tables/stock/StockItemTable.tsx:409 +msgid "Stock Actions" +msgstr "" + +#: src/pages/part/PartDetail.tsx:778 +msgid "Count part stock" +msgstr "" + +#: src/pages/part/PartDetail.tsx:789 +msgid "Transfer part stock" +msgstr "" + +#: src/pages/part/PartDetail.tsx:798 +msgid "Part Actions" +msgstr "" + +#: src/pages/part/PartIndex.tsx:29 +#~ msgid "Categories" +#~ msgstr "Categories" + +#: src/pages/part/PartPricingPanel.tsx:72 +msgid "No pricing data found for this part." +msgstr "" + +#: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 +msgid "Pricing Overview" +msgstr "" + +#: src/pages/part/PartPricingPanel.tsx:92 +msgid "Purchase History" +msgstr "" + +#: src/pages/part/PartPricingPanel.tsx:106 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 +msgid "Internal Pricing" +msgstr "" + +#: src/pages/part/PartPricingPanel.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 +msgid "BOM Pricing" +msgstr "" + +#: src/pages/part/PartPricingPanel.tsx:131 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 +msgid "Variant Pricing" +msgstr "" + +#: src/pages/part/PartPricingPanel.tsx:143 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 +msgid "Sale Pricing" +msgstr "" + +#: src/pages/part/PartPricingPanel.tsx:150 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 +msgid "Sale History" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:57 +#: src/pages/part/pricing/BomPricingPanel.tsx:137 +#: src/tables/ColumnRenderers.tsx:241 +#: src/tables/bom/BomTable.tsx:160 +#: src/tables/purchasing/PurchaseOrderTable.tsx:112 +#: src/tables/sales/ReturnOrderTable.tsx:104 +#: src/tables/sales/SalesOrderTable.tsx:134 +msgid "Total Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "Minimum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "Maximum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 +#: src/tables/purchasing/SupplierPartTable.tsx:148 +msgid "Updated" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:218 +msgid "Pie Chart" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:219 +msgid "Bar Chart" +msgstr "" + +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 +msgid "Add Price Break" +msgstr "" + +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 +msgid "Edit Price Break" +msgstr "" + +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 +msgid "Delete Price Break" +msgstr "" + +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 +msgid "Price Break" +msgstr "" + +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 +msgid "Pricing Category" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 +msgid "Minimum" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 +msgid "Maximum" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 +msgid "Purchase Pricing" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 +msgid "Override Pricing" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 +msgid "Overall Pricing" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 +msgid "Last Updated" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" +msgstr "" + +#: src/pages/part/pricing/PricingPanel.tsx:25 +msgid "No data available" +msgstr "" + +#: src/pages/part/pricing/PricingPanel.tsx:66 +msgid "No Data" +msgstr "" + +#: src/pages/part/pricing/PricingPanel.tsx:67 +msgid "No pricing data available" +msgstr "" + +#: src/pages/part/pricing/PricingPanel.tsx:78 +msgid "Loading pricing data" +msgstr "" + +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 +#: src/tables/ColumnRenderers.tsx:180 +#: src/tables/plugin/PluginListTable.tsx:139 +msgid "Date" +msgstr "" + +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 +msgid "Purchase Price" +msgstr "" + +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 +msgid "Sale Order" +msgstr "" + +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 +msgid "Sale Price" +msgstr "" + +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 +msgid "Supplier Price" +msgstr "" + +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 +msgid "Variant Part" +msgstr "" + +#: src/pages/purchasing/PurchaseOrderDetail.tsx:75 +msgid "Edit Purchase Order" +msgstr "" + +#: src/pages/purchasing/PurchaseOrderDetail.tsx:84 +#: src/tables/purchasing/PurchaseOrderTable.tsx:128 +#: src/tables/purchasing/PurchaseOrderTable.tsx:140 +msgid "Add Purchase Order" +msgstr "" + +#: src/pages/purchasing/PurchaseOrderDetail.tsx:109 +msgid "Supplier Reference" +msgstr "" + +#: src/pages/purchasing/PurchaseOrderDetail.tsx:139 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:254 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 +msgid "Line Items" +msgstr "" + +#: src/pages/purchasing/PurchaseOrderDetail.tsx:146 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 +msgid "Completed Line Items" +msgstr "" + +#: src/pages/purchasing/PurchaseOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 +msgid "Completed Shipments" +msgstr "" + +#: src/pages/purchasing/PurchaseOrderDetail.tsx:159 +#: src/pages/sales/ReturnOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:130 +#~ msgid "Order Currency," +#~ msgstr "Order Currency," + +#: src/pages/purchasing/PurchaseOrderDetail.tsx:161 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 +msgid "Order Currency" +msgstr "" + +#: src/pages/purchasing/PurchaseOrderDetail.tsx:168 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 +msgid "Total Cost" +msgstr "" + +#: src/pages/purchasing/PurchaseOrderDetail.tsx:203 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 +msgid "Created On" +msgstr "" + +#: src/pages/purchasing/PurchaseOrderDetail.tsx:248 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 +msgid "Order Details" +msgstr "" + +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 +msgid "Order Actions" +msgstr "" + +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 +#: src/tables/sales/SalesOrderTable.tsx:123 +msgid "Customer Reference" +msgstr "" + +#: src/pages/sales/ReturnOrderDetail.tsx:270 +msgid "Edit Return Order" +msgstr "" + +#: src/pages/sales/ReturnOrderDetail.tsx:279 +#: src/tables/sales/ReturnOrderTable.tsx:119 +#: src/tables/sales/ReturnOrderTable.tsx:128 +msgid "Add Return Order" +msgstr "" + +#: src/pages/sales/SalesIndex.tsx:33 +msgid "Customers" +msgstr "" + +#: src/pages/sales/SalesOrderDetail.tsx:222 +msgid "Edit Sales Order" +msgstr "" + +#: src/pages/sales/SalesOrderDetail.tsx:231 +#: src/tables/sales/SalesOrderTable.tsx:83 +#: src/tables/sales/SalesOrderTable.tsx:95 +msgid "Add Sales Order" +msgstr "" + +#: src/pages/sales/SalesOrderDetail.tsx:257 +msgid "Pending Shipments" +msgstr "" + +#: src/pages/stock/LocationDetail.tsx:107 +msgid "Parent Location" +msgstr "" + +#: src/pages/stock/LocationDetail.tsx:125 +msgid "Sublocations" +msgstr "" + +#: src/pages/stock/LocationDetail.tsx:137 +msgid "External" +msgstr "" + +#: src/pages/stock/LocationDetail.tsx:143 +msgid "Location Type" +msgstr "" + +#: src/pages/stock/LocationDetail.tsx:154 +msgid "Top level stock location" +msgstr "" + +#: src/pages/stock/LocationDetail.tsx:165 +msgid "Location Details" +msgstr "" + +#: src/pages/stock/LocationDetail.tsx:191 +msgid "Default Parts" +msgstr "" + +#: src/pages/stock/LocationDetail.tsx:210 +#: src/pages/stock/LocationDetail.tsx:329 +#: src/tables/stock/StockLocationTable.tsx:100 +msgid "Edit Stock Location" +msgstr "" + +#: src/pages/stock/LocationDetail.tsx:231 +#: src/pages/stock/LocationDetail.tsx:334 +msgid "Delete Stock Location" +msgstr "" + +#: src/pages/stock/LocationDetail.tsx:234 +msgid "Items Action" +msgstr "" + +#: src/pages/stock/LocationDetail.tsx:235 +msgid "Action for stock items in this location" +msgstr "" + +#: src/pages/stock/LocationDetail.tsx:240 +msgid "Child Locations Action" +msgstr "" + +#: src/pages/stock/LocationDetail.tsx:241 +msgid "Action for child locations in this location" +msgstr "" + +#: src/pages/stock/LocationDetail.tsx:324 +msgid "Location Actions" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:104 +msgid "Base Part" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:111 +msgid "Stock Status" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:155 +#~ msgid "Link custom barcode to stock item" +#~ msgstr "Link custom barcode to stock item" + +#: src/pages/stock/StockDetail.tsx:161 +#~ msgid "Unlink custom barcode from stock item" +#~ msgstr "Unlink custom barcode from stock item" + +#: src/pages/stock/StockDetail.tsx:178 +msgid "Installed In" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:194 +msgid "Consumed By" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:203 +#: src/tables/stock/StockTrackingTable.tsx:96 +msgid "Build Order" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:205 +#~ msgid "Edit stock item" +#~ msgstr "Edit stock item" + +#: src/pages/stock/StockDetail.tsx:217 +#~ msgid "Delete stock item" +#~ msgstr "Delete stock item" + +#: src/pages/stock/StockDetail.tsx:268 +msgid "Stock Details" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:274 +msgid "Stock Tracking" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:293 +msgid "Test Data" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:307 +msgid "Installed Items" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:314 +msgid "Child Items" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:368 +msgid "Edit Stock Item" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:395 +msgid "Delete Stock Item" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:433 +#~ msgid "Duplicate stock item" +#~ msgstr "Duplicate stock item" + +#: src/pages/stock/StockDetail.tsx:442 +msgid "Stock Operations" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:447 +msgid "Count stock" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:457 +#: src/tables/stock/StockItemTable.tsx:414 +msgid "Add stock" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:465 +#: src/tables/stock/StockItemTable.tsx:423 +msgid "Remove stock" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:472 +msgid "Transfer" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:473 +#: src/tables/stock/StockItemTable.tsx:443 +msgid "Transfer stock" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:484 +msgid "Stock Item Actions" +msgstr "" + +#: src/tables/ColumnRenderers.tsx:42 +msgid "No location set" +msgstr "" + +#: src/tables/ColumnRenderers.tsx:207 +msgid "Shipment Date" +msgstr "" + +#: src/tables/ColumnRenderers.tsx:227 +#: src/tables/settings/CurrencyTable.tsx:23 +msgid "Currency" +msgstr "" + +#: src/tables/ColumnSelect.tsx:16 +#: src/tables/ColumnSelect.tsx:23 +msgid "Select Columns" +msgstr "" + +#: src/tables/DownloadAction.tsx:13 +#~ msgid "Excel" +#~ msgstr "Excel" + +#: src/tables/DownloadAction.tsx:21 +#~ msgid "Download selected data" +#~ msgstr "Download selected data" + +#: src/tables/DownloadAction.tsx:22 +msgid "CSV" +msgstr "" + +#: src/tables/DownloadAction.tsx:23 +msgid "TSV" +msgstr "" + +#: src/tables/DownloadAction.tsx:24 +msgid "Excel (.xls)" +msgstr "" + +#: src/tables/DownloadAction.tsx:25 +msgid "Excel (.xlsx)" +msgstr "" + +#: src/tables/DownloadAction.tsx:39 +msgid "Download Data" +msgstr "" + +#: src/tables/Filter.tsx:88 +#: src/tables/build/BuildOrderTable.tsx:126 +msgid "Assigned to me" +msgstr "" + +#: src/tables/Filter.tsx:89 +#: src/tables/build/BuildOrderTable.tsx:127 +msgid "Show orders assigned to me" +msgstr "" + +#: src/tables/Filter.tsx:96 +msgid "Outstanding" +msgstr "" + +#: src/tables/Filter.tsx:97 +msgid "Show outstanding orders" +msgstr "" + +#: src/tables/Filter.tsx:104 +#: src/tables/build/BuildOrderTable.tsx:119 +msgid "Overdue" +msgstr "" + +#: src/tables/Filter.tsx:105 +msgid "Show overdue orders" +msgstr "" + +#: src/tables/FilterSelectDrawer.tsx:51 +msgid "Remove filter" +msgstr "" + +#: src/tables/FilterSelectDrawer.tsx:136 +msgid "Select filter" +msgstr "" + +#: src/tables/FilterSelectDrawer.tsx:137 +msgid "Filter" +msgstr "" + +#: src/tables/FilterSelectDrawer.tsx:144 +#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 +#: src/tables/stock/StockItemTestResultTable.tsx:181 +msgid "Value" +msgstr "" + +#: src/tables/FilterSelectDrawer.tsx:145 +msgid "Select filter value" +msgstr "" + +#: src/tables/FilterSelectDrawer.tsx:185 +msgid "Table Filters" +msgstr "" + +#: src/tables/FilterSelectDrawer.tsx:217 +msgid "Add Filter" +msgstr "" + +#: src/tables/FilterSelectDrawer.tsx:226 +msgid "Clear Filters" +msgstr "" + +#: src/tables/InvenTreeTable.tsx:119 +#: src/tables/InvenTreeTable.tsx:390 +#: src/tables/InvenTreeTable.tsx:411 +msgid "No records found" +msgstr "" + +#: src/tables/InvenTreeTable.tsx:422 +msgid "Server returned incorrect data type" +msgstr "" + +#: src/tables/InvenTreeTable.tsx:430 +msgid "Bad request" +msgstr "" + +#: src/tables/InvenTreeTable.tsx:433 +msgid "Unauthorized" +msgstr "" + +#: src/tables/InvenTreeTable.tsx:436 +msgid "Forbidden" +msgstr "" + +#: src/tables/InvenTreeTable.tsx:439 +msgid "Not found" +msgstr "" + +#: src/tables/InvenTreeTable.tsx:488 +#: src/tables/InvenTreeTable.tsx:611 +msgid "Delete selected records" +msgstr "" + +#: src/tables/InvenTreeTable.tsx:492 +msgid "Are you sure you want to delete the selected records?" +msgstr "" + +#: src/tables/InvenTreeTable.tsx:494 +msgid "This action cannot be undone!" +msgstr "" + +#: src/tables/InvenTreeTable.tsx:522 +msgid "Deleted records" +msgstr "" + +#: src/tables/InvenTreeTable.tsx:523 +msgid "Records were deleted successfully" +msgstr "" + +#: src/tables/InvenTreeTable.tsx:532 +msgid "Failed to delete records" +msgstr "" + +#: src/tables/InvenTreeTable.tsx:594 +#: src/tables/InvenTreeTable.tsx:595 +#~ msgid "Print actions" +#~ msgstr "Print actions" + +#: src/tables/InvenTreeTable.tsx:601 +#: src/tables/InvenTreeTable.tsx:602 +msgid "Barcode actions" +msgstr "" + +#: src/tables/InvenTreeTable.tsx:630 +msgid "Refresh data" +msgstr "" + +#: src/tables/InvenTreeTable.tsx:648 +msgid "Table filters" +msgstr "" + +#: src/tables/bom/BomTable.tsx:78 +msgid "This BOM item is defined for a different parent" +msgstr "" + +#: src/tables/bom/BomTable.tsx:93 +msgid "Part Information" +msgstr "" + +#: src/tables/bom/BomTable.tsx:179 +#: src/tables/part/PartTable.tsx:124 +msgid "No stock" +msgstr "" + +#: src/tables/bom/BomTable.tsx:187 +#: src/tables/build/BuildLineTable.tsx:104 +#: src/tables/part/PartTable.tsx:115 +msgid "External stock" +msgstr "" + +#: src/tables/bom/BomTable.tsx:195 +#: src/tables/build/BuildLineTable.tsx:67 +msgid "Includes substitute stock" +msgstr "" + +#: src/tables/bom/BomTable.tsx:204 +#: src/tables/build/BuildLineTable.tsx:77 +msgid "Includes variant stock" +msgstr "" + +#: src/tables/bom/BomTable.tsx:229 +#: src/tables/part/PartTable.tsx:143 +#: src/tables/stock/StockItemTable.tsx:205 +msgid "Stock Information" +msgstr "" + +#: src/tables/bom/BomTable.tsx:241 +#: src/tables/build/BuildLineTable.tsx:195 +msgid "Consumable item" +msgstr "" + +#: src/tables/bom/BomTable.tsx:262 +msgid "Show trackable items" +msgstr "" + +#: src/tables/bom/BomTable.tsx:267 +msgid "Show asssmbled items" +msgstr "" + +#: src/tables/bom/BomTable.tsx:272 +msgid "Show items with available stock" +msgstr "" + +#: src/tables/bom/BomTable.tsx:277 +msgid "Show items on order" +msgstr "" + +#: src/tables/bom/BomTable.tsx:281 +msgid "Validated" +msgstr "" + +#: src/tables/bom/BomTable.tsx:282 +msgid "Show validated items" +msgstr "" + +#: src/tables/bom/BomTable.tsx:286 +#: src/tables/bom/UsedInTable.tsx:63 +msgid "Inherited" +msgstr "" + +#: src/tables/bom/BomTable.tsx:287 +#: src/tables/bom/UsedInTable.tsx:64 +msgid "Show inherited items" +msgstr "" + +#: src/tables/bom/BomTable.tsx:291 +#: src/tables/bom/UsedInTable.tsx:68 +#: src/tables/build/BuildLineTable.tsx:46 +msgid "Optional" +msgstr "" + +#: src/tables/bom/BomTable.tsx:292 +#: src/tables/bom/UsedInTable.tsx:69 +msgid "Show optional items" +msgstr "" + +#: src/tables/bom/BomTable.tsx:296 +#: src/tables/build/BuildLineTable.tsx:41 +msgid "Consumable" +msgstr "" + +#: src/tables/bom/BomTable.tsx:297 +msgid "Show consumable items" +msgstr "" + +#: src/tables/bom/BomTable.tsx:301 +msgid "Has Pricing" +msgstr "" + +#: src/tables/bom/BomTable.tsx:301 +#~ msgid "Create BOM Item" +#~ msgstr "Create BOM Item" + +#: src/tables/bom/BomTable.tsx:302 +msgid "Show items with pricing" +msgstr "" + +#: src/tables/bom/BomTable.tsx:311 +#: src/tables/bom/BomTable.tsx:399 +msgid "Add BOM Item" +msgstr "" + +#: src/tables/bom/BomTable.tsx:316 +msgid "BOM item created" +msgstr "" + +#: src/tables/bom/BomTable.tsx:323 +msgid "Edit BOM Item" +msgstr "" + +#: src/tables/bom/BomTable.tsx:325 +msgid "BOM item updated" +msgstr "" + +#: src/tables/bom/BomTable.tsx:331 +#~ msgid "Edit Bom Item" +#~ msgstr "Edit Bom Item" + +#: src/tables/bom/BomTable.tsx:332 +msgid "Delete BOM Item" +msgstr "" + +#: src/tables/bom/BomTable.tsx:333 +msgid "BOM item deleted" +msgstr "" + +#: src/tables/bom/BomTable.tsx:333 +#~ msgid "Bom item updated" +#~ msgstr "Bom item updated" + +#: src/tables/bom/BomTable.tsx:343 +msgid "View BOM" +msgstr "" + +#: src/tables/bom/BomTable.tsx:348 +#~ msgid "Delete Bom Item" +#~ msgstr "Delete Bom Item" + +#: src/tables/bom/BomTable.tsx:349 +#~ msgid "Bom item deleted" +#~ msgstr "Bom item deleted" + +#: src/tables/bom/BomTable.tsx:351 +#~ msgid "Are you sure you want to remove this BOM item?" +#~ msgstr "Are you sure you want to remove this BOM item?" + +#: src/tables/bom/BomTable.tsx:354 +msgid "Validate BOM line" +msgstr "" + +#: src/tables/bom/BomTable.tsx:362 +msgid "Edit Substitutes" +msgstr "" + +#: src/tables/bom/UsedInTable.tsx:74 +msgid "Show active assemblies" +msgstr "" + +#: src/tables/bom/UsedInTable.tsx:78 +#: src/tables/part/PartTable.tsx:192 +#: src/tables/part/PartVariantTable.tsx:30 +msgid "Trackable" +msgstr "" + +#: src/tables/bom/UsedInTable.tsx:79 +msgid "Show trackable assemblies" +msgstr "" + +#: src/tables/build/BuildLineTable.tsx:31 +#: src/tables/stock/StockItemTable.tsx:270 +msgid "Allocated" +msgstr "" + +#: src/tables/build/BuildLineTable.tsx:32 +msgid "Show allocated lines" +msgstr "" + +#: src/tables/build/BuildLineTable.tsx:37 +msgid "Show lines with available stock" +msgstr "" + +#: src/tables/build/BuildLineTable.tsx:42 +msgid "Show consumable lines" +msgstr "" + +#: src/tables/build/BuildLineTable.tsx:47 +msgid "Show optional lines" +msgstr "" + +#: src/tables/build/BuildLineTable.tsx:51 +#: src/tables/stock/StockItemTable.tsx:329 +msgid "Tracked" +msgstr "" + +#: src/tables/build/BuildLineTable.tsx:52 +msgid "Show tracked lines" +msgstr "" + +#: src/tables/build/BuildLineTable.tsx:86 +msgid "In production" +msgstr "" + +#: src/tables/build/BuildLineTable.tsx:118 +#: src/tables/stock/StockItemTable.tsx:175 +msgid "No stock available" +msgstr "" + +#: src/tables/build/BuildLineTable.tsx:157 +msgid "Unit Quantity" +msgstr "" + +#: src/tables/build/BuildLineTable.tsx:231 +msgid "Order Stock" +msgstr "" + +#: src/tables/build/BuildLineTable.tsx:237 +msgid "Build Stock" +msgstr "" + +#: src/tables/build/BuildOrderTable.tsx:109 +msgid "Show active orders" +msgstr "" + +#: src/tables/build/BuildOrderTable.tsx:114 +#: src/tables/purchasing/PurchaseOrderTable.tsx:56 +#: src/tables/sales/ReturnOrderTable.tsx:47 +#: src/tables/sales/SalesOrderTable.tsx:53 +msgid "Filter by order status" +msgstr "" + +#: src/tables/build/BuildOrderTable.tsx:121 +msgid "Show overdue status" +msgstr "" + +#: src/tables/build/BuildOrderTable.tsx:132 +#: src/tables/purchasing/PurchaseOrderTable.tsx:65 +#: src/tables/sales/ReturnOrderTable.tsx:56 +#: src/tables/sales/SalesOrderTable.tsx:62 +msgid "Filter by project code" +msgstr "" + +#: src/tables/build/BuildOrderTable.tsx:137 +#: src/tables/purchasing/PurchaseOrderTable.tsx:70 +#: src/tables/sales/ReturnOrderTable.tsx:61 +#: src/tables/sales/SalesOrderTable.tsx:67 +msgid "Has Project Code" +msgstr "" + +#: src/tables/build/BuildOrderTable.tsx:138 +#: src/tables/purchasing/PurchaseOrderTable.tsx:71 +#: src/tables/sales/ReturnOrderTable.tsx:62 +#: src/tables/sales/SalesOrderTable.tsx:68 +msgid "Filter by whether the purchase order has a project code" +msgstr "" + +#: src/tables/build/BuildOrderTable.tsx:143 +msgid "Filter by user who issued this order" +msgstr "" + +#: src/tables/build/BuildOrderTable.tsx:149 +#: src/tables/purchasing/PurchaseOrderTable.tsx:76 +#: src/tables/sales/ReturnOrderTable.tsx:67 +#: src/tables/sales/SalesOrderTable.tsx:73 +msgid "Filter by responsible owner" +msgstr "" + +#: src/tables/build/BuildOutputTable.tsx:114 +#: src/tables/build/BuildOutputTable.tsx:152 +msgid "Add Build Output" +msgstr "" + +#: src/tables/build/BuildOutputTable.tsx:157 +msgid "Complete selected outputs" +msgstr "" + +#: src/tables/build/BuildOutputTable.tsx:161 +#~ msgid "Delete build output" +#~ msgstr "Delete build output" + +#: src/tables/build/BuildOutputTable.tsx:167 +msgid "Scrap selected outputs" +msgstr "" + +#: src/tables/build/BuildOutputTable.tsx:177 +msgid "Cancel selected outputs" +msgstr "" + +#: src/tables/build/BuildOutputTable.tsx:193 +msgid "Allocate" +msgstr "" + +#: src/tables/build/BuildOutputTable.tsx:194 +msgid "Allocate stock to build output" +msgstr "" + +#: src/tables/build/BuildOutputTable.tsx:199 +msgid "Deallocate" +msgstr "" + +#: src/tables/build/BuildOutputTable.tsx:200 +msgid "Deallocate stock from build output" +msgstr "" + +#: src/tables/build/BuildOutputTable.tsx:205 +msgid "Complete" +msgstr "" + +#: src/tables/build/BuildOutputTable.tsx:206 +msgid "Complete build output" +msgstr "" + +#: src/tables/build/BuildOutputTable.tsx:215 +msgid "Scrap" +msgstr "" + +#: src/tables/build/BuildOutputTable.tsx:216 +msgid "Scrap build output" +msgstr "" + +#: src/tables/build/BuildOutputTable.tsx:226 +msgid "Cancel build output" +msgstr "" + +#: src/tables/build/BuildOutputTable.tsx:253 +msgid "Build Output" +msgstr "" + +#: src/tables/build/BuildOutputTable.tsx:266 +msgid "Batch" +msgstr "" + +#: src/tables/build/BuildOutputTable.tsx:280 +msgid "Allocated Items" +msgstr "" + +#: src/tables/build/BuildOutputTable.tsx:290 +msgid "Required Tests" +msgstr "" + +#: src/tables/build/BuildOutputTable.tsx:319 +#: src/tables/stock/StockItemTestResultTable.tsx:145 +msgid "Test Results" +msgstr "" + +#: src/tables/company/AddressTable.tsx:121 +#: src/tables/company/AddressTable.tsx:185 +msgid "Add Address" +msgstr "" + +#: src/tables/company/AddressTable.tsx:126 +msgid "Address created" +msgstr "" + +#: src/tables/company/AddressTable.tsx:135 +msgid "Edit Address" +msgstr "" + +#: src/tables/company/AddressTable.tsx:143 +msgid "Delete Address" +msgstr "" + +#: src/tables/company/AddressTable.tsx:144 +msgid "Are you sure you want to delete this address?" +msgstr "" + +#: src/tables/company/CompanyTable.tsx:71 +#~ msgid "New Company" +#~ msgstr "New Company" + +#: src/tables/company/CompanyTable.tsx:74 +#: src/tables/company/CompanyTable.tsx:123 +msgid "Add Company" +msgstr "" + +#: src/tables/company/CompanyTable.tsx:96 +msgid "Show active companies" +msgstr "" + +#: src/tables/company/CompanyTable.tsx:101 +msgid "Show companies which are suppliers" +msgstr "" + +#: src/tables/company/CompanyTable.tsx:106 +msgid "Show companies which are manufacturers" +msgstr "" + +#: src/tables/company/CompanyTable.tsx:111 +msgid "Show companies which are customers" +msgstr "" + +#: src/tables/company/ContactTable.tsx:71 +msgid "Edit Contact" +msgstr "" + +#: src/tables/company/ContactTable.tsx:78 +msgid "Add Contact" +msgstr "" + +#: src/tables/company/ContactTable.tsx:89 +msgid "Delete Contact" +msgstr "" + +#: src/tables/company/ContactTable.tsx:129 +msgid "Add contact" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:130 +msgid "File uploaded" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:131 +msgid "File {0} uploaded successfully" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:142 +msgid "Upload Error" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:143 +msgid "File could not be uploaded" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:191 +msgid "Upload Attachment" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:201 +msgid "Edit Attachment" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:215 +msgid "Delete Attachment" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 +msgid "Add attachment" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:251 +msgid "Add external link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:254 +#~ msgid "Upload attachment" +#~ msgstr "Upload attachment" + +#: src/tables/general/AttachmentTable.tsx:299 +msgid "No attachments found" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:337 +msgid "Drag attachment file here to upload" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:199 +msgid "Machine restarted" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:221 +#: src/tables/machine/MachineListTable.tsx:423 +msgid "Restart required" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:225 +msgid "Machine Actions" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:229 +#: src/tables/machine/MachineListTable.tsx:232 +msgid "Edit machine" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:244 +#: src/tables/machine/MachineListTable.tsx:247 +msgid "Delete machine" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:248 +msgid "Machine successfully deleted." +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:252 +msgid "Are you sure you want to remove the machine \"{0}\"?" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:263 +msgid "Restart" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:265 +msgid "Restart machine" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:267 +msgid "manual restart required" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:283 +msgid "Machine information" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:294 +#: src/tables/machine/MachineListTable.tsx:590 +msgid "Machine Type" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:307 +msgid "Machine Driver" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:320 +msgid "Initialized" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:341 +#: src/tables/machine/MachineTypeTable.tsx:261 +msgid "Errors" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:349 +#: src/tables/machine/MachineTypeTable.tsx:269 +msgid "No errors reported" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:369 +msgid "Machine Settings" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:380 +msgid "Driver Settings" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:494 +#~ msgid "Create machine" +#~ msgstr "Create machine" + +#: src/tables/machine/MachineListTable.tsx:497 +msgid "Add machine" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:552 +msgid "Machine detail" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:599 +msgid "Driver" +msgstr "" + +#: src/tables/machine/MachineTypeTable.tsx:73 +msgid "Builtin driver" +msgstr "" + +#: src/tables/machine/MachineTypeTable.tsx:89 +msgid "Machine type not found." +msgstr "" + +#: src/tables/machine/MachineTypeTable.tsx:97 +msgid "Machine type information" +msgstr "" + +#: src/tables/machine/MachineTypeTable.tsx:110 +#: src/tables/machine/MachineTypeTable.tsx:217 +msgid "Slug" +msgstr "" + +#: src/tables/machine/MachineTypeTable.tsx:118 +#: src/tables/machine/MachineTypeTable.tsx:238 +msgid "Provider plugin" +msgstr "" + +#: src/tables/machine/MachineTypeTable.tsx:130 +#: src/tables/machine/MachineTypeTable.tsx:250 +msgid "Provider file" +msgstr "" + +#: src/tables/machine/MachineTypeTable.tsx:135 +#: src/tables/machine/MachineTypeTable.tsx:255 +#: src/tables/plugin/PluginListTable.tsx:180 +#: src/tables/plugin/PluginListTable.tsx:568 +msgid "Builtin" +msgstr "" + +#: src/tables/machine/MachineTypeTable.tsx:146 +msgid "Available drivers" +msgstr "" + +#: src/tables/machine/MachineTypeTable.tsx:196 +msgid "Machine driver not found." +msgstr "" + +#: src/tables/machine/MachineTypeTable.tsx:204 +msgid "Machine driver information" +msgstr "" + +#: src/tables/machine/MachineTypeTable.tsx:224 +msgid "Machine type" +msgstr "" + +#: src/tables/machine/MachineTypeTable.tsx:327 +msgid "Builtin type" +msgstr "" + +#: src/tables/machine/MachineTypeTable.tsx:336 +msgid "Machine type detail" +msgstr "" + +#: src/tables/machine/MachineTypeTable.tsx:346 +msgid "Machine driver detail" +msgstr "" + +#: src/tables/notifications/NotificationsTable.tsx:26 +msgid "Age" +msgstr "" + +#: src/tables/notifications/NotificationsTable.tsx:40 +#: src/tables/plugin/PluginErrorTable.tsx:37 +msgid "Message" +msgstr "" + +#: src/tables/part/ParametricPartTable.tsx:76 +#: src/tables/part/PartParameterTable.tsx:88 +msgid "Internal Units" +msgstr "" + +#: src/tables/part/ParametricPartTable.tsx:81 +msgid "Edit parameter" +msgstr "" + +#: src/tables/part/ParametricPartTable.tsx:124 +msgid "Add Part Parameter" +msgstr "" + +#: src/tables/part/ParametricPartTable.tsx:138 +#: src/tables/part/PartParameterTable.tsx:121 +#: src/tables/part/PartParameterTable.tsx:144 +msgid "Edit Part Parameter" +msgstr "" + +#: src/tables/part/PartCategoryTable.tsx:60 +#: src/tables/part/PartTable.tsx:180 +msgid "Include Subcategories" +msgstr "" + +#: src/tables/part/PartCategoryTable.tsx:61 +msgid "Include subcategories in results" +msgstr "" + +#: src/tables/part/PartCategoryTable.tsx:66 +msgid "Show structural categories" +msgstr "" + +#: src/tables/part/PartCategoryTable.tsx:73 +msgid "New Part Category" +msgstr "" + +#: src/tables/part/PartCategoryTable.tsx:98 +msgid "Add Part Category" +msgstr "" + +#: src/tables/part/PartCategoryTemplateTable.tsx:38 +#: src/tables/part/PartCategoryTemplateTable.tsx:131 +msgid "Add Category Parameter" +msgstr "" + +#: src/tables/part/PartCategoryTemplateTable.tsx:46 +msgid "Edit Category Parameter" +msgstr "" + +#: src/tables/part/PartCategoryTemplateTable.tsx:54 +msgid "Delete Category Parameter" +msgstr "" + +#: src/tables/part/PartCategoryTemplateTable.tsx:76 +msgid "Parameter Template" +msgstr "" + +#: src/tables/part/PartCategoryTemplateTable.tsx:93 +#~ msgid "[{0}]" +#~ msgstr "[{0}]" + +#: src/tables/part/PartParameterTable.tsx:105 +msgid "New Part Parameter" +msgstr "" + +#: src/tables/part/PartParameterTable.tsx:130 +#: src/tables/part/PartParameterTable.tsx:152 +msgid "Delete Part Parameter" +msgstr "" + +#: src/tables/part/PartParameterTable.tsx:170 +msgid "Add parameter" +msgstr "" + +#: src/tables/part/PartParameterTable.tsx:191 +#: src/tables/stock/StockItemTable.tsx:300 +msgid "Include Variants" +msgstr "" + +#: src/tables/part/PartParameterTemplateTable.tsx:31 +msgid "Checkbox" +msgstr "" + +#: src/tables/part/PartParameterTemplateTable.tsx:32 +msgid "Show checkbox templates" +msgstr "" + +#: src/tables/part/PartParameterTemplateTable.tsx:36 +msgid "Has choices" +msgstr "" + +#: src/tables/part/PartParameterTemplateTable.tsx:37 +msgid "Show templates with choices" +msgstr "" + +#: src/tables/part/PartParameterTemplateTable.tsx:41 +#: src/tables/part/PartTable.tsx:198 +msgid "Has Units" +msgstr "" + +#: src/tables/part/PartParameterTemplateTable.tsx:42 +msgid "Show templates with units" +msgstr "" + +#: src/tables/part/PartParameterTemplateTable.tsx:85 +msgid "Add Parameter Template" +msgstr "" + +#: src/tables/part/PartParameterTemplateTable.tsx:100 +msgid "Edit Parameter Template" +msgstr "" + +#: src/tables/part/PartParameterTemplateTable.tsx:111 +msgid "Delete Parameter Template" +msgstr "" + +#: src/tables/part/PartParameterTemplateTable.tsx:141 +msgid "Add parameter template" +msgstr "" + +#: src/tables/part/PartTable.tsx:67 +msgid "Minimum stock" +msgstr "" + +#: src/tables/part/PartTable.tsx:89 +msgid "Build Order Allocations" +msgstr "" + +#: src/tables/part/PartTable.tsx:98 +msgid "Sales Order Allocations" +msgstr "" + +#: src/tables/part/PartTable.tsx:169 +msgid "Filter by part active status" +msgstr "" + +#: src/tables/part/PartTable.tsx:174 +#: src/tables/stock/StockItemTable.tsx:265 +msgid "Assembly" +msgstr "" + +#: src/tables/part/PartTable.tsx:175 +msgid "Filter by assembly attribute" +msgstr "" + +#: src/tables/part/PartTable.tsx:181 +msgid "Include parts in subcategories" +msgstr "" + +#: src/tables/part/PartTable.tsx:187 +msgid "Filter by component attribute" +msgstr "" + +#: src/tables/part/PartTable.tsx:193 +msgid "Filter by trackable attribute" +msgstr "" + +#: src/tables/part/PartTable.tsx:199 +msgid "Filter by parts which have units" +msgstr "" + +#: src/tables/part/PartTable.tsx:204 +msgid "Has IPN" +msgstr "" + +#: src/tables/part/PartTable.tsx:205 +msgid "Filter by parts which have an internal part number" +msgstr "" + +#: src/tables/part/PartTable.tsx:210 +msgid "Has Stock" +msgstr "" + +#: src/tables/part/PartTable.tsx:211 +msgid "Filter by parts which have stock" +msgstr "" + +#: src/tables/part/PartTable.tsx:217 +msgid "Filter by parts which have low stock" +msgstr "" + +#: src/tables/part/PartTable.tsx:222 +msgid "Purchaseable" +msgstr "" + +#: src/tables/part/PartTable.tsx:223 +msgid "Filter by parts which are purchaseable" +msgstr "" + +#: src/tables/part/PartTable.tsx:228 +msgid "Salable" +msgstr "" + +#: src/tables/part/PartTable.tsx:229 +msgid "Filter by parts which are salable" +msgstr "" + +#: src/tables/part/PartTable.tsx:235 +msgid "Filter by parts which are virtual" +msgstr "" + +#: src/tables/part/PartTable.tsx:239 +msgid "Not Virtual" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:52 +msgid "Results" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:54 +msgid "No Results" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 +msgid "Required" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:85 +msgid "Show required tests" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/settings/TemplateTable.tsx:160 +#: src/tables/settings/TemplateTable.tsx:270 +msgid "Enabled" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:90 +msgid "Show enabled tests" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:94 +msgid "Requires Value" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:95 +msgid "Show tests that require a value" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:99 +msgid "Requires Attachment" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:100 +msgid "Show tests that require an attachment" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:104 +msgid "Include Inherited" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:105 +msgid "Show tests from inherited templates" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:109 +msgid "Has Results" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:110 +msgid "Show tests which have recorded results" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 +msgid "Add Test Template" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:148 +msgid "Edit Test Template" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:159 +msgid "Delete Test Template" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:161 +msgid "This action cannot be reversed" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:163 +msgid "Any tests results associated with this template will be deleted" +msgstr "" + +#: src/tables/part/PartThumbTable.tsx:203 +msgid "Select" +msgstr "" + +#: src/tables/part/PartVariantTable.tsx:16 +msgid "Show active variants" +msgstr "" + +#: src/tables/part/PartVariantTable.tsx:20 +msgid "Template" +msgstr "" + +#: src/tables/part/PartVariantTable.tsx:21 +msgid "Show template variants" +msgstr "" + +#: src/tables/part/PartVariantTable.tsx:26 +msgid "Show virtual variants" +msgstr "" + +#: src/tables/part/PartVariantTable.tsx:31 +msgid "Show trackable variants" +msgstr "" + +#: src/tables/part/RelatedPartTable.tsx:84 +msgid "Add Related Part" +msgstr "" + +#: src/tables/part/RelatedPartTable.tsx:99 +msgid "Delete Related Part" +msgstr "" + +#: src/tables/part/RelatedPartTable.tsx:106 +msgid "Add related part" +msgstr "" + +#: src/tables/plugin/PluginErrorTable.tsx:29 +msgid "Stage" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:95 +msgid "Plugin with key {pluginKey} not found" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:97 +msgid "An error occurred while fetching plugin details" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:113 +#~ msgid "Plugin with id {id} not found" +#~ msgstr "Plugin with id {id} not found" + +#: src/tables/plugin/PluginListTable.tsx:122 +msgid "Plugin information" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:134 +msgid "Author" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:134 +#~ msgid "Plugin Actions" +#~ msgstr "Plugin Actions" + +#: src/tables/plugin/PluginListTable.tsx:138 +#: src/tables/plugin/PluginListTable.tsx:141 +#~ msgid "Edit plugin" +#~ msgstr "Edit plugin" + +#: src/tables/plugin/PluginListTable.tsx:152 +#: src/tables/plugin/PluginListTable.tsx:153 +#~ msgid "Reload" +#~ msgstr "Reload" + +#: src/tables/plugin/PluginListTable.tsx:154 +msgid "Plugin is not active" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:163 +msgid "Package information" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:169 +msgid "Package Name" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:175 +msgid "Installation Path" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:185 +msgid "Package" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:197 +msgid "Plugin settings" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:214 +msgid "Plugin is active" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:220 +msgid "Plugin is inactive" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:227 +msgid "Plugin is not installed" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:253 +msgid "Plugin" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:287 +msgid "Description not available" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:319 +msgid "Confirm plugin activation" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:320 +msgid "Confirm plugin deactivation" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:325 +msgid "The selected plugin will be activated" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:326 +msgid "The selected plugin will be deactivated" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:334 +msgid "Activate Plugin" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:338 +#~ msgid "Deactivate Plugin" +#~ msgstr "Deactivate Plugin" + +#: src/tables/plugin/PluginListTable.tsx:354 +#~ msgid "The following plugin will be activated" +#~ msgstr "The following plugin will be activated" + +#: src/tables/plugin/PluginListTable.tsx:355 +#~ msgid "The following plugin will be deactivated" +#~ msgstr "The following plugin will be deactivated" + +#: src/tables/plugin/PluginListTable.tsx:362 +msgid "Deactivate" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:366 +#~ msgid "Confirm" +#~ msgstr "Confirm" + +#: src/tables/plugin/PluginListTable.tsx:373 +msgid "Activate" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:376 +#~ msgid "Activating plugin" +#~ msgstr "Activating plugin" + +#: src/tables/plugin/PluginListTable.tsx:376 +#~ msgid "Deactivating plugin" +#~ msgstr "Deactivating plugin" + +#: src/tables/plugin/PluginListTable.tsx:392 +#~ msgid "Plugin updated" +#~ msgstr "Plugin updated" + +#: src/tables/plugin/PluginListTable.tsx:394 +#~ msgid "The plugin was activated" +#~ msgstr "The plugin was activated" + +#: src/tables/plugin/PluginListTable.tsx:395 +#~ msgid "The plugin was deactivated" +#~ msgstr "The plugin was deactivated" + +#: src/tables/plugin/PluginListTable.tsx:403 +#~ msgid "Error updating plugin" +#~ msgstr "Error updating plugin" + +#: src/tables/plugin/PluginListTable.tsx:406 +msgid "Uninstall" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:438 +msgid "Install plugin" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:451 +msgid "Install" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:452 +msgid "Plugin installed successfully" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:457 +msgid "Uninstall Plugin" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:469 +msgid "Confirm plugin uninstall" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:472 +msgid "The selected plugin will be uninstalled." +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:473 +msgid "This action cannot be undone." +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:477 +msgid "Plugin uninstalled successfully" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:484 +msgid "Delete Plugin" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:485 +msgid "Deleting this plugin configuration will remove all associated settings and data. Are you sure you want to delete this plugin?" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:498 +msgid "Plugins reloaded" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:499 +msgid "Plugins were reloaded successfully" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:515 +msgid "Reload Plugins" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:524 +msgid "Install Plugin" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:544 +msgid "Plugin Detail" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:573 +msgid "Sample" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:578 +#: src/tables/stock/StockItemTable.tsx:305 +msgid "Installed" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:615 +#~ msgid "Plugin detail" +#~ msgstr "Plugin detail" + +#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:59 +#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:108 +msgid "Add Parameter" +msgstr "" + +#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:60 +#~ msgid "Parameter updated" +#~ msgstr "Parameter updated" + +#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:70 +msgid "Edit Parameter" +msgstr "" + +#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:73 +#~ msgid "Parameter deleted" +#~ msgstr "Parameter deleted" + +#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:74 +#~ msgid "Are you sure you want to delete this parameter?" +#~ msgstr "Are you sure you want to delete this parameter?" + +#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:78 +msgid "Delete Parameter" +msgstr "" + +#: src/tables/purchasing/ManufacturerPartTable.tsx:63 +#~ msgid "Create Manufacturer Part" +#~ msgstr "Create Manufacturer Part" + +#: src/tables/purchasing/ManufacturerPartTable.tsx:92 +msgid "Delete Manufacturer Part" +msgstr "" + +#: src/tables/purchasing/ManufacturerPartTable.tsx:100 +#~ msgid "Manufacturer part updated" +#~ msgstr "Manufacturer part updated" + +#: src/tables/purchasing/ManufacturerPartTable.tsx:112 +#~ msgid "Manufacturer part deleted" +#~ msgstr "Manufacturer part deleted" + +#: src/tables/purchasing/ManufacturerPartTable.tsx:114 +#~ msgid "Are you sure you want to remove this manufacturer part?" +#~ msgstr "Are you sure you want to remove this manufacturer part?" + +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:86 +msgid "Part Description" +msgstr "" + +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:113 +msgid "Total Quantity" +msgstr "" + +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:129 +msgid "Received" +msgstr "" + +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:148 +msgid "Supplier Code" +msgstr "" + +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:155 +msgid "Supplier Link" +msgstr "" + +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:162 +msgid "Manufacturer Code" +msgstr "" + +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:176 +msgid "Destination" +msgstr "" + +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:198 +msgid "Add Line Item" +msgstr "" + +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:215 +msgid "Edit Line Item" +msgstr "" + +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:223 +msgid "Delete Line Item" +msgstr "" + +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:234 +msgid "Receive line item" +msgstr "" + +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:272 +msgid "Add line item" +msgstr "" + +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:282 +msgid "Receive items" +msgstr "" + +#: src/tables/purchasing/SupplierPartTable.tsx:93 +msgid "MPN" +msgstr "" + +#: src/tables/purchasing/SupplierPartTable.tsx:122 +msgid "Base units" +msgstr "" + +#: src/tables/purchasing/SupplierPartTable.tsx:170 +msgid "Supplier part created" +msgstr "" + +#: src/tables/purchasing/SupplierPartTable.tsx:176 +msgid "Add supplier part" +msgstr "" + +#: src/tables/purchasing/SupplierPartTable.tsx:188 +msgid "Show active supplier parts" +msgstr "" + +#: src/tables/purchasing/SupplierPartTable.tsx:192 +msgid "Active Part" +msgstr "" + +#: src/tables/purchasing/SupplierPartTable.tsx:193 +msgid "Show active internal parts" +msgstr "" + +#: src/tables/purchasing/SupplierPartTable.tsx:193 +#~ msgid "Supplier part updated" +#~ msgstr "Supplier part updated" + +#: src/tables/purchasing/SupplierPartTable.tsx:197 +msgid "Active Supplier" +msgstr "" + +#: src/tables/purchasing/SupplierPartTable.tsx:198 +msgid "Show active suppliers" +msgstr "" + +#: src/tables/purchasing/SupplierPartTable.tsx:205 +#~ msgid "Supplier part deleted" +#~ msgstr "Supplier part deleted" + +#: src/tables/purchasing/SupplierPartTable.tsx:207 +#~ msgid "Are you sure you want to remove this supplier part?" +#~ msgstr "Are you sure you want to remove this supplier part?" + +#: src/tables/purchasing/SupplierPartTable.tsx:218 +msgid "Delete Supplier Part" +msgstr "" + +#: src/tables/settings/CurrencyTable.tsx:28 +msgid "Rate" +msgstr "" + +#: src/tables/settings/CurrencyTable.tsx:40 +msgid "Exchange rates updated" +msgstr "" + +#: src/tables/settings/CurrencyTable.tsx:46 +msgid "Exchange rate update error" +msgstr "" + +#: src/tables/settings/CurrencyTable.tsx:57 +msgid "Refresh currency exchange rates" +msgstr "" + +#: src/tables/settings/CustomUnitsTable.tsx:50 +msgid "Add Custom Unit" +msgstr "" + +#: src/tables/settings/CustomUnitsTable.tsx:60 +msgid "Edit Custom Unit" +msgstr "" + +#: src/tables/settings/CustomUnitsTable.tsx:68 +msgid "Delete Custom Unit" +msgstr "" + +#: src/tables/settings/CustomUnitsTable.tsx:100 +msgid "Add custom unit" +msgstr "" + +#: src/tables/settings/ErrorTable.tsx:29 +msgid "When" +msgstr "" + +#: src/tables/settings/ErrorTable.tsx:39 +msgid "Error Information" +msgstr "" + +#: src/tables/settings/ErrorTable.tsx:51 +msgid "Delete Error Report" +msgstr "" + +#: src/tables/settings/ErrorTable.tsx:51 +#~ msgid "Delete error report" +#~ msgstr "Delete error report" + +#: src/tables/settings/ErrorTable.tsx:53 +msgid "Are you sure you want to delete this error report?" +msgstr "" + +#: src/tables/settings/ErrorTable.tsx:55 +msgid "Error report deleted" +msgstr "" + +#: src/tables/settings/ErrorTable.tsx:77 +#: src/tables/settings/FailedTasksTable.tsx:57 +msgid "Error Details" +msgstr "" + +#: src/tables/settings/FailedTasksTable.tsx:24 +#: src/tables/settings/PendingTasksTable.tsx:17 +#: src/tables/settings/ScheduledTasksTable.tsx:19 +msgid "Task" +msgstr "" + +#: src/tables/settings/FailedTasksTable.tsx:30 +#: src/tables/settings/PendingTasksTable.tsx:22 +msgid "Task ID" +msgstr "" + +#: src/tables/settings/FailedTasksTable.tsx:34 +#: src/tables/stock/StockItemTestResultTable.tsx:206 +msgid "Started" +msgstr "" + +#: src/tables/settings/FailedTasksTable.tsx:40 +msgid "Stopped" +msgstr "" + +#: src/tables/settings/FailedTasksTable.tsx:46 +msgid "Attempts" +msgstr "" + +#: src/tables/settings/GroupTable.tsx:51 +msgid "Group with id {id} not found" +msgstr "" + +#: src/tables/settings/GroupTable.tsx:53 +msgid "An error occurred while fetching group details" +msgstr "" + +#: src/tables/settings/GroupTable.tsx:77 +msgid "Permission set" +msgstr "" + +#: src/tables/settings/GroupTable.tsx:126 +msgid "Delete group" +msgstr "" + +#: src/tables/settings/GroupTable.tsx:127 +msgid "Group deleted" +msgstr "" + +#: src/tables/settings/GroupTable.tsx:129 +msgid "Are you sure you want to delete this group?" +msgstr "" + +#: src/tables/settings/GroupTable.tsx:134 +#: src/tables/settings/GroupTable.tsx:146 +msgid "Add group" +msgstr "" + +#: src/tables/settings/GroupTable.tsx:158 +msgid "Edit group" +msgstr "" + +#: src/tables/settings/PendingTasksTable.tsx:36 +msgid "Arguments" +msgstr "" + +#: src/tables/settings/ProjectCodeTable.tsx:42 +msgid "Add Project Code" +msgstr "" + +#: src/tables/settings/ProjectCodeTable.tsx:54 +msgid "Edit Project Code" +msgstr "" + +#: src/tables/settings/ProjectCodeTable.tsx:62 +msgid "Delete Project Code" +msgstr "" + +#: src/tables/settings/ProjectCodeTable.tsx:94 +msgid "Add project code" +msgstr "" + +#: src/tables/settings/ScheduledTasksTable.tsx:25 +msgid "Last Run" +msgstr "" + +#: src/tables/settings/ScheduledTasksTable.tsx:47 +msgid "Next Run" +msgstr "" + +#: src/tables/settings/TemplateTable.tsx:82 +msgid "Template not found" +msgstr "" + +#: src/tables/settings/TemplateTable.tsx:84 +msgid "An error occurred while fetching template details" +msgstr "" + +#: src/tables/settings/TemplateTable.tsx:120 +#~ msgid "{templateTypeTranslation} with id {id} not found" +#~ msgstr "{templateTypeTranslation} with id {id} not found" + +#: src/tables/settings/TemplateTable.tsx:124 +#~ msgid "An error occurred while fetching {templateTypeTranslation} details" +#~ msgstr "An error occurred while fetching {templateTypeTranslation} details" + +#: src/tables/settings/TemplateTable.tsx:146 +#~ msgid "actions" +#~ msgstr "actions" + +#: src/tables/settings/TemplateTable.tsx:170 +msgid "Modify" +msgstr "" + +#: src/tables/settings/TemplateTable.tsx:171 +msgid "Modify template file" +msgstr "" + +#: src/tables/settings/TemplateTable.tsx:222 +#: src/tables/settings/TemplateTable.tsx:289 +msgid "Edit Template" +msgstr "" + +#: src/tables/settings/TemplateTable.tsx:230 +msgid "Delete template" +msgstr "" + +#: src/tables/settings/TemplateTable.tsx:236 +msgid "Add Template" +msgstr "" + +#: src/tables/settings/TemplateTable.tsx:243 +#~ msgid "Add new" +#~ msgstr "Add new" + +#: src/tables/settings/TemplateTable.tsx:243 +#~ msgid "Create new" +#~ msgstr "Create new" + +#: src/tables/settings/TemplateTable.tsx:249 +msgid "Add template" +msgstr "" + +#: src/tables/settings/TemplateTable.tsx:271 +msgid "Filter by enabled status" +msgstr "" + +#: src/tables/settings/TemplateTable.tsx:276 +msgid "Model Type" +msgstr "" + +#: src/tables/settings/TemplateTable.tsx:277 +msgid "Filter by target model type" +msgstr "" + +#: src/tables/settings/UserTable.tsx:79 +msgid "User with id {id} not found" +msgstr "" + +#: src/tables/settings/UserTable.tsx:81 +msgid "An error occurred while fetching user details" +msgstr "" + +#: src/tables/settings/UserTable.tsx:99 +msgid "Is Active" +msgstr "" + +#: src/tables/settings/UserTable.tsx:100 +msgid "Designates whether this user should be treated as active. Unselect this instead of deleting accounts." +msgstr "" + +#: src/tables/settings/UserTable.tsx:104 +msgid "Is Staff" +msgstr "" + +#: src/tables/settings/UserTable.tsx:105 +msgid "Designates whether the user can log into the django admin site." +msgstr "" + +#: src/tables/settings/UserTable.tsx:109 +msgid "Is Superuser" +msgstr "" + +#: src/tables/settings/UserTable.tsx:110 +msgid "Designates that this user has all permissions without explicitly assigning them." +msgstr "" + +#: src/tables/settings/UserTable.tsx:120 +msgid "You cannot edit the rights for the currently logged-in user." +msgstr "" + +#: src/tables/settings/UserTable.tsx:151 +msgid "No groups" +msgstr "" + +#: src/tables/settings/UserTable.tsx:231 +msgid "Delete user" +msgstr "" + +#: src/tables/settings/UserTable.tsx:232 +msgid "User deleted" +msgstr "" + +#: src/tables/settings/UserTable.tsx:234 +msgid "Are you sure you want to delete this user?" +msgstr "" + +#: src/tables/settings/UserTable.tsx:240 +#: src/tables/settings/UserTable.tsx:258 +msgid "Add user" +msgstr "" + +#: src/tables/settings/UserTable.tsx:248 +msgid "Added user" +msgstr "" + +#: src/tables/settings/UserTable.tsx:270 +msgid "Edit user" +msgstr "" + +#: src/tables/stock/LocationTypesTable.tsx:36 +#: src/tables/stock/LocationTypesTable.tsx:105 +msgid "Add Location Type" +msgstr "" + +#: src/tables/stock/LocationTypesTable.tsx:44 +msgid "Edit Location Type" +msgstr "" + +#: src/tables/stock/LocationTypesTable.tsx:52 +msgid "Delete Location Type" +msgstr "" + +#: src/tables/stock/LocationTypesTable.tsx:69 +msgid "Icon" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:90 +msgid "This stock item is in production" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:99 +msgid "This stock item has been assigned to a sales order" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:108 +msgid "This stock item has been assigned to a customer" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:117 +msgid "This stock item is installed in another stock item" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:126 +msgid "This stock item has been consumed by a build order" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:135 +msgid "This stock item has expired" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:139 +msgid "This stock item is stale" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:150 +msgid "This stock item is fully allocated" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:157 +msgid "This stock item is partially allocated" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:185 +msgid "This stock item has been depleted" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:255 +msgid "Show stock for active parts" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:260 +msgid "Filter by stock status" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:266 +msgid "Show stock for assmebled parts" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:271 +msgid "Show items which have been allocated" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:276 +msgid "Show items which are available" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:280 +#: src/tables/stock/StockLocationTable.tsx:33 +msgid "Include Sublocations" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:281 +msgid "Include stock in sublocations" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:285 +msgid "Depleted" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:286 +msgid "Show depleted stock items" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:291 +msgid "Show items which are in stock" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:296 +msgid "Show items which are in production" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:301 +msgid "Include stock items for variant parts" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:306 +msgid "Show stock items which are installed in other items" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:310 +msgid "Sent to Customer" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:311 +msgid "Show items which have been sent to a customer" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:315 +msgid "Is Serialized" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:316 +msgid "Show items which have a serial number" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:323 +msgid "Has Batch Code" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:324 +msgid "Show items which have a batch code" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:330 +msgid "Show tracked items" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:334 +msgid "Has Purchase Price" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:335 +msgid "Show items which have a purchase price" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:343 +msgid "External Location" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:344 +msgid "Show items in an external location" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:416 +msgid "Add a new stock item" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:425 +msgid "Remove some quantity from a stock item" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:447 +msgid "Move Stock items to new locations" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:454 +msgid "Change stock status" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:456 +msgid "Change the status of stock items" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:463 +msgid "Merge stock" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:465 +msgid "Merge stock items" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:472 +msgid "Order stock" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:474 +#: src/tables/stock/StockItemTable.tsx:480 +msgid "Order new stock" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:478 +msgid "Assign to customer" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:487 +msgid "Delete stock" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:489 +msgid "Delete stock items" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:126 +msgid "Test" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:152 +msgid "Test result for installed stock item" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:163 +msgid "Result" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:169 +msgid "No Result" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:185 +msgid "Attachment" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:201 +msgid "Test station" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:221 +msgid "Finished" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 +msgid "Add Test Result" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:254 +msgid "Test result added" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 +msgid "Edit Test Result" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:265 +msgid "Test result updated" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 +msgid "Delete Test Result" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:273 +msgid "Test result deleted" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:287 +msgid "Test Passed" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:288 +msgid "Test result has been recorded" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:295 +msgid "Failed to record test result" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:312 +msgid "Pass Test" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:361 +msgid "Show results for required tests" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:365 +msgid "Include Installed" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:366 +msgid "Show results for installed stock items" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:370 +msgid "Passed" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:371 +msgid "Show only passed tests" +msgstr "" + +#: src/tables/stock/StockLocationTable.tsx:34 +msgid "Include sublocations in results" +msgstr "" + +#: src/tables/stock/StockLocationTable.tsx:38 +msgid "structural" +msgstr "" + +#: src/tables/stock/StockLocationTable.tsx:39 +msgid "Show structural locations" +msgstr "" + +#: src/tables/stock/StockLocationTable.tsx:43 +msgid "external" +msgstr "" + +#: src/tables/stock/StockLocationTable.tsx:44 +msgid "Show external locations" +msgstr "" + +#: src/tables/stock/StockLocationTable.tsx:48 +msgid "Has location type" +msgstr "" + +#: src/tables/stock/StockLocationTable.tsx:85 +#: src/tables/stock/StockLocationTable.tsx:110 +msgid "Add Stock Location" +msgstr "" + +#: src/tables/stock/StockTrackingTable.tsx:64 +msgid "Added" +msgstr "" + +#: src/tables/stock/StockTrackingTable.tsx:69 +msgid "Removed" +msgstr "" + +#: src/tables/stock/StockTrackingTable.tsx:198 +msgid "No user information" +msgstr "" + +#: src/views/MobileAppView.tsx:22 +msgid "Mobile viewport detected" +msgstr "" + +#: src/views/MobileAppView.tsx:25 +msgid "Platform UI is optimized for Tablets and Desktops, you can use the official app for a mobile experience." +msgstr "" + +#: src/views/MobileAppView.tsx:31 +msgid "Read the docs" +msgstr "" + +#: src/views/MobileAppView.tsx:35 +msgid "Ignore and continue to Desktop view" +msgstr "" diff --git a/src/frontend/src/locales/ru/messages.po b/src/frontend/src/locales/ru/messages.po index e62425c870..7bbbc0cb04 100644 --- a/src/frontend/src/locales/ru/messages.po +++ b/src/frontend/src/locales/ru/messages.po @@ -8,7 +8,7 @@ msgstr "" "Language: ru\n" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-05-23 11:39\n" +"PO-Revision-Date: 2024-06-19 04:50\n" "Last-Translator: \n" "Language-Team: Russian\n" "Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n" @@ -48,18 +48,18 @@ msgstr "" #: src/components/buttons/PrintingActions.tsx:107 #: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 #: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 -#: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 +#: src/components/nav/SearchDrawer.tsx:427 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" msgstr "Ошибка" @@ -121,15 +121,15 @@ msgstr "" msgid "No" msgstr "" -#: src/components/details/Details.tsx:303 +#: src/components/details/Details.tsx:305 msgid "No name defined" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copied" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copy" msgstr "" @@ -145,7 +145,7 @@ msgstr "Удалить связанное изображение?" #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" msgstr "Удалить" @@ -207,9 +207,9 @@ msgstr "" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:686 +#: src/pages/part/PartDetail.tsx:691 msgid "Inactive" msgstr "" @@ -248,6 +248,35 @@ msgstr "" msgid "Virtual" msgstr "" +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "Успешно" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "" + #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" msgstr "" @@ -334,11 +363,6 @@ msgstr "" msgid "Form Error" msgstr "Ошибка формы" -#: src/components/forms/ApiForm.tsx:430 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "Успешно" - #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" #~ msgstr "Form Errors Exist" @@ -389,7 +413,7 @@ msgstr "Ошибка входа" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." msgstr "Проверьте введенные данные и повторите попытку." @@ -399,7 +423,7 @@ msgstr "Проверьте введенные данные и повторите #~ msgstr "Mail delivery successfull" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" msgstr "Отправка почты прошла успешно" @@ -527,7 +551,7 @@ msgstr "Узел" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:127 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -551,7 +575,6 @@ msgid "Add Host" msgstr "Добавить узел" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" msgstr "Сохранить" @@ -579,20 +602,20 @@ msgstr "Название: {0}" msgid "State: <0>worker ({0}), <1>plugins{1}" msgstr "Состояние: <0>рабочий ({0}), <1>плагины{1}" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "Поиск" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" msgstr "Загрузка" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "Ничего не найдено" @@ -614,7 +637,7 @@ msgid "Thumbnail" msgstr "Миниатюра" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" msgstr "" @@ -859,7 +882,7 @@ msgid "Close modal" msgstr "Закрыть модальное окно" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" msgstr "" @@ -967,7 +990,7 @@ msgstr "Настройки аккаунта" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:295 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" msgstr "" @@ -1031,8 +1054,8 @@ msgid "About" msgstr "" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" @@ -1053,35 +1076,35 @@ msgstr "" msgid "Mark as read" msgstr "Пометить как прочитанное" -#: src/components/nav/SearchDrawer.tsx:77 +#: src/components/nav/SearchDrawer.tsx:78 msgid "results" msgstr "результаты" -#: src/components/nav/SearchDrawer.tsx:337 +#: src/components/nav/SearchDrawer.tsx:349 msgid "Enter search text" msgstr "Введите слова для поиска" -#: src/components/nav/SearchDrawer.tsx:364 +#: src/components/nav/SearchDrawer.tsx:376 msgid "Search Options" msgstr "Параметры поиска" -#: src/components/nav/SearchDrawer.tsx:367 +#: src/components/nav/SearchDrawer.tsx:379 msgid "Regex search" msgstr "Поиск по выражению" -#: src/components/nav/SearchDrawer.tsx:377 +#: src/components/nav/SearchDrawer.tsx:389 msgid "Whole word search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:416 +#: src/components/nav/SearchDrawer.tsx:430 msgid "An error occurred during search query" msgstr "Произошла ошибка во время поиска запроса" -#: src/components/nav/SearchDrawer.tsx:427 +#: src/components/nav/SearchDrawer.tsx:441 msgid "No results" msgstr "Нет результатов" -#: src/components/nav/SearchDrawer.tsx:430 +#: src/components/nav/SearchDrawer.tsx:444 msgid "No results available for search query" msgstr "Нет доступных результатов для поискового запроса" @@ -1100,7 +1123,7 @@ msgstr "Неизвестная модель: {model}" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:832 +#: src/pages/part/PartDetail.tsx:837 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" @@ -1109,11 +1132,11 @@ msgstr "" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:640 +#: src/pages/part/PartDetail.tsx:645 msgid "Parts" msgstr "Детали" @@ -1136,7 +1159,7 @@ msgstr "" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "" @@ -1160,15 +1183,15 @@ msgid "Part Category" msgstr "" #: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 +#: src/pages/Index/Settings/SystemSettings.tsx:165 #: src/pages/part/CategoryDetail.tsx:249 #: src/pages/part/CategoryDetail.tsx:282 -#: src/pages/part/PartDetail.tsx:822 +#: src/pages/part/PartDetail.tsx:827 msgid "Part Categories" msgstr "Категории деталей" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:560 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "" @@ -1188,7 +1211,7 @@ msgstr "" #: src/components/render/ModelType.tsx:82 #: src/pages/stock/LocationDetail.tsx:185 #: src/pages/stock/LocationDetail.tsx:361 -#: src/pages/stock/StockDetail.tsx:552 +#: src/pages/stock/StockDetail.tsx:554 msgid "Stock Locations" msgstr "Места хранения" @@ -1227,7 +1250,7 @@ msgid "Build Lines" msgstr "" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" msgstr "" @@ -1250,17 +1273,17 @@ msgid "Project Codes" msgstr "" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" msgstr "" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:573 +#: src/pages/part/PartDetail.tsx:579 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" msgstr "Заказы на закупку" @@ -1275,16 +1298,16 @@ msgstr "" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" msgstr "" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:579 +#: src/pages/part/PartDetail.tsx:586 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" msgstr "Заказы на продажу" @@ -1298,13 +1321,13 @@ msgid "Sales Order Shipments" msgstr "" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" msgstr "" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" @@ -1322,8 +1345,8 @@ msgstr "" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" msgstr "" @@ -1341,7 +1364,7 @@ msgid "Owners" msgstr "" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" msgstr "" @@ -1385,26 +1408,27 @@ msgstr "" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:493 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 #: src/pages/stock/LocationDetail.tsx:345 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" msgstr "" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:517 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" msgstr "" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:523 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 @@ -1844,16 +1868,12 @@ msgid "Getting started" msgstr "" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Failed to upload image" +#~ msgstr "Failed to upload image" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "" +#~ msgid "Notes saved" +#~ msgstr "Notes saved" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" @@ -1972,42 +1992,46 @@ msgid "Portuguese (Brazilian)" msgstr "" #: src/contexts/LanguageContext.tsx:43 -msgid "Russian" +msgid "Romanian" msgstr "" #: src/contexts/LanguageContext.tsx:44 -msgid "Slovak" +msgid "Russian" msgstr "" #: src/contexts/LanguageContext.tsx:45 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: src/contexts/LanguageContext.tsx:46 -msgid "Swedish" +msgid "Slovenian" msgstr "" #: src/contexts/LanguageContext.tsx:47 -msgid "Thai" +msgid "Swedish" msgstr "" #: src/contexts/LanguageContext.tsx:48 -msgid "Turkish" +msgid "Thai" msgstr "" #: src/contexts/LanguageContext.tsx:49 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: src/contexts/LanguageContext.tsx:50 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: src/contexts/LanguageContext.tsx:51 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: src/contexts/LanguageContext.tsx:52 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" msgstr "" @@ -2021,7 +2045,7 @@ msgstr "" #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" msgstr "" @@ -2160,10 +2184,10 @@ msgstr "" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" msgstr "" @@ -2171,15 +2195,15 @@ msgstr "" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" msgstr "" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" msgstr "" @@ -2464,7 +2488,7 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" @@ -2515,7 +2539,7 @@ msgstr "" #~ msgstr "Stock item updated" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" @@ -2537,8 +2561,8 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:207 -#: src/pages/part/PartDetail.tsx:656 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" msgstr "" @@ -2560,14 +2584,14 @@ msgid "Actions" msgstr "" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" msgstr "" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" msgstr "" @@ -2580,12 +2604,12 @@ msgid "Remove Stock" msgstr "" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:788 msgid "Transfer Stock" msgstr "" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:777 msgid "Count Stock" msgstr "" @@ -2625,23 +2649,14 @@ msgstr "" #~ msgid "You have been logged out" #~ msgstr "You have been logged out" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" msgstr "" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" msgstr "" -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "Проверьте свой почтовый ящик, чтобы получить ссылку на сброс. Это работает только в том случае, если у вас есть учетная запись. Проверьте также спам." - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "" - #: src/functions/auth.tsx:141 #~ msgid "Already logged in" #~ msgstr "Already logged in" @@ -2654,11 +2669,20 @@ msgstr "" #~ msgid "Found an existing login - welcome back!" #~ msgstr "Found an existing login - welcome back!" -#: src/functions/auth.tsx:153 +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "Проверьте свой почтовый ящик, чтобы получить ссылку на сброс. Это работает только в том случае, если у вас есть учетная запись. Проверьте также спам." + +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "" + +#: src/functions/auth.tsx:195 msgid "Logged In" msgstr "" -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:196 msgid "Successfully logged in" msgstr "" @@ -2796,7 +2820,7 @@ msgstr "" msgid "Welcome to your Dashboard{0}" msgstr "" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." msgstr "" @@ -3374,15 +3398,15 @@ msgstr "" msgid "System settings" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" msgstr "" @@ -3394,50 +3418,50 @@ msgstr "" #~ msgid "Exchange Rates" #~ msgstr "Exchange Rates" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:591 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:527 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" msgstr "Заказы на сборку" -#: src/pages/Index/Settings/SystemSettings.tsx:298 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" msgstr "" @@ -3475,8 +3499,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3489,8 +3513,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" @@ -3501,10 +3525,10 @@ msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:134 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3537,10 +3561,10 @@ msgid "Issued By" msgstr "" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:322 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 @@ -3555,8 +3579,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" msgstr "" @@ -3594,7 +3618,7 @@ msgstr "" #~ msgstr "Unlink custom barcode from part" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:535 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" msgstr "" @@ -3638,34 +3662,34 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:613 +#: src/pages/part/PartDetail.tsx:622 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" msgstr "" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:625 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" msgstr "" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" @@ -3676,17 +3700,17 @@ msgstr "" #~ msgstr "Reporting Actions" #: src/pages/build/BuildDetail.tsx:374 -#~ msgid "Print build report" -#~ msgstr "Print build report" - -#: src/pages/build/BuildDetail.tsx:378 msgid "Build Order Actions" msgstr "" -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "Print build report" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" msgstr "" @@ -3725,7 +3749,7 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" @@ -3733,10 +3757,10 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 @@ -3769,12 +3793,12 @@ msgstr "" msgid "Assigned Stock" msgstr "" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" msgstr "" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" msgstr "" @@ -3804,32 +3828,32 @@ msgid "Manufacturer Part Details" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:487 +#: src/pages/part/PartDetail.tsx:492 msgid "Parameters" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:560 +#: src/pages/part/PartDetail.tsx:566 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" msgstr "" @@ -3845,7 +3869,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" msgstr "" @@ -3879,7 +3903,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" msgstr "" @@ -3969,85 +3993,85 @@ msgstr "" msgid "Category Details" msgstr "" -#: src/pages/part/PartDetail.tsx:140 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" msgstr "" -#: src/pages/part/PartDetail.tsx:147 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" msgstr "" -#: src/pages/part/PartDetail.tsx:153 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:167 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" msgstr "" -#: src/pages/part/PartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" msgstr "" -#: src/pages/part/PartDetail.tsx:181 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" msgstr "" -#: src/pages/part/PartDetail.tsx:188 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" msgstr "" -#: src/pages/part/PartDetail.tsx:195 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" msgstr "" -#: src/pages/part/PartDetail.tsx:213 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:220 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" msgstr "" -#: src/pages/part/PartDetail.tsx:235 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:243 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:250 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" msgstr "" -#: src/pages/part/PartDetail.tsx:257 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" msgstr "" -#: src/pages/part/PartDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -4065,37 +4089,37 @@ msgstr "" msgid "Active" msgstr "" -#: src/pages/part/PartDetail.tsx:271 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" msgstr "" -#: src/pages/part/PartDetail.tsx:276 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" msgstr "" -#: src/pages/part/PartDetail.tsx:281 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" msgstr "" -#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:291 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:296 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" msgstr "" -#: src/pages/part/PartDetail.tsx:309 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" msgstr "" @@ -4104,7 +4128,7 @@ msgstr "" #~ msgid "Edit part" #~ msgstr "Edit part" -#: src/pages/part/PartDetail.tsx:314 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" msgstr "" @@ -4116,69 +4140,71 @@ msgstr "" #~ msgid "Delete part" #~ msgstr "Delete part" -#: src/pages/part/PartDetail.tsx:329 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" msgstr "" -#: src/pages/part/PartDetail.tsx:340 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" msgstr "" -#: src/pages/part/PartDetail.tsx:375 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" msgstr "" -#: src/pages/part/PartDetail.tsx:410 +#: src/pages/part/PartDetail.tsx:415 msgid "Stocktake By" msgstr "" -#: src/pages/part/PartDetail.tsx:481 +#: src/pages/part/PartDetail.tsx:486 msgid "Part Details" msgstr "" -#: src/pages/part/PartDetail.tsx:507 +#: src/pages/part/PartDetail.tsx:512 msgid "Variants" msgstr "" -#: src/pages/part/PartDetail.tsx:514 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" msgstr "" -#: src/pages/part/PartDetail.tsx:520 +#: src/pages/part/PartDetail.tsx:526 msgid "Bill of Materials" msgstr "" -#: src/pages/part/PartDetail.tsx:534 +#: src/pages/part/PartDetail.tsx:540 msgid "Used In" msgstr "" -#: src/pages/part/PartDetail.tsx:541 +#: src/pages/part/PartDetail.tsx:547 msgid "Part Pricing" msgstr "" -#: src/pages/part/PartDetail.tsx:547 +#: src/pages/part/PartDetail.tsx:553 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" msgstr "" -#: src/pages/part/PartDetail.tsx:586 +#: src/pages/part/PartDetail.tsx:593 msgid "Scheduling" msgstr "" -#: src/pages/part/PartDetail.tsx:596 +#: src/pages/part/PartDetail.tsx:605 msgid "Test Templates" msgstr "" -#: src/pages/part/PartDetail.tsx:607 +#: src/pages/part/PartDetail.tsx:616 msgid "Related Parts" msgstr "" -#: src/pages/part/PartDetail.tsx:662 -#: src/pages/stock/StockDetail.tsx:151 -#: src/pages/stock/StockDetail.tsx:529 +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 @@ -4186,55 +4212,55 @@ msgstr "" msgid "Available" msgstr "" -#: src/pages/part/PartDetail.tsx:668 +#: src/pages/part/PartDetail.tsx:673 msgid "No Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:674 +#: src/pages/part/PartDetail.tsx:679 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" msgstr "" -#: src/pages/part/PartDetail.tsx:680 -#: src/pages/stock/StockDetail.tsx:512 +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" msgstr "" -#: src/pages/part/PartDetail.tsx:699 +#: src/pages/part/PartDetail.tsx:704 msgid "Edit Part" msgstr "" -#: src/pages/part/PartDetail.tsx:706 +#: src/pages/part/PartDetail.tsx:711 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" msgstr "" -#: src/pages/part/PartDetail.tsx:718 +#: src/pages/part/PartDetail.tsx:723 msgid "Delete Part" msgstr "" -#: src/pages/part/PartDetail.tsx:727 +#: src/pages/part/PartDetail.tsx:732 msgid "Deleting this part cannot be reversed" msgstr "" -#: src/pages/part/PartDetail.tsx:765 +#: src/pages/part/PartDetail.tsx:770 #: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" msgstr "" -#: src/pages/part/PartDetail.tsx:773 +#: src/pages/part/PartDetail.tsx:778 msgid "Count part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:784 +#: src/pages/part/PartDetail.tsx:789 msgid "Transfer part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:793 +#: src/pages/part/PartDetail.tsx:798 msgid "Part Actions" msgstr "" @@ -4247,6 +4273,7 @@ msgid "No pricing data found for this part." msgstr "" #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" msgstr "" @@ -4255,54 +4282,32 @@ msgid "Purchase History" msgstr "" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "" - +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 @@ -4311,81 +4316,117 @@ msgstr "" msgid "Total Price" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "Minimum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "Maximum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:25 @@ -4404,33 +4445,33 @@ msgstr "" msgid "Loading pricing data" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "" @@ -4450,23 +4491,23 @@ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" msgstr "" @@ -4477,46 +4518,46 @@ msgstr "" #~ msgstr "Order Currency," #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" msgstr "" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" @@ -4526,17 +4567,17 @@ msgstr "" msgid "Customers" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" msgstr "" @@ -4599,11 +4640,11 @@ msgstr "" msgid "Location Actions" msgstr "" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" msgstr "" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" msgstr "" @@ -4615,15 +4656,15 @@ msgstr "" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "Unlink custom barcode from stock item" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" msgstr "" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" msgstr "" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" msgstr "" @@ -4636,31 +4677,31 @@ msgstr "" #~ msgid "Delete stock item" #~ msgstr "Delete stock item" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" msgstr "" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" msgstr "" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" msgstr "" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" msgstr "" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" msgstr "" @@ -4668,34 +4709,34 @@ msgstr "" #~ msgid "Duplicate stock item" #~ msgstr "Duplicate stock item" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" msgstr "" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" msgstr "" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "" @@ -4786,7 +4827,7 @@ msgstr "Отфильтровать" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" msgstr "Значение" @@ -5224,7 +5265,7 @@ msgid "Required Tests" msgstr "" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" msgstr "" @@ -5306,23 +5347,39 @@ msgstr "" msgid "File could not be uploaded" msgstr "" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" msgstr "" @@ -5330,11 +5387,11 @@ msgstr "" #~ msgid "Upload attachment" #~ msgstr "Upload attachment" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" msgstr "" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "" @@ -5716,75 +5773,75 @@ msgstr "" msgid "No Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 msgid "Required" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:80 +#: src/tables/part/PartTestTemplateTable.tsx:85 msgid "Show required tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:95 +#: src/tables/part/PartTestTemplateTable.tsx:100 msgid "Show tests that require an attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:99 +#: src/tables/part/PartTestTemplateTable.tsx:104 msgid "Include Inherited" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:100 +#: src/tables/part/PartTestTemplateTable.tsx:105 msgid "Show tests from inherited templates" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:104 +#: src/tables/part/PartTestTemplateTable.tsx:109 msgid "Has Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:105 +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" msgstr "" @@ -6273,7 +6330,7 @@ msgid "Task ID" msgstr "" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" msgstr "" @@ -6679,95 +6736,95 @@ msgstr "" msgid "Delete stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 msgid "Delete Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:289 +#: src/tables/stock/StockItemTestResultTable.tsx:273 msgid "Test result deleted" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:303 +#: src/tables/stock/StockItemTestResultTable.tsx:287 msgid "Test Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" msgstr "" diff --git a/src/frontend/src/locales/sk/messages.po b/src/frontend/src/locales/sk/messages.po index ef602a2ddb..48899aa3fc 100644 --- a/src/frontend/src/locales/sk/messages.po +++ b/src/frontend/src/locales/sk/messages.po @@ -8,7 +8,7 @@ msgstr "" "Language: sk\n" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-05-23 11:39\n" +"PO-Revision-Date: 2024-06-19 04:50\n" "Last-Translator: \n" "Language-Team: Slovak\n" "Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" @@ -48,18 +48,18 @@ msgstr "" #: src/components/buttons/PrintingActions.tsx:107 #: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 #: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 -#: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 +#: src/components/nav/SearchDrawer.tsx:427 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" msgstr "" @@ -121,15 +121,15 @@ msgstr "" msgid "No" msgstr "" -#: src/components/details/Details.tsx:303 +#: src/components/details/Details.tsx:305 msgid "No name defined" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copied" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copy" msgstr "" @@ -145,7 +145,7 @@ msgstr "" #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" msgstr "" @@ -207,9 +207,9 @@ msgstr "" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:686 +#: src/pages/part/PartDetail.tsx:691 msgid "Inactive" msgstr "" @@ -248,6 +248,35 @@ msgstr "" msgid "Virtual" msgstr "" +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "" + #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" msgstr "" @@ -334,11 +363,6 @@ msgstr "" msgid "Form Error" msgstr "" -#: src/components/forms/ApiForm.tsx:430 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "" - #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" #~ msgstr "Form Errors Exist" @@ -389,7 +413,7 @@ msgstr "" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." msgstr "" @@ -399,7 +423,7 @@ msgstr "" #~ msgstr "Mail delivery successfull" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" msgstr "" @@ -527,7 +551,7 @@ msgstr "" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:127 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -551,7 +575,6 @@ msgid "Add Host" msgstr "" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" msgstr "" @@ -579,20 +602,20 @@ msgstr "" msgid "State: <0>worker ({0}), <1>plugins{1}" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "" @@ -614,7 +637,7 @@ msgid "Thumbnail" msgstr "" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" msgstr "" @@ -859,7 +882,7 @@ msgid "Close modal" msgstr "" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" msgstr "" @@ -967,7 +990,7 @@ msgstr "" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:295 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" msgstr "" @@ -1031,8 +1054,8 @@ msgid "About" msgstr "" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" @@ -1053,35 +1076,35 @@ msgstr "" msgid "Mark as read" msgstr "" -#: src/components/nav/SearchDrawer.tsx:77 +#: src/components/nav/SearchDrawer.tsx:78 msgid "results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:337 +#: src/components/nav/SearchDrawer.tsx:349 msgid "Enter search text" msgstr "" -#: src/components/nav/SearchDrawer.tsx:364 +#: src/components/nav/SearchDrawer.tsx:376 msgid "Search Options" msgstr "" -#: src/components/nav/SearchDrawer.tsx:367 +#: src/components/nav/SearchDrawer.tsx:379 msgid "Regex search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:377 +#: src/components/nav/SearchDrawer.tsx:389 msgid "Whole word search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:416 +#: src/components/nav/SearchDrawer.tsx:430 msgid "An error occurred during search query" msgstr "" -#: src/components/nav/SearchDrawer.tsx:427 +#: src/components/nav/SearchDrawer.tsx:441 msgid "No results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:430 +#: src/components/nav/SearchDrawer.tsx:444 msgid "No results available for search query" msgstr "" @@ -1100,7 +1123,7 @@ msgstr "" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:832 +#: src/pages/part/PartDetail.tsx:837 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" @@ -1109,11 +1132,11 @@ msgstr "" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:640 +#: src/pages/part/PartDetail.tsx:645 msgid "Parts" msgstr "" @@ -1136,7 +1159,7 @@ msgstr "" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "" @@ -1160,15 +1183,15 @@ msgid "Part Category" msgstr "" #: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 +#: src/pages/Index/Settings/SystemSettings.tsx:165 #: src/pages/part/CategoryDetail.tsx:249 #: src/pages/part/CategoryDetail.tsx:282 -#: src/pages/part/PartDetail.tsx:822 +#: src/pages/part/PartDetail.tsx:827 msgid "Part Categories" msgstr "" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:560 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "" @@ -1188,7 +1211,7 @@ msgstr "" #: src/components/render/ModelType.tsx:82 #: src/pages/stock/LocationDetail.tsx:185 #: src/pages/stock/LocationDetail.tsx:361 -#: src/pages/stock/StockDetail.tsx:552 +#: src/pages/stock/StockDetail.tsx:554 msgid "Stock Locations" msgstr "" @@ -1227,7 +1250,7 @@ msgid "Build Lines" msgstr "" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" msgstr "" @@ -1250,17 +1273,17 @@ msgid "Project Codes" msgstr "" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" msgstr "" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:573 +#: src/pages/part/PartDetail.tsx:579 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" msgstr "" @@ -1275,16 +1298,16 @@ msgstr "" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" msgstr "" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:579 +#: src/pages/part/PartDetail.tsx:586 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" msgstr "" @@ -1298,13 +1321,13 @@ msgid "Sales Order Shipments" msgstr "" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" msgstr "" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" @@ -1322,8 +1345,8 @@ msgstr "" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" msgstr "" @@ -1341,7 +1364,7 @@ msgid "Owners" msgstr "" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" msgstr "" @@ -1385,26 +1408,27 @@ msgstr "" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:493 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 #: src/pages/stock/LocationDetail.tsx:345 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" msgstr "" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:517 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" msgstr "" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:523 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 @@ -1844,16 +1868,12 @@ msgid "Getting started" msgstr "" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Failed to upload image" +#~ msgstr "Failed to upload image" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "" +#~ msgid "Notes saved" +#~ msgstr "Notes saved" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" @@ -1972,42 +1992,46 @@ msgid "Portuguese (Brazilian)" msgstr "" #: src/contexts/LanguageContext.tsx:43 -msgid "Russian" +msgid "Romanian" msgstr "" #: src/contexts/LanguageContext.tsx:44 -msgid "Slovak" +msgid "Russian" msgstr "" #: src/contexts/LanguageContext.tsx:45 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: src/contexts/LanguageContext.tsx:46 -msgid "Swedish" +msgid "Slovenian" msgstr "" #: src/contexts/LanguageContext.tsx:47 -msgid "Thai" +msgid "Swedish" msgstr "" #: src/contexts/LanguageContext.tsx:48 -msgid "Turkish" +msgid "Thai" msgstr "" #: src/contexts/LanguageContext.tsx:49 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: src/contexts/LanguageContext.tsx:50 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: src/contexts/LanguageContext.tsx:51 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: src/contexts/LanguageContext.tsx:52 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" msgstr "" @@ -2021,7 +2045,7 @@ msgstr "" #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" msgstr "" @@ -2160,10 +2184,10 @@ msgstr "" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" msgstr "" @@ -2171,15 +2195,15 @@ msgstr "" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" msgstr "" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" msgstr "" @@ -2464,7 +2488,7 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" @@ -2515,7 +2539,7 @@ msgstr "" #~ msgstr "Stock item updated" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" @@ -2537,8 +2561,8 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:207 -#: src/pages/part/PartDetail.tsx:656 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" msgstr "" @@ -2560,14 +2584,14 @@ msgid "Actions" msgstr "" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" msgstr "" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" msgstr "" @@ -2580,12 +2604,12 @@ msgid "Remove Stock" msgstr "" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:788 msgid "Transfer Stock" msgstr "" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:777 msgid "Count Stock" msgstr "" @@ -2625,23 +2649,14 @@ msgstr "" #~ msgid "You have been logged out" #~ msgstr "You have been logged out" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" msgstr "" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" msgstr "" -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "" - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "" - #: src/functions/auth.tsx:141 #~ msgid "Already logged in" #~ msgstr "Already logged in" @@ -2654,11 +2669,20 @@ msgstr "" #~ msgid "Found an existing login - welcome back!" #~ msgstr "Found an existing login - welcome back!" -#: src/functions/auth.tsx:153 +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "" + +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "" + +#: src/functions/auth.tsx:195 msgid "Logged In" msgstr "" -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:196 msgid "Successfully logged in" msgstr "" @@ -2796,7 +2820,7 @@ msgstr "" msgid "Welcome to your Dashboard{0}" msgstr "" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." msgstr "" @@ -3374,15 +3398,15 @@ msgstr "" msgid "System settings" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" msgstr "" @@ -3394,50 +3418,50 @@ msgstr "" #~ msgid "Exchange Rates" #~ msgstr "Exchange Rates" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:591 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:527 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:298 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" msgstr "" @@ -3475,8 +3499,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3489,8 +3513,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" @@ -3501,10 +3525,10 @@ msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:134 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3537,10 +3561,10 @@ msgid "Issued By" msgstr "" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:322 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 @@ -3555,8 +3579,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" msgstr "" @@ -3594,7 +3618,7 @@ msgstr "" #~ msgstr "Unlink custom barcode from part" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:535 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" msgstr "" @@ -3638,34 +3662,34 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:613 +#: src/pages/part/PartDetail.tsx:622 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" msgstr "" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:625 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" msgstr "" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" @@ -3676,17 +3700,17 @@ msgstr "" #~ msgstr "Reporting Actions" #: src/pages/build/BuildDetail.tsx:374 -#~ msgid "Print build report" -#~ msgstr "Print build report" - -#: src/pages/build/BuildDetail.tsx:378 msgid "Build Order Actions" msgstr "" -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "Print build report" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" msgstr "" @@ -3725,7 +3749,7 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" @@ -3733,10 +3757,10 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 @@ -3769,12 +3793,12 @@ msgstr "" msgid "Assigned Stock" msgstr "" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" msgstr "" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" msgstr "" @@ -3804,32 +3828,32 @@ msgid "Manufacturer Part Details" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:487 +#: src/pages/part/PartDetail.tsx:492 msgid "Parameters" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:560 +#: src/pages/part/PartDetail.tsx:566 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" msgstr "" @@ -3845,7 +3869,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" msgstr "" @@ -3879,7 +3903,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" msgstr "" @@ -3969,85 +3993,85 @@ msgstr "" msgid "Category Details" msgstr "" -#: src/pages/part/PartDetail.tsx:140 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" msgstr "" -#: src/pages/part/PartDetail.tsx:147 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" msgstr "" -#: src/pages/part/PartDetail.tsx:153 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:167 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" msgstr "" -#: src/pages/part/PartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" msgstr "" -#: src/pages/part/PartDetail.tsx:181 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" msgstr "" -#: src/pages/part/PartDetail.tsx:188 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" msgstr "" -#: src/pages/part/PartDetail.tsx:195 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" msgstr "" -#: src/pages/part/PartDetail.tsx:213 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:220 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" msgstr "" -#: src/pages/part/PartDetail.tsx:235 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:243 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:250 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" msgstr "" -#: src/pages/part/PartDetail.tsx:257 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" msgstr "" -#: src/pages/part/PartDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -4065,37 +4089,37 @@ msgstr "" msgid "Active" msgstr "" -#: src/pages/part/PartDetail.tsx:271 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" msgstr "" -#: src/pages/part/PartDetail.tsx:276 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" msgstr "" -#: src/pages/part/PartDetail.tsx:281 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" msgstr "" -#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:291 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:296 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" msgstr "" -#: src/pages/part/PartDetail.tsx:309 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" msgstr "" @@ -4104,7 +4128,7 @@ msgstr "" #~ msgid "Edit part" #~ msgstr "Edit part" -#: src/pages/part/PartDetail.tsx:314 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" msgstr "" @@ -4116,69 +4140,71 @@ msgstr "" #~ msgid "Delete part" #~ msgstr "Delete part" -#: src/pages/part/PartDetail.tsx:329 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" msgstr "" -#: src/pages/part/PartDetail.tsx:340 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" msgstr "" -#: src/pages/part/PartDetail.tsx:375 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" msgstr "" -#: src/pages/part/PartDetail.tsx:410 +#: src/pages/part/PartDetail.tsx:415 msgid "Stocktake By" msgstr "" -#: src/pages/part/PartDetail.tsx:481 +#: src/pages/part/PartDetail.tsx:486 msgid "Part Details" msgstr "" -#: src/pages/part/PartDetail.tsx:507 +#: src/pages/part/PartDetail.tsx:512 msgid "Variants" msgstr "" -#: src/pages/part/PartDetail.tsx:514 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" msgstr "" -#: src/pages/part/PartDetail.tsx:520 +#: src/pages/part/PartDetail.tsx:526 msgid "Bill of Materials" msgstr "" -#: src/pages/part/PartDetail.tsx:534 +#: src/pages/part/PartDetail.tsx:540 msgid "Used In" msgstr "" -#: src/pages/part/PartDetail.tsx:541 +#: src/pages/part/PartDetail.tsx:547 msgid "Part Pricing" msgstr "" -#: src/pages/part/PartDetail.tsx:547 +#: src/pages/part/PartDetail.tsx:553 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" msgstr "" -#: src/pages/part/PartDetail.tsx:586 +#: src/pages/part/PartDetail.tsx:593 msgid "Scheduling" msgstr "" -#: src/pages/part/PartDetail.tsx:596 +#: src/pages/part/PartDetail.tsx:605 msgid "Test Templates" msgstr "" -#: src/pages/part/PartDetail.tsx:607 +#: src/pages/part/PartDetail.tsx:616 msgid "Related Parts" msgstr "" -#: src/pages/part/PartDetail.tsx:662 -#: src/pages/stock/StockDetail.tsx:151 -#: src/pages/stock/StockDetail.tsx:529 +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 @@ -4186,55 +4212,55 @@ msgstr "" msgid "Available" msgstr "" -#: src/pages/part/PartDetail.tsx:668 +#: src/pages/part/PartDetail.tsx:673 msgid "No Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:674 +#: src/pages/part/PartDetail.tsx:679 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" msgstr "" -#: src/pages/part/PartDetail.tsx:680 -#: src/pages/stock/StockDetail.tsx:512 +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" msgstr "" -#: src/pages/part/PartDetail.tsx:699 +#: src/pages/part/PartDetail.tsx:704 msgid "Edit Part" msgstr "" -#: src/pages/part/PartDetail.tsx:706 +#: src/pages/part/PartDetail.tsx:711 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" msgstr "" -#: src/pages/part/PartDetail.tsx:718 +#: src/pages/part/PartDetail.tsx:723 msgid "Delete Part" msgstr "" -#: src/pages/part/PartDetail.tsx:727 +#: src/pages/part/PartDetail.tsx:732 msgid "Deleting this part cannot be reversed" msgstr "" -#: src/pages/part/PartDetail.tsx:765 +#: src/pages/part/PartDetail.tsx:770 #: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" msgstr "" -#: src/pages/part/PartDetail.tsx:773 +#: src/pages/part/PartDetail.tsx:778 msgid "Count part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:784 +#: src/pages/part/PartDetail.tsx:789 msgid "Transfer part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:793 +#: src/pages/part/PartDetail.tsx:798 msgid "Part Actions" msgstr "" @@ -4247,6 +4273,7 @@ msgid "No pricing data found for this part." msgstr "" #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" msgstr "" @@ -4255,54 +4282,32 @@ msgid "Purchase History" msgstr "" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "" - +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 @@ -4311,81 +4316,117 @@ msgstr "" msgid "Total Price" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "Minimum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "Maximum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:25 @@ -4404,33 +4445,33 @@ msgstr "" msgid "Loading pricing data" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "" @@ -4450,23 +4491,23 @@ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" msgstr "" @@ -4477,46 +4518,46 @@ msgstr "" #~ msgstr "Order Currency," #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" msgstr "" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" @@ -4526,17 +4567,17 @@ msgstr "" msgid "Customers" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" msgstr "" @@ -4599,11 +4640,11 @@ msgstr "" msgid "Location Actions" msgstr "" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" msgstr "" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" msgstr "" @@ -4615,15 +4656,15 @@ msgstr "" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "Unlink custom barcode from stock item" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" msgstr "" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" msgstr "" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" msgstr "" @@ -4636,31 +4677,31 @@ msgstr "" #~ msgid "Delete stock item" #~ msgstr "Delete stock item" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" msgstr "" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" msgstr "" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" msgstr "" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" msgstr "" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" msgstr "" @@ -4668,34 +4709,34 @@ msgstr "" #~ msgid "Duplicate stock item" #~ msgstr "Duplicate stock item" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" msgstr "" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" msgstr "" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "" @@ -4786,7 +4827,7 @@ msgstr "" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" msgstr "" @@ -5224,7 +5265,7 @@ msgid "Required Tests" msgstr "" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" msgstr "" @@ -5306,23 +5347,39 @@ msgstr "" msgid "File could not be uploaded" msgstr "" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" msgstr "" @@ -5330,11 +5387,11 @@ msgstr "" #~ msgid "Upload attachment" #~ msgstr "Upload attachment" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" msgstr "" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "" @@ -5716,75 +5773,75 @@ msgstr "" msgid "No Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 msgid "Required" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:80 +#: src/tables/part/PartTestTemplateTable.tsx:85 msgid "Show required tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:95 +#: src/tables/part/PartTestTemplateTable.tsx:100 msgid "Show tests that require an attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:99 +#: src/tables/part/PartTestTemplateTable.tsx:104 msgid "Include Inherited" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:100 +#: src/tables/part/PartTestTemplateTable.tsx:105 msgid "Show tests from inherited templates" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:104 +#: src/tables/part/PartTestTemplateTable.tsx:109 msgid "Has Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:105 +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" msgstr "" @@ -6273,7 +6330,7 @@ msgid "Task ID" msgstr "" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" msgstr "" @@ -6679,95 +6736,95 @@ msgstr "" msgid "Delete stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 msgid "Delete Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:289 +#: src/tables/stock/StockItemTestResultTable.tsx:273 msgid "Test result deleted" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:303 +#: src/tables/stock/StockItemTestResultTable.tsx:287 msgid "Test Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" msgstr "" diff --git a/src/frontend/src/locales/sl/messages.po b/src/frontend/src/locales/sl/messages.po index 10e4b5395c..ef1edd4392 100644 --- a/src/frontend/src/locales/sl/messages.po +++ b/src/frontend/src/locales/sl/messages.po @@ -8,7 +8,7 @@ msgstr "" "Language: sl\n" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-05-23 11:39\n" +"PO-Revision-Date: 2024-06-19 04:50\n" "Last-Translator: \n" "Language-Team: Slovenian\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" @@ -48,18 +48,18 @@ msgstr "" #: src/components/buttons/PrintingActions.tsx:107 #: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 #: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 -#: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 +#: src/components/nav/SearchDrawer.tsx:427 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" msgstr "" @@ -121,15 +121,15 @@ msgstr "" msgid "No" msgstr "" -#: src/components/details/Details.tsx:303 +#: src/components/details/Details.tsx:305 msgid "No name defined" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copied" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copy" msgstr "" @@ -145,7 +145,7 @@ msgstr "" #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" msgstr "" @@ -207,9 +207,9 @@ msgstr "" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:686 +#: src/pages/part/PartDetail.tsx:691 msgid "Inactive" msgstr "" @@ -248,6 +248,35 @@ msgstr "" msgid "Virtual" msgstr "" +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "" + #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" msgstr "" @@ -334,11 +363,6 @@ msgstr "" msgid "Form Error" msgstr "" -#: src/components/forms/ApiForm.tsx:430 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "" - #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" #~ msgstr "Form Errors Exist" @@ -389,7 +413,7 @@ msgstr "" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." msgstr "" @@ -399,7 +423,7 @@ msgstr "" #~ msgstr "Mail delivery successfull" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" msgstr "" @@ -527,7 +551,7 @@ msgstr "" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:127 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -551,7 +575,6 @@ msgid "Add Host" msgstr "" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" msgstr "" @@ -579,20 +602,20 @@ msgstr "" msgid "State: <0>worker ({0}), <1>plugins{1}" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "" @@ -614,7 +637,7 @@ msgid "Thumbnail" msgstr "" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" msgstr "" @@ -859,7 +882,7 @@ msgid "Close modal" msgstr "" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" msgstr "" @@ -967,7 +990,7 @@ msgstr "" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:295 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" msgstr "" @@ -1031,8 +1054,8 @@ msgid "About" msgstr "" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" @@ -1053,35 +1076,35 @@ msgstr "" msgid "Mark as read" msgstr "" -#: src/components/nav/SearchDrawer.tsx:77 +#: src/components/nav/SearchDrawer.tsx:78 msgid "results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:337 +#: src/components/nav/SearchDrawer.tsx:349 msgid "Enter search text" msgstr "" -#: src/components/nav/SearchDrawer.tsx:364 +#: src/components/nav/SearchDrawer.tsx:376 msgid "Search Options" msgstr "" -#: src/components/nav/SearchDrawer.tsx:367 +#: src/components/nav/SearchDrawer.tsx:379 msgid "Regex search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:377 +#: src/components/nav/SearchDrawer.tsx:389 msgid "Whole word search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:416 +#: src/components/nav/SearchDrawer.tsx:430 msgid "An error occurred during search query" msgstr "" -#: src/components/nav/SearchDrawer.tsx:427 +#: src/components/nav/SearchDrawer.tsx:441 msgid "No results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:430 +#: src/components/nav/SearchDrawer.tsx:444 msgid "No results available for search query" msgstr "" @@ -1100,7 +1123,7 @@ msgstr "" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:832 +#: src/pages/part/PartDetail.tsx:837 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" @@ -1109,11 +1132,11 @@ msgstr "" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:640 +#: src/pages/part/PartDetail.tsx:645 msgid "Parts" msgstr "" @@ -1136,7 +1159,7 @@ msgstr "" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "" @@ -1160,15 +1183,15 @@ msgid "Part Category" msgstr "" #: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 +#: src/pages/Index/Settings/SystemSettings.tsx:165 #: src/pages/part/CategoryDetail.tsx:249 #: src/pages/part/CategoryDetail.tsx:282 -#: src/pages/part/PartDetail.tsx:822 +#: src/pages/part/PartDetail.tsx:827 msgid "Part Categories" msgstr "" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:560 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "" @@ -1188,7 +1211,7 @@ msgstr "" #: src/components/render/ModelType.tsx:82 #: src/pages/stock/LocationDetail.tsx:185 #: src/pages/stock/LocationDetail.tsx:361 -#: src/pages/stock/StockDetail.tsx:552 +#: src/pages/stock/StockDetail.tsx:554 msgid "Stock Locations" msgstr "" @@ -1227,7 +1250,7 @@ msgid "Build Lines" msgstr "" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" msgstr "" @@ -1250,17 +1273,17 @@ msgid "Project Codes" msgstr "" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" msgstr "" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:573 +#: src/pages/part/PartDetail.tsx:579 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" msgstr "" @@ -1275,16 +1298,16 @@ msgstr "" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" msgstr "" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:579 +#: src/pages/part/PartDetail.tsx:586 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" msgstr "" @@ -1298,13 +1321,13 @@ msgid "Sales Order Shipments" msgstr "" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" msgstr "" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" @@ -1322,8 +1345,8 @@ msgstr "" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" msgstr "" @@ -1341,7 +1364,7 @@ msgid "Owners" msgstr "" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" msgstr "" @@ -1385,26 +1408,27 @@ msgstr "" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:493 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 #: src/pages/stock/LocationDetail.tsx:345 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" msgstr "" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:517 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" msgstr "" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:523 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 @@ -1844,16 +1868,12 @@ msgid "Getting started" msgstr "" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Failed to upload image" +#~ msgstr "Failed to upload image" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "" +#~ msgid "Notes saved" +#~ msgstr "Notes saved" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" @@ -1972,42 +1992,46 @@ msgid "Portuguese (Brazilian)" msgstr "" #: src/contexts/LanguageContext.tsx:43 -msgid "Russian" +msgid "Romanian" msgstr "" #: src/contexts/LanguageContext.tsx:44 -msgid "Slovak" +msgid "Russian" msgstr "" #: src/contexts/LanguageContext.tsx:45 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: src/contexts/LanguageContext.tsx:46 -msgid "Swedish" +msgid "Slovenian" msgstr "" #: src/contexts/LanguageContext.tsx:47 -msgid "Thai" +msgid "Swedish" msgstr "" #: src/contexts/LanguageContext.tsx:48 -msgid "Turkish" +msgid "Thai" msgstr "" #: src/contexts/LanguageContext.tsx:49 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: src/contexts/LanguageContext.tsx:50 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: src/contexts/LanguageContext.tsx:51 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: src/contexts/LanguageContext.tsx:52 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" msgstr "" @@ -2021,7 +2045,7 @@ msgstr "" #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" msgstr "" @@ -2160,10 +2184,10 @@ msgstr "" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" msgstr "" @@ -2171,15 +2195,15 @@ msgstr "" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" msgstr "" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" msgstr "" @@ -2464,7 +2488,7 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" @@ -2515,7 +2539,7 @@ msgstr "" #~ msgstr "Stock item updated" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" @@ -2537,8 +2561,8 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:207 -#: src/pages/part/PartDetail.tsx:656 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" msgstr "" @@ -2560,14 +2584,14 @@ msgid "Actions" msgstr "" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" msgstr "" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" msgstr "" @@ -2580,12 +2604,12 @@ msgid "Remove Stock" msgstr "" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:788 msgid "Transfer Stock" msgstr "" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:777 msgid "Count Stock" msgstr "" @@ -2625,23 +2649,14 @@ msgstr "" #~ msgid "You have been logged out" #~ msgstr "You have been logged out" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" msgstr "" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" msgstr "" -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "" - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "" - #: src/functions/auth.tsx:141 #~ msgid "Already logged in" #~ msgstr "Already logged in" @@ -2654,11 +2669,20 @@ msgstr "" #~ msgid "Found an existing login - welcome back!" #~ msgstr "Found an existing login - welcome back!" -#: src/functions/auth.tsx:153 +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "" + +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "" + +#: src/functions/auth.tsx:195 msgid "Logged In" msgstr "" -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:196 msgid "Successfully logged in" msgstr "" @@ -2796,7 +2820,7 @@ msgstr "" msgid "Welcome to your Dashboard{0}" msgstr "" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." msgstr "" @@ -3374,15 +3398,15 @@ msgstr "" msgid "System settings" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" msgstr "" @@ -3394,50 +3418,50 @@ msgstr "" #~ msgid "Exchange Rates" #~ msgstr "Exchange Rates" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:591 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:527 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:298 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" msgstr "" @@ -3475,8 +3499,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3489,8 +3513,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" @@ -3501,10 +3525,10 @@ msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:134 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3537,10 +3561,10 @@ msgid "Issued By" msgstr "" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:322 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 @@ -3555,8 +3579,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" msgstr "" @@ -3594,7 +3618,7 @@ msgstr "" #~ msgstr "Unlink custom barcode from part" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:535 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" msgstr "" @@ -3638,34 +3662,34 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:613 +#: src/pages/part/PartDetail.tsx:622 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" msgstr "" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:625 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" msgstr "" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" @@ -3676,17 +3700,17 @@ msgstr "" #~ msgstr "Reporting Actions" #: src/pages/build/BuildDetail.tsx:374 -#~ msgid "Print build report" -#~ msgstr "Print build report" - -#: src/pages/build/BuildDetail.tsx:378 msgid "Build Order Actions" msgstr "" -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "Print build report" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" msgstr "" @@ -3725,7 +3749,7 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" @@ -3733,10 +3757,10 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 @@ -3769,12 +3793,12 @@ msgstr "" msgid "Assigned Stock" msgstr "" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" msgstr "" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" msgstr "" @@ -3804,32 +3828,32 @@ msgid "Manufacturer Part Details" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:487 +#: src/pages/part/PartDetail.tsx:492 msgid "Parameters" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:560 +#: src/pages/part/PartDetail.tsx:566 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" msgstr "" @@ -3845,7 +3869,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" msgstr "" @@ -3879,7 +3903,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" msgstr "" @@ -3969,85 +3993,85 @@ msgstr "" msgid "Category Details" msgstr "" -#: src/pages/part/PartDetail.tsx:140 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" msgstr "" -#: src/pages/part/PartDetail.tsx:147 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" msgstr "" -#: src/pages/part/PartDetail.tsx:153 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:167 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" msgstr "" -#: src/pages/part/PartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" msgstr "" -#: src/pages/part/PartDetail.tsx:181 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" msgstr "" -#: src/pages/part/PartDetail.tsx:188 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" msgstr "" -#: src/pages/part/PartDetail.tsx:195 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" msgstr "" -#: src/pages/part/PartDetail.tsx:213 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:220 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" msgstr "" -#: src/pages/part/PartDetail.tsx:235 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:243 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:250 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" msgstr "" -#: src/pages/part/PartDetail.tsx:257 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" msgstr "" -#: src/pages/part/PartDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -4065,37 +4089,37 @@ msgstr "" msgid "Active" msgstr "" -#: src/pages/part/PartDetail.tsx:271 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" msgstr "" -#: src/pages/part/PartDetail.tsx:276 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" msgstr "" -#: src/pages/part/PartDetail.tsx:281 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" msgstr "" -#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:291 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:296 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" msgstr "" -#: src/pages/part/PartDetail.tsx:309 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" msgstr "" @@ -4104,7 +4128,7 @@ msgstr "" #~ msgid "Edit part" #~ msgstr "Edit part" -#: src/pages/part/PartDetail.tsx:314 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" msgstr "" @@ -4116,69 +4140,71 @@ msgstr "" #~ msgid "Delete part" #~ msgstr "Delete part" -#: src/pages/part/PartDetail.tsx:329 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" msgstr "" -#: src/pages/part/PartDetail.tsx:340 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" msgstr "" -#: src/pages/part/PartDetail.tsx:375 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" msgstr "" -#: src/pages/part/PartDetail.tsx:410 +#: src/pages/part/PartDetail.tsx:415 msgid "Stocktake By" msgstr "" -#: src/pages/part/PartDetail.tsx:481 +#: src/pages/part/PartDetail.tsx:486 msgid "Part Details" msgstr "" -#: src/pages/part/PartDetail.tsx:507 +#: src/pages/part/PartDetail.tsx:512 msgid "Variants" msgstr "" -#: src/pages/part/PartDetail.tsx:514 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" msgstr "" -#: src/pages/part/PartDetail.tsx:520 +#: src/pages/part/PartDetail.tsx:526 msgid "Bill of Materials" msgstr "" -#: src/pages/part/PartDetail.tsx:534 +#: src/pages/part/PartDetail.tsx:540 msgid "Used In" msgstr "" -#: src/pages/part/PartDetail.tsx:541 +#: src/pages/part/PartDetail.tsx:547 msgid "Part Pricing" msgstr "" -#: src/pages/part/PartDetail.tsx:547 +#: src/pages/part/PartDetail.tsx:553 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" msgstr "" -#: src/pages/part/PartDetail.tsx:586 +#: src/pages/part/PartDetail.tsx:593 msgid "Scheduling" msgstr "" -#: src/pages/part/PartDetail.tsx:596 +#: src/pages/part/PartDetail.tsx:605 msgid "Test Templates" msgstr "" -#: src/pages/part/PartDetail.tsx:607 +#: src/pages/part/PartDetail.tsx:616 msgid "Related Parts" msgstr "" -#: src/pages/part/PartDetail.tsx:662 -#: src/pages/stock/StockDetail.tsx:151 -#: src/pages/stock/StockDetail.tsx:529 +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 @@ -4186,55 +4212,55 @@ msgstr "" msgid "Available" msgstr "" -#: src/pages/part/PartDetail.tsx:668 +#: src/pages/part/PartDetail.tsx:673 msgid "No Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:674 +#: src/pages/part/PartDetail.tsx:679 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" msgstr "" -#: src/pages/part/PartDetail.tsx:680 -#: src/pages/stock/StockDetail.tsx:512 +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" msgstr "" -#: src/pages/part/PartDetail.tsx:699 +#: src/pages/part/PartDetail.tsx:704 msgid "Edit Part" msgstr "" -#: src/pages/part/PartDetail.tsx:706 +#: src/pages/part/PartDetail.tsx:711 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" msgstr "" -#: src/pages/part/PartDetail.tsx:718 +#: src/pages/part/PartDetail.tsx:723 msgid "Delete Part" msgstr "" -#: src/pages/part/PartDetail.tsx:727 +#: src/pages/part/PartDetail.tsx:732 msgid "Deleting this part cannot be reversed" msgstr "" -#: src/pages/part/PartDetail.tsx:765 +#: src/pages/part/PartDetail.tsx:770 #: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" msgstr "" -#: src/pages/part/PartDetail.tsx:773 +#: src/pages/part/PartDetail.tsx:778 msgid "Count part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:784 +#: src/pages/part/PartDetail.tsx:789 msgid "Transfer part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:793 +#: src/pages/part/PartDetail.tsx:798 msgid "Part Actions" msgstr "" @@ -4247,6 +4273,7 @@ msgid "No pricing data found for this part." msgstr "" #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" msgstr "" @@ -4255,54 +4282,32 @@ msgid "Purchase History" msgstr "" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "" - +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 @@ -4311,81 +4316,117 @@ msgstr "" msgid "Total Price" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "Minimum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "Maximum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:25 @@ -4404,33 +4445,33 @@ msgstr "" msgid "Loading pricing data" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "" @@ -4450,23 +4491,23 @@ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" msgstr "" @@ -4477,46 +4518,46 @@ msgstr "" #~ msgstr "Order Currency," #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" msgstr "" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" @@ -4526,17 +4567,17 @@ msgstr "" msgid "Customers" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" msgstr "" @@ -4599,11 +4640,11 @@ msgstr "" msgid "Location Actions" msgstr "" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" msgstr "" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" msgstr "" @@ -4615,15 +4656,15 @@ msgstr "" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "Unlink custom barcode from stock item" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" msgstr "" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" msgstr "" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" msgstr "" @@ -4636,31 +4677,31 @@ msgstr "" #~ msgid "Delete stock item" #~ msgstr "Delete stock item" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" msgstr "" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" msgstr "" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" msgstr "" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" msgstr "" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" msgstr "" @@ -4668,34 +4709,34 @@ msgstr "" #~ msgid "Duplicate stock item" #~ msgstr "Duplicate stock item" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" msgstr "" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" msgstr "" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "" @@ -4786,7 +4827,7 @@ msgstr "" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" msgstr "" @@ -5224,7 +5265,7 @@ msgid "Required Tests" msgstr "" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" msgstr "" @@ -5306,23 +5347,39 @@ msgstr "" msgid "File could not be uploaded" msgstr "" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" msgstr "" @@ -5330,11 +5387,11 @@ msgstr "" #~ msgid "Upload attachment" #~ msgstr "Upload attachment" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" msgstr "" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "" @@ -5716,75 +5773,75 @@ msgstr "" msgid "No Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 msgid "Required" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:80 +#: src/tables/part/PartTestTemplateTable.tsx:85 msgid "Show required tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:95 +#: src/tables/part/PartTestTemplateTable.tsx:100 msgid "Show tests that require an attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:99 +#: src/tables/part/PartTestTemplateTable.tsx:104 msgid "Include Inherited" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:100 +#: src/tables/part/PartTestTemplateTable.tsx:105 msgid "Show tests from inherited templates" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:104 +#: src/tables/part/PartTestTemplateTable.tsx:109 msgid "Has Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:105 +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" msgstr "" @@ -6273,7 +6330,7 @@ msgid "Task ID" msgstr "" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" msgstr "" @@ -6679,95 +6736,95 @@ msgstr "" msgid "Delete stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 msgid "Delete Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:289 +#: src/tables/stock/StockItemTestResultTable.tsx:273 msgid "Test result deleted" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:303 +#: src/tables/stock/StockItemTestResultTable.tsx:287 msgid "Test Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" msgstr "" diff --git a/src/frontend/src/locales/sr/messages.po b/src/frontend/src/locales/sr/messages.po index b0f4386c91..542a2c16f8 100644 --- a/src/frontend/src/locales/sr/messages.po +++ b/src/frontend/src/locales/sr/messages.po @@ -8,7 +8,7 @@ msgstr "" "Language: sr\n" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-05-23 11:39\n" +"PO-Revision-Date: 2024-06-19 04:50\n" "Last-Translator: \n" "Language-Team: Serbian (Latin)\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" @@ -48,18 +48,18 @@ msgstr "" #: src/components/buttons/PrintingActions.tsx:107 #: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 #: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 -#: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 +#: src/components/nav/SearchDrawer.tsx:427 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" msgstr "Grеška" @@ -121,15 +121,15 @@ msgstr "Da" msgid "No" msgstr "Ne" -#: src/components/details/Details.tsx:303 +#: src/components/details/Details.tsx:305 msgid "No name defined" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copied" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copy" msgstr "" @@ -145,7 +145,7 @@ msgstr "" #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" msgstr "" @@ -207,9 +207,9 @@ msgstr "" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:686 +#: src/pages/part/PartDetail.tsx:691 msgid "Inactive" msgstr "" @@ -248,6 +248,35 @@ msgstr "" msgid "Virtual" msgstr "" +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "Uspešno" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "" + #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" msgstr "" @@ -334,11 +363,6 @@ msgstr "" msgid "Form Error" msgstr "Greška Obrasca" -#: src/components/forms/ApiForm.tsx:430 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "Uspešno" - #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" #~ msgstr "Form Errors Exist" @@ -389,7 +413,7 @@ msgstr "Neuspešna prijava" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." msgstr "Proverite svoj unos i pokušajte ponovno." @@ -399,7 +423,7 @@ msgstr "Proverite svoj unos i pokušajte ponovno." #~ msgstr "Mail delivery successfull" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" msgstr "Isporuka pošte uspešna" @@ -527,7 +551,7 @@ msgstr "Host" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:127 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -551,7 +575,6 @@ msgid "Add Host" msgstr "Dodajte Host-a" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" msgstr "Sačuvajte" @@ -579,20 +602,20 @@ msgstr "Naziv: {0}" msgid "State: <0>worker ({0}), <1>plugins{1}" msgstr "Status: <0>worker ({0}), <1>plugins{1}" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "Pretraga" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" msgstr "Učitavanje" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "Nema pronađenih rezultata" @@ -614,7 +637,7 @@ msgid "Thumbnail" msgstr "Sličice" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" msgstr "Akcije Barkoda" @@ -859,7 +882,7 @@ msgid "Close modal" msgstr "" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" msgstr "" @@ -967,7 +990,7 @@ msgstr "" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:295 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" msgstr "" @@ -1031,8 +1054,8 @@ msgid "About" msgstr "" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" @@ -1053,35 +1076,35 @@ msgstr "" msgid "Mark as read" msgstr "" -#: src/components/nav/SearchDrawer.tsx:77 +#: src/components/nav/SearchDrawer.tsx:78 msgid "results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:337 +#: src/components/nav/SearchDrawer.tsx:349 msgid "Enter search text" msgstr "" -#: src/components/nav/SearchDrawer.tsx:364 +#: src/components/nav/SearchDrawer.tsx:376 msgid "Search Options" msgstr "" -#: src/components/nav/SearchDrawer.tsx:367 +#: src/components/nav/SearchDrawer.tsx:379 msgid "Regex search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:377 +#: src/components/nav/SearchDrawer.tsx:389 msgid "Whole word search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:416 +#: src/components/nav/SearchDrawer.tsx:430 msgid "An error occurred during search query" msgstr "" -#: src/components/nav/SearchDrawer.tsx:427 +#: src/components/nav/SearchDrawer.tsx:441 msgid "No results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:430 +#: src/components/nav/SearchDrawer.tsx:444 msgid "No results available for search query" msgstr "" @@ -1100,7 +1123,7 @@ msgstr "" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:832 +#: src/pages/part/PartDetail.tsx:837 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" @@ -1109,11 +1132,11 @@ msgstr "" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:640 +#: src/pages/part/PartDetail.tsx:645 msgid "Parts" msgstr "" @@ -1136,7 +1159,7 @@ msgstr "" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "" @@ -1160,15 +1183,15 @@ msgid "Part Category" msgstr "" #: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 +#: src/pages/Index/Settings/SystemSettings.tsx:165 #: src/pages/part/CategoryDetail.tsx:249 #: src/pages/part/CategoryDetail.tsx:282 -#: src/pages/part/PartDetail.tsx:822 +#: src/pages/part/PartDetail.tsx:827 msgid "Part Categories" msgstr "" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:560 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "" @@ -1188,7 +1211,7 @@ msgstr "" #: src/components/render/ModelType.tsx:82 #: src/pages/stock/LocationDetail.tsx:185 #: src/pages/stock/LocationDetail.tsx:361 -#: src/pages/stock/StockDetail.tsx:552 +#: src/pages/stock/StockDetail.tsx:554 msgid "Stock Locations" msgstr "" @@ -1227,7 +1250,7 @@ msgid "Build Lines" msgstr "" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" msgstr "" @@ -1250,17 +1273,17 @@ msgid "Project Codes" msgstr "" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" msgstr "" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:573 +#: src/pages/part/PartDetail.tsx:579 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" msgstr "" @@ -1275,16 +1298,16 @@ msgstr "" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" msgstr "" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:579 +#: src/pages/part/PartDetail.tsx:586 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" msgstr "" @@ -1298,13 +1321,13 @@ msgid "Sales Order Shipments" msgstr "" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" msgstr "" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" @@ -1322,8 +1345,8 @@ msgstr "" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" msgstr "" @@ -1341,7 +1364,7 @@ msgid "Owners" msgstr "" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" msgstr "" @@ -1385,26 +1408,27 @@ msgstr "" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:493 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 #: src/pages/stock/LocationDetail.tsx:345 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" msgstr "" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:517 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" msgstr "" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:523 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 @@ -1844,16 +1868,12 @@ msgid "Getting started" msgstr "" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Failed to upload image" +#~ msgstr "Failed to upload image" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "" +#~ msgid "Notes saved" +#~ msgstr "Notes saved" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" @@ -1972,42 +1992,46 @@ msgid "Portuguese (Brazilian)" msgstr "" #: src/contexts/LanguageContext.tsx:43 -msgid "Russian" +msgid "Romanian" msgstr "" #: src/contexts/LanguageContext.tsx:44 -msgid "Slovak" +msgid "Russian" msgstr "" #: src/contexts/LanguageContext.tsx:45 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: src/contexts/LanguageContext.tsx:46 -msgid "Swedish" +msgid "Slovenian" msgstr "" #: src/contexts/LanguageContext.tsx:47 -msgid "Thai" +msgid "Swedish" msgstr "" #: src/contexts/LanguageContext.tsx:48 -msgid "Turkish" +msgid "Thai" msgstr "" #: src/contexts/LanguageContext.tsx:49 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: src/contexts/LanguageContext.tsx:50 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: src/contexts/LanguageContext.tsx:51 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: src/contexts/LanguageContext.tsx:52 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" msgstr "" @@ -2021,7 +2045,7 @@ msgstr "" #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" msgstr "" @@ -2160,10 +2184,10 @@ msgstr "" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" msgstr "" @@ -2171,15 +2195,15 @@ msgstr "" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" msgstr "" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" msgstr "" @@ -2464,7 +2488,7 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" @@ -2515,7 +2539,7 @@ msgstr "" #~ msgstr "Stock item updated" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" @@ -2537,8 +2561,8 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:207 -#: src/pages/part/PartDetail.tsx:656 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" msgstr "" @@ -2560,14 +2584,14 @@ msgid "Actions" msgstr "" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" msgstr "" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" msgstr "" @@ -2580,12 +2604,12 @@ msgid "Remove Stock" msgstr "" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:788 msgid "Transfer Stock" msgstr "" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:777 msgid "Count Stock" msgstr "" @@ -2625,23 +2649,14 @@ msgstr "" #~ msgid "You have been logged out" #~ msgstr "You have been logged out" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" msgstr "" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" msgstr "" -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "" - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "" - #: src/functions/auth.tsx:141 #~ msgid "Already logged in" #~ msgstr "Already logged in" @@ -2654,11 +2669,20 @@ msgstr "" #~ msgid "Found an existing login - welcome back!" #~ msgstr "Found an existing login - welcome back!" -#: src/functions/auth.tsx:153 +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "" + +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "" + +#: src/functions/auth.tsx:195 msgid "Logged In" msgstr "" -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:196 msgid "Successfully logged in" msgstr "" @@ -2796,7 +2820,7 @@ msgstr "" msgid "Welcome to your Dashboard{0}" msgstr "" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." msgstr "" @@ -3374,15 +3398,15 @@ msgstr "" msgid "System settings" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" msgstr "" @@ -3394,50 +3418,50 @@ msgstr "" #~ msgid "Exchange Rates" #~ msgstr "Exchange Rates" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:591 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:527 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:298 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" msgstr "" @@ -3475,8 +3499,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3489,8 +3513,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" @@ -3501,10 +3525,10 @@ msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:134 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3537,10 +3561,10 @@ msgid "Issued By" msgstr "" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:322 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 @@ -3555,8 +3579,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" msgstr "" @@ -3594,7 +3618,7 @@ msgstr "" #~ msgstr "Unlink custom barcode from part" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:535 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" msgstr "" @@ -3638,34 +3662,34 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:613 +#: src/pages/part/PartDetail.tsx:622 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" msgstr "" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:625 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" msgstr "" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" @@ -3676,17 +3700,17 @@ msgstr "" #~ msgstr "Reporting Actions" #: src/pages/build/BuildDetail.tsx:374 -#~ msgid "Print build report" -#~ msgstr "Print build report" - -#: src/pages/build/BuildDetail.tsx:378 msgid "Build Order Actions" msgstr "" -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "Print build report" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" msgstr "" @@ -3725,7 +3749,7 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" @@ -3733,10 +3757,10 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 @@ -3769,12 +3793,12 @@ msgstr "" msgid "Assigned Stock" msgstr "" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" msgstr "" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" msgstr "" @@ -3804,32 +3828,32 @@ msgid "Manufacturer Part Details" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:487 +#: src/pages/part/PartDetail.tsx:492 msgid "Parameters" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:560 +#: src/pages/part/PartDetail.tsx:566 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" msgstr "" @@ -3845,7 +3869,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" msgstr "" @@ -3879,7 +3903,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" msgstr "" @@ -3969,85 +3993,85 @@ msgstr "" msgid "Category Details" msgstr "" -#: src/pages/part/PartDetail.tsx:140 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" msgstr "" -#: src/pages/part/PartDetail.tsx:147 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" msgstr "" -#: src/pages/part/PartDetail.tsx:153 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:167 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" msgstr "" -#: src/pages/part/PartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" msgstr "" -#: src/pages/part/PartDetail.tsx:181 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" msgstr "" -#: src/pages/part/PartDetail.tsx:188 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" msgstr "" -#: src/pages/part/PartDetail.tsx:195 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" msgstr "" -#: src/pages/part/PartDetail.tsx:213 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:220 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" msgstr "" -#: src/pages/part/PartDetail.tsx:235 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:243 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:250 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" msgstr "" -#: src/pages/part/PartDetail.tsx:257 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" msgstr "" -#: src/pages/part/PartDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -4065,37 +4089,37 @@ msgstr "" msgid "Active" msgstr "" -#: src/pages/part/PartDetail.tsx:271 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" msgstr "" -#: src/pages/part/PartDetail.tsx:276 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" msgstr "" -#: src/pages/part/PartDetail.tsx:281 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" msgstr "" -#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:291 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:296 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" msgstr "" -#: src/pages/part/PartDetail.tsx:309 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" msgstr "" @@ -4104,7 +4128,7 @@ msgstr "" #~ msgid "Edit part" #~ msgstr "Edit part" -#: src/pages/part/PartDetail.tsx:314 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" msgstr "" @@ -4116,69 +4140,71 @@ msgstr "" #~ msgid "Delete part" #~ msgstr "Delete part" -#: src/pages/part/PartDetail.tsx:329 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" msgstr "" -#: src/pages/part/PartDetail.tsx:340 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" msgstr "" -#: src/pages/part/PartDetail.tsx:375 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" msgstr "" -#: src/pages/part/PartDetail.tsx:410 +#: src/pages/part/PartDetail.tsx:415 msgid "Stocktake By" msgstr "" -#: src/pages/part/PartDetail.tsx:481 +#: src/pages/part/PartDetail.tsx:486 msgid "Part Details" msgstr "" -#: src/pages/part/PartDetail.tsx:507 +#: src/pages/part/PartDetail.tsx:512 msgid "Variants" msgstr "" -#: src/pages/part/PartDetail.tsx:514 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" msgstr "" -#: src/pages/part/PartDetail.tsx:520 +#: src/pages/part/PartDetail.tsx:526 msgid "Bill of Materials" msgstr "" -#: src/pages/part/PartDetail.tsx:534 +#: src/pages/part/PartDetail.tsx:540 msgid "Used In" msgstr "" -#: src/pages/part/PartDetail.tsx:541 +#: src/pages/part/PartDetail.tsx:547 msgid "Part Pricing" msgstr "" -#: src/pages/part/PartDetail.tsx:547 +#: src/pages/part/PartDetail.tsx:553 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" msgstr "" -#: src/pages/part/PartDetail.tsx:586 +#: src/pages/part/PartDetail.tsx:593 msgid "Scheduling" msgstr "" -#: src/pages/part/PartDetail.tsx:596 +#: src/pages/part/PartDetail.tsx:605 msgid "Test Templates" msgstr "" -#: src/pages/part/PartDetail.tsx:607 +#: src/pages/part/PartDetail.tsx:616 msgid "Related Parts" msgstr "" -#: src/pages/part/PartDetail.tsx:662 -#: src/pages/stock/StockDetail.tsx:151 -#: src/pages/stock/StockDetail.tsx:529 +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 @@ -4186,55 +4212,55 @@ msgstr "" msgid "Available" msgstr "" -#: src/pages/part/PartDetail.tsx:668 +#: src/pages/part/PartDetail.tsx:673 msgid "No Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:674 +#: src/pages/part/PartDetail.tsx:679 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" msgstr "" -#: src/pages/part/PartDetail.tsx:680 -#: src/pages/stock/StockDetail.tsx:512 +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" msgstr "" -#: src/pages/part/PartDetail.tsx:699 +#: src/pages/part/PartDetail.tsx:704 msgid "Edit Part" msgstr "" -#: src/pages/part/PartDetail.tsx:706 +#: src/pages/part/PartDetail.tsx:711 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" msgstr "" -#: src/pages/part/PartDetail.tsx:718 +#: src/pages/part/PartDetail.tsx:723 msgid "Delete Part" msgstr "" -#: src/pages/part/PartDetail.tsx:727 +#: src/pages/part/PartDetail.tsx:732 msgid "Deleting this part cannot be reversed" msgstr "" -#: src/pages/part/PartDetail.tsx:765 +#: src/pages/part/PartDetail.tsx:770 #: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" msgstr "" -#: src/pages/part/PartDetail.tsx:773 +#: src/pages/part/PartDetail.tsx:778 msgid "Count part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:784 +#: src/pages/part/PartDetail.tsx:789 msgid "Transfer part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:793 +#: src/pages/part/PartDetail.tsx:798 msgid "Part Actions" msgstr "" @@ -4247,6 +4273,7 @@ msgid "No pricing data found for this part." msgstr "" #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" msgstr "" @@ -4255,54 +4282,32 @@ msgid "Purchase History" msgstr "" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "" - +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 @@ -4311,81 +4316,117 @@ msgstr "" msgid "Total Price" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "Minimum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "Maximum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:25 @@ -4404,33 +4445,33 @@ msgstr "" msgid "Loading pricing data" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "" @@ -4450,23 +4491,23 @@ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" msgstr "" @@ -4477,46 +4518,46 @@ msgstr "" #~ msgstr "Order Currency," #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" msgstr "" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" @@ -4526,17 +4567,17 @@ msgstr "" msgid "Customers" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" msgstr "" @@ -4599,11 +4640,11 @@ msgstr "" msgid "Location Actions" msgstr "" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" msgstr "" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" msgstr "" @@ -4615,15 +4656,15 @@ msgstr "" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "Unlink custom barcode from stock item" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" msgstr "" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" msgstr "" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" msgstr "" @@ -4636,31 +4677,31 @@ msgstr "" #~ msgid "Delete stock item" #~ msgstr "Delete stock item" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" msgstr "" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" msgstr "" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" msgstr "" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" msgstr "" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" msgstr "" @@ -4668,34 +4709,34 @@ msgstr "" #~ msgid "Duplicate stock item" #~ msgstr "Duplicate stock item" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" msgstr "" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" msgstr "" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "" @@ -4786,7 +4827,7 @@ msgstr "" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" msgstr "" @@ -5224,7 +5265,7 @@ msgid "Required Tests" msgstr "" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" msgstr "" @@ -5306,23 +5347,39 @@ msgstr "" msgid "File could not be uploaded" msgstr "" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" msgstr "" @@ -5330,11 +5387,11 @@ msgstr "" #~ msgid "Upload attachment" #~ msgstr "Upload attachment" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" msgstr "" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "" @@ -5716,75 +5773,75 @@ msgstr "" msgid "No Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 msgid "Required" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:80 +#: src/tables/part/PartTestTemplateTable.tsx:85 msgid "Show required tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:95 +#: src/tables/part/PartTestTemplateTable.tsx:100 msgid "Show tests that require an attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:99 +#: src/tables/part/PartTestTemplateTable.tsx:104 msgid "Include Inherited" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:100 +#: src/tables/part/PartTestTemplateTable.tsx:105 msgid "Show tests from inherited templates" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:104 +#: src/tables/part/PartTestTemplateTable.tsx:109 msgid "Has Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:105 +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" msgstr "" @@ -6273,7 +6330,7 @@ msgid "Task ID" msgstr "" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" msgstr "" @@ -6679,95 +6736,95 @@ msgstr "" msgid "Delete stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 msgid "Delete Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:289 +#: src/tables/stock/StockItemTestResultTable.tsx:273 msgid "Test result deleted" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:303 +#: src/tables/stock/StockItemTestResultTable.tsx:287 msgid "Test Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" msgstr "" diff --git a/src/frontend/src/locales/sv/messages.po b/src/frontend/src/locales/sv/messages.po index f6c2800fd8..61abdcbff8 100644 --- a/src/frontend/src/locales/sv/messages.po +++ b/src/frontend/src/locales/sv/messages.po @@ -8,7 +8,7 @@ msgstr "" "Language: sv\n" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-05-23 11:39\n" +"PO-Revision-Date: 2024-06-21 04:59\n" "Last-Translator: \n" "Language-Team: Swedish\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -20,11 +20,11 @@ msgstr "" #: src/components/Boundary.tsx:12 msgid "Error rendering component" -msgstr "" +msgstr "Fel vid rendering av komponent" #: src/components/Boundary.tsx:14 msgid "An error occurred while rendering this component. Refer to the console for more information." -msgstr "" +msgstr "Ett fel inträffade vid rendering av denna komponent. Se konsolen för mer information." #: src/components/DashboardItemProxy.tsx:34 msgid "Title" @@ -32,64 +32,64 @@ msgstr "Titel" #: src/components/buttons/AdminButton.tsx:83 msgid "Open in admin interface" -msgstr "" +msgstr "Öppna i administratörsgränssnittet" #: src/components/buttons/CopyButton.tsx:18 msgid "Copy to clipboard" -msgstr "" +msgstr "Kopiera till urklipp" #: src/components/buttons/PrintingActions.tsx:95 msgid "Print Label" -msgstr "" +msgstr "Skriv ut etikett" #: src/components/buttons/PrintingActions.tsx:101 msgid "Label printing completed successfully" -msgstr "" +msgstr "Utskrift av etiketter lyckades" #: src/components/buttons/PrintingActions.tsx:107 #: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 #: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 -#: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 +#: src/components/nav/SearchDrawer.tsx:427 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" msgstr "Fel" #: src/components/buttons/PrintingActions.tsx:108 msgid "The label could not be generated" -msgstr "" +msgstr "Etiketten kunde inte genereras" #: src/components/buttons/PrintingActions.tsx:123 msgid "Print Report" -msgstr "" +msgstr "Skriv ut Rapport" #: src/components/buttons/PrintingActions.tsx:139 msgid "Report printing completed successfully" -msgstr "" +msgstr "Utskrift av rapporten lyckades" #: src/components/buttons/PrintingActions.tsx:145 msgid "The report could not be generated" -msgstr "" +msgstr "Rapporten kunde inte genereras" #: src/components/buttons/PrintingActions.tsx:173 msgid "Printing Actions" -msgstr "" +msgstr "Utskriftsalternativ" #: src/components/buttons/PrintingActions.tsx:178 msgid "Print Labels" -msgstr "" +msgstr "Skriv ut etiketter" #: src/components/buttons/PrintingActions.tsx:184 msgid "Print Reports" -msgstr "" +msgstr "Skriv ut rapporter" #: src/components/buttons/ScanButton.tsx:15 msgid "Scan QR code" @@ -97,7 +97,7 @@ msgstr "Skanna QR-kod" #: src/components/buttons/ScanButton.tsx:20 msgid "Open QR code scanner" -msgstr "" +msgstr "Öppna QR-kodsskannern" #: src/components/buttons/SpotlightButton.tsx:14 msgid "Open spotlight" @@ -105,11 +105,11 @@ msgstr "" #: src/components/buttons/YesNoButton.tsx:16 msgid "Pass" -msgstr "" +msgstr "Lyckades" #: src/components/buttons/YesNoButton.tsx:17 msgid "Fail" -msgstr "" +msgstr "Misslyckades" #: src/components/buttons/YesNoButton.tsx:32 #: src/tables/Filter.tsx:51 @@ -121,33 +121,33 @@ msgstr "Ja" msgid "No" msgstr "Nej" -#: src/components/details/Details.tsx:303 +#: src/components/details/Details.tsx:305 msgid "No name defined" -msgstr "" +msgstr "Inget namn definierat" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copied" -msgstr "" +msgstr "Kopierad" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copy" msgstr "Kopiera" #: src/components/details/DetailsImage.tsx:65 msgid "Remove Image" -msgstr "" +msgstr "Ta bort bild" #: src/components/details/DetailsImage.tsx:68 msgid "Remove the associated image from this item?" -msgstr "" +msgstr "Vill du ta bort den associerade bilden från denna artikel?" #: src/components/details/DetailsImage.tsx:71 #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" -msgstr "" +msgstr "Ta bort" #: src/components/details/DetailsImage.tsx:71 #: src/components/editors/TemplateEditor/TemplateEditor.tsx:158 @@ -164,11 +164,11 @@ msgstr "Avbryt" #: src/components/details/DetailsImage.tsx:97 msgid "Drag and drop to upload" -msgstr "" +msgstr "Dra och släpp för att ladda upp" #: src/components/details/DetailsImage.tsx:100 msgid "Click to select file(s)" -msgstr "" +msgstr "Klicka för att välja fil(er)" #: src/components/details/DetailsImage.tsx:224 msgid "Clear" @@ -183,19 +183,19 @@ msgstr "Skicka" #: src/components/details/DetailsImage.tsx:267 msgid "Select from existing images" -msgstr "" +msgstr "Välj från befintliga bilder" #: src/components/details/DetailsImage.tsx:275 msgid "Select Image" -msgstr "" +msgstr "Välj bild" #: src/components/details/DetailsImage.tsx:287 msgid "Upload new image" -msgstr "" +msgstr "Ladda upp ny bild" #: src/components/details/DetailsImage.tsx:294 msgid "Upload Image" -msgstr "" +msgstr "Ladda upp bild" #: src/components/details/DetailsImage.tsx:307 msgid "Delete image" @@ -203,43 +203,43 @@ msgstr "Radera bild" #: src/components/details/PartIcons.tsx:28 msgid "Part is not active" -msgstr "" +msgstr "Artikeln är inte aktiv" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:686 +#: src/pages/part/PartDetail.tsx:691 msgid "Inactive" -msgstr "" +msgstr "Inaktiv" #: src/components/details/PartIcons.tsx:41 msgid "Part is a template part (variants can be made from this part)" -msgstr "" +msgstr "Artikeln är en mall-artikel (varianter kan skapas från denna artikel)" #: src/components/details/PartIcons.tsx:47 msgid "Part can be assembled from other parts" -msgstr "" +msgstr "Artikeln kan sammanställas från andra artiklar" #: src/components/details/PartIcons.tsx:53 msgid "Part can be used in assemblies" -msgstr "" +msgstr "Artikel kan användas i sammanställningar" #: src/components/details/PartIcons.tsx:59 msgid "Part stock is tracked by serial number" -msgstr "" +msgstr "Artikelns lager spåras med serienummer" #: src/components/details/PartIcons.tsx:65 msgid "Part can be purchased from external suppliers" -msgstr "" +msgstr "Artikeln kan köpas av externa leverantörer" #: src/components/details/PartIcons.tsx:71 msgid "Part can be sold to customers" -msgstr "" +msgstr "Artikeln kan säljas till kunder" #: src/components/details/PartIcons.tsx:76 msgid "Part is virtual (not a physical part)" -msgstr "" +msgstr "Artikeln är virtuell (ej fysisk artikel)" #: src/components/details/PartIcons.tsx:82 #: src/tables/part/PartTable.tsx:234 @@ -248,6 +248,35 @@ msgstr "" msgid "Virtual" msgstr "Virtuell" +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "Bilduppladdning misslyckades" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "Lyckades" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "Anteckningarna sparades framgångsrikt" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "Det gick inte att spara anteckningarna" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "Förhandsgranska anteckningar" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "Redigera anteckningar" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "Spara anteckningar" + #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" msgstr "Kod" @@ -258,28 +287,28 @@ msgstr "Kod" #: src/components/editors/TemplateEditor/PdfPreview/PdfPreview.tsx:81 msgid "Preview not available, click \"Reload Preview\"." -msgstr "" +msgstr "Förhandsgranska ej tillgänglig, klicka på \"Ladda om förhandsgranskning\"." #: src/components/editors/TemplateEditor/PdfPreview/index.tsx:9 msgid "PDF Preview" -msgstr "" +msgstr "Förhandsgranska PDF" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:104 msgid "Error loading template" -msgstr "" +msgstr "Fel vid inläsning av mall" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:116 msgid "Error saving template" -msgstr "" +msgstr "Fel vid sparande av mall" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:146 #: src/components/editors/TemplateEditor/TemplateEditor.tsx:270 msgid "Save & Reload Preview" -msgstr "" +msgstr "Spara och ladda om förhandsgranskning" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:151 msgid "Are you sure you want to Save & Reload the preview?" -msgstr "" +msgstr "Är du säker på att du vill spara och ladda om förhandsgranskningen?" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:151 #~ msgid "Save & Reload preview?" @@ -287,27 +316,27 @@ msgstr "" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:153 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?" -msgstr "" +msgstr "För att visa förhandsgranskningen måste den aktuella mallen bytas ut på servern med dina ändringar som kan bryta etiketten om den är under aktiv användning. Vill du fortsätta?" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:157 msgid "Save & Reload" -msgstr "" +msgstr "Spara och ladda om" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:189 msgid "Preview updated" -msgstr "" +msgstr "Förhandsgranskningen uppdaterad" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:190 msgid "The preview has been updated successfully." -msgstr "" +msgstr "Uppdateringen av förhandsgranskningen lyckades." #: src/components/editors/TemplateEditor/TemplateEditor.tsx:262 msgid "Reload preview" -msgstr "" +msgstr "Ladda om förhandsgranskning" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:263 msgid "Use the currently stored template from the server" -msgstr "" +msgstr "Använd mallen som finns sparad på servern" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:263 #~ msgid "Save & Reload preview" @@ -315,7 +344,7 @@ msgstr "" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:271 msgid "Save the current template and reload the preview" -msgstr "" +msgstr "Spara den aktuella mallen och ladda om förhandsgranskningen" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:322 #~ msgid "to preview" @@ -323,21 +352,16 @@ msgstr "" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:329 msgid "Select instance to preview" -msgstr "" +msgstr "Välj instans att förhandsgranska" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:373 msgid "Error rendering template" -msgstr "" +msgstr "Fel vid rendering av mall" #: src/components/forms/ApiForm.tsx:149 #: src/functions/forms.tsx:259 msgid "Form Error" -msgstr "" - -#: src/components/forms/ApiForm.tsx:430 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "" +msgstr "Formulär fel" #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" @@ -346,7 +370,7 @@ msgstr "" #: src/components/forms/ApiForm.tsx:611 #: src/tables/plugin/PluginListTable.tsx:388 msgid "Update" -msgstr "" +msgstr "Uppdatera" #: src/components/forms/ApiForm.tsx:631 #: src/components/items/ActionDropdown.tsx:210 @@ -372,7 +396,7 @@ msgstr "Inlogningen lyckad" #: src/components/forms/AuthenticationForm.tsx:52 msgid "Logged in successfully" -msgstr "" +msgstr "Inloggningen lyckades" #: src/components/forms/AuthenticationForm.tsx:52 #~ msgid "Welcome back!" @@ -389,7 +413,7 @@ msgstr "Inloggningen misslyckades" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." msgstr "Kontrollera din inmatning och försök igen." @@ -399,7 +423,7 @@ msgstr "Kontrollera din inmatning och försök igen." #~ msgstr "Mail delivery successfull" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" msgstr "E-postleverans lyckad" @@ -409,11 +433,11 @@ msgstr "Kolla din inkorg för inloggningslänken. Om du har ett konto kommer du #: src/components/forms/AuthenticationForm.tsx:75 msgid "Mail delivery failed" -msgstr "" +msgstr "E-postleverans misslyckades" #: src/components/forms/AuthenticationForm.tsx:95 msgid "Or continue with other methods" -msgstr "" +msgstr "Eller fortsätt med andra metoder" #: src/components/forms/AuthenticationForm.tsx:106 #: src/components/forms/AuthenticationForm.tsx:227 @@ -476,11 +500,11 @@ msgstr "Logga in" #: src/components/forms/AuthenticationForm.tsx:164 msgid "Send Email" -msgstr "" +msgstr "Skicka e-post" #: src/components/forms/AuthenticationForm.tsx:193 msgid "Registration successful" -msgstr "" +msgstr "Registreringen lyckades" #: src/components/forms/AuthenticationForm.tsx:194 msgid "Please confirm your email address to complete the registration" @@ -492,11 +516,11 @@ msgstr "Inmatningsfel" #: src/components/forms/AuthenticationForm.tsx:234 msgid "This will be used for a confirmation" -msgstr "" +msgstr "Detta kommer att användas för en bekräftelse" #: src/components/forms/AuthenticationForm.tsx:246 msgid "Password repeat" -msgstr "" +msgstr "Upprepa lösenordet" #: src/components/forms/AuthenticationForm.tsx:247 msgid "Repeat password" @@ -505,7 +529,7 @@ msgstr "Upprepa lösenord" #: src/components/forms/AuthenticationForm.tsx:259 #: src/components/forms/AuthenticationForm.tsx:304 msgid "Register" -msgstr "" +msgstr "Registrera" #: src/components/forms/AuthenticationForm.tsx:265 msgid "Or use SSO" @@ -517,7 +541,7 @@ msgstr "Har du inget konto?" #: src/components/forms/AuthenticationForm.tsx:315 msgid "Go back to login" -msgstr "" +msgstr "Tillbaka till inloggning" #: src/components/forms/HostOptionsForm.tsx:36 #: src/components/forms/HostOptionsForm.tsx:67 @@ -527,7 +551,7 @@ msgstr "Värd" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:127 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -551,7 +575,6 @@ msgid "Add Host" msgstr "Lägg till värd" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" msgstr "Spara" @@ -577,32 +600,32 @@ msgstr "Namn: {0}" #: src/components/forms/InstanceOptions.tsx:104 msgid "State: <0>worker ({0}), <1>plugins{1}" -msgstr "" +msgstr "Stat: <0>arbetare ({0}), <1>plugins{1}" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "Sök" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" -msgstr "" +msgstr "Laddar" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "Inga resultat hittades" #: src/components/forms/fields/TableField.tsx:50 msgid "modelRenderer entry required for tables" -msgstr "" +msgstr "modelRenderer post krävs för tabeller" #: src/components/forms/fields/TableField.tsx:74 msgid "No entries available" -msgstr "" +msgstr "Inga poster tillgängliga" #: src/components/images/DetailsImage.tsx:252 #~ msgid "Select image" @@ -614,34 +637,34 @@ msgid "Thumbnail" msgstr "Miniatyrbild" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" -msgstr "" +msgstr "Streckkods åtgärder" #: src/components/items/ActionDropdown.tsx:136 msgid "View" -msgstr "" +msgstr "Visa" #: src/components/items/ActionDropdown.tsx:137 msgid "View barcode" -msgstr "" +msgstr "Visa streckkod" #: src/components/items/ActionDropdown.tsx:153 msgid "Link Barcode" -msgstr "" +msgstr "Länka streckkod" #: src/components/items/ActionDropdown.tsx:154 msgid "Link custom barcode" -msgstr "" +msgstr "Länka anpassad streckkod" #: src/components/items/ActionDropdown.tsx:170 #: src/forms/PurchaseOrderForms.tsx:389 msgid "Unlink Barcode" -msgstr "" +msgstr "Ta bort länk för streckkod" #: src/components/items/ActionDropdown.tsx:171 msgid "Unlink custom barcode" -msgstr "" +msgstr "Ta bort länk för anpassad streckkod" #: src/components/items/ActionDropdown.tsx:189 #: src/tables/RowActions.tsx:51 @@ -650,16 +673,16 @@ msgstr "Redigera" #: src/components/items/ActionDropdown.tsx:211 msgid "Delete item" -msgstr "" +msgstr "Radera objekt" #: src/components/items/ActionDropdown.tsx:248 #: src/tables/RowActions.tsx:31 msgid "Duplicate" -msgstr "" +msgstr "Duplicera" #: src/components/items/ActionDropdown.tsx:249 msgid "Duplicate item" -msgstr "" +msgstr "Duplicera objekt" #: src/components/items/DocTooltip.tsx:92 msgid "Read More" @@ -680,7 +703,7 @@ msgstr "Läs mer" #: src/components/items/InfoItem.tsx:27 msgid "None" -msgstr "" +msgstr "Ingen" #: src/components/items/InvenTreeLogo.tsx:23 msgid "InvenTree Logo" @@ -689,7 +712,7 @@ msgstr "InvenTree Logotyp" #: src/components/items/OnlyStaff.tsx:9 #: src/components/modals/AboutInvenTreeModal.tsx:44 msgid "This information is only available for staff users" -msgstr "" +msgstr "Denna information är endast tillgänglig för personalanvändare" #: src/components/items/Placeholder.tsx:14 msgid "This feature/button/site is a placeholder for a feature that is not implemented, only partial or intended for testing." @@ -701,31 +724,31 @@ msgstr "PLH" #: src/components/items/Placeholder.tsx:31 msgid "This panel is a placeholder." -msgstr "" +msgstr "Denna panel är en platshållare." #: src/components/modals/AboutInvenTreeModal.tsx:99 msgid "Version Information" -msgstr "" +msgstr "Versionsinformation" #: src/components/modals/AboutInvenTreeModal.tsx:103 msgid "Your InvenTree version status is" -msgstr "" +msgstr "Din versionsstatus för InvenTree är" #: src/components/modals/AboutInvenTreeModal.tsx:107 msgid "Development Version" -msgstr "" +msgstr "Utvecklingsversion" #: src/components/modals/AboutInvenTreeModal.tsx:111 msgid "Up to Date" -msgstr "" +msgstr "Aktuell" #: src/components/modals/AboutInvenTreeModal.tsx:115 msgid "Update Available" -msgstr "" +msgstr "Uppdatering tillgänglig" #: src/components/modals/AboutInvenTreeModal.tsx:125 msgid "InvenTree Version" -msgstr "" +msgstr "InvenTree Version" #: src/components/modals/AboutInvenTreeModal.tsx:131 msgid "Commit Hash" @@ -742,27 +765,27 @@ msgstr "" #: src/components/modals/AboutInvenTreeModal.tsx:146 #: src/components/modals/ServerInfoModal.tsx:133 msgid "API Version" -msgstr "" +msgstr "API Version" #: src/components/modals/AboutInvenTreeModal.tsx:149 msgid "Python Version" -msgstr "" +msgstr "Python Version" #: src/components/modals/AboutInvenTreeModal.tsx:152 msgid "Django Version" -msgstr "" +msgstr "Django Version" #: src/components/modals/AboutInvenTreeModal.tsx:162 msgid "Links" -msgstr "" +msgstr "Länkar" #: src/components/modals/AboutInvenTreeModal.tsx:168 msgid "InvenTree Documentation" -msgstr "" +msgstr "InvenTree Dokumentation" #: src/components/modals/AboutInvenTreeModal.tsx:169 msgid "View Code on GitHub" -msgstr "" +msgstr "Visa kod på GitHub" #: src/components/modals/AboutInvenTreeModal.tsx:170 msgid "Credits" @@ -770,40 +793,40 @@ msgstr "" #: src/components/modals/AboutInvenTreeModal.tsx:171 msgid "Mobile App" -msgstr "" +msgstr "Mobilapp" #: src/components/modals/AboutInvenTreeModal.tsx:172 msgid "Submit Bug Report" -msgstr "" +msgstr "Skicka felrapport" #: src/components/modals/AboutInvenTreeModal.tsx:183 msgid "Copy version information" -msgstr "" +msgstr "Kopiera versionsinformation" #: src/components/modals/AboutInvenTreeModal.tsx:192 #: src/components/modals/ServerInfoModal.tsx:147 msgid "Dismiss" -msgstr "" +msgstr "Avfärda" #: src/components/modals/LicenseModal.tsx:39 msgid "No license text available" -msgstr "" +msgstr "Ingen licenstext tillgänglig" #: src/components/modals/LicenseModal.tsx:46 msgid "No Information provided - this is likely a server issue" -msgstr "" +msgstr "Ingen information tillhandahållen - detta är sannolikt ett serverproblem" #: src/components/modals/LicenseModal.tsx:71 msgid "Loading license information" -msgstr "" +msgstr "Laddar licensinformation" #: src/components/modals/LicenseModal.tsx:77 msgid "Failed to fetch license information" -msgstr "" +msgstr "Det gick inte att hämta licensinformation" #: src/components/modals/LicenseModal.tsx:85 msgid "{key} Packages" -msgstr "" +msgstr "{key} Paket" #: src/components/modals/QrCodeModal.tsx:72 msgid "Unknown response" @@ -859,17 +882,17 @@ msgid "Close modal" msgstr "Stäng fönstret" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" -msgstr "" +msgstr "Server" #: src/components/modals/ServerInfoModal.tsx:32 msgid "Instance Name" -msgstr "" +msgstr "Instansnamn" #: src/components/modals/ServerInfoModal.tsx:38 msgid "Database" -msgstr "" +msgstr "Databas" #: src/components/modals/ServerInfoModal.tsx:38 #~ msgid "Bebug Mode" @@ -877,15 +900,15 @@ msgstr "" #: src/components/modals/ServerInfoModal.tsx:47 msgid "Debug Mode" -msgstr "" +msgstr "Felsökningsläge" #: src/components/modals/ServerInfoModal.tsx:50 msgid "Server is running in debug mode" -msgstr "" +msgstr "Servern körs i felsökningsläge" #: src/components/modals/ServerInfoModal.tsx:57 msgid "Docker Mode" -msgstr "" +msgstr "Docker läge" #: src/components/modals/ServerInfoModal.tsx:60 msgid "Server is deployed using docker" @@ -893,53 +916,53 @@ msgstr "" #: src/components/modals/ServerInfoModal.tsx:66 msgid "Plugin Support" -msgstr "" +msgstr "Stöd för tillägg" #: src/components/modals/ServerInfoModal.tsx:71 msgid "Plugin support enabled" -msgstr "" +msgstr "Stöd för tillägg aktiverat" #: src/components/modals/ServerInfoModal.tsx:73 msgid "Plugin support disabled" -msgstr "" +msgstr "Stöd för tillägg inaktiverat" #: src/components/modals/ServerInfoModal.tsx:80 msgid "Server status" -msgstr "" +msgstr "Serverstatus" #: src/components/modals/ServerInfoModal.tsx:86 msgid "Healthy" -msgstr "" +msgstr "Frisk" #: src/components/modals/ServerInfoModal.tsx:88 msgid "Issues detected" -msgstr "" +msgstr "Problem har upptäckts" #: src/components/modals/ServerInfoModal.tsx:97 msgid "Background Worker" -msgstr "" +msgstr "Bakgrundsarbetare" #: src/components/modals/ServerInfoModal.tsx:101 msgid "Background worker not running" -msgstr "" +msgstr "Bakgrundsarbetare körs inte" #: src/components/modals/ServerInfoModal.tsx:109 msgid "Email Settings" -msgstr "" +msgstr "E-postinställningar" #: src/components/modals/ServerInfoModal.tsx:113 msgid "Email settings not configured" -msgstr "" +msgstr "E-postinställningar har inte konfigurerats" #: src/components/modals/ServerInfoModal.tsx:121 #: src/tables/plugin/PluginListTable.tsx:144 #: src/tables/plugin/PluginListTable.tsx:294 msgid "Version" -msgstr "" +msgstr "Version" #: src/components/modals/ServerInfoModal.tsx:127 msgid "Server Version" -msgstr "" +msgstr "Serverversion" #: src/components/nav/Layout.tsx:70 #: src/tables/part/PartThumbTable.tsx:194 @@ -948,7 +971,7 @@ msgstr "Sök..." #: src/components/nav/Layout.tsx:73 msgid "Nothing found..." -msgstr "" +msgstr "Ingenting hittades..." #: src/components/nav/MainMenu.tsx:40 #: src/pages/Index/Profile/Profile.tsx:15 @@ -967,15 +990,15 @@ msgstr "Kontoinställningar" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:295 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" -msgstr "" +msgstr "Systeminställningar" #: src/components/nav/MainMenu.tsx:67 #: src/defaults/menuItems.tsx:63 #: src/pages/Index/Settings/AdminCenter/Index.tsx:192 msgid "Admin Center" -msgstr "" +msgstr "Admin-center" #: src/components/nav/MainMenu.tsx:68 #~ msgid "Current language {locale}" @@ -1031,8 +1054,8 @@ msgid "About" msgstr "Om" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" @@ -1040,54 +1063,54 @@ msgstr "Notifikationer" #: src/components/nav/NotificationDrawer.tsx:95 msgid "You have no unread notifications." -msgstr "" +msgstr "Du har inga olästa aviseringar." #: src/components/nav/NotificationDrawer.tsx:111 #: src/components/nav/NotificationDrawer.tsx:117 #: src/tables/notifications/NotificationsTable.tsx:36 msgid "Notification" -msgstr "" +msgstr "Avisering" #: src/components/nav/NotificationDrawer.tsx:140 #: src/pages/Notifications.tsx:73 msgid "Mark as read" -msgstr "" +msgstr "Markera som läst" -#: src/components/nav/SearchDrawer.tsx:77 +#: src/components/nav/SearchDrawer.tsx:78 msgid "results" msgstr "resultat" -#: src/components/nav/SearchDrawer.tsx:337 +#: src/components/nav/SearchDrawer.tsx:349 msgid "Enter search text" msgstr "Ange sökord" -#: src/components/nav/SearchDrawer.tsx:364 +#: src/components/nav/SearchDrawer.tsx:376 msgid "Search Options" msgstr "Sökalternativ" -#: src/components/nav/SearchDrawer.tsx:367 +#: src/components/nav/SearchDrawer.tsx:379 msgid "Regex search" -msgstr "" +msgstr "Regex sökning" -#: src/components/nav/SearchDrawer.tsx:377 +#: src/components/nav/SearchDrawer.tsx:389 msgid "Whole word search" msgstr "Hela ordsökningen" -#: src/components/nav/SearchDrawer.tsx:416 +#: src/components/nav/SearchDrawer.tsx:430 msgid "An error occurred during search query" msgstr "Ett fel inträffade under sökfrågan" -#: src/components/nav/SearchDrawer.tsx:427 +#: src/components/nav/SearchDrawer.tsx:441 msgid "No results" msgstr "Inga resultat" -#: src/components/nav/SearchDrawer.tsx:430 +#: src/components/nav/SearchDrawer.tsx:444 msgid "No results available for search query" msgstr "Inga resultat tillgängliga för sökfrågan" #: src/components/render/Instance.tsx:166 msgid "Unknown model: {model}" -msgstr "" +msgstr "Okänd modell: {model}" #: src/components/render/ModelType.tsx:22 #: src/forms/BuildForms.tsx:201 @@ -1100,7 +1123,7 @@ msgstr "" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:832 +#: src/pages/part/PartDetail.tsx:837 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" @@ -1109,21 +1132,21 @@ msgstr "Artkel" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:640 +#: src/pages/part/PartDetail.tsx:645 msgid "Parts" msgstr "Artiklar" #: src/components/render/ModelType.tsx:31 msgid "Part Parameter Template" -msgstr "" +msgstr "Parametermall för Artiklar" #: src/components/render/ModelType.tsx:32 msgid "Part Parameter Templates" -msgstr "" +msgstr "Parametermallar för Artiklar" #: src/components/render/ModelType.tsx:38 msgid "Part Test Template" @@ -1136,7 +1159,7 @@ msgstr "" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "" @@ -1160,15 +1183,15 @@ msgid "Part Category" msgstr "" #: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 +#: src/pages/Index/Settings/SystemSettings.tsx:165 #: src/pages/part/CategoryDetail.tsx:249 #: src/pages/part/CategoryDetail.tsx:282 -#: src/pages/part/PartDetail.tsx:822 +#: src/pages/part/PartDetail.tsx:827 msgid "Part Categories" msgstr "Artikelkategorier" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:560 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "" @@ -1188,7 +1211,7 @@ msgstr "" #: src/components/render/ModelType.tsx:82 #: src/pages/stock/LocationDetail.tsx:185 #: src/pages/stock/LocationDetail.tsx:361 -#: src/pages/stock/StockDetail.tsx:552 +#: src/pages/stock/StockDetail.tsx:554 msgid "Stock Locations" msgstr "Lagerplats" @@ -1198,11 +1221,11 @@ msgstr "" #: src/components/render/ModelType.tsx:91 msgid "Stock Location Types" -msgstr "" +msgstr "Lagerplatstyper" #: src/components/render/ModelType.tsx:95 msgid "Stock History" -msgstr "" +msgstr "Lagerhistorik" #: src/components/render/ModelType.tsx:96 msgid "Stock Histories" @@ -1227,7 +1250,7 @@ msgid "Build Lines" msgstr "" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" msgstr "" @@ -1250,17 +1273,17 @@ msgid "Project Codes" msgstr "Projektkoder" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" msgstr "" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:573 +#: src/pages/part/PartDetail.tsx:579 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" msgstr "Inköpsorder" @@ -1275,16 +1298,16 @@ msgstr "" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" msgstr "" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:579 +#: src/pages/part/PartDetail.tsx:586 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" msgstr "Försäljningsorder" @@ -1298,13 +1321,13 @@ msgid "Sales Order Shipments" msgstr "" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" msgstr "" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" @@ -1322,8 +1345,8 @@ msgstr "" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" msgstr "" @@ -1341,7 +1364,7 @@ msgid "Owners" msgstr "" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" msgstr "Användare" @@ -1354,12 +1377,12 @@ msgstr "Användare" #: src/components/render/ModelType.tsx:200 msgid "Label Template" -msgstr "" +msgstr "Etikettmall" #: src/components/render/ModelType.tsx:201 #: src/pages/Index/Settings/AdminCenter/Index.tsx:135 msgid "Label Templates" -msgstr "" +msgstr "Etikettmallar" #: src/components/render/ModelType.tsx:207 msgid "Report Template" @@ -1385,26 +1408,27 @@ msgstr "" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:493 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 #: src/pages/stock/LocationDetail.tsx:345 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" msgstr "Lagersaldo" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:517 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" msgstr "" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:523 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 @@ -1844,16 +1868,12 @@ msgid "Getting started" msgstr "" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Failed to upload image" +#~ msgstr "Failed to upload image" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "" +#~ msgid "Notes saved" +#~ msgstr "Notes saved" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" @@ -1972,42 +1992,46 @@ msgid "Portuguese (Brazilian)" msgstr "" #: src/contexts/LanguageContext.tsx:43 +msgid "Romanian" +msgstr "Rumänska" + +#: src/contexts/LanguageContext.tsx:44 msgid "Russian" msgstr "Ryska" -#: src/contexts/LanguageContext.tsx:44 +#: src/contexts/LanguageContext.tsx:45 msgid "Slovak" msgstr "Slovakiska" -#: src/contexts/LanguageContext.tsx:45 +#: src/contexts/LanguageContext.tsx:46 msgid "Slovenian" msgstr "" -#: src/contexts/LanguageContext.tsx:46 +#: src/contexts/LanguageContext.tsx:47 msgid "Swedish" msgstr "Svenska" -#: src/contexts/LanguageContext.tsx:47 +#: src/contexts/LanguageContext.tsx:48 msgid "Thai" msgstr "" -#: src/contexts/LanguageContext.tsx:48 +#: src/contexts/LanguageContext.tsx:49 msgid "Turkish" msgstr "Turkiska" -#: src/contexts/LanguageContext.tsx:49 +#: src/contexts/LanguageContext.tsx:50 msgid "Ukrainian" msgstr "Ukrainska" -#: src/contexts/LanguageContext.tsx:50 +#: src/contexts/LanguageContext.tsx:51 msgid "Vietnamese" msgstr "" -#: src/contexts/LanguageContext.tsx:51 +#: src/contexts/LanguageContext.tsx:52 msgid "Chinese (Simplified)" msgstr "" -#: src/contexts/LanguageContext.tsx:52 +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" msgstr "" @@ -2021,7 +2045,7 @@ msgstr "Hem" #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" msgstr "Kontrollpanel" @@ -2160,10 +2184,10 @@ msgstr "Demo" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" msgstr "" @@ -2171,15 +2195,15 @@ msgstr "" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" msgstr "" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" msgstr "" @@ -2464,7 +2488,7 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" @@ -2515,7 +2539,7 @@ msgstr "" #~ msgstr "Stock item updated" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" @@ -2537,8 +2561,8 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:207 -#: src/pages/part/PartDetail.tsx:656 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" msgstr "" @@ -2560,14 +2584,14 @@ msgid "Actions" msgstr "Åtgärder" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" msgstr "" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" msgstr "" @@ -2580,12 +2604,12 @@ msgid "Remove Stock" msgstr "" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:788 msgid "Transfer Stock" msgstr "" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:777 msgid "Count Stock" msgstr "" @@ -2625,23 +2649,14 @@ msgstr "" #~ msgid "You have been logged out" #~ msgstr "You have been logged out" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" msgstr "" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" msgstr "" -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "Kolla din inkorg för en återställningslänk. Detta fungerar bara om du har ett konto. Kontrollera även i skräppost." - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "Återställningen misslyckades" - #: src/functions/auth.tsx:141 #~ msgid "Already logged in" #~ msgstr "Already logged in" @@ -2654,11 +2669,20 @@ msgstr "Återställningen misslyckades" #~ msgid "Found an existing login - welcome back!" #~ msgstr "Found an existing login - welcome back!" -#: src/functions/auth.tsx:153 +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "Kolla din inkorg för en återställningslänk. Detta fungerar bara om du har ett konto. Kontrollera även i skräppost." + +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "Återställningen misslyckades" + +#: src/functions/auth.tsx:195 msgid "Logged In" msgstr "" -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:196 msgid "Successfully logged in" msgstr "" @@ -2796,7 +2820,7 @@ msgstr "Denna sida är en ersättning för den gamla startsidan med samma inform msgid "Welcome to your Dashboard{0}" msgstr "" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." msgstr "" @@ -3374,15 +3398,15 @@ msgstr "" msgid "System settings" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" msgstr "Streckkoder" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" msgstr "" @@ -3394,50 +3418,50 @@ msgstr "" #~ msgid "Exchange Rates" #~ msgstr "Exchange Rates" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" msgstr "Etiketter" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:591 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:527 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" msgstr "Byggordrar" -#: src/pages/Index/Settings/SystemSettings.tsx:298 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" msgstr "Konto" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" msgstr "Kontoinställningar" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" msgstr "" @@ -3475,8 +3499,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3489,8 +3513,8 @@ msgstr "Status" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" @@ -3501,10 +3525,10 @@ msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:134 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3537,10 +3561,10 @@ msgid "Issued By" msgstr "" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:322 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 @@ -3555,8 +3579,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" msgstr "" @@ -3594,7 +3618,7 @@ msgstr "" #~ msgstr "Unlink custom barcode from part" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:535 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" msgstr "" @@ -3638,34 +3662,34 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:613 +#: src/pages/part/PartDetail.tsx:622 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" msgstr "" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:625 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" msgstr "" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" @@ -3676,17 +3700,17 @@ msgstr "" #~ msgstr "Reporting Actions" #: src/pages/build/BuildDetail.tsx:374 -#~ msgid "Print build report" -#~ msgstr "Print build report" - -#: src/pages/build/BuildDetail.tsx:378 msgid "Build Order Actions" msgstr "" -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "Print build report" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" msgstr "" @@ -3725,7 +3749,7 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" @@ -3733,10 +3757,10 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 @@ -3769,12 +3793,12 @@ msgstr "" msgid "Assigned Stock" msgstr "" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" msgstr "Redigera företag" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" msgstr "" @@ -3804,32 +3828,32 @@ msgid "Manufacturer Part Details" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:487 +#: src/pages/part/PartDetail.tsx:492 msgid "Parameters" msgstr "Parametrar" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:560 +#: src/pages/part/PartDetail.tsx:566 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" msgstr "" @@ -3845,7 +3869,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" msgstr "" @@ -3879,7 +3903,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" msgstr "" @@ -3969,85 +3993,85 @@ msgstr "" msgid "Category Details" msgstr "" -#: src/pages/part/PartDetail.tsx:140 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" msgstr "" -#: src/pages/part/PartDetail.tsx:147 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" msgstr "Kategori" -#: src/pages/part/PartDetail.tsx:153 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:167 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" msgstr "IAN" -#: src/pages/part/PartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" msgstr "" -#: src/pages/part/PartDetail.tsx:181 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" msgstr "Enheter" -#: src/pages/part/PartDetail.tsx:188 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" msgstr "" -#: src/pages/part/PartDetail.tsx:195 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" msgstr "Länk" -#: src/pages/part/PartDetail.tsx:213 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:220 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" msgstr "" -#: src/pages/part/PartDetail.tsx:235 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:243 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:250 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" msgstr "" -#: src/pages/part/PartDetail.tsx:257 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" msgstr "" -#: src/pages/part/PartDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -4065,37 +4089,37 @@ msgstr "" msgid "Active" msgstr "Aktiv" -#: src/pages/part/PartDetail.tsx:271 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" msgstr "" -#: src/pages/part/PartDetail.tsx:276 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" msgstr "" -#: src/pages/part/PartDetail.tsx:281 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" msgstr "" -#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:291 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:296 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" msgstr "" -#: src/pages/part/PartDetail.tsx:309 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" msgstr "" @@ -4104,7 +4128,7 @@ msgstr "" #~ msgid "Edit part" #~ msgstr "Edit part" -#: src/pages/part/PartDetail.tsx:314 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" msgstr "" @@ -4116,69 +4140,71 @@ msgstr "" #~ msgid "Delete part" #~ msgstr "Delete part" -#: src/pages/part/PartDetail.tsx:329 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" msgstr "" -#: src/pages/part/PartDetail.tsx:340 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" msgstr "Prisintervall" -#: src/pages/part/PartDetail.tsx:375 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" msgstr "" -#: src/pages/part/PartDetail.tsx:410 +#: src/pages/part/PartDetail.tsx:415 msgid "Stocktake By" msgstr "" -#: src/pages/part/PartDetail.tsx:481 +#: src/pages/part/PartDetail.tsx:486 msgid "Part Details" msgstr "" -#: src/pages/part/PartDetail.tsx:507 +#: src/pages/part/PartDetail.tsx:512 msgid "Variants" msgstr "" -#: src/pages/part/PartDetail.tsx:514 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" msgstr "" -#: src/pages/part/PartDetail.tsx:520 +#: src/pages/part/PartDetail.tsx:526 msgid "Bill of Materials" msgstr "" -#: src/pages/part/PartDetail.tsx:534 +#: src/pages/part/PartDetail.tsx:540 msgid "Used In" msgstr "" -#: src/pages/part/PartDetail.tsx:541 +#: src/pages/part/PartDetail.tsx:547 msgid "Part Pricing" msgstr "" -#: src/pages/part/PartDetail.tsx:547 +#: src/pages/part/PartDetail.tsx:553 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" msgstr "" -#: src/pages/part/PartDetail.tsx:586 +#: src/pages/part/PartDetail.tsx:593 msgid "Scheduling" msgstr "" -#: src/pages/part/PartDetail.tsx:596 +#: src/pages/part/PartDetail.tsx:605 msgid "Test Templates" msgstr "" -#: src/pages/part/PartDetail.tsx:607 +#: src/pages/part/PartDetail.tsx:616 msgid "Related Parts" msgstr "" -#: src/pages/part/PartDetail.tsx:662 -#: src/pages/stock/StockDetail.tsx:151 -#: src/pages/stock/StockDetail.tsx:529 +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 @@ -4186,55 +4212,55 @@ msgstr "" msgid "Available" msgstr "" -#: src/pages/part/PartDetail.tsx:668 +#: src/pages/part/PartDetail.tsx:673 msgid "No Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:674 +#: src/pages/part/PartDetail.tsx:679 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" msgstr "" -#: src/pages/part/PartDetail.tsx:680 -#: src/pages/stock/StockDetail.tsx:512 +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" msgstr "" -#: src/pages/part/PartDetail.tsx:699 +#: src/pages/part/PartDetail.tsx:704 msgid "Edit Part" msgstr "" -#: src/pages/part/PartDetail.tsx:706 +#: src/pages/part/PartDetail.tsx:711 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" msgstr "" -#: src/pages/part/PartDetail.tsx:718 +#: src/pages/part/PartDetail.tsx:723 msgid "Delete Part" msgstr "" -#: src/pages/part/PartDetail.tsx:727 +#: src/pages/part/PartDetail.tsx:732 msgid "Deleting this part cannot be reversed" msgstr "" -#: src/pages/part/PartDetail.tsx:765 +#: src/pages/part/PartDetail.tsx:770 #: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" msgstr "" -#: src/pages/part/PartDetail.tsx:773 +#: src/pages/part/PartDetail.tsx:778 msgid "Count part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:784 +#: src/pages/part/PartDetail.tsx:789 msgid "Transfer part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:793 +#: src/pages/part/PartDetail.tsx:798 msgid "Part Actions" msgstr "" @@ -4247,6 +4273,7 @@ msgid "No pricing data found for this part." msgstr "" #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" msgstr "" @@ -4255,54 +4282,32 @@ msgid "Purchase History" msgstr "" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "" - +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "Komponent" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 @@ -4311,81 +4316,117 @@ msgstr "" msgid "Total Price" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "Komponent" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "Minimum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "Maximum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:25 @@ -4404,33 +4445,33 @@ msgstr "" msgid "Loading pricing data" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "" @@ -4450,23 +4491,23 @@ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" msgstr "" @@ -4477,46 +4518,46 @@ msgstr "" #~ msgstr "Order Currency," #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" msgstr "" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" @@ -4526,17 +4567,17 @@ msgstr "" msgid "Customers" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" msgstr "" @@ -4599,11 +4640,11 @@ msgstr "" msgid "Location Actions" msgstr "" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" msgstr "" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" msgstr "" @@ -4615,15 +4656,15 @@ msgstr "" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "Unlink custom barcode from stock item" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" msgstr "" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" msgstr "" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" msgstr "" @@ -4636,31 +4677,31 @@ msgstr "" #~ msgid "Delete stock item" #~ msgstr "Delete stock item" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" msgstr "" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" msgstr "" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" msgstr "" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" msgstr "" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" msgstr "" @@ -4668,34 +4709,34 @@ msgstr "" #~ msgid "Duplicate stock item" #~ msgstr "Duplicate stock item" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" msgstr "" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" msgstr "" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "" @@ -4786,7 +4827,7 @@ msgstr "Filter" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" msgstr "Värde" @@ -5224,7 +5265,7 @@ msgid "Required Tests" msgstr "" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" msgstr "" @@ -5306,23 +5347,39 @@ msgstr "" msgid "File could not be uploaded" msgstr "" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "Ladda upp bilaga" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "Redigera bilaga" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" msgstr "Radera bilaga" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" msgstr "" @@ -5330,11 +5387,11 @@ msgstr "" #~ msgid "Upload attachment" #~ msgstr "Upload attachment" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" msgstr "" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "" @@ -5716,75 +5773,75 @@ msgstr "Resultat" msgid "No Results" msgstr "Inga resultat" -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 msgid "Required" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:80 +#: src/tables/part/PartTestTemplateTable.tsx:85 msgid "Show required tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:95 +#: src/tables/part/PartTestTemplateTable.tsx:100 msgid "Show tests that require an attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:99 +#: src/tables/part/PartTestTemplateTable.tsx:104 msgid "Include Inherited" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:100 +#: src/tables/part/PartTestTemplateTable.tsx:105 msgid "Show tests from inherited templates" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:104 +#: src/tables/part/PartTestTemplateTable.tsx:109 msgid "Has Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:105 +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" msgstr "" @@ -6273,7 +6330,7 @@ msgid "Task ID" msgstr "" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" msgstr "" @@ -6377,15 +6434,15 @@ msgstr "" #: src/tables/settings/TemplateTable.tsx:222 #: src/tables/settings/TemplateTable.tsx:289 msgid "Edit Template" -msgstr "" +msgstr "Redigera mall" #: src/tables/settings/TemplateTable.tsx:230 msgid "Delete template" -msgstr "" +msgstr "Radera mall" #: src/tables/settings/TemplateTable.tsx:236 msgid "Add Template" -msgstr "" +msgstr "Lägg till mall" #: src/tables/settings/TemplateTable.tsx:243 #~ msgid "Add new" @@ -6397,7 +6454,7 @@ msgstr "" #: src/tables/settings/TemplateTable.tsx:249 msgid "Add template" -msgstr "" +msgstr "Lägg till mall" #: src/tables/settings/TemplateTable.tsx:271 msgid "Filter by enabled status" @@ -6679,95 +6736,95 @@ msgstr "" msgid "Delete stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 msgid "Delete Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:289 +#: src/tables/stock/StockItemTestResultTable.tsx:273 msgid "Test result deleted" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:303 +#: src/tables/stock/StockItemTestResultTable.tsx:287 msgid "Test Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" msgstr "" diff --git a/src/frontend/src/locales/th/messages.po b/src/frontend/src/locales/th/messages.po index 2d04293e1e..4c32433626 100644 --- a/src/frontend/src/locales/th/messages.po +++ b/src/frontend/src/locales/th/messages.po @@ -8,7 +8,7 @@ msgstr "" "Language: th\n" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-05-23 11:39\n" +"PO-Revision-Date: 2024-06-19 04:50\n" "Last-Translator: \n" "Language-Team: Thai\n" "Plural-Forms: nplurals=1; plural=0;\n" @@ -48,18 +48,18 @@ msgstr "" #: src/components/buttons/PrintingActions.tsx:107 #: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 #: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 -#: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 +#: src/components/nav/SearchDrawer.tsx:427 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" msgstr "" @@ -121,15 +121,15 @@ msgstr "" msgid "No" msgstr "" -#: src/components/details/Details.tsx:303 +#: src/components/details/Details.tsx:305 msgid "No name defined" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copied" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copy" msgstr "" @@ -145,7 +145,7 @@ msgstr "" #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" msgstr "" @@ -207,9 +207,9 @@ msgstr "" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:686 +#: src/pages/part/PartDetail.tsx:691 msgid "Inactive" msgstr "" @@ -248,6 +248,35 @@ msgstr "" msgid "Virtual" msgstr "" +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "" + #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" msgstr "" @@ -334,11 +363,6 @@ msgstr "" msgid "Form Error" msgstr "" -#: src/components/forms/ApiForm.tsx:430 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "" - #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" #~ msgstr "Form Errors Exist" @@ -389,7 +413,7 @@ msgstr "" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." msgstr "" @@ -399,7 +423,7 @@ msgstr "" #~ msgstr "Mail delivery successfull" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" msgstr "" @@ -527,7 +551,7 @@ msgstr "" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:127 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -551,7 +575,6 @@ msgid "Add Host" msgstr "" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" msgstr "" @@ -579,20 +602,20 @@ msgstr "" msgid "State: <0>worker ({0}), <1>plugins{1}" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "" @@ -614,7 +637,7 @@ msgid "Thumbnail" msgstr "" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" msgstr "" @@ -859,7 +882,7 @@ msgid "Close modal" msgstr "" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" msgstr "" @@ -967,7 +990,7 @@ msgstr "" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:295 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" msgstr "" @@ -1031,8 +1054,8 @@ msgid "About" msgstr "" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" @@ -1053,35 +1076,35 @@ msgstr "" msgid "Mark as read" msgstr "" -#: src/components/nav/SearchDrawer.tsx:77 +#: src/components/nav/SearchDrawer.tsx:78 msgid "results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:337 +#: src/components/nav/SearchDrawer.tsx:349 msgid "Enter search text" msgstr "" -#: src/components/nav/SearchDrawer.tsx:364 +#: src/components/nav/SearchDrawer.tsx:376 msgid "Search Options" msgstr "" -#: src/components/nav/SearchDrawer.tsx:367 +#: src/components/nav/SearchDrawer.tsx:379 msgid "Regex search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:377 +#: src/components/nav/SearchDrawer.tsx:389 msgid "Whole word search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:416 +#: src/components/nav/SearchDrawer.tsx:430 msgid "An error occurred during search query" msgstr "" -#: src/components/nav/SearchDrawer.tsx:427 +#: src/components/nav/SearchDrawer.tsx:441 msgid "No results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:430 +#: src/components/nav/SearchDrawer.tsx:444 msgid "No results available for search query" msgstr "" @@ -1100,7 +1123,7 @@ msgstr "" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:832 +#: src/pages/part/PartDetail.tsx:837 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" @@ -1109,11 +1132,11 @@ msgstr "" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:640 +#: src/pages/part/PartDetail.tsx:645 msgid "Parts" msgstr "" @@ -1136,7 +1159,7 @@ msgstr "" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "" @@ -1160,15 +1183,15 @@ msgid "Part Category" msgstr "" #: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 +#: src/pages/Index/Settings/SystemSettings.tsx:165 #: src/pages/part/CategoryDetail.tsx:249 #: src/pages/part/CategoryDetail.tsx:282 -#: src/pages/part/PartDetail.tsx:822 +#: src/pages/part/PartDetail.tsx:827 msgid "Part Categories" msgstr "" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:560 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "" @@ -1188,7 +1211,7 @@ msgstr "" #: src/components/render/ModelType.tsx:82 #: src/pages/stock/LocationDetail.tsx:185 #: src/pages/stock/LocationDetail.tsx:361 -#: src/pages/stock/StockDetail.tsx:552 +#: src/pages/stock/StockDetail.tsx:554 msgid "Stock Locations" msgstr "" @@ -1227,7 +1250,7 @@ msgid "Build Lines" msgstr "" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" msgstr "" @@ -1250,17 +1273,17 @@ msgid "Project Codes" msgstr "" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" msgstr "" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:573 +#: src/pages/part/PartDetail.tsx:579 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" msgstr "" @@ -1275,16 +1298,16 @@ msgstr "" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" msgstr "" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:579 +#: src/pages/part/PartDetail.tsx:586 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" msgstr "" @@ -1298,13 +1321,13 @@ msgid "Sales Order Shipments" msgstr "" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" msgstr "" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" @@ -1322,8 +1345,8 @@ msgstr "" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" msgstr "" @@ -1341,7 +1364,7 @@ msgid "Owners" msgstr "" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" msgstr "" @@ -1385,26 +1408,27 @@ msgstr "" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:493 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 #: src/pages/stock/LocationDetail.tsx:345 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" msgstr "" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:517 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" msgstr "" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:523 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 @@ -1844,16 +1868,12 @@ msgid "Getting started" msgstr "" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Failed to upload image" +#~ msgstr "Failed to upload image" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "" +#~ msgid "Notes saved" +#~ msgstr "Notes saved" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" @@ -1972,42 +1992,46 @@ msgid "Portuguese (Brazilian)" msgstr "" #: src/contexts/LanguageContext.tsx:43 -msgid "Russian" +msgid "Romanian" msgstr "" #: src/contexts/LanguageContext.tsx:44 -msgid "Slovak" +msgid "Russian" msgstr "" #: src/contexts/LanguageContext.tsx:45 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: src/contexts/LanguageContext.tsx:46 -msgid "Swedish" +msgid "Slovenian" msgstr "" #: src/contexts/LanguageContext.tsx:47 -msgid "Thai" +msgid "Swedish" msgstr "" #: src/contexts/LanguageContext.tsx:48 -msgid "Turkish" +msgid "Thai" msgstr "" #: src/contexts/LanguageContext.tsx:49 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: src/contexts/LanguageContext.tsx:50 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: src/contexts/LanguageContext.tsx:51 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: src/contexts/LanguageContext.tsx:52 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" msgstr "" @@ -2021,7 +2045,7 @@ msgstr "" #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" msgstr "" @@ -2160,10 +2184,10 @@ msgstr "" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" msgstr "" @@ -2171,15 +2195,15 @@ msgstr "" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" msgstr "" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" msgstr "" @@ -2464,7 +2488,7 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" @@ -2515,7 +2539,7 @@ msgstr "" #~ msgstr "Stock item updated" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" @@ -2537,8 +2561,8 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:207 -#: src/pages/part/PartDetail.tsx:656 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" msgstr "" @@ -2560,14 +2584,14 @@ msgid "Actions" msgstr "" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" msgstr "" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" msgstr "" @@ -2580,12 +2604,12 @@ msgid "Remove Stock" msgstr "" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:788 msgid "Transfer Stock" msgstr "" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:777 msgid "Count Stock" msgstr "" @@ -2625,23 +2649,14 @@ msgstr "" #~ msgid "You have been logged out" #~ msgstr "You have been logged out" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" msgstr "" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" msgstr "" -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "" - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "" - #: src/functions/auth.tsx:141 #~ msgid "Already logged in" #~ msgstr "Already logged in" @@ -2654,11 +2669,20 @@ msgstr "" #~ msgid "Found an existing login - welcome back!" #~ msgstr "Found an existing login - welcome back!" -#: src/functions/auth.tsx:153 +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "" + +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "" + +#: src/functions/auth.tsx:195 msgid "Logged In" msgstr "" -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:196 msgid "Successfully logged in" msgstr "" @@ -2796,7 +2820,7 @@ msgstr "" msgid "Welcome to your Dashboard{0}" msgstr "" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." msgstr "" @@ -3374,15 +3398,15 @@ msgstr "" msgid "System settings" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" msgstr "" @@ -3394,50 +3418,50 @@ msgstr "" #~ msgid "Exchange Rates" #~ msgstr "Exchange Rates" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:591 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:527 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:298 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" msgstr "" @@ -3475,8 +3499,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3489,8 +3513,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" @@ -3501,10 +3525,10 @@ msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:134 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3537,10 +3561,10 @@ msgid "Issued By" msgstr "" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:322 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 @@ -3555,8 +3579,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" msgstr "" @@ -3594,7 +3618,7 @@ msgstr "" #~ msgstr "Unlink custom barcode from part" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:535 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" msgstr "" @@ -3638,34 +3662,34 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:613 +#: src/pages/part/PartDetail.tsx:622 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" msgstr "" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:625 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" msgstr "" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" @@ -3676,17 +3700,17 @@ msgstr "" #~ msgstr "Reporting Actions" #: src/pages/build/BuildDetail.tsx:374 -#~ msgid "Print build report" -#~ msgstr "Print build report" - -#: src/pages/build/BuildDetail.tsx:378 msgid "Build Order Actions" msgstr "" -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "Print build report" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" msgstr "" @@ -3725,7 +3749,7 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" @@ -3733,10 +3757,10 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 @@ -3769,12 +3793,12 @@ msgstr "" msgid "Assigned Stock" msgstr "" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" msgstr "" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" msgstr "" @@ -3804,32 +3828,32 @@ msgid "Manufacturer Part Details" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:487 +#: src/pages/part/PartDetail.tsx:492 msgid "Parameters" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:560 +#: src/pages/part/PartDetail.tsx:566 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" msgstr "" @@ -3845,7 +3869,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" msgstr "" @@ -3879,7 +3903,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" msgstr "" @@ -3969,85 +3993,85 @@ msgstr "" msgid "Category Details" msgstr "" -#: src/pages/part/PartDetail.tsx:140 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" msgstr "" -#: src/pages/part/PartDetail.tsx:147 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" msgstr "" -#: src/pages/part/PartDetail.tsx:153 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:167 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" msgstr "" -#: src/pages/part/PartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" msgstr "" -#: src/pages/part/PartDetail.tsx:181 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" msgstr "" -#: src/pages/part/PartDetail.tsx:188 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" msgstr "" -#: src/pages/part/PartDetail.tsx:195 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" msgstr "" -#: src/pages/part/PartDetail.tsx:213 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:220 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" msgstr "" -#: src/pages/part/PartDetail.tsx:235 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:243 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:250 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" msgstr "" -#: src/pages/part/PartDetail.tsx:257 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" msgstr "" -#: src/pages/part/PartDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -4065,37 +4089,37 @@ msgstr "" msgid "Active" msgstr "" -#: src/pages/part/PartDetail.tsx:271 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" msgstr "" -#: src/pages/part/PartDetail.tsx:276 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" msgstr "" -#: src/pages/part/PartDetail.tsx:281 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" msgstr "" -#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:291 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:296 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" msgstr "" -#: src/pages/part/PartDetail.tsx:309 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" msgstr "" @@ -4104,7 +4128,7 @@ msgstr "" #~ msgid "Edit part" #~ msgstr "Edit part" -#: src/pages/part/PartDetail.tsx:314 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" msgstr "" @@ -4116,69 +4140,71 @@ msgstr "" #~ msgid "Delete part" #~ msgstr "Delete part" -#: src/pages/part/PartDetail.tsx:329 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" msgstr "" -#: src/pages/part/PartDetail.tsx:340 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" msgstr "" -#: src/pages/part/PartDetail.tsx:375 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" msgstr "" -#: src/pages/part/PartDetail.tsx:410 +#: src/pages/part/PartDetail.tsx:415 msgid "Stocktake By" msgstr "" -#: src/pages/part/PartDetail.tsx:481 +#: src/pages/part/PartDetail.tsx:486 msgid "Part Details" msgstr "" -#: src/pages/part/PartDetail.tsx:507 +#: src/pages/part/PartDetail.tsx:512 msgid "Variants" msgstr "" -#: src/pages/part/PartDetail.tsx:514 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" msgstr "" -#: src/pages/part/PartDetail.tsx:520 +#: src/pages/part/PartDetail.tsx:526 msgid "Bill of Materials" msgstr "" -#: src/pages/part/PartDetail.tsx:534 +#: src/pages/part/PartDetail.tsx:540 msgid "Used In" msgstr "" -#: src/pages/part/PartDetail.tsx:541 +#: src/pages/part/PartDetail.tsx:547 msgid "Part Pricing" msgstr "" -#: src/pages/part/PartDetail.tsx:547 +#: src/pages/part/PartDetail.tsx:553 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" msgstr "" -#: src/pages/part/PartDetail.tsx:586 +#: src/pages/part/PartDetail.tsx:593 msgid "Scheduling" msgstr "" -#: src/pages/part/PartDetail.tsx:596 +#: src/pages/part/PartDetail.tsx:605 msgid "Test Templates" msgstr "" -#: src/pages/part/PartDetail.tsx:607 +#: src/pages/part/PartDetail.tsx:616 msgid "Related Parts" msgstr "" -#: src/pages/part/PartDetail.tsx:662 -#: src/pages/stock/StockDetail.tsx:151 -#: src/pages/stock/StockDetail.tsx:529 +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 @@ -4186,55 +4212,55 @@ msgstr "" msgid "Available" msgstr "" -#: src/pages/part/PartDetail.tsx:668 +#: src/pages/part/PartDetail.tsx:673 msgid "No Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:674 +#: src/pages/part/PartDetail.tsx:679 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" msgstr "" -#: src/pages/part/PartDetail.tsx:680 -#: src/pages/stock/StockDetail.tsx:512 +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" msgstr "" -#: src/pages/part/PartDetail.tsx:699 +#: src/pages/part/PartDetail.tsx:704 msgid "Edit Part" msgstr "" -#: src/pages/part/PartDetail.tsx:706 +#: src/pages/part/PartDetail.tsx:711 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" msgstr "" -#: src/pages/part/PartDetail.tsx:718 +#: src/pages/part/PartDetail.tsx:723 msgid "Delete Part" msgstr "" -#: src/pages/part/PartDetail.tsx:727 +#: src/pages/part/PartDetail.tsx:732 msgid "Deleting this part cannot be reversed" msgstr "" -#: src/pages/part/PartDetail.tsx:765 +#: src/pages/part/PartDetail.tsx:770 #: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" msgstr "" -#: src/pages/part/PartDetail.tsx:773 +#: src/pages/part/PartDetail.tsx:778 msgid "Count part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:784 +#: src/pages/part/PartDetail.tsx:789 msgid "Transfer part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:793 +#: src/pages/part/PartDetail.tsx:798 msgid "Part Actions" msgstr "" @@ -4247,6 +4273,7 @@ msgid "No pricing data found for this part." msgstr "" #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" msgstr "" @@ -4255,54 +4282,32 @@ msgid "Purchase History" msgstr "" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "" - +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 @@ -4311,81 +4316,117 @@ msgstr "" msgid "Total Price" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "Minimum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "Maximum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:25 @@ -4404,33 +4445,33 @@ msgstr "" msgid "Loading pricing data" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "" @@ -4450,23 +4491,23 @@ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" msgstr "" @@ -4477,46 +4518,46 @@ msgstr "" #~ msgstr "Order Currency," #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" msgstr "" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" @@ -4526,17 +4567,17 @@ msgstr "" msgid "Customers" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" msgstr "" @@ -4599,11 +4640,11 @@ msgstr "" msgid "Location Actions" msgstr "" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" msgstr "" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" msgstr "" @@ -4615,15 +4656,15 @@ msgstr "" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "Unlink custom barcode from stock item" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" msgstr "" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" msgstr "" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" msgstr "" @@ -4636,31 +4677,31 @@ msgstr "" #~ msgid "Delete stock item" #~ msgstr "Delete stock item" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" msgstr "" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" msgstr "" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" msgstr "" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" msgstr "" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" msgstr "" @@ -4668,34 +4709,34 @@ msgstr "" #~ msgid "Duplicate stock item" #~ msgstr "Duplicate stock item" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" msgstr "" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" msgstr "" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "" @@ -4786,7 +4827,7 @@ msgstr "" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" msgstr "" @@ -5224,7 +5265,7 @@ msgid "Required Tests" msgstr "" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" msgstr "" @@ -5306,23 +5347,39 @@ msgstr "" msgid "File could not be uploaded" msgstr "" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" msgstr "" @@ -5330,11 +5387,11 @@ msgstr "" #~ msgid "Upload attachment" #~ msgstr "Upload attachment" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" msgstr "" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "" @@ -5716,75 +5773,75 @@ msgstr "" msgid "No Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 msgid "Required" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:80 +#: src/tables/part/PartTestTemplateTable.tsx:85 msgid "Show required tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:95 +#: src/tables/part/PartTestTemplateTable.tsx:100 msgid "Show tests that require an attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:99 +#: src/tables/part/PartTestTemplateTable.tsx:104 msgid "Include Inherited" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:100 +#: src/tables/part/PartTestTemplateTable.tsx:105 msgid "Show tests from inherited templates" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:104 +#: src/tables/part/PartTestTemplateTable.tsx:109 msgid "Has Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:105 +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" msgstr "" @@ -6273,7 +6330,7 @@ msgid "Task ID" msgstr "" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" msgstr "" @@ -6679,95 +6736,95 @@ msgstr "" msgid "Delete stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 msgid "Delete Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:289 +#: src/tables/stock/StockItemTestResultTable.tsx:273 msgid "Test result deleted" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:303 +#: src/tables/stock/StockItemTestResultTable.tsx:287 msgid "Test Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" msgstr "" diff --git a/src/frontend/src/locales/tr/messages.po b/src/frontend/src/locales/tr/messages.po index 6e9adb0caf..cf992e6611 100644 --- a/src/frontend/src/locales/tr/messages.po +++ b/src/frontend/src/locales/tr/messages.po @@ -8,7 +8,7 @@ msgstr "" "Language: tr\n" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-05-23 11:39\n" +"PO-Revision-Date: 2024-06-19 04:50\n" "Last-Translator: \n" "Language-Team: Turkish\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -48,18 +48,18 @@ msgstr "" #: src/components/buttons/PrintingActions.tsx:107 #: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 #: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 -#: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 +#: src/components/nav/SearchDrawer.tsx:427 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" msgstr "Hata" @@ -121,15 +121,15 @@ msgstr "" msgid "No" msgstr "" -#: src/components/details/Details.tsx:303 +#: src/components/details/Details.tsx:305 msgid "No name defined" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copied" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copy" msgstr "" @@ -145,7 +145,7 @@ msgstr "" #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" msgstr "" @@ -207,9 +207,9 @@ msgstr "" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:686 +#: src/pages/part/PartDetail.tsx:691 msgid "Inactive" msgstr "" @@ -248,6 +248,35 @@ msgstr "" msgid "Virtual" msgstr "Sanal" +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "Başarılı" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "" + #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" msgstr "" @@ -334,11 +363,6 @@ msgstr "" msgid "Form Error" msgstr "" -#: src/components/forms/ApiForm.tsx:430 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "Başarılı" - #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" #~ msgstr "Form Errors Exist" @@ -389,7 +413,7 @@ msgstr "Giriş başarısız" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." msgstr "Lütfen bilgilerinizi kontrol edin ve yeniden giriş yapın." @@ -399,7 +423,7 @@ msgstr "Lütfen bilgilerinizi kontrol edin ve yeniden giriş yapın." #~ msgstr "Mail delivery successfull" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" msgstr "E-posta teslimi başarılı" @@ -527,7 +551,7 @@ msgstr "Sunucu" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:127 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -551,7 +575,6 @@ msgid "Add Host" msgstr "Sunucu Ekle" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" msgstr "Kaydet" @@ -579,20 +602,20 @@ msgstr "İsim: {0}" msgid "State: <0>worker ({0}), <1>plugins{1}" msgstr "Durum: <0>worker ({0}), <1>eklenti{1}" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" msgstr "Yükleniyor" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "" @@ -614,7 +637,7 @@ msgid "Thumbnail" msgstr "Küçük resim" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" msgstr "" @@ -859,7 +882,7 @@ msgid "Close modal" msgstr "Pencereyi kapat" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" msgstr "" @@ -967,7 +990,7 @@ msgstr "Hesap ayarları" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:295 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" msgstr "" @@ -1031,8 +1054,8 @@ msgid "About" msgstr "Hakkında" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" @@ -1053,35 +1076,35 @@ msgstr "" msgid "Mark as read" msgstr "" -#: src/components/nav/SearchDrawer.tsx:77 +#: src/components/nav/SearchDrawer.tsx:78 msgid "results" msgstr "sonuçlar" -#: src/components/nav/SearchDrawer.tsx:337 +#: src/components/nav/SearchDrawer.tsx:349 msgid "Enter search text" msgstr "Arama metnini gir" -#: src/components/nav/SearchDrawer.tsx:364 +#: src/components/nav/SearchDrawer.tsx:376 msgid "Search Options" msgstr "Arama Seçenekleri" -#: src/components/nav/SearchDrawer.tsx:367 +#: src/components/nav/SearchDrawer.tsx:379 msgid "Regex search" msgstr "Regex arama" -#: src/components/nav/SearchDrawer.tsx:377 +#: src/components/nav/SearchDrawer.tsx:389 msgid "Whole word search" msgstr "Tam kelime arama" -#: src/components/nav/SearchDrawer.tsx:416 +#: src/components/nav/SearchDrawer.tsx:430 msgid "An error occurred during search query" msgstr "Arama sorgusu sırasında bir hata oluştu" -#: src/components/nav/SearchDrawer.tsx:427 +#: src/components/nav/SearchDrawer.tsx:441 msgid "No results" msgstr "Sonuç yok" -#: src/components/nav/SearchDrawer.tsx:430 +#: src/components/nav/SearchDrawer.tsx:444 msgid "No results available for search query" msgstr "Arama sorgusu için sonuç yok" @@ -1100,7 +1123,7 @@ msgstr "" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:832 +#: src/pages/part/PartDetail.tsx:837 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" @@ -1109,11 +1132,11 @@ msgstr "Parça" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:640 +#: src/pages/part/PartDetail.tsx:645 msgid "Parts" msgstr "Parçalar" @@ -1136,7 +1159,7 @@ msgstr "" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "" @@ -1160,15 +1183,15 @@ msgid "Part Category" msgstr "" #: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 +#: src/pages/Index/Settings/SystemSettings.tsx:165 #: src/pages/part/CategoryDetail.tsx:249 #: src/pages/part/CategoryDetail.tsx:282 -#: src/pages/part/PartDetail.tsx:822 +#: src/pages/part/PartDetail.tsx:827 msgid "Part Categories" msgstr "Parça Kategorileri" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:560 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "" @@ -1188,7 +1211,7 @@ msgstr "" #: src/components/render/ModelType.tsx:82 #: src/pages/stock/LocationDetail.tsx:185 #: src/pages/stock/LocationDetail.tsx:361 -#: src/pages/stock/StockDetail.tsx:552 +#: src/pages/stock/StockDetail.tsx:554 msgid "Stock Locations" msgstr "Stok Konumları" @@ -1227,7 +1250,7 @@ msgid "Build Lines" msgstr "" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" msgstr "" @@ -1250,17 +1273,17 @@ msgid "Project Codes" msgstr "" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" msgstr "" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:573 +#: src/pages/part/PartDetail.tsx:579 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" msgstr "Satın Alma Emirleri" @@ -1275,16 +1298,16 @@ msgstr "" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" msgstr "" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:579 +#: src/pages/part/PartDetail.tsx:586 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" msgstr "Satış Emirleri" @@ -1298,13 +1321,13 @@ msgid "Sales Order Shipments" msgstr "" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" msgstr "" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" @@ -1322,8 +1345,8 @@ msgstr "" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" msgstr "" @@ -1341,7 +1364,7 @@ msgid "Owners" msgstr "" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" msgstr "Kullanıcı" @@ -1385,26 +1408,27 @@ msgstr "" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:493 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 #: src/pages/stock/LocationDetail.tsx:345 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" msgstr "Stok" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:517 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" msgstr "" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:523 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 @@ -1844,16 +1868,12 @@ msgid "Getting started" msgstr "Başlarken" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Failed to upload image" +#~ msgstr "Failed to upload image" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "" +#~ msgid "Notes saved" +#~ msgstr "Notes saved" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" @@ -1972,42 +1992,46 @@ msgid "Portuguese (Brazilian)" msgstr "" #: src/contexts/LanguageContext.tsx:43 -msgid "Russian" +msgid "Romanian" msgstr "" #: src/contexts/LanguageContext.tsx:44 -msgid "Slovak" +msgid "Russian" msgstr "" #: src/contexts/LanguageContext.tsx:45 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: src/contexts/LanguageContext.tsx:46 -msgid "Swedish" +msgid "Slovenian" msgstr "" #: src/contexts/LanguageContext.tsx:47 -msgid "Thai" +msgid "Swedish" msgstr "" #: src/contexts/LanguageContext.tsx:48 -msgid "Turkish" +msgid "Thai" msgstr "" #: src/contexts/LanguageContext.tsx:49 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: src/contexts/LanguageContext.tsx:50 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: src/contexts/LanguageContext.tsx:51 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: src/contexts/LanguageContext.tsx:52 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" msgstr "" @@ -2021,7 +2045,7 @@ msgstr "Ana Sayfa" #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" msgstr "Panel" @@ -2160,10 +2184,10 @@ msgstr "Demo" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" msgstr "" @@ -2171,15 +2195,15 @@ msgstr "" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" msgstr "" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" msgstr "" @@ -2464,7 +2488,7 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" @@ -2515,7 +2539,7 @@ msgstr "" #~ msgstr "Stock item updated" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" @@ -2537,8 +2561,8 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:207 -#: src/pages/part/PartDetail.tsx:656 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" msgstr "" @@ -2560,14 +2584,14 @@ msgid "Actions" msgstr "Eylemler" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" msgstr "" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" msgstr "" @@ -2580,12 +2604,12 @@ msgid "Remove Stock" msgstr "" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:788 msgid "Transfer Stock" msgstr "" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:777 msgid "Count Stock" msgstr "" @@ -2625,23 +2649,14 @@ msgstr "" #~ msgid "You have been logged out" #~ msgstr "You have been logged out" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" msgstr "" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" msgstr "" -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "" - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "" - #: src/functions/auth.tsx:141 #~ msgid "Already logged in" #~ msgstr "Already logged in" @@ -2654,11 +2669,20 @@ msgstr "" #~ msgid "Found an existing login - welcome back!" #~ msgstr "Found an existing login - welcome back!" -#: src/functions/auth.tsx:153 +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "" + +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "" + +#: src/functions/auth.tsx:195 msgid "Logged In" msgstr "" -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:196 msgid "Successfully logged in" msgstr "" @@ -2796,7 +2820,7 @@ msgstr "" msgid "Welcome to your Dashboard{0}" msgstr "" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." msgstr "" @@ -3374,15 +3398,15 @@ msgstr "" msgid "System settings" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" msgstr "" @@ -3394,50 +3418,50 @@ msgstr "" #~ msgid "Exchange Rates" #~ msgstr "Exchange Rates" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:591 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:527 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" msgstr "Yapım İşi Emirleri" -#: src/pages/Index/Settings/SystemSettings.tsx:298 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" msgstr "" @@ -3475,8 +3499,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3489,8 +3513,8 @@ msgstr "Durum" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" @@ -3501,10 +3525,10 @@ msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:134 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3537,10 +3561,10 @@ msgid "Issued By" msgstr "" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:322 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 @@ -3555,8 +3579,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" msgstr "" @@ -3594,7 +3618,7 @@ msgstr "" #~ msgstr "Unlink custom barcode from part" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:535 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" msgstr "" @@ -3638,34 +3662,34 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:613 +#: src/pages/part/PartDetail.tsx:622 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" msgstr "" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:625 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" msgstr "" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" @@ -3676,17 +3700,17 @@ msgstr "" #~ msgstr "Reporting Actions" #: src/pages/build/BuildDetail.tsx:374 -#~ msgid "Print build report" -#~ msgstr "Print build report" - -#: src/pages/build/BuildDetail.tsx:378 msgid "Build Order Actions" msgstr "" -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "Print build report" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" msgstr "" @@ -3725,7 +3749,7 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" @@ -3733,10 +3757,10 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 @@ -3769,12 +3793,12 @@ msgstr "" msgid "Assigned Stock" msgstr "" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" msgstr "" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" msgstr "" @@ -3804,32 +3828,32 @@ msgid "Manufacturer Part Details" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:487 +#: src/pages/part/PartDetail.tsx:492 msgid "Parameters" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:560 +#: src/pages/part/PartDetail.tsx:566 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" msgstr "" @@ -3845,7 +3869,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" msgstr "" @@ -3879,7 +3903,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" msgstr "" @@ -3969,85 +3993,85 @@ msgstr "" msgid "Category Details" msgstr "" -#: src/pages/part/PartDetail.tsx:140 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" msgstr "" -#: src/pages/part/PartDetail.tsx:147 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" msgstr "Kategori" -#: src/pages/part/PartDetail.tsx:153 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:167 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" msgstr "DPN" -#: src/pages/part/PartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" msgstr "" -#: src/pages/part/PartDetail.tsx:181 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" msgstr "Birim" -#: src/pages/part/PartDetail.tsx:188 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" msgstr "" -#: src/pages/part/PartDetail.tsx:195 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" msgstr "Bağlantı" -#: src/pages/part/PartDetail.tsx:213 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:220 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" msgstr "" -#: src/pages/part/PartDetail.tsx:235 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:243 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:250 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" msgstr "" -#: src/pages/part/PartDetail.tsx:257 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" msgstr "" -#: src/pages/part/PartDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -4065,37 +4089,37 @@ msgstr "" msgid "Active" msgstr "Aktif" -#: src/pages/part/PartDetail.tsx:271 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" msgstr "" -#: src/pages/part/PartDetail.tsx:276 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" msgstr "" -#: src/pages/part/PartDetail.tsx:281 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" msgstr "" -#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:291 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:296 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" msgstr "" -#: src/pages/part/PartDetail.tsx:309 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" msgstr "" @@ -4104,7 +4128,7 @@ msgstr "" #~ msgid "Edit part" #~ msgstr "Edit part" -#: src/pages/part/PartDetail.tsx:314 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" msgstr "" @@ -4116,69 +4140,71 @@ msgstr "" #~ msgid "Delete part" #~ msgstr "Delete part" -#: src/pages/part/PartDetail.tsx:329 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" msgstr "" -#: src/pages/part/PartDetail.tsx:340 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" msgstr "Fiyat Aralığı" -#: src/pages/part/PartDetail.tsx:375 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" msgstr "" -#: src/pages/part/PartDetail.tsx:410 +#: src/pages/part/PartDetail.tsx:415 msgid "Stocktake By" msgstr "" -#: src/pages/part/PartDetail.tsx:481 +#: src/pages/part/PartDetail.tsx:486 msgid "Part Details" msgstr "" -#: src/pages/part/PartDetail.tsx:507 +#: src/pages/part/PartDetail.tsx:512 msgid "Variants" msgstr "" -#: src/pages/part/PartDetail.tsx:514 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" msgstr "" -#: src/pages/part/PartDetail.tsx:520 +#: src/pages/part/PartDetail.tsx:526 msgid "Bill of Materials" msgstr "" -#: src/pages/part/PartDetail.tsx:534 +#: src/pages/part/PartDetail.tsx:540 msgid "Used In" msgstr "" -#: src/pages/part/PartDetail.tsx:541 +#: src/pages/part/PartDetail.tsx:547 msgid "Part Pricing" msgstr "" -#: src/pages/part/PartDetail.tsx:547 +#: src/pages/part/PartDetail.tsx:553 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" msgstr "" -#: src/pages/part/PartDetail.tsx:586 +#: src/pages/part/PartDetail.tsx:593 msgid "Scheduling" msgstr "" -#: src/pages/part/PartDetail.tsx:596 +#: src/pages/part/PartDetail.tsx:605 msgid "Test Templates" msgstr "" -#: src/pages/part/PartDetail.tsx:607 +#: src/pages/part/PartDetail.tsx:616 msgid "Related Parts" msgstr "" -#: src/pages/part/PartDetail.tsx:662 -#: src/pages/stock/StockDetail.tsx:151 -#: src/pages/stock/StockDetail.tsx:529 +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 @@ -4186,55 +4212,55 @@ msgstr "" msgid "Available" msgstr "" -#: src/pages/part/PartDetail.tsx:668 +#: src/pages/part/PartDetail.tsx:673 msgid "No Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:674 +#: src/pages/part/PartDetail.tsx:679 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" msgstr "" -#: src/pages/part/PartDetail.tsx:680 -#: src/pages/stock/StockDetail.tsx:512 +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" msgstr "" -#: src/pages/part/PartDetail.tsx:699 +#: src/pages/part/PartDetail.tsx:704 msgid "Edit Part" msgstr "" -#: src/pages/part/PartDetail.tsx:706 +#: src/pages/part/PartDetail.tsx:711 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" msgstr "" -#: src/pages/part/PartDetail.tsx:718 +#: src/pages/part/PartDetail.tsx:723 msgid "Delete Part" msgstr "" -#: src/pages/part/PartDetail.tsx:727 +#: src/pages/part/PartDetail.tsx:732 msgid "Deleting this part cannot be reversed" msgstr "" -#: src/pages/part/PartDetail.tsx:765 +#: src/pages/part/PartDetail.tsx:770 #: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" msgstr "" -#: src/pages/part/PartDetail.tsx:773 +#: src/pages/part/PartDetail.tsx:778 msgid "Count part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:784 +#: src/pages/part/PartDetail.tsx:789 msgid "Transfer part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:793 +#: src/pages/part/PartDetail.tsx:798 msgid "Part Actions" msgstr "" @@ -4247,6 +4273,7 @@ msgid "No pricing data found for this part." msgstr "" #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" msgstr "" @@ -4255,54 +4282,32 @@ msgid "Purchase History" msgstr "" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "" - +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "Bileşen" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 @@ -4311,81 +4316,117 @@ msgstr "" msgid "Total Price" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "Bileşen" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "Minimum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "Maximum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:25 @@ -4404,33 +4445,33 @@ msgstr "" msgid "Loading pricing data" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "" @@ -4450,23 +4491,23 @@ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" msgstr "" @@ -4477,46 +4518,46 @@ msgstr "" #~ msgstr "Order Currency," #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" msgstr "" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" @@ -4526,17 +4567,17 @@ msgstr "" msgid "Customers" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" msgstr "" @@ -4599,11 +4640,11 @@ msgstr "" msgid "Location Actions" msgstr "" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" msgstr "" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" msgstr "" @@ -4615,15 +4656,15 @@ msgstr "" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "Unlink custom barcode from stock item" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" msgstr "" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" msgstr "" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" msgstr "" @@ -4636,31 +4677,31 @@ msgstr "" #~ msgid "Delete stock item" #~ msgstr "Delete stock item" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" msgstr "" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" msgstr "" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" msgstr "" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" msgstr "" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" msgstr "" @@ -4668,34 +4709,34 @@ msgstr "" #~ msgid "Duplicate stock item" #~ msgstr "Duplicate stock item" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" msgstr "" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" msgstr "" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "" @@ -4786,7 +4827,7 @@ msgstr "Filtre" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" msgstr "Değer" @@ -5224,7 +5265,7 @@ msgid "Required Tests" msgstr "" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" msgstr "" @@ -5306,23 +5347,39 @@ msgstr "" msgid "File could not be uploaded" msgstr "" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" msgstr "" @@ -5330,11 +5387,11 @@ msgstr "" #~ msgid "Upload attachment" #~ msgstr "Upload attachment" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" msgstr "" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "" @@ -5716,75 +5773,75 @@ msgstr "" msgid "No Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 msgid "Required" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:80 +#: src/tables/part/PartTestTemplateTable.tsx:85 msgid "Show required tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:95 +#: src/tables/part/PartTestTemplateTable.tsx:100 msgid "Show tests that require an attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:99 +#: src/tables/part/PartTestTemplateTable.tsx:104 msgid "Include Inherited" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:100 +#: src/tables/part/PartTestTemplateTable.tsx:105 msgid "Show tests from inherited templates" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:104 +#: src/tables/part/PartTestTemplateTable.tsx:109 msgid "Has Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:105 +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" msgstr "" @@ -6273,7 +6330,7 @@ msgid "Task ID" msgstr "" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" msgstr "" @@ -6679,95 +6736,95 @@ msgstr "" msgid "Delete stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 msgid "Delete Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:289 +#: src/tables/stock/StockItemTestResultTable.tsx:273 msgid "Test result deleted" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:303 +#: src/tables/stock/StockItemTestResultTable.tsx:287 msgid "Test Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" msgstr "" diff --git a/src/frontend/src/locales/uk/messages.po b/src/frontend/src/locales/uk/messages.po index fff8fdc018..2a4d7060b8 100644 --- a/src/frontend/src/locales/uk/messages.po +++ b/src/frontend/src/locales/uk/messages.po @@ -8,7 +8,7 @@ msgstr "" "Language: uk\n" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-05-23 11:39\n" +"PO-Revision-Date: 2024-06-19 04:50\n" "Last-Translator: \n" "Language-Team: Ukrainian\n" "Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n" @@ -48,18 +48,18 @@ msgstr "" #: src/components/buttons/PrintingActions.tsx:107 #: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 #: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 -#: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 +#: src/components/nav/SearchDrawer.tsx:427 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" msgstr "" @@ -121,15 +121,15 @@ msgstr "" msgid "No" msgstr "" -#: src/components/details/Details.tsx:303 +#: src/components/details/Details.tsx:305 msgid "No name defined" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copied" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copy" msgstr "" @@ -145,7 +145,7 @@ msgstr "" #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" msgstr "" @@ -207,9 +207,9 @@ msgstr "" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:686 +#: src/pages/part/PartDetail.tsx:691 msgid "Inactive" msgstr "" @@ -248,6 +248,35 @@ msgstr "" msgid "Virtual" msgstr "" +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "" + #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" msgstr "" @@ -334,11 +363,6 @@ msgstr "" msgid "Form Error" msgstr "" -#: src/components/forms/ApiForm.tsx:430 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "" - #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" #~ msgstr "Form Errors Exist" @@ -389,7 +413,7 @@ msgstr "" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." msgstr "" @@ -399,7 +423,7 @@ msgstr "" #~ msgstr "Mail delivery successfull" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" msgstr "" @@ -527,7 +551,7 @@ msgstr "" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:127 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -551,7 +575,6 @@ msgid "Add Host" msgstr "" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" msgstr "" @@ -579,20 +602,20 @@ msgstr "" msgid "State: <0>worker ({0}), <1>plugins{1}" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "" @@ -614,7 +637,7 @@ msgid "Thumbnail" msgstr "" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" msgstr "" @@ -859,7 +882,7 @@ msgid "Close modal" msgstr "" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" msgstr "" @@ -967,7 +990,7 @@ msgstr "" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:295 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" msgstr "" @@ -1031,8 +1054,8 @@ msgid "About" msgstr "" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" @@ -1053,35 +1076,35 @@ msgstr "" msgid "Mark as read" msgstr "" -#: src/components/nav/SearchDrawer.tsx:77 +#: src/components/nav/SearchDrawer.tsx:78 msgid "results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:337 +#: src/components/nav/SearchDrawer.tsx:349 msgid "Enter search text" msgstr "" -#: src/components/nav/SearchDrawer.tsx:364 +#: src/components/nav/SearchDrawer.tsx:376 msgid "Search Options" msgstr "" -#: src/components/nav/SearchDrawer.tsx:367 +#: src/components/nav/SearchDrawer.tsx:379 msgid "Regex search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:377 +#: src/components/nav/SearchDrawer.tsx:389 msgid "Whole word search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:416 +#: src/components/nav/SearchDrawer.tsx:430 msgid "An error occurred during search query" msgstr "" -#: src/components/nav/SearchDrawer.tsx:427 +#: src/components/nav/SearchDrawer.tsx:441 msgid "No results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:430 +#: src/components/nav/SearchDrawer.tsx:444 msgid "No results available for search query" msgstr "" @@ -1100,7 +1123,7 @@ msgstr "" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:832 +#: src/pages/part/PartDetail.tsx:837 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" @@ -1109,11 +1132,11 @@ msgstr "" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:640 +#: src/pages/part/PartDetail.tsx:645 msgid "Parts" msgstr "" @@ -1136,7 +1159,7 @@ msgstr "" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "" @@ -1160,15 +1183,15 @@ msgid "Part Category" msgstr "" #: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 +#: src/pages/Index/Settings/SystemSettings.tsx:165 #: src/pages/part/CategoryDetail.tsx:249 #: src/pages/part/CategoryDetail.tsx:282 -#: src/pages/part/PartDetail.tsx:822 +#: src/pages/part/PartDetail.tsx:827 msgid "Part Categories" msgstr "" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:560 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "" @@ -1188,7 +1211,7 @@ msgstr "" #: src/components/render/ModelType.tsx:82 #: src/pages/stock/LocationDetail.tsx:185 #: src/pages/stock/LocationDetail.tsx:361 -#: src/pages/stock/StockDetail.tsx:552 +#: src/pages/stock/StockDetail.tsx:554 msgid "Stock Locations" msgstr "" @@ -1227,7 +1250,7 @@ msgid "Build Lines" msgstr "" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" msgstr "" @@ -1250,17 +1273,17 @@ msgid "Project Codes" msgstr "" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" msgstr "" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:573 +#: src/pages/part/PartDetail.tsx:579 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" msgstr "" @@ -1275,16 +1298,16 @@ msgstr "" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" msgstr "" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:579 +#: src/pages/part/PartDetail.tsx:586 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" msgstr "" @@ -1298,13 +1321,13 @@ msgid "Sales Order Shipments" msgstr "" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" msgstr "" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" @@ -1322,8 +1345,8 @@ msgstr "" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" msgstr "" @@ -1341,7 +1364,7 @@ msgid "Owners" msgstr "" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" msgstr "" @@ -1385,26 +1408,27 @@ msgstr "" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:493 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 #: src/pages/stock/LocationDetail.tsx:345 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" msgstr "" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:517 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" msgstr "" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:523 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 @@ -1844,16 +1868,12 @@ msgid "Getting started" msgstr "" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Failed to upload image" +#~ msgstr "Failed to upload image" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "" +#~ msgid "Notes saved" +#~ msgstr "Notes saved" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" @@ -1972,42 +1992,46 @@ msgid "Portuguese (Brazilian)" msgstr "" #: src/contexts/LanguageContext.tsx:43 -msgid "Russian" +msgid "Romanian" msgstr "" #: src/contexts/LanguageContext.tsx:44 -msgid "Slovak" +msgid "Russian" msgstr "" #: src/contexts/LanguageContext.tsx:45 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: src/contexts/LanguageContext.tsx:46 -msgid "Swedish" +msgid "Slovenian" msgstr "" #: src/contexts/LanguageContext.tsx:47 -msgid "Thai" +msgid "Swedish" msgstr "" #: src/contexts/LanguageContext.tsx:48 -msgid "Turkish" +msgid "Thai" msgstr "" #: src/contexts/LanguageContext.tsx:49 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: src/contexts/LanguageContext.tsx:50 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: src/contexts/LanguageContext.tsx:51 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: src/contexts/LanguageContext.tsx:52 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" msgstr "" @@ -2021,7 +2045,7 @@ msgstr "" #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" msgstr "" @@ -2160,10 +2184,10 @@ msgstr "" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" msgstr "" @@ -2171,15 +2195,15 @@ msgstr "" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" msgstr "" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" msgstr "" @@ -2464,7 +2488,7 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" @@ -2515,7 +2539,7 @@ msgstr "" #~ msgstr "Stock item updated" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" @@ -2537,8 +2561,8 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:207 -#: src/pages/part/PartDetail.tsx:656 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" msgstr "" @@ -2560,14 +2584,14 @@ msgid "Actions" msgstr "" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" msgstr "" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" msgstr "" @@ -2580,12 +2604,12 @@ msgid "Remove Stock" msgstr "" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:788 msgid "Transfer Stock" msgstr "" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:777 msgid "Count Stock" msgstr "" @@ -2625,23 +2649,14 @@ msgstr "" #~ msgid "You have been logged out" #~ msgstr "You have been logged out" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" msgstr "" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" msgstr "" -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "" - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "" - #: src/functions/auth.tsx:141 #~ msgid "Already logged in" #~ msgstr "Already logged in" @@ -2654,11 +2669,20 @@ msgstr "" #~ msgid "Found an existing login - welcome back!" #~ msgstr "Found an existing login - welcome back!" -#: src/functions/auth.tsx:153 +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "" + +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "" + +#: src/functions/auth.tsx:195 msgid "Logged In" msgstr "" -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:196 msgid "Successfully logged in" msgstr "" @@ -2796,7 +2820,7 @@ msgstr "" msgid "Welcome to your Dashboard{0}" msgstr "" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." msgstr "" @@ -3374,15 +3398,15 @@ msgstr "" msgid "System settings" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" msgstr "" @@ -3394,50 +3418,50 @@ msgstr "" #~ msgid "Exchange Rates" #~ msgstr "Exchange Rates" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:591 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:527 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:298 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" msgstr "" @@ -3475,8 +3499,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3489,8 +3513,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" @@ -3501,10 +3525,10 @@ msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:134 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3537,10 +3561,10 @@ msgid "Issued By" msgstr "" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:322 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 @@ -3555,8 +3579,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" msgstr "" @@ -3594,7 +3618,7 @@ msgstr "" #~ msgstr "Unlink custom barcode from part" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:535 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" msgstr "" @@ -3638,34 +3662,34 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:613 +#: src/pages/part/PartDetail.tsx:622 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" msgstr "" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:625 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" msgstr "" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" @@ -3676,17 +3700,17 @@ msgstr "" #~ msgstr "Reporting Actions" #: src/pages/build/BuildDetail.tsx:374 -#~ msgid "Print build report" -#~ msgstr "Print build report" - -#: src/pages/build/BuildDetail.tsx:378 msgid "Build Order Actions" msgstr "" -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "Print build report" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" msgstr "" @@ -3725,7 +3749,7 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" @@ -3733,10 +3757,10 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 @@ -3769,12 +3793,12 @@ msgstr "" msgid "Assigned Stock" msgstr "" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" msgstr "" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" msgstr "" @@ -3804,32 +3828,32 @@ msgid "Manufacturer Part Details" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:487 +#: src/pages/part/PartDetail.tsx:492 msgid "Parameters" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:560 +#: src/pages/part/PartDetail.tsx:566 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" msgstr "" @@ -3845,7 +3869,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" msgstr "" @@ -3879,7 +3903,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" msgstr "" @@ -3969,85 +3993,85 @@ msgstr "" msgid "Category Details" msgstr "" -#: src/pages/part/PartDetail.tsx:140 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" msgstr "" -#: src/pages/part/PartDetail.tsx:147 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" msgstr "" -#: src/pages/part/PartDetail.tsx:153 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:167 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" msgstr "" -#: src/pages/part/PartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" msgstr "" -#: src/pages/part/PartDetail.tsx:181 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" msgstr "" -#: src/pages/part/PartDetail.tsx:188 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" msgstr "" -#: src/pages/part/PartDetail.tsx:195 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" msgstr "" -#: src/pages/part/PartDetail.tsx:213 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:220 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" msgstr "" -#: src/pages/part/PartDetail.tsx:235 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:243 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:250 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" msgstr "" -#: src/pages/part/PartDetail.tsx:257 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" msgstr "" -#: src/pages/part/PartDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -4065,37 +4089,37 @@ msgstr "" msgid "Active" msgstr "" -#: src/pages/part/PartDetail.tsx:271 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" msgstr "" -#: src/pages/part/PartDetail.tsx:276 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" msgstr "" -#: src/pages/part/PartDetail.tsx:281 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" msgstr "" -#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:291 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:296 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" msgstr "" -#: src/pages/part/PartDetail.tsx:309 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" msgstr "" @@ -4104,7 +4128,7 @@ msgstr "" #~ msgid "Edit part" #~ msgstr "Edit part" -#: src/pages/part/PartDetail.tsx:314 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" msgstr "" @@ -4116,69 +4140,71 @@ msgstr "" #~ msgid "Delete part" #~ msgstr "Delete part" -#: src/pages/part/PartDetail.tsx:329 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" msgstr "" -#: src/pages/part/PartDetail.tsx:340 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" msgstr "" -#: src/pages/part/PartDetail.tsx:375 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" msgstr "" -#: src/pages/part/PartDetail.tsx:410 +#: src/pages/part/PartDetail.tsx:415 msgid "Stocktake By" msgstr "" -#: src/pages/part/PartDetail.tsx:481 +#: src/pages/part/PartDetail.tsx:486 msgid "Part Details" msgstr "" -#: src/pages/part/PartDetail.tsx:507 +#: src/pages/part/PartDetail.tsx:512 msgid "Variants" msgstr "" -#: src/pages/part/PartDetail.tsx:514 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" msgstr "" -#: src/pages/part/PartDetail.tsx:520 +#: src/pages/part/PartDetail.tsx:526 msgid "Bill of Materials" msgstr "" -#: src/pages/part/PartDetail.tsx:534 +#: src/pages/part/PartDetail.tsx:540 msgid "Used In" msgstr "" -#: src/pages/part/PartDetail.tsx:541 +#: src/pages/part/PartDetail.tsx:547 msgid "Part Pricing" msgstr "" -#: src/pages/part/PartDetail.tsx:547 +#: src/pages/part/PartDetail.tsx:553 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" msgstr "" -#: src/pages/part/PartDetail.tsx:586 +#: src/pages/part/PartDetail.tsx:593 msgid "Scheduling" msgstr "" -#: src/pages/part/PartDetail.tsx:596 +#: src/pages/part/PartDetail.tsx:605 msgid "Test Templates" msgstr "" -#: src/pages/part/PartDetail.tsx:607 +#: src/pages/part/PartDetail.tsx:616 msgid "Related Parts" msgstr "" -#: src/pages/part/PartDetail.tsx:662 -#: src/pages/stock/StockDetail.tsx:151 -#: src/pages/stock/StockDetail.tsx:529 +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 @@ -4186,55 +4212,55 @@ msgstr "" msgid "Available" msgstr "" -#: src/pages/part/PartDetail.tsx:668 +#: src/pages/part/PartDetail.tsx:673 msgid "No Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:674 +#: src/pages/part/PartDetail.tsx:679 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" msgstr "" -#: src/pages/part/PartDetail.tsx:680 -#: src/pages/stock/StockDetail.tsx:512 +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" msgstr "" -#: src/pages/part/PartDetail.tsx:699 +#: src/pages/part/PartDetail.tsx:704 msgid "Edit Part" msgstr "" -#: src/pages/part/PartDetail.tsx:706 +#: src/pages/part/PartDetail.tsx:711 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" msgstr "" -#: src/pages/part/PartDetail.tsx:718 +#: src/pages/part/PartDetail.tsx:723 msgid "Delete Part" msgstr "" -#: src/pages/part/PartDetail.tsx:727 +#: src/pages/part/PartDetail.tsx:732 msgid "Deleting this part cannot be reversed" msgstr "" -#: src/pages/part/PartDetail.tsx:765 +#: src/pages/part/PartDetail.tsx:770 #: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" msgstr "" -#: src/pages/part/PartDetail.tsx:773 +#: src/pages/part/PartDetail.tsx:778 msgid "Count part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:784 +#: src/pages/part/PartDetail.tsx:789 msgid "Transfer part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:793 +#: src/pages/part/PartDetail.tsx:798 msgid "Part Actions" msgstr "" @@ -4247,6 +4273,7 @@ msgid "No pricing data found for this part." msgstr "" #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" msgstr "" @@ -4255,54 +4282,32 @@ msgid "Purchase History" msgstr "" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "" - +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 @@ -4311,81 +4316,117 @@ msgstr "" msgid "Total Price" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "Minimum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "Maximum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:25 @@ -4404,33 +4445,33 @@ msgstr "" msgid "Loading pricing data" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "" @@ -4450,23 +4491,23 @@ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" msgstr "" @@ -4477,46 +4518,46 @@ msgstr "" #~ msgstr "Order Currency," #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" msgstr "" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" @@ -4526,17 +4567,17 @@ msgstr "" msgid "Customers" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" msgstr "" @@ -4599,11 +4640,11 @@ msgstr "" msgid "Location Actions" msgstr "" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" msgstr "" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" msgstr "" @@ -4615,15 +4656,15 @@ msgstr "" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "Unlink custom barcode from stock item" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" msgstr "" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" msgstr "" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" msgstr "" @@ -4636,31 +4677,31 @@ msgstr "" #~ msgid "Delete stock item" #~ msgstr "Delete stock item" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" msgstr "" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" msgstr "" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" msgstr "" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" msgstr "" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" msgstr "" @@ -4668,34 +4709,34 @@ msgstr "" #~ msgid "Duplicate stock item" #~ msgstr "Duplicate stock item" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" msgstr "" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" msgstr "" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "" @@ -4786,7 +4827,7 @@ msgstr "" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" msgstr "" @@ -5224,7 +5265,7 @@ msgid "Required Tests" msgstr "" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" msgstr "" @@ -5306,23 +5347,39 @@ msgstr "" msgid "File could not be uploaded" msgstr "" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" msgstr "" @@ -5330,11 +5387,11 @@ msgstr "" #~ msgid "Upload attachment" #~ msgstr "Upload attachment" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" msgstr "" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "" @@ -5716,75 +5773,75 @@ msgstr "" msgid "No Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 msgid "Required" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:80 +#: src/tables/part/PartTestTemplateTable.tsx:85 msgid "Show required tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:95 +#: src/tables/part/PartTestTemplateTable.tsx:100 msgid "Show tests that require an attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:99 +#: src/tables/part/PartTestTemplateTable.tsx:104 msgid "Include Inherited" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:100 +#: src/tables/part/PartTestTemplateTable.tsx:105 msgid "Show tests from inherited templates" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:104 +#: src/tables/part/PartTestTemplateTable.tsx:109 msgid "Has Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:105 +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" msgstr "" @@ -6273,7 +6330,7 @@ msgid "Task ID" msgstr "" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" msgstr "" @@ -6679,95 +6736,95 @@ msgstr "" msgid "Delete stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 msgid "Delete Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:289 +#: src/tables/stock/StockItemTestResultTable.tsx:273 msgid "Test result deleted" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:303 +#: src/tables/stock/StockItemTestResultTable.tsx:287 msgid "Test Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" msgstr "" diff --git a/src/frontend/src/locales/vi/messages.po b/src/frontend/src/locales/vi/messages.po index 8d18905394..f9ac3f546a 100644 --- a/src/frontend/src/locales/vi/messages.po +++ b/src/frontend/src/locales/vi/messages.po @@ -8,7 +8,7 @@ msgstr "" "Language: vi\n" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-05-23 11:39\n" +"PO-Revision-Date: 2024-06-19 04:50\n" "Last-Translator: \n" "Language-Team: Vietnamese\n" "Plural-Forms: nplurals=1; plural=0;\n" @@ -48,18 +48,18 @@ msgstr "" #: src/components/buttons/PrintingActions.tsx:107 #: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 #: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 -#: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 +#: src/components/nav/SearchDrawer.tsx:427 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" msgstr "Lỗi" @@ -121,15 +121,15 @@ msgstr "Đồng ý" msgid "No" msgstr "Không" -#: src/components/details/Details.tsx:303 +#: src/components/details/Details.tsx:305 msgid "No name defined" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copied" msgstr "Đã sao chép" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copy" msgstr "Sao chép" @@ -145,7 +145,7 @@ msgstr "" #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" msgstr "" @@ -207,9 +207,9 @@ msgstr "" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:686 +#: src/pages/part/PartDetail.tsx:691 msgid "Inactive" msgstr "" @@ -248,6 +248,35 @@ msgstr "" msgid "Virtual" msgstr "Ảo" +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "Thành công" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "Không lưu được chú thích" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "" + #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" msgstr "" @@ -334,11 +363,6 @@ msgstr "" msgid "Form Error" msgstr "Lỗi form" -#: src/components/forms/ApiForm.tsx:430 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "Thành công" - #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" #~ msgstr "Form Errors Exist" @@ -389,7 +413,7 @@ msgstr "Đăng nhập thất bại" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." msgstr "Kiểm tra đầu vào của bạn và thử lại." @@ -399,7 +423,7 @@ msgstr "Kiểm tra đầu vào của bạn và thử lại." #~ msgstr "Mail delivery successfull" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" msgstr "Thư đã được gửi đi thành công" @@ -527,7 +551,7 @@ msgstr "Host" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:127 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -551,7 +575,6 @@ msgid "Add Host" msgstr "Thêm host" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" msgstr "Lưu lại" @@ -579,20 +602,20 @@ msgstr "Tên: {0}" msgid "State: <0>worker ({0}), <1>plugins{1}" msgstr "Trạng thái: <0>worker ({0}), <1>plugins{1}" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "Tìm kiếm" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" msgstr "Đang tải" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "Không có kết quả nào được tìm thấy" @@ -614,7 +637,7 @@ msgid "Thumbnail" msgstr "Ảnh thu nhỏ" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" msgstr "Chức năng mã vạch" @@ -859,7 +882,7 @@ msgid "Close modal" msgstr "Đóng cửa sổ" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" msgstr "Máy chủ" @@ -967,7 +990,7 @@ msgstr "Cài đặt tài khoản" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:295 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" msgstr "Thiết lập hệ thống" @@ -1031,8 +1054,8 @@ msgid "About" msgstr "Giới thiệu" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" @@ -1053,35 +1076,35 @@ msgstr "Thông báo" msgid "Mark as read" msgstr "Đánh dấu đã đọc" -#: src/components/nav/SearchDrawer.tsx:77 +#: src/components/nav/SearchDrawer.tsx:78 msgid "results" msgstr "kết quả" -#: src/components/nav/SearchDrawer.tsx:337 +#: src/components/nav/SearchDrawer.tsx:349 msgid "Enter search text" msgstr "Nhập văn bản tìm kiếm" -#: src/components/nav/SearchDrawer.tsx:364 +#: src/components/nav/SearchDrawer.tsx:376 msgid "Search Options" msgstr "Tùy chọn tìm kiếm" -#: src/components/nav/SearchDrawer.tsx:367 +#: src/components/nav/SearchDrawer.tsx:379 msgid "Regex search" msgstr "Tìm kiếm regex" -#: src/components/nav/SearchDrawer.tsx:377 +#: src/components/nav/SearchDrawer.tsx:389 msgid "Whole word search" msgstr "Tìm phù hợp toàn bộ từ" -#: src/components/nav/SearchDrawer.tsx:416 +#: src/components/nav/SearchDrawer.tsx:430 msgid "An error occurred during search query" msgstr "Lỗi trong quá trình truy vấn tìm kiếm" -#: src/components/nav/SearchDrawer.tsx:427 +#: src/components/nav/SearchDrawer.tsx:441 msgid "No results" msgstr "Không có kết quả" -#: src/components/nav/SearchDrawer.tsx:430 +#: src/components/nav/SearchDrawer.tsx:444 msgid "No results available for search query" msgstr "Không có kết quả nào được tìm thấy với truy vấn tìm kiếm" @@ -1100,7 +1123,7 @@ msgstr "Model không rõ: {model}" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:832 +#: src/pages/part/PartDetail.tsx:837 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" @@ -1109,11 +1132,11 @@ msgstr "Phụ kiện" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:640 +#: src/pages/part/PartDetail.tsx:645 msgid "Parts" msgstr "Phụ tùng" @@ -1136,7 +1159,7 @@ msgstr "" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "Phụ kiện nhà cung cấp" @@ -1160,15 +1183,15 @@ msgid "Part Category" msgstr "Danh mục phụ kiện" #: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 +#: src/pages/Index/Settings/SystemSettings.tsx:165 #: src/pages/part/CategoryDetail.tsx:249 #: src/pages/part/CategoryDetail.tsx:282 -#: src/pages/part/PartDetail.tsx:822 +#: src/pages/part/PartDetail.tsx:827 msgid "Part Categories" msgstr "Danh mục phụ kiện" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:560 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "Hàng trong kho" @@ -1188,7 +1211,7 @@ msgstr "Vị trí kho hàng" #: src/components/render/ModelType.tsx:82 #: src/pages/stock/LocationDetail.tsx:185 #: src/pages/stock/LocationDetail.tsx:361 -#: src/pages/stock/StockDetail.tsx:552 +#: src/pages/stock/StockDetail.tsx:554 msgid "Stock Locations" msgstr "Vị trí kho hàng" @@ -1227,7 +1250,7 @@ msgid "Build Lines" msgstr "" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" msgstr "Công ty" @@ -1250,17 +1273,17 @@ msgid "Project Codes" msgstr "Mã dự án" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" msgstr "Đơn đặt mua" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:573 +#: src/pages/part/PartDetail.tsx:579 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" msgstr "Đơn hàng mua" @@ -1275,16 +1298,16 @@ msgstr "" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" msgstr "Đơn đặt bán" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:579 +#: src/pages/part/PartDetail.tsx:586 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" msgstr "Đơn hàng bán" @@ -1298,13 +1321,13 @@ msgid "Sales Order Shipments" msgstr "Vận chuyển đơn hàng" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" msgstr "Đơn hàng trả lại" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" @@ -1322,8 +1345,8 @@ msgstr "Địa chỉ" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" msgstr "Liên hệ" @@ -1341,7 +1364,7 @@ msgid "Owners" msgstr "Chủ sở hữu" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" msgstr "Người dùng" @@ -1385,26 +1408,27 @@ msgstr "Lô hàng" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:493 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 #: src/pages/stock/LocationDetail.tsx:345 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" msgstr "Kho hàng" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:517 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" msgstr "" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:523 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 @@ -1844,16 +1868,12 @@ msgid "Getting started" msgstr "Bắt đầu" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "Lỗi tải ảnh lên" +#~ msgid "Failed to upload image" +#~ msgstr "Failed to upload image" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "Ghi chú đã được lưu" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "Không lưu được chú thích" +#~ msgid "Notes saved" +#~ msgstr "Notes saved" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" @@ -1972,42 +1992,46 @@ msgid "Portuguese (Brazilian)" msgstr "Portuguese (Brazilian)" #: src/contexts/LanguageContext.tsx:43 +msgid "Romanian" +msgstr "" + +#: src/contexts/LanguageContext.tsx:44 msgid "Russian" msgstr "Russian" -#: src/contexts/LanguageContext.tsx:44 +#: src/contexts/LanguageContext.tsx:45 msgid "Slovak" msgstr "" -#: src/contexts/LanguageContext.tsx:45 +#: src/contexts/LanguageContext.tsx:46 msgid "Slovenian" msgstr "Slovenian" -#: src/contexts/LanguageContext.tsx:46 +#: src/contexts/LanguageContext.tsx:47 msgid "Swedish" msgstr "Swedish" -#: src/contexts/LanguageContext.tsx:47 +#: src/contexts/LanguageContext.tsx:48 msgid "Thai" msgstr "Thai" -#: src/contexts/LanguageContext.tsx:48 +#: src/contexts/LanguageContext.tsx:49 msgid "Turkish" msgstr "Turkish" -#: src/contexts/LanguageContext.tsx:49 +#: src/contexts/LanguageContext.tsx:50 msgid "Ukrainian" msgstr "" -#: src/contexts/LanguageContext.tsx:50 +#: src/contexts/LanguageContext.tsx:51 msgid "Vietnamese" msgstr "Tiếng Việt" -#: src/contexts/LanguageContext.tsx:51 +#: src/contexts/LanguageContext.tsx:52 msgid "Chinese (Simplified)" msgstr "Chinese (Simplified)" -#: src/contexts/LanguageContext.tsx:52 +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" msgstr "Chinese (Traditional)" @@ -2021,7 +2045,7 @@ msgstr "Trang chủ" #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" msgstr "Bảng điều khiển" @@ -2160,10 +2184,10 @@ msgstr "Demo" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" msgstr "Mua sắm" @@ -2171,15 +2195,15 @@ msgstr "Mua sắm" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" msgstr "Bán hàng" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" msgstr "Sân chơi" @@ -2464,7 +2488,7 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" @@ -2515,7 +2539,7 @@ msgstr "Điền số sê-ri cho kho mới (hoặc để trống)" #~ msgstr "Stock item updated" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" @@ -2537,8 +2561,8 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:207 -#: src/pages/part/PartDetail.tsx:656 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" msgstr "Còn hàng" @@ -2560,14 +2584,14 @@ msgid "Actions" msgstr "Chức năng" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" msgstr "Thêm" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" msgstr "Đếm" @@ -2580,12 +2604,12 @@ msgid "Remove Stock" msgstr "" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:788 msgid "Transfer Stock" msgstr "" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:777 msgid "Count Stock" msgstr "" @@ -2625,23 +2649,14 @@ msgstr "" #~ msgid "You have been logged out" #~ msgstr "You have been logged out" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" msgstr "" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" msgstr "" -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "Kiểm tra hộp thư để lấy liên kết đặt lại. Việc này chỉ có tác dụng khi bạn có tài khoản. Cần kiểm tra thư mục Spam/Junk." - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "Thiết lập lại thất bại" - #: src/functions/auth.tsx:141 #~ msgid "Already logged in" #~ msgstr "Already logged in" @@ -2654,11 +2669,20 @@ msgstr "Thiết lập lại thất bại" #~ msgid "Found an existing login - welcome back!" #~ msgstr "Found an existing login - welcome back!" -#: src/functions/auth.tsx:153 +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "Kiểm tra hộp thư để lấy liên kết đặt lại. Việc này chỉ có tác dụng khi bạn có tài khoản. Cần kiểm tra thư mục Spam/Junk." + +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "Thiết lập lại thất bại" + +#: src/functions/auth.tsx:195 msgid "Logged In" msgstr "" -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:196 msgid "Successfully logged in" msgstr "" @@ -2796,7 +2820,7 @@ msgstr "Trang này đã được thay thế cho trang khởi động cũ với t msgid "Welcome to your Dashboard{0}" msgstr "Chào mừng bạn đến với bảng điều khiển của bạn" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." msgstr "Trang này là trình diễn tính năng dự kiến cho nền tảng UI." @@ -3374,15 +3398,15 @@ msgstr "Chọn thiết lập thích hợp với vòng đời người dùng. Có msgid "System settings" msgstr "Thiết lập hệ thống" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" msgstr "Đăng nhập" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" msgstr "Mã vạch" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" msgstr "Giá bán" @@ -3394,50 +3418,50 @@ msgstr "Giá bán" #~ msgid "Exchange Rates" #~ msgstr "Exchange Rates" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" msgstr "Nhãn" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" msgstr "Báo cáo" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:591 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" msgstr "Kiểm kê" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:527 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" msgstr "Đơn đặt bản dựng" -#: src/pages/Index/Settings/SystemSettings.tsx:298 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" msgstr "Chuyển sang thiết lập người dùng" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" msgstr "Tài khoản" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" msgstr "Bảo mật" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" msgstr "Tùy chọn hiển thị" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" msgstr "Cài đặt tài khoản" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" msgstr "Chuyển sang thiết lập hệ thống" @@ -3475,8 +3499,8 @@ msgstr "Đánh dấu chưa đọc" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3489,8 +3513,8 @@ msgstr "Trạng thái" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" @@ -3501,10 +3525,10 @@ msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:134 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3537,10 +3561,10 @@ msgid "Issued By" msgstr "" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:322 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 @@ -3555,8 +3579,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" msgstr "Ngày mục tiêu" @@ -3594,7 +3618,7 @@ msgstr "" #~ msgstr "Unlink custom barcode from part" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:535 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" msgstr "" @@ -3638,34 +3662,34 @@ msgstr "Đơn đặt bản dựng con" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:613 +#: src/pages/part/PartDetail.tsx:622 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" msgstr "Đính kèm" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:625 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" msgstr "Ghi chú" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" @@ -3676,17 +3700,17 @@ msgstr "" #~ msgstr "Reporting Actions" #: src/pages/build/BuildDetail.tsx:374 -#~ msgid "Print build report" -#~ msgstr "Print build report" - -#: src/pages/build/BuildDetail.tsx:378 msgid "Build Order Actions" msgstr "" -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "Print build report" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" msgstr "" @@ -3725,7 +3749,7 @@ msgstr "Nhà cung cấp" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" @@ -3733,10 +3757,10 @@ msgstr "Nhà sản xuất" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 @@ -3769,12 +3793,12 @@ msgstr "" msgid "Assigned Stock" msgstr "" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" msgstr "Sửa doanh nghiệp" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" msgstr "" @@ -3804,32 +3828,32 @@ msgid "Manufacturer Part Details" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:487 +#: src/pages/part/PartDetail.tsx:492 msgid "Parameters" msgstr "Thông số" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:560 +#: src/pages/part/PartDetail.tsx:566 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" msgstr "Nhà cung cấp" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" msgstr "" @@ -3845,7 +3869,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" msgstr "" @@ -3879,7 +3903,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" msgstr "" @@ -3969,85 +3993,85 @@ msgstr "" msgid "Category Details" msgstr "" -#: src/pages/part/PartDetail.tsx:140 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" msgstr "" -#: src/pages/part/PartDetail.tsx:147 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" msgstr "Danh mục" -#: src/pages/part/PartDetail.tsx:153 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:167 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" msgstr "IPN" -#: src/pages/part/PartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" msgstr "" -#: src/pages/part/PartDetail.tsx:181 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" msgstr "Đơn vị" -#: src/pages/part/PartDetail.tsx:188 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" msgstr "" -#: src/pages/part/PartDetail.tsx:195 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" msgstr "Liên kết" -#: src/pages/part/PartDetail.tsx:213 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:220 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" msgstr "" -#: src/pages/part/PartDetail.tsx:235 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:243 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:250 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" msgstr "" -#: src/pages/part/PartDetail.tsx:257 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" msgstr "" -#: src/pages/part/PartDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -4065,37 +4089,37 @@ msgstr "" msgid "Active" msgstr "Hoạt động" -#: src/pages/part/PartDetail.tsx:271 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" msgstr "" -#: src/pages/part/PartDetail.tsx:276 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" msgstr "" -#: src/pages/part/PartDetail.tsx:281 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" msgstr "" -#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:291 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:296 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" msgstr "" -#: src/pages/part/PartDetail.tsx:309 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" msgstr "" @@ -4104,7 +4128,7 @@ msgstr "" #~ msgid "Edit part" #~ msgstr "Edit part" -#: src/pages/part/PartDetail.tsx:314 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" msgstr "" @@ -4116,69 +4140,71 @@ msgstr "" #~ msgid "Delete part" #~ msgstr "Delete part" -#: src/pages/part/PartDetail.tsx:329 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" msgstr "" -#: src/pages/part/PartDetail.tsx:340 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" msgstr "Khoảng giá" -#: src/pages/part/PartDetail.tsx:375 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" msgstr "" -#: src/pages/part/PartDetail.tsx:410 +#: src/pages/part/PartDetail.tsx:415 msgid "Stocktake By" msgstr "" -#: src/pages/part/PartDetail.tsx:481 +#: src/pages/part/PartDetail.tsx:486 msgid "Part Details" msgstr "" -#: src/pages/part/PartDetail.tsx:507 +#: src/pages/part/PartDetail.tsx:512 msgid "Variants" msgstr "Biến thể" -#: src/pages/part/PartDetail.tsx:514 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" msgstr "Phân bổ" -#: src/pages/part/PartDetail.tsx:520 +#: src/pages/part/PartDetail.tsx:526 msgid "Bill of Materials" msgstr "Hóa đơn nguyên vật liệu" -#: src/pages/part/PartDetail.tsx:534 +#: src/pages/part/PartDetail.tsx:540 msgid "Used In" msgstr "Sử dụng trong" -#: src/pages/part/PartDetail.tsx:541 +#: src/pages/part/PartDetail.tsx:547 msgid "Part Pricing" msgstr "" -#: src/pages/part/PartDetail.tsx:547 +#: src/pages/part/PartDetail.tsx:553 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" msgstr "" -#: src/pages/part/PartDetail.tsx:586 +#: src/pages/part/PartDetail.tsx:593 msgid "Scheduling" msgstr "" -#: src/pages/part/PartDetail.tsx:596 +#: src/pages/part/PartDetail.tsx:605 msgid "Test Templates" msgstr "Mẫu thử nghiệm" -#: src/pages/part/PartDetail.tsx:607 +#: src/pages/part/PartDetail.tsx:616 msgid "Related Parts" msgstr "Phụ kiện liên quan" -#: src/pages/part/PartDetail.tsx:662 -#: src/pages/stock/StockDetail.tsx:151 -#: src/pages/stock/StockDetail.tsx:529 +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 @@ -4186,55 +4212,55 @@ msgstr "Phụ kiện liên quan" msgid "Available" msgstr "Có sẵn" -#: src/pages/part/PartDetail.tsx:668 +#: src/pages/part/PartDetail.tsx:673 msgid "No Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:674 +#: src/pages/part/PartDetail.tsx:679 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" msgstr "On Order" -#: src/pages/part/PartDetail.tsx:680 -#: src/pages/stock/StockDetail.tsx:512 +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" msgstr "" -#: src/pages/part/PartDetail.tsx:699 +#: src/pages/part/PartDetail.tsx:704 msgid "Edit Part" msgstr "Sửa phụ kiện" -#: src/pages/part/PartDetail.tsx:706 +#: src/pages/part/PartDetail.tsx:711 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" msgstr "" -#: src/pages/part/PartDetail.tsx:718 +#: src/pages/part/PartDetail.tsx:723 msgid "Delete Part" msgstr "" -#: src/pages/part/PartDetail.tsx:727 +#: src/pages/part/PartDetail.tsx:732 msgid "Deleting this part cannot be reversed" msgstr "" -#: src/pages/part/PartDetail.tsx:765 +#: src/pages/part/PartDetail.tsx:770 #: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" msgstr "" -#: src/pages/part/PartDetail.tsx:773 +#: src/pages/part/PartDetail.tsx:778 msgid "Count part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:784 +#: src/pages/part/PartDetail.tsx:789 msgid "Transfer part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:793 +#: src/pages/part/PartDetail.tsx:798 msgid "Part Actions" msgstr "" @@ -4247,6 +4273,7 @@ msgid "No pricing data found for this part." msgstr "" #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" msgstr "" @@ -4255,54 +4282,32 @@ msgid "Purchase History" msgstr "" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "" - +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "Thành phần" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "Đơn giá" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 @@ -4311,81 +4316,117 @@ msgstr "Đơn giá" msgid "Total Price" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "Thành phần" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "Minimum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "Maximum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "Đơn giá" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" msgstr "Đã cập nhật" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:25 @@ -4404,33 +4445,33 @@ msgstr "" msgid "Loading pricing data" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "" @@ -4450,23 +4491,23 @@ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" msgstr "Dòng hàng hóa" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" msgstr "" @@ -4477,46 +4518,46 @@ msgstr "" #~ msgstr "Order Currency," #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" msgstr "Chi tiết đơn đặt" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" msgstr "Chức năng đơn đặt" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" @@ -4526,17 +4567,17 @@ msgstr "" msgid "Customers" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" msgstr "" @@ -4599,11 +4640,11 @@ msgstr "" msgid "Location Actions" msgstr "" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" msgstr "Sản phẩm cơ bản" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" msgstr "" @@ -4615,15 +4656,15 @@ msgstr "" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "Unlink custom barcode from stock item" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" msgstr "" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" msgstr "" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" msgstr "" @@ -4636,31 +4677,31 @@ msgstr "" #~ msgid "Delete stock item" #~ msgstr "Delete stock item" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" msgstr "" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" msgstr "Theo dõi tồn kho" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" msgstr "" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" msgstr "Mục đã cài đặt" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" msgstr "Mục con" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" msgstr "Sửa hàng trong kho" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" msgstr "" @@ -4668,34 +4709,34 @@ msgstr "" #~ msgid "Duplicate stock item" #~ msgstr "Duplicate stock item" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" msgstr "" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" msgstr "Đếm hàng" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" msgstr "Thêm hàng" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" msgstr "Xóa hàng" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" msgstr "Chuyển" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" msgstr "Chuyển giao hàng" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "" @@ -4786,7 +4827,7 @@ msgstr "Bộ lọc" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" msgstr "Giá trị" @@ -5224,7 +5265,7 @@ msgid "Required Tests" msgstr "" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" msgstr "" @@ -5306,23 +5347,39 @@ msgstr "Lỗi tải lên" msgid "File could not be uploaded" msgstr "Tệp không thể tải lên" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" msgstr "Xóa tệp đính kèm" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" msgstr "Thêm tệp đính kèm" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" msgstr "Thêm liên kết ngoại" @@ -5330,11 +5387,11 @@ msgstr "Thêm liên kết ngoại" #~ msgid "Upload attachment" #~ msgstr "Upload attachment" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" msgstr "Không tìm thấy tệp đính kèm" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "" @@ -5716,75 +5773,75 @@ msgstr "" msgid "No Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 msgid "Required" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:80 +#: src/tables/part/PartTestTemplateTable.tsx:85 msgid "Show required tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:95 +#: src/tables/part/PartTestTemplateTable.tsx:100 msgid "Show tests that require an attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:99 +#: src/tables/part/PartTestTemplateTable.tsx:104 msgid "Include Inherited" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:100 +#: src/tables/part/PartTestTemplateTable.tsx:105 msgid "Show tests from inherited templates" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:104 +#: src/tables/part/PartTestTemplateTable.tsx:109 msgid "Has Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:105 +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" msgstr "" @@ -6273,7 +6330,7 @@ msgid "Task ID" msgstr "" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" msgstr "" @@ -6679,95 +6736,95 @@ msgstr "" msgid "Delete stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 msgid "Delete Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:289 +#: src/tables/stock/StockItemTestResultTable.tsx:273 msgid "Test result deleted" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:303 +#: src/tables/stock/StockItemTestResultTable.tsx:287 msgid "Test Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" msgstr "" diff --git a/src/frontend/src/locales/zh-hans/messages.po b/src/frontend/src/locales/zh-hans/messages.po index 237021b154..a7280c2474 100644 --- a/src/frontend/src/locales/zh-hans/messages.po +++ b/src/frontend/src/locales/zh-hans/messages.po @@ -43,18 +43,18 @@ msgstr "" #: src/components/buttons/PrintingActions.tsx:107 #: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 #: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 -#: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 +#: src/components/nav/SearchDrawer.tsx:427 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" msgstr "" @@ -116,15 +116,15 @@ msgstr "" msgid "No" msgstr "" -#: src/components/details/Details.tsx:303 +#: src/components/details/Details.tsx:305 msgid "No name defined" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copied" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copy" msgstr "" @@ -140,7 +140,7 @@ msgstr "" #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" msgstr "" @@ -202,9 +202,9 @@ msgstr "" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:686 +#: src/pages/part/PartDetail.tsx:691 msgid "Inactive" msgstr "" @@ -243,6 +243,35 @@ msgstr "" msgid "Virtual" msgstr "" +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "" + #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" msgstr "" @@ -329,11 +358,6 @@ msgstr "" msgid "Form Error" msgstr "" -#: src/components/forms/ApiForm.tsx:430 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "" - #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" #~ msgstr "" @@ -374,12 +398,12 @@ msgstr "" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." msgstr "" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" msgstr "" @@ -503,7 +527,7 @@ msgstr "" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:127 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -527,7 +551,6 @@ msgid "Add Host" msgstr "" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" msgstr "" @@ -555,20 +578,20 @@ msgstr "" msgid "State: <0>worker ({0}), <1>plugins{1}" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "" @@ -590,7 +613,7 @@ msgid "Thumbnail" msgstr "" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" msgstr "" @@ -835,7 +858,7 @@ msgid "Close modal" msgstr "" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" msgstr "" @@ -943,7 +966,7 @@ msgstr "" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:295 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" msgstr "" @@ -999,8 +1022,8 @@ msgid "About" msgstr "" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" @@ -1021,35 +1044,35 @@ msgstr "" msgid "Mark as read" msgstr "" -#: src/components/nav/SearchDrawer.tsx:77 +#: src/components/nav/SearchDrawer.tsx:78 msgid "results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:337 +#: src/components/nav/SearchDrawer.tsx:349 msgid "Enter search text" msgstr "" -#: src/components/nav/SearchDrawer.tsx:364 +#: src/components/nav/SearchDrawer.tsx:376 msgid "Search Options" msgstr "" -#: src/components/nav/SearchDrawer.tsx:367 +#: src/components/nav/SearchDrawer.tsx:379 msgid "Regex search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:377 +#: src/components/nav/SearchDrawer.tsx:389 msgid "Whole word search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:416 +#: src/components/nav/SearchDrawer.tsx:430 msgid "An error occurred during search query" msgstr "" -#: src/components/nav/SearchDrawer.tsx:427 +#: src/components/nav/SearchDrawer.tsx:441 msgid "No results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:430 +#: src/components/nav/SearchDrawer.tsx:444 msgid "No results available for search query" msgstr "" @@ -1068,7 +1091,7 @@ msgstr "" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:832 +#: src/pages/part/PartDetail.tsx:837 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" @@ -1077,11 +1100,11 @@ msgstr "" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:640 +#: src/pages/part/PartDetail.tsx:645 msgid "Parts" msgstr "" @@ -1104,7 +1127,7 @@ msgstr "" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "" @@ -1128,15 +1151,15 @@ msgid "Part Category" msgstr "" #: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 +#: src/pages/Index/Settings/SystemSettings.tsx:165 #: src/pages/part/CategoryDetail.tsx:249 #: src/pages/part/CategoryDetail.tsx:282 -#: src/pages/part/PartDetail.tsx:822 +#: src/pages/part/PartDetail.tsx:827 msgid "Part Categories" msgstr "" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:560 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "" @@ -1156,7 +1179,7 @@ msgstr "" #: src/components/render/ModelType.tsx:82 #: src/pages/stock/LocationDetail.tsx:185 #: src/pages/stock/LocationDetail.tsx:361 -#: src/pages/stock/StockDetail.tsx:552 +#: src/pages/stock/StockDetail.tsx:554 msgid "Stock Locations" msgstr "" @@ -1195,7 +1218,7 @@ msgid "Build Lines" msgstr "" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" msgstr "" @@ -1218,17 +1241,17 @@ msgid "Project Codes" msgstr "" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" msgstr "" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:573 +#: src/pages/part/PartDetail.tsx:579 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" msgstr "" @@ -1243,16 +1266,16 @@ msgstr "" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" msgstr "" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:579 +#: src/pages/part/PartDetail.tsx:586 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" msgstr "" @@ -1266,13 +1289,13 @@ msgid "Sales Order Shipments" msgstr "" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" msgstr "" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" @@ -1290,8 +1313,8 @@ msgstr "" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" msgstr "" @@ -1309,7 +1332,7 @@ msgid "Owners" msgstr "" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" msgstr "" @@ -1353,26 +1376,27 @@ msgstr "" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:493 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 #: src/pages/stock/LocationDetail.tsx:345 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" msgstr "" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:517 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" msgstr "" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:523 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 @@ -1808,16 +1832,12 @@ msgid "Getting started" msgstr "" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Failed to upload image" +#~ msgstr "" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "" +#~ msgid "Notes saved" +#~ msgstr "" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" @@ -1936,42 +1956,46 @@ msgid "Portuguese (Brazilian)" msgstr "" #: src/contexts/LanguageContext.tsx:43 -msgid "Russian" +msgid "Romanian" msgstr "" #: src/contexts/LanguageContext.tsx:44 -msgid "Slovak" +msgid "Russian" msgstr "" #: src/contexts/LanguageContext.tsx:45 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: src/contexts/LanguageContext.tsx:46 -msgid "Swedish" +msgid "Slovenian" msgstr "" #: src/contexts/LanguageContext.tsx:47 -msgid "Thai" +msgid "Swedish" msgstr "" #: src/contexts/LanguageContext.tsx:48 -msgid "Turkish" +msgid "Thai" msgstr "" #: src/contexts/LanguageContext.tsx:49 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: src/contexts/LanguageContext.tsx:50 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: src/contexts/LanguageContext.tsx:51 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: src/contexts/LanguageContext.tsx:52 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" msgstr "" @@ -1985,7 +2009,7 @@ msgstr "" #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" msgstr "" @@ -2116,10 +2140,10 @@ msgstr "" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" msgstr "" @@ -2127,15 +2151,15 @@ msgstr "" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" msgstr "" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" msgstr "" @@ -2356,7 +2380,7 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" @@ -2407,7 +2431,7 @@ msgstr "" #~ msgstr "" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" @@ -2429,8 +2453,8 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:207 -#: src/pages/part/PartDetail.tsx:656 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" msgstr "" @@ -2452,14 +2476,14 @@ msgid "Actions" msgstr "" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" msgstr "" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" msgstr "" @@ -2472,12 +2496,12 @@ msgid "Remove Stock" msgstr "" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:788 msgid "Transfer Stock" msgstr "" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:777 msgid "Count Stock" msgstr "" @@ -2513,23 +2537,14 @@ msgstr "" #~ msgid "You have been logged out" #~ msgstr "" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" msgstr "" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" msgstr "" -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "" - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "" - #: src/functions/auth.tsx:141 #~ msgid "Already logged in" #~ msgstr "" @@ -2542,11 +2557,20 @@ msgstr "" #~ msgid "Found an existing login - welcome back!" #~ msgstr "" -#: src/functions/auth.tsx:153 +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "" + +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "" + +#: src/functions/auth.tsx:195 msgid "Logged In" msgstr "" -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:196 msgid "Successfully logged in" msgstr "" @@ -2680,7 +2704,7 @@ msgstr "" msgid "Welcome to your Dashboard{0}" msgstr "" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." msgstr "" @@ -3134,15 +3158,15 @@ msgstr "" msgid "System settings" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" msgstr "" @@ -3154,50 +3178,50 @@ msgstr "" #~ msgid "Exchange Rates" #~ msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:591 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:527 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:298 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" msgstr "" @@ -3231,8 +3255,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3245,8 +3269,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" @@ -3257,10 +3281,10 @@ msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:134 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3293,10 +3317,10 @@ msgid "Issued By" msgstr "" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:322 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 @@ -3311,8 +3335,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" msgstr "" @@ -3350,7 +3374,7 @@ msgstr "" #~ msgstr "" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:535 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" msgstr "" @@ -3394,34 +3418,34 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:613 +#: src/pages/part/PartDetail.tsx:622 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" msgstr "" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:625 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" msgstr "" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" @@ -3432,17 +3456,17 @@ msgstr "" #~ msgstr "" #: src/pages/build/BuildDetail.tsx:374 -#~ msgid "Print build report" -#~ msgstr "" - -#: src/pages/build/BuildDetail.tsx:378 msgid "Build Order Actions" msgstr "" -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" msgstr "" @@ -3481,7 +3505,7 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" @@ -3489,10 +3513,10 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 @@ -3525,12 +3549,12 @@ msgstr "" msgid "Assigned Stock" msgstr "" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" msgstr "" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" msgstr "" @@ -3560,32 +3584,32 @@ msgid "Manufacturer Part Details" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:487 +#: src/pages/part/PartDetail.tsx:492 msgid "Parameters" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:560 +#: src/pages/part/PartDetail.tsx:566 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" msgstr "" @@ -3601,7 +3625,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" msgstr "" @@ -3635,7 +3659,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" msgstr "" @@ -3725,85 +3749,85 @@ msgstr "" msgid "Category Details" msgstr "" -#: src/pages/part/PartDetail.tsx:140 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" msgstr "" -#: src/pages/part/PartDetail.tsx:147 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" msgstr "" -#: src/pages/part/PartDetail.tsx:153 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:167 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" msgstr "" -#: src/pages/part/PartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" msgstr "" -#: src/pages/part/PartDetail.tsx:181 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" msgstr "" -#: src/pages/part/PartDetail.tsx:188 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" msgstr "" -#: src/pages/part/PartDetail.tsx:195 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" msgstr "" -#: src/pages/part/PartDetail.tsx:213 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:220 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" msgstr "" -#: src/pages/part/PartDetail.tsx:235 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:243 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:250 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" msgstr "" -#: src/pages/part/PartDetail.tsx:257 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" msgstr "" -#: src/pages/part/PartDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -3821,37 +3845,37 @@ msgstr "" msgid "Active" msgstr "" -#: src/pages/part/PartDetail.tsx:271 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" msgstr "" -#: src/pages/part/PartDetail.tsx:276 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" msgstr "" -#: src/pages/part/PartDetail.tsx:281 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" msgstr "" -#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:291 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:296 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" msgstr "" -#: src/pages/part/PartDetail.tsx:309 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" msgstr "" @@ -3860,7 +3884,7 @@ msgstr "" #~ msgid "Edit part" #~ msgstr "" -#: src/pages/part/PartDetail.tsx:314 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" msgstr "" @@ -3872,69 +3896,71 @@ msgstr "" #~ msgid "Delete part" #~ msgstr "" -#: src/pages/part/PartDetail.tsx:329 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" msgstr "" -#: src/pages/part/PartDetail.tsx:340 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" msgstr "" -#: src/pages/part/PartDetail.tsx:375 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" msgstr "" -#: src/pages/part/PartDetail.tsx:410 +#: src/pages/part/PartDetail.tsx:415 msgid "Stocktake By" msgstr "" -#: src/pages/part/PartDetail.tsx:481 +#: src/pages/part/PartDetail.tsx:486 msgid "Part Details" msgstr "" -#: src/pages/part/PartDetail.tsx:507 +#: src/pages/part/PartDetail.tsx:512 msgid "Variants" msgstr "" -#: src/pages/part/PartDetail.tsx:514 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" msgstr "" -#: src/pages/part/PartDetail.tsx:520 +#: src/pages/part/PartDetail.tsx:526 msgid "Bill of Materials" msgstr "" -#: src/pages/part/PartDetail.tsx:534 +#: src/pages/part/PartDetail.tsx:540 msgid "Used In" msgstr "" -#: src/pages/part/PartDetail.tsx:541 +#: src/pages/part/PartDetail.tsx:547 msgid "Part Pricing" msgstr "" -#: src/pages/part/PartDetail.tsx:547 +#: src/pages/part/PartDetail.tsx:553 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" msgstr "" -#: src/pages/part/PartDetail.tsx:586 +#: src/pages/part/PartDetail.tsx:593 msgid "Scheduling" msgstr "" -#: src/pages/part/PartDetail.tsx:596 +#: src/pages/part/PartDetail.tsx:605 msgid "Test Templates" msgstr "" -#: src/pages/part/PartDetail.tsx:607 +#: src/pages/part/PartDetail.tsx:616 msgid "Related Parts" msgstr "" -#: src/pages/part/PartDetail.tsx:662 -#: src/pages/stock/StockDetail.tsx:151 -#: src/pages/stock/StockDetail.tsx:529 +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 @@ -3942,55 +3968,55 @@ msgstr "" msgid "Available" msgstr "" -#: src/pages/part/PartDetail.tsx:668 +#: src/pages/part/PartDetail.tsx:673 msgid "No Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:674 +#: src/pages/part/PartDetail.tsx:679 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" msgstr "" -#: src/pages/part/PartDetail.tsx:680 -#: src/pages/stock/StockDetail.tsx:512 +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" msgstr "" -#: src/pages/part/PartDetail.tsx:699 +#: src/pages/part/PartDetail.tsx:704 msgid "Edit Part" msgstr "" -#: src/pages/part/PartDetail.tsx:706 +#: src/pages/part/PartDetail.tsx:711 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" msgstr "" -#: src/pages/part/PartDetail.tsx:718 +#: src/pages/part/PartDetail.tsx:723 msgid "Delete Part" msgstr "" -#: src/pages/part/PartDetail.tsx:727 +#: src/pages/part/PartDetail.tsx:732 msgid "Deleting this part cannot be reversed" msgstr "" -#: src/pages/part/PartDetail.tsx:765 +#: src/pages/part/PartDetail.tsx:770 #: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" msgstr "" -#: src/pages/part/PartDetail.tsx:773 +#: src/pages/part/PartDetail.tsx:778 msgid "Count part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:784 +#: src/pages/part/PartDetail.tsx:789 msgid "Transfer part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:793 +#: src/pages/part/PartDetail.tsx:798 msgid "Part Actions" msgstr "" @@ -3999,6 +4025,7 @@ msgid "No pricing data found for this part." msgstr "" #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" msgstr "" @@ -4007,54 +4034,32 @@ msgid "Purchase History" msgstr "" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "" - +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 @@ -4063,81 +4068,117 @@ msgstr "" msgid "Total Price" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:25 @@ -4156,33 +4197,33 @@ msgstr "" msgid "Loading pricing data" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "" @@ -4202,23 +4243,23 @@ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" msgstr "" @@ -4229,46 +4270,46 @@ msgstr "" #~ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" msgstr "" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" @@ -4278,17 +4319,17 @@ msgstr "" msgid "Customers" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" msgstr "" @@ -4351,11 +4392,11 @@ msgstr "" msgid "Location Actions" msgstr "" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" msgstr "" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" msgstr "" @@ -4367,15 +4408,15 @@ msgstr "" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" msgstr "" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" msgstr "" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" msgstr "" @@ -4388,31 +4429,31 @@ msgstr "" #~ msgid "Delete stock item" #~ msgstr "" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" msgstr "" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" msgstr "" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" msgstr "" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" msgstr "" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" msgstr "" @@ -4420,34 +4461,34 @@ msgstr "" #~ msgid "Duplicate stock item" #~ msgstr "" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" msgstr "" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" msgstr "" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "" @@ -4538,7 +4579,7 @@ msgstr "" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" msgstr "" @@ -4976,7 +5017,7 @@ msgid "Required Tests" msgstr "" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" msgstr "" @@ -5058,23 +5099,39 @@ msgstr "" msgid "File could not be uploaded" msgstr "" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" msgstr "" @@ -5082,11 +5139,11 @@ msgstr "" #~ msgid "Upload attachment" #~ msgstr "" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" msgstr "" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "" @@ -5468,75 +5525,75 @@ msgstr "" msgid "No Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 msgid "Required" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:80 +#: src/tables/part/PartTestTemplateTable.tsx:85 msgid "Show required tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:95 +#: src/tables/part/PartTestTemplateTable.tsx:100 msgid "Show tests that require an attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:99 +#: src/tables/part/PartTestTemplateTable.tsx:104 msgid "Include Inherited" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:100 +#: src/tables/part/PartTestTemplateTable.tsx:105 msgid "Show tests from inherited templates" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:104 +#: src/tables/part/PartTestTemplateTable.tsx:109 msgid "Has Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:105 +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" msgstr "" @@ -6025,7 +6082,7 @@ msgid "Task ID" msgstr "" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" msgstr "" @@ -6431,95 +6488,95 @@ msgstr "" msgid "Delete stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 msgid "Delete Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:289 +#: src/tables/stock/StockItemTestResultTable.tsx:273 msgid "Test result deleted" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:303 +#: src/tables/stock/StockItemTestResultTable.tsx:287 msgid "Test Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" msgstr "" diff --git a/src/frontend/src/locales/zh-hant/messages.po b/src/frontend/src/locales/zh-hant/messages.po index 507c3bc577..fcff555bf6 100644 --- a/src/frontend/src/locales/zh-hant/messages.po +++ b/src/frontend/src/locales/zh-hant/messages.po @@ -43,18 +43,18 @@ msgstr "" #: src/components/buttons/PrintingActions.tsx:107 #: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 #: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 -#: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 +#: src/components/nav/SearchDrawer.tsx:427 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" msgstr "" @@ -116,15 +116,15 @@ msgstr "" msgid "No" msgstr "" -#: src/components/details/Details.tsx:303 +#: src/components/details/Details.tsx:305 msgid "No name defined" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copied" msgstr "" -#: src/components/details/Details.tsx:340 +#: src/components/details/Details.tsx:342 msgid "Copy" msgstr "" @@ -140,7 +140,7 @@ msgstr "" #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" msgstr "" @@ -202,9 +202,9 @@ msgstr "" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:686 +#: src/pages/part/PartDetail.tsx:691 msgid "Inactive" msgstr "" @@ -243,6 +243,35 @@ msgstr "" msgid "Virtual" msgstr "" +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "" + #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" msgstr "" @@ -329,11 +358,6 @@ msgstr "" msgid "Form Error" msgstr "" -#: src/components/forms/ApiForm.tsx:430 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "" - #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" #~ msgstr "" @@ -374,12 +398,12 @@ msgstr "" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." msgstr "" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" msgstr "" @@ -503,7 +527,7 @@ msgstr "" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:127 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -527,7 +551,6 @@ msgid "Add Host" msgstr "" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" msgstr "" @@ -555,20 +578,20 @@ msgstr "" msgid "State: <0>worker ({0}), <1>plugins{1}" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" msgstr "" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" msgstr "" @@ -590,7 +613,7 @@ msgid "Thumbnail" msgstr "" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" msgstr "" @@ -835,7 +858,7 @@ msgid "Close modal" msgstr "" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" msgstr "" @@ -943,7 +966,7 @@ msgstr "" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:295 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" msgstr "" @@ -999,8 +1022,8 @@ msgid "About" msgstr "" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" @@ -1021,35 +1044,35 @@ msgstr "" msgid "Mark as read" msgstr "" -#: src/components/nav/SearchDrawer.tsx:77 +#: src/components/nav/SearchDrawer.tsx:78 msgid "results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:337 +#: src/components/nav/SearchDrawer.tsx:349 msgid "Enter search text" msgstr "" -#: src/components/nav/SearchDrawer.tsx:364 +#: src/components/nav/SearchDrawer.tsx:376 msgid "Search Options" msgstr "" -#: src/components/nav/SearchDrawer.tsx:367 +#: src/components/nav/SearchDrawer.tsx:379 msgid "Regex search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:377 +#: src/components/nav/SearchDrawer.tsx:389 msgid "Whole word search" msgstr "" -#: src/components/nav/SearchDrawer.tsx:416 +#: src/components/nav/SearchDrawer.tsx:430 msgid "An error occurred during search query" msgstr "" -#: src/components/nav/SearchDrawer.tsx:427 +#: src/components/nav/SearchDrawer.tsx:441 msgid "No results" msgstr "" -#: src/components/nav/SearchDrawer.tsx:430 +#: src/components/nav/SearchDrawer.tsx:444 msgid "No results available for search query" msgstr "" @@ -1068,7 +1091,7 @@ msgstr "" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:832 +#: src/pages/part/PartDetail.tsx:837 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" @@ -1077,11 +1100,11 @@ msgstr "" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:640 +#: src/pages/part/PartDetail.tsx:645 msgid "Parts" msgstr "" @@ -1104,7 +1127,7 @@ msgstr "" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" msgstr "" @@ -1128,15 +1151,15 @@ msgid "Part Category" msgstr "" #: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 +#: src/pages/Index/Settings/SystemSettings.tsx:165 #: src/pages/part/CategoryDetail.tsx:249 #: src/pages/part/CategoryDetail.tsx:282 -#: src/pages/part/PartDetail.tsx:822 +#: src/pages/part/PartDetail.tsx:827 msgid "Part Categories" msgstr "" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:560 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" msgstr "" @@ -1156,7 +1179,7 @@ msgstr "" #: src/components/render/ModelType.tsx:82 #: src/pages/stock/LocationDetail.tsx:185 #: src/pages/stock/LocationDetail.tsx:361 -#: src/pages/stock/StockDetail.tsx:552 +#: src/pages/stock/StockDetail.tsx:554 msgid "Stock Locations" msgstr "" @@ -1195,7 +1218,7 @@ msgid "Build Lines" msgstr "" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" msgstr "" @@ -1218,17 +1241,17 @@ msgid "Project Codes" msgstr "" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" msgstr "" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:573 +#: src/pages/part/PartDetail.tsx:579 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" msgstr "" @@ -1243,16 +1266,16 @@ msgstr "" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" msgstr "" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:579 +#: src/pages/part/PartDetail.tsx:586 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" msgstr "" @@ -1266,13 +1289,13 @@ msgid "Sales Order Shipments" msgstr "" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" msgstr "" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" @@ -1290,8 +1313,8 @@ msgstr "" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" msgstr "" @@ -1309,7 +1332,7 @@ msgid "Owners" msgstr "" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" msgstr "" @@ -1353,26 +1376,27 @@ msgstr "" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:493 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:498 #: src/pages/stock/LocationDetail.tsx:345 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" msgstr "" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:517 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" msgstr "" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:523 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 @@ -1808,16 +1832,12 @@ msgid "Getting started" msgstr "" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Failed to upload image" +#~ msgstr "" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "" +#~ msgid "Notes saved" +#~ msgstr "" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" @@ -1936,42 +1956,46 @@ msgid "Portuguese (Brazilian)" msgstr "" #: src/contexts/LanguageContext.tsx:43 -msgid "Russian" +msgid "Romanian" msgstr "" #: src/contexts/LanguageContext.tsx:44 -msgid "Slovak" +msgid "Russian" msgstr "" #: src/contexts/LanguageContext.tsx:45 -msgid "Slovenian" +msgid "Slovak" msgstr "" #: src/contexts/LanguageContext.tsx:46 -msgid "Swedish" +msgid "Slovenian" msgstr "" #: src/contexts/LanguageContext.tsx:47 -msgid "Thai" +msgid "Swedish" msgstr "" #: src/contexts/LanguageContext.tsx:48 -msgid "Turkish" +msgid "Thai" msgstr "" #: src/contexts/LanguageContext.tsx:49 -msgid "Ukrainian" +msgid "Turkish" msgstr "" #: src/contexts/LanguageContext.tsx:50 -msgid "Vietnamese" +msgid "Ukrainian" msgstr "" #: src/contexts/LanguageContext.tsx:51 -msgid "Chinese (Simplified)" +msgid "Vietnamese" msgstr "" #: src/contexts/LanguageContext.tsx:52 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" msgstr "" @@ -1985,7 +2009,7 @@ msgstr "" #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" msgstr "" @@ -2116,10 +2140,10 @@ msgstr "" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" msgstr "" @@ -2127,15 +2151,15 @@ msgstr "" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" msgstr "" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" msgstr "" @@ -2356,7 +2380,7 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" @@ -2407,7 +2431,7 @@ msgstr "" #~ msgstr "" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" @@ -2429,8 +2453,8 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:207 -#: src/pages/part/PartDetail.tsx:656 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:661 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" msgstr "" @@ -2452,14 +2476,14 @@ msgid "Actions" msgstr "" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" msgstr "" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" msgstr "" @@ -2472,12 +2496,12 @@ msgid "Remove Stock" msgstr "" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:788 msgid "Transfer Stock" msgstr "" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:777 msgid "Count Stock" msgstr "" @@ -2513,23 +2537,14 @@ msgstr "" #~ msgid "You have been logged out" #~ msgstr "" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" msgstr "" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" msgstr "" -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "" - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "" - #: src/functions/auth.tsx:141 #~ msgid "Already logged in" #~ msgstr "" @@ -2542,11 +2557,20 @@ msgstr "" #~ msgid "Found an existing login - welcome back!" #~ msgstr "" -#: src/functions/auth.tsx:153 +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "" + +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "" + +#: src/functions/auth.tsx:195 msgid "Logged In" msgstr "" -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:196 msgid "Successfully logged in" msgstr "" @@ -2680,7 +2704,7 @@ msgstr "" msgid "Welcome to your Dashboard{0}" msgstr "" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." msgstr "" @@ -3134,15 +3158,15 @@ msgstr "" msgid "System settings" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" msgstr "" @@ -3154,50 +3178,50 @@ msgstr "" #~ msgid "Exchange Rates" #~ msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:591 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:599 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:527 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:533 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" msgstr "" -#: src/pages/Index/Settings/SystemSettings.tsx:298 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" msgstr "" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" msgstr "" @@ -3231,8 +3255,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3245,8 +3269,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" @@ -3257,10 +3281,10 @@ msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:134 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3293,10 +3317,10 @@ msgid "Issued By" msgstr "" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:322 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 @@ -3311,8 +3335,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" msgstr "" @@ -3350,7 +3374,7 @@ msgstr "" #~ msgstr "" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:535 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" msgstr "" @@ -3394,34 +3418,34 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:613 +#: src/pages/part/PartDetail.tsx:622 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" msgstr "" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:625 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:630 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" msgstr "" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" msgstr "" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" @@ -3432,17 +3456,17 @@ msgstr "" #~ msgstr "" #: src/pages/build/BuildDetail.tsx:374 -#~ msgid "Print build report" -#~ msgstr "" - -#: src/pages/build/BuildDetail.tsx:378 msgid "Build Order Actions" msgstr "" -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:374 +#~ msgid "Print build report" +#~ msgstr "" + +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" msgstr "" @@ -3481,7 +3505,7 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" @@ -3489,10 +3513,10 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 @@ -3525,12 +3549,12 @@ msgstr "" msgid "Assigned Stock" msgstr "" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" msgstr "" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" msgstr "" @@ -3560,32 +3584,32 @@ msgid "Manufacturer Part Details" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:487 +#: src/pages/part/PartDetail.tsx:492 msgid "Parameters" msgstr "" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:560 +#: src/pages/part/PartDetail.tsx:566 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" msgstr "" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" msgstr "" @@ -3601,7 +3625,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" msgstr "" @@ -3635,7 +3659,7 @@ msgstr "" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" msgstr "" @@ -3725,85 +3749,85 @@ msgstr "" msgid "Category Details" msgstr "" -#: src/pages/part/PartDetail.tsx:140 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" msgstr "" -#: src/pages/part/PartDetail.tsx:147 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" msgstr "" -#: src/pages/part/PartDetail.tsx:153 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" msgstr "" -#: src/pages/part/PartDetail.tsx:167 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" msgstr "" -#: src/pages/part/PartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" msgstr "" -#: src/pages/part/PartDetail.tsx:181 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" msgstr "" -#: src/pages/part/PartDetail.tsx:188 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" msgstr "" -#: src/pages/part/PartDetail.tsx:195 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" msgstr "" -#: src/pages/part/PartDetail.tsx:213 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:220 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" msgstr "" -#: src/pages/part/PartDetail.tsx:235 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:243 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" msgstr "" -#: src/pages/part/PartDetail.tsx:250 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" msgstr "" -#: src/pages/part/PartDetail.tsx:257 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" msgstr "" -#: src/pages/part/PartDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -3821,37 +3845,37 @@ msgstr "" msgid "Active" msgstr "" -#: src/pages/part/PartDetail.tsx:271 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" msgstr "" -#: src/pages/part/PartDetail.tsx:276 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" msgstr "" -#: src/pages/part/PartDetail.tsx:281 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" msgstr "" -#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:291 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:296 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" msgstr "" -#: src/pages/part/PartDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" msgstr "" -#: src/pages/part/PartDetail.tsx:309 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" msgstr "" @@ -3860,7 +3884,7 @@ msgstr "" #~ msgid "Edit part" #~ msgstr "" -#: src/pages/part/PartDetail.tsx:314 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" msgstr "" @@ -3872,69 +3896,71 @@ msgstr "" #~ msgid "Delete part" #~ msgstr "" -#: src/pages/part/PartDetail.tsx:329 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" msgstr "" -#: src/pages/part/PartDetail.tsx:340 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" msgstr "" -#: src/pages/part/PartDetail.tsx:375 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:380 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" msgstr "" -#: src/pages/part/PartDetail.tsx:410 +#: src/pages/part/PartDetail.tsx:415 msgid "Stocktake By" msgstr "" -#: src/pages/part/PartDetail.tsx:481 +#: src/pages/part/PartDetail.tsx:486 msgid "Part Details" msgstr "" -#: src/pages/part/PartDetail.tsx:507 +#: src/pages/part/PartDetail.tsx:512 msgid "Variants" msgstr "" -#: src/pages/part/PartDetail.tsx:514 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:519 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" msgstr "" -#: src/pages/part/PartDetail.tsx:520 +#: src/pages/part/PartDetail.tsx:526 msgid "Bill of Materials" msgstr "" -#: src/pages/part/PartDetail.tsx:534 +#: src/pages/part/PartDetail.tsx:540 msgid "Used In" msgstr "" -#: src/pages/part/PartDetail.tsx:541 +#: src/pages/part/PartDetail.tsx:547 msgid "Part Pricing" msgstr "" -#: src/pages/part/PartDetail.tsx:547 +#: src/pages/part/PartDetail.tsx:553 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" msgstr "" -#: src/pages/part/PartDetail.tsx:586 +#: src/pages/part/PartDetail.tsx:593 msgid "Scheduling" msgstr "" -#: src/pages/part/PartDetail.tsx:596 +#: src/pages/part/PartDetail.tsx:605 msgid "Test Templates" msgstr "" -#: src/pages/part/PartDetail.tsx:607 +#: src/pages/part/PartDetail.tsx:616 msgid "Related Parts" msgstr "" -#: src/pages/part/PartDetail.tsx:662 -#: src/pages/stock/StockDetail.tsx:151 -#: src/pages/stock/StockDetail.tsx:529 +#: src/pages/part/PartDetail.tsx:667 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 @@ -3942,55 +3968,55 @@ msgstr "" msgid "Available" msgstr "" -#: src/pages/part/PartDetail.tsx:668 +#: src/pages/part/PartDetail.tsx:673 msgid "No Stock" msgstr "" -#: src/pages/part/PartDetail.tsx:674 +#: src/pages/part/PartDetail.tsx:679 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" msgstr "" -#: src/pages/part/PartDetail.tsx:680 -#: src/pages/stock/StockDetail.tsx:512 +#: src/pages/part/PartDetail.tsx:685 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" msgstr "" -#: src/pages/part/PartDetail.tsx:699 +#: src/pages/part/PartDetail.tsx:704 msgid "Edit Part" msgstr "" -#: src/pages/part/PartDetail.tsx:706 +#: src/pages/part/PartDetail.tsx:711 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" msgstr "" -#: src/pages/part/PartDetail.tsx:718 +#: src/pages/part/PartDetail.tsx:723 msgid "Delete Part" msgstr "" -#: src/pages/part/PartDetail.tsx:727 +#: src/pages/part/PartDetail.tsx:732 msgid "Deleting this part cannot be reversed" msgstr "" -#: src/pages/part/PartDetail.tsx:765 +#: src/pages/part/PartDetail.tsx:770 #: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" msgstr "" -#: src/pages/part/PartDetail.tsx:773 +#: src/pages/part/PartDetail.tsx:778 msgid "Count part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:784 +#: src/pages/part/PartDetail.tsx:789 msgid "Transfer part stock" msgstr "" -#: src/pages/part/PartDetail.tsx:793 +#: src/pages/part/PartDetail.tsx:798 msgid "Part Actions" msgstr "" @@ -3999,6 +4025,7 @@ msgid "No pricing data found for this part." msgstr "" #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" msgstr "" @@ -4007,54 +4034,32 @@ msgid "Purchase History" msgstr "" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" msgstr "" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "" - +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 @@ -4063,81 +4068,117 @@ msgstr "" msgid "Total Price" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" msgstr "" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:25 @@ -4156,33 +4197,33 @@ msgstr "" msgid "Loading pricing data" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "" @@ -4202,23 +4243,23 @@ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" msgstr "" @@ -4229,46 +4270,46 @@ msgstr "" #~ msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" msgstr "" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" @@ -4278,17 +4319,17 @@ msgstr "" msgid "Customers" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" msgstr "" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" msgstr "" @@ -4351,11 +4392,11 @@ msgstr "" msgid "Location Actions" msgstr "" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" msgstr "" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" msgstr "" @@ -4367,15 +4408,15 @@ msgstr "" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" msgstr "" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" msgstr "" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" msgstr "" @@ -4388,31 +4429,31 @@ msgstr "" #~ msgid "Delete stock item" #~ msgstr "" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" msgstr "" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" msgstr "" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" msgstr "" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" msgstr "" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" msgstr "" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" msgstr "" @@ -4420,34 +4461,34 @@ msgstr "" #~ msgid "Duplicate stock item" #~ msgstr "" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" msgstr "" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" msgstr "" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" msgstr "" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "" @@ -4538,7 +4579,7 @@ msgstr "" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" msgstr "" @@ -4976,7 +5017,7 @@ msgid "Required Tests" msgstr "" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" msgstr "" @@ -5058,23 +5099,39 @@ msgstr "" msgid "File could not be uploaded" msgstr "" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" msgstr "" @@ -5082,11 +5139,11 @@ msgstr "" #~ msgid "Upload attachment" #~ msgstr "" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" msgstr "" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "" @@ -5468,75 +5525,75 @@ msgstr "" msgid "No Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 msgid "Required" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:80 +#: src/tables/part/PartTestTemplateTable.tsx:85 msgid "Show required tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:95 +#: src/tables/part/PartTestTemplateTable.tsx:100 msgid "Show tests that require an attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:99 +#: src/tables/part/PartTestTemplateTable.tsx:104 msgid "Include Inherited" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:100 +#: src/tables/part/PartTestTemplateTable.tsx:105 msgid "Show tests from inherited templates" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:104 +#: src/tables/part/PartTestTemplateTable.tsx:109 msgid "Has Results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:105 +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" msgstr "" @@ -6025,7 +6082,7 @@ msgid "Task ID" msgstr "" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" msgstr "" @@ -6431,95 +6488,95 @@ msgstr "" msgid "Delete stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 msgid "Delete Test Result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:289 +#: src/tables/stock/StockItemTestResultTable.tsx:273 msgid "Test result deleted" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:303 +#: src/tables/stock/StockItemTestResultTable.tsx:287 msgid "Test Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" msgstr "" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" msgstr "" diff --git a/src/frontend/src/locales/zh/messages.po b/src/frontend/src/locales/zh/messages.po index 117bb9900c..b333081cf8 100644 --- a/src/frontend/src/locales/zh/messages.po +++ b/src/frontend/src/locales/zh/messages.po @@ -8,146 +8,146 @@ msgstr "" "Language: zh\n" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-05-23 11:39\n" +"PO-Revision-Date: 2024-06-20 04:52\n" "Last-Translator: \n" -"Language-Team: Chinese Traditional\n" +"Language-Team: Chinese Simplified\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Crowdin-Project: inventree\n" "X-Crowdin-Project-ID: 452300\n" -"X-Crowdin-Language: zh-TW\n" +"X-Crowdin-Language: zh-CN\n" "X-Crowdin-File: /[inventree.InvenTree] l10/src/frontend/src/locales/en/messages.po\n" "X-Crowdin-File-ID: 205\n" #: src/components/Boundary.tsx:12 msgid "Error rendering component" -msgstr "" +msgstr "渲染组件出错" #: src/components/Boundary.tsx:14 msgid "An error occurred while rendering this component. Refer to the console for more information." -msgstr "" +msgstr "渲染此组件时发生错误。请参阅控制台获取更多信息。" #: src/components/DashboardItemProxy.tsx:34 msgid "Title" -msgstr "" +msgstr "标题" #: src/components/buttons/AdminButton.tsx:83 msgid "Open in admin interface" -msgstr "" +msgstr "在管理员界面打开" #: src/components/buttons/CopyButton.tsx:18 msgid "Copy to clipboard" -msgstr "" +msgstr "复制到剪贴板" #: src/components/buttons/PrintingActions.tsx:95 msgid "Print Label" -msgstr "" +msgstr "打印标签" #: src/components/buttons/PrintingActions.tsx:101 msgid "Label printing completed successfully" -msgstr "" +msgstr "标签打印成功" -#: src/components/buttons/PrintingActions.tsx:106 -#: src/components/buttons/PrintingActions.tsx:143 -#: src/components/forms/ApiForm.tsx:504 +#: src/components/buttons/PrintingActions.tsx:107 +#: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:160 +#: src/components/forms/ApiForm.tsx:506 #: src/components/forms/fields/ApiFormField.tsx:295 #: src/components/modals/LicenseModal.tsx:75 #: src/components/nav/SearchDrawer.tsx:413 -#: src/components/widgets/MarkdownEditor.tsx:107 -#: src/components/widgets/MarkdownEditor.tsx:153 #: src/pages/ErrorPage.tsx:12 #: src/pages/ErrorPage.tsx:25 #: src/pages/part/PartPricingPanel.tsx:71 #: src/tables/InvenTreeTable.tsx:451 #: src/tables/InvenTreeTable.tsx:531 -#: src/tables/stock/StockItemTestResultTable.tsx:310 +#: src/tables/stock/StockItemTestResultTable.tsx:294 msgid "Error" -msgstr "" +msgstr "错误" -#: src/components/buttons/PrintingActions.tsx:107 +#: src/components/buttons/PrintingActions.tsx:108 msgid "The label could not be generated" -msgstr "" +msgstr "无法生成此标签" -#: src/components/buttons/PrintingActions.tsx:122 +#: src/components/buttons/PrintingActions.tsx:123 msgid "Print Report" -msgstr "" +msgstr "打印报告" -#: src/components/buttons/PrintingActions.tsx:138 +#: src/components/buttons/PrintingActions.tsx:139 msgid "Report printing completed successfully" -msgstr "" +msgstr "报告打印成功" -#: src/components/buttons/PrintingActions.tsx:144 +#: src/components/buttons/PrintingActions.tsx:145 msgid "The report could not be generated" -msgstr "" +msgstr "无法生成此报告" -#: src/components/buttons/PrintingActions.tsx:171 +#: src/components/buttons/PrintingActions.tsx:173 msgid "Printing Actions" -msgstr "" +msgstr "打印操作" -#: src/components/buttons/PrintingActions.tsx:176 +#: src/components/buttons/PrintingActions.tsx:178 msgid "Print Labels" -msgstr "" +msgstr "打印标签" -#: src/components/buttons/PrintingActions.tsx:182 +#: src/components/buttons/PrintingActions.tsx:184 msgid "Print Reports" -msgstr "" +msgstr "列印報告" #: src/components/buttons/ScanButton.tsx:15 msgid "Scan QR code" -msgstr "掃描 QR Code" +msgstr "扫描二维码" #: src/components/buttons/ScanButton.tsx:20 msgid "Open QR code scanner" -msgstr "" +msgstr "打开二维码扫描器" #: src/components/buttons/SpotlightButton.tsx:14 msgid "Open spotlight" -msgstr "" +msgstr "打开聚焦" #: src/components/buttons/YesNoButton.tsx:16 msgid "Pass" -msgstr "" +msgstr "通过" #: src/components/buttons/YesNoButton.tsx:17 msgid "Fail" -msgstr "" +msgstr "失效" #: src/components/buttons/YesNoButton.tsx:32 #: src/tables/Filter.tsx:51 msgid "Yes" -msgstr "" +msgstr "是" #: src/components/buttons/YesNoButton.tsx:32 #: src/tables/Filter.tsx:52 msgid "No" -msgstr "" +msgstr "否" #: src/components/details/Details.tsx:303 msgid "No name defined" -msgstr "" +msgstr "未定义名称" #: src/components/details/Details.tsx:340 msgid "Copied" -msgstr "" +msgstr "已复制" #: src/components/details/Details.tsx:340 msgid "Copy" -msgstr "" +msgstr "复制" #: src/components/details/DetailsImage.tsx:65 msgid "Remove Image" -msgstr "" +msgstr "删除图片" #: src/components/details/DetailsImage.tsx:68 msgid "Remove the associated image from this item?" -msgstr "" +msgstr "删除与此项关联的图片?" #: src/components/details/DetailsImage.tsx:71 #: src/forms/StockForms.tsx:483 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 -#: src/pages/stock/StockDetail.tsx:462 +#: src/pages/stock/StockDetail.tsx:464 msgid "Remove" -msgstr "" +msgstr "移除" #: src/components/details/DetailsImage.tsx:71 #: src/components/editors/TemplateEditor/TemplateEditor.tsx:158 @@ -164,93 +164,122 @@ msgstr "取消" #: src/components/details/DetailsImage.tsx:97 msgid "Drag and drop to upload" -msgstr "拖曳並上傳" +msgstr "拖拽上传" #: src/components/details/DetailsImage.tsx:100 msgid "Click to select file(s)" -msgstr "" +msgstr "点击选择文件" #: src/components/details/DetailsImage.tsx:224 msgid "Clear" -msgstr "" +msgstr "清除" #: src/components/details/DetailsImage.tsx:227 -#: src/components/forms/ApiForm.tsx:571 +#: src/components/forms/ApiForm.tsx:573 #: src/contexts/ThemeContext.tsx:43 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:56 msgid "Submit" -msgstr "" +msgstr "提交" #: src/components/details/DetailsImage.tsx:267 msgid "Select from existing images" -msgstr "" +msgstr "从现有图片中选择" #: src/components/details/DetailsImage.tsx:275 msgid "Select Image" -msgstr "" +msgstr "选择图片" #: src/components/details/DetailsImage.tsx:287 msgid "Upload new image" -msgstr "上傳新圖片" +msgstr "上传新图片" #: src/components/details/DetailsImage.tsx:294 msgid "Upload Image" -msgstr "上傳圖片" +msgstr "上传图片" #: src/components/details/DetailsImage.tsx:307 msgid "Delete image" -msgstr "刪除圖片" +msgstr "删除图片" #: src/components/details/PartIcons.tsx:28 msgid "Part is not active" -msgstr "" +msgstr "零件未激活" #: src/components/details/PartIcons.tsx:34 #: src/components/render/Plugin.tsx:17 -#: src/pages/company/CompanyDetail.tsx:310 +#: src/pages/company/CompanyDetail.tsx:313 #: src/pages/company/SupplierPartDetail.tsx:305 -#: src/pages/part/PartDetail.tsx:685 +#: src/pages/part/PartDetail.tsx:687 msgid "Inactive" -msgstr "" +msgstr "未激活" #: src/components/details/PartIcons.tsx:41 msgid "Part is a template part (variants can be made from this part)" -msgstr "" +msgstr "这是一个零件模板 (零件变体可以从中生成)" #: src/components/details/PartIcons.tsx:47 msgid "Part can be assembled from other parts" -msgstr "" +msgstr "此零件可以由另外一个零件装配" #: src/components/details/PartIcons.tsx:53 msgid "Part can be used in assemblies" -msgstr "" +msgstr "零件可以用于装配体" #: src/components/details/PartIcons.tsx:59 msgid "Part stock is tracked by serial number" -msgstr "" +msgstr "通过序列号跟踪零件库存" #: src/components/details/PartIcons.tsx:65 msgid "Part can be purchased from external suppliers" -msgstr "" +msgstr "零件可以从外部供应商购买" #: src/components/details/PartIcons.tsx:71 msgid "Part can be sold to customers" -msgstr "" +msgstr "零件可以销售给客户" #: src/components/details/PartIcons.tsx:76 msgid "Part is virtual (not a physical part)" -msgstr "" +msgstr "零件是虚拟的 (不是实体零件)" #: src/components/details/PartIcons.tsx:82 #: src/tables/part/PartTable.tsx:234 #: src/tables/part/PartTable.tsx:238 #: src/tables/part/PartVariantTable.tsx:25 msgid "Virtual" -msgstr "" +msgstr "虚拟" + +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "图片上传失败" + +#: src/components/editors/NotesEditor.tsx:151 +#: src/components/forms/ApiForm.tsx:430 +msgid "Success" +msgstr "操作成功" + +#: src/components/editors/NotesEditor.tsx:152 +msgid "Notes saved successfully" +msgstr "备注保存成功" + +#: src/components/editors/NotesEditor.tsx:161 +msgid "Failed to save notes" +msgstr "保存记事失败" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Preview Notes" +msgstr "预览备注" + +#: src/components/editors/NotesEditor.tsx:193 +msgid "Edit Notes" +msgstr "编辑备注" + +#: src/components/editors/NotesEditor.tsx:207 +msgid "Save Notes" +msgstr "保存备注" #: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 msgid "Code" -msgstr "" +msgstr "代码" #: src/components/editors/TemplateEditor/PdfPreview/PdfPreview.tsx:44 #~ msgid "Failed to parse error response from server." @@ -258,28 +287,28 @@ msgstr "" #: src/components/editors/TemplateEditor/PdfPreview/PdfPreview.tsx:81 msgid "Preview not available, click \"Reload Preview\"." -msgstr "" +msgstr "预览不可用,点击\"重新加载预览\"。" #: src/components/editors/TemplateEditor/PdfPreview/index.tsx:9 msgid "PDF Preview" -msgstr "" +msgstr "PDF 预览" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:104 msgid "Error loading template" -msgstr "" +msgstr "加载模板时出错" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:116 msgid "Error saving template" -msgstr "" +msgstr "保存模板时出错" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:146 #: src/components/editors/TemplateEditor/TemplateEditor.tsx:270 msgid "Save & Reload Preview" -msgstr "" +msgstr "保存并重新加载预览" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:151 msgid "Are you sure you want to Save & Reload the preview?" -msgstr "" +msgstr "您确定要保存并重新加载预览吗?" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:151 #~ msgid "Save & Reload preview?" @@ -287,27 +316,27 @@ msgstr "" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:153 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?" -msgstr "" +msgstr "要渲染预览效果,需要在服务器上用您的修改替换当前模板,如果标签正在使用中,可能会损坏标签。您想继续吗?" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:157 msgid "Save & Reload" -msgstr "" +msgstr "保存并重新加载" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:189 msgid "Preview updated" -msgstr "" +msgstr "预览已更新" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:190 msgid "The preview has been updated successfully." -msgstr "" +msgstr "预览已成功更新。" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:262 msgid "Reload preview" -msgstr "" +msgstr "重新加载预览" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:263 msgid "Use the currently stored template from the server" -msgstr "" +msgstr "使用当前存储服务器的模板" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:263 #~ msgid "Save & Reload preview" @@ -315,7 +344,7 @@ msgstr "" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:271 msgid "Save the current template and reload the preview" -msgstr "" +msgstr "保存当前模板并重新加载预览" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:322 #~ msgid "to preview" @@ -323,32 +352,27 @@ msgstr "" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:329 msgid "Select instance to preview" -msgstr "" +msgstr "选择预览实例" #: src/components/editors/TemplateEditor/TemplateEditor.tsx:373 msgid "Error rendering template" -msgstr "" +msgstr "渲染模板时出错" -#: src/components/forms/ApiForm.tsx:148 +#: src/components/forms/ApiForm.tsx:149 #: src/functions/forms.tsx:259 msgid "Form Error" -msgstr "" - -#: src/components/forms/ApiForm.tsx:428 -#: src/components/widgets/MarkdownEditor.tsx:145 -msgid "Success" -msgstr "" +msgstr "表单错误" #: src/components/forms/ApiForm.tsx:487 #~ msgid "Form Errors Exist" #~ msgstr "Form Errors Exist" -#: src/components/forms/ApiForm.tsx:609 +#: src/components/forms/ApiForm.tsx:611 #: src/tables/plugin/PluginListTable.tsx:388 msgid "Update" -msgstr "" +msgstr "更新" -#: src/components/forms/ApiForm.tsx:629 +#: src/components/forms/ApiForm.tsx:631 #: src/components/items/ActionDropdown.tsx:210 #: src/functions/forms.tsx:299 #: src/hooks/UseForm.tsx:122 @@ -358,7 +382,7 @@ msgstr "" #: src/tables/RowActions.tsx:71 #: src/tables/plugin/PluginListTable.tsx:420 msgid "Delete" -msgstr "" +msgstr "删除" #: src/components/forms/AuthenticationForm.tsx:48 #: src/components/forms/AuthenticationForm.tsx:74 @@ -368,11 +392,11 @@ msgstr "" #: src/components/forms/AuthenticationForm.tsx:51 msgid "Login successful" -msgstr "" +msgstr "登录成功" #: src/components/forms/AuthenticationForm.tsx:52 msgid "Logged in successfully" -msgstr "" +msgstr "登录成功" #: src/components/forms/AuthenticationForm.tsx:52 #~ msgid "Welcome back!" @@ -384,14 +408,14 @@ msgstr "" #: src/components/forms/AuthenticationForm.tsx:58 msgid "Login failed" -msgstr "" +msgstr "登录失败" #: src/components/forms/AuthenticationForm.tsx:59 #: src/components/forms/AuthenticationForm.tsx:76 #: src/components/forms/AuthenticationForm.tsx:211 -#: src/functions/auth.tsx:123 +#: src/functions/auth.tsx:165 msgid "Check your input and try again." -msgstr "" +msgstr "请检查您的输入并重试。" #: src/components/forms/AuthenticationForm.tsx:65 #: src/functions/auth.tsx:74 @@ -399,47 +423,47 @@ msgstr "" #~ msgstr "Mail delivery successfull" #: src/components/forms/AuthenticationForm.tsx:70 -#: src/functions/auth.tsx:114 +#: src/functions/auth.tsx:156 msgid "Mail delivery successful" -msgstr "" +msgstr "邮件发送成功" #: src/components/forms/AuthenticationForm.tsx:71 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too." -msgstr "" +msgstr "请检查您的收件箱以查看登录链接。如果您有账户,您将收到登录链接。如未收到,请检查邮箱垃圾箱。" #: src/components/forms/AuthenticationForm.tsx:75 msgid "Mail delivery failed" -msgstr "" +msgstr "邮件发送失败" #: src/components/forms/AuthenticationForm.tsx:95 msgid "Or continue with other methods" -msgstr "" +msgstr "或继续使用其他方法" #: src/components/forms/AuthenticationForm.tsx:106 #: src/components/forms/AuthenticationForm.tsx:227 msgid "Username" -msgstr "使用者帳號" +msgstr "用户名" #: src/components/forms/AuthenticationForm.tsx:107 #: src/components/forms/AuthenticationForm.tsx:228 msgid "Your username" -msgstr "" +msgstr "你的用户名" #: src/components/forms/AuthenticationForm.tsx:112 #: src/components/forms/AuthenticationForm.tsx:240 #: src/pages/Auth/Set-Password.tsx:106 msgid "Password" -msgstr "密碼" +msgstr "密码" #: src/components/forms/AuthenticationForm.tsx:113 #: src/components/forms/AuthenticationForm.tsx:241 msgid "Your password" -msgstr "" +msgstr "您的密码" #: src/components/forms/AuthenticationForm.tsx:125 #: src/pages/Auth/Reset.tsx:26 msgid "Reset password" -msgstr "" +msgstr "重置密码" #: src/components/forms/AuthenticationForm.tsx:131 #~ msgid "Log in" @@ -450,13 +474,13 @@ msgstr "" #: src/pages/Auth/Reset.tsx:31 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49 msgid "Email" -msgstr "" +msgstr "邮箱" #: src/components/forms/AuthenticationForm.tsx:135 #: src/pages/Auth/Reset.tsx:32 #: src/pages/Auth/Set-Password.tsx:107 msgid "We will send you a link to login - if you are registered" -msgstr "" +msgstr "我们将向您发送登录链接 - 如果您已注册" #: src/components/forms/AuthenticationForm.tsx:136 #~ msgid "I will use username and password" @@ -464,70 +488,70 @@ msgstr "" #: src/components/forms/AuthenticationForm.tsx:151 msgid "Send me an email" -msgstr "" +msgstr "给我发一封电子邮件" #: src/components/forms/AuthenticationForm.tsx:153 msgid "Use username and password" -msgstr "" +msgstr "使用用户名和密码" #: src/components/forms/AuthenticationForm.tsx:162 msgid "Log In" -msgstr "" +msgstr "登录" #: src/components/forms/AuthenticationForm.tsx:164 msgid "Send Email" -msgstr "" +msgstr "发送电子邮件" #: src/components/forms/AuthenticationForm.tsx:193 msgid "Registration successful" -msgstr "註冊成功" +msgstr "注册成功" #: src/components/forms/AuthenticationForm.tsx:194 msgid "Please confirm your email address to complete the registration" -msgstr "" +msgstr "请确认您的电子邮件地址以完成注册" #: src/components/forms/AuthenticationForm.tsx:210 msgid "Input error" -msgstr "" +msgstr "输入错误" #: src/components/forms/AuthenticationForm.tsx:234 msgid "This will be used for a confirmation" -msgstr "" +msgstr "此将用于确认" #: src/components/forms/AuthenticationForm.tsx:246 msgid "Password repeat" -msgstr "" +msgstr "密码重复" #: src/components/forms/AuthenticationForm.tsx:247 msgid "Repeat password" -msgstr "" +msgstr "再次输入密码" #: src/components/forms/AuthenticationForm.tsx:259 #: src/components/forms/AuthenticationForm.tsx:304 msgid "Register" -msgstr "" +msgstr "注册" #: src/components/forms/AuthenticationForm.tsx:265 msgid "Or use SSO" -msgstr "" +msgstr "或使用 SSO" #: src/components/forms/AuthenticationForm.tsx:296 msgid "Don't have an account?" -msgstr "" +msgstr "没有帐户?" #: src/components/forms/AuthenticationForm.tsx:315 msgid "Go back to login" -msgstr "" +msgstr "返回登录界面" #: src/components/forms/HostOptionsForm.tsx:36 #: src/components/forms/HostOptionsForm.tsx:67 msgid "Host" -msgstr "" +msgstr "主机" #: src/components/forms/HostOptionsForm.tsx:42 #: src/components/forms/HostOptionsForm.tsx:70 #: src/pages/part/CategoryDetail.tsx:78 -#: src/pages/part/PartDetail.tsx:126 +#: src/pages/part/PartDetail.tsx:128 #: src/pages/stock/LocationDetail.tsx:85 #: src/tables/machine/MachineTypeTable.tsx:65 #: src/tables/machine/MachineTypeTable.tsx:109 @@ -540,69 +564,68 @@ msgstr "" #: src/tables/settings/PendingTasksTable.tsx:26 #: src/tables/stock/LocationTypesTable.tsx:60 msgid "Name" -msgstr "" +msgstr "名称" #: src/components/forms/HostOptionsForm.tsx:75 msgid "No one here..." -msgstr "" +msgstr "这里没有人..." #: src/components/forms/HostOptionsForm.tsx:86 msgid "Add Host" -msgstr "" +msgstr "添加主机" #: src/components/forms/HostOptionsForm.tsx:90 -#: src/components/widgets/MarkdownEditor.tsx:72 msgid "Save" -msgstr "" +msgstr "保存" #: src/components/forms/InstanceOptions.tsx:43 msgid "Select destination instance" -msgstr "" +msgstr "选择对象目标" #: src/components/forms/InstanceOptions.tsx:71 msgid "Edit possible host options" -msgstr "" +msgstr "编辑可能的主机选项" #: src/components/forms/InstanceOptions.tsx:98 msgid "Version: {0}" -msgstr "版本: {0}" +msgstr "版本:{0}" #: src/components/forms/InstanceOptions.tsx:100 msgid "API:{0}" -msgstr "API: {0}" +msgstr "API:{0}" #: src/components/forms/InstanceOptions.tsx:102 msgid "Name: {0}" -msgstr "" +msgstr "名称:{0}" #: src/components/forms/InstanceOptions.tsx:104 msgid "State: <0>worker ({0}), <1>plugins{1}" -msgstr "" +msgstr "状态: <0>worker ({0}), <1>plugins{1}" -#: src/components/forms/fields/RelatedModelField.tsx:315 -#: src/pages/Index/Settings/UserSettings.tsx:64 +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:66 #: src/tables/Search.tsx:23 msgid "Search" -msgstr "搜尋" +msgstr "搜索" -#: src/components/forms/fields/RelatedModelField.tsx:316 +#: src/components/forms/fields/RelatedModelField.tsx:321 #: src/components/modals/AboutInvenTreeModal.tsx:81 #: src/components/widgets/WidgetLayout.tsx:120 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 msgid "Loading" -msgstr "" +msgstr "正在加载" -#: src/components/forms/fields/RelatedModelField.tsx:318 +#: src/components/forms/fields/RelatedModelField.tsx:323 msgid "No results found" -msgstr "找不到結果" +msgstr "未找到结果" #: src/components/forms/fields/TableField.tsx:50 msgid "modelRenderer entry required for tables" -msgstr "" +msgstr "表格需要 modelRenderer 条目" #: src/components/forms/fields/TableField.tsx:74 msgid "No entries available" -msgstr "" +msgstr "无可用条目" #: src/components/images/DetailsImage.tsx:252 #~ msgid "Select image" @@ -611,133 +634,133 @@ msgstr "" #: src/components/images/Thumbnail.tsx:12 #: src/components/images/Thumbnail.tsx:58 msgid "Thumbnail" -msgstr "縮圖" +msgstr "缩略图" #: src/components/items/ActionDropdown.tsx:119 -#: src/pages/build/BuildDetail.tsx:360 +#: src/pages/build/BuildDetail.tsx:356 msgid "Barcode Actions" -msgstr "" +msgstr "条形码操作" #: src/components/items/ActionDropdown.tsx:136 msgid "View" -msgstr "" +msgstr "视图" #: src/components/items/ActionDropdown.tsx:137 msgid "View barcode" -msgstr "" +msgstr "查看条形码" #: src/components/items/ActionDropdown.tsx:153 msgid "Link Barcode" -msgstr "" +msgstr "关联二维码" #: src/components/items/ActionDropdown.tsx:154 msgid "Link custom barcode" -msgstr "" +msgstr "链接自定义条形码" #: src/components/items/ActionDropdown.tsx:170 #: src/forms/PurchaseOrderForms.tsx:389 msgid "Unlink Barcode" -msgstr "" +msgstr "解绑条形码" #: src/components/items/ActionDropdown.tsx:171 msgid "Unlink custom barcode" -msgstr "" +msgstr "解绑自定义条形码链接" #: src/components/items/ActionDropdown.tsx:189 #: src/tables/RowActions.tsx:51 msgid "Edit" -msgstr "" +msgstr "编辑" #: src/components/items/ActionDropdown.tsx:211 msgid "Delete item" -msgstr "" +msgstr "删除项目" #: src/components/items/ActionDropdown.tsx:248 #: src/tables/RowActions.tsx:31 msgid "Duplicate" -msgstr "" +msgstr "复制" #: src/components/items/ActionDropdown.tsx:249 msgid "Duplicate item" -msgstr "" +msgstr "重复项目" #: src/components/items/DocTooltip.tsx:92 msgid "Read More" -msgstr "" +msgstr "了解更多" #: src/components/items/ErrorItem.tsx:5 #: src/tables/InvenTreeTable.tsx:443 msgid "Unknown error" -msgstr "" +msgstr "未知错误" #: src/components/items/ErrorItem.tsx:10 msgid "An error occurred:" -msgstr "" +msgstr "出现了一个错误" #: src/components/items/GettingStartedCarousel.tsx:27 msgid "Read more" -msgstr "" +msgstr "了解更多" #: src/components/items/InfoItem.tsx:27 msgid "None" -msgstr "" +msgstr "无" #: src/components/items/InvenTreeLogo.tsx:23 msgid "InvenTree Logo" -msgstr "" +msgstr "InvenTree Logo" #: src/components/items/OnlyStaff.tsx:9 #: src/components/modals/AboutInvenTreeModal.tsx:44 msgid "This information is only available for staff users" -msgstr "" +msgstr "此信息仅供员工使用" #: src/components/items/Placeholder.tsx:14 msgid "This feature/button/site is a placeholder for a feature that is not implemented, only partial or intended for testing." -msgstr "" +msgstr "此功能/按钮/站点是一个未实现的功能的占位符,只是部分或打算测试的功能。" #: src/components/items/Placeholder.tsx:17 msgid "PLH" -msgstr "" +msgstr "PLH" #: src/components/items/Placeholder.tsx:31 msgid "This panel is a placeholder." -msgstr "" +msgstr "此面板是一个占位符。" #: src/components/modals/AboutInvenTreeModal.tsx:99 msgid "Version Information" -msgstr "" +msgstr "版本信息" #: src/components/modals/AboutInvenTreeModal.tsx:103 msgid "Your InvenTree version status is" -msgstr "" +msgstr "您的Inventree 版本状态是" #: src/components/modals/AboutInvenTreeModal.tsx:107 msgid "Development Version" -msgstr "" +msgstr "开发版" #: src/components/modals/AboutInvenTreeModal.tsx:111 msgid "Up to Date" -msgstr "" +msgstr "已是最新版本" #: src/components/modals/AboutInvenTreeModal.tsx:115 msgid "Update Available" -msgstr "" +msgstr "有可用更新" #: src/components/modals/AboutInvenTreeModal.tsx:125 msgid "InvenTree Version" -msgstr "" +msgstr "InvenTree 版本" #: src/components/modals/AboutInvenTreeModal.tsx:131 msgid "Commit Hash" -msgstr "" +msgstr "提交哈希值" #: src/components/modals/AboutInvenTreeModal.tsx:136 msgid "Commit Date" -msgstr "" +msgstr "提交日期" #: src/components/modals/AboutInvenTreeModal.tsx:141 msgid "Commit Branch" -msgstr "" +msgstr "提交分支" #: src/components/modals/AboutInvenTreeModal.tsx:146 #: src/components/modals/ServerInfoModal.tsx:133 @@ -750,126 +773,126 @@ msgstr "Python 版本" #: src/components/modals/AboutInvenTreeModal.tsx:152 msgid "Django Version" -msgstr "Django 版本" +msgstr "Django版本" #: src/components/modals/AboutInvenTreeModal.tsx:162 msgid "Links" -msgstr "" +msgstr "链接" #: src/components/modals/AboutInvenTreeModal.tsx:168 msgid "InvenTree Documentation" -msgstr "" +msgstr "InvenTree 文档" #: src/components/modals/AboutInvenTreeModal.tsx:169 msgid "View Code on GitHub" -msgstr "" +msgstr "在Github上查看源代码" #: src/components/modals/AboutInvenTreeModal.tsx:170 msgid "Credits" -msgstr "" +msgstr "致谢" #: src/components/modals/AboutInvenTreeModal.tsx:171 msgid "Mobile App" -msgstr "" +msgstr "手机 App" #: src/components/modals/AboutInvenTreeModal.tsx:172 msgid "Submit Bug Report" -msgstr "" +msgstr "提交问题报告" #: src/components/modals/AboutInvenTreeModal.tsx:183 msgid "Copy version information" -msgstr "" +msgstr "复制版本信息" #: src/components/modals/AboutInvenTreeModal.tsx:192 #: src/components/modals/ServerInfoModal.tsx:147 msgid "Dismiss" -msgstr "" +msgstr "关闭" #: src/components/modals/LicenseModal.tsx:39 msgid "No license text available" -msgstr "" +msgstr "没有可用的许可文本" #: src/components/modals/LicenseModal.tsx:46 msgid "No Information provided - this is likely a server issue" -msgstr "" +msgstr "未提供信息 - 这可能是服务器问题" #: src/components/modals/LicenseModal.tsx:71 msgid "Loading license information" -msgstr "" +msgstr "正在加载许可证信息" #: src/components/modals/LicenseModal.tsx:77 msgid "Failed to fetch license information" -msgstr "" +msgstr "获取许可信息失败" #: src/components/modals/LicenseModal.tsx:85 msgid "{key} Packages" -msgstr "" +msgstr "{key} 包" #: src/components/modals/QrCodeModal.tsx:72 msgid "Unknown response" -msgstr "" +msgstr "未知响应" #: src/components/modals/QrCodeModal.tsx:102 #: src/pages/Index/Scan.tsx:636 msgid "Error while getting camera" -msgstr "" +msgstr "获取相机时出错" #: src/components/modals/QrCodeModal.tsx:125 #: src/pages/Index/Scan.tsx:659 msgid "Error while scanning" -msgstr "" +msgstr "扫描时出错" #: src/components/modals/QrCodeModal.tsx:139 #: src/pages/Index/Scan.tsx:673 msgid "Error while stopping" -msgstr "" +msgstr "停止时出错" #: src/components/modals/QrCodeModal.tsx:154 #: src/defaults/menuItems.tsx:21 #: src/pages/Index/Scan.tsx:746 msgid "Scanning" -msgstr "" +msgstr "正在扫描" #: src/components/modals/QrCodeModal.tsx:154 #: src/pages/Index/Scan.tsx:746 msgid "Not scanning" -msgstr "" +msgstr "未扫描" #: src/components/modals/QrCodeModal.tsx:159 #: src/pages/Index/Scan.tsx:752 msgid "Select Camera" -msgstr "" +msgstr "选择相机" #: src/components/modals/QrCodeModal.tsx:169 #: src/pages/Index/Scan.tsx:737 msgid "Start scanning" -msgstr "" +msgstr "开始扫描" #: src/components/modals/QrCodeModal.tsx:176 #: src/pages/Index/Scan.tsx:729 msgid "Stop scanning" -msgstr "" +msgstr "停止扫描" #: src/components/modals/QrCodeModal.tsx:181 msgid "No scans yet!" -msgstr "" +msgstr "还没有扫描!" #: src/components/modals/QrCodeModal.tsx:201 msgid "Close modal" -msgstr "" +msgstr "关闭模态框" #: src/components/modals/ServerInfoModal.tsx:26 -#: src/pages/Index/Settings/SystemSettings.tsx:35 +#: src/pages/Index/Settings/SystemSettings.tsx:36 msgid "Server" -msgstr "" +msgstr "服务器" #: src/components/modals/ServerInfoModal.tsx:32 msgid "Instance Name" -msgstr "" +msgstr "实例名称" #: src/components/modals/ServerInfoModal.tsx:38 msgid "Database" -msgstr "" +msgstr "数据库" #: src/components/modals/ServerInfoModal.tsx:38 #~ msgid "Bebug Mode" @@ -877,78 +900,78 @@ msgstr "" #: src/components/modals/ServerInfoModal.tsx:47 msgid "Debug Mode" -msgstr "" +msgstr "调试模式" #: src/components/modals/ServerInfoModal.tsx:50 msgid "Server is running in debug mode" -msgstr "" +msgstr "服务器以调试模式运行" #: src/components/modals/ServerInfoModal.tsx:57 msgid "Docker Mode" -msgstr "" +msgstr "停靠模式" #: src/components/modals/ServerInfoModal.tsx:60 msgid "Server is deployed using docker" -msgstr "" +msgstr "服务器是使用docker部署的" #: src/components/modals/ServerInfoModal.tsx:66 msgid "Plugin Support" -msgstr "" +msgstr "插件支持" #: src/components/modals/ServerInfoModal.tsx:71 msgid "Plugin support enabled" -msgstr "" +msgstr "插件支持已启用" #: src/components/modals/ServerInfoModal.tsx:73 msgid "Plugin support disabled" -msgstr "" +msgstr "插件支持已禁用" #: src/components/modals/ServerInfoModal.tsx:80 msgid "Server status" -msgstr "" +msgstr "服务器状态" #: src/components/modals/ServerInfoModal.tsx:86 msgid "Healthy" -msgstr "" +msgstr "健康" #: src/components/modals/ServerInfoModal.tsx:88 msgid "Issues detected" -msgstr "" +msgstr "检测到问题" #: src/components/modals/ServerInfoModal.tsx:97 msgid "Background Worker" -msgstr "" +msgstr "后台工作者" #: src/components/modals/ServerInfoModal.tsx:101 msgid "Background worker not running" -msgstr "" +msgstr "后台worker未运行" #: src/components/modals/ServerInfoModal.tsx:109 msgid "Email Settings" -msgstr "" +msgstr "电子邮件设置" #: src/components/modals/ServerInfoModal.tsx:113 msgid "Email settings not configured" -msgstr "" +msgstr "电子邮件设置未配置" #: src/components/modals/ServerInfoModal.tsx:121 #: src/tables/plugin/PluginListTable.tsx:144 #: src/tables/plugin/PluginListTable.tsx:294 msgid "Version" -msgstr "" +msgstr "版本" #: src/components/modals/ServerInfoModal.tsx:127 msgid "Server Version" -msgstr "" +msgstr "服务器版本" #: src/components/nav/Layout.tsx:70 #: src/tables/part/PartThumbTable.tsx:194 msgid "Search..." -msgstr "" +msgstr "搜索..." #: src/components/nav/Layout.tsx:73 msgid "Nothing found..." -msgstr "" +msgstr "无结果..." #: src/components/nav/MainMenu.tsx:40 #: src/pages/Index/Profile/Profile.tsx:15 @@ -958,24 +981,24 @@ msgstr "" #: src/components/nav/MainMenu.tsx:42 #: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:26 msgid "Settings" -msgstr "" +msgstr "设置" #: src/components/nav/MainMenu.tsx:49 #: src/defaults/menuItems.tsx:15 msgid "Account settings" -msgstr "" +msgstr "账户设定" #: src/components/nav/MainMenu.tsx:57 #: src/defaults/menuItems.tsx:58 -#: src/pages/Index/Settings/SystemSettings.tsx:294 +#: src/pages/Index/Settings/SystemSettings.tsx:300 msgid "System Settings" -msgstr "" +msgstr "系统设置" #: src/components/nav/MainMenu.tsx:67 #: src/defaults/menuItems.tsx:63 #: src/pages/Index/Settings/AdminCenter/Index.tsx:192 msgid "Admin Center" -msgstr "" +msgstr "管理中心" #: src/components/nav/MainMenu.tsx:68 #~ msgid "Current language {locale}" @@ -987,120 +1010,107 @@ msgstr "" #: src/components/nav/MainMenu.tsx:77 msgid "Logout" -msgstr "" +msgstr "登出" #: src/components/nav/NavHoverMenu.tsx:65 #: src/defaults/actions.tsx:58 msgid "Open Navigation" -msgstr "" +msgstr "打开导航" #: src/components/nav/NavHoverMenu.tsx:84 msgid "View all" -msgstr "" +msgstr "查看全部" #: src/components/nav/NavHoverMenu.tsx:100 #: src/components/nav/NavHoverMenu.tsx:110 msgid "Get started" -msgstr "" +msgstr "开始" #: src/components/nav/NavHoverMenu.tsx:103 msgid "Overview over high-level objects, functions and possible usecases." -msgstr "" +msgstr "关于高层级别物体、功能和可能用途的概述。" #: src/components/nav/NavigationDrawer.tsx:57 msgid "Navigation" -msgstr "" +msgstr "导航栏" #: src/components/nav/NavigationDrawer.tsx:60 msgid "Pages" -msgstr "" +msgstr "页面" #: src/components/nav/NavigationDrawer.tsx:65 #: src/pages/Index/Settings/AdminCenter/Index.tsx:153 #: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:41 msgid "Plugins" -msgstr "" +msgstr "插件" #: src/components/nav/NavigationDrawer.tsx:75 #: src/defaults/actions.tsx:30 msgid "Documentation" -msgstr "" +msgstr "文档" #: src/components/nav/NavigationDrawer.tsx:78 msgid "About" -msgstr "" +msgstr "关于" #: src/components/nav/NotificationDrawer.tsx:78 -#: src/pages/Index/Settings/SystemSettings.tsx:100 -#: src/pages/Index/Settings/UserSettings.tsx:94 +#: src/pages/Index/Settings/SystemSettings.tsx:101 +#: src/pages/Index/Settings/UserSettings.tsx:96 #: src/pages/Notifications.tsx:65 #: src/pages/Notifications.tsx:152 msgid "Notifications" -msgstr "" +msgstr "通知" #: src/components/nav/NotificationDrawer.tsx:95 msgid "You have no unread notifications." -msgstr "" +msgstr "您没有未读通知" #: src/components/nav/NotificationDrawer.tsx:111 #: src/components/nav/NotificationDrawer.tsx:117 #: src/tables/notifications/NotificationsTable.tsx:36 msgid "Notification" -msgstr "" +msgstr "通知" #: src/components/nav/NotificationDrawer.tsx:140 #: src/pages/Notifications.tsx:73 msgid "Mark as read" -msgstr "" - -#: src/components/nav/PartCategoryTree.tsx:158 -#: src/components/render/ModelType.tsx:64 -#: src/pages/Index/Settings/SystemSettings.tsx:162 -#: src/pages/part/CategoryDetail.tsx:249 -msgid "Part Categories" -msgstr "" +msgstr "标记为已读" #: src/components/nav/SearchDrawer.tsx:77 msgid "results" -msgstr "" +msgstr "结果" #: src/components/nav/SearchDrawer.tsx:337 msgid "Enter search text" -msgstr "" +msgstr "输入搜索文本" #: src/components/nav/SearchDrawer.tsx:364 msgid "Search Options" -msgstr "" +msgstr "搜索选项" #: src/components/nav/SearchDrawer.tsx:367 msgid "Regex search" -msgstr "" +msgstr "正则表达式搜索" #: src/components/nav/SearchDrawer.tsx:377 msgid "Whole word search" -msgstr "" +msgstr "全词搜索" #: src/components/nav/SearchDrawer.tsx:416 msgid "An error occurred during search query" -msgstr "" +msgstr "搜索查询时发生错误" #: src/components/nav/SearchDrawer.tsx:427 msgid "No results" -msgstr "" +msgstr "无结果" #: src/components/nav/SearchDrawer.tsx:430 msgid "No results available for search query" -msgstr "" - -#: src/components/nav/StockLocationTree.tsx:93 -#: src/components/render/ModelType.tsx:82 -#: src/pages/stock/LocationDetail.tsx:185 -msgid "Stock Locations" -msgstr "" +msgstr "没有可供搜索查询的结果" #: src/components/render/Instance.tsx:166 msgid "Unknown model: {model}" -msgstr "" +msgstr "未知模型: {model}" #: src/components/render/ModelType.tsx:22 #: src/forms/BuildForms.tsx:201 @@ -1113,125 +1123,140 @@ msgstr "" #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 #: src/pages/build/BuildDetail.tsx:83 -#: src/pages/part/PartDetail.tsx:828 +#: src/pages/part/PartDetail.tsx:833 #: src/tables/part/RelatedPartTable.tsx:45 #: src/tables/stock/StockTrackingTable.tsx:74 msgid "Part" -msgstr "" +msgstr "零件" #: src/components/render/ModelType.tsx:23 #: src/defaults/links.tsx:28 #: src/defaults/menuItems.tsx:33 -#: src/pages/Index/Settings/SystemSettings.tsx:167 +#: src/pages/Index/Settings/SystemSettings.tsx:171 #: src/pages/part/CategoryDetail.tsx:110 #: src/pages/part/CategoryDetail.tsx:235 #: src/pages/part/CategoryDetail.tsx:265 -#: src/pages/part/PartDetail.tsx:639 +#: src/pages/part/PartDetail.tsx:641 msgid "Parts" -msgstr "" +msgstr "零件" #: src/components/render/ModelType.tsx:31 msgid "Part Parameter Template" -msgstr "" +msgstr "零件参数模板" #: src/components/render/ModelType.tsx:32 msgid "Part Parameter Templates" -msgstr "" +msgstr "零件参数模板" #: src/components/render/ModelType.tsx:38 msgid "Part Test Template" -msgstr "" +msgstr "零件测试模板" #: src/components/render/ModelType.tsx:39 msgid "Part Test Templates" -msgstr "" +msgstr "零件测试模板" #: src/components/render/ModelType.tsx:45 #: src/pages/company/SupplierPartDetail.tsx:190 #: src/pages/company/SupplierPartDetail.tsx:318 -#: src/pages/stock/StockDetail.tsx:162 +#: src/pages/stock/StockDetail.tsx:163 #: src/tables/purchasing/SupplierPartTable.tsx:68 msgid "Supplier Part" -msgstr "" +msgstr "供应商零件" #: src/components/render/ModelType.tsx:46 msgid "Supplier Parts" -msgstr "" +msgstr "供应商零件" #: src/components/render/ModelType.tsx:54 #: src/pages/company/ManufacturerPartDetail.tsx:125 msgid "Manufacturer Part" -msgstr "" +msgstr "制造商零件" #: src/components/render/ModelType.tsx:55 msgid "Manufacturer Parts" -msgstr "" +msgstr "制造商零件" #: src/components/render/ModelType.tsx:63 -#: src/pages/part/CategoryDetail.tsx:288 +#: src/pages/part/CategoryDetail.tsx:291 msgid "Part Category" -msgstr "" +msgstr "零件类别" + +#: src/components/render/ModelType.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:165 +#: src/pages/part/CategoryDetail.tsx:249 +#: src/pages/part/CategoryDetail.tsx:282 +#: src/pages/part/PartDetail.tsx:823 +msgid "Part Categories" +msgstr "零件类别" #: src/components/render/ModelType.tsx:72 -#: src/pages/stock/StockDetail.tsx:548 +#: src/pages/stock/StockDetail.tsx:562 #: src/tables/stock/StockTrackingTable.tsx:45 msgid "Stock Item" -msgstr "" +msgstr "库存项" #: src/components/render/ModelType.tsx:73 #: src/pages/company/CompanyDetail.tsx:199 #: src/pages/stock/LocationDetail.tsx:118 #: src/pages/stock/LocationDetail.tsx:171 -#: src/pages/stock/LocationDetail.tsx:365 +#: src/pages/stock/LocationDetail.tsx:369 msgid "Stock Items" -msgstr "" +msgstr "库存项" #: src/components/render/ModelType.tsx:81 msgid "Stock Location" -msgstr "" +msgstr "库存地点" + +#: src/components/render/ModelType.tsx:82 +#: src/pages/stock/LocationDetail.tsx:185 +#: src/pages/stock/LocationDetail.tsx:361 +#: src/pages/stock/StockDetail.tsx:554 +msgid "Stock Locations" +msgstr "库存地点" #: src/components/render/ModelType.tsx:90 msgid "Stock Location Type" -msgstr "" +msgstr "库存地点类型" #: src/components/render/ModelType.tsx:91 msgid "Stock Location Types" -msgstr "" +msgstr "库存地点类型" #: src/components/render/ModelType.tsx:95 msgid "Stock History" -msgstr "" +msgstr "库存历史记录" #: src/components/render/ModelType.tsx:96 msgid "Stock Histories" -msgstr "" +msgstr "库存历史记录" #: src/components/render/ModelType.tsx:100 #: src/defaults/links.tsx:30 #: src/defaults/menuItems.tsx:43 msgid "Build" -msgstr "" +msgstr "生产..." #: src/components/render/ModelType.tsx:101 msgid "Builds" -msgstr "" +msgstr "编译" #: src/components/render/ModelType.tsx:109 msgid "Build Line" -msgstr "" +msgstr "生产行" #: src/components/render/ModelType.tsx:110 msgid "Build Lines" -msgstr "" +msgstr "生产行" #: src/components/render/ModelType.tsx:117 -#: src/pages/company/CompanyDetail.tsx:323 +#: src/pages/company/CompanyDetail.tsx:326 msgid "Company" -msgstr "" +msgstr "公司" #: src/components/render/ModelType.tsx:118 msgid "Companies" -msgstr "" +msgstr "公司" #: src/components/render/ModelType.tsx:126 #: src/tables/TableHoverCard.tsx:58 @@ -1240,175 +1265,176 @@ msgstr "" #: src/tables/sales/ReturnOrderTable.tsx:55 #: src/tables/sales/SalesOrderTable.tsx:61 msgid "Project Code" -msgstr "" +msgstr "项目编码" #: src/components/render/ModelType.tsx:127 #: src/pages/Index/Settings/AdminCenter/Index.tsx:105 msgid "Project Codes" -msgstr "" +msgstr "项目编码" #: src/components/render/ModelType.tsx:133 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:42 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:361 #: src/tables/stock/StockTrackingTable.tsx:107 msgid "Purchase Order" -msgstr "" +msgstr "采购订单" #: src/components/render/ModelType.tsx:134 -#: src/pages/Index/Settings/SystemSettings.tsx:243 +#: src/pages/Index/Settings/SystemSettings.tsx:248 #: src/pages/company/CompanyDetail.tsx:192 #: src/pages/company/SupplierPartDetail.tsx:224 -#: src/pages/part/PartDetail.tsx:572 +#: src/pages/part/PartDetail.tsx:575 #: src/pages/purchasing/PurchasingIndex.tsx:20 msgid "Purchase Orders" -msgstr "" +msgstr "采购订单" #: src/components/render/ModelType.tsx:142 msgid "Purchase Order Line" -msgstr "" +msgstr "采购订单行" #: src/components/render/ModelType.tsx:143 msgid "Purchase Order Lines" -msgstr "" +msgstr "采购订单行" #: src/components/render/ModelType.tsx:147 #: src/pages/build/BuildDetail.tsx:131 -#: src/pages/sales/SalesOrderDetail.tsx:347 -#: src/pages/stock/StockDetail.tsx:210 +#: src/pages/sales/SalesOrderDetail.tsx:350 +#: src/pages/stock/StockDetail.tsx:211 #: src/tables/stock/StockTrackingTable.tsx:118 msgid "Sales Order" -msgstr "" +msgstr "销售订单" #: src/components/render/ModelType.tsx:148 -#: src/pages/Index/Settings/SystemSettings.tsx:258 +#: src/pages/Index/Settings/SystemSettings.tsx:263 #: src/pages/company/CompanyDetail.tsx:212 -#: src/pages/part/PartDetail.tsx:578 +#: src/pages/part/PartDetail.tsx:582 #: src/pages/sales/SalesIndex.tsx:21 msgid "Sales Orders" -msgstr "" +msgstr "销售订单" #: src/components/render/ModelType.tsx:156 msgid "Sales Order Shipment" -msgstr "" +msgstr "销售订单配送" #: src/components/render/ModelType.tsx:157 msgid "Sales Order Shipments" -msgstr "" +msgstr "销售订单配送" #: src/components/render/ModelType.tsx:163 -#: src/pages/sales/ReturnOrderDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:326 #: src/tables/stock/StockTrackingTable.tsx:129 msgid "Return Order" -msgstr "" +msgstr "退货订单" #: src/components/render/ModelType.tsx:164 -#: src/pages/Index/Settings/SystemSettings.tsx:273 +#: src/pages/Index/Settings/SystemSettings.tsx:279 #: src/pages/company/CompanyDetail.tsx:219 #: src/pages/sales/SalesIndex.tsx:27 msgid "Return Orders" -msgstr "" +msgstr "退货订单" #: src/components/render/ModelType.tsx:172 #: src/tables/company/AddressTable.tsx:47 msgid "Address" -msgstr "" +msgstr "地址" #: src/components/render/ModelType.tsx:173 #: src/pages/company/CompanyDetail.tsx:249 msgid "Addresses" -msgstr "" +msgstr "地址" #: src/components/render/ModelType.tsx:179 #: src/pages/purchasing/PurchaseOrderDetail.tsx:191 -#: src/pages/sales/ReturnOrderDetail.tsx:159 -#: src/pages/sales/SalesOrderDetail.tsx:163 +#: src/pages/sales/ReturnOrderDetail.tsx:160 +#: src/pages/sales/SalesOrderDetail.tsx:164 msgid "Contact" -msgstr "" +msgstr "联系人" #: src/components/render/ModelType.tsx:180 #: src/pages/company/CompanyDetail.tsx:243 msgid "Contacts" -msgstr "" +msgstr "联系人" #: src/components/render/ModelType.tsx:186 msgid "Owner" -msgstr "" +msgstr "所有者" #: src/components/render/ModelType.tsx:187 msgid "Owners" -msgstr "" +msgstr "所有者" #: src/components/render/ModelType.tsx:193 -#: src/tables/stock/StockItemTestResultTable.tsx:192 +#: src/tables/stock/StockItemTestResultTable.tsx:193 #: src/tables/stock/StockTrackingTable.tsx:195 msgid "User" -msgstr "" +msgstr "用户" #: src/components/render/ModelType.tsx:194 #: src/pages/Index/Settings/AdminCenter/Index.tsx:81 #: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:13 msgid "Users" -msgstr "" +msgstr "用户" #: src/components/render/ModelType.tsx:200 msgid "Label Template" -msgstr "" +msgstr "标签模板" #: src/components/render/ModelType.tsx:201 #: src/pages/Index/Settings/AdminCenter/Index.tsx:135 msgid "Label Templates" -msgstr "" +msgstr "标签模板" #: src/components/render/ModelType.tsx:207 msgid "Report Template" -msgstr "" +msgstr "报告模板" #: src/components/render/ModelType.tsx:208 #: src/pages/Index/Settings/AdminCenter/Index.tsx:141 msgid "Report Templates" -msgstr "" +msgstr "报告模板" #: src/components/render/ModelType.tsx:214 msgid "Plugin Configuration" -msgstr "" +msgstr "插件配置" #: src/components/render/ModelType.tsx:215 msgid "Plugin Configurations" -msgstr "" +msgstr "插件配置" #: src/components/render/Order.tsx:104 msgid "Shipment" -msgstr "" +msgstr "配送" #: src/components/render/Part.tsx:15 #: src/defaults/links.tsx:29 #: src/defaults/menuItems.tsx:38 -#: src/pages/Index/Settings/SystemSettings.tsx:199 -#: src/pages/part/PartDetail.tsx:492 -#: src/pages/stock/LocationDetail.tsx:344 -#: src/pages/stock/StockDetail.tsx:352 +#: src/pages/Index/Settings/SystemSettings.tsx:203 +#: src/pages/part/PartDetail.tsx:494 +#: src/pages/stock/LocationDetail.tsx:345 +#: src/pages/stock/StockDetail.tsx:354 #: src/tables/stock/StockItemTable.tsx:57 msgid "Stock" -msgstr "" +msgstr "库存" #: src/components/render/Stock.tsx:52 -#: src/pages/stock/StockDetail.tsx:145 -#: src/pages/stock/StockDetail.tsx:514 +#: src/pages/stock/StockDetail.tsx:146 +#: src/pages/stock/StockDetail.tsx:519 msgid "Serial Number" -msgstr "" +msgstr "序列号" #: src/components/render/Stock.tsx:54 #: src/forms/BuildForms.tsx:206 -#: src/pages/part/pricing/BomPricingPanel.tsx:144 -#: src/pages/part/pricing/PriceBreakPanel.tsx:94 -#: src/pages/stock/StockDetail.tsx:140 -#: src/pages/stock/StockDetail.tsx:520 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:141 +#: src/pages/stock/StockDetail.tsx:525 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 #: src/tables/stock/StockTrackingTable.tsx:59 msgid "Quantity" -msgstr "" +msgstr "数量" #: src/components/settings/SettingItem.tsx:47 #: src/components/settings/SettingItem.tsx:100 @@ -1417,24 +1443,24 @@ msgstr "" #: src/components/settings/SettingList.tsx:67 msgid "Edit Setting" -msgstr "" +msgstr "编辑设置" #: src/components/settings/SettingList.tsx:78 #: src/components/settings/SettingList.tsx:108 msgid "Setting {0} updated successfully" -msgstr "" +msgstr "成功更新设置{0}" #: src/components/settings/SettingList.tsx:107 msgid "Setting updated" -msgstr "" +msgstr "设置已更新" #: src/components/settings/SettingList.tsx:117 msgid "Error editing setting" -msgstr "" +msgstr "编辑设置时出错" #: src/components/settings/SettingList.tsx:158 msgid "No settings specified" -msgstr "" +msgstr "未指定设置" #: src/components/tables/FilterGroup.tsx:29 #~ msgid "Add table filter" @@ -1813,326 +1839,326 @@ msgstr "" #: src/components/widgets/DisplayWidget.tsx:11 #: src/pages/Index/Settings/AccountSettings/DisplaySettingsPanel.tsx:17 msgid "Display Settings" -msgstr "" +msgstr "显示设置" #: src/components/widgets/DisplayWidget.tsx:15 #: src/pages/Index/Settings/AccountSettings/DisplaySettingsPanel.tsx:23 msgid "Color Mode" -msgstr "" +msgstr "色彩模式" #: src/components/widgets/DisplayWidget.tsx:21 #: src/pages/Index/Settings/AccountSettings/DisplaySettingsPanel.tsx:33 msgid "Language" -msgstr "" +msgstr "语言" #: src/components/widgets/FeedbackWidget.tsx:19 msgid "Something is new: Platform UI" -msgstr "" +msgstr "新事件:平台界面" #: src/components/widgets/FeedbackWidget.tsx:21 msgid "We are building a new UI with a modern stack. What you currently see is not fixed and will be redesigned but demonstrates the UI/UX possibilities we will have going forward." -msgstr "" +msgstr "我们正在建造一个带有现代堆栈的新界面。 您目前看到的不是固定的,将被重新设计,而是演示UI/UX的可能性,我们将继续前进。" #: src/components/widgets/FeedbackWidget.tsx:32 msgid "Provide Feedback" -msgstr "" +msgstr "提供反馈" #: src/components/widgets/GetStartedWidget.tsx:11 msgid "Getting started" -msgstr "" +msgstr "快速开始" #: src/components/widgets/MarkdownEditor.tsx:108 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Failed to upload image" +#~ msgstr "Failed to upload image" #: src/components/widgets/MarkdownEditor.tsx:146 -msgid "Notes saved" -msgstr "" - -#: src/components/widgets/MarkdownEditor.tsx:154 -msgid "Failed to save notes" -msgstr "" +#~ msgid "Notes saved" +#~ msgstr "Notes saved" #: src/components/widgets/WidgetLayout.tsx:166 msgid "Layout" -msgstr "" +msgstr "布局" #: src/components/widgets/WidgetLayout.tsx:172 msgid "Reset Layout" -msgstr "" +msgstr "重置布局" #: src/components/widgets/WidgetLayout.tsx:185 msgid "Stop Edit" -msgstr "" +msgstr "停止编辑" #: src/components/widgets/WidgetLayout.tsx:185 msgid "Edit Layout" -msgstr "" +msgstr "编辑布局" #: src/components/widgets/WidgetLayout.tsx:191 msgid "Appearance" -msgstr "" +msgstr "外观" #: src/components/widgets/WidgetLayout.tsx:203 msgid "Show Boxes" -msgstr "" +msgstr "显示框" #: src/contexts/LanguageContext.tsx:20 msgid "Bulgarian" -msgstr "" +msgstr "保加利亚语" #: src/contexts/LanguageContext.tsx:21 msgid "Czech" -msgstr "" +msgstr "捷克语" #: src/contexts/LanguageContext.tsx:22 msgid "Danish" -msgstr "" +msgstr "丹麦语" #: src/contexts/LanguageContext.tsx:23 msgid "German" -msgstr "" +msgstr "德语" #: src/contexts/LanguageContext.tsx:24 msgid "Greek" -msgstr "" +msgstr "希腊语" #: src/contexts/LanguageContext.tsx:25 msgid "English" -msgstr "" +msgstr "英语" #: src/contexts/LanguageContext.tsx:26 msgid "Spanish" -msgstr "" +msgstr "西班牙语" #: src/contexts/LanguageContext.tsx:27 msgid "Spanish (Mexican)" -msgstr "" +msgstr "西班牙语(墨西哥)" #: src/contexts/LanguageContext.tsx:28 msgid "Farsi / Persian" -msgstr "" +msgstr "波斯语" #: src/contexts/LanguageContext.tsx:29 msgid "Finnish" -msgstr "" +msgstr "芬兰语" #: src/contexts/LanguageContext.tsx:30 msgid "French" -msgstr "" +msgstr "法语" #: src/contexts/LanguageContext.tsx:31 msgid "Hebrew" -msgstr "" +msgstr "希伯来语" #: src/contexts/LanguageContext.tsx:32 msgid "Hindi" -msgstr "" +msgstr "印地语" #: src/contexts/LanguageContext.tsx:33 msgid "Hungarian" -msgstr "" +msgstr "匈牙利语" #: src/contexts/LanguageContext.tsx:34 msgid "Italian" -msgstr "" +msgstr "意大利语" #: src/contexts/LanguageContext.tsx:35 msgid "Japanese" -msgstr "" +msgstr "日语" #: src/contexts/LanguageContext.tsx:36 msgid "Korean" -msgstr "" +msgstr "韩语" #: src/contexts/LanguageContext.tsx:37 msgid "Latvian" -msgstr "" +msgstr "Latvian" #: src/contexts/LanguageContext.tsx:38 msgid "Dutch" -msgstr "" +msgstr "荷兰语" #: src/contexts/LanguageContext.tsx:39 msgid "Norwegian" -msgstr "" +msgstr "挪威语" #: src/contexts/LanguageContext.tsx:40 msgid "Polish" -msgstr "" +msgstr "波兰语" #: src/contexts/LanguageContext.tsx:41 msgid "Portuguese" -msgstr "" +msgstr "葡萄牙语" #: src/contexts/LanguageContext.tsx:42 msgid "Portuguese (Brazilian)" -msgstr "" +msgstr "葡萄牙语(巴西)" #: src/contexts/LanguageContext.tsx:43 -msgid "Russian" -msgstr "" +msgid "Romanian" +msgstr "罗马尼亚语" #: src/contexts/LanguageContext.tsx:44 -msgid "Slovak" -msgstr "" +msgid "Russian" +msgstr "俄语" #: src/contexts/LanguageContext.tsx:45 -msgid "Slovenian" -msgstr "" +msgid "Slovak" +msgstr "Slovak" #: src/contexts/LanguageContext.tsx:46 -msgid "Swedish" -msgstr "" +msgid "Slovenian" +msgstr "斯洛语尼亚语" #: src/contexts/LanguageContext.tsx:47 -msgid "Thai" -msgstr "" +msgid "Swedish" +msgstr "瑞典语" #: src/contexts/LanguageContext.tsx:48 -msgid "Turkish" -msgstr "" +msgid "Thai" +msgstr "泰语" #: src/contexts/LanguageContext.tsx:49 -msgid "Ukrainian" -msgstr "" +msgid "Turkish" +msgstr "土耳其语" #: src/contexts/LanguageContext.tsx:50 -msgid "Vietnamese" -msgstr "" +msgid "Ukrainian" +msgstr "乌克兰语" #: src/contexts/LanguageContext.tsx:51 -msgid "Chinese (Simplified)" -msgstr "" +msgid "Vietnamese" +msgstr "越南语" #: src/contexts/LanguageContext.tsx:52 +msgid "Chinese (Simplified)" +msgstr "中文 (简体)" + +#: src/contexts/LanguageContext.tsx:53 msgid "Chinese (Traditional)" -msgstr "" +msgstr "中文 (繁体)" #: src/defaults/actions.tsx:16 #: src/defaults/links.tsx:26 #: src/defaults/menuItems.tsx:9 msgid "Home" -msgstr "" +msgstr "主页" #: src/defaults/actions.tsx:23 #: src/defaults/links.tsx:27 #: src/defaults/menuItems.tsx:28 #: src/pages/Index/Dashboard.tsx:19 -#: src/pages/Index/Settings/UserSettings.tsx:41 +#: src/pages/Index/Settings/UserSettings.tsx:42 msgid "Dashboard" -msgstr "" +msgstr "仪表盘" #: src/defaults/actions.tsx:24 msgid "Go to the InvenTree dashboard" -msgstr "" +msgstr "跳转到 InventTree 仪表板" #: src/defaults/actions.tsx:31 msgid "Visit the documentation to learn more about InvenTree" -msgstr "" +msgstr "访问文档以了解更多关于 InventTree" #: src/defaults/actions.tsx:37 #: src/defaults/links.tsx:92 #: src/defaults/links.tsx:122 msgid "About InvenTree" -msgstr "" +msgstr "关于 InventTree" #: src/defaults/actions.tsx:38 #: src/defaults/links.tsx:123 msgid "About the InvenTree org" -msgstr "" +msgstr "关于 InventTree 组织" #: src/defaults/actions.tsx:44 msgid "Server Information" -msgstr "" +msgstr "服务器信息" #: src/defaults/actions.tsx:45 #: src/defaults/links.tsx:117 msgid "About this Inventree instance" -msgstr "" +msgstr "关于此 Inventree 实例" #: src/defaults/actions.tsx:51 #: src/defaults/links.tsx:105 msgid "License Information" -msgstr "" +msgstr "许可信息" #: src/defaults/actions.tsx:52 #: src/defaults/links.tsx:129 msgid "Licenses for dependencies of the service" -msgstr "" +msgstr "服务依赖关系许可" #: src/defaults/actions.tsx:59 msgid "Open the main navigation menu" -msgstr "" +msgstr "打开主导航菜单" #: src/defaults/dashboardItems.tsx:15 msgid "Subscribed Parts" -msgstr "" +msgstr "已订购零件" #: src/defaults/dashboardItems.tsx:22 msgid "Subscribed Categories" -msgstr "" +msgstr "已订阅类别" #: src/defaults/dashboardItems.tsx:29 msgid "Latest Parts" -msgstr "" +msgstr "最近零件" #: src/defaults/dashboardItems.tsx:36 msgid "BOM Waiting Validation" -msgstr "" +msgstr "等待验证的 物料清单" #: src/defaults/dashboardItems.tsx:43 msgid "Recently Updated" -msgstr "" +msgstr "最近更新" #: src/defaults/dashboardItems.tsx:50 #: src/tables/part/PartTable.tsx:216 msgid "Low Stock" -msgstr "" +msgstr "低库存" #: src/defaults/dashboardItems.tsx:57 msgid "Depleted Stock" -msgstr "" +msgstr "已耗尽库存" #: src/defaults/dashboardItems.tsx:64 msgid "Required for Build Orders" -msgstr "" +msgstr "生产订单所需的" #: src/defaults/dashboardItems.tsx:71 msgid "Expired Stock" -msgstr "" +msgstr "过期库存" #: src/defaults/dashboardItems.tsx:78 msgid "Stale Stock" -msgstr "" +msgstr "过期库存" #: src/defaults/dashboardItems.tsx:85 msgid "Build Orders In Progress" -msgstr "" +msgstr "进行中的生产订单" #: src/defaults/dashboardItems.tsx:92 msgid "Overdue Build Orders" -msgstr "" +msgstr "逾期的生产订单" #: src/defaults/dashboardItems.tsx:99 msgid "Outstanding Purchase Orders" -msgstr "" +msgstr "未完成的采购订单" #: src/defaults/dashboardItems.tsx:106 msgid "Overdue Purchase Orders" -msgstr "" +msgstr "逾期的采购订单" #: src/defaults/dashboardItems.tsx:113 msgid "Outstanding Sales Orders" -msgstr "" +msgstr "未完成的销售订单" #: src/defaults/dashboardItems.tsx:120 msgid "Overdue Sales Orders" -msgstr "" +msgstr "逾期的销售订单" #: src/defaults/dashboardItems.tsx:127 msgid "Current News" -msgstr "" +msgstr "当前新闻" #: src/defaults/defaultHostList.tsx:8 #~ msgid "InvenTree Demo" @@ -2145,73 +2171,73 @@ msgstr "" #: src/defaults/links.tsx:11 #: src/pages/company/CompanyDetail.tsx:92 msgid "Website" -msgstr "" +msgstr "网站" #: src/defaults/links.tsx:16 msgid "GitHub" -msgstr "" +msgstr "GitHub" #: src/defaults/links.tsx:21 msgid "Demo" -msgstr "" +msgstr "演示" #: src/defaults/links.tsx:31 #: src/defaults/menuItems.tsx:48 #: src/pages/company/ManufacturerDetail.tsx:9 -#: src/pages/company/ManufacturerPartDetail.tsx:235 +#: src/pages/company/ManufacturerPartDetail.tsx:234 #: src/pages/company/SupplierDetail.tsx:9 #: src/pages/company/SupplierPartDetail.tsx:292 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:364 #: src/pages/purchasing/PurchasingIndex.tsx:52 msgid "Purchasing" -msgstr "" +msgstr "采购中" #: src/defaults/links.tsx:32 #: src/defaults/menuItems.tsx:53 #: src/pages/company/CustomerDetail.tsx:9 -#: src/pages/sales/ReturnOrderDetail.tsx:330 +#: src/pages/sales/ReturnOrderDetail.tsx:331 #: src/pages/sales/SalesIndex.tsx:45 -#: src/pages/sales/SalesOrderDetail.tsx:352 +#: src/pages/sales/SalesOrderDetail.tsx:355 msgid "Sales" -msgstr "" +msgstr "销售" #: src/defaults/links.tsx:35 #: src/defaults/menuItems.tsx:71 -#: src/pages/Index/Playground.tsx:238 +#: src/pages/Index/Playground.tsx:221 msgid "Playground" -msgstr "" +msgstr "Playground" #: src/defaults/links.tsx:49 msgid "Getting Started" -msgstr "" +msgstr "快速上手" #: src/defaults/links.tsx:50 msgid "Getting started with InvenTree" -msgstr "" +msgstr "开始使用 InventTree" #: src/defaults/links.tsx:56 msgid "API" -msgstr "" +msgstr "API" #: src/defaults/links.tsx:57 msgid "InvenTree API documentation" -msgstr "" +msgstr "InventTree API 文档" #: src/defaults/links.tsx:62 msgid "Developer Manual" -msgstr "" +msgstr "开发者手册" #: src/defaults/links.tsx:63 msgid "InvenTree developer manual" -msgstr "" +msgstr "InventTree 开发者手册" #: src/defaults/links.tsx:68 msgid "FAQ" -msgstr "" +msgstr "FAQ" #: src/defaults/links.tsx:69 msgid "Frequently asked questions" -msgstr "" +msgstr "常见问题" #: src/defaults/links.tsx:76 #~ msgid "Instance" @@ -2220,7 +2246,7 @@ msgstr "" #: src/defaults/links.tsx:79 #: src/defaults/links.tsx:116 msgid "System Information" -msgstr "" +msgstr "系统信息" #: src/defaults/links.tsx:83 #~ msgid "InvenTree" @@ -2232,7 +2258,7 @@ msgstr "" #: src/defaults/links.tsx:128 msgid "Licenses" -msgstr "" +msgstr "许可协议" #: src/defaults/menuItems.tsx:7 #~ msgid "Open sourcea" @@ -2260,7 +2286,7 @@ msgstr "" #: src/defaults/menuItems.tsx:17 msgid "User attributes and design settings." -msgstr "" +msgstr "用户属性和设计设置" #: src/defaults/menuItems.tsx:21 #~ msgid "Free for everyone" @@ -2272,7 +2298,7 @@ msgstr "" #: src/defaults/menuItems.tsx:23 msgid "View for interactive scanning and multiple actions." -msgstr "" +msgstr "查看互动扫描和多种操作。" #: src/defaults/menuItems.tsx:24 #~ msgid "The fluid of Smeargle’s tail secretions changes in the intensity" @@ -2352,15 +2378,15 @@ msgstr "" #: src/forms/BuildForms.tsx:146 msgid "Next serial number" -msgstr "" +msgstr "下一个序列号" #: src/forms/BuildForms.tsx:150 msgid "Latest serial number" -msgstr "" +msgstr "最新序列号" #: src/forms/BuildForms.tsx:222 msgid "Remove output" -msgstr "" +msgstr "移除产出" #: src/forms/BuildForms.tsx:304 msgid "Complete Build Outputs" @@ -2368,7 +2394,7 @@ msgstr "" #: src/forms/BuildForms.tsx:308 msgid "Build outputs have been completed" -msgstr "" +msgstr "生产已完成" #: src/forms/BuildForms.tsx:377 msgid "Scrap Build Outputs" @@ -2397,7 +2423,7 @@ msgstr "" #: src/forms/PartForms.tsx:100 msgid "Parent part category" -msgstr "" +msgstr "上级零件类别" #: src/forms/PartForms.tsx:106 #~ msgid "Create Part" @@ -2413,45 +2439,45 @@ msgstr "" #: src/forms/PurchaseOrderForms.tsx:279 msgid "Choose Location" -msgstr "" +msgstr "选择位置" #: src/forms/PurchaseOrderForms.tsx:287 msgid "Item Destination selected" -msgstr "" +msgstr "已选择项目目的地" #: src/forms/PurchaseOrderForms.tsx:296 msgid "Part category default location selected" -msgstr "" +msgstr "已选择零件类别默认位置" #: src/forms/PurchaseOrderForms.tsx:306 msgid "Received stock location selected" -msgstr "" +msgstr "已选择接收库存位置" #: src/forms/PurchaseOrderForms.tsx:311 msgid "Default location selected" -msgstr "" +msgstr "已选择默认位置" #: src/forms/PurchaseOrderForms.tsx:322 #: src/forms/PurchaseOrderForms.tsx:398 msgid "Scan Barcode" -msgstr "" +msgstr "扫描条形码" #: src/forms/PurchaseOrderForms.tsx:366 msgid "Set Location" -msgstr "" +msgstr "设置位置" #: src/forms/PurchaseOrderForms.tsx:373 msgid "Assign Batch Code{0}" -msgstr "" +msgstr "分配批号 {0}" #: src/forms/PurchaseOrderForms.tsx:382 msgid "Change Status" -msgstr "" +msgstr "更改状态" #: src/forms/PurchaseOrderForms.tsx:407 #: src/forms/StockForms.tsx:392 msgid "Remove item from list" -msgstr "" +msgstr "从列表中删除项目" #: src/forms/PurchaseOrderForms.tsx:432 #: src/forms/StockForms.tsx:449 @@ -2462,23 +2488,23 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/stock/StockDetail.tsx:170 +#: src/pages/stock/StockDetail.tsx:171 #: src/tables/ColumnRenderers.tsx:34 #: src/tables/stock/StockTrackingTable.tsx:85 msgid "Location" -msgstr "" +msgstr "位置" #: src/forms/PurchaseOrderForms.tsx:448 msgid "Store at default location" -msgstr "" +msgstr "存储在默认位置" #: src/forms/PurchaseOrderForms.tsx:461 msgid "Store at line item destination" -msgstr "" +msgstr "存储在行项目目标" #: src/forms/PurchaseOrderForms.tsx:471 msgid "Store with already received stock" -msgstr "" +msgstr "存储已收到的库存" #: src/forms/PurchaseOrderForms.tsx:627 msgid "Receive Line Items" @@ -2490,7 +2516,7 @@ msgstr "" #: src/forms/StockForms.tsx:101 msgid "Add given quantity as packs instead of individual items" -msgstr "" +msgstr "将给定的数量添加为包,而不是单个项目" #: src/forms/StockForms.tsx:110 #~ msgid "Create Stock Item" @@ -2498,34 +2524,34 @@ msgstr "" #: src/forms/StockForms.tsx:114 msgid "Enter initial quantity for this stock item" -msgstr "" +msgstr "输入此库存项的初始数量" #: src/forms/StockForms.tsx:121 msgid "Serial Numbers" -msgstr "" +msgstr "序列号" #: src/forms/StockForms.tsx:122 msgid "Enter serial numbers for new stock (or leave blank)" -msgstr "" +msgstr "输入新库存的序列号(或留空)" #: src/forms/StockForms.tsx:158 #~ msgid "Stock item updated" #~ msgstr "Stock item updated" #: src/forms/StockForms.tsx:176 -#: src/pages/stock/StockDetail.tsx:375 +#: src/pages/stock/StockDetail.tsx:377 #: src/tables/stock/StockItemTable.tsx:382 #: src/tables/stock/StockItemTable.tsx:499 msgid "Add Stock Item" -msgstr "" +msgstr "编辑库存项" #: src/forms/StockForms.tsx:339 msgid "Loading..." -msgstr "" +msgstr "正在加载..." #: src/forms/StockForms.tsx:381 msgid "Move to default location" -msgstr "" +msgstr "移动到默认位置" #: src/forms/StockForms.tsx:449 #: src/forms/StockForms.tsx:483 @@ -2535,15 +2561,15 @@ msgstr "" #: src/forms/StockForms.tsx:606 #: src/forms/StockForms.tsx:648 #: src/forms/StockForms.tsx:684 -#: src/pages/part/PartDetail.tsx:206 -#: src/pages/part/PartDetail.tsx:655 +#: src/pages/part/PartDetail.tsx:208 +#: src/pages/part/PartDetail.tsx:657 #: src/tables/stock/StockItemTable.tsx:290 msgid "In Stock" -msgstr "" +msgstr "入库" #: src/forms/StockForms.tsx:449 msgid "Move" -msgstr "" +msgstr "移动" #: src/forms/StockForms.tsx:449 #: src/forms/StockForms.tsx:483 @@ -2555,53 +2581,53 @@ msgstr "" #: src/forms/StockForms.tsx:684 #: src/tables/RowActions.tsx:149 msgid "Actions" -msgstr "" +msgstr "操作" #: src/forms/StockForms.tsx:512 -#: src/pages/stock/StockDetail.tsx:454 -#: src/tables/stock/StockItemTestResultTable.tsx:339 +#: src/pages/stock/StockDetail.tsx:456 +#: src/tables/stock/StockItemTestResultTable.tsx:323 msgid "Add" -msgstr "" +msgstr "添加" #: src/forms/StockForms.tsx:540 #: src/pages/Index/Scan.tsx:266 -#: src/pages/stock/StockDetail.tsx:444 +#: src/pages/stock/StockDetail.tsx:446 msgid "Count" -msgstr "" +msgstr "总计" #: src/forms/StockForms.tsx:785 msgid "Add Stock" -msgstr "" +msgstr "添加库存" #: src/forms/StockForms.tsx:794 msgid "Remove Stock" -msgstr "" +msgstr "移除库存" #: src/forms/StockForms.tsx:803 -#: src/pages/part/PartDetail.tsx:782 +#: src/pages/part/PartDetail.tsx:784 msgid "Transfer Stock" -msgstr "" +msgstr "转移库存" #: src/forms/StockForms.tsx:812 -#: src/pages/part/PartDetail.tsx:771 +#: src/pages/part/PartDetail.tsx:773 msgid "Count Stock" -msgstr "" +msgstr "库存数量" #: src/forms/StockForms.tsx:821 msgid "Change Stock Status" -msgstr "" +msgstr "更改库存状态" #: src/forms/StockForms.tsx:830 msgid "Merge Stock" -msgstr "" +msgstr "合并库存" #: src/forms/StockForms.tsx:849 msgid "Delete Stock Items" -msgstr "" +msgstr "删除库存项" #: src/forms/StockForms.tsx:856 msgid "Parent stock location" -msgstr "" +msgstr "上级库存地点" #: src/functions/auth.tsx:34 #~ msgid "Error fetching token from server." @@ -2623,22 +2649,13 @@ msgstr "" #~ msgid "You have been logged out" #~ msgstr "You have been logged out" -#: src/functions/auth.tsx:76 +#: src/functions/auth.tsx:118 msgid "Logged Out" -msgstr "" +msgstr "已登出" -#: src/functions/auth.tsx:77 +#: src/functions/auth.tsx:119 msgid "Successfully logged out" -msgstr "" - -#: src/functions/auth.tsx:115 -msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." -msgstr "" - -#: src/functions/auth.tsx:122 -#: src/pages/Auth/Set-Password.tsx:39 -msgid "Reset failed" -msgstr "" +msgstr "已成功登出" #: src/functions/auth.tsx:141 #~ msgid "Already logged in" @@ -2652,13 +2669,22 @@ msgstr "" #~ msgid "Found an existing login - welcome back!" #~ msgstr "Found an existing login - welcome back!" -#: src/functions/auth.tsx:153 -msgid "Logged In" -msgstr "" +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "查看收件箱中的重置链接。这只有在您有账户的情况下才会起作用。也请检查垃圾邮件。" -#: src/functions/auth.tsx:154 +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "重置失败" + +#: src/functions/auth.tsx:195 +msgid "Logged In" +msgstr "已登录" + +#: src/functions/auth.tsx:196 msgid "Successfully logged in" -msgstr "" +msgstr "已成功登入" #: src/functions/forms.tsx:50 #~ msgid "Form method not provided" @@ -2670,68 +2696,68 @@ msgstr "" #: src/functions/forms.tsx:182 msgid "Invalid Form" -msgstr "" +msgstr "无效的表单" #: src/functions/forms.tsx:183 msgid "method parameter not supplied" -msgstr "" +msgstr "未提供方法参数" #: src/functions/notifications.tsx:10 msgid "Not implemented" -msgstr "" +msgstr "尚未实现" #: src/functions/notifications.tsx:11 msgid "This feature is not yet implemented" -msgstr "" +msgstr "此功能尚未实现" #: src/functions/notifications.tsx:21 msgid "Permission denied" -msgstr "" +msgstr "权限不足" #: src/functions/notifications.tsx:22 msgid "You do not have permission to perform this action" -msgstr "" +msgstr "您无权执行此操作。" #: src/functions/notifications.tsx:33 msgid "Invalid Return Code" -msgstr "" +msgstr "无效返回码" #: src/functions/notifications.tsx:34 msgid "Server returned status {returnCode}" -msgstr "" +msgstr "服务器返回状态 {returnCode}" #: src/hooks/UseForm.tsx:88 msgid "Item Created" -msgstr "" +msgstr "项目已创建" #: src/hooks/UseForm.tsx:105 msgid "Item Updated" -msgstr "" +msgstr "项目已更新" #: src/hooks/UseForm.tsx:124 msgid "Item Deleted" -msgstr "" +msgstr "项目已删除" #: src/hooks/UseForm.tsx:128 msgid "Are you sure you want to delete this item?" -msgstr "" +msgstr "确实要删除此项目吗?" #: src/pages/Auth/Logged-In.tsx:23 msgid "Checking if you are already logged in" -msgstr "" +msgstr "检查您是否已经登录" #: src/pages/Auth/Login.tsx:31 #: src/pages/Index/Scan.tsx:329 msgid "No selection" -msgstr "" +msgstr "未选择" #: src/pages/Auth/Login.tsx:87 msgid "Welcome, log in below" -msgstr "" +msgstr "欢迎,请在下方登录" #: src/pages/Auth/Login.tsx:89 msgid "Register below" -msgstr "" +msgstr "点击下方注册" #: src/pages/Auth/Login.tsx:121 #~ msgid "Edit host options" @@ -2739,64 +2765,64 @@ msgstr "" #: src/pages/Auth/Logout.tsx:23 msgid "Logging out" -msgstr "" +msgstr "正在登出" #: src/pages/Auth/Reset.tsx:41 #: src/pages/Auth/Set-Password.tsx:112 msgid "Send mail" -msgstr "" +msgstr "发送邮件" #: src/pages/Auth/Set-Password.tsx:30 msgid "Token invalid" -msgstr "" +msgstr "令牌无效" #: src/pages/Auth/Set-Password.tsx:31 msgid "You need to provide a valid token to set a new password. Check your inbox for a reset link." -msgstr "" +msgstr "您需要提供一个有效的令牌来设置一个新的密码。请检查收件箱以获取重置链接。" #: src/pages/Auth/Set-Password.tsx:49 msgid "No token provided" -msgstr "" +msgstr "未提供令牌" #: src/pages/Auth/Set-Password.tsx:50 msgid "You need to provide a token to set a new password. Check your inbox for a reset link." -msgstr "" +msgstr "您需要提供一个有效的令牌来设置一个新的密码。请检查收件箱以获取重置链接。" #: src/pages/Auth/Set-Password.tsx:73 msgid "Password set" -msgstr "" +msgstr "密码已设置" #: src/pages/Auth/Set-Password.tsx:74 msgid "The password was set successfully. You can now login with your new password" -msgstr "" +msgstr "密码设置成功。您现在可以使用新密码登录" #: src/pages/Auth/Set-Password.tsx:101 msgid "Set new password" -msgstr "" +msgstr "设置新密码" #: src/pages/ErrorPage.tsx:17 msgid "Error: {0}" -msgstr "" +msgstr "错误:{0}" #: src/pages/ErrorPage.tsx:28 msgid "Sorry, an unexpected error has occurred." -msgstr "" +msgstr "抱歉,发生意外的错误。" #: src/pages/Index/Dashboard.tsx:22 msgid "Autoupdate" -msgstr "" +msgstr "自动更新" #: src/pages/Index/Dashboard.tsx:26 msgid "This page is a replacement for the old start page with the same information. This page will be deprecated and replaced by the home page." -msgstr "" +msgstr "本页是旧的起始页的替代页面,提供相同的信息。本页面将被废弃,并由主页取代。" #: src/pages/Index/Home.tsx:58 msgid "Welcome to your Dashboard{0}" -msgstr "" +msgstr "欢迎来到您的仪表板 {0}" -#: src/pages/Index/Playground.tsx:243 +#: src/pages/Index/Playground.tsx:226 msgid "This page is a showcase for the possibilities of Platform UI." -msgstr "" +msgstr "本页面展示了 Platform UI 的各种可能性。" #: src/pages/Index/Profile/Profile.tsx:30 #: src/pages/Index/Profile/Profile.tsx:141 @@ -2936,132 +2962,132 @@ msgstr "" #: src/pages/Index/Scan.tsx:216 msgid "Manual input" -msgstr "" +msgstr "手动输入" #: src/pages/Index/Scan.tsx:217 msgid "Image Barcode" -msgstr "" +msgstr "图片条形码" #: src/pages/Index/Scan.tsx:247 msgid "Selected elements are not known" -msgstr "" +msgstr "所选元素未知" #: src/pages/Index/Scan.tsx:254 msgid "Multiple object types selected" -msgstr "" +msgstr "选择多个对象类型" #: src/pages/Index/Scan.tsx:261 msgid "Actions for {0}" -msgstr "" +msgstr "对 {0} 的操作" #: src/pages/Index/Scan.tsx:282 msgid "Scan Page" -msgstr "" +msgstr "扫描页" #: src/pages/Index/Scan.tsx:285 msgid "This page can be used for continuously scanning items and taking actions on them." -msgstr "" +msgstr "该页面可用于持续扫描项目并对其进行操作。" #: src/pages/Index/Scan.tsx:292 msgid "Toggle Fullscreen" -msgstr "" +msgstr "全屏开关" #: src/pages/Index/Scan.tsx:305 msgid "Select the input method you want to use to scan items." -msgstr "" +msgstr "选择您要用于扫描项目的输入方法。" #: src/pages/Index/Scan.tsx:307 msgid "Input" -msgstr "" +msgstr "输入" #: src/pages/Index/Scan.tsx:314 msgid "Select input method" -msgstr "" +msgstr "选择输入方式" #: src/pages/Index/Scan.tsx:315 msgid "Nothing found" -msgstr "" +msgstr "无结果" #: src/pages/Index/Scan.tsx:323 msgid "Depending on the selected parts actions will be shown here. Not all barcode types are supported currently." -msgstr "" +msgstr "根据所选零件的不同,这里将显示相应的操作。目前不支持所有条形码类型。" #: src/pages/Index/Scan.tsx:325 msgid "Action" -msgstr "" +msgstr "操作" #: src/pages/Index/Scan.tsx:334 msgid "{0} items selected" -msgstr "" +msgstr "已选择 {0} 项" #: src/pages/Index/Scan.tsx:337 msgid "General Actions" -msgstr "" +msgstr "通用操作" #: src/pages/Index/Scan.tsx:351 msgid "Lookup part" -msgstr "" +msgstr "查找零件" #: src/pages/Index/Scan.tsx:359 msgid "Open Link" -msgstr "" +msgstr "打开链接" #: src/pages/Index/Scan.tsx:375 msgid "History is locally kept in this browser." -msgstr "" +msgstr "历史记录被本地保存在此浏览器。" #: src/pages/Index/Scan.tsx:376 msgid "The history is kept in this browser's local storage. So it won't be shared with other users or other devices but is persistent through reloads. You can select items in the history to perform actions on them. To add items, scan/enter them in the Input area." -msgstr "" +msgstr "历史记录保存在浏览器的本地存储中。因此,它不会与其他用户或其他设备共享,但在重新加载时会持续存在。您可以选择历史记录中的项目,对其执行操作。要添加项目,请在输入区扫描/输入。" #: src/pages/Index/Scan.tsx:378 #: src/pages/Notifications.tsx:100 msgid "History" -msgstr "" +msgstr "历史记录" #: src/pages/Index/Scan.tsx:384 msgid "Delete History" -msgstr "" +msgstr "删除历史记录" #: src/pages/Index/Scan.tsx:449 msgid "No history" -msgstr "" +msgstr "无历史记录" #: src/pages/Index/Scan.tsx:467 msgid "Item" -msgstr "" +msgstr "项目" #: src/pages/Index/Scan.tsx:470 msgid "Type" -msgstr "" +msgstr "类型" #: src/pages/Index/Scan.tsx:473 msgid "Source" -msgstr "" +msgstr "来源" #: src/pages/Index/Scan.tsx:476 msgid "Scanned at" -msgstr "" +msgstr "扫描于" #: src/pages/Index/Scan.tsx:528 msgid "Enter item serial or data" -msgstr "" +msgstr "输入项目序列号或数据" #: src/pages/Index/Scan.tsx:540 msgid "Add dummy item" -msgstr "" +msgstr "添加虚拟项目" #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:37 msgid "Account Details" -msgstr "" +msgstr "账户详情" #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:46 msgid "First name" -msgstr "" +msgstr "名" #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51 msgid "Last name" -msgstr "" +msgstr "姓" #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:58 #~ msgid "First name: {0}" @@ -3073,128 +3099,128 @@ msgstr "" #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:63 msgid "First name:" -msgstr "" +msgstr "名:" #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:67 msgid "Last name:" -msgstr "" +msgstr "姓:" #: src/pages/Index/Settings/AccountSettings/DisplaySettingsPanel.tsx:41 msgid "Use pseudo language" -msgstr "" +msgstr "使用 pseudo 语言" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:53 msgid "Single Sign On Accounts" -msgstr "" +msgstr "单点登录账户" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:60 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:78 msgid "Not enabled" -msgstr "" +msgstr "未启用" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:63 msgid "Single Sign On is not enabled for this server" -msgstr "" +msgstr "此服务器未启用单点登录" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:67 msgid "Multifactor" -msgstr "" +msgstr "多因素身份验证" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:81 msgid "Multifactor authentication is not configured for your account" -msgstr "" +msgstr "您的账户未配置多因素身份验证" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:132 msgid "The following email addresses are associated with your account:" -msgstr "" +msgstr "以下电子邮件地址与您的账户相关联:" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:144 msgid "Primary" -msgstr "" +msgstr "主要的" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:149 msgid "Verified" -msgstr "" +msgstr "已验证" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:153 msgid "Unverified" -msgstr "" +msgstr "未验证" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:166 msgid "Add Email Address" -msgstr "" +msgstr "添加电子邮件地址" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:169 msgid "E-Mail" -msgstr "" +msgstr "邮箱" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:170 msgid "E-Mail address" -msgstr "" +msgstr "邮箱地址" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:182 msgid "Make Primary" -msgstr "" +msgstr "设为首选" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:187 msgid "Re-send Verification" -msgstr "" +msgstr "重新发送验证" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:198 msgid "Add Email" -msgstr "" +msgstr "添加电子邮件" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:263 msgid "Provider has not been configured" -msgstr "" +msgstr "未配置提供商" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:273 msgid "Not configured" -msgstr "" +msgstr "未配置" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:276 msgid "There are no social network accounts connected to this account." -msgstr "" +msgstr "您当前没有连接到此账户的社交网络账户。" #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:286 msgid "You can sign in to your account using any of the following third party accounts" -msgstr "" +msgstr "您可以使用下列任何第三方账户登录您的账户" #: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:65 msgid "bars" -msgstr "" +msgstr "栏" #: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:66 msgid "oval" -msgstr "" +msgstr "椭圆" #: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:67 msgid "dots" -msgstr "" +msgstr "点" #: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:81 msgid "Theme" -msgstr "" +msgstr "主题" #: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:87 msgid "Primary color" -msgstr "" +msgstr "主要颜色" #: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:100 msgid "White color" -msgstr "" +msgstr "白色" #: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:108 msgid "Black color" -msgstr "" +msgstr "黑色" #: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:116 msgid "Border Radius" -msgstr "" +msgstr "边框半径" #: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:132 msgid "Loader" -msgstr "" +msgstr "加载器" #: src/pages/Index/Settings/AdminCenter.tsx:30 #~ msgid "User Management" @@ -3206,24 +3232,24 @@ msgstr "" #: src/pages/Index/Settings/AdminCenter/Index.tsx:87 msgid "Background Tasks" -msgstr "" +msgstr "后台任务" #: src/pages/Index/Settings/AdminCenter/Index.tsx:93 msgid "Error Reports" -msgstr "" +msgstr "错误报告" #: src/pages/Index/Settings/AdminCenter/Index.tsx:99 msgid "Currencies" -msgstr "" +msgstr "币种" #: src/pages/Index/Settings/AdminCenter/Index.tsx:117 msgid "Custom Units" -msgstr "" +msgstr "自定义单位" #: src/pages/Index/Settings/AdminCenter/Index.tsx:123 #: src/pages/part/CategoryDetail.tsx:255 msgid "Part Parameters" -msgstr "" +msgstr "零件参数" #: src/pages/Index/Settings/AdminCenter/Index.tsx:127 #~ msgid "Templates" @@ -3231,49 +3257,49 @@ msgstr "" #: src/pages/Index/Settings/AdminCenter/Index.tsx:129 msgid "Category Parameters" -msgstr "" +msgstr "类别参数" #: src/pages/Index/Settings/AdminCenter/Index.tsx:147 msgid "Location types" -msgstr "" +msgstr "地点类型" #: src/pages/Index/Settings/AdminCenter/Index.tsx:159 #: src/tables/machine/MachineTypeTable.tsx:287 msgid "Machines" -msgstr "" +msgstr "设备" #: src/pages/Index/Settings/AdminCenter/Index.tsx:169 msgid "Quick Actions" -msgstr "" +msgstr "快捷操作" #: src/pages/Index/Settings/AdminCenter/Index.tsx:174 msgid "Add a new user" -msgstr "" +msgstr "添加新用户" #: src/pages/Index/Settings/AdminCenter/Index.tsx:193 msgid "Advanced Options" -msgstr "" +msgstr "高级选项" #: src/pages/Index/Settings/AdminCenter/MachineManagementPanel.tsx:43 msgid "Machine types" -msgstr "" +msgstr "设备类型" #: src/pages/Index/Settings/AdminCenter/MachineManagementPanel.tsx:53 msgid "Machine Error Stack" -msgstr "" +msgstr "设备错误堆栈" #: src/pages/Index/Settings/AdminCenter/MachineManagementPanel.tsx:62 msgid "There are no machine registry errors." -msgstr "" +msgstr "没有设备注册表错误。" #: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:28 #: src/tables/settings/UserTable.tsx:116 msgid "Info" -msgstr "" +msgstr "信息" #: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:32 msgid "External plugins are not enabled for this InvenTree installation." -msgstr "" +msgstr "此 InventTree 未启用外部插件。" #: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:33 #~ msgid "Plugin Error Stack" @@ -3289,15 +3315,15 @@ msgstr "" #: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:50 msgid "Plugin Errors" -msgstr "" +msgstr "插件错误" #: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:59 msgid "Plugin Settings" -msgstr "" +msgstr "插件设置" #: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:53 msgid "Background Worker Not Running" -msgstr "" +msgstr "后台程序未运行" #: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:54 msgid "The background task manager service is not running. Contact your system administrator." @@ -3306,17 +3332,17 @@ msgstr "" #: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:60 #: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:76 msgid "Pending Tasks" -msgstr "" +msgstr "待完成任务" #: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:64 #: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:84 msgid "Scheduled Tasks" -msgstr "" +msgstr "计划任务" #: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:68 #: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:92 msgid "Failed Tasks" -msgstr "" +msgstr "失败任务" #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:39 #~ msgid "Label" @@ -3362,27 +3388,27 @@ msgstr "" #: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:18 #: src/tables/settings/UserTable.tsx:135 msgid "Groups" -msgstr "" +msgstr "群组" #: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:30 msgid "Select settings relevant for user lifecycle. More available in" -msgstr "" +msgstr "选择与用户生命周期相关的设置。更多详情见 " #: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:35 msgid "System settings" -msgstr "" +msgstr "系统设置" -#: src/pages/Index/Settings/SystemSettings.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:65 msgid "Login" -msgstr "" +msgstr "登录" -#: src/pages/Index/Settings/SystemSettings.tsx:86 +#: src/pages/Index/Settings/SystemSettings.tsx:87 msgid "Barcodes" -msgstr "" +msgstr "条形码" -#: src/pages/Index/Settings/SystemSettings.tsx:105 +#: src/pages/Index/Settings/SystemSettings.tsx:107 msgid "Pricing" -msgstr "" +msgstr "定价" #: src/pages/Index/Settings/SystemSettings.tsx:118 #~ msgid "Physical Units" @@ -3392,52 +3418,52 @@ msgstr "" #~ msgid "Exchange Rates" #~ msgstr "Exchange Rates" -#: src/pages/Index/Settings/SystemSettings.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:142 msgid "Labels" -msgstr "" +msgstr "标签" -#: src/pages/Index/Settings/SystemSettings.tsx:145 -#: src/pages/Index/Settings/UserSettings.tsx:99 +#: src/pages/Index/Settings/SystemSettings.tsx:148 +#: src/pages/Index/Settings/UserSettings.tsx:102 msgid "Reporting" -msgstr "" +msgstr "报告" -#: src/pages/Index/Settings/SystemSettings.tsx:224 -#: src/pages/part/PartDetail.tsx:590 +#: src/pages/Index/Settings/SystemSettings.tsx:228 +#: src/pages/part/PartDetail.tsx:595 #: src/tables/stock/StockItemTable.tsx:221 msgid "Stocktake" -msgstr "" +msgstr "库存盘点" -#: src/pages/Index/Settings/SystemSettings.tsx:229 -#: src/pages/build/BuildDetail.tsx:425 +#: src/pages/Index/Settings/SystemSettings.tsx:234 +#: src/pages/build/BuildDetail.tsx:421 #: src/pages/build/BuildIndex.tsx:14 -#: src/pages/part/PartDetail.tsx:526 -#: src/pages/sales/SalesOrderDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:529 +#: src/pages/sales/SalesOrderDetail.tsx:269 msgid "Build Orders" -msgstr "" +msgstr "生产订单" -#: src/pages/Index/Settings/SystemSettings.tsx:297 +#: src/pages/Index/Settings/SystemSettings.tsx:303 msgid "Switch to User Setting" -msgstr "" +msgstr "切换到用户设置" -#: src/pages/Index/Settings/UserSettings.tsx:29 +#: src/pages/Index/Settings/UserSettings.tsx:30 msgid "Account" -msgstr "" +msgstr "账户" -#: src/pages/Index/Settings/UserSettings.tsx:35 +#: src/pages/Index/Settings/UserSettings.tsx:36 msgid "Security" -msgstr "" +msgstr "安全" -#: src/pages/Index/Settings/UserSettings.tsx:46 +#: src/pages/Index/Settings/UserSettings.tsx:48 msgid "Display Options" -msgstr "" +msgstr "显示选项" -#: src/pages/Index/Settings/UserSettings.tsx:115 +#: src/pages/Index/Settings/UserSettings.tsx:118 msgid "Account Settings" -msgstr "" +msgstr "账户设置" -#: src/pages/Index/Settings/UserSettings.tsx:119 +#: src/pages/Index/Settings/UserSettings.tsx:122 msgid "Switch to System Setting" -msgstr "" +msgstr "切换到系统设置" #: src/pages/Index/UserSettings.tsx:103 #~ msgid "User Settings" @@ -3449,23 +3475,23 @@ msgstr "" #: src/pages/NotFound.tsx:17 msgid "Not Found" -msgstr "" +msgstr "未找到" #: src/pages/NotFound.tsx:20 msgid "Sorry, this page is not known or was moved." -msgstr "" +msgstr "抱歉,此页面未知或已移动。" #: src/pages/NotFound.tsx:27 msgid "Go to the start page" -msgstr "" +msgstr "转到起始页" #: src/pages/Notifications.tsx:43 msgid "Delete Notifications" -msgstr "" +msgstr "删除通知" #: src/pages/Notifications.tsx:108 msgid "Mark as unread" -msgstr "" +msgstr "标记为未读" #: src/pages/build/BuildDetail.tsx:80 #~ msgid "Build Status" @@ -3473,8 +3499,8 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:89 #: src/pages/purchasing/PurchaseOrderDetail.tsx:130 -#: src/pages/sales/ReturnOrderDetail.tsx:97 -#: src/pages/sales/SalesOrderDetail.tsx:101 +#: src/pages/sales/ReturnOrderDetail.tsx:98 +#: src/pages/sales/SalesOrderDetail.tsx:102 #: src/tables/build/BuildOrderTable.tsx:113 #: src/tables/machine/MachineListTable.tsx:326 #: src/tables/purchasing/PurchaseOrderTable.tsx:55 @@ -3483,26 +3509,26 @@ msgstr "" #: src/tables/stock/StockItemTable.tsx:259 #: src/tables/stock/StockTrackingTable.tsx:52 msgid "Status" -msgstr "" +msgstr "状态" #: src/pages/build/BuildDetail.tsx:95 #: src/pages/purchasing/PurchaseOrderDetail.tsx:103 -#: src/pages/sales/ReturnOrderDetail.tsx:71 -#: src/pages/sales/SalesOrderDetail.tsx:75 +#: src/pages/sales/ReturnOrderDetail.tsx:72 +#: src/pages/sales/SalesOrderDetail.tsx:76 #: src/tables/ColumnRenderers.tsx:106 #: src/tables/build/BuildLineTable.tsx:140 msgid "Reference" -msgstr "" +msgstr "参考" #: src/pages/build/BuildDetail.tsx:100 #: src/pages/company/CompanyDetail.tsx:86 #: src/pages/company/ManufacturerPartDetail.tsx:76 #: src/pages/company/SupplierPartDetail.tsx:83 #: src/pages/part/CategoryDetail.tsx:92 -#: src/pages/part/PartDetail.tsx:133 +#: src/pages/part/PartDetail.tsx:135 #: src/pages/purchasing/PurchaseOrderDetail.tsx:124 -#: src/pages/sales/ReturnOrderDetail.tsx:91 -#: src/pages/sales/SalesOrderDetail.tsx:95 +#: src/pages/sales/ReturnOrderDetail.tsx:92 +#: src/pages/sales/SalesOrderDetail.tsx:96 #: src/pages/stock/LocationDetail.tsx:99 #: src/tables/ColumnRenderers.tsx:66 #: src/tables/machine/MachineTypeTable.tsx:69 @@ -3514,62 +3540,62 @@ msgstr "" #: src/tables/plugin/PluginListTable.tsx:276 #: src/tables/stock/LocationTypesTable.tsx:65 msgid "Description" -msgstr "" +msgstr "描述" #: src/pages/build/BuildDetail.tsx:107 msgid "Parent Build" -msgstr "" +msgstr "上级生产" #: src/pages/build/BuildDetail.tsx:118 msgid "Build Quantity" -msgstr "" +msgstr "生产数量" #: src/pages/build/BuildDetail.tsx:126 #: src/pages/build/BuildDetail.tsx:256 msgid "Completed Outputs" -msgstr "" +msgstr "已出产" #: src/pages/build/BuildDetail.tsx:143 #: src/tables/build/BuildOrderTable.tsx:142 msgid "Issued By" -msgstr "" +msgstr "发布人" #: src/pages/build/BuildDetail.tsx:150 -#: src/pages/part/PartDetail.tsx:321 +#: src/pages/part/PartDetail.tsx:323 #: src/pages/purchasing/PurchaseOrderDetail.tsx:216 -#: src/pages/sales/ReturnOrderDetail.tsx:184 -#: src/pages/sales/SalesOrderDetail.tsx:188 +#: src/pages/sales/ReturnOrderDetail.tsx:185 +#: src/pages/sales/SalesOrderDetail.tsx:189 #: src/tables/build/BuildOrderTable.tsx:148 #: src/tables/purchasing/PurchaseOrderTable.tsx:75 #: src/tables/sales/ReturnOrderTable.tsx:66 #: src/tables/sales/SalesOrderTable.tsx:72 msgid "Responsible" -msgstr "" +msgstr "责任人" #: src/pages/build/BuildDetail.tsx:157 #: src/tables/settings/PendingTasksTable.tsx:30 msgid "Created" -msgstr "" +msgstr "已创建" #: src/pages/build/BuildDetail.tsx:164 #: src/pages/purchasing/PurchaseOrderDetail.tsx:209 -#: src/pages/sales/ReturnOrderDetail.tsx:177 -#: src/pages/sales/SalesOrderDetail.tsx:181 +#: src/pages/sales/ReturnOrderDetail.tsx:178 +#: src/pages/sales/SalesOrderDetail.tsx:182 #: src/tables/ColumnRenderers.tsx:191 msgid "Target Date" -msgstr "" +msgstr "预计日期" #: src/pages/build/BuildDetail.tsx:171 msgid "Completed" -msgstr "" +msgstr "已完成" #: src/pages/build/BuildDetail.tsx:183 msgid "Source Location" -msgstr "" +msgstr "来源地点" #: src/pages/build/BuildDetail.tsx:184 msgid "Any location" -msgstr "" +msgstr "任意地点" #: src/pages/build/BuildDetail.tsx:185 #: src/pages/part/PartDetail.tsx:269 @@ -3584,7 +3610,7 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:191 msgid "Destination Location" -msgstr "" +msgstr "目标地点" #: src/pages/build/BuildDetail.tsx:196 #: src/pages/part/PartDetail.tsx:280 @@ -3592,9 +3618,9 @@ msgstr "" #~ msgstr "Unlink custom barcode from part" #: src/pages/build/BuildDetail.tsx:197 -#: src/pages/stock/StockDetail.tsx:526 +#: src/pages/stock/StockDetail.tsx:537 msgid "Batch Code" -msgstr "" +msgstr "批号" #: src/pages/build/BuildDetail.tsx:202 #~ msgid "Build Order updated" @@ -3610,7 +3636,7 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:229 msgid "Build Details" -msgstr "" +msgstr "生产详情" #: src/pages/build/BuildDetail.tsx:231 #~ msgid "Delete build order" @@ -3619,74 +3645,74 @@ msgstr "" #: src/pages/build/BuildDetail.tsx:235 #: src/tables/build/BuildLineTable.tsx:225 msgid "Allocate Stock" -msgstr "" +msgstr "分配库存" #: src/pages/build/BuildDetail.tsx:249 msgid "Incomplete Outputs" -msgstr "" +msgstr "未出产" #: src/pages/build/BuildDetail.tsx:271 msgid "Consumed Stock" -msgstr "" +msgstr "已消耗库存" #: src/pages/build/BuildDetail.tsx:285 msgid "Child Build Orders" -msgstr "" +msgstr "子生产订单" #: src/pages/build/BuildDetail.tsx:295 #: src/pages/company/CompanyDetail.tsx:255 #: src/pages/company/ManufacturerPartDetail.tsx:172 -#: src/pages/part/PartDetail.tsx:612 +#: src/pages/part/PartDetail.tsx:618 #: src/pages/purchasing/PurchaseOrderDetail.tsx:278 -#: src/pages/sales/ReturnOrderDetail.tsx:227 -#: src/pages/sales/SalesOrderDetail.tsx:275 -#: src/pages/stock/StockDetail.tsx:325 +#: src/pages/sales/ReturnOrderDetail.tsx:229 +#: src/pages/sales/SalesOrderDetail.tsx:279 +#: src/pages/stock/StockDetail.tsx:328 msgid "Attachments" -msgstr "" +msgstr "附件" -#: src/pages/build/BuildDetail.tsx:307 -#: src/pages/company/CompanyDetail.tsx:267 -#: src/pages/part/PartDetail.tsx:624 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 -#: src/pages/sales/ReturnOrderDetail.tsx:239 -#: src/pages/sales/SalesOrderDetail.tsx:287 -#: src/pages/stock/StockDetail.tsx:337 +#: src/pages/build/BuildDetail.tsx:303 +#: src/pages/company/CompanyDetail.tsx:266 +#: src/pages/part/PartDetail.tsx:626 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:289 +#: src/pages/sales/ReturnOrderDetail.tsx:240 +#: src/pages/sales/SalesOrderDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:339 #: src/tables/stock/StockTrackingTable.tsx:189 msgid "Notes" -msgstr "" +msgstr "备注" -#: src/pages/build/BuildDetail.tsx:325 +#: src/pages/build/BuildDetail.tsx:321 msgid "Edit Build Order" -msgstr "" +msgstr "编辑生产订单" -#: src/pages/build/BuildDetail.tsx:334 +#: src/pages/build/BuildDetail.tsx:330 msgid "Cancel Build Order" -msgstr "" +msgstr "取消生产订单" -#: src/pages/build/BuildDetail.tsx:346 +#: src/pages/build/BuildDetail.tsx:342 #: src/tables/build/BuildOrderTable.tsx:167 #: src/tables/build/BuildOrderTable.tsx:182 msgid "Add Build Order" -msgstr "" +msgstr "添加生产订单" #: src/pages/build/BuildDetail.tsx:368 #~ msgid "Reporting Actions" #~ msgstr "Reporting Actions" +#: src/pages/build/BuildDetail.tsx:374 +msgid "Build Order Actions" +msgstr "生产订单操作" + #: src/pages/build/BuildDetail.tsx:374 #~ msgid "Print build report" #~ msgstr "Print build report" -#: src/pages/build/BuildDetail.tsx:378 -msgid "Build Order Actions" -msgstr "" - -#: src/pages/build/BuildDetail.tsx:386 -#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 -#: src/pages/sales/ReturnOrderDetail.tsx:307 -#: src/pages/sales/SalesOrderDetail.tsx:317 +#: src/pages/build/BuildDetail.tsx:382 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:332 +#: src/pages/sales/ReturnOrderDetail.tsx:308 +#: src/pages/sales/SalesOrderDetail.tsx:320 msgid "Cancel order" -msgstr "" +msgstr "取消订单" #: src/pages/build/BuildIndex.tsx:23 #~ msgid "Build order created" @@ -3698,15 +3724,15 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:100 msgid "Phone Number" -msgstr "" +msgstr "电话号码" #: src/pages/company/CompanyDetail.tsx:107 msgid "Email Address" -msgstr "" +msgstr "电子邮件地址" #: src/pages/company/CompanyDetail.tsx:117 msgid "Default Currency" -msgstr "" +msgstr "默认货币单位" #: src/pages/company/CompanyDetail.tsx:122 #: src/pages/company/SupplierDetail.tsx:8 @@ -3718,38 +3744,38 @@ msgstr "" #: src/tables/purchasing/PurchaseOrderTable.tsx:88 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:36 msgid "Supplier" -msgstr "" +msgstr "供应商" #: src/pages/company/CompanyDetail.tsx:128 #: src/pages/company/ManufacturerDetail.tsx:8 #: src/pages/company/ManufacturerPartDetail.tsx:94 -#: src/pages/company/ManufacturerPartDetail.tsx:239 +#: src/pages/company/ManufacturerPartDetail.tsx:238 #: src/pages/company/SupplierPartDetail.tsx:122 #: src/tables/company/CompanyTable.tsx:105 msgid "Manufacturer" -msgstr "" +msgstr "制造商" #: src/pages/company/CompanyDetail.tsx:134 #: src/pages/company/CustomerDetail.tsx:8 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:39 -#: src/pages/sales/ReturnOrderDetail.tsx:85 -#: src/pages/sales/SalesOrderDetail.tsx:89 -#: src/pages/stock/StockDetail.tsx:219 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:86 +#: src/pages/sales/SalesOrderDetail.tsx:90 +#: src/pages/stock/StockDetail.tsx:220 #: src/tables/company/CompanyTable.tsx:110 #: src/tables/sales/ReturnOrderTable.tsx:78 #: src/tables/sales/SalesOrderTable.tsx:107 #: src/tables/stock/StockTrackingTable.tsx:140 msgid "Customer" -msgstr "" +msgstr "客户" #: src/pages/company/CompanyDetail.tsx:168 #: src/tables/stock/StockTrackingTable.tsx:183 msgid "Details" -msgstr "" +msgstr "详情" #: src/pages/company/CompanyDetail.tsx:174 msgid "Manufactured Parts" -msgstr "" +msgstr "制成零件" #: src/pages/company/CompanyDetail.tsx:175 #~ msgid "Edit company" @@ -3757,7 +3783,7 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:183 msgid "Supplied Parts" -msgstr "" +msgstr "已提供的零件" #: src/pages/company/CompanyDetail.tsx:189 #~ msgid "Delete company" @@ -3765,191 +3791,191 @@ msgstr "" #: src/pages/company/CompanyDetail.tsx:228 msgid "Assigned Stock" -msgstr "" +msgstr "已分配的库存" -#: src/pages/company/CompanyDetail.tsx:283 +#: src/pages/company/CompanyDetail.tsx:286 #: src/tables/company/CompanyTable.tsx:86 msgid "Edit Company" -msgstr "" +msgstr "编辑公司" -#: src/pages/company/CompanyDetail.tsx:292 +#: src/pages/company/CompanyDetail.tsx:295 msgid "Company Actions" -msgstr "" +msgstr "公司操作" #: src/pages/company/ManufacturerPartDetail.tsx:69 #: src/pages/company/SupplierPartDetail.tsx:76 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:72 msgid "Internal Part" -msgstr "" +msgstr "内部零件" #: src/pages/company/ManufacturerPartDetail.tsx:84 #: src/pages/company/SupplierPartDetail.tsx:90 msgid "External Link" -msgstr "" +msgstr "外部链接" #: src/pages/company/ManufacturerPartDetail.tsx:102 #: src/pages/company/SupplierPartDetail.tsx:131 #: src/tables/purchasing/ManufacturerPartTable.tsx:56 msgid "Manufacturer Part Number" -msgstr "" +msgstr "制造商零件编号" #: src/pages/company/ManufacturerPartDetail.tsx:131 msgid "Manufacturer Details" -msgstr "" +msgstr "制造商详情" #: src/pages/company/ManufacturerPartDetail.tsx:140 msgid "Manufacturer Part Details" -msgstr "" +msgstr "制造商零件详情" #: src/pages/company/ManufacturerPartDetail.tsx:146 -#: src/pages/part/PartDetail.tsx:486 +#: src/pages/part/PartDetail.tsx:488 msgid "Parameters" -msgstr "" +msgstr "参数" #: src/pages/company/ManufacturerPartDetail.tsx:158 -#: src/pages/part/PartDetail.tsx:559 +#: src/pages/part/PartDetail.tsx:562 #: src/pages/purchasing/PurchasingIndex.tsx:26 msgid "Suppliers" -msgstr "" +msgstr "供应商" -#: src/pages/company/ManufacturerPartDetail.tsx:190 +#: src/pages/company/ManufacturerPartDetail.tsx:189 #: src/tables/purchasing/ManufacturerPartTable.tsx:84 msgid "Edit Manufacturer Part" -msgstr "" +msgstr "编辑制造商零件" -#: src/pages/company/ManufacturerPartDetail.tsx:197 +#: src/pages/company/ManufacturerPartDetail.tsx:196 #: src/tables/purchasing/ManufacturerPartTable.tsx:72 #: src/tables/purchasing/ManufacturerPartTable.tsx:103 msgid "Add Manufacturer Part" -msgstr "" +msgstr "添加制造商零件" -#: src/pages/company/ManufacturerPartDetail.tsx:213 +#: src/pages/company/ManufacturerPartDetail.tsx:212 msgid "Manufacturer Part Actions" -msgstr "" +msgstr "制造商零件操作" -#: src/pages/company/ManufacturerPartDetail.tsx:251 +#: src/pages/company/ManufacturerPartDetail.tsx:250 msgid "ManufacturerPart" -msgstr "" +msgstr "制造商零件" #: src/pages/company/SupplierPartDetail.tsx:97 #: src/tables/ColumnRenderers.tsx:117 msgid "Note" -msgstr "" +msgstr "备注" #: src/pages/company/SupplierPartDetail.tsx:115 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:57 msgid "SKU" -msgstr "" +msgstr "库存单位 (SKU)" #: src/pages/company/SupplierPartDetail.tsx:143 #: src/pages/company/SupplierPartDetail.tsx:194 -#: src/pages/stock/StockDetail.tsx:233 +#: src/pages/stock/StockDetail.tsx:234 msgid "Packaging" -msgstr "" +msgstr "包装" #: src/pages/company/SupplierPartDetail.tsx:150 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:107 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:143 #: src/tables/purchasing/SupplierPartTable.tsx:131 msgid "Pack Quantity" -msgstr "" +msgstr "包装数量" #: src/pages/company/SupplierPartDetail.tsx:161 msgid "Supplier Availability" -msgstr "" +msgstr "供应商可用性" #: src/pages/company/SupplierPartDetail.tsx:168 msgid "Availability Updated" -msgstr "" +msgstr "可用性已更新" #: src/pages/company/SupplierPartDetail.tsx:195 msgid "Availability" -msgstr "" +msgstr "可用性" #: src/pages/company/SupplierPartDetail.tsx:204 msgid "Supplier Part Details" -msgstr "" +msgstr "供应商零件详情" #: src/pages/company/SupplierPartDetail.tsx:210 #: src/pages/purchasing/PurchaseOrderDetail.tsx:265 msgid "Received Stock" -msgstr "" +msgstr "接收库存" #: src/pages/company/SupplierPartDetail.tsx:234 #: src/pages/part/PartPricingPanel.tsx:115 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:130 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 msgid "Supplier Pricing" -msgstr "" +msgstr "供应商价格" #: src/pages/company/SupplierPartDetail.tsx:249 msgid "Supplier Part Actions" -msgstr "" +msgstr "供应商零件操作" #: src/pages/company/SupplierPartDetail.tsx:273 #: src/tables/purchasing/SupplierPartTable.tsx:210 msgid "Edit Supplier Part" -msgstr "" +msgstr "编辑供应商零件" #: src/pages/company/SupplierPartDetail.tsx:280 #: src/tables/purchasing/SupplierPartTable.tsx:163 msgid "Add Supplier Part" -msgstr "" +msgstr "添加供应商零件" #: src/pages/part/CategoryDetail.tsx:84 #: src/pages/stock/LocationDetail.tsx:91 #: src/tables/settings/ErrorTable.tsx:34 msgid "Path" -msgstr "" +msgstr "路径" #: src/pages/part/CategoryDetail.tsx:100 msgid "Parent Category" -msgstr "" +msgstr "上级类别" #: src/pages/part/CategoryDetail.tsx:117 msgid "Subcategories" -msgstr "" +msgstr "子类别" #: src/pages/part/CategoryDetail.tsx:124 #: src/pages/stock/LocationDetail.tsx:131 #: src/tables/part/PartCategoryTable.tsx:65 msgid "Structural" -msgstr "" +msgstr "结构性" #: src/pages/part/CategoryDetail.tsx:130 msgid "Parent default location" -msgstr "" +msgstr "上级默认位置" #: src/pages/part/CategoryDetail.tsx:137 msgid "Default location" -msgstr "" +msgstr "默认位置" #: src/pages/part/CategoryDetail.tsx:148 msgid "Top level part category" -msgstr "" +msgstr "最高级零件类别" #: src/pages/part/CategoryDetail.tsx:158 #: src/pages/part/CategoryDetail.tsx:212 #: src/tables/part/PartCategoryTable.tsx:88 msgid "Edit Part Category" -msgstr "" +msgstr "编辑零件类别" #: src/pages/part/CategoryDetail.tsx:171 #: src/pages/stock/LocationDetail.tsx:223 msgid "Delete items" -msgstr "" +msgstr "删除项" #: src/pages/part/CategoryDetail.tsx:179 #: src/pages/part/CategoryDetail.tsx:217 msgid "Delete Part Category" -msgstr "" +msgstr "删除零件类别" #: src/pages/part/CategoryDetail.tsx:182 msgid "Parts Action" -msgstr "" +msgstr "零件操作" #: src/pages/part/CategoryDetail.tsx:183 msgid "Action for parts in this category" -msgstr "" +msgstr "对此类别中零件的操作" #: src/pages/part/CategoryDetail.tsx:188 msgid "Child Categories Action" @@ -3961,91 +3987,91 @@ msgstr "" #: src/pages/part/CategoryDetail.tsx:207 msgid "Category Actions" -msgstr "" +msgstr "类别操作" #: src/pages/part/CategoryDetail.tsx:229 msgid "Category Details" -msgstr "" +msgstr "类别详情" -#: src/pages/part/PartDetail.tsx:139 +#: src/pages/part/PartDetail.tsx:141 msgid "Variant of" -msgstr "" +msgstr "变体于" -#: src/pages/part/PartDetail.tsx:146 +#: src/pages/part/PartDetail.tsx:148 #: src/tables/notifications/NotificationsTable.tsx:31 #: src/tables/part/PartCategoryTemplateTable.tsx:67 msgid "Category" -msgstr "" +msgstr "类别" -#: src/pages/part/PartDetail.tsx:152 +#: src/pages/part/PartDetail.tsx:154 msgid "Default Location" -msgstr "" +msgstr "默认位置" -#: src/pages/part/PartDetail.tsx:159 +#: src/pages/part/PartDetail.tsx:161 msgid "Category Default Location" -msgstr "" +msgstr "类别默认位置" -#: src/pages/part/PartDetail.tsx:166 +#: src/pages/part/PartDetail.tsx:168 msgid "IPN" -msgstr "" +msgstr "内部零件编码 IPN" -#: src/pages/part/PartDetail.tsx:173 +#: src/pages/part/PartDetail.tsx:175 msgid "Revision" -msgstr "" +msgstr "版本" -#: src/pages/part/PartDetail.tsx:180 +#: src/pages/part/PartDetail.tsx:182 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 msgid "Units" -msgstr "" +msgstr "单位" -#: src/pages/part/PartDetail.tsx:187 +#: src/pages/part/PartDetail.tsx:189 #: src/tables/settings/PendingTasksTable.tsx:40 msgid "Keywords" -msgstr "" +msgstr "关键词" -#: src/pages/part/PartDetail.tsx:194 +#: src/pages/part/PartDetail.tsx:196 #: src/pages/purchasing/PurchaseOrderDetail.tsx:182 -#: src/pages/sales/ReturnOrderDetail.tsx:150 -#: src/pages/sales/SalesOrderDetail.tsx:154 +#: src/pages/sales/ReturnOrderDetail.tsx:151 +#: src/pages/sales/SalesOrderDetail.tsx:155 msgid "Link" -msgstr "" +msgstr "链接" -#: src/pages/part/PartDetail.tsx:212 +#: src/pages/part/PartDetail.tsx:214 #: src/tables/bom/BomTable.tsx:271 #: src/tables/build/BuildLineTable.tsx:121 msgid "Available Stock" -msgstr "" +msgstr "可用库存" -#: src/pages/part/PartDetail.tsx:219 +#: src/pages/part/PartDetail.tsx:221 msgid "Minimum Stock" -msgstr "" +msgstr "最低库存" -#: src/pages/part/PartDetail.tsx:225 +#: src/pages/part/PartDetail.tsx:227 #: src/tables/bom/BomTable.tsx:212 #: src/tables/build/BuildLineTable.tsx:95 msgid "On order" -msgstr "" +msgstr "订购中" -#: src/pages/part/PartDetail.tsx:234 +#: src/pages/part/PartDetail.tsx:236 msgid "Allocated to Build Orders" -msgstr "" +msgstr "分配生产订单" -#: src/pages/part/PartDetail.tsx:242 +#: src/pages/part/PartDetail.tsx:244 msgid "Allocated to Sales Orders" -msgstr "" +msgstr "分配销售订单" -#: src/pages/part/PartDetail.tsx:249 +#: src/pages/part/PartDetail.tsx:251 #: src/tables/bom/BomTable.tsx:236 msgid "Can Build" -msgstr "" +msgstr "可以创建" -#: src/pages/part/PartDetail.tsx:256 +#: src/pages/part/PartDetail.tsx:258 #: src/tables/bom/BomTable.tsx:220 #: src/tables/part/PartTable.tsx:82 msgid "Building" -msgstr "" +msgstr "正在生产" -#: src/pages/part/PartDetail.tsx:265 +#: src/pages/part/PartDetail.tsx:267 #: src/tables/bom/UsedInTable.tsx:73 #: src/tables/build/BuildOrderTable.tsx:108 #: src/tables/company/CompanyTable.tsx:61 @@ -4061,50 +4087,50 @@ msgstr "" #: src/tables/purchasing/SupplierPartTable.tsx:187 #: src/tables/stock/StockItemTable.tsx:254 msgid "Active" -msgstr "" +msgstr "激活" -#: src/pages/part/PartDetail.tsx:270 +#: src/pages/part/PartDetail.tsx:272 msgid "Template Part" -msgstr "" +msgstr "模板零件" -#: src/pages/part/PartDetail.tsx:275 +#: src/pages/part/PartDetail.tsx:277 #: src/tables/bom/BomTable.tsx:266 msgid "Assembled Part" -msgstr "" +msgstr "组装零件" -#: src/pages/part/PartDetail.tsx:280 +#: src/pages/part/PartDetail.tsx:282 msgid "Component Part" -msgstr "" +msgstr "组件零件" -#: src/pages/part/PartDetail.tsx:285 +#: src/pages/part/PartDetail.tsx:287 #: src/tables/bom/BomTable.tsx:261 msgid "Trackable Part" -msgstr "" +msgstr "可追溯零件" -#: src/pages/part/PartDetail.tsx:290 +#: src/pages/part/PartDetail.tsx:292 msgid "Purchaseable Part" -msgstr "" +msgstr "可购买零件" -#: src/pages/part/PartDetail.tsx:295 +#: src/pages/part/PartDetail.tsx:297 msgid "Saleable Part" -msgstr "" +msgstr "可销售零件" -#: src/pages/part/PartDetail.tsx:300 +#: src/pages/part/PartDetail.tsx:302 msgid "Virtual Part" -msgstr "" +msgstr "虚拟零件" -#: src/pages/part/PartDetail.tsx:308 +#: src/pages/part/PartDetail.tsx:310 #: src/tables/ColumnRenderers.tsx:199 msgid "Creation Date" -msgstr "" +msgstr "创建日期" #: src/pages/part/PartDetail.tsx:310 #~ msgid "Edit part" #~ msgstr "Edit part" -#: src/pages/part/PartDetail.tsx:313 +#: src/pages/part/PartDetail.tsx:315 msgid "Created By" -msgstr "" +msgstr "创建人" #: src/pages/part/PartDetail.tsx:322 #~ msgid "Duplicate part" @@ -4114,126 +4140,129 @@ msgstr "" #~ msgid "Delete part" #~ msgstr "Delete part" -#: src/pages/part/PartDetail.tsx:328 +#: src/pages/part/PartDetail.tsx:330 msgid "Default Supplier" -msgstr "" +msgstr "默认供应商" -#: src/pages/part/PartDetail.tsx:339 +#: src/pages/part/PartDetail.tsx:341 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 #: src/tables/part/PartTable.tsx:151 msgid "Price Range" -msgstr "" +msgstr "价格范围" -#: src/pages/part/PartDetail.tsx:374 -#: src/pages/stock/StockDetail.tsx:130 +#: src/pages/part/PartDetail.tsx:376 +#: src/pages/stock/StockDetail.tsx:131 msgid "Last Stocktake" -msgstr "" +msgstr "最近库存盘点" -#: src/pages/part/PartDetail.tsx:409 +#: src/pages/part/PartDetail.tsx:411 msgid "Stocktake By" -msgstr "" +msgstr "库存盘点由" -#: src/pages/part/PartDetail.tsx:480 +#: src/pages/part/PartDetail.tsx:482 msgid "Part Details" -msgstr "" +msgstr "零件详情" -#: src/pages/part/PartDetail.tsx:506 +#: src/pages/part/PartDetail.tsx:508 msgid "Variants" -msgstr "" +msgstr "变体" -#: src/pages/part/PartDetail.tsx:513 -#: src/pages/stock/StockDetail.tsx:283 +#: src/pages/part/PartDetail.tsx:515 +#: src/pages/stock/StockDetail.tsx:284 msgid "Allocations" -msgstr "" +msgstr "分配" -#: src/pages/part/PartDetail.tsx:519 +#: src/pages/part/PartDetail.tsx:522 msgid "Bill of Materials" -msgstr "" +msgstr "物料清单" -#: src/pages/part/PartDetail.tsx:533 +#: src/pages/part/PartDetail.tsx:536 msgid "Used In" -msgstr "" +msgstr "用于" -#: src/pages/part/PartDetail.tsx:540 +#: src/pages/part/PartDetail.tsx:543 msgid "Part Pricing" msgstr "" -#: src/pages/part/PartDetail.tsx:546 +#: src/pages/part/PartDetail.tsx:549 #: src/pages/purchasing/PurchasingIndex.tsx:37 msgid "Manufacturers" -msgstr "" +msgstr "制造商" -#: src/pages/part/PartDetail.tsx:585 +#: src/pages/part/PartDetail.tsx:589 msgid "Scheduling" -msgstr "" +msgstr "计划任务" -#: src/pages/part/PartDetail.tsx:595 +#: src/pages/part/PartDetail.tsx:601 msgid "Test Templates" -msgstr "" +msgstr "测试模板" -#: src/pages/part/PartDetail.tsx:606 +#: src/pages/part/PartDetail.tsx:612 msgid "Related Parts" -msgstr "" +msgstr "关联零件" -#: src/pages/part/PartDetail.tsx:661 -#: src/pages/stock/StockDetail.tsx:151 +#: src/pages/part/PartDetail.tsx:663 +#: src/pages/stock/StockDetail.tsx:152 +#: src/pages/stock/StockDetail.tsx:531 #: src/tables/build/BuildLineTable.tsx:36 #: src/tables/part/PartTable.tsx:107 #: src/tables/stock/StockItemTable.tsx:166 #: src/tables/stock/StockItemTable.tsx:275 msgid "Available" -msgstr "" +msgstr "可用的" -#: src/pages/part/PartDetail.tsx:667 +#: src/pages/part/PartDetail.tsx:669 msgid "No Stock" -msgstr "" +msgstr "无库存" -#: src/pages/part/PartDetail.tsx:673 +#: src/pages/part/PartDetail.tsx:675 #: src/tables/bom/BomTable.tsx:276 #: src/tables/part/PartTable.tsx:76 msgid "On Order" -msgstr "" +msgstr "订购中" -#: src/pages/part/PartDetail.tsx:679 -#: src/pages/stock/StockDetail.tsx:509 +#: src/pages/part/PartDetail.tsx:681 +#: src/pages/stock/StockDetail.tsx:514 #: src/tables/stock/StockItemTable.tsx:295 msgid "In Production" -msgstr "" +msgstr "生产中" -#: src/pages/part/PartDetail.tsx:698 +#: src/pages/part/PartDetail.tsx:700 msgid "Edit Part" -msgstr "" +msgstr "编辑零件" -#: src/pages/part/PartDetail.tsx:705 +#: src/pages/part/PartDetail.tsx:707 #: src/tables/part/PartTable.tsx:266 #: src/tables/part/PartTable.tsx:279 msgid "Add Part" -msgstr "" +msgstr "添加零件" -#: src/pages/part/PartDetail.tsx:717 +#: src/pages/part/PartDetail.tsx:719 msgid "Delete Part" msgstr "" -#: src/pages/part/PartDetail.tsx:726 +#: src/pages/part/PartDetail.tsx:728 msgid "Deleting this part cannot be reversed" msgstr "" -#: src/pages/part/PartDetail.tsx:764 -#: src/pages/stock/LocationDetail.tsx:301 +#: src/pages/part/PartDetail.tsx:766 +#: src/pages/stock/LocationDetail.tsx:302 #: src/tables/stock/StockItemTable.tsx:409 msgid "Stock Actions" -msgstr "" +msgstr "库存操作" -#: src/pages/part/PartDetail.tsx:772 +#: src/pages/part/PartDetail.tsx:774 msgid "Count part stock" -msgstr "" +msgstr "清点零件库存" -#: src/pages/part/PartDetail.tsx:783 +#: src/pages/part/PartDetail.tsx:785 msgid "Transfer part stock" -msgstr "" +msgstr "转移零件库存" -#: src/pages/part/PartDetail.tsx:792 +#: src/pages/part/PartDetail.tsx:794 msgid "Part Actions" -msgstr "" +msgstr "零件选项" #: src/pages/part/PartIndex.tsx:29 #~ msgid "Categories" @@ -4244,145 +4273,160 @@ msgid "No pricing data found for this part." msgstr "" #: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 msgid "Pricing Overview" -msgstr "" +msgstr "定价概览" #: src/pages/part/PartPricingPanel.tsx:92 msgid "Purchase History" -msgstr "" +msgstr "采购记录" #: src/pages/part/PartPricingPanel.tsx:106 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:109 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 msgid "Internal Pricing" -msgstr "" +msgstr "内部价格" #: src/pages/part/PartPricingPanel.tsx:124 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:116 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 msgid "BOM Pricing" -msgstr "" +msgstr "物料清单价格" #: src/pages/part/PartPricingPanel.tsx:131 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:137 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 msgid "Variant Pricing" -msgstr "" +msgstr "变体价格" #: src/pages/part/PartPricingPanel.tsx:143 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:144 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 msgid "Sale Pricing" -msgstr "" +msgstr "销售价格" #: src/pages/part/PartPricingPanel.tsx:150 -#: src/pages/part/pricing/PricingOverviewPanel.tsx:151 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 msgid "Sale History" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:112 -msgid "Minimum Total Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:117 -msgid "Maximum Total Price" -msgstr "" +msgstr "销售记录" +#: src/pages/part/pricing/BomPricingPanel.tsx:57 #: src/pages/part/pricing/BomPricingPanel.tsx:137 -#: src/tables/part/PartTable.tsx:186 -msgid "Component" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:164 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:77 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:151 -#: src/pages/part/pricing/SupplierPricingPanel.tsx:83 -#: src/tables/bom/BomTable.tsx:151 -#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 -#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 -msgid "Unit Price" -msgstr "" - -#: src/pages/part/pricing/BomPricingPanel.tsx:173 #: src/tables/ColumnRenderers.tsx:241 #: src/tables/bom/BomTable.tsx:160 #: src/tables/purchasing/PurchaseOrderTable.tsx:112 #: src/tables/sales/ReturnOrderTable.tsx:104 #: src/tables/sales/SalesOrderTable.tsx:134 msgid "Total Price" -msgstr "" +msgstr "总价" -#: src/pages/part/pricing/BomPricingPanel.tsx:189 -#: src/pages/part/pricing/VariantPricingPanel.tsx:62 +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:186 +msgid "Component" +msgstr "组件" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "最低价格" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "最高价格" + +#: src/pages/part/pricing/BomPricingPanel.tsx:112 +#~ msgid "Minimum Total Price" +#~ msgstr "Minimum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:117 +#~ msgid "Maximum Total Price" +#~ msgstr "Maximum Total Price" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:151 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "单价" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 #: src/tables/purchasing/SupplierPartTable.tsx:148 msgid "Updated" -msgstr "" +msgstr "已更新" -#: src/pages/part/pricing/BomPricingPanel.tsx:254 +#: src/pages/part/pricing/BomPricingPanel.tsx:218 msgid "Pie Chart" -msgstr "" +msgstr "饼状图" -#: src/pages/part/pricing/BomPricingPanel.tsx:255 +#: src/pages/part/pricing/BomPricingPanel.tsx:219 msgid "Bar Chart" -msgstr "" +msgstr "柱状图" -#: src/pages/part/pricing/PriceBreakPanel.tsx:63 -#: src/pages/part/pricing/PriceBreakPanel.tsx:115 +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 msgid "Add Price Break" -msgstr "" +msgstr "新增批发价" -#: src/pages/part/pricing/PriceBreakPanel.tsx:76 +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 msgid "Edit Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:86 +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 msgid "Delete Price Break" msgstr "" -#: src/pages/part/pricing/PriceBreakPanel.tsx:100 -#: src/pages/part/pricing/PriceBreakPanel.tsx:191 +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 msgid "Price Break" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:60 +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 msgid "Pricing Category" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:79 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 msgid "Minimum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:91 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 msgid "Maximum" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:123 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 msgid "Purchase Pricing" -msgstr "" +msgstr "采购价格" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:158 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 msgid "Override Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:165 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 msgid "Overall Pricing" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:184 -#: src/pages/stock/StockDetail.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:125 msgid "Last Updated" +msgstr "最近更新" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" msgstr "" -#: src/pages/part/pricing/PricingOverviewPanel.tsx:214 -#: src/pages/part/pricing/VariantPricingPanel.tsx:46 -#: src/pages/part/pricing/VariantPricingPanel.tsx:119 -msgid "Minimum Price" -msgstr "" - -#: src/pages/part/pricing/PricingOverviewPanel.tsx:219 -#: src/pages/part/pricing/VariantPricingPanel.tsx:54 -#: src/pages/part/pricing/VariantPricingPanel.tsx:124 -msgid "Maximum Price" +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:25 @@ -4391,7 +4435,7 @@ msgstr "" #: src/pages/part/pricing/PricingPanel.tsx:66 msgid "No Data" -msgstr "" +msgstr "暂无数据" #: src/pages/part/pricing/PricingPanel.tsx:67 msgid "No pricing data available" @@ -4401,71 +4445,71 @@ msgstr "" msgid "Loading pricing data" msgstr "" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:50 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:46 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 #: src/tables/ColumnRenderers.tsx:180 #: src/tables/plugin/PluginListTable.tsx:139 msgid "Date" -msgstr "" +msgstr "日期" -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:57 -#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:156 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 msgid "Purchase Price" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:32 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 msgid "Sale Order" msgstr "" -#: src/pages/part/pricing/SaleHistoryPanel.tsx:52 -#: src/pages/part/pricing/SaleHistoryPanel.tsx:115 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 msgid "Sale Price" msgstr "" -#: src/pages/part/pricing/SupplierPricingPanel.tsx:88 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 #: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 msgid "Supplier Price" msgstr "" -#: src/pages/part/pricing/VariantPricingPanel.tsx:39 +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 msgid "Variant Part" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:75 msgid "Edit Purchase Order" -msgstr "" +msgstr "编辑采购订单" #: src/pages/purchasing/PurchaseOrderDetail.tsx:84 #: src/tables/purchasing/PurchaseOrderTable.tsx:128 #: src/tables/purchasing/PurchaseOrderTable.tsx:140 msgid "Add Purchase Order" -msgstr "" +msgstr "添加采购订单" #: src/pages/purchasing/PurchaseOrderDetail.tsx:109 msgid "Supplier Reference" -msgstr "" +msgstr "供应商参考" #: src/pages/purchasing/PurchaseOrderDetail.tsx:139 #: src/pages/purchasing/PurchaseOrderDetail.tsx:254 -#: src/pages/sales/ReturnOrderDetail.tsx:106 -#: src/pages/sales/ReturnOrderDetail.tsx:222 -#: src/pages/sales/SalesOrderDetail.tsx:110 -#: src/pages/sales/SalesOrderDetail.tsx:250 +#: src/pages/sales/ReturnOrderDetail.tsx:107 +#: src/pages/sales/ReturnOrderDetail.tsx:223 +#: src/pages/sales/SalesOrderDetail.tsx:111 +#: src/pages/sales/SalesOrderDetail.tsx:251 msgid "Line Items" -msgstr "" +msgstr "行项目" #: src/pages/purchasing/PurchaseOrderDetail.tsx:146 -#: src/pages/sales/ReturnOrderDetail.tsx:113 -#: src/pages/sales/SalesOrderDetail.tsx:117 +#: src/pages/sales/ReturnOrderDetail.tsx:114 +#: src/pages/sales/SalesOrderDetail.tsx:118 msgid "Completed Line Items" -msgstr "" +msgstr "已完成行项目" #: src/pages/purchasing/PurchaseOrderDetail.tsx:154 -#: src/pages/sales/ReturnOrderDetail.tsx:121 -#: src/pages/sales/SalesOrderDetail.tsx:125 -#: src/pages/sales/SalesOrderDetail.tsx:260 +#: src/pages/sales/ReturnOrderDetail.tsx:122 +#: src/pages/sales/SalesOrderDetail.tsx:126 +#: src/pages/sales/SalesOrderDetail.tsx:263 msgid "Completed Shipments" -msgstr "" +msgstr "完成配送" #: src/pages/purchasing/PurchaseOrderDetail.tsx:159 #: src/pages/sales/ReturnOrderDetail.tsx:126 @@ -4474,80 +4518,80 @@ msgstr "" #~ msgstr "Order Currency," #: src/pages/purchasing/PurchaseOrderDetail.tsx:161 -#: src/pages/sales/ReturnOrderDetail.tsx:129 -#: src/pages/sales/SalesOrderDetail.tsx:133 +#: src/pages/sales/ReturnOrderDetail.tsx:130 +#: src/pages/sales/SalesOrderDetail.tsx:134 msgid "Order Currency" msgstr "" #: src/pages/purchasing/PurchaseOrderDetail.tsx:168 -#: src/pages/sales/ReturnOrderDetail.tsx:136 -#: src/pages/sales/SalesOrderDetail.tsx:140 +#: src/pages/sales/ReturnOrderDetail.tsx:137 +#: src/pages/sales/SalesOrderDetail.tsx:141 msgid "Total Cost" -msgstr "" +msgstr "总成本" #: src/pages/purchasing/PurchaseOrderDetail.tsx:203 -#: src/pages/sales/ReturnOrderDetail.tsx:171 -#: src/pages/sales/SalesOrderDetail.tsx:175 +#: src/pages/sales/ReturnOrderDetail.tsx:172 +#: src/pages/sales/SalesOrderDetail.tsx:176 msgid "Created On" -msgstr "" +msgstr "创建于" #: src/pages/purchasing/PurchaseOrderDetail.tsx:248 -#: src/pages/sales/ReturnOrderDetail.tsx:216 -#: src/pages/sales/SalesOrderDetail.tsx:244 +#: src/pages/sales/ReturnOrderDetail.tsx:217 +#: src/pages/sales/SalesOrderDetail.tsx:245 msgid "Order Details" -msgstr "" +msgstr "订单细节" -#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 -#: src/pages/sales/ReturnOrderDetail.tsx:297 -#: src/pages/sales/SalesOrderDetail.tsx:309 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:322 +#: src/pages/sales/ReturnOrderDetail.tsx:298 +#: src/pages/sales/SalesOrderDetail.tsx:312 msgid "Order Actions" -msgstr "" +msgstr "订单操作" -#: src/pages/sales/ReturnOrderDetail.tsx:77 -#: src/pages/sales/SalesOrderDetail.tsx:81 +#: src/pages/sales/ReturnOrderDetail.tsx:78 +#: src/pages/sales/SalesOrderDetail.tsx:82 #: src/tables/sales/SalesOrderTable.tsx:123 msgid "Customer Reference" -msgstr "" +msgstr "客户参考" -#: src/pages/sales/ReturnOrderDetail.tsx:269 +#: src/pages/sales/ReturnOrderDetail.tsx:270 msgid "Edit Return Order" msgstr "" -#: src/pages/sales/ReturnOrderDetail.tsx:278 +#: src/pages/sales/ReturnOrderDetail.tsx:279 #: src/tables/sales/ReturnOrderTable.tsx:119 #: src/tables/sales/ReturnOrderTable.tsx:128 msgid "Add Return Order" -msgstr "" +msgstr "添加退货订单" #: src/pages/sales/SalesIndex.tsx:33 msgid "Customers" -msgstr "" +msgstr "客户" -#: src/pages/sales/SalesOrderDetail.tsx:221 +#: src/pages/sales/SalesOrderDetail.tsx:222 msgid "Edit Sales Order" -msgstr "" +msgstr "编辑销售订单" -#: src/pages/sales/SalesOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:231 #: src/tables/sales/SalesOrderTable.tsx:83 #: src/tables/sales/SalesOrderTable.tsx:95 msgid "Add Sales Order" -msgstr "" +msgstr "添加销售订单" -#: src/pages/sales/SalesOrderDetail.tsx:255 +#: src/pages/sales/SalesOrderDetail.tsx:257 msgid "Pending Shipments" -msgstr "" +msgstr "待配送" #: src/pages/stock/LocationDetail.tsx:107 msgid "Parent Location" -msgstr "" +msgstr "上级地点" #: src/pages/stock/LocationDetail.tsx:125 msgid "Sublocations" -msgstr "" +msgstr "次级地点" #: src/pages/stock/LocationDetail.tsx:137 msgid "External" -msgstr "" +msgstr "外部" #: src/pages/stock/LocationDetail.tsx:143 msgid "Location Type" @@ -4555,26 +4599,26 @@ msgstr "" #: src/pages/stock/LocationDetail.tsx:154 msgid "Top level stock location" -msgstr "" +msgstr "最高级库存位置" #: src/pages/stock/LocationDetail.tsx:165 msgid "Location Details" -msgstr "" +msgstr "位置详细信息" #: src/pages/stock/LocationDetail.tsx:191 msgid "Default Parts" -msgstr "" +msgstr "默认零件" #: src/pages/stock/LocationDetail.tsx:210 -#: src/pages/stock/LocationDetail.tsx:328 +#: src/pages/stock/LocationDetail.tsx:329 #: src/tables/stock/StockLocationTable.tsx:100 msgid "Edit Stock Location" -msgstr "" +msgstr "编辑库存地点" #: src/pages/stock/LocationDetail.tsx:231 -#: src/pages/stock/LocationDetail.tsx:333 +#: src/pages/stock/LocationDetail.tsx:334 msgid "Delete Stock Location" -msgstr "" +msgstr "删除库存地点" #: src/pages/stock/LocationDetail.tsx:234 msgid "Items Action" @@ -4586,23 +4630,23 @@ msgstr "" #: src/pages/stock/LocationDetail.tsx:240 msgid "Child Locations Action" -msgstr "" +msgstr "子仓库操作" #: src/pages/stock/LocationDetail.tsx:241 msgid "Action for child locations in this location" msgstr "" -#: src/pages/stock/LocationDetail.tsx:323 +#: src/pages/stock/LocationDetail.tsx:324 msgid "Location Actions" -msgstr "" +msgstr "位置操作" -#: src/pages/stock/StockDetail.tsx:103 +#: src/pages/stock/StockDetail.tsx:104 msgid "Base Part" -msgstr "" +msgstr "基础零件" -#: src/pages/stock/StockDetail.tsx:110 +#: src/pages/stock/StockDetail.tsx:111 msgid "Stock Status" -msgstr "" +msgstr "库存状态" #: src/pages/stock/StockDetail.tsx:155 #~ msgid "Link custom barcode to stock item" @@ -4612,18 +4656,18 @@ msgstr "" #~ msgid "Unlink custom barcode from stock item" #~ msgstr "Unlink custom barcode from stock item" -#: src/pages/stock/StockDetail.tsx:177 +#: src/pages/stock/StockDetail.tsx:178 msgid "Installed In" -msgstr "" +msgstr "安装于" -#: src/pages/stock/StockDetail.tsx:193 +#: src/pages/stock/StockDetail.tsx:194 msgid "Consumed By" -msgstr "" +msgstr "消耗者" -#: src/pages/stock/StockDetail.tsx:202 +#: src/pages/stock/StockDetail.tsx:203 #: src/tables/stock/StockTrackingTable.tsx:96 msgid "Build Order" -msgstr "" +msgstr "生产订单" #: src/pages/stock/StockDetail.tsx:205 #~ msgid "Edit stock item" @@ -4633,66 +4677,66 @@ msgstr "" #~ msgid "Delete stock item" #~ msgstr "Delete stock item" -#: src/pages/stock/StockDetail.tsx:267 +#: src/pages/stock/StockDetail.tsx:268 msgid "Stock Details" -msgstr "" +msgstr "库存详情" -#: src/pages/stock/StockDetail.tsx:273 +#: src/pages/stock/StockDetail.tsx:274 msgid "Stock Tracking" -msgstr "" +msgstr "库存跟踪" -#: src/pages/stock/StockDetail.tsx:290 +#: src/pages/stock/StockDetail.tsx:293 msgid "Test Data" -msgstr "" +msgstr "测试数据" -#: src/pages/stock/StockDetail.tsx:304 +#: src/pages/stock/StockDetail.tsx:307 msgid "Installed Items" -msgstr "" +msgstr "已安装的项目" -#: src/pages/stock/StockDetail.tsx:311 +#: src/pages/stock/StockDetail.tsx:314 msgid "Child Items" -msgstr "" +msgstr "子项目" -#: src/pages/stock/StockDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:368 msgid "Edit Stock Item" -msgstr "" +msgstr "编辑库存项" -#: src/pages/stock/StockDetail.tsx:393 +#: src/pages/stock/StockDetail.tsx:395 msgid "Delete Stock Item" -msgstr "" +msgstr "删除库存项" #: src/pages/stock/StockDetail.tsx:433 #~ msgid "Duplicate stock item" #~ msgstr "Duplicate stock item" -#: src/pages/stock/StockDetail.tsx:440 +#: src/pages/stock/StockDetail.tsx:442 msgid "Stock Operations" -msgstr "" +msgstr "库存操作" -#: src/pages/stock/StockDetail.tsx:445 +#: src/pages/stock/StockDetail.tsx:447 msgid "Count stock" -msgstr "" +msgstr "库存计数" -#: src/pages/stock/StockDetail.tsx:455 +#: src/pages/stock/StockDetail.tsx:457 #: src/tables/stock/StockItemTable.tsx:414 msgid "Add stock" -msgstr "" +msgstr "添加库存" -#: src/pages/stock/StockDetail.tsx:463 +#: src/pages/stock/StockDetail.tsx:465 #: src/tables/stock/StockItemTable.tsx:423 msgid "Remove stock" -msgstr "" +msgstr "移除库存" -#: src/pages/stock/StockDetail.tsx:470 +#: src/pages/stock/StockDetail.tsx:472 msgid "Transfer" -msgstr "" +msgstr "转移" -#: src/pages/stock/StockDetail.tsx:471 +#: src/pages/stock/StockDetail.tsx:473 #: src/tables/stock/StockItemTable.tsx:443 msgid "Transfer stock" -msgstr "" +msgstr "转移库存" -#: src/pages/stock/StockDetail.tsx:482 +#: src/pages/stock/StockDetail.tsx:484 msgid "Stock Item Actions" msgstr "" @@ -4707,12 +4751,12 @@ msgstr "" #: src/tables/ColumnRenderers.tsx:227 #: src/tables/settings/CurrencyTable.tsx:23 msgid "Currency" -msgstr "" +msgstr "货币" #: src/tables/ColumnSelect.tsx:16 #: src/tables/ColumnSelect.tsx:23 msgid "Select Columns" -msgstr "" +msgstr "选择列" #: src/tables/DownloadAction.tsx:13 #~ msgid "Excel" @@ -4724,11 +4768,11 @@ msgstr "" #: src/tables/DownloadAction.tsx:22 msgid "CSV" -msgstr "" +msgstr "CSV" #: src/tables/DownloadAction.tsx:23 msgid "TSV" -msgstr "" +msgstr "TSV" #: src/tables/DownloadAction.tsx:24 msgid "Excel (.xls)" @@ -4740,119 +4784,119 @@ msgstr "" #: src/tables/DownloadAction.tsx:39 msgid "Download Data" -msgstr "" +msgstr "下载数据" #: src/tables/Filter.tsx:88 #: src/tables/build/BuildOrderTable.tsx:126 msgid "Assigned to me" -msgstr "" +msgstr "已分派给我的" #: src/tables/Filter.tsx:89 #: src/tables/build/BuildOrderTable.tsx:127 msgid "Show orders assigned to me" -msgstr "" +msgstr "显示分配给我的订单" #: src/tables/Filter.tsx:96 msgid "Outstanding" -msgstr "" +msgstr "未完成" #: src/tables/Filter.tsx:97 msgid "Show outstanding orders" -msgstr "" +msgstr "显示未完成的订单" #: src/tables/Filter.tsx:104 #: src/tables/build/BuildOrderTable.tsx:119 msgid "Overdue" -msgstr "" +msgstr "逾期" #: src/tables/Filter.tsx:105 msgid "Show overdue orders" -msgstr "" +msgstr "显示逾期订单" #: src/tables/FilterSelectDrawer.tsx:51 msgid "Remove filter" -msgstr "" +msgstr "移除过滤器" #: src/tables/FilterSelectDrawer.tsx:136 msgid "Select filter" -msgstr "" +msgstr "选择过滤器" #: src/tables/FilterSelectDrawer.tsx:137 msgid "Filter" -msgstr "" +msgstr "过滤器" #: src/tables/FilterSelectDrawer.tsx:144 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 -#: src/tables/stock/StockItemTestResultTable.tsx:180 +#: src/tables/stock/StockItemTestResultTable.tsx:181 msgid "Value" -msgstr "" +msgstr "值" #: src/tables/FilterSelectDrawer.tsx:145 msgid "Select filter value" -msgstr "" +msgstr "选择过滤器值" #: src/tables/FilterSelectDrawer.tsx:185 msgid "Table Filters" -msgstr "" +msgstr "表格筛选" #: src/tables/FilterSelectDrawer.tsx:217 msgid "Add Filter" -msgstr "" +msgstr "添加过滤条件" #: src/tables/FilterSelectDrawer.tsx:226 msgid "Clear Filters" -msgstr "" +msgstr "清除筛选" #: src/tables/InvenTreeTable.tsx:119 #: src/tables/InvenTreeTable.tsx:390 #: src/tables/InvenTreeTable.tsx:411 msgid "No records found" -msgstr "" +msgstr "没有找到记录" #: src/tables/InvenTreeTable.tsx:422 msgid "Server returned incorrect data type" -msgstr "" +msgstr "服务器返回了错误的数据类型" #: src/tables/InvenTreeTable.tsx:430 msgid "Bad request" -msgstr "" +msgstr "错误的请求" #: src/tables/InvenTreeTable.tsx:433 msgid "Unauthorized" -msgstr "" +msgstr "未授权" #: src/tables/InvenTreeTable.tsx:436 msgid "Forbidden" -msgstr "" +msgstr "禁止访问" #: src/tables/InvenTreeTable.tsx:439 msgid "Not found" -msgstr "" +msgstr "未找到" #: src/tables/InvenTreeTable.tsx:488 #: src/tables/InvenTreeTable.tsx:611 msgid "Delete selected records" -msgstr "" +msgstr "删除选中的记录" #: src/tables/InvenTreeTable.tsx:492 msgid "Are you sure you want to delete the selected records?" -msgstr "" +msgstr "确定要删除选中的记录吗?" #: src/tables/InvenTreeTable.tsx:494 msgid "This action cannot be undone!" -msgstr "" +msgstr "此操作无法撤消!" #: src/tables/InvenTreeTable.tsx:522 msgid "Deleted records" -msgstr "" +msgstr "已删除记录" #: src/tables/InvenTreeTable.tsx:523 msgid "Records were deleted successfully" -msgstr "" +msgstr "记录删除成功。" #: src/tables/InvenTreeTable.tsx:532 msgid "Failed to delete records" -msgstr "" +msgstr "无法删除记录" #: src/tables/InvenTreeTable.tsx:594 #: src/tables/InvenTreeTable.tsx:595 @@ -4862,71 +4906,71 @@ msgstr "" #: src/tables/InvenTreeTable.tsx:601 #: src/tables/InvenTreeTable.tsx:602 msgid "Barcode actions" -msgstr "" +msgstr "条形码操作" #: src/tables/InvenTreeTable.tsx:630 msgid "Refresh data" -msgstr "" +msgstr "刷新数据" #: src/tables/InvenTreeTable.tsx:648 msgid "Table filters" -msgstr "" +msgstr "表格过滤器" #: src/tables/bom/BomTable.tsx:78 msgid "This BOM item is defined for a different parent" -msgstr "" +msgstr "此物料清单项目是为另一个上级定义的" #: src/tables/bom/BomTable.tsx:93 msgid "Part Information" -msgstr "" +msgstr "零件信息" #: src/tables/bom/BomTable.tsx:179 #: src/tables/part/PartTable.tsx:124 msgid "No stock" -msgstr "" +msgstr "无库存" #: src/tables/bom/BomTable.tsx:187 #: src/tables/build/BuildLineTable.tsx:104 #: src/tables/part/PartTable.tsx:115 msgid "External stock" -msgstr "" +msgstr "外部库存" #: src/tables/bom/BomTable.tsx:195 #: src/tables/build/BuildLineTable.tsx:67 msgid "Includes substitute stock" -msgstr "" +msgstr "包括替代库存" #: src/tables/bom/BomTable.tsx:204 #: src/tables/build/BuildLineTable.tsx:77 msgid "Includes variant stock" -msgstr "" +msgstr "包括变体库存" #: src/tables/bom/BomTable.tsx:229 #: src/tables/part/PartTable.tsx:143 #: src/tables/stock/StockItemTable.tsx:205 msgid "Stock Information" -msgstr "" +msgstr "库存信息" #: src/tables/bom/BomTable.tsx:241 #: src/tables/build/BuildLineTable.tsx:195 msgid "Consumable item" -msgstr "" +msgstr "可耗物品" #: src/tables/bom/BomTable.tsx:262 msgid "Show trackable items" -msgstr "" +msgstr "显示可跟踪项目" #: src/tables/bom/BomTable.tsx:267 msgid "Show asssmbled items" -msgstr "" +msgstr "显示已装配的项目" #: src/tables/bom/BomTable.tsx:272 msgid "Show items with available stock" -msgstr "" +msgstr "显示有可用库存的项目" #: src/tables/bom/BomTable.tsx:277 msgid "Show items on order" -msgstr "" +msgstr "按顺序显示项目" #: src/tables/bom/BomTable.tsx:281 msgid "Validated" @@ -4934,7 +4978,7 @@ msgstr "" #: src/tables/bom/BomTable.tsx:282 msgid "Show validated items" -msgstr "" +msgstr "显示已验证的项目" #: src/tables/bom/BomTable.tsx:286 #: src/tables/bom/UsedInTable.tsx:63 @@ -4944,31 +4988,31 @@ msgstr "" #: src/tables/bom/BomTable.tsx:287 #: src/tables/bom/UsedInTable.tsx:64 msgid "Show inherited items" -msgstr "" +msgstr "显示继承的项目" #: src/tables/bom/BomTable.tsx:291 #: src/tables/bom/UsedInTable.tsx:68 #: src/tables/build/BuildLineTable.tsx:46 msgid "Optional" -msgstr "" +msgstr "可选项" #: src/tables/bom/BomTable.tsx:292 #: src/tables/bom/UsedInTable.tsx:69 msgid "Show optional items" -msgstr "" +msgstr "显示可选项目" #: src/tables/bom/BomTable.tsx:296 #: src/tables/build/BuildLineTable.tsx:41 msgid "Consumable" -msgstr "" +msgstr "消耗品" #: src/tables/bom/BomTable.tsx:297 msgid "Show consumable items" -msgstr "" +msgstr "显示可消耗项目" #: src/tables/bom/BomTable.tsx:301 msgid "Has Pricing" -msgstr "" +msgstr "是否有价格" #: src/tables/bom/BomTable.tsx:301 #~ msgid "Create BOM Item" @@ -4976,7 +5020,7 @@ msgstr "" #: src/tables/bom/BomTable.tsx:302 msgid "Show items with pricing" -msgstr "" +msgstr "显示带定价的项目" #: src/tables/bom/BomTable.tsx:311 #: src/tables/bom/BomTable.tsx:399 @@ -5013,7 +5057,7 @@ msgstr "" #: src/tables/bom/BomTable.tsx:343 msgid "View BOM" -msgstr "" +msgstr "查看 物料清单" #: src/tables/bom/BomTable.tsx:348 #~ msgid "Delete Bom Item" @@ -5029,51 +5073,51 @@ msgstr "" #: src/tables/bom/BomTable.tsx:354 msgid "Validate BOM line" -msgstr "" +msgstr "验证物料清单行" #: src/tables/bom/BomTable.tsx:362 msgid "Edit Substitutes" -msgstr "" +msgstr "编辑替代零件" #: src/tables/bom/UsedInTable.tsx:74 msgid "Show active assemblies" -msgstr "" +msgstr "显示活动装配体" #: src/tables/bom/UsedInTable.tsx:78 #: src/tables/part/PartTable.tsx:192 #: src/tables/part/PartVariantTable.tsx:30 msgid "Trackable" -msgstr "" +msgstr "可追踪" #: src/tables/bom/UsedInTable.tsx:79 msgid "Show trackable assemblies" -msgstr "" +msgstr "显示可跟踪装配体" #: src/tables/build/BuildLineTable.tsx:31 #: src/tables/stock/StockItemTable.tsx:270 msgid "Allocated" -msgstr "" +msgstr "已分配" #: src/tables/build/BuildLineTable.tsx:32 msgid "Show allocated lines" -msgstr "" +msgstr "显示分配的行" #: src/tables/build/BuildLineTable.tsx:37 msgid "Show lines with available stock" -msgstr "" +msgstr "显示有可用库存的项目" #: src/tables/build/BuildLineTable.tsx:42 msgid "Show consumable lines" -msgstr "" +msgstr "显示可消耗项目" #: src/tables/build/BuildLineTable.tsx:47 msgid "Show optional lines" -msgstr "" +msgstr "显示可选项目" #: src/tables/build/BuildLineTable.tsx:51 #: src/tables/stock/StockItemTable.tsx:329 msgid "Tracked" -msgstr "" +msgstr "已跟踪" #: src/tables/build/BuildLineTable.tsx:52 msgid "Show tracked lines" @@ -5081,39 +5125,39 @@ msgstr "" #: src/tables/build/BuildLineTable.tsx:86 msgid "In production" -msgstr "" +msgstr "生产中" #: src/tables/build/BuildLineTable.tsx:118 #: src/tables/stock/StockItemTable.tsx:175 msgid "No stock available" -msgstr "" +msgstr "无可用库存" #: src/tables/build/BuildLineTable.tsx:157 msgid "Unit Quantity" -msgstr "" +msgstr "单位数量" #: src/tables/build/BuildLineTable.tsx:231 msgid "Order Stock" -msgstr "" +msgstr "订单库存" #: src/tables/build/BuildLineTable.tsx:237 msgid "Build Stock" -msgstr "" +msgstr "生产库存" #: src/tables/build/BuildOrderTable.tsx:109 msgid "Show active orders" -msgstr "" +msgstr "显示活动订单" #: src/tables/build/BuildOrderTable.tsx:114 #: src/tables/purchasing/PurchaseOrderTable.tsx:56 #: src/tables/sales/ReturnOrderTable.tsx:47 #: src/tables/sales/SalesOrderTable.tsx:53 msgid "Filter by order status" -msgstr "" +msgstr "按订单状态筛选" #: src/tables/build/BuildOrderTable.tsx:121 msgid "Show overdue status" -msgstr "" +msgstr "显示逾期状态" #: src/tables/build/BuildOrderTable.tsx:132 #: src/tables/purchasing/PurchaseOrderTable.tsx:65 @@ -5221,30 +5265,30 @@ msgid "Required Tests" msgstr "" #: src/tables/build/BuildOutputTable.tsx:319 -#: src/tables/stock/StockItemTestResultTable.tsx:144 +#: src/tables/stock/StockItemTestResultTable.tsx:145 msgid "Test Results" -msgstr "" +msgstr "测试结果" #: src/tables/company/AddressTable.tsx:121 #: src/tables/company/AddressTable.tsx:185 msgid "Add Address" -msgstr "" +msgstr "新增地址" #: src/tables/company/AddressTable.tsx:126 msgid "Address created" -msgstr "" +msgstr "地址已创建" #: src/tables/company/AddressTable.tsx:135 msgid "Edit Address" -msgstr "" +msgstr "编辑地址" #: src/tables/company/AddressTable.tsx:143 msgid "Delete Address" -msgstr "" +msgstr "删除地址" #: src/tables/company/AddressTable.tsx:144 msgid "Are you sure you want to delete this address?" -msgstr "" +msgstr "您确定要删除该地址?" #: src/tables/company/CompanyTable.tsx:71 #~ msgid "New Company" @@ -5253,7 +5297,7 @@ msgstr "" #: src/tables/company/CompanyTable.tsx:74 #: src/tables/company/CompanyTable.tsx:123 msgid "Add Company" -msgstr "" +msgstr "添加公司" #: src/tables/company/CompanyTable.tsx:96 msgid "Show active companies" @@ -5273,145 +5317,161 @@ msgstr "" #: src/tables/company/ContactTable.tsx:71 msgid "Edit Contact" -msgstr "" +msgstr "编辑联系人" #: src/tables/company/ContactTable.tsx:78 msgid "Add Contact" -msgstr "" +msgstr "添加联系人" #: src/tables/company/ContactTable.tsx:89 msgid "Delete Contact" -msgstr "" +msgstr "删除联系人" #: src/tables/company/ContactTable.tsx:129 msgid "Add contact" -msgstr "" +msgstr "添加联系人" #: src/tables/general/AttachmentTable.tsx:130 msgid "File uploaded" -msgstr "" +msgstr "文件已上传" #: src/tables/general/AttachmentTable.tsx:131 msgid "File {0} uploaded successfully" -msgstr "" +msgstr "文件 {0} 上传成功。" #: src/tables/general/AttachmentTable.tsx:142 msgid "Upload Error" -msgstr "" +msgstr "上传错误" #: src/tables/general/AttachmentTable.tsx:143 msgid "File could not be uploaded" -msgstr "" +msgstr "文件无法上传。" -#: src/tables/general/AttachmentTable.tsx:187 +#: src/tables/general/AttachmentTable.tsx:191 msgid "Upload Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:197 +#: src/tables/general/AttachmentTable.tsx:201 msgid "Edit Attachment" msgstr "" -#: src/tables/general/AttachmentTable.tsx:211 +#: src/tables/general/AttachmentTable.tsx:215 msgid "Delete Attachment" +msgstr "删除附件" + +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" msgstr "" -#: src/tables/general/AttachmentTable.tsx:221 +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 msgid "Add attachment" -msgstr "" +msgstr "添加附件" -#: src/tables/general/AttachmentTable.tsx:232 +#: src/tables/general/AttachmentTable.tsx:251 msgid "Add external link" -msgstr "" +msgstr "添加外部链接" #: src/tables/general/AttachmentTable.tsx:254 #~ msgid "Upload attachment" #~ msgstr "Upload attachment" -#: src/tables/general/AttachmentTable.tsx:289 +#: src/tables/general/AttachmentTable.tsx:299 msgid "No attachments found" -msgstr "" +msgstr "找不到附件。" -#: src/tables/general/AttachmentTable.tsx:325 +#: src/tables/general/AttachmentTable.tsx:337 msgid "Drag attachment file here to upload" msgstr "" #: src/tables/machine/MachineListTable.tsx:199 msgid "Machine restarted" -msgstr "" +msgstr "设备已重启" #: src/tables/machine/MachineListTable.tsx:221 #: src/tables/machine/MachineListTable.tsx:423 msgid "Restart required" -msgstr "" +msgstr "需要重启" #: src/tables/machine/MachineListTable.tsx:225 msgid "Machine Actions" -msgstr "" +msgstr "设备操作" #: src/tables/machine/MachineListTable.tsx:229 #: src/tables/machine/MachineListTable.tsx:232 msgid "Edit machine" -msgstr "" +msgstr "编辑设备" #: src/tables/machine/MachineListTable.tsx:244 #: src/tables/machine/MachineListTable.tsx:247 msgid "Delete machine" -msgstr "" +msgstr "删除设备" #: src/tables/machine/MachineListTable.tsx:248 msgid "Machine successfully deleted." -msgstr "" +msgstr "设备已成功删除。" #: src/tables/machine/MachineListTable.tsx:252 msgid "Are you sure you want to remove the machine \"{0}\"?" -msgstr "" +msgstr "你确定要删除设备 \"{0}\" 吗?" #: src/tables/machine/MachineListTable.tsx:263 msgid "Restart" -msgstr "" +msgstr "重新启动" #: src/tables/machine/MachineListTable.tsx:265 msgid "Restart machine" -msgstr "" +msgstr "重启设备" #: src/tables/machine/MachineListTable.tsx:267 msgid "manual restart required" -msgstr "" +msgstr "需要手动重启" #: src/tables/machine/MachineListTable.tsx:283 msgid "Machine information" -msgstr "" +msgstr "设备信息" #: src/tables/machine/MachineListTable.tsx:294 #: src/tables/machine/MachineListTable.tsx:590 msgid "Machine Type" -msgstr "" +msgstr "设备类型" #: src/tables/machine/MachineListTable.tsx:307 msgid "Machine Driver" -msgstr "" +msgstr "设备驱动程序" #: src/tables/machine/MachineListTable.tsx:320 msgid "Initialized" -msgstr "" +msgstr "已初始化" #: src/tables/machine/MachineListTable.tsx:341 #: src/tables/machine/MachineTypeTable.tsx:261 msgid "Errors" -msgstr "" +msgstr "错误" #: src/tables/machine/MachineListTable.tsx:349 #: src/tables/machine/MachineTypeTable.tsx:269 msgid "No errors reported" -msgstr "" +msgstr "未报告错误" #: src/tables/machine/MachineListTable.tsx:369 msgid "Machine Settings" -msgstr "" +msgstr "设备设置" #: src/tables/machine/MachineListTable.tsx:380 msgid "Driver Settings" -msgstr "" +msgstr "驱动设置" #: src/tables/machine/MachineListTable.tsx:494 #~ msgid "Create machine" @@ -5423,7 +5483,7 @@ msgstr "" #: src/tables/machine/MachineListTable.tsx:552 msgid "Machine detail" -msgstr "" +msgstr "设备详情" #: src/tables/machine/MachineListTable.tsx:599 msgid "Driver" @@ -5431,131 +5491,131 @@ msgstr "" #: src/tables/machine/MachineTypeTable.tsx:73 msgid "Builtin driver" -msgstr "" +msgstr "内置驱动" #: src/tables/machine/MachineTypeTable.tsx:89 msgid "Machine type not found." -msgstr "" +msgstr "找不到设备类型。" #: src/tables/machine/MachineTypeTable.tsx:97 msgid "Machine type information" -msgstr "" +msgstr "设备类型信息" #: src/tables/machine/MachineTypeTable.tsx:110 #: src/tables/machine/MachineTypeTable.tsx:217 msgid "Slug" -msgstr "" +msgstr "别名" #: src/tables/machine/MachineTypeTable.tsx:118 #: src/tables/machine/MachineTypeTable.tsx:238 msgid "Provider plugin" -msgstr "" +msgstr "供应商插件" #: src/tables/machine/MachineTypeTable.tsx:130 #: src/tables/machine/MachineTypeTable.tsx:250 msgid "Provider file" -msgstr "" +msgstr "供应商文件" #: src/tables/machine/MachineTypeTable.tsx:135 #: src/tables/machine/MachineTypeTable.tsx:255 #: src/tables/plugin/PluginListTable.tsx:180 #: src/tables/plugin/PluginListTable.tsx:568 msgid "Builtin" -msgstr "" +msgstr "内置" #: src/tables/machine/MachineTypeTable.tsx:146 msgid "Available drivers" -msgstr "" +msgstr "可用驱动程序" #: src/tables/machine/MachineTypeTable.tsx:196 msgid "Machine driver not found." -msgstr "" +msgstr "未找到设备驱动程序。" #: src/tables/machine/MachineTypeTable.tsx:204 msgid "Machine driver information" -msgstr "" +msgstr "设备驱动信息" #: src/tables/machine/MachineTypeTable.tsx:224 msgid "Machine type" -msgstr "" +msgstr "设备类型" #: src/tables/machine/MachineTypeTable.tsx:327 msgid "Builtin type" -msgstr "" +msgstr "内置类型" #: src/tables/machine/MachineTypeTable.tsx:336 msgid "Machine type detail" -msgstr "" +msgstr "设备类型详情" #: src/tables/machine/MachineTypeTable.tsx:346 msgid "Machine driver detail" -msgstr "" +msgstr "设备驱动详情" #: src/tables/notifications/NotificationsTable.tsx:26 msgid "Age" -msgstr "" +msgstr "寿命" #: src/tables/notifications/NotificationsTable.tsx:40 #: src/tables/plugin/PluginErrorTable.tsx:37 msgid "Message" -msgstr "" +msgstr "信息" -#: src/tables/part/ParametricPartTable.tsx:75 +#: src/tables/part/ParametricPartTable.tsx:76 #: src/tables/part/PartParameterTable.tsx:88 msgid "Internal Units" -msgstr "" +msgstr "内部单位" -#: src/tables/part/ParametricPartTable.tsx:80 +#: src/tables/part/ParametricPartTable.tsx:81 msgid "Edit parameter" -msgstr "" +msgstr "编辑参数" -#: src/tables/part/ParametricPartTable.tsx:133 +#: src/tables/part/ParametricPartTable.tsx:124 msgid "Add Part Parameter" -msgstr "" +msgstr "添加零件参数" -#: src/tables/part/ParametricPartTable.tsx:147 +#: src/tables/part/ParametricPartTable.tsx:138 #: src/tables/part/PartParameterTable.tsx:121 #: src/tables/part/PartParameterTable.tsx:144 msgid "Edit Part Parameter" -msgstr "" +msgstr "编辑零件参数" #: src/tables/part/PartCategoryTable.tsx:60 #: src/tables/part/PartTable.tsx:180 msgid "Include Subcategories" -msgstr "" +msgstr "包含子类别" #: src/tables/part/PartCategoryTable.tsx:61 msgid "Include subcategories in results" -msgstr "" +msgstr "在结果中包含子类别" #: src/tables/part/PartCategoryTable.tsx:66 msgid "Show structural categories" -msgstr "" +msgstr "显示结构性类别" #: src/tables/part/PartCategoryTable.tsx:73 msgid "New Part Category" -msgstr "" +msgstr "新建零件类别" #: src/tables/part/PartCategoryTable.tsx:98 msgid "Add Part Category" -msgstr "" +msgstr "增加零件类别" #: src/tables/part/PartCategoryTemplateTable.tsx:38 #: src/tables/part/PartCategoryTemplateTable.tsx:131 msgid "Add Category Parameter" -msgstr "" +msgstr "添加类别参数" #: src/tables/part/PartCategoryTemplateTable.tsx:46 msgid "Edit Category Parameter" -msgstr "" +msgstr "编辑类别参数" #: src/tables/part/PartCategoryTemplateTable.tsx:54 msgid "Delete Category Parameter" -msgstr "" +msgstr "删除类别参数" #: src/tables/part/PartCategoryTemplateTable.tsx:76 msgid "Parameter Template" -msgstr "" +msgstr "参数模板" #: src/tables/part/PartCategoryTemplateTable.tsx:93 #~ msgid "[{0}]" @@ -5563,267 +5623,267 @@ msgstr "" #: src/tables/part/PartParameterTable.tsx:105 msgid "New Part Parameter" -msgstr "" +msgstr "新增零件参数" #: src/tables/part/PartParameterTable.tsx:130 #: src/tables/part/PartParameterTable.tsx:152 msgid "Delete Part Parameter" -msgstr "" +msgstr "删除零件参数" #: src/tables/part/PartParameterTable.tsx:170 msgid "Add parameter" -msgstr "" +msgstr "添加参数" #: src/tables/part/PartParameterTable.tsx:191 #: src/tables/stock/StockItemTable.tsx:300 msgid "Include Variants" -msgstr "" +msgstr "包含变体" #: src/tables/part/PartParameterTemplateTable.tsx:31 msgid "Checkbox" -msgstr "" +msgstr "勾选框" #: src/tables/part/PartParameterTemplateTable.tsx:32 msgid "Show checkbox templates" -msgstr "" +msgstr "显示复选框模板" #: src/tables/part/PartParameterTemplateTable.tsx:36 msgid "Has choices" -msgstr "" +msgstr "有选项" #: src/tables/part/PartParameterTemplateTable.tsx:37 msgid "Show templates with choices" -msgstr "" +msgstr "显示有选项的模板" #: src/tables/part/PartParameterTemplateTable.tsx:41 #: src/tables/part/PartTable.tsx:198 msgid "Has Units" -msgstr "" +msgstr "有单位" #: src/tables/part/PartParameterTemplateTable.tsx:42 msgid "Show templates with units" -msgstr "" +msgstr "显示有单位的模板" #: src/tables/part/PartParameterTemplateTable.tsx:85 msgid "Add Parameter Template" -msgstr "" +msgstr "添加参数模板" #: src/tables/part/PartParameterTemplateTable.tsx:100 msgid "Edit Parameter Template" -msgstr "" +msgstr "编辑参数模板" #: src/tables/part/PartParameterTemplateTable.tsx:111 msgid "Delete Parameter Template" -msgstr "" +msgstr "删除零件参数模板" #: src/tables/part/PartParameterTemplateTable.tsx:141 msgid "Add parameter template" -msgstr "" +msgstr "添加参数模板" #: src/tables/part/PartTable.tsx:67 msgid "Minimum stock" -msgstr "" +msgstr "最低库存数" #: src/tables/part/PartTable.tsx:89 msgid "Build Order Allocations" -msgstr "" +msgstr "分配生产订单" #: src/tables/part/PartTable.tsx:98 msgid "Sales Order Allocations" -msgstr "" +msgstr "分配销售订单" #: src/tables/part/PartTable.tsx:169 msgid "Filter by part active status" -msgstr "" +msgstr "按零件活动状态筛选" #: src/tables/part/PartTable.tsx:174 #: src/tables/stock/StockItemTable.tsx:265 msgid "Assembly" -msgstr "" +msgstr "装配" #: src/tables/part/PartTable.tsx:175 msgid "Filter by assembly attribute" -msgstr "" +msgstr "按装配属性筛选" #: src/tables/part/PartTable.tsx:181 msgid "Include parts in subcategories" -msgstr "" +msgstr "包括子类别中的零件" #: src/tables/part/PartTable.tsx:187 msgid "Filter by component attribute" -msgstr "" +msgstr "按组件属性筛选" #: src/tables/part/PartTable.tsx:193 msgid "Filter by trackable attribute" -msgstr "" +msgstr "按可跟踪属性筛选" #: src/tables/part/PartTable.tsx:199 msgid "Filter by parts which have units" -msgstr "" +msgstr "按拥有单位的零件筛选" #: src/tables/part/PartTable.tsx:204 msgid "Has IPN" -msgstr "" +msgstr "有内部零件编码" #: src/tables/part/PartTable.tsx:205 msgid "Filter by parts which have an internal part number" -msgstr "" +msgstr "按具有内部零件编号的零件筛选" #: src/tables/part/PartTable.tsx:210 msgid "Has Stock" -msgstr "" +msgstr "有库存" #: src/tables/part/PartTable.tsx:211 msgid "Filter by parts which have stock" -msgstr "" +msgstr "按有库存的零件筛选" #: src/tables/part/PartTable.tsx:217 msgid "Filter by parts which have low stock" -msgstr "" +msgstr "按库存少的零件筛选" #: src/tables/part/PartTable.tsx:222 msgid "Purchaseable" -msgstr "" +msgstr "可购买" #: src/tables/part/PartTable.tsx:223 msgid "Filter by parts which are purchaseable" -msgstr "" +msgstr "按可购买的零件筛选" #: src/tables/part/PartTable.tsx:228 msgid "Salable" -msgstr "" +msgstr "可销售" #: src/tables/part/PartTable.tsx:229 msgid "Filter by parts which are salable" -msgstr "" +msgstr "按可出售的零件筛选" #: src/tables/part/PartTable.tsx:235 msgid "Filter by parts which are virtual" -msgstr "" +msgstr "按虚拟零件筛选" #: src/tables/part/PartTable.tsx:239 msgid "Not Virtual" -msgstr "" +msgstr "非虚拟的" #: src/tables/part/PartTestTemplateTable.tsx:52 msgid "Results" -msgstr "" +msgstr "结果" #: src/tables/part/PartTestTemplateTable.tsx:54 msgid "No Results" -msgstr "" - -#: src/tables/part/PartTestTemplateTable.tsx:79 -#: src/tables/stock/StockItemTestResultTable.tsx:376 -msgid "Required" -msgstr "" - -#: src/tables/part/PartTestTemplateTable.tsx:80 -msgid "Show required tests" -msgstr "" +msgstr "无结果" #: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 +msgid "Required" +msgstr "必填" + +#: src/tables/part/PartTestTemplateTable.tsx:85 +msgid "Show required tests" +msgstr "显示必选测试" + +#: src/tables/part/PartTestTemplateTable.tsx:89 #: src/tables/settings/TemplateTable.tsx:160 #: src/tables/settings/TemplateTable.tsx:270 msgid "Enabled" -msgstr "" +msgstr "已启用" -#: src/tables/part/PartTestTemplateTable.tsx:85 +#: src/tables/part/PartTestTemplateTable.tsx:90 msgid "Show enabled tests" -msgstr "" +msgstr "显示启用测试" -#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/part/PartTestTemplateTable.tsx:94 msgid "Requires Value" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:90 +#: src/tables/part/PartTestTemplateTable.tsx:95 msgid "Show tests that require a value" -msgstr "" +msgstr "显示需要值的测试" -#: src/tables/part/PartTestTemplateTable.tsx:94 +#: src/tables/part/PartTestTemplateTable.tsx:99 msgid "Requires Attachment" msgstr "" -#: src/tables/part/PartTestTemplateTable.tsx:95 -msgid "Show tests that require an attachment" -msgstr "" - -#: src/tables/part/PartTestTemplateTable.tsx:99 -msgid "Include Inherited" -msgstr "" - #: src/tables/part/PartTestTemplateTable.tsx:100 -msgid "Show tests from inherited templates" -msgstr "" +msgid "Show tests that require an attachment" +msgstr "显示需要附件的测试" #: src/tables/part/PartTestTemplateTable.tsx:104 -msgid "Has Results" -msgstr "" +msgid "Include Inherited" +msgstr "包含继承的" #: src/tables/part/PartTestTemplateTable.tsx:105 +msgid "Show tests from inherited templates" +msgstr "显示继承模板的测试" + +#: src/tables/part/PartTestTemplateTable.tsx:109 +msgid "Has Results" +msgstr "有结果" + +#: src/tables/part/PartTestTemplateTable.tsx:110 msgid "Show tests which have recorded results" -msgstr "" +msgstr "显示已记录结果的测试" -#: src/tables/part/PartTestTemplateTable.tsx:126 -#: src/tables/part/PartTestTemplateTable.tsx:201 +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 msgid "Add Test Template" -msgstr "" +msgstr "添加测试模板" -#: src/tables/part/PartTestTemplateTable.tsx:142 +#: src/tables/part/PartTestTemplateTable.tsx:148 msgid "Edit Test Template" -msgstr "" +msgstr "编辑测试模板" -#: src/tables/part/PartTestTemplateTable.tsx:153 +#: src/tables/part/PartTestTemplateTable.tsx:159 msgid "Delete Test Template" -msgstr "" +msgstr "删除测试模板" -#: src/tables/part/PartTestTemplateTable.tsx:155 +#: src/tables/part/PartTestTemplateTable.tsx:161 msgid "This action cannot be reversed" -msgstr "" +msgstr "此操作无法撤销。" -#: src/tables/part/PartTestTemplateTable.tsx:157 +#: src/tables/part/PartTestTemplateTable.tsx:163 msgid "Any tests results associated with this template will be deleted" -msgstr "" +msgstr "任何与此模板相关的测试结果将被删除" #: src/tables/part/PartThumbTable.tsx:203 msgid "Select" -msgstr "" +msgstr "选择" #: src/tables/part/PartVariantTable.tsx:16 msgid "Show active variants" -msgstr "" +msgstr "显示激活的变体" #: src/tables/part/PartVariantTable.tsx:20 msgid "Template" -msgstr "" +msgstr "模板" #: src/tables/part/PartVariantTable.tsx:21 msgid "Show template variants" -msgstr "" +msgstr "显示模板变体" #: src/tables/part/PartVariantTable.tsx:26 msgid "Show virtual variants" -msgstr "" +msgstr "显示虚拟变体" #: src/tables/part/PartVariantTable.tsx:31 msgid "Show trackable variants" -msgstr "" +msgstr "显示可跟踪变体" #: src/tables/part/RelatedPartTable.tsx:84 msgid "Add Related Part" -msgstr "" +msgstr "添加关联零件" #: src/tables/part/RelatedPartTable.tsx:99 msgid "Delete Related Part" -msgstr "" +msgstr "删除关联零件" #: src/tables/part/RelatedPartTable.tsx:106 msgid "Add related part" -msgstr "" +msgstr "添加关联零件" #: src/tables/plugin/PluginErrorTable.tsx:29 msgid "Stage" -msgstr "" +msgstr "阶段" #: src/tables/plugin/PluginListTable.tsx:95 msgid "Plugin with key {pluginKey} not found" @@ -5831,7 +5891,7 @@ msgstr "" #: src/tables/plugin/PluginListTable.tsx:97 msgid "An error occurred while fetching plugin details" -msgstr "" +msgstr "获取插件详细信息时出错" #: src/tables/plugin/PluginListTable.tsx:113 #~ msgid "Plugin with id {id} not found" @@ -5839,11 +5899,11 @@ msgstr "" #: src/tables/plugin/PluginListTable.tsx:122 msgid "Plugin information" -msgstr "" +msgstr "插件信息" #: src/tables/plugin/PluginListTable.tsx:134 msgid "Author" -msgstr "" +msgstr "作者" #: src/tables/plugin/PluginListTable.tsx:134 #~ msgid "Plugin Actions" @@ -5865,51 +5925,51 @@ msgstr "" #: src/tables/plugin/PluginListTable.tsx:163 msgid "Package information" -msgstr "" +msgstr "软件包信息" #: src/tables/plugin/PluginListTable.tsx:169 msgid "Package Name" -msgstr "" +msgstr "软件包名" #: src/tables/plugin/PluginListTable.tsx:175 msgid "Installation Path" -msgstr "" +msgstr "安装路径" #: src/tables/plugin/PluginListTable.tsx:185 msgid "Package" -msgstr "" +msgstr "软件包" #: src/tables/plugin/PluginListTable.tsx:197 msgid "Plugin settings" -msgstr "" +msgstr "插件设置" #: src/tables/plugin/PluginListTable.tsx:214 msgid "Plugin is active" -msgstr "" +msgstr "此插件已激活" #: src/tables/plugin/PluginListTable.tsx:220 msgid "Plugin is inactive" -msgstr "" +msgstr "插件未激活" #: src/tables/plugin/PluginListTable.tsx:227 msgid "Plugin is not installed" -msgstr "" +msgstr "插件未安装" #: src/tables/plugin/PluginListTable.tsx:253 msgid "Plugin" -msgstr "" +msgstr "插件" #: src/tables/plugin/PluginListTable.tsx:287 msgid "Description not available" -msgstr "" +msgstr "描述不可用." #: src/tables/plugin/PluginListTable.tsx:319 msgid "Confirm plugin activation" -msgstr "" +msgstr "确认插件激活" #: src/tables/plugin/PluginListTable.tsx:320 msgid "Confirm plugin deactivation" -msgstr "" +msgstr "确认插件停用" #: src/tables/plugin/PluginListTable.tsx:325 msgid "The selected plugin will be activated" @@ -5921,7 +5981,7 @@ msgstr "" #: src/tables/plugin/PluginListTable.tsx:334 msgid "Activate Plugin" -msgstr "" +msgstr "激活插件" #: src/tables/plugin/PluginListTable.tsx:338 #~ msgid "Deactivate Plugin" @@ -5937,7 +5997,7 @@ msgstr "" #: src/tables/plugin/PluginListTable.tsx:362 msgid "Deactivate" -msgstr "" +msgstr "停用" #: src/tables/plugin/PluginListTable.tsx:366 #~ msgid "Confirm" @@ -5945,7 +6005,7 @@ msgstr "" #: src/tables/plugin/PluginListTable.tsx:373 msgid "Activate" -msgstr "" +msgstr "激活" #: src/tables/plugin/PluginListTable.tsx:376 #~ msgid "Activating plugin" @@ -5973,76 +6033,76 @@ msgstr "" #: src/tables/plugin/PluginListTable.tsx:406 msgid "Uninstall" -msgstr "" +msgstr "卸载" #: src/tables/plugin/PluginListTable.tsx:438 msgid "Install plugin" -msgstr "" +msgstr "安装插件" #: src/tables/plugin/PluginListTable.tsx:451 msgid "Install" -msgstr "" +msgstr "安装" #: src/tables/plugin/PluginListTable.tsx:452 msgid "Plugin installed successfully" -msgstr "" +msgstr "插件安装成功" #: src/tables/plugin/PluginListTable.tsx:457 msgid "Uninstall Plugin" -msgstr "" +msgstr "卸载插件" #: src/tables/plugin/PluginListTable.tsx:469 msgid "Confirm plugin uninstall" -msgstr "" +msgstr "确认插件卸载" #: src/tables/plugin/PluginListTable.tsx:472 msgid "The selected plugin will be uninstalled." -msgstr "" +msgstr "所选插件将被卸载。" #: src/tables/plugin/PluginListTable.tsx:473 msgid "This action cannot be undone." -msgstr "" +msgstr "此操作无法撤销。" #: src/tables/plugin/PluginListTable.tsx:477 msgid "Plugin uninstalled successfully" -msgstr "" +msgstr "插件卸载成功" #: src/tables/plugin/PluginListTable.tsx:484 msgid "Delete Plugin" -msgstr "" +msgstr "刪除插件" #: src/tables/plugin/PluginListTable.tsx:485 msgid "Deleting this plugin configuration will remove all associated settings and data. Are you sure you want to delete this plugin?" -msgstr "" +msgstr "删除此插件配置将删除所有相关的设置和数据。您确定要删除此插件吗?" #: src/tables/plugin/PluginListTable.tsx:498 msgid "Plugins reloaded" -msgstr "" +msgstr "插件已重载" #: src/tables/plugin/PluginListTable.tsx:499 msgid "Plugins were reloaded successfully" -msgstr "" +msgstr "插件重载成功" #: src/tables/plugin/PluginListTable.tsx:515 msgid "Reload Plugins" -msgstr "" +msgstr "重载插件" #: src/tables/plugin/PluginListTable.tsx:524 msgid "Install Plugin" -msgstr "" +msgstr "安装插件" #: src/tables/plugin/PluginListTable.tsx:544 msgid "Plugin Detail" -msgstr "" +msgstr "插件详情" #: src/tables/plugin/PluginListTable.tsx:573 msgid "Sample" -msgstr "" +msgstr "样本" #: src/tables/plugin/PluginListTable.tsx:578 #: src/tables/stock/StockItemTable.tsx:305 msgid "Installed" -msgstr "" +msgstr "已安装" #: src/tables/plugin/PluginListTable.tsx:615 #~ msgid "Plugin detail" @@ -6059,7 +6119,7 @@ msgstr "" #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:70 msgid "Edit Parameter" -msgstr "" +msgstr "编辑参数" #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:73 #~ msgid "Parameter deleted" @@ -6071,7 +6131,7 @@ msgstr "" #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:78 msgid "Delete Parameter" -msgstr "" +msgstr "删除参数" #: src/tables/purchasing/ManufacturerPartTable.tsx:63 #~ msgid "Create Manufacturer Part" @@ -6079,7 +6139,7 @@ msgstr "" #: src/tables/purchasing/ManufacturerPartTable.tsx:92 msgid "Delete Manufacturer Part" -msgstr "" +msgstr "删除制造商零件" #: src/tables/purchasing/ManufacturerPartTable.tsx:100 #~ msgid "Manufacturer part updated" @@ -6095,71 +6155,71 @@ msgstr "" #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:86 msgid "Part Description" -msgstr "" +msgstr "零件描述" #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:113 msgid "Total Quantity" -msgstr "" +msgstr "总数量" #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:129 msgid "Received" -msgstr "" +msgstr "已接收" #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:148 msgid "Supplier Code" -msgstr "" +msgstr "供应商代码" #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:155 msgid "Supplier Link" -msgstr "" +msgstr "供应商链接" #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:162 msgid "Manufacturer Code" -msgstr "" +msgstr "制造商编号" #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:176 msgid "Destination" -msgstr "" +msgstr "目的地" #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:198 msgid "Add Line Item" -msgstr "" +msgstr "添加行项目" #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:215 msgid "Edit Line Item" -msgstr "" +msgstr "编辑行项目" #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:223 msgid "Delete Line Item" -msgstr "" +msgstr "删除行项目" #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:234 msgid "Receive line item" -msgstr "" +msgstr "接收这行项目" #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:272 msgid "Add line item" -msgstr "" +msgstr "添加行项目" #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:282 msgid "Receive items" -msgstr "" +msgstr "收到项目" #: src/tables/purchasing/SupplierPartTable.tsx:93 msgid "MPN" -msgstr "" +msgstr "制造商零件编号 (MPN)" #: src/tables/purchasing/SupplierPartTable.tsx:122 msgid "Base units" -msgstr "" +msgstr "基础单位" #: src/tables/purchasing/SupplierPartTable.tsx:170 msgid "Supplier part created" -msgstr "" +msgstr "供应商零件已更新" #: src/tables/purchasing/SupplierPartTable.tsx:176 msgid "Add supplier part" -msgstr "" +msgstr "添加供应商零件" #: src/tables/purchasing/SupplierPartTable.tsx:188 msgid "Show active supplier parts" @@ -6195,47 +6255,47 @@ msgstr "" #: src/tables/purchasing/SupplierPartTable.tsx:218 msgid "Delete Supplier Part" -msgstr "" +msgstr "删除供应商零件" #: src/tables/settings/CurrencyTable.tsx:28 msgid "Rate" -msgstr "" +msgstr "汇率" #: src/tables/settings/CurrencyTable.tsx:40 msgid "Exchange rates updated" -msgstr "" +msgstr "汇率已更新" #: src/tables/settings/CurrencyTable.tsx:46 msgid "Exchange rate update error" -msgstr "" +msgstr "汇率更新错误" #: src/tables/settings/CurrencyTable.tsx:57 msgid "Refresh currency exchange rates" -msgstr "" +msgstr "刷新货币汇率" #: src/tables/settings/CustomUnitsTable.tsx:50 msgid "Add Custom Unit" -msgstr "" +msgstr "添加自定义单位" #: src/tables/settings/CustomUnitsTable.tsx:60 msgid "Edit Custom Unit" -msgstr "" +msgstr "编辑自定义单位" #: src/tables/settings/CustomUnitsTable.tsx:68 msgid "Delete Custom Unit" -msgstr "" +msgstr "删除自定义单位" #: src/tables/settings/CustomUnitsTable.tsx:100 msgid "Add custom unit" -msgstr "" +msgstr "添加自定义单位" #: src/tables/settings/ErrorTable.tsx:29 msgid "When" -msgstr "" +msgstr "当" #: src/tables/settings/ErrorTable.tsx:39 msgid "Error Information" -msgstr "" +msgstr "错误信息" #: src/tables/settings/ErrorTable.tsx:51 msgid "Delete Error Report" @@ -6247,101 +6307,101 @@ msgstr "" #: src/tables/settings/ErrorTable.tsx:53 msgid "Are you sure you want to delete this error report?" -msgstr "" +msgstr "确定要删除这错误告吗?" #: src/tables/settings/ErrorTable.tsx:55 msgid "Error report deleted" -msgstr "" +msgstr "错误报告已删除" #: src/tables/settings/ErrorTable.tsx:77 #: src/tables/settings/FailedTasksTable.tsx:57 msgid "Error Details" -msgstr "" +msgstr "错误详情" #: src/tables/settings/FailedTasksTable.tsx:24 #: src/tables/settings/PendingTasksTable.tsx:17 #: src/tables/settings/ScheduledTasksTable.tsx:19 msgid "Task" -msgstr "" +msgstr "任务" #: src/tables/settings/FailedTasksTable.tsx:30 #: src/tables/settings/PendingTasksTable.tsx:22 msgid "Task ID" -msgstr "" +msgstr "任务ID" #: src/tables/settings/FailedTasksTable.tsx:34 -#: src/tables/stock/StockItemTestResultTable.tsx:205 +#: src/tables/stock/StockItemTestResultTable.tsx:206 msgid "Started" -msgstr "" +msgstr "已开始" #: src/tables/settings/FailedTasksTable.tsx:40 msgid "Stopped" -msgstr "" +msgstr "已停止" #: src/tables/settings/FailedTasksTable.tsx:46 msgid "Attempts" -msgstr "" +msgstr "尝试次数" #: src/tables/settings/GroupTable.tsx:51 msgid "Group with id {id} not found" -msgstr "" +msgstr "未找到 ID 为 {id} 的群组" #: src/tables/settings/GroupTable.tsx:53 msgid "An error occurred while fetching group details" -msgstr "" +msgstr "获取群组详细信息时出错" #: src/tables/settings/GroupTable.tsx:77 msgid "Permission set" -msgstr "" +msgstr "权限设置" #: src/tables/settings/GroupTable.tsx:126 msgid "Delete group" -msgstr "" +msgstr "删除群组" #: src/tables/settings/GroupTable.tsx:127 msgid "Group deleted" -msgstr "" +msgstr "群组已删除" #: src/tables/settings/GroupTable.tsx:129 msgid "Are you sure you want to delete this group?" -msgstr "" +msgstr "确定要删除这个群组吗?" #: src/tables/settings/GroupTable.tsx:134 #: src/tables/settings/GroupTable.tsx:146 msgid "Add group" -msgstr "" +msgstr "添加群组" #: src/tables/settings/GroupTable.tsx:158 msgid "Edit group" -msgstr "" +msgstr "编辑群组" #: src/tables/settings/PendingTasksTable.tsx:36 msgid "Arguments" -msgstr "" +msgstr "参数" #: src/tables/settings/ProjectCodeTable.tsx:42 msgid "Add Project Code" -msgstr "" +msgstr "添加项目编码" #: src/tables/settings/ProjectCodeTable.tsx:54 msgid "Edit Project Code" -msgstr "" +msgstr "编辑项目编码" #: src/tables/settings/ProjectCodeTable.tsx:62 msgid "Delete Project Code" -msgstr "" +msgstr "删除项目编码" #: src/tables/settings/ProjectCodeTable.tsx:94 msgid "Add project code" -msgstr "" +msgstr "编辑项目编码" #: src/tables/settings/ScheduledTasksTable.tsx:25 msgid "Last Run" -msgstr "" +msgstr "上一次运行" #: src/tables/settings/ScheduledTasksTable.tsx:47 msgid "Next Run" -msgstr "" +msgstr "下一次运行" #: src/tables/settings/TemplateTable.tsx:82 msgid "Template not found" @@ -6398,7 +6458,7 @@ msgstr "" #: src/tables/settings/TemplateTable.tsx:271 msgid "Filter by enabled status" -msgstr "" +msgstr "按启用状态筛选" #: src/tables/settings/TemplateTable.tsx:276 msgid "Model Type" @@ -6410,68 +6470,68 @@ msgstr "" #: src/tables/settings/UserTable.tsx:79 msgid "User with id {id} not found" -msgstr "" +msgstr "未找到 ID 为 {id} 的用户" #: src/tables/settings/UserTable.tsx:81 msgid "An error occurred while fetching user details" -msgstr "" +msgstr "获取用户详细信息时出错" #: src/tables/settings/UserTable.tsx:99 msgid "Is Active" -msgstr "" +msgstr "激活" #: src/tables/settings/UserTable.tsx:100 msgid "Designates whether this user should be treated as active. Unselect this instead of deleting accounts." -msgstr "" +msgstr "指定是否将此用户视为激活用户。取消选择此选项将不会删除账户。" #: src/tables/settings/UserTable.tsx:104 msgid "Is Staff" -msgstr "" +msgstr "员工" #: src/tables/settings/UserTable.tsx:105 msgid "Designates whether the user can log into the django admin site." -msgstr "" +msgstr "指定用户是否可以登录 django 管理页面。" #: src/tables/settings/UserTable.tsx:109 msgid "Is Superuser" -msgstr "" +msgstr "超级用户" #: src/tables/settings/UserTable.tsx:110 msgid "Designates that this user has all permissions without explicitly assigning them." -msgstr "" +msgstr "指定该用户拥有所有权限,而无需明确分配。" #: src/tables/settings/UserTable.tsx:120 msgid "You cannot edit the rights for the currently logged-in user." -msgstr "" +msgstr "您不能编辑当前登录用户的权限。" #: src/tables/settings/UserTable.tsx:151 msgid "No groups" -msgstr "" +msgstr "没有群组" #: src/tables/settings/UserTable.tsx:231 msgid "Delete user" -msgstr "" +msgstr "删除用户" #: src/tables/settings/UserTable.tsx:232 msgid "User deleted" -msgstr "" +msgstr "用户已删除" #: src/tables/settings/UserTable.tsx:234 msgid "Are you sure you want to delete this user?" -msgstr "" +msgstr "您确定要删除该用户吗?" #: src/tables/settings/UserTable.tsx:240 #: src/tables/settings/UserTable.tsx:258 msgid "Add user" -msgstr "" +msgstr "添加用户" #: src/tables/settings/UserTable.tsx:248 msgid "Added user" -msgstr "" +msgstr "已添加用户" #: src/tables/settings/UserTable.tsx:270 msgid "Edit user" -msgstr "" +msgstr "编辑用户" #: src/tables/stock/LocationTypesTable.tsx:36 #: src/tables/stock/LocationTypesTable.tsx:105 @@ -6492,285 +6552,285 @@ msgstr "" #: src/tables/stock/StockItemTable.tsx:90 msgid "This stock item is in production" -msgstr "" +msgstr "该库存项正在生产" #: src/tables/stock/StockItemTable.tsx:99 msgid "This stock item has been assigned to a sales order" -msgstr "" +msgstr "库存项已分配到销售订单" #: src/tables/stock/StockItemTable.tsx:108 msgid "This stock item has been assigned to a customer" -msgstr "" +msgstr "库存项已分配给客户" #: src/tables/stock/StockItemTable.tsx:117 msgid "This stock item is installed in another stock item" -msgstr "" +msgstr "此库存项已安装在另一个库存项中" #: src/tables/stock/StockItemTable.tsx:126 msgid "This stock item has been consumed by a build order" -msgstr "" +msgstr "此库存项已被生产订单消耗" #: src/tables/stock/StockItemTable.tsx:135 msgid "This stock item has expired" -msgstr "" +msgstr "此库存项已过期" #: src/tables/stock/StockItemTable.tsx:139 msgid "This stock item is stale" -msgstr "" +msgstr "此库存项是过期项" #: src/tables/stock/StockItemTable.tsx:150 msgid "This stock item is fully allocated" -msgstr "" +msgstr "此库存项已完全分配" #: src/tables/stock/StockItemTable.tsx:157 msgid "This stock item is partially allocated" -msgstr "" +msgstr "此库存项已被部分分配" #: src/tables/stock/StockItemTable.tsx:185 msgid "This stock item has been depleted" -msgstr "" +msgstr "库存项已耗尽" #: src/tables/stock/StockItemTable.tsx:255 msgid "Show stock for active parts" -msgstr "" +msgstr "显示激活零件的库存" #: src/tables/stock/StockItemTable.tsx:260 msgid "Filter by stock status" -msgstr "" +msgstr "按库存状态筛选" #: src/tables/stock/StockItemTable.tsx:266 msgid "Show stock for assmebled parts" -msgstr "" +msgstr "显示装配零件的库存" #: src/tables/stock/StockItemTable.tsx:271 msgid "Show items which have been allocated" -msgstr "" +msgstr "显示已分配的项目" #: src/tables/stock/StockItemTable.tsx:276 msgid "Show items which are available" -msgstr "" +msgstr "显示可用的项目" #: src/tables/stock/StockItemTable.tsx:280 #: src/tables/stock/StockLocationTable.tsx:33 msgid "Include Sublocations" -msgstr "" +msgstr "包括子地点" #: src/tables/stock/StockItemTable.tsx:281 msgid "Include stock in sublocations" -msgstr "" +msgstr "包括子地点的库存" #: src/tables/stock/StockItemTable.tsx:285 msgid "Depleted" -msgstr "" +msgstr "耗尽" #: src/tables/stock/StockItemTable.tsx:286 msgid "Show depleted stock items" -msgstr "" +msgstr "显示耗尽的库存项" #: src/tables/stock/StockItemTable.tsx:291 msgid "Show items which are in stock" -msgstr "" +msgstr "显示库存中的项目" #: src/tables/stock/StockItemTable.tsx:296 msgid "Show items which are in production" -msgstr "" +msgstr "显示正在生产的项目" #: src/tables/stock/StockItemTable.tsx:301 msgid "Include stock items for variant parts" -msgstr "" +msgstr "包括变体零件的库存项" #: src/tables/stock/StockItemTable.tsx:306 msgid "Show stock items which are installed in other items" -msgstr "" +msgstr "显示安装在其他项目中的库存项" #: src/tables/stock/StockItemTable.tsx:310 msgid "Sent to Customer" -msgstr "" +msgstr "发送给客户" #: src/tables/stock/StockItemTable.tsx:311 msgid "Show items which have been sent to a customer" -msgstr "" +msgstr "显示已发送给客户的项目" #: src/tables/stock/StockItemTable.tsx:315 msgid "Is Serialized" -msgstr "" +msgstr "已序列化" #: src/tables/stock/StockItemTable.tsx:316 msgid "Show items which have a serial number" -msgstr "" +msgstr "显示带有序列号的项目" #: src/tables/stock/StockItemTable.tsx:323 msgid "Has Batch Code" -msgstr "" +msgstr "有批号" #: src/tables/stock/StockItemTable.tsx:324 msgid "Show items which have a batch code" -msgstr "" +msgstr "显示有批号的项目" #: src/tables/stock/StockItemTable.tsx:330 msgid "Show tracked items" -msgstr "" +msgstr "显示已跟踪项目" #: src/tables/stock/StockItemTable.tsx:334 msgid "Has Purchase Price" -msgstr "" +msgstr "有采购价格" #: src/tables/stock/StockItemTable.tsx:335 msgid "Show items which have a purchase price" -msgstr "" +msgstr "显示有购买价格的项目" #: src/tables/stock/StockItemTable.tsx:343 msgid "External Location" -msgstr "" +msgstr "外部地点" #: src/tables/stock/StockItemTable.tsx:344 msgid "Show items in an external location" -msgstr "" +msgstr "显示外部库存地点的项目" #: src/tables/stock/StockItemTable.tsx:416 msgid "Add a new stock item" -msgstr "" +msgstr "添加一个新的库存项" #: src/tables/stock/StockItemTable.tsx:425 msgid "Remove some quantity from a stock item" -msgstr "" +msgstr "从库存项中删除一些数量" #: src/tables/stock/StockItemTable.tsx:447 msgid "Move Stock items to new locations" -msgstr "" +msgstr "将库存项目移动到新位置" #: src/tables/stock/StockItemTable.tsx:454 msgid "Change stock status" -msgstr "" +msgstr "更改库存状态" #: src/tables/stock/StockItemTable.tsx:456 msgid "Change the status of stock items" -msgstr "" +msgstr "更改库存项的状态" #: src/tables/stock/StockItemTable.tsx:463 msgid "Merge stock" -msgstr "" +msgstr "合并库存" #: src/tables/stock/StockItemTable.tsx:465 msgid "Merge stock items" -msgstr "" +msgstr "合并库存项" #: src/tables/stock/StockItemTable.tsx:472 msgid "Order stock" -msgstr "" +msgstr "订单库存" #: src/tables/stock/StockItemTable.tsx:474 #: src/tables/stock/StockItemTable.tsx:480 msgid "Order new stock" -msgstr "" +msgstr "订单新库存" #: src/tables/stock/StockItemTable.tsx:478 msgid "Assign to customer" -msgstr "" +msgstr "分配给客户" #: src/tables/stock/StockItemTable.tsx:487 msgid "Delete stock" -msgstr "" +msgstr "删除库存" #: src/tables/stock/StockItemTable.tsx:489 msgid "Delete stock items" -msgstr "" +msgstr "删除库存项" -#: src/tables/stock/StockItemTestResultTable.tsx:125 +#: src/tables/stock/StockItemTestResultTable.tsx:126 msgid "Test" -msgstr "" +msgstr "测试" -#: src/tables/stock/StockItemTestResultTable.tsx:151 +#: src/tables/stock/StockItemTestResultTable.tsx:152 msgid "Test result for installed stock item" -msgstr "" +msgstr "已安装库存项目的测试结果" -#: src/tables/stock/StockItemTestResultTable.tsx:162 +#: src/tables/stock/StockItemTestResultTable.tsx:163 msgid "Result" -msgstr "" +msgstr "结果" -#: src/tables/stock/StockItemTestResultTable.tsx:168 +#: src/tables/stock/StockItemTestResultTable.tsx:169 msgid "No Result" -msgstr "" +msgstr "无结果" -#: src/tables/stock/StockItemTestResultTable.tsx:184 +#: src/tables/stock/StockItemTestResultTable.tsx:185 msgid "Attachment" -msgstr "" +msgstr "附件" -#: src/tables/stock/StockItemTestResultTable.tsx:200 +#: src/tables/stock/StockItemTestResultTable.tsx:201 msgid "Test station" -msgstr "" +msgstr "测试站" -#: src/tables/stock/StockItemTestResultTable.tsx:220 +#: src/tables/stock/StockItemTestResultTable.tsx:221 msgid "Finished" -msgstr "" +msgstr "已完成" -#: src/tables/stock/StockItemTestResultTable.tsx:268 -#: src/tables/stock/StockItemTestResultTable.tsx:340 -#: src/tables/stock/StockItemTestResultTable.tsx:395 +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 msgid "Add Test Result" -msgstr "" +msgstr "添加测试结果" -#: src/tables/stock/StockItemTestResultTable.tsx:270 +#: src/tables/stock/StockItemTestResultTable.tsx:254 msgid "Test result added" -msgstr "" +msgstr "测试结果已添加" -#: src/tables/stock/StockItemTestResultTable.tsx:279 -#: src/tables/stock/StockItemTestResultTable.tsx:350 +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 msgid "Edit Test Result" -msgstr "" +msgstr "编辑测试结果" -#: src/tables/stock/StockItemTestResultTable.tsx:281 +#: src/tables/stock/StockItemTestResultTable.tsx:265 msgid "Test result updated" -msgstr "" +msgstr "测试结果已更新" + +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 +msgid "Delete Test Result" +msgstr "删除测试结果" + +#: src/tables/stock/StockItemTestResultTable.tsx:273 +msgid "Test result deleted" +msgstr "测试结果已删除" #: src/tables/stock/StockItemTestResultTable.tsx:287 -#: src/tables/stock/StockItemTestResultTable.tsx:359 -msgid "Delete Test Result" -msgstr "" - -#: src/tables/stock/StockItemTestResultTable.tsx:289 -msgid "Test result deleted" -msgstr "" - -#: src/tables/stock/StockItemTestResultTable.tsx:303 msgid "Test Passed" -msgstr "" +msgstr "测试通过" -#: src/tables/stock/StockItemTestResultTable.tsx:304 +#: src/tables/stock/StockItemTestResultTable.tsx:288 msgid "Test result has been recorded" -msgstr "" +msgstr "测试结果已被记录" -#: src/tables/stock/StockItemTestResultTable.tsx:311 +#: src/tables/stock/StockItemTestResultTable.tsx:295 msgid "Failed to record test result" -msgstr "" +msgstr "记录测试结果失败" -#: src/tables/stock/StockItemTestResultTable.tsx:328 +#: src/tables/stock/StockItemTestResultTable.tsx:312 msgid "Pass Test" -msgstr "" +msgstr "通过测试" -#: src/tables/stock/StockItemTestResultTable.tsx:377 +#: src/tables/stock/StockItemTestResultTable.tsx:361 msgid "Show results for required tests" -msgstr "" +msgstr "显示需要测试的结果" -#: src/tables/stock/StockItemTestResultTable.tsx:381 +#: src/tables/stock/StockItemTestResultTable.tsx:365 msgid "Include Installed" -msgstr "" +msgstr "包含已安装的" -#: src/tables/stock/StockItemTestResultTable.tsx:382 +#: src/tables/stock/StockItemTestResultTable.tsx:366 msgid "Show results for installed stock items" -msgstr "" +msgstr "显示已安装库存项目的结果" -#: src/tables/stock/StockItemTestResultTable.tsx:386 +#: src/tables/stock/StockItemTestResultTable.tsx:370 msgid "Passed" -msgstr "" +msgstr "通过" -#: src/tables/stock/StockItemTestResultTable.tsx:387 +#: src/tables/stock/StockItemTestResultTable.tsx:371 msgid "Show only passed tests" -msgstr "" +msgstr "只显示通过的测试" #: src/tables/stock/StockLocationTable.tsx:34 msgid "Include sublocations in results" -msgstr "" +msgstr "在结果中包含子地点" #: src/tables/stock/StockLocationTable.tsx:38 msgid "structural" @@ -6778,7 +6838,7 @@ msgstr "" #: src/tables/stock/StockLocationTable.tsx:39 msgid "Show structural locations" -msgstr "" +msgstr "显示结构性地点" #: src/tables/stock/StockLocationTable.tsx:43 msgid "external" @@ -6786,16 +6846,16 @@ msgstr "" #: src/tables/stock/StockLocationTable.tsx:44 msgid "Show external locations" -msgstr "" +msgstr "显示外部地点" #: src/tables/stock/StockLocationTable.tsx:48 msgid "Has location type" -msgstr "" +msgstr "有位置类型" #: src/tables/stock/StockLocationTable.tsx:85 #: src/tables/stock/StockLocationTable.tsx:110 msgid "Add Stock Location" -msgstr "" +msgstr "添加库存地点" #: src/tables/stock/StockTrackingTable.tsx:64 msgid "Added" @@ -6811,17 +6871,17 @@ msgstr "" #: src/views/MobileAppView.tsx:22 msgid "Mobile viewport detected" -msgstr "" +msgstr "检测到手机视图" #: src/views/MobileAppView.tsx:25 msgid "Platform UI is optimized for Tablets and Desktops, you can use the official app for a mobile experience." -msgstr "" +msgstr "Platform UI 针对平板电脑和台式机进行了优化,您可以使用官方应用程序获得移动体验。" #: src/views/MobileAppView.tsx:31 msgid "Read the docs" -msgstr "" +msgstr "阅读文档" #: src/views/MobileAppView.tsx:35 msgid "Ignore and continue to Desktop view" -msgstr "" +msgstr "忽略并继续到桌面视图" diff --git a/src/frontend/src/main.tsx b/src/frontend/src/main.tsx index 01ea516254..b4d48e77e5 100644 --- a/src/frontend/src/main.tsx +++ b/src/frontend/src/main.tsx @@ -1,4 +1,5 @@ import '@mantine/carousel/styles.css'; +import '@mantine/charts/styles.css'; import '@mantine/core/styles.css'; import '@mantine/notifications/styles.css'; import '@mantine/spotlight/styles.css'; diff --git a/src/frontend/src/pages/Index/Playground.tsx b/src/frontend/src/pages/Index/Playground.tsx index ec8e0ba7f8..8ce44f54f8 100644 --- a/src/frontend/src/pages/Index/Playground.tsx +++ b/src/frontend/src/pages/Index/Playground.tsx @@ -56,20 +56,6 @@ function ApiFormsPlayground() { fields: editPartFields }); - const newAttachment = useCreateApiFormModal({ - url: ApiEndpoints.part_attachment_list, - title: 'Create Attachment', - fields: { - part: {}, - attachment: {}, - comment: {} - }, - initialData: { - part: 1 - }, - successMessage: 'Attachment uploaded' - }); - const [active, setActive] = useState(true); const [name, setName] = useState('Hello'); @@ -130,9 +116,6 @@ function ApiFormsPlayground() { {editCategory.modal} - - {newAttachment.modal} - {createPartModal} diff --git a/src/frontend/src/pages/Index/Settings/SystemSettings.tsx b/src/frontend/src/pages/Index/Settings/SystemSettings.tsx index 53f2e18227..f787f77b99 100644 --- a/src/frontend/src/pages/Index/Settings/SystemSettings.tsx +++ b/src/frontend/src/pages/Index/Settings/SystemSettings.tsx @@ -19,6 +19,7 @@ import { } from '@tabler/icons-react'; import { useMemo } from 'react'; +import { PlaceholderPanel } from '../../../components/items/Placeholder'; import { PanelGroup, PanelType } from '../../../components/nav/PanelGroup'; import { SettingsHeader } from '../../../components/nav/SettingsHeader'; import { GlobalSettingList } from '../../../components/settings/SettingList'; @@ -98,7 +99,8 @@ export default function SystemSettings() { { name: 'notifications', label: t`Notifications`, - icon: + icon: , + content: }, { name: 'pricing', @@ -161,7 +163,8 @@ export default function SystemSettings() { { name: 'categories', label: t`Part Categories`, - icon: + icon: , + content: }, { name: 'parts', @@ -223,7 +226,8 @@ export default function SystemSettings() { { name: 'stocktake', label: t`Stocktake`, - icon: + icon: , + content: }, { name: 'buildorders', diff --git a/src/frontend/src/pages/Index/Settings/UserSettings.tsx b/src/frontend/src/pages/Index/Settings/UserSettings.tsx index e20f0489f1..f585000d5d 100644 --- a/src/frontend/src/pages/Index/Settings/UserSettings.tsx +++ b/src/frontend/src/pages/Index/Settings/UserSettings.tsx @@ -11,6 +11,7 @@ import { } from '@tabler/icons-react'; import { useMemo } from 'react'; +import { PlaceholderPanel } from '../../../components/items/Placeholder'; import { PanelGroup, PanelType } from '../../../components/nav/PanelGroup'; import { SettingsHeader } from '../../../components/nav/SettingsHeader'; import { UserSettingList } from '../../../components/settings/SettingList'; @@ -39,7 +40,8 @@ export default function UserSettings() { { name: 'dashboard', label: t`Dashboard`, - icon: + icon: , + content: }, { name: 'display', @@ -92,7 +94,8 @@ export default function UserSettings() { { name: 'notifications', label: t`Notifications`, - icon: + icon: , + content: }, { name: 'reporting', diff --git a/src/frontend/src/pages/build/BuildDetail.tsx b/src/frontend/src/pages/build/BuildDetail.tsx index a6b5474fcd..ec49228af8 100644 --- a/src/frontend/src/pages/build/BuildDetail.tsx +++ b/src/frontend/src/pages/build/BuildDetail.tsx @@ -295,11 +295,7 @@ export default function BuildDetail() { label: t`Attachments`, icon: , content: ( - + ) }, { diff --git a/src/frontend/src/pages/company/CompanyDetail.tsx b/src/frontend/src/pages/company/CompanyDetail.tsx index 517eda346c..d8102cecfb 100644 --- a/src/frontend/src/pages/company/CompanyDetail.tsx +++ b/src/frontend/src/pages/company/CompanyDetail.tsx @@ -256,9 +256,8 @@ export default function CompanyDetail(props: Readonly) { icon: , content: ( ) }, diff --git a/src/frontend/src/pages/company/ManufacturerPartDetail.tsx b/src/frontend/src/pages/company/ManufacturerPartDetail.tsx index 8865d98b7a..7a145ad9b7 100644 --- a/src/frontend/src/pages/company/ManufacturerPartDetail.tsx +++ b/src/frontend/src/pages/company/ManufacturerPartDetail.tsx @@ -173,9 +173,8 @@ export default function ManufacturerPartDetail() { icon: , content: ( ) } diff --git a/src/frontend/src/pages/part/PartDetail.tsx b/src/frontend/src/pages/part/PartDetail.tsx index 4cb71cf97c..3eafa7b23f 100644 --- a/src/frontend/src/pages/part/PartDetail.tsx +++ b/src/frontend/src/pages/part/PartDetail.tsx @@ -53,6 +53,7 @@ import { UnlinkBarcodeAction, ViewBarcodeAction } from '../../components/items/ActionDropdown'; +import { PlaceholderPanel } from '../../components/items/Placeholder'; import NavigationTree from '../../components/nav/NavigationTree'; import { PageDetail } from '../../components/nav/PageDetail'; import { PanelGroup, PanelType } from '../../components/nav/PanelGroup'; @@ -361,9 +362,13 @@ export default function PartDetail() { }); } }); - return `${formatPriceRange(data.overall_min, data.overall_max)}${ - part.units && ' / ' + part.units - }`; + + return ( + data && + `${formatPriceRange(data.overall_min, data.overall_max)}${ + part.units && ' / ' + part.units + }` + ); } }); @@ -513,7 +518,8 @@ export default function PartDetail() { name: 'allocations', label: t`Allocations`, icon: , - hidden: !part.component && !part.salable + hidden: !part.component && !part.salable, + content: }, { name: 'bom', @@ -572,7 +578,8 @@ export default function PartDetail() { name: 'purchase_orders', label: t`Purchase Orders`, icon: , - hidden: !part.purchaseable + hidden: !part.purchaseable, + content: }, { name: 'sales_orders', @@ -584,12 +591,14 @@ export default function PartDetail() { { name: 'scheduling', label: t`Scheduling`, - icon: + icon: , + content: }, { name: 'stocktake', label: t`Stocktake`, - icon: + icon: , + content: }, { name: 'test_templates', @@ -613,11 +622,7 @@ export default function PartDetail() { label: t`Attachments`, icon: , content: ( - + ) }, { diff --git a/src/frontend/src/pages/part/pricing/BomPricingPanel.tsx b/src/frontend/src/pages/part/pricing/BomPricingPanel.tsx index b0c9f60392..9ee05a7bf9 100644 --- a/src/frontend/src/pages/part/pricing/BomPricingPanel.tsx +++ b/src/frontend/src/pages/part/pricing/BomPricingPanel.tsx @@ -1,5 +1,7 @@ import { t } from '@lingui/macro'; +import { BarChart, DonutChart } from '@mantine/charts'; import { + Center, Group, SegmentedControl, SimpleGrid, @@ -7,18 +9,6 @@ import { Text } from '@mantine/core'; import { ReactNode, useMemo, useState } from 'react'; -import { - Bar, - BarChart, - Cell, - Legend, - Pie, - PieChart, - ResponsiveContainer, - Tooltip, - XAxis, - YAxis -} from 'recharts'; import { CHART_COLORS } from '../../../components/charts/colors'; import { tooltipFormatter } from '../../../components/charts/tooltipFormatter'; @@ -44,42 +34,30 @@ function BomPieChart({ readonly data: any[]; readonly currency: string; }) { + // Construct donut data + const maxPricing = useMemo(() => { + return data.map((entry, index) => { + return { + name: entry.name, + value: entry.total_price_max, + color: CHART_COLORS[index % CHART_COLORS.length] + '.5' + }; + }); + }, [data]); + return ( - - - - {data.map((_entry, index) => ( - - ))} - - - {data.map((_entry, index) => ( - - ))} - - tooltipFormatter(label, currency)} - /> - - +
+ tooltipFormatter(value, currency)} + /> +
); } @@ -92,32 +70,18 @@ function BomBarChart({ readonly currency: string; }) { return ( - - - - - formatCurrency(value, { - currency: currency - })?.toString() ?? '' - } - /> - tooltipFormatter(label, currency)} - /> - - - - - + tooltipFormatter(value, currency)} + /> ); } diff --git a/src/frontend/src/pages/part/pricing/PriceBreakPanel.tsx b/src/frontend/src/pages/part/pricing/PriceBreakPanel.tsx index 8a8f87d5d0..fa1da3fe07 100644 --- a/src/frontend/src/pages/part/pricing/PriceBreakPanel.tsx +++ b/src/frontend/src/pages/part/pricing/PriceBreakPanel.tsx @@ -1,18 +1,9 @@ import { t } from '@lingui/macro'; +import { BarChart } from '@mantine/charts'; import { SimpleGrid } from '@mantine/core'; import { useCallback, useMemo, useState } from 'react'; -import { - Bar, - BarChart, - Legend, - ResponsiveContainer, - Tooltip, - XAxis, - YAxis -} from 'recharts'; import { AddItemButton } from '../../../components/buttons/AddItemButton'; -import { CHART_COLORS } from '../../../components/charts/colors'; import { tooltipFormatter } from '../../../components/charts/tooltipFormatter'; import { ApiFormFieldSet } from '../../../components/forms/fields/ApiFormField'; import { formatCurrency } from '../../../defaults/formatters'; @@ -169,29 +160,14 @@ export default function PriceBreakPanel({ }} /> {table.records.length > 0 ? ( - - - - - formatCurrency(value, { - currency: currency - })?.toString() ?? '' - } - /> - - tooltipFormatter(label, currency) - } - /> - - - - + tooltipFormatter(value, currency)} + /> ) : ( )} diff --git a/src/frontend/src/pages/part/pricing/PricingOverviewPanel.tsx b/src/frontend/src/pages/part/pricing/PricingOverviewPanel.tsx index 4aa67f844b..2f87f91855 100644 --- a/src/frontend/src/pages/part/pricing/PricingOverviewPanel.tsx +++ b/src/frontend/src/pages/part/pricing/PricingOverviewPanel.tsx @@ -1,4 +1,5 @@ import { t } from '@lingui/macro'; +import { BarChart } from '@mantine/charts'; import { Alert, Anchor, @@ -19,19 +20,9 @@ import { } from '@tabler/icons-react'; import { DataTable } from 'mantine-datatable'; import { ReactNode, useMemo } from 'react'; -import { - Bar, - BarChart, - Legend, - ResponsiveContainer, - Tooltip, - XAxis, - YAxis -} from 'recharts'; -import { CHART_COLORS } from '../../../components/charts/colors'; import { tooltipFormatter } from '../../../components/charts/tooltipFormatter'; -import { formatCurrency, renderDate } from '../../../defaults/formatters'; +import { formatCurrency, formatDate } from '../../../defaults/formatters'; import { panelOptions } from '../PartPricingPanel'; interface PricingOverviewEntry { @@ -182,7 +173,7 @@ export default function PricingOverviewPanel({ {pricing?.updated && ( - {renderDate(pricing.updated)} + {formatDate(pricing.updated)} )} @@ -192,34 +183,17 @@ export default function PricingOverviewPanel({ columns={columns} /> - - - - - formatCurrency(value, { - currency: pricing?.currency - })?.toString() ?? '' - } - /> - - tooltipFormatter(label, pricing?.currency) - } - /> - - - - - + tooltipFormatter(value, pricing?.currency)} + /> ); diff --git a/src/frontend/src/pages/part/pricing/PurchaseHistoryPanel.tsx b/src/frontend/src/pages/part/pricing/PurchaseHistoryPanel.tsx index b13495497e..1c4a4880eb 100644 --- a/src/frontend/src/pages/part/pricing/PurchaseHistoryPanel.tsx +++ b/src/frontend/src/pages/part/pricing/PurchaseHistoryPanel.tsx @@ -1,19 +1,9 @@ import { t } from '@lingui/macro'; +import { BarChart } from '@mantine/charts'; import { Group, SimpleGrid, Text } from '@mantine/core'; import { ReactNode, useCallback, useMemo } from 'react'; -import { - Bar, - BarChart, - Legend, - ResponsiveContainer, - Tooltip, - XAxis, - YAxis -} from 'recharts'; -import { CHART_COLORS } from '../../../components/charts/colors'; -import { tooltipFormatter } from '../../../components/charts/tooltipFormatter'; -import { formatCurrency, renderDate } from '../../../defaults/formatters'; +import { formatCurrency, formatDate } from '../../../defaults/formatters'; import { ApiEndpoints } from '../../../enums/ApiEndpoints'; import { useTable } from '../../../hooks/UseTable'; import { apiUrl } from '../../../states/ApiState'; @@ -50,7 +40,7 @@ export default function PurchaseHistoryPanel({ title: t`Date`, sortable: true, switchable: true, - render: (record: any) => renderDate(record.order_detail.complete_date) + render: (record: any) => formatDate(record.order_detail.complete_date) }, { accessor: 'purchase_price', @@ -131,32 +121,13 @@ export default function PurchaseHistoryPanel({ }} /> {purchaseHistoryData.length > 0 ? ( - - - - - formatCurrency(value, { - currency: currency - })?.toString() ?? '' - } - /> - tooltipFormatter(label, currency)} - /> - - - - - + ) : ( )} diff --git a/src/frontend/src/pages/part/pricing/SaleHistoryPanel.tsx b/src/frontend/src/pages/part/pricing/SaleHistoryPanel.tsx index 032777fec5..a71427c24d 100644 --- a/src/frontend/src/pages/part/pricing/SaleHistoryPanel.tsx +++ b/src/frontend/src/pages/part/pricing/SaleHistoryPanel.tsx @@ -1,18 +1,8 @@ import { t } from '@lingui/macro'; +import { BarChart } from '@mantine/charts'; import { SimpleGrid } from '@mantine/core'; import { ReactNode, useMemo } from 'react'; -import { - Bar, - BarChart, - Legend, - ResponsiveContainer, - Tooltip, - XAxis, - YAxis -} from 'recharts'; -import { CHART_COLORS } from '../../../components/charts/colors'; -import { tooltipFormatter } from '../../../components/charts/tooltipFormatter'; import { formatCurrency } from '../../../defaults/formatters'; import { ApiEndpoints } from '../../../enums/ApiEndpoints'; import { useTable } from '../../../hooks/UseTable'; @@ -95,27 +85,13 @@ export default function SaleHistoryPanel({ part }: { part: any }): ReactNode { }} /> {saleHistoryData.length > 0 ? ( - - - - - formatCurrency(value, { - currency: currency - })?.toString() ?? '' - } - /> - tooltipFormatter(label, currency)} - /> - - - - + ) : ( )} diff --git a/src/frontend/src/pages/part/pricing/SupplierPricingPanel.tsx b/src/frontend/src/pages/part/pricing/SupplierPricingPanel.tsx index 0cae3cb156..e69a498d38 100644 --- a/src/frontend/src/pages/part/pricing/SupplierPricingPanel.tsx +++ b/src/frontend/src/pages/part/pricing/SupplierPricingPanel.tsx @@ -1,18 +1,9 @@ import { t } from '@lingui/macro'; +import { BarChart } from '@mantine/charts'; import { SimpleGrid } from '@mantine/core'; import { useMemo } from 'react'; -import { - Bar, - BarChart, - ResponsiveContainer, - Tooltip, - XAxis, - YAxis -} from 'recharts'; -import { CHART_COLORS } from '../../../components/charts/colors'; import { tooltipFormatter } from '../../../components/charts/tooltipFormatter'; -import { formatCurrency } from '../../../defaults/formatters'; import { ApiEndpoints } from '../../../enums/ApiEndpoints'; import { useTable } from '../../../hooks/UseTable'; import { apiUrl } from '../../../states/ApiState'; @@ -64,31 +55,19 @@ export default function SupplierPricingPanel({ part }: { part: any }) { }} /> {supplierPricingData.length > 0 ? ( - - - - - formatCurrency(value, { - currency: currency - })?.toString() ?? '' - } - /> - tooltipFormatter(label, currency)} - /> - - - - + tooltipFormatter(value, currency)} + /> ) : ( )} diff --git a/src/frontend/src/pages/part/pricing/VariantPricingPanel.tsx b/src/frontend/src/pages/part/pricing/VariantPricingPanel.tsx index 12f21ccd33..38c918b32c 100644 --- a/src/frontend/src/pages/part/pricing/VariantPricingPanel.tsx +++ b/src/frontend/src/pages/part/pricing/VariantPricingPanel.tsx @@ -1,17 +1,8 @@ import { t } from '@lingui/macro'; +import { BarChart } from '@mantine/charts'; import { SimpleGrid, Stack } from '@mantine/core'; import { ReactNode, useMemo } from 'react'; -import { - Bar, - BarChart, - Legend, - ResponsiveContainer, - Tooltip, - XAxis, - YAxis -} from 'recharts'; -import { CHART_COLORS } from '../../../components/charts/colors'; import { tooltipFormatter } from '../../../components/charts/tooltipFormatter'; import { formatCurrency } from '../../../defaults/formatters'; import { ApiEndpoints } from '../../../enums/ApiEndpoints'; @@ -97,34 +88,19 @@ export default function VariantPricingPanel({ }} /> {variantPricingData.length > 0 ? ( - - - - - formatCurrency(value, { - currency: pricing?.currency - })?.toString() ?? '' - } - /> - - tooltipFormatter(label, pricing?.currency) - } - /> - - - - - + + tooltipFormatter(value, pricing?.currency) + } + /> ) : ( )} diff --git a/src/frontend/src/pages/purchasing/PurchaseOrderDetail.tsx b/src/frontend/src/pages/purchasing/PurchaseOrderDetail.tsx index d01654cdf3..fe79915276 100644 --- a/src/frontend/src/pages/purchasing/PurchaseOrderDetail.tsx +++ b/src/frontend/src/pages/purchasing/PurchaseOrderDetail.tsx @@ -279,9 +279,8 @@ export default function PurchaseOrderDetail() { icon: , content: ( ) }, diff --git a/src/frontend/src/pages/sales/ReturnOrderDetail.tsx b/src/frontend/src/pages/sales/ReturnOrderDetail.tsx index 830a864171..4d62470f1a 100644 --- a/src/frontend/src/pages/sales/ReturnOrderDetail.tsx +++ b/src/frontend/src/pages/sales/ReturnOrderDetail.tsx @@ -22,6 +22,7 @@ import { DuplicateItemAction, EditItemAction } from '../../components/items/ActionDropdown'; +import { PlaceholderPanel } from '../../components/items/Placeholder'; import { PageDetail } from '../../components/nav/PageDetail'; import { PanelGroup, PanelType } from '../../components/nav/PanelGroup'; import { StatusRenderer } from '../../components/render/StatusRenderer'; @@ -220,7 +221,8 @@ export default function ReturnOrderDetail() { { name: 'line-items', label: t`Line Items`, - icon: + icon: , + content: }, { name: 'attachments', @@ -228,9 +230,8 @@ export default function ReturnOrderDetail() { icon: , content: ( ) }, diff --git a/src/frontend/src/pages/sales/SalesOrderDetail.tsx b/src/frontend/src/pages/sales/SalesOrderDetail.tsx index a7ba38cfa1..12b31bb9e6 100644 --- a/src/frontend/src/pages/sales/SalesOrderDetail.tsx +++ b/src/frontend/src/pages/sales/SalesOrderDetail.tsx @@ -25,6 +25,7 @@ import { DuplicateItemAction, EditItemAction } from '../../components/items/ActionDropdown'; +import { PlaceholderPanel } from '../../components/items/Placeholder'; import { PageDetail } from '../../components/nav/PageDetail'; import { PanelGroup, PanelType } from '../../components/nav/PanelGroup'; import { StatusRenderer } from '../../components/render/StatusRenderer'; @@ -248,17 +249,20 @@ export default function SalesOrderDetail() { { name: 'line-items', label: t`Line Items`, - icon: + icon: , + content: }, { name: 'pending-shipments', label: t`Pending Shipments`, - icon: + icon: , + content: }, { name: 'completed-shipments', label: t`Completed Shipments`, - icon: + icon: , + content: }, { name: 'build-orders', @@ -276,9 +280,8 @@ export default function SalesOrderDetail() { icon: , content: ( ) }, diff --git a/src/frontend/src/pages/stock/StockDetail.tsx b/src/frontend/src/pages/stock/StockDetail.tsx index dd28ccd061..14face5201 100644 --- a/src/frontend/src/pages/stock/StockDetail.tsx +++ b/src/frontend/src/pages/stock/StockDetail.tsx @@ -32,6 +32,7 @@ import { UnlinkBarcodeAction, ViewBarcodeAction } from '../../components/items/ActionDropdown'; +import { PlaceholderPanel } from '../../components/items/Placeholder'; import NavigationTree from '../../components/nav/NavigationTree'; import { PageDetail } from '../../components/nav/PageDetail'; import { PanelGroup, PanelType } from '../../components/nav/PanelGroup'; @@ -283,7 +284,9 @@ export default function StockDetail() { label: t`Allocations`, icon: , hidden: - !stockitem?.part_detail?.salable && !stockitem?.part_detail?.component + !stockitem?.part_detail?.salable && + !stockitem?.part_detail?.component, + content: }, { name: 'testdata', @@ -326,9 +329,8 @@ export default function StockDetail() { icon: , content: ( ) }, diff --git a/src/frontend/src/states/UserState.tsx b/src/frontend/src/states/UserState.tsx index 0292dfc106..ededb4ca4b 100644 --- a/src/frontend/src/states/UserState.tsx +++ b/src/frontend/src/states/UserState.tsx @@ -2,6 +2,7 @@ import { create } from 'zustand'; import { api, setApiDefaults } from '../App'; import { ApiEndpoints } from '../enums/ApiEndpoints'; +import { ModelType } from '../enums/ModelType'; import { UserPermissions, UserRoles } from '../enums/Roles'; import { clearCsrfCookie } from '../functions/auth'; import { apiUrl } from './ApiState'; @@ -22,6 +23,14 @@ interface UserStateProps { hasChangeRole: (role: UserRoles) => boolean; hasAddRole: (role: UserRoles) => boolean; hasViewRole: (role: UserRoles) => boolean; + checkUserPermission: ( + model: ModelType, + permission: UserPermissions + ) => boolean; + hasDeletePermission: (model: ModelType) => boolean; + hasChangePermission: (model: ModelType) => boolean; + hasAddPermission: (model: ModelType) => boolean; + hasViewPermission: (model: ModelType) => boolean; isLoggedIn: () => boolean; isStaff: () => boolean; isSuperuser: () => boolean; @@ -113,6 +122,7 @@ export const useUserState = create((set, get) => ({ // Update user with role data if (user) { user.roles = response.data?.roles ?? {}; + user.permissions = response.data?.permissions ?? {}; user.is_staff = response.data?.is_staff ?? false; user.is_superuser = response.data?.is_superuser ?? false; set({ user: user }); @@ -126,21 +136,6 @@ export const useUserState = create((set, get) => ({ get().clearUserState(); }); }, - checkUserRole: (role: UserRoles, permission: UserPermissions) => { - // Check if the user has the specified permission for the specified role - const user: UserProps = get().user as UserProps; - - if (!user) { - return false; - } - - if (user?.is_superuser) return true; - if (user?.roles === undefined) return false; - if (user?.roles[role] === undefined) return false; - if (user?.roles[role] === null) return false; - - return user?.roles[role]?.includes(permission) ?? false; - }, isLoggedIn: () => { if (!get().token) { return false; @@ -156,6 +151,21 @@ export const useUserState = create((set, get) => ({ const user: UserProps = get().user as UserProps; return user?.is_superuser ?? false; }, + checkUserRole: (role: UserRoles, permission: UserPermissions) => { + // Check if the user has the specified permission for the specified role + const user: UserProps = get().user as UserProps; + + if (!user) { + return false; + } + + if (user?.is_superuser) return true; + if (user?.roles === undefined) return false; + if (user?.roles[role] === undefined) return false; + if (user?.roles[role] === null) return false; + + return user?.roles[role]?.includes(permission) ?? false; + }, hasDeleteRole: (role: UserRoles) => { return get().checkUserRole(role, UserPermissions.delete); }, @@ -167,5 +177,33 @@ export const useUserState = create((set, get) => ({ }, hasViewRole: (role: UserRoles) => { return get().checkUserRole(role, UserPermissions.view); + }, + checkUserPermission: (model: ModelType, permission: UserPermissions) => { + // Check if the user has the specified permission for the specified model + const user: UserProps = get().user as UserProps; + + if (!user) { + return false; + } + + if (user?.is_superuser) return true; + + if (user?.permissions === undefined) return false; + if (user?.permissions[model] === undefined) return false; + if (user?.permissions[model] === null) return false; + + return user?.permissions[model]?.includes(permission) ?? false; + }, + hasDeletePermission: (model: ModelType) => { + return get().checkUserPermission(model, UserPermissions.delete); + }, + hasChangePermission: (model: ModelType) => { + return get().checkUserPermission(model, UserPermissions.change); + }, + hasAddPermission: (model: ModelType) => { + return get().checkUserPermission(model, UserPermissions.add); + }, + hasViewPermission: (model: ModelType) => { + return get().checkUserPermission(model, UserPermissions.view); } })); diff --git a/src/frontend/src/states/states.tsx b/src/frontend/src/states/states.tsx index 03e461d5a1..3cf2a94fff 100644 --- a/src/frontend/src/states/states.tsx +++ b/src/frontend/src/states/states.tsx @@ -23,6 +23,7 @@ export interface UserProps { is_staff?: boolean; is_superuser?: boolean; roles?: Record; + permissions?: Record; } // Type interface fully defining the current server diff --git a/src/frontend/src/tables/ColumnRenderers.tsx b/src/frontend/src/tables/ColumnRenderers.tsx index b3076954c8..342335a9d1 100644 --- a/src/frontend/src/tables/ColumnRenderers.tsx +++ b/src/frontend/src/tables/ColumnRenderers.tsx @@ -9,7 +9,7 @@ import { Thumbnail } from '../components/images/Thumbnail'; import { ProgressBar } from '../components/items/ProgressBar'; import { TableStatusRenderer } from '../components/render/StatusRenderer'; import { RenderOwner } from '../components/render/User'; -import { formatCurrency, renderDate } from '../defaults/formatters'; +import { formatCurrency, formatDate } from '../defaults/formatters'; import { ModelType } from '../enums/ModelType'; import { resolveItem } from '../functions/conversion'; import { cancelEvent } from '../functions/events'; @@ -180,7 +180,7 @@ export function DateColumn(props: TableColumnProps): TableColumn { title: t`Date`, switchable: true, render: (record: any) => - renderDate(resolveItem(record, props.accessor ?? 'date')), + formatDate(resolveItem(record, props.accessor ?? 'date')), ...props }; } diff --git a/src/frontend/src/tables/ColumnSelect.tsx b/src/frontend/src/tables/ColumnSelect.tsx index f0d83f8ecd..cf85811105 100644 --- a/src/frontend/src/tables/ColumnSelect.tsx +++ b/src/frontend/src/tables/ColumnSelect.tsx @@ -12,7 +12,7 @@ export function TableColumnSelect({ return ( - + diff --git a/src/frontend/src/tables/Filter.tsx b/src/frontend/src/tables/Filter.tsx index cf6d7aabe9..948ef95634 100644 --- a/src/frontend/src/tables/Filter.tsx +++ b/src/frontend/src/tables/Filter.tsx @@ -72,8 +72,8 @@ export function StatusFilterOptions( return Object.keys(codes).map((key) => { const entry = codes[key]; return { - value: entry.key, - label: entry.label ?? entry.key + value: entry.key.toString(), + label: entry.label?.toString() ?? entry.key.toString() }; }); } diff --git a/src/frontend/src/tables/FilterSelectDrawer.tsx b/src/frontend/src/tables/FilterSelectDrawer.tsx index c159a6c59a..2b79e30956 100644 --- a/src/frontend/src/tables/FilterSelectDrawer.tsx +++ b/src/frontend/src/tables/FilterSelectDrawer.tsx @@ -57,12 +57,6 @@ function FilterItem({ ); } -interface FilterProps extends React.ComponentPropsWithoutRef<'div'> { - name: string; - label: string; - description?: string; -} - function FilterAddGroup({ tableState, availableFilters @@ -182,6 +176,9 @@ export function FilterSelectDrawer({ withCloseButton={true} opened={opened} onClose={onClose} + closeButtonProps={{ + 'aria-label': 'filter-drawer-close' + }} title={{t`Table Filters`}} > diff --git a/src/frontend/src/tables/InvenTreeTable.tsx b/src/frontend/src/tables/InvenTreeTable.tsx index 47d26be023..ef77ec65c5 100644 --- a/src/frontend/src/tables/InvenTreeTable.tsx +++ b/src/frontend/src/tables/InvenTreeTable.tsx @@ -580,8 +580,8 @@ export function InvenTreeTable({ )} - - + + {tableProps.enableDownload && ( ({ ))} - + {tableProps.enableSearch && ( @@ -626,7 +626,7 @@ export function InvenTreeTable({ /> )} {tableProps.enableRefresh && ( - + refetch()} /> @@ -644,7 +644,10 @@ export function InvenTreeTable({ label={tableState.activeFilters?.length ?? 0} disabled={tableState.activeFilters?.length == 0} > - + setFiltersVisible(!filtersVisible)} diff --git a/src/frontend/src/tables/general/AttachmentTable.tsx b/src/frontend/src/tables/general/AttachmentTable.tsx index 330e75fb26..d30ede40d0 100644 --- a/src/frontend/src/tables/general/AttachmentTable.tsx +++ b/src/frontend/src/tables/general/AttachmentTable.tsx @@ -14,7 +14,9 @@ import { api } from '../../App'; import { ActionButton } from '../../components/buttons/ActionButton'; import { ApiFormFieldSet } from '../../components/forms/fields/ApiFormField'; import { AttachmentLink } from '../../components/items/AttachmentLink'; +import { formatFileSize } from '../../defaults/formatters'; import { ApiEndpoints } from '../../enums/ApiEndpoints'; +import { ModelType } from '../../enums/ModelType'; import { useCreateApiFormModal, useDeleteApiFormModal, @@ -22,7 +24,9 @@ import { } from '../../hooks/UseForm'; import { useTable } from '../../hooks/UseTable'; import { apiUrl } from '../../states/ApiState'; +import { useUserState } from '../../states/UserState'; import { TableColumn } from '../Column'; +import { TableFilter } from '../Filter'; import { InvenTreeTable } from '../InvenTreeTable'; import { RowAction, RowDeleteAction, RowEditAction } from '../RowActions'; @@ -36,7 +40,7 @@ function attachmentTableColumns(): TableColumn[] { sortable: false, switchable: false, noWrap: true, - render: function (record: any) { + render: (record: any) => { if (record.attachment) { return ; } else if (record.link) { @@ -50,7 +54,7 @@ function attachmentTableColumns(): TableColumn[] { accessor: 'comment', sortable: false, - render: function (record: any) { + render: (record: any) => { return record.comment; } }, @@ -58,7 +62,7 @@ function attachmentTableColumns(): TableColumn[] { accessor: 'upload_date', sortable: true, - render: function (record: any) { + render: (record: any) => { return ( {record.upload_date} @@ -68,6 +72,18 @@ function attachmentTableColumns(): TableColumn[] { ); } + }, + { + accessor: 'file_size', + sortable: true, + switchable: true, + render: (record: any) => { + if (!record.attachment) { + return '-'; + } else { + return formatFileSize(record.file_size); + } + } } ]; } @@ -76,50 +92,34 @@ function attachmentTableColumns(): TableColumn[] { * Construct a table for displaying uploaded attachments */ export function AttachmentTable({ - endpoint, - model, - pk + model_type, + model_id }: { - endpoint: ApiEndpoints; - pk: number; - model: string; + model_type: ModelType; + model_id: number; }): ReactNode { - const table = useTable(`${model}-attachments`); + const user = useUserState(); + const table = useTable(`${model_type}-attachments`); const tableColumns = useMemo(() => attachmentTableColumns(), []); - const [allowEdit, setAllowEdit] = useState(false); - const [allowDelete, setAllowDelete] = useState(false); + const url = apiUrl(ApiEndpoints.attachment_list); - const url = useMemo(() => apiUrl(endpoint), [endpoint]); - - const validPk = useMemo(() => pk > 0, [pk]); - - // Determine which permissions are available for this URL - useEffect(() => { - api - .options(url) - .then((response) => { - let actions: any = response.data?.actions ?? {}; - - setAllowEdit('POST' in actions); - setAllowDelete('DELETE' in actions); - - return response; - }) - .catch((error) => { - return error; - }); - }, [url]); + const validPk = useMemo(() => model_id > 0, [model_id]); const [isUploading, setIsUploading] = useState(false); + const allowDragAndDrop: boolean = useMemo(() => { + return user.hasAddPermission(model_type); + }, [user, model_type]); + // Callback to upload file attachment(s) function uploadFiles(files: File[]) { files.forEach((file) => { let formData = new FormData(); formData.append('attachment', file); - formData.append(model, pk.toString()); + formData.append('model_type', model_type); + formData.append('model_id', model_id.toString()); setIsUploading(true); @@ -161,8 +161,12 @@ export function AttachmentTable({ const uploadFields: ApiFormFieldSet = useMemo(() => { let fields: ApiFormFieldSet = { - [model]: { - value: pk, + model_type: { + value: model_type, + hidden: true + }, + model_id: { + value: model_id, hidden: true }, attachment: {}, @@ -180,10 +184,10 @@ export function AttachmentTable({ } return fields; - }, [endpoint, model, pk, attachmentType, selectedAttachment]); + }, [model_type, model_id, attachmentType, selectedAttachment]); const uploadAttachment = useCreateApiFormModal({ - url: endpoint, + url: url, title: t`Upload Attachment`, fields: uploadFields, onFormSuccess: () => { @@ -192,7 +196,7 @@ export function AttachmentTable({ }); const editAttachment = useEditApiFormModal({ - url: endpoint, + url: url, pk: selectedAttachment, title: t`Edit Attachment`, fields: uploadFields, @@ -206,7 +210,7 @@ export function AttachmentTable({ }); const deleteAttachment = useDeleteApiFormModal({ - url: endpoint, + url: url, pk: selectedAttachment, title: t`Delete Attachment`, onFormSuccess: () => { @@ -214,12 +218,27 @@ export function AttachmentTable({ } }); + const tableFilters: TableFilter[] = useMemo(() => { + return [ + { + name: 'is_link', + label: t`Is Link`, + description: t`Show link attachments` + }, + { + name: 'is_file', + label: t`Is File`, + description: t`Show file attachments` + } + ]; + }, []); + const tableActions: ReactNode[] = useMemo(() => { return [